Skip to content

Compiler of advanced assembler(aa) language for nsf, nes, fds files, and raw ROM data

Notifications You must be signed in to change notification settings

Yuri213212/nsfaa

Repository files navigation

nsfaa (ver 1.0) by Yuri213212

使用协议:对于所有文件基本遵循CC BY-NC-SA 4.0,但是对于用户为了建立新工程而仿写的代码以及转换的数据无此限制。

本程序为aa文件编译器,可以编译生成FC模拟器用的NSF、NES、FDS文件以及纯ROM数据。

使用方法:
拖拽aa文件到nsfaa.exe程序图标上,程序将把编译结果输出到aa文件所在文件夹。
	aa文件的写法以及编译结果参见./sample里的示例工程。

语言设置:
修改language.txt可以设置程序的语言,程序支持英语、中文和日语,默认为系统语言,若系统语言不在支持语言列表里则默认英语。

文件格式:
aa	自创的语言“advanced assembler”语言源文件,程序代码可以做到与cm文件行单位的一一对应,使用nsfaa.exe编译,具体说明参见./doc/AdvancedAssembler.txt
	(建议设置文本编辑器高亮选项为HSP模式)
ah	aa版的头文件,用法和c语言的.h文件差不多,逻辑是在被include的位置展开,内容可以是纯定义,也可以带数据甚至作为partial class。
	(建议设置文本编辑器高亮选项为HSP模式)
cm	自创c风语言源文件(名字取自“c minus”,也可以理解为“comment”),数据类型只有长度区别并引入寄存器,用于程序设计(看成独立的注释文件),编译方法为手动编译,因此写法自由,只要你觉得很容易看懂
	对于c语言常见结构的手动编译方法参见./doc/C_Structure.txt
	(建议设置文本编辑器高亮选项为C/C++模式)

资料:
./doc/AdvancedAssembler.txt	aa语言的说明
./doc/ProgrammingGuide.txt	AdvancedAssembler编程指导,建议编程前先读该文档
./doc/6502*.txt			CPU指令集,数据分成4列:6502汇编命令与操作数,内存十六进制表现,执行周期,aa命令名
./doc/C_Structure.txt		c语言常见结构的手动编译方法
./doc/nsfMemory.txt		FC的内存结构以及NSF驱动的数据配置设计
./doc/SoundProtocol.txt		NSF驱动的协议列表,用于设计音乐数据编译器
./doc/tempo/tempo.txt		程序生成的文件,用于设置tempo
./doc/fmins/fmins.txt		VRC7常用FM音色列表
./doc/fxins.txt			N163常用波形音色列表
./doc/w64ins.txt		FDS常用波形音色列表
./doc/color.txt			调色板与常用颜色数据

示例工程:
./sample/nsf/00_empty		空NSF工程
./sample/nsf/01_soundtest	NSF驱动与芯片测试,第0曲为该芯片全通道合奏,之后的曲目为各通道独奏
./sample/nsf/02_wavtest		NSF形式的wav播放器,采样率22095.96Hz,由于NSF文件大小限制最多可以播放47秒
./sample/nes/00_empty		空NES工程
./sample/nes/01_helloworld	Hello world,没什么好解释的
./sample/nes/02_iotest		手柄与显示测试,按下手柄上的按键,屏幕上对应位置会显示一个方块
./sample/nes/03_spritetest	使用1P十字键控制游标(太阳符号)移动
./sample/nes/04_buttontest	按钮驱动测试,1P左右键按下时计数器±0x01,上下键抬起时计数器±0x10
./sample/nes/05_screentest	15Hz全屏刷新测试,1P十字键与A键按下时向4个区域写入大写字母,B键按下时改变颜色,建议将模拟器的连打设置为15Hz然后连打AB键看效果
./sample/nes/06_soundtest	使用N163扩展的NES播放器测试,1P十字键选曲,A键开始,B键停止
./sample/fds/*			这些工程的代码完全照搬对应的NES工程,用来测试将NES转换成FDS的可行性
./sample/bin/CP437		将CHR数据定义转换成ROM数据

参考文献:
6502 Reference				https://www.nesdev.org/obelisk-6502-guide/reference.html
NSF - Nesdev wiki			https://www.nesdev.org/wiki/NSF
INES - NESdev Wiki			https://www.nesdev.org/wiki/INES
FDS file format - NESdev Wiki		https://www.nesdev.org/wiki/FDS_file_format
FDS disk format - NESdev Wiki		https://www.nesdev.org/wiki/FDS_disk_format
VirtuaNES source code			http://virtuanes.s1.xrea.com/bin/virtuanessrc097.zip

更新说明:
旧版的NSF工程及其驱动已被废弃,相关数据决定移至将与本工程联动的工程fwg,敬请期待。

About

Compiler of advanced assembler(aa) language for nsf, nes, fds files, and raw ROM data

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published