SHARE
TWEET

ALTTP One Mind v1.1

a guest Oct 26th, 2017 300 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top