博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FC/NES 音乐示例程序 生日快乐歌
阅读量:7055 次
发布时间:2019-06-28

本文共 2728 字,大约阅读时间需要 9 分钟。

;开始地址:$bff0 ;结束地址:$ffff ;文件长度:$4010 COUNTER = $00 MUSIC_OFFSET1 = $01 MUSIC_OFFSET2 = $02         .org    $BFF0         .db     "NES",$1A,$01,$01,$00,$00         .dw     $00,$00,$00,$00         .start  $C000         .org    $C000 reset:         sei             ; 禁用中断         cld                                      ldx     #$ff    ; 初始化栈顶指针到$FF         txs                  inx         stx     COUNTER         stx     MUSIC_OFFSET1         stx     MUSIC_OFFSET2          _vb1:         lda     $2002         bpl     _vb1 _vb2:         lda     $2002         bpl     _vb2         lda     #$00         sta     $2001                  lda     #$0f    ; 声音切换:0000 1111,方波#1#2,三角波,噪声         sta     $4015                  lda     #$8f         sta     $4000   ; APU方波#1控制端口                  lda     #$00         sta     $4001   ; APU方波#1控制端口                  lda     #$80    ; 开nmi中断         sta     $2000                     main:         jmp     main          nmi:         inc     COUNTER         ; 计数器增加         ldx     MUSIC_OFFSET1         lda     music1,x        ; 取得音长         cmp     COUNTER         ; 判断是否该播放         beq     next2           ; 播放         cmp     #$ff         beq     next1           ; 是否结束         jmp     over            ; 退出 next1:         ldx     #$00            ; 回到开始         stx     MUSIC_OFFSET1         jmp     over next2:           lda     #$00         sta     COUNTER         lda     MUSIC_OFFSET2         tay         lda     music2,y        ; 波长低八位         cmp     #$ff            ; 结束了吗?         beq     next3         sta     $4002                  iny         lda     music2,y        ; 波长高三位+音长计数器         cmp     #$ff            ; 结束了吗?         beq     next3         sta     $4003                  iny                     ; 下一个音符         sty     MUSIC_OFFSET2         inx         stx     MUSIC_OFFSET1         jmp     over next3:         ldy     #$00            ; 回到开始         sty     MUSIC_OFFSET2 over:         rti music1:         ; 音长 8*4+1=33         .db $10,$10,$20,$20,$20,$20,$20,$10         .db $10,$20,$20,$20,$20,$20,$20,$10         .db $10,$20,$20,$20,$20,$20,$20,$20         .db $20,$10,$10,$20,$20,$20,$20,$20         .db $20,$FF music2:         ; 两个一组,$FF为结束 8*8+2=66         .db $1C,$09,$1C,$09,$FD,$08,$1C,$09         .db $D4,$08,$E1,$08,$00,$00,$1C,$09         .db $1C,$D9,$FD,$08,$1C,$09,$BD,$08         .db $D4,$08,$D4,$08,$00,$00,$1C,$09         .db $1C,$09,$8D,$08,$A8,$08,$D4,$08         .db $E1,$08,$FD,$08,$FD,$08,$FD,$08         .db $00,$00,$9F,$08,$9F,$08,$A8,$08         .db $D4,$08,$BD,$08,$D4,$08,$D4,$D4         .db $08,$00,$FF,$FF irq:         rti         .org $fffa         .dw nmi,reset,irq

女孩不哭(QQ:191035066)@2012-08-13 16:45:32 @ http://www.cnblogs.com/nbsofer

你可能感兴趣的文章
Java 11.do语句
查看>>
学习理论之感知器与最大间隔分类器
查看>>
Be Nice!要善良
查看>>
二、ansible配置简要介绍
查看>>
解决docker容器中无ifconfig命令和ping命令问题
查看>>
CHAR、TCHAR、WCHAR_T之间的区别与问题
查看>>
sql小计合计
查看>>
安装Java
查看>>
Ubuntu Linux输入法fcitx方块乱码解决设置
查看>>
node递归批量重命名指定文件夹下的文件
查看>>
python if not用法
查看>>
python-2
查看>>
选择器
查看>>
springMVC参数的获取区别
查看>>
win7电脑数字键盘失灵怎么办
查看>>
java及java web学习笔记
查看>>
SpringMVC+Spring+hibernate整合及分页
查看>>
OpenAI教程
查看>>
LeetCode:459. Repeated Substring Pattern
查看>>
Database Resource website
查看>>