#gameboy #pokemon #synthesizer #gamedev #encoding

pokemon-synthesizer

宝可梦GameBoy游戏的音效格式合成器

2个不稳定版本

0.2.0 2023年10月9日
0.1.0 2023年4月29日

#615 in 游戏开发

MIT/Apache

73KB
1.5K SLoC

宝可梦合成器

宝可梦GameBoy游戏的音效格式合成器。

实现状态

  • 第一代
    • 脉冲通道
    • 噪声通道
    • 波形通道
    • 有限循环
    • 无限循环
    • 音高滑动
    • 音乐序列
  • 第二代
    • 脉冲通道
    • 噪声通道
    • 波形通道
    • 有限循环
    • 无限循环
    • 音高滑动
    • 音乐序列
  • 未来代

安装

cargo add pokemon-synthesizer

使用

const rom = std::fs::read("pokeyellow.gbc").unwrap();

// Pikachu cry
let pcm = pokemon_synthesizer::gen1::synthesis(&rom, 0x02, 0x40c3, 238, -127);

// 1
pcm.channels()

// 1_048_576
pcm.sample_rate()

// Duration { 987.819672ms }
pcm.total_duration()

// Iterator<Item = f32>
pcm.iter()

测试

要运行gen1测试,您需要一个宝可梦黄版ROM文件。该ROM文件的SHA1哈希应为cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1,并命名为roms/pokeyellow.gbc

要运行gen2测试,您需要一个宝可梦水晶版ROM文件。该ROM文件的SHA1哈希应为f4cd194bdee0d04ca4eac29e09b8e4e9d818c133,并命名为roms/pokecrystal.gbc

致谢

非常感谢Retro Game Mechanics Explained及其关于宝可梦叫声的视频,以及随附的工具。没有他们的帮助,我无法完成这项工作。

还要感谢pret团队,他们为宝可梦黄版的反汇编做出了巨大贡献,这极大地帮助我理解了音效引擎。

无运行时依赖