注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深夜是徘徊在潮湿睫毛上的我的梦以及他的梦

是直到最后都无法放手的一种气息,是我们生命中最后的思念……

 
 
 

日志

 
 

未曾完善的利用NSF植入音乐的研究  

2009-03-25 21:49:33|  分类: FC开发记录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

维京猎人 21:44:54
程序初始时调用一次其主程序部分,在中断中调用其中断部分,调用会返回的。


维京猎人 21:46:30
Famitraker制作的nsf的程序是分成两部分的。


维京猎人 21:47:07
其地址就写在nsf头文件中

 

维京猎人 21:50:11
看我写的,我是反编了nes之后,看明白了前半段代码发现的。

维京猎人 22:23:24
;==========================================================================
;====Power Disassembler for MCS-51 and 6502================================
;==========================================================================
;==========================================================================
;===========Disassemble information========================================
;==========================================================================
;    File Name: E:\VX737\mygame\爱的罗漫史\参考\snake04.PRG
;      IC Body: 6502
;         Date: 2009-2-19
;==========================================================================
;==========================================================================
;//禁10进制
FF80:       D8  CLD
FF81:       78  SEI
;//设$2000=$0
FF82:    A9 00  LDA #$00
FF84: 8D 00 20  STA $2000
;//等vblank,,不知何用
FF87: AD 02 20  LDA $2002
FF8A:    10 FB  BPL $FF87H
FF8C: AD 02 20  LDA $2002
FF8F:    10 FB  BPL $FF8CH
;//大清零,$0~$07FF
FF91:    A9 00  LDA #$00
FF93:    A2 FF  LDX #$FF
FF95:    95 00  STA $00,x
FF97: 9D 00 01  STA $0100,x
FF9A: 9D 00 02  STA $0200,x
FF9D: 9D 00 03  STA $0300,x
FFA0: 9D 00 04  STA $0400,x
FFA3: 9D 00 05  STA $0500,x
FFA6: 9D 00 06  STA $0600,x
FFA9: 9D 00 07  STA $0700,x
FFAC:       CA  DEX
FFAD:    D0 E6  BNE $FF95H
;//清零,$4000~$400F
FFAF:    A9 00  LDA #$00
FFB1:    A2 00  LDX #$00
FFB3: 9D 00 40  STA $4000,x
FFB6:       E8  INX
FFB7:    E0 0F  CPX #$0F
FFB9:    D0 F8  BNE $FFB3H
;//$4010=%0001 0000(第二副声道)?
FFBB:    A9 10  LDA #$10
FFBD: 8D 10 40  STA $4010
FFC0:    A9 00  LDA #$00
FFC2: 8D 11 40  STA $4011
FFC5: 8D 12 40  STA $4012
FFC8: 8D 13 40  STA $4013
;//打开了前4个声道(方波1,方波2,三角波,第一副声道(即噪声)),就是没有第二副声道
FFCB:    A9 0F  LDA #$0F
FFCD: 8D 15 40  STA $4015
;//$4017=%1100 0000(垂直时钟信号)?
FFD0:    A9 C0  LDA #$C0
FFD2: 8D 17 40  STA $4017
;//
FFD5:    A9 00  LDA #$00
FFD7:    A2 00  LDX #$00
FFD9: 20 00 80  JSR 8000
;//$2000=%1000 0000,开中断
FFDC:    A9 80  LDA #$80
FFDE: 8D 00 20  STA $2000
;//主程序冻结
FFE1: 4C E1 FF  JMP FFE1
;//nmi入口
;//读2002?
FFE4: AD 02 20  LDA $2002
;//多余的??
FFE7:    A9 00  LDA #$00
FFE9: 8D 00 20  STA $2000
FFEC:    A9 80  LDA #$80
FFEE: 8D 00 20  STA $2000
;//$8003才是正题
FFF1: 20 03 80  JSR 8003
FFF4:       40  RTI
----------------------
这个是(Famitraker制作的)nes的初始程序段。如果只是试验就将这个作为你的程序初始。
记得:
FFFA-FFFF = E4 FF 80 FF F4 FF
建议你用nsf里的程序,(因为它在B000,而这个在8000)
然后将FFD9的语句改成JSR B000
将FFF1的语句改成JSR B0003
将FFE1的语句改成JMP 你的程序入口


维京猎人 22:24:18
这个是我的最新结果~~

+++++++++++++++++++++++++++++++++++

补充,NSF是没有上面这段代码的。

用同一段音乐数据,通过Famitraker(要求同一版本)生成的NES和NSF作比较。

NES有上面这一段代码,而NSF没有。

NES从8000开始的代码与NSF从B000开始的代码相同。而音乐数据放置的位置不同。

同时程序代码中某些固定段会夹杂一些随机而无用的代码。

  评论这张
 
阅读(584)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017