Impulse Tracker
Impulse Tracker的完整源代码,包括声音驱动程序、网络驱动程序和一些支持文档
这最初于2014年在BitBucket上发布,同时发布了一系列名为"Impulse Tracker 20周年"的文章。但由于BitBucket停止了对Mercurial仓库的支持,因此现在在GitHub上提供。
前置软件要求
要构建Impulse Tracker,你需要:
-
Turbo Assembler v4.1
-
Turbo Link v3.01
-
Borland MAKE v4.0
-
DOS环境
一旦你拥有这些,构建IT.EXE只需要一个简单的MAKE
命令
声音驱动程序通过SoundDrivers子目录中的M*.BAT文件单独构建
文件快速概览
-
IT.ASM: 启动例程
-
IT_DISK.ASM: 磁盘IO例程。使用IT_D_*.INC文件
-
IT_DISPL.ASM: 播放屏幕(F5)的显示例程
-
IT_EMS.ASM: EMS内存处理例程
-
IT_F.ASM: 对象模型使用的函数集合
-
IT_FOUR.ASM: 快速傅里叶例程。用于图形均衡器(Alt-F12)。 并非所有声卡都可用
-
IT_G.ASM: 全局按键处理函数
-
IT_H.ASM: 帮助模块(F1)
-
IT_I.ASM: 采样列表(F3)和乐器列表(F4)模块
-
IT_K.ASM: 键盘模块
-
IT_L.ASM: 信息行代码
-
IT_M.ASM: 主消息循环/调度器
-
IT_MDATA.ASM: 全局音乐变量数据
-
IT_MMTSR.ASM: 采样压缩/解压缩例程
-
IT_MOUSE.ASM: 鼠标处理代码
-
IT_MSG.ASM: 消息编辑器模块(Shift-F9)
-
IT_MUSIC.ASM: 模块播放代码。还使用IT_M_EFF.INC
-
IT_NET.ASM: 网络代码
-
IT_OBJ1.ASM: UI对象定义
-
IT_PE.ASM: 模式编辑器模块(F2)
-
IT_S.ASM: 屏幕功能,包括字符生成
-
IT_TUTE.ASM: 交互式教程模块
-
IT_VESA.ASM: 图形均衡器的VESA代码
-
SWITCH.INC: 程序的高级开关
常见问题
问:"源代码中那些奇怪的字符是什么?"
答:我最初使用DOS字符编写源代码,在源代码的注释中使用字符绘制边框/方框。为了保持原貌,我保留了代码的原始状态。
问:"为什么你在ASM源代码中不使用STRUCs或ENUMs?"
答:仅仅是因为我当时不知道它们。我希望我知道。在仓库中包含了一个InternalDocumentation文件夹,详细说明了代码中出现的一些神奇数字可能的含义。
问:"一些函数的流程似乎到处跳转。为什么?"
答:原始代码兼容早至8086机器。8086只允许在+/-128字节范围内进行条件跳转,所以我花了太多时间调整代码以满足这个限制。当我摆脱这个8086限制时,我从未回去更新被它破坏的代码。
许可证
BSD 3条款许可证可以在LICENSE中找到。