From 2ea26fcf5e8533f48d3ba2216195a68cd51d20fd Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 16 Apr 2024 21:24:31 +1000 Subject: [PATCH] Collapse more of readme by default, general tidy up --- Makefile | 51 +++++------ readme.md | 265 +++++++++++++++++++++++++++++++----------------------- 2 files changed, 179 insertions(+), 137 deletions(-) diff --git a/Makefile b/Makefile index 469db149b..f88f729d6 100644 --- a/Makefile +++ b/Makefile @@ -90,6 +90,7 @@ ifeq ($(PLAT),beos) CFLAGS = -g -pipe LDFLAGS = -g LIBS = -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker + TRACK_DEPENDENCIES=0 endif ifeq ($(PLAT),serenityos) @@ -137,38 +138,38 @@ irix: # consoles builds require special handling, so are moved to # separate makefiles to avoid having one giant messy makefile dreamcast: - $(MAKE) -f misc/dreamcast/Makefile PLAT=dreamcast + $(MAKE) -f misc/dreamcast/Makefile psp: - $(MAKE) -f misc/psp/Makefile PLAT=psp + $(MAKE) -f misc/psp/Makefile vita: - $(MAKE) -f misc/vita/Makefile PLAT=vita -ps3: - $(MAKE) -f misc/ps3/Makefile PLAT=ps3 + $(MAKE) -f misc/vita/Makefile ps1: cmake --preset default misc/ps1 cmake --build misc/ps1/build ps2: - $(MAKE) -f misc/ps2/Makefile PLAT=ps2 + $(MAKE) -f misc/ps2/Makefile +ps3: + $(MAKE) -f misc/ps3/Makefile xbox: - $(MAKE) -f misc/xbox/Makefile PLAT=xbox + $(MAKE) -f misc/xbox/Makefile xbox360: - $(MAKE) -f misc/xbox360/Makefile PLAT=xbox360 + $(MAKE) -f misc/xbox360/Makefile n64: - $(MAKE) -f misc/n64/Makefile PLAT=n64 -3ds: - $(MAKE) -f misc/3ds/Makefile PLAT=3ds -wii: - $(MAKE) -f misc/wii/Makefile PLAT=wii -gamecube: - $(MAKE) -f misc/gc/Makefile PLAT=gamecube -wiiu: - $(MAKE) -f misc/wiiu/Makefile PLAT=wiiu -switch: - $(MAKE) -f misc/switch/Makefile PLAT=switch + $(MAKE) -f misc/n64/Makefile ds: - $(MAKE) -f misc/ds/Makefile PLAT=ds + $(MAKE) -f misc/ds/Makefile +3ds: + $(MAKE) -f misc/3ds/Makefile +gamecube: + $(MAKE) -f misc/gc/Makefile +wii: + $(MAKE) -f misc/wii/Makefile +wiiu: + $(MAKE) -f misc/wiiu/Makefile +switch: + $(MAKE) -f misc/switch/Makefile os/2: - $(MAKE) -f misc/os2/Makefile PLAT=os2 + $(MAKE) -f misc/os2/Makefile clean: $(DEL) $(OBJECTS) @@ -180,9 +181,9 @@ $(BUILD_DIR): mkdir -p $(BUILD_DIR) -# NOTE: Tracking dependencies might not work on older systems - disable if so +# === Compiling with dependency tracking === +# NOTE: Tracking dependencies might not work on older systems - disable this if so ifeq ($(TRACK_DEPENDENCIES), 1) -# Compiling with dependency tracking DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d DEPFILES := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.d, $(C_SOURCES)) $(DEPFILES): @@ -191,13 +192,13 @@ $(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c $(BUILD_DIR)/%.d $(CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@ include $(wildcard $(DEPFILES)) -# Compiling WITHOUT dependency tracking +# === Compiling WITHOUT dependency tracking === else $(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c $(CC) $(CFLAGS) -c $< -o $@ endif -# Platform specific file compiling +# === Platform specific file compiling === $(BUILD_DIR)/interop_cocoa.o: $(SOURCE_DIR)/interop_cocoa.m $(CC) $(CFLAGS) -c $< -o $@ diff --git a/readme.md b/readme.md index 458c70780..257a71070 100644 --- a/readme.md +++ b/readme.md @@ -73,18 +73,20 @@ And also runs on: * IRIX - needs curl and openal packages * SerenityOS - needs SDL2 * Dreamcast - unfinished, but renders (can [download from here](https://www.classicube.net/download/dreamcast)) -* Nintendo 64 - unfinished, moderate rendering issues (can [download from here](https://www.classicube.net/download/n64)) -* DS/DSi - unfinished, rendering issues (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_ds.yml)) -* GameCube - unfinished, but usable (can [download from here](https://www.classicube.net/download/gamecube)) -* Wii - unfinished, but usable (can [download from here](https://www.classicube.net/download/wii)) -* 3DS - unfinished, but usable (can [download from here](https://www.classicube.net/download/3ds)) -* Wii U - unfinished, major issues (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_wiiu.yml)) * Switch - unfinished, but usable (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_switch.yml)) -* PSP - unfinished, rendering issues (can [download from here](https://www.classicube.net/download/psp)) +* Wii U - unfinished, major issues (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_wiiu.yml)), **untested on real hardware**) +* Wii - unfinished, but usable (can [download from here](https://www.classicube.net/download/wii)) +* GameCube - unfinished, but usable (can [download from here](https://www.classicube.net/download/gamecube)) +* Nintendo 64 - unfinished, moderate rendering issues (can [download from here](https://www.classicube.net/download/n64)) +* 3DS - unfinished, but usable (can [download from here](https://www.classicube.net/download/3ds)) +* DS/DSi - unfinished, rendering issues (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_ds.yml)) * PS Vita - unfinished, rendering issues (can [download from here](https://www.classicube.net/download/vita)) +* PSP - unfinished, rendering issues (can [download from here](https://www.classicube.net/download/psp)) +* PS3 - unfinished, rendering issues (can [download from here](https://www.classicube.net/download/ps3)) * PS2 - unfinished, major rendering and **stability issues** (can [download from here](https://www.classicube.net/download/ps2)) -* PS3 - unfinished, rendering issues (can [download from here](https://www.classicube.net/download/ps3), **usually outdated**) -* Xbox - unfinished, major rendering issues (can [download from here](https://www.classicube.net/download/xbox), **untested on real hardware**) +* PS1 - unfinished, major rendering and **stability issues** +* Xbox 360 - completely unfinished (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_xbox360.yml)), **untested on real hardware**) +* Xbox - unfinished, major rendering issues (can [download from here](https://www.classicube.net/download/xbox)) # Compiling @@ -183,14 +185,122 @@ Import `ios/CCIOS.xcodeproj` project into Xcode (TODO explain more detailed) `xcodebuild -sdk iphoneos -configuration Debug` (TODO explain more detailed) -## Compiling - other platforms - -#### Web +## Compiling - webclient ```emcc *.c -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=1Mb --js-library interop_web.js``` The generated javascript file has some issues. [See here for how to fix](doc/compile-fixes.md#webclient-patches) +For more details on how to integrate into a website, see [here](doc/hosting-webclient.md) + +
+

Compiling - consoles

+ +All console ports needs assistance from someone experienced with homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) + +
+

Nintendo consoles (click to expand)

+ +#### Switch + +Run `make switch`. You'll need [libnx](https://github.com/switchbrew/libnx) and [mesa](https://github.com/devkitPro/mesa) + +**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `switch-dev` group and the `switch-mesa switch-glm` packages)** + +#### Wii U + +Run `make wiiu`. You'll need [wut](https://github.com/devkitPro/wut/) + +**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `wiiu-dev` group)** + +#### 3DS + +Run `make 3ds`. You'll need [libctru](https://github.com/devkitPro/libctru) + +**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `3ds-dev` group)** + +#### Wii + +Run `make wii`. You'll need [libogc](https://github.com/devkitPro/libogc) + +**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `wii-dev` group)** + +#### GameCube + +Run `make gamecube`. You'll need [libogc](https://github.com/devkitPro/libogc) + +**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `gamecube-dev` group)** + +#### Nintendo DS/DSi + +Run `make ds`. You'll need [BlocksDS](https://github.com/blocksds/sdk) + +#### Nintendo 64 + +Run `make n64`. You'll need the opengl branch of [libdragon](https://github.com/DragonMinded/libdragon/tree/opengl) + +
+ + +
+

Sony consoles (click to expand)

+ +#### PlayStation Vita + +Run `make vita`. You'll need [vitasdk](https://vitasdk.org/) + +#### PlayStation Portable + +Run `make psp`. You'll need [pspsdk](https://github.com/pspdev/pspsdk) + +**NOTE: It is recommended that you install the precompiled pspsdk version from [here](https://github.com/pspdev/pspdev/releases)** + +#### PlayStation 3 + +Run `make ps3`. You'll need [PSL1GHT](https://github.com/ps3dev/PSL1GHT) + +#### PlayStation 2 + +Run `make ps2`. You'll need [ps2sdk](https://github.com/ps2dev/ps2sdk) + +#### PlayStation 1 + +Run `make ps1`. You'll need [PSn00bSDK](https://github.com/Lameguy64/PSn00bSDK/) + +
+ + +
+

Microsoft consoles (click to expand)

+ +#### Xbox 360 + +Run `make 360`. You'll need [libxenon](https://github.com/Free60Project/libxenon) + +#### Xbox (original) + +Run `make xbox`. You'll need [nxdk](https://github.com/XboxDev/nxdk) + +
+ + +
+

SEGA consoles (click to expand)

+ +### SEGA consoles + +#### Dreamcast + +Run `make dreamcast`. You'll need [KallistiOS](https://github.com/KallistiOS/KallistiOS) + +
+ +
+ + +
+

Compiling - other platforms (click to expand)

+ #### FreeBSD Install libxi, libexecinfo, curl and openal-soft package if needed @@ -241,81 +351,7 @@ Install SDL2 port if needed You'll have to write the necessary code. You should read `portability.md` in doc folder. -## Compiling - consoles - -All console ports needs assistance from someone experienced with homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) - -### Nintendo consoles - -#### Switch - -Run `make switch`. You'll need [libnx](https://github.com/switchbrew/libnx) and [mesa](https://github.com/devkitPro/mesa) - -**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `switch-dev` group and the `switch-mesa switch-glm` packages)** - -#### Wii U - -Run `make wiiu`. You'll need [wut](https://github.com/devkitPro/wut/) - -**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `wiiu-dev` group)** - -#### 3DS - -Run `make 3ds`. You'll need [libctru](https://github.com/devkitPro/libctru) - -**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `3ds-dev` group)** - -#### Wii - -Run `make wii`. You'll need [libogc](https://github.com/devkitPro/libogc) - -**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `wii-dev` group)** - -#### GameCube - -Run `make gamecube`. You'll need [libogc](https://github.com/devkitPro/libogc) - -**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here](https://devkitpro.org/wiki/Getting_Started) - you need the `gamecube-dev` group)** - -#### Nintendo 64 - -Run `make n64`. You'll need the opengl branch of [libdragon](https://github.com/DragonMinded/libdragon/tree/opengl) - -#### Nintendo DS/DSi - -Run `make ds`. You'll need [BlocksDS](https://github.com/blocksds/sdk) - -### Sony consoles - -#### PlayStation Vita - -Run `make vita`. You'll need [vitasdk](https://vitasdk.org/) - -#### PlayStation Portable - -Run `make psp`. You'll need [pspsdk](https://github.com/pspdev/pspsdk) - -**NOTE: It is recommended that you install the precompiled pspsdk version from [here](https://github.com/pspdev/pspdev/releases)** - -#### PlayStation 3 - -Run `make ps3`. You'll need [PSL1GHT](https://github.com/ps3dev/PSL1GHT) - -#### PlayStation 2 - -Run `make ps2`. You'll need [ps2sdk](https://github.com/ps2dev/ps2sdk) - -### Microsoft consoles - -#### Xbox - -Run `make xbox`. You'll need [nxdk](https://github.com/XboxDev/nxdk) - -### SEGA consoles - -#### Dreamcast - -Run `make dreamcast`. You'll need [KallistiOS](https://github.com/KallistiOS/KallistiOS) +
## Documentation @@ -338,7 +374,8 @@ Further information (e.g. style) for ClassiCube's source code can be found in th * To see help for a given built in command, type `/client help `. -## Open source technologies +
+

Open source technologies (click to expand)

