diff options
author | Kermalis <29823718+Kermalis@users.noreply.github.com> | 2019-08-13 13:00:33 -0400 |
---|---|---|
committer | Kermalis <29823718+Kermalis@users.noreply.github.com> | 2019-08-13 13:00:33 -0400 |
commit | fbd4bbc146d4ed35e2d016b5845408a1f3e2d99a (patch) | |
tree | 0fc4ae85748a2322c49dfa3271bf7ad8f5210047 /include | |
parent | b99e74849dfb574b0be222a56726c57d07125937 (diff) |
Add libisagbprn
Diffstat (limited to 'include')
-rw-r--r-- | include/config.h | 21 | ||||
-rw-r--r-- | include/gba/gba.h | 1 | ||||
-rw-r--r-- | include/gba/isagbprint.h | 50 | ||||
-rw-r--r-- | include/global.h | 1 |
4 files changed, 73 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h new file mode 100644 index 0000000..563cd91 --- /dev/null +++ b/include/config.h @@ -0,0 +1,21 @@ +#ifndef GUARD_CONFIG_H +#define GUARD_CONFIG_H + +// In the Generation 3 games, Asserts were used in various debug builds. +// Ruby/Sapphire and Emerald do not have these asserts while Fire Red +// still has them in the ROM. This is because the developers forgot +// to define NDEBUG before release, however this has been changed as +// Ruby's actual debug build does not use the AGBPrint features. +#define NDEBUG + +// To enable print debugging, comment out "#define NDEBUG". This allows +// the various AGBPrint functions to be used. (See include/gba/isagbprint.h). +// Some emulators support a debug console window: uncomment NoCashGBAPrint() +// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary +// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you +// would normally use AGBPrint() and AGBPrintf(). + +// NOTE: Don't try to enable assert right now as many pointers +// still exist in defines and WILL likely result in a broken ROM. + +#endif // GUARD_CONFIG_H diff --git a/include/gba/gba.h b/include/gba/gba.h index 42ae3cd..3493440 100644 --- a/include/gba/gba.h +++ b/include/gba/gba.h @@ -7,5 +7,6 @@ #include "gba/multiboot.h" #include "gba/syscall.h" #include "gba/macro.h" +#include "gba/isagbprint.h" #endif // GUARD_GBA_GBA_H diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h new file mode 100644 index 0000000..1be3852 --- /dev/null +++ b/include/gba/isagbprint.h @@ -0,0 +1,50 @@ +#ifndef GUARD_GBA_ISAGBPRINT_H +#define GUARD_GBA_ISAGBPRINT_H + +#ifdef NDEBUG +#define AGBPrintInit() +#define AGBPutc(cChr) +#define AGBPrint(pBuf) +#define AGBPrintf(pBuf, ...) +#define AGBPrintFlush1Block() +#define AGBPrintFlush() +#define AGBAssert(pFile, nLine, pExpression, nStopProgram) +#else +void AGBPrintInit(void); +void AGBPutc(const char cChr); +void AGBPrint(const char *pBuf); +void AGBPrintf(const char *pBuf, ...); +void AGBPrintFlush1Block(void); +void AGBPrintFlush(void); +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); +#endif + +#undef AGB_ASSERT +#ifdef NDEBUG +#define AGB_ASSERT(exp) +#else +#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1); +#endif + +#undef AGB_WARNING +#ifdef NDEBUG +#define AGB_WARNING(exp) +#else +#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0); +#endif + +// for matching purposes + +#ifdef NDEBUG +#define AGB_ASSERT_EX(exp, file, line) +#else +#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1); +#endif + +#ifdef NDEBUG +#define AGB_WARNING_EX(exp, file, line) +#else +#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0); +#endif + +#endif // GUARD_GBA_ISAGBPRINT_H diff --git a/include/global.h b/include/global.h index b5a4593..b991d34 100644 --- a/include/global.h +++ b/include/global.h @@ -2,6 +2,7 @@ #define GUARD_GLOBAL_H #include <string.h> +#include "config.h" // We need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" // IDE support |