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)