Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. ;;;;;;;;
  2. ; SMB3 Brick disassembled...
  3. ; or at least, emulated ><
  4. ; You should not use it, anyway, since custom bounce blocks exist...
  5. ; Oh, forgotten: "disassemulated" by SL.
  6. ;;;;;;;;;
  7.  
  8.  
  9. db $42 ; enable corner and inside offsets
  10. JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall : JMP MarioCorner : JMP BodyInside : JMP HeadInside
  11.  
  12. !Bounce = 1 ; 0 = no bouncing
  13. ; 1 = bouncing
  14.  
  15. !AffectedByPOW = 1 ; 0 = not affected by blue P-Switch (set block acts like to 130!)
  16. ; 1 = affected by blue P-Switch, acts like brick (set block acts like to 132!)
  17. ; 2 = affected by blue P-Switch, acts like coin (set block acts like to 02B!)
  18.  
  19. MarioBelow:
  20. LDA $19
  21. BNE MarioCape
  22.  
  23. if !Bounce
  24. if !AffectedByPOW == 1
  25. LDA $14AD
  26. BNE Return
  27. else
  28. if !AffectedByPOW == 2
  29. LDA $14AD
  30. BEQ Return
  31. endif
  32. endif
  33.  
  34. LDA $7D
  35. BPL Return
  36.  
  37. LDA #$0F
  38. TRB $9A
  39. TRB $98 ; clear low nibble of X and Y position of contact
  40.  
  41. PHY
  42. PHB
  43. LDA #$02
  44. PHA
  45. PLB
  46.  
  47. STZ $04
  48. STZ $06
  49. STZ $07
  50. JSL $028752
  51.  
  52. LDA #$01
  53. STA $169D,y
  54.  
  55. PLB ;restore bank
  56. PLY
  57. endif
  58.  
  59. MarioAbove:
  60. LDA #$00
  61. CMP $140D
  62. BEQ +
  63. LDA #$00
  64. CMP $19
  65. BEQ ++
  66. LDA #$D6
  67. STA $7D
  68. JSR MarioBelow
  69. +
  70. ++
  71. RTL
  72. MarioSide:
  73. MarioFireBall:
  74. MarioCorner:
  75. HeadInside:
  76. BodyInside:
  77. Return:
  78. RTL ; return
  79.  
  80. SpriteV:
  81. LDA $14C8,x
  82. CMP #$09 ; do nothing if not a carryable sprite (since when you kick a shell upward, it is this status...)
  83. BNE Return
  84. LDA $AA,x
  85. BMI TrySpriteShatter
  86.  
  87. RTL
  88.  
  89. SpriteH:
  90. LDA $14C8,x
  91. CMP #$0A
  92. BNE Return
  93.  
  94. TrySpriteShatter:
  95. %sprite_block_position()
  96.  
  97. MarioCape:
  98. if !AffectedByPOW == 1
  99. LDA $14AD
  100. BNE Return
  101. else
  102. if !AffectedByPOW == 2
  103. LDA $14AD
  104. BEQ Return
  105. endif
  106. endif
  107.  
  108. LDA #$0F
  109. TRB $98
  110. TRB $9A
  111.  
  112. LDA $0F
  113. PHA
  114. %kill_sprite()
  115. %shatter_block()
  116. PLA
  117. STA $0F
  118.  
  119. LDA #$07
  120. STA $1DFC
  121. %give_points()
  122. RTL
  123.  
  124. if !AffectedByPOW == 0
  125. print "A brick block."
  126. else
  127. if !AffectedByPOW == 1
  128. print "A brick block that turns into a coin when the blue P-Switch is active."
  129. else
  130. print "A coin that turns into a brick block when the blue P-Switch is active."
  131. endif
  132. endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement