简介

Allegro(http://www.allegro.cc)是一个库,其中包含一大堆用于制作游戏的有用例程。

它具有图形命令,键盘,鼠标和操纵杆读取,采样的声音和音乐播放,以及具有自己的一组3D投影和计算例程的定点数学库。

  • 它支持.BMP,.LBM, .PCX 和 .TGA图像。

  • 它有一个MIDI播放器,可以路由到MS-DOS上的Adlib声卡补丁。

  • 它支持自己的位图字体,但不支持矢量(TrueType/OpenType)字体。

  • 它拥有自己完整的GUI库,与其内部位图结构相结合,所有图形样式都模仿Atari ST。

  • 它支持一大堆PlayStation和任天堂控制器…

您只能使用在家中焊接在一起的适配器连接到计算机的并行端口。

Allegro 4 支持 MS-DOS(386 处理器及更高版本的保护模式)Microsoft Windows 3.1 到 Vista。

它支持BeOS,MacOSX和QNX。

Allegro 是我第一次学习 C 语言时学会使用的第一个库。这是一件奇怪的事情,我喜欢它,因为它很有效。

现在,希望在我的帮助下,它也可以为你工作。

让 Allegro 4.2.3 正常工作

我想用 C 语言的 Allegro 制作一些 MS-DOS 游戏,因为我以前从未这样做过。

我在Allegro上的经验是使用Windows XP,使用MinGW。

对于MS-DOS,最直接的方法是在DOS环境中使用DJGPP。

来自 DJGPP 网站(http://www.delorie.com/djgpp):

“DJGPP 是一个完整的 32 位 C/C++ 开发系统,适用于运行 DOS 的英特尔 80386(及更高)PC。

它包括许多GNU开发实用程序的端口。Allegro for DOS是为与DJGPP一起使用而编写的。它也可以与Watcom/OpenWatcom等其他编译器一起使用,但它是为DJGPP开发的。

有许多方法可以准备类似DOS的环境:

  • 在真正的 MS-DOS 安装中。

  • 在真正的 FreeDOS 安装中。

  • 在虚拟化的 MS-DOS 安装中。

  • 在虚拟化的 FreeDOS 安装中。

  • 在DOSBox。

所有这些方法的设置和使用方式都相同。

还有另一种选择,它涉及更多,但可能更方便:

  • 从Windows XP,Vista,7,8,10或Linux等现代操作系统交叉编译Allegro和MS-DOS游戏可执行文件。

开发人员提供的 Allegro 4 最新版本是 4.2.3。通过 DJGPP 文件选择器提供的 Allegro 版本是 4.2.2。

  • 不幸的是,4.2.2 和 4.2.3 中都存在回归,导致 SoundBlaster 1.0 卡上采样声音的播放失真(链接)。sb.c 有一个简单的补丁可以解决这个问题(链接)。这意味着,如果您希望MS-DOS游戏干净地支持所有可能的卡,则需要编译新的Allegro 4.2.3,而不是使用 allegro.cc 或DJGPP提供的卡。我下面的所有zip都包含此补丁文件,并在其编译的Allegros中。

  • 截至撰写本文时,Allegro 的 DJGPP 版本也已损坏:all422s.zip 已损坏.dat文件,这意味着演示和安装程序将无法运行。(DOS 的 Allegro“设置”程序是一个声卡和操纵杆配置程序,您可以随已完成的游戏一起分发。如果您尝试使用 DJGPP 发行版文件中的源代码编译 Allegro 4.2.2,它看起来好像库编译过程失败了,但它实际上是一个正确编译的 Allegro 崩溃,因为尝试加载损坏的.dat并且在.dat文件加载时没有错误处理。文件demo\demo.dat和setup\setup.dat在DJGPP发行版的all422s.zip和all422br2.zip中被破坏。最好只使用来自 allegro.cc 的来源。(DJGPP 发行版不包含对 Allegro 源代码的任何特定于 DJGPP 的修改。您可以使用Zip Picker中编译的.a版本库,但您将遇到上述SoundBlaster错误,无法修复它。

要重新编译 Allegro 4.2.3,您需要使用那个时代的 GCC 和 Binutils 版本。MS-DOS Allegro 4 的支持在 2007 年停止,因此我试图从 DJGPP 发行版中找到必要的软件包,该发行版与用于编译该版本的 Allegro 同时代:GCC 4.2.1,2007 年 <> 月。

所有这些(除了第一个)都可以在 DJGPP ftp 及其镜像中找到,但如果你想要它们,我也在这里镜像它们。

下面所有基于 DOS 的环境都包含这些软件包,其中包含 Allegro 4.2.3 及其源代码的修补版本,以及 SB 1.0 修复。

如果您愿意修改一些 Allegro 源文件和生成文件以反映 GCC 及其语法的变化,则可以使用较新版本的 DJGPP 及其软件包编译 Allegro 4 for DOS。如果您决定追求这一点,请确保绝对使用 DJGPP 的 Allegro 源代码 - 而不是 - 并包含 SB 1.0 修复程序。

可下载的完全配置的DJGPP + Allegro目录,适用于MS-DOS,FreeDOS或DOSBox

我已经准备了一个完整的DJGPP环境,其中包含重新编译和修补的Allegro 4.2.3-sb,作为与MS-DOS,FreeDOS或DOSBox兼容的目录,准备复制到您选择的系统并提取。

带有 Allegro 4.2.3-sb (38 MByte) 的 DJGPP 环境

您还需要在 autoexec 中添加一些行.bat:(假设您已将 DJGPP 目录作为 C:\DJGPP复制到 C 驱动器)

1
2
3
4
5
6


set path=%path%;c:\djgpp\bin


set djgpp=c:\djgpp\djgpp.env

这些行将 DJGPP 环境工具添加到 PATH 中,允许 make 和 gcc 工作,等等。djgpp 环境变量是 DJGPP 工作所必需的。您也可以将这些行写入新文件(如 dj.bat并仅在您希望 DJGPP 环境可用时才执行此批处理文件。

提取目录后,您可以通过尝试编译 Allegro 的声卡设置程序来对其进行测试。

1
2
3
4
5
6


cd c:\djgpp\allegro\setup


gcc setup.c -o setup.exe -lalleg

除了让您测试编译过程是否有效外,Allegro 声卡设置程序还允许您测试系统上的键盘、鼠标、操纵杆、采样声音和 MIDI 输出。

测试程序包含在 C:\DJGPP\ALLEGRO\TESTS\ 中作为 test.c。C:\DJGPP\ALLEGRO\EXAMPLES 中也有很多示例程序。ex3d 是一个很好的图形演示。

具有完全配置 DJGPP + Allegro 的独立 FreeDOS 虚拟机映像

如果你愿意,我做了一个VirtualBox。VMDK 磁盘映像包含已安装的 FreeDOS 1.2,已提取并设置上述目录。它包含DJGPP和Allegro 4.2.3-sb,并立即可用于编译Allegro游戏(如果需要,可以重新编译库本身)。

FreeDOS, DJGPP, Allegro 4.2.3-sb VMDK image and virtual machine (47 MByte)

启动虚拟机后,可以通过尝试编译 Allegro 的声卡设置程序来对其进行测试。

1
2
3
4
5
6


cd c:\djgpp\allegro\setup


gcc setup.c -o setup.exe -lalleg

除了让您测试编译过程是否有效之外,Allegro 声卡设置程序还允许您在虚拟化系统上测试键盘、鼠标、操纵杆、采样声音和 MIDI 输出。在这种情况下,VirtualBox并不完美,但很多示例程序都可以工作。

测试程序包含在 C:\DJGPP\ALLEGRO\TESTS\ 中作为 test.c。C:\DJGPP\ALLEGRO\EXAMPLES 中也有很多示例程序。ex3d 是一个很好的图形演示。

为了将文件移入和移出磁盘映像,我使用VirtualBox的VISO工具导入文件,就好像它们存储在CD-ROM上一样,并且我使用运行Linux的第二个虚拟系统,其中DJGPP FreeDOS安装作为第二个硬盘,在VirtualBox中设置共享文件夹以管理来宾和主机之间的文件。

DJGPP 交叉编译环境与 Allegro,用于 Windows

此环境包含为现代 32 位 Windows 系统重新编译的 DJGPP。此环境在Windows下运行,但会产生与MS-DOS兼容的可执行文件,就好像它是在MS-DOS下运行的DJGPP一样。这意味着您可以更轻松地使用自己喜欢的编辑器,并更轻松地将编译阶段集成到您喜欢的制作过程中。不过,最终结果仍然需要在DOS环境中执行!

带有 Allegro 4.2.3-sb 的 DJGPP 交叉编译环境,用于 Windows (103 MByte)

这个环境是由VirtualFun的neozeed准备的(链接)。

在此环境中重新编译 Allegro 需要更多。我在 zip 中包含了一些执行此操作的说明以及使用说明 - 请参阅 info.txt。

如果您只需要 SB1.0 支持错误修复,并且想自己重新编译 Allegro,那么这就是您需要的替换 sb.c。

SoundBlaster 1.0 为 Allegro 4.2.2/4.2.3 (Ron Novy) 修补了 sb.c