diff --git a/Makefile b/Makefile index 871f481..21c37ec 100644 --- a/Makefile +++ b/Makefile @@ -22,14 +22,15 @@ WUMS_ROOT := $(DEVKITPRO)/wums #------------------------------------------------------------------------------- TARGET := regionfree BUILD := build -SOURCES := src +SOURCES := src \ + src/utils DATA := data INCLUDES := src #------------------------------------------------------------------------------- # options for code generation #------------------------------------------------------------------------------- -CFLAGS := -g -Wall -O0 -ffunction-sections \ +CFLAGS := -Wall -O0 -ffunction-sections \ $(MACHDEP) CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__ @@ -39,6 +40,11 @@ CXXFLAGS := $(CFLAGS) ASFLAGS := -g $(ARCH) LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) -T$(WUMS_ROOT)/share/libmappedmemory.ld $(WUPSSPECS) +ifeq ($(DEBUG),1) +CXXFLAGS += -DDEBUG -g +CFLAGS += -DDEBUG -g +endif + LIBS := -lwut -lwups -lmappedmemory -lfreetype -lbz2 -lz -lpng #------------------------------------------------------------------------------- diff --git a/src/main.cpp b/src/main.cpp index 8e60a16..2b245d4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -30,10 +29,6 @@ WUPS_USE_STORAGE("region_free_plugin"); bool getRealProductArea(MCPRegion *out); -INITIALIZE_PLUGIN() { - WHBLogUdpInit(); -} - DECL_FUNCTION(int32_t, ACPGetLaunchMetaXml, ACPMetaXml *metaxml) { int result = real_ACPGetLaunchMetaXml(metaxml); if (metaxml != nullptr) { @@ -42,7 +37,6 @@ DECL_FUNCTION(int32_t, ACPGetLaunchMetaXml, ACPMetaXml *metaxml) { return result; } - DECL_FUNCTION(int, UCReadSysConfig, int IOHandle, int count, struct UCSysConfig *settings) { int result = real_UCReadSysConfig(IOHandle, count, settings); @@ -72,6 +66,7 @@ ON_APPLICATION_ENDS() { gCurrentLanguage = gDefaultLanguage; gCurrentCountry = gDefaultCountry; gCurrentProductArea = gDefaultProductArea; + deinitLogging(); } #define CAT_GENERAL_ROOT "root" @@ -257,11 +252,10 @@ ON_FUNCTIONS_PATCHED() { } WUPS_CloseStorage(); - } ON_APPLICATION_START() { - WHBLogUdpInit(); + initLogging(); WUPS_OpenStorage(); @@ -447,7 +441,6 @@ WUPS_CONFIG_CLOSED() { WUPS_CloseStorage(); } - DECL_FUNCTION(int, MCP_GetSysProdSettings, int IOHandle, struct MCPSysProdSettings *settings) { int result = real_MCP_GetSysProdSettings(IOHandle, settings); diff --git a/src/utils/logger.c b/src/utils/logger.c new file mode 100644 index 0000000..0411db7 --- /dev/null +++ b/src/utils/logger.c @@ -0,0 +1,36 @@ +#ifdef DEBUG +#include +#include +#include +#include + +uint32_t moduleLogInit = false; +uint32_t cafeLogInit = false; +uint32_t udpLogInit = false; +#endif // DEBUG + +void initLogging() { +#ifdef DEBUG + if (!(moduleLogInit = WHBLogModuleInit())) { + cafeLogInit = WHBLogCafeInit(); + udpLogInit = WHBLogUdpInit(); + } +#endif // DEBUG +} + +void deinitLogging() { +#ifdef DEBUG + if (moduleLogInit) { + WHBLogModuleDeinit(); + moduleLogInit = false; + } + if (cafeLogInit) { + WHBLogCafeDeinit(); + cafeLogInit = false; + } + if (udpLogInit) { + WHBLogUdpDeinit(); + udpLogInit = false; + } +#endif // DEBUG +} \ No newline at end of file diff --git a/src/utils/logger.h b/src/utils/logger.h index 65e8da1..6ff5ae2 100644 --- a/src/utils/logger.h +++ b/src/utils/logger.h @@ -1,32 +1,42 @@ -#ifndef __LOGGER_H_ -#define __LOGGER_H_ +#pragma once + +#include +#include #ifdef __cplusplus extern "C" { #endif -#include -#include +#ifdef DEBUG #define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__) -#define OSFATAL_FUNCTION_LINE(FMT, ARGS...)do { \ - OSFatal_printf("[%s]%s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ - } while (0) +#define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) #define DEBUG_FUNCTION_LINE(FMT, ARGS...)do { \ WHBLogPrintf("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ } while (0) -#define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) - #define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...)do { \ WHBLogWritef("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ } while (0) +#else + +#define DEBUG_FUNCTION_LINE_VERBOSE(FMT, ARGS...) while (0) + +#define DEBUG_FUNCTION_LINE(FMT, ARGS...) while (0) + +#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) while (0) + +#endif + +void initLogging(); + +void deinitLogging(); + #ifdef __cplusplus } #endif -#endif