ThomasSpeedrunner

loadLevelLayout - Odd Code

Aug 9th, 2013
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. loadLevelLayout:
  2.     moveq   #0,d0
  3.     move.w  (Current_ZoneAndAct).w,d0
  4.     ror.b   #1,d0
  5.     lsr.w   #6,d0
  6.     lea (Off_Level).l,a0
  7.     move.w  (a0,d0.w),d0
  8.     lea (a0,d0.l),a0
  9.     lea (Level_Layout).w,a1
  10.     bra.w   JmpTo_KosDec
  11. ; End of function loadLevelLayout
  12.  
  13. ; ===========================================================================
  14. ; unused code...?
  15.     lea (Level_Layout).w,a3
  16.     move.w  #bytesToLcnt(Level_Layout_End-Level_Layout),d1
  17.     moveq   #0,d0
  18.  
  19. -   move.l  d0,(a3)+
  20.     dbf d1,-
  21.  
  22.     lea (Level_Layout).w,a3
  23.     moveq   #0,d1
  24.     bsr.w   sub_E4A2
  25.     lea (Level_Layout+$80).w,a3
  26.     moveq   #2,d1
  27.  
  28. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  29.  
  30.  
  31. sub_E4A2:
  32.     moveq   #0,d0
  33.     move.w  (Current_ZoneAndAct).w,d0
  34.     ror.b   #1,d0
  35.     lsr.w   #5,d0
  36.     add.w   d1,d0
  37.     lea (Off_Level).l,a1
  38.     move.w  (a1,d0.w),d0
  39.     lea (a1,d0.l),a1
  40.     moveq   #0,d1
  41.     move.w  d1,d2
  42.     move.b  (a1)+,d1
  43.     move.b  (a1)+,d2
  44.     move.l  d1,d5
  45.     addq.l  #1,d5
  46.     moveq   #0,d3
  47.     move.w  #$80,d3
  48.     divu.w  d5,d3
  49.     subq.w  #1,d3
  50.  
  51. -   movea.l a3,a0
  52.  
  53.     move.w  d3,d4
  54. -   move.l  a1,-(sp)
  55.  
  56.     move.w  d1,d0
  57. -   move.b  (a1)+,(a0)+
  58.     dbf d0,-
  59.  
  60.     movea.l (sp)+,a1
  61.     dbf d4,--
  62.  
  63.     lea (a1,d5.w),a1
  64.     lea $100(a3),a3
  65.     dbf d2,---
  66.  
  67.     rts
  68. ; End of function sub_E4A2
  69.  
  70. ; ===========================================================================
  71.     lea ($FE0000).l,a1
  72.     lea ($FE0080).l,a2
  73.     lea (Chunk_Table).l,a3
  74.  
  75.     move.w  #$3F,d1
  76. -   bsr.w   sub_E59C
  77.     bsr.w   sub_E59C
  78.     dbf d1,-
  79.  
  80.     lea ($FE0000).l,a1
  81.     lea ($FF0000).l,a2
  82.  
  83.     move.w  #$3F,d1
  84. -   move.w  #0,(a2)+
  85.     dbf d1,-
  86.  
  87.     move.w  #$3FBF,d1
  88. -   move.w  (a1)+,(a2)+
  89.     dbf d1,-
  90.  
  91.     rts
  92. ; ===========================================================================
  93.     lea ($FE0000).l,a1
  94.     lea (Chunk_Table).l,a3
  95.  
  96.     moveq   #$1F,d0
  97. -   move.l  (a1)+,(a3)+
  98.     dbf d0,-
  99.  
  100.     moveq   #0,d7
  101.     lea ($FE0000).l,a1
  102.     move.w  #$FF,d5
  103.  
  104. loc_E55A:
  105.     lea (Chunk_Table).l,a3
  106.     move.w  d7,d6
  107.  
  108. -   movem.l a1-a3,-(sp)
  109.     move.w  #$3F,d0
  110.  
  111. -   cmpm.w  (a1)+,(a3)+
  112.     bne.s   +
  113.     dbf d0,-
  114.     movem.l (sp)+,a1-a3
  115.     adda.w  #$80,a1
  116.     dbf d5,loc_E55A
  117.  
  118.     bra.s   ++
  119. ; ===========================================================================
  120. +   movem.l (sp)+,a1-a3
  121.     adda.w  #$80,a3
  122.     dbf d6,--
  123.  
  124.     moveq   #$1F,d0
  125. -   move.l  (a1)+,(a3)+
  126.     dbf d0,-
  127.  
  128.     addq.l  #1,d7
  129.     dbf d5,loc_E55A
  130. /
  131.     bra.s   -   ; infinite loop
  132.  
  133. ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
  134.  
  135.  
  136. sub_E59C:
  137.     moveq   #7,d0
  138. -   move.l  (a3)+,(a1)+
  139.     move.l  (a3)+,(a1)+
  140.     move.l  (a3)+,(a1)+
  141.     move.l  (a3)+,(a1)+
  142.     move.l  (a3)+,(a2)+
  143.     move.l  (a3)+,(a2)+
  144.     move.l  (a3)+,(a2)+
  145.     move.l  (a3)+,(a2)+
  146.     dbf d0,-
  147.  
  148.     adda.w  #$80,a1
  149.     adda.w  #$80,a2
  150.     rts
  151. ; End of function sub_E59C
Advertisement