So, you want to add support for a new graphics system? A new audio
system? A new operating system? ENIGMA is designed to make this as
painless as possible.
Systems are organized into separate category folders under
EnigmaSystem/SHELL/. These include a folder for
supported platforms, graphics systems, audio systems, collision systems,
etc.
Each of these category folders contains a header,
*_mandatory.h, where the asterisk matches
the system name. For instance, there is a platforms_mandatory.h, a
graphics_mandatory.h, an audio_mandatory.h, etc. Systems under each
folder MUST implement these functions, as they are used by the core
system for initialization and cleanup, or by other functions in other
systems.
Each category folder also contains a series of subdirectories containing
each system implementation. This is where you will add your own code. In
each of those directories is another subdirectory called info/, which
contains an About.ey descriptor, and an
information header called *_info.h, where * is
the category name, such as platform_info.h, graphics_info.h,
audio_info.h, etc. The purpose of that header is simply to provide
constants for other systems to use to tell what system is in use.
So, essentially, to implement a new system you must do the following:
If you are looking to add support for a new operating system, bear in
mind that you may need to add support for any native graphics and audio
systems to that platform as well, depending on whether or not the OS
supports an already-supported library.
Compiler Descriptor
LateralGM can detect the current operating
system, but the expected values are Windows, Linux, or MacOSX. These are
the platforms on which LateralGM actually runs, and therefore are the
platforms which receive their own folder under
/Compilers/ and object file directories. When
LateralGM loads, the appropriate folder under /Compilers/ is traversed
for available compilers. In order to support a new operating system, you
must add a compiler descriptor
file for it so that appropriate
binary files can be built for that system. By default, ENIGMA uses the
GCC. As such, you will notice a descriptor file called gcc.ey under each
system.
Adding a New Platform
The file platforms_mandatory.h describes functions which must be
implemented by any API.
Wiki: *_info.h
Wiki: *_mandatory.h
Wiki: About.ey
Wiki: Adding_a_system
Wiki: LateralGM