* [curl](https://curl.se/) - HTTP/HTTPS for linux and macOS * [FreeType](https://www.freetype.org/) - Font handling for all platforms @@ -348,35 +385,39 @@ Further information (e.g. style) for ClassiCube's source code can be found in th * [Emscripten](https://emscripten.org/) - Compiles client for web * [RenderDoc](https://renderdoc.org/) - Graphics debugging * [BearSSL](https://www.bearssl.org/) - SSL/TLS support on consoles -* [libctru](https://github.com/devkitPro/libctru) - Backend for 3DS -* [citro3D](https://github.com/devkitPro/citro3d) - Rendering backend for 3DS -* [Citra](https://github.com/citra-emu/citra) - Emulator used to test 3DS port -* [pspsdk](https://github.com/pspdev/pspsdk) - Backend for PSP -* [PPSSPP](https://github.com/hrydgard/ppsspp) - Emulator used to test PSP port -* [vitasdk](https://github.com/vitasdk) - Backend for PS Vita -* [Vita3K](https://github.com/Vita3K/Vita3K) - Emulator used to test Vita port -* [PSL1GHT](https://github.com/ps3dev/PSL1GHT) - Backend for PS3 -* [RPCS3](https://github.com/RPCS3/rpcs3) - Emulator used to test PS3 port -* [libogc](https://github.com/devkitPro/libogc) - Backend for Wii and GameCube -* [libfat](https://github.com/devkitPro/libfat) - Filesystem backend for Wii/GC -* [Dolphin](https://github.com/dolphin-emu/dolphin) - Emulator used to test Wii/GC port -* [KallistiOS](https://github.com/KallistiOS/KallistiOS) - Backend for Dreamcast -* [GLdc](https://github.com/Kazade/GLdc) - Basis of rendering backend for Dreamcast -* [nullDC](https://github.com/skmp/nulldc) - Emulator used to test Dreamcast port -* [flycast](https://github.com/flyinghead/flycast) - Emulator used to test Dreamcast port -* [nxdk](https://github.com/XboxDev/nxdk) - Backend for Xbox -* [xemu](https://github.com/xemu-project/xemu) - Emulator used to test Xbox port -* [cxbx-reloaded](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded) - Emulator used to test Xbox port -* [libdragon](https://github.com/DragonMinded/libdragon) - Backend for Nintendo 64 -* [cen64](https://github.com/n64dev/cen64) - Emulator used to test Nintendo 64 port -* [ares](https://github.com/ares-emulator/ares) - Emulator used to test Nintendo 64 port -* [ps2sdk](https://github.com/ps2dev/ps2sdk) - Backend for PS2 -* [PCSX2](https://github.com/PCSX2/pcsx2) - Emulator used to test PS2 port * [libnx](https://github.com/switchbrew/libnx) - Backend for Switch * [Ryujinx](https://github.com/Ryujinx/Ryujinx) - Emulator used to test Switch port * [wut](https://github.com/devkitPro/wut/) - Backend for Wii U * [Cemu](https://github.com/cemu-project/Cemu) - Emulator used to test Wii U port +* [libctru](https://github.com/devkitPro/libctru) - Backend for 3DS +* [citro3D](https://github.com/devkitPro/citro3d) - Rendering backend for 3DS +* [Citra](https://github.com/citra-emu/citra) - Emulator used to test 3DS port +* [libogc](https://github.com/devkitPro/libogc) - Backend for Wii and GameCube +* [libfat](https://github.com/devkitPro/libfat) - Filesystem backend for Wii/GC +* [Dolphin](https://github.com/dolphin-emu/dolphin) - Emulator used to test Wii/GC port +* [libdragon](https://github.com/DragonMinded/libdragon) - Backend for Nintendo 64 +* [ares](https://github.com/ares-emulator/ares) - Emulator used to test Nintendo 64 port +* [blocksds](https://github.com/blocksds/sdk) - Backend for Nintendo DS +* [melonDS](https://github.com/melonDS-emu/melonDS) - Emulator used to test Nintendo DS port +* [vitasdk](https://github.com/vitasdk) - Backend for PS Vita +* [Vita3K](https://github.com/Vita3K/Vita3K) - Emulator used to test Vita port +* [pspsdk](https://github.com/pspdev/pspsdk) - Backend for PSP +* [PPSSPP](https://github.com/hrydgard/ppsspp) - Emulator used to test PSP port +* [PSL1GHT](https://github.com/ps3dev/PSL1GHT) - Backend for PS3 +* [RPCS3](https://github.com/RPCS3/rpcs3) - Emulator used to test PS3 port +* [ps2sdk](https://github.com/ps2dev/ps2sdk) - Backend for PS2 +* [PCSX2](https://github.com/PCSX2/pcsx2) - Emulator used to test PS2 port +* [PSn00bSDK](https://github.com/Lameguy64/PSn00bSDK/) - Backend for PS1 +* [duckstation](https://github.com/stenzek/duckstation) - Emulator used to test PS1 port +* [libxenon](https://github.com/Free60Project/libxenon) - Backend for Xbox 360 +* [nxdk](https://github.com/XboxDev/nxdk) - Backend for Xbox +* [xemu](https://github.com/xemu-project/xemu) - Emulator used to test Xbox port +* [cxbx-reloaded](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded) - Emulator used to test Xbox port +* [KallistiOS](https://github.com/KallistiOS/KallistiOS) - Backend for Dreamcast +* [GLdc](https://github.com/Kazade/GLdc) - Basis of rendering backend for Dreamcast +* [flycast](https://github.com/flyinghead/flycast) - Emulator used to test Dreamcast port +
## Sound Credits ClassiCube uses sounds from [Freesound.org](https://freesound.org)