Advertisement
OmegaMax

Nes Animation Function

Oct 3rd, 2016
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Do_HandleActorMetaTileAnimation:
  2.    asl
  3.    tay
  4.    lda ActorAnimationStatePointerTable+0,y
  5.    sta _TmpPointerL
  6.    lda ActorAnimationStatePointerTable+1,y
  7.    sta _TmpPointerH
  8.    ldy _ActorAnimationIdx
  9.    lda (_TmpPointerL),y
  10.    sta _ActorAnimationIndexOffset
  11.    jsr Do_MetaTilePointer
  12.    lda _ActorXPositionH,x
  13.    sta _TmpActorXPositionH
  14.    lda _ActorYPositionH,x
  15.    sta _TmpActorYPositionH
  16.    jsr Do_HandleActorMetaTileUpdate
  17.    rts
  18. ;===============================================================
  19. Do_HandleActorMetaTileUpdate:
  20.   lda $24
  21.   asl
  22.   asl
  23.   tax  
  24.   ldy #0
  25.   lda (_ActorMetaTilePointerL),y
  26.   pha
  27.   and #%00001111
  28.   sta _ActorYMetaTileCount
  29.   pla
  30.   and #%11110000
  31.   lsr
  32.   lsr
  33.   lsr
  34.   lsr
  35.   sta _ActorXMetaTileCount                        
  36.   sta _ActorXMetaTileCountReset
  37.   lda _TmpActorYPositionH
  38.   sta _TmpActorYOffset
  39.   lda _TmpActorXPositionH
  40.   sta _TmpActorXOffset
  41.   iny
  42. -:
  43.   lda (_ActorMetaTilePointerL),y  
  44.   cmp #$ff
  45.   beq +++
  46.   lda _TmpActorYOffset
  47.   sta $200,x
  48.   lda _TmpActorXOffset
  49.   sta $203,x
  50.   lda (_ActorMetaTilePointerL),y
  51.   sta $201,x
  52.   iny
  53.   lda (_ActorMetaTilePointerL),y
  54.   ora $22
  55.   sta $202,x
  56.   iny
  57.   inx
  58.   inx
  59.   inx
  60.   inx
  61.   inc $24
  62. MetatileL:  
  63.   lda _TmpActorXOffset
  64.   clc
  65.   adc #8
  66.   sta _TmpActorXOffset
  67.   dec _ActorXMetaTileCount
  68.   bne -
  69.   lda _TmpActorXPositionH
  70.   sta _TmpActorXOffset
  71.   lda _TmpActorYOffset
  72.   clc
  73.   adc #8
  74.   sta _TmpActorYOffset
  75.   lda _ActorXMetaTileCountReset
  76.   sta _ActorXMetaTileCount
  77.   dec _ActorYMetaTileCount
  78.   bne -
  79.   rts
  80. +++:
  81.   iny
  82.   iny
  83.   jmp MetatileL
  84. ;===============================================================
  85. Do_MetaTilePointer:  
  86.    lda _ActorAnimationIndexOffset
  87.    asl
  88.    tay
  89.    lda ActorMetaTilePointersTable+0,y
  90.    sta _ActorMetaTilePointerL
  91.    lda ActorMetaTilePointersTable+1,y
  92.    sta _ActorMetaTilePointerH
  93.    rts
  94. ;===============================================================
  95. ActorAnimationStatePointerTable:
  96. .dw Clark
  97. .dw Mike                               ;Not Shown In Example
  98. ;===============================================================
  99. ActorMetaTilePointersTable:
  100. .dw ClarkRunRightMetaTileStructure1
  101. .dw ClarkRunRightMetaTileStructure2
  102. .dw ClarkRunRightMetaTileStructure3
  103. ;===============================================================
  104. Clark:
  105. .db 1
  106. .db 2
  107. .db 1
  108. .db 0
  109.  
  110.  
  111.  
  112. ;============================================================
  113. ;Byte 1 = X/Y Tile Count
  114. ;Tile #
  115. ;Flipped & Palette #
  116. ;============================================================
  117. ClarkRunRightMetaTileStructure1:
  118. .db $23
  119. .db $01
  120. .db $40
  121. .db $00
  122. .db $40
  123. .db $31
  124. .db $40
  125. .db $30
  126. .db $40
  127. .db $03
  128. .db $40
  129. .db $02
  130. .db $40
  131. ClarkRunRightMetaTileStructure2:
  132. .db $23
  133. .db $01
  134. .db $40
  135. .db $00
  136. .db $40
  137. .db $11
  138. .db $40
  139. .db $10
  140. .db $40
  141. .db $21
  142. .db $40
  143. .db $20
  144. .db $40
  145. ClarkRunRightMetaTileStructure3:
  146. .db $23
  147. .db $01
  148. .db $40
  149. .db $00
  150. .db $40
  151. .db $13
  152. .db $40
  153. .db $12
  154. .db $40
  155. .db $23
  156. .db $40
  157. .db $22
  158. .db $40
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement