SGDK
A free and open development kit for the Sega Mega Drive
Loading...
Searching...
No Matches
config.h File Reference

Basic SGDK library configuration file. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define LOG_LEVEL_DISABLE   0
 Log disable.
 
#define LOG_LEVEL_ERROR   1
 Log for error only.
 
#define LOG_LEVEL_WARNING   2
 Log for error and warning.
 
#define LOG_LEVEL_INFO   3
 Log for error, warning and info (as memory allocation)
 
#define LIB_LOG_LEVEL   LOG_LEVEL_ERROR
 Define library log level (for debug build)
 
#define LIB_DEBUG   0
 Set it to 1 to enable KDebug logging (Gens KMod) to log some errors (as memory allocation).
 
#define LIB_LOG_LEVEL   LOG_LEVEL_DISABLE
 Define library log level (for debug build)
 
#define HALT_Z80_ON_DMA   1
 Set it to 1 if you want to force Z80 halt during DMA operation (default).
Some Megadrive models need it to prevent some possible DMA transfer corruption or even 68000 memory or Z80 invalid data fetch in very rare case.
This actually happen when Z80 access the main BUS exactly at same time you trigger a DMA operation.
If you are 100% sure that you are actually avoiding that case you may try to disable the flag (at your own risk though).
 
#define HALT_Z80_ON_IO   1
 Set it to 1 if you want to force Z80 halt during IO port (controller) accesses.
Some Megadrive models (as some MD2) need it to prevent some possible (but very rare) Z80 corruption bugs (may happen when Z80 access the main BUS during IO port access from 68K).
 
#define DMA_DISABLED   0
 Set it to 1 if you want to completely disable DMA transfers (for testing purpose) and replace them with (slower) software CPU copy.
 
#define LEGACY_SPRITE_ENGINE   0
 Set it to 1 if you want to use the old sprite engine instead of the new one.
The old sprite engine allow to access or change the internal VDP sprite indexes, this can be useful in some situations (as sprite multiplexing).
The new sprite engine provide better VDP sprite usage in general allowing to display a bit more sprites in practice.
 
#define LEGACY_ERROR_HANDLER   0
 Set it to 1 to use the original SGDK's error handling screen and vectors.
Otherwise error handler from the MD Debugger project is used, which supports source code symbols with "debug" build proifle and backtrace.

 
#define ENABLE_BANK_SWITCH   0
 Set it to 1 to enable automatic bank switch using official SEGA mapper for ROM > 4MB.
 
#define ENABLE_NEWLIB   0
 Set it to 1 if you want to use newlib with SGDK.
That will disable any standard methods from SGDK to replace them by newlib library implementation.
 
#define ENABLE_LOGO   0
 Set it to 1 if you want to have the kit intro logo.
 
#define MODULE_EVERDRIVE   0
 Set it to 1 if you want to use EVERDRIVE programming methods (written by Krikzz).
 
#define MODULE_FAT16   0
 Set it to 1 if you want to use FAT16 methods for Everdrive cart (written by Krikzz).
This cost a bit more than 1 KB of RAM.
 
#define MODULE_MEGAWIFI   0
 Set it to 1 if you want to enable MegaWiFi functions and support code (written by Jesus Alonso - doragasu)
 
#define MODULE_FLASHSAVE   1
 Set it to 1 if you want to enable Flash Save functions (written by Jesus Alonso - doragasu).
There is no reason to disable it as it doesn't consume extra memory.
 
#define MODULE_CONSOLE   1
 Set it to 1 if you want to enable the TTY text console module (written by Andreas Dietrich).
It consume about 28 bytes of memory when enabled.
 

Detailed Description

Basic SGDK library configuration file.

Author
Stephane Dallongeville
Date
08/2011

This unit is used to define some specific compilation option of the library.

Macro Definition Documentation

◆ ENABLE_BANK_SWITCH

#define ENABLE_BANK_SWITCH   0

Set it to 1 to enable automatic bank switch using official SEGA mapper for ROM > 4MB.

When automatic bank switch is enabled all internal BIN data structures declared in .far_rodata section will be accessed using BANK_getFarData(..) method (mapper.c). That may impact performance quite a bit it's why it's disabled by default if you don't require bank switch.

◆ LEGACY_ERROR_HANDLER

#define LEGACY_ERROR_HANDLER   0

Set it to 1 to use the original SGDK's error handling screen and vectors.
Otherwise error handler from the MD Debugger project is used, which supports source code symbols with "debug" build proifle and backtrace.

The new error handler, however, completely takes over exception vectors and doesn't allow to set your own callbacks for errors (e.g. addressErrorCB).
If you rely on callbacks to override error handling behavior, consider using legacy system instead.