Menu

Adding_systems

Hugh Greene

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.

General System Development

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:

  • Create a new subdirectory under the desired systems folder
    • In that directory, place an Info/ subdirectory
      • In the Info/ directory should be an About.ey descriptor
      • Also in the Info/ directory should be a *_info.h header
    • In your new system directory, create as many headers and source
      files as you need to implement your system
      • Be sure to include the functions in the *_mandatory.h
        header from the systems directory above.
    • Finally, place a Makefile near your sources that queues them up
      for build. You must also set any linking and build flags in this
      make file.

Adding an Operating System

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.


Related

Wiki: *_info.h
Wiki: *_mandatory.h
Wiki: About.ey
Wiki: Adding_a_system
Wiki: LateralGM

MongoDB Logo MongoDB