# How to create custom configurations
1. Create folder with name of custom configuration 
1. Add `jabyengine_custom_config.hpp` to folder
    1. Follow [guidelines](#jabyengine_custom_confighpp)
1. Build JabyEngine and select your configuration
1. Build your application and select your configuration

## jabyengine_custom_config.hpp
### Default configuration file
```c++
// Fix IntelliSense
#include "../dummy_default_config.hpp"

// Overwrite various configurations
struct CustomConfiguration : public DefaultConfiguration {
};

// Define macros here
```
### `CustomConfiguration` options
When overriding an option make sure to mark the function as `override`
```c++
struct DefaultConfiguration {
    struct BIOSFont {
        // VRAM position and CLUT position to load the BIOS font too
        static constexpr GPU::PositionU16 texture_load_pos();
        static constexpr GPU::PositionU16 CLUT_load_pos();
    };

    // Offsets the default origin of the screen by the specified value
    static constexpr auto DisplayDefaultOffset;

    struct Periphery {
        // Turns on the second controller port and enables multi tap support
        static constexpr bool include_portB();
        static constexpr bool use_multi_tap();
    };
};
```
### `CustomConfiguration` macros
```c++
// Turns on debug information of the SPU MMU (on by default [for now])
#define __DEBUG_SPU_MMU__
// Turns on colored rectangles during boot (off by default)
#define __USE_DEBUG_COLOR__ 
// Turns on PS3 support (on by default)
#define __SUPPORT_PS3__
```