Advertisement
atm959

Simple SNES SPC700 Code

Jul 17th, 2018
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. arch spc700-raw
  2. ORG $000500
  3.  
  4. Main:
  5. mov a, #$0C
  6. mov $F2, a
  7. mov a, #$7F
  8. mov $F3, a ;Set Left Main Volume
  9.  
  10. mov a, #$1C
  11. mov $F2, a
  12. mov a, #$7F
  13. mov $F3, a ;Set Right Main Volume
  14.  
  15. mov a, #$6C
  16. mov $F2, a
  17. mov a, #$3E
  18. mov $F3, a ;Unmute, enable 16KHz noise
  19.  
  20. mov a, #$3D
  21. mov $F2, a
  22. mov a, #$01
  23. mov $F3, a ;Enable noise on channel 0
  24.  
  25. mov a, #$00
  26. mov $F2, a
  27. mov a, #$7F
  28. mov $F3, a ;Set the left volume of channel 0
  29.  
  30. mov a, #$01
  31. mov $F2, a
  32. mov a, #$7F
  33. mov $F3, a ;Set the right volume of channel 0
  34.  
  35. mov a, #$07
  36. mov $F2, a
  37. mov a, #$1F
  38. mov $F3, a ;Ignore envelope settings
  39.  
  40. mov a, #$4C
  41. mov $F2, a
  42. mov a, #$01
  43. mov $F3, a ;Start voice 0
  44.  
  45. mov a, #$00
  46. mov $0000, a
  47.  
  48. Loop:
  49. mov a, $00
  50. cmp a, $F4 ;Check if the SNES sent a new byte to PORT0
  51. beq NoNewData
  52.  
  53. nop
  54. nop
  55. mov $00, $F4
  56.  
  57. mov a, $F5
  58. cmp a, #$00
  59. beq TurnNoiseOff
  60.  
  61. TurnNoiseOn:
  62. mov a, #$00
  63. mov $F2, a
  64. mov a, #$7F
  65. mov $F3, a ;Set the left volume of channel 0
  66.  
  67. mov a, #$01
  68. mov $F2, a
  69. mov a, #$7F
  70. mov $F3, a ;Set the right volume of channel 0
  71. jmp Done
  72. TurnNoiseOff:
  73. mov a, #$00
  74. mov $F2, a
  75. mov a, #$00
  76. mov $F3, a ;Set the left volume of channel 0
  77.  
  78. mov a, #$01
  79. mov $F2, a
  80. mov a, #$00
  81. mov $F3, a ;Set the right volume of channel 0
  82. Done:
  83.  
  84. mov $F4, $00 ;Echo the value back
  85.  
  86. NoNewData:
  87.  
  88. jmp Loop ;An infinite loop, so the SPC700 doesn't crash
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement