Advertisement
cbpena

Hammerin' Harry (E) [!] PCM Playback

Jan 4th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;========================================
  2. ; main function
  3.  07:FF3A:20 98 FF  JSR $FF98                ; wait
  4.  07:FF3D:20 87 FF  JSR $FF87                ; read next byte
  5.  07:FF40:85 02     STA $02                  ; if (byte == 0)
  6.  07:FF42:C9 00     CMP #$00                 ;
  7.  07:FF44:F0 1D     BEQ $FF63                ;   branch to wait
  8.  07:FF46:C9 10     CMP #$10                 ; else if (byte == 0x10)
  9.  07:FF48:F0 37     BEQ $FF81                ;   branch to exit
  10.  07:FF4A:29 F0     AND #$F0                 ; write: (byte & 0xF0) >> 1
  11.  07:FF4C:4A        LSR                      ;
  12.  07:FF4D:8D 11 40  STA $4011                ;
  13.  07:FF50:20 93 FF  JSR $FF93                ; wait
  14.  07:FF53:20 98 FF  JSR $FF98                ; wait
  15.  07:FF56:A5 02     LDA $02                  ; write: (byte & 0x0F) << 3
  16.  07:FF58:29 0F     AND #$0F                 ;
  17.  07:FF5A:0A        ASL                      ;
  18.  07:FF5B:0A        ASL                      ;
  19.  07:FF5C:0A        ASL                      ;
  20.  07:FF5D:8D 11 40  STA $4011                ;
  21.  07:FF60:4C 3A FF  JMP $FF3A                ; loop more sample data
  22.  
  23.  07:FF63:A9 40     LDA #$40                 ; write: 0x40
  24.  07:FF65:8D 11 40  STA $4011                ;
  25.  07:FF68:20 87 FF  JSR $FF87                ; read next byte
  26.  07:FF6B:A8        TAY                      ;
  27.  07:FF6C:20 98 FF  JSR $FF98                ;   wait
  28.  07:FF6F:20 98 FF  JSR $FF98                ;   wait
  29.  07:FF72:20 90 FF  JSR $FF90                ;   wait
  30.  07:FF75:20 90 FF  JSR $FF90                ;   wait
  31.  07:FF78:20 93 FF  JSR $FF93                ;   wait
  32.  07:FF7B:88        DEY                      ;
  33.  07:FF7C:D0 EE     BNE $FF6C                ;   loop (byte) times
  34.  07:FF7E:4C 3A FF  JMP $FF3A                ; loop more sample data
  35.  
  36.  07:FF81:A9 00     LDA #$00                 ; silence the channel
  37.  07:FF83:8D 11 40  STA $4011                ;
  38.  07:FF86:60        RTS                      ; exit
  39. ;========================================
  40. ; load next byte of sample data
  41.  07:FF87:B1 00     LDA ($00),Y
  42.  07:FF89:E6 00     INC $00
  43.  07:FF8B:D0 02     BNE $FF8F
  44.  07:FF8D:E6 01     INC $01
  45.  07:FF8F:60        RTS
  46. ;========================================
  47.  07:FF90:20 93 FF  JSR $FF93                ; <-wait 34 cycles
  48.  07:FF93:EA        NOP                      ; <-wait 14 cpu cycles
  49.  07:FF94:EA        NOP
  50.  07:FF95:EA        NOP
  51.  07:FF96:EA        NOP
  52.  07:FF97:60        RTS
  53. ;========================================
  54. ; wait 385 cpu cycles
  55.  07:FF98:A2 36     LDX #$36
  56.  07:FF9A:CA        DEX
  57.  07:FF9B:EA        NOP
  58.  07:FF9C:D0 FC     BNE $FF9A
  59.  07:FF9E:60        RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement