Guest User

ALTTP One Mind v1.1

a guest
Oct 26th, 2017
363
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ALTTP One-Mind hack: causes the current player in control of Link to switch every so often.
  2. ; In places where this does not occur (e.g. title screen), both controllers are registered.
  3. ; Save this text file as an ASM file and patch it to your rom with Asar.
  4. ; A few extra options for adjusting timing are below.
  5.  
  6. ;;;; Timing
  7.  
  8. !count_silent = $08 ; Number of silent ticks before audible ones
  9. !count_audible = $04 ; Number of audible ticks before the controller switches
  10. !tickTiming = $1F ; Number of frames between ticks (valid: 01, 03, 07, 0F, 1F, 3F, 7F, FF)
  11.  
  12. ; Hard mode: set silent to 1, audible to 1.
  13.  
  14. ;;;; SFX
  15.  
  16. !SFX_Tick = $06 ; SFX values for the tick noise.
  17. !SFXIO_Tick = $012E
  18. !SFX_Switch = $25 ; SFX values for when the players switch.
  19. !SFXIO_Switch = $012F
  20.  
  21.  
  22. ;;;; Technical
  23.  
  24. !freeram = $7F9000 ; 2 bytes of free ram to use.
  25.  
  26.  
  27. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  28. ;; Code begins; don't touch it unless you know what you're doing.
  29.  
  30. !active = !freeram ; 1 byte - currently active player
  31. !ticks = !freeram+1 ; 1 byte - counter for the number of ticks so far
  32.  
  33.  
  34. org $0083D1
  35. autoclean JSL OneMind
  36. BRA $05
  37.  
  38. freecode
  39. OneMind:
  40. PHB : PHK : PLB
  41. JSR Main
  42. PLB
  43. RTL
  44.  
  45. Main:
  46. ; Check whether in a mode we allow switching in.
  47. ; If not, register both controllers.
  48. LDA $10
  49. CMP #$07 ; normal play - interior
  50. BEQ .acceptable
  51. CMP #$09 ; normal play - exterior
  52. BEQ .acceptable
  53. CMP #$0E ; normal play - text box, pause screen, map screen
  54. BEQ .acceptable
  55. BRA SetBothControllers
  56. .acceptable
  57.  
  58. ; Good to go.
  59. LDA $1A
  60. AND #!tickTiming
  61. BNE SetControllers
  62. LDA !ticks
  63. INC
  64. CMP #!count_silent
  65. BCC .silentTick
  66. CMP #!count_silent+!count_audible
  67. BCC .tick
  68. JSR SwitchPlayers
  69. BRA SetControllers
  70. .tick
  71. LDY #!SFX_Tick
  72. STY !SFXIO_Tick
  73. .silentTick
  74. STA !ticks
  75.  
  76. SetControllers:
  77. LDA !active
  78. AND #$01
  79. BNE .c2
  80. .c1
  81. LDA $4218
  82. STA $00
  83. LDA $4219
  84. RTS
  85. .c2
  86. LDA $421A
  87. STA $00
  88. LDA $421B
  89. RTS
  90.  
  91. SetBothControllers:
  92. LDA $4218
  93. ORA $421A
  94. STA $00
  95. LDA $4219
  96. ORA $421B
  97. RTS
  98.  
  99.  
  100.  
  101. SwitchPlayers:
  102. LDA #$00
  103. STA !ticks
  104. LDA !active
  105. INC
  106. STA !active
  107. LDA #!SFX_Switch
  108. STA !SFXIO_Switch
  109.  
  110. REP #$30
  111. LDA $7EF35B
  112. AND #$00FF
  113. TAX
  114. LDA !active
  115. AND #$0001
  116. BNE .p2pal
  117. LDA $1BEC06,x
  118. AND #$00FF
  119. ASL
  120. ADC #$D308
  121. STA $00
  122. LDA #$001B
  123. STA $02
  124. BRA .paletteUpload
  125. .p2pal
  126. TXA
  127. ASL
  128. TAX
  129. LDA P2Palettes,x
  130. STA $00
  131. LDA.w #P2PalA>>16
  132. STA $02
  133.  
  134. .paletteUpload
  135. LDY #$000E
  136. LDX #$01E2
  137.  
  138. - LDA [$00]
  139. STA $7EC300,X
  140. STA $7EC500,X
  141. INC $00
  142. INC $00
  143. INX
  144. INX
  145. DEY
  146. BPL -
  147. SEP #$30
  148. INC $15
  149. RTS
  150.  
  151.  
  152. P2Palettes:
  153. dw P2PalA,P2PalB,P2PalC
  154.  
  155. ; Player 2 palette data. Feel free to mess with it if you know how.
  156. P2PalA: ; green mail
  157. dw $7FFF,$237E,$11B7,$369E,$14A5
  158. dw $01FF,$1078,$599D,$1CF3,$2CFC
  159. dw $0415,$101C,$2A5C,$1571,$7A18
  160. P2PalB: ; blue mail
  161. dw $7FFF,$237E,$11B7,$369E,$14A5
  162. dw $01FF,$1078,$599D,$0A1D,$2B3D
  163. dw $6132,$7E17,$2A5C,$1199,$7A18
  164. P2PalC: ; red mail
  165. dw $7FFF,$237E,$11B7,$369E,$14A5
  166. dw $01FF,$1078,$599D,$62C2,$73EB
  167. dw $2B28,$3FCB,$2A5C,$2227,$7A18
RAW Paste Data