diff --git a/readme.md b/readme.md index d5531f36f..78c4adbf0 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -ClassiCube is a custom Minecraft Classic compatible client written in C that works on Windows, macOS, Linux, iOS, Android, FreeBSD, NetBSD, OpenBSD, Solaris, Haiku, IRIX, 3DS (unfinished), PSP (unfinished), and in a web browser.
+ClassiCube is a custom Minecraft Classic compatible client written in C that works on Windows, macOS, Linux, iOS, Android, FreeBSD, NetBSD, OpenBSD, Solaris, Haiku, IRIX, SerenityOS, 3DS (unfinished), PSP (unfinished), GameCube (unfinished), Wii (unfinished), and in a web browser.
**It is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.** ![screenshot_n](http://i.imgur.com/FCiwl27.png) @@ -199,10 +199,26 @@ The generated javascript file has some issues. [See here for how to fix](doc/com cd into `src` directory, then run `make psp`. You'll need [pspsdk](https://github.com/pspdev/pspsdk) +The PSP port needs assistance from someone experienced with PSP homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) + #### 3DS cd into `src` directory, then run `make 3ds`. You'll need [libctru](https://github.com/devkitPro/libctru) +The 3DS port needs assistance from someone experienced with 3DS homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) + +#### GameCube + +Use a slighly modified standard GameCube makefile. You'll need [libogc](https://github.com/devkitPro/libogc) + +The GC port needs assistance from someone experienced with GC homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) + +#### Wii + +Use a slighly modified standard Wii makefile. You'll need [libogc](https://github.com/devkitPro/libogc) + +The Wii port needs assistance from someone experienced with Wii homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) + ##### Other You'll have to write the necessary code. You should read portability.md in doc folder. diff --git a/src/LScreens.h b/src/LScreens.h index de5c20143..7dd1c9cfe 100644 --- a/src/LScreens.h +++ b/src/LScreens.h @@ -27,7 +27,6 @@ typedef void (*LScreen_Func)(struct LScreen* s); struct LWidget* selectedWidget; /* Widget mouse last clicked on. */ \ int numWidgets; /* Number of widgets actually used. */ \ struct LWidget** widgets; /* Array of pointers to all widgets in the screen. */ \ - cc_bool hidesTitlebar; /* Whether titlebar in window is hidden. */ \ const char* title; /* Titlebar text */ struct LScreen { LScreen_Layout }; diff --git a/src/Logger.c b/src/Logger.c index 8180ac48f..207b5d43f 100644 --- a/src/Logger.c +++ b/src/Logger.c @@ -275,7 +275,6 @@ static int GetFrames(CONTEXT* ctx, cc_uintptr* addrs, int max) { STACKFRAME frame = { 0 }; HANDLE process, thread; int count, type; - CONTEXT copy; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Mode = AddrModeFlat; @@ -297,10 +296,10 @@ static int GetFrames(CONTEXT* ctx, cc_uintptr* addrs, int max) { #endif process = GetCurrentProcess(); thread = GetCurrentThread(); - copy = *ctx; - for (count = 0; count < max; count++) { - if (!StackWalk(type, process, thread, &frame, ©, NULL, SymFunctionTableAccess, SymGetModuleBase, NULL)) break; + for (count = 0; count < max; count++) + { + if (!StackWalk(type, process, thread, &frame, ctx, NULL, SymFunctionTableAccess, SymGetModuleBase, NULL)) break; if (!frame.AddrFrame.Offset) break; addrs[count] = frame.AddrPC.Offset; } @@ -313,7 +312,7 @@ void Logger_Backtrace(cc_string* trace, void* ctx) { HANDLE process; process = GetCurrentProcess(); - SymInitialize(process, NULL, TRUE); + SymInitialize(process, NULL, TRUE); /* TODO only in MSVC.. */ frames = GetFrames((CONTEXT*)ctx, addrs, MAX_BACKTRACE_FRAMES); for (i = 0; i < frames; i++) { @@ -849,7 +848,7 @@ static void DumpRegisters(void* ctx) { *------------------------------------------------Module/Memory map handling-----------------------------------------------* *#########################################################################################################################*/ #if defined CC_BUILD_WIN -static BOOL CALLBACK DumpModule(const char* name, ULONG_PTR base, ULONG size, void* ctx) { +static BOOL CALLBACK DumpModule(const char* name, ULONG_PTR base, ULONG size, void* userCtx) { cc_string str; char strBuffer[256]; cc_uintptr beg, end; @@ -862,7 +861,7 @@ static BOOL CALLBACK DumpModule(const char* name, ULONG_PTR base, ULONG size, vo } static BOOL (WINAPI *_EnumerateLoadedModules)(HANDLE process, PENUMLOADED_MODULES_CALLBACK callback, PVOID userContext); -static void DumpMisc(void* ctx) { +static void DumpMisc(void) { static const cc_string modules = String_FromConst("-- modules --\r\n"); HANDLE process = GetCurrentProcess(); @@ -921,7 +920,7 @@ static int SkipRange(const cc_string* str) { } #endif -static void DumpMisc(void* ctx) { +static void DumpMisc(void) { static const cc_string memMap = String_FromConst("-- memory map --\n"); cc_string str; char strBuffer[320]; int n, fd; @@ -942,7 +941,7 @@ static void DumpMisc(void* ctx) { #elif defined CC_BUILD_DARWIN #include -static void DumpMisc(void* ctx) { +static void DumpMisc(void) { static const cc_string modules = String_FromConst("-- modules --\n"); static const cc_string newLine = String_FromConst(_NL); cc_uint32 i, count; @@ -964,7 +963,7 @@ static void DumpMisc(void* ctx) { } } #else -static void DumpMisc(void* ctx) { } +static void DumpMisc(void) { } #endif @@ -1222,7 +1221,7 @@ static void AbortCommon(cc_result result, const char* raw_msg, void* ctx) { Logger_Log(&backtrace); Logger_Backtrace(&msg, ctx); - DumpMisc(ctx); + DumpMisc(); CloseLogFile(); msg.buffer[msg.length] = '\0'; diff --git a/src/Logger.h b/src/Logger.h index 8940719af..5eda019f1 100644 --- a/src/Logger.h +++ b/src/Logger.h @@ -43,6 +43,7 @@ void Logger_SysWarn2(cc_result res, const char* action, const cc_string* path); /* This is used to attempt to log some information about a crash due to invalid memory read, etc. */ void Logger_Hook(void); /* Generates a backtrace based on the platform-specific CPU context. */ +/* NOTE: The provided CPU context may be modified (e.g on Windows) */ void Logger_Backtrace(cc_string* trace, void* ctx); /* Logs a message to client.log on disc. */ /* NOTE: The message is written raw, it is NOT converted to unicode (unlike Stream_WriteLine) */