Collapse more of readme by default, general tidy up

This commit is contained in:
UnknownShadow200 2024-04-16 21:24:31 +10:00
parent cc2a8f4cb7
commit 2ea26fcf5e
2 changed files with 179 additions and 137 deletions

View file

@ -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 $@

265
readme.md
View file

@ -73,18 +73,20 @@ And also runs on:
* IRIX - needs <code>curl</code> and <code>openal</code> packages
* SerenityOS - needs <code>SDL2</code>
* 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)
<details>
<summary><h2>Compiling - consoles</h2></summary>
All console ports needs assistance from someone experienced with homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord)
<details>
<summary><h3>Nintendo consoles (click to expand)</h3></summary>
#### 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)
</details>
<details>
<summary><h3>Sony consoles (click to expand)</h3></summary>
#### 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/)
</details>
<details>
<summary><h3>Microsoft consoles (click to expand)</h3></summary>
#### 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)
</details>
<details>
<summary><h3>SEGA consoles (click to expand)</h3></summary>
### SEGA consoles
#### Dreamcast
Run `make dreamcast`. You'll need [KallistiOS](https://github.com/KallistiOS/KallistiOS)
</details>
</details>
<details>
<summary><h2>Compiling - other platforms (click to expand)</h2></summary>
#### 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)
</details>
## 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 <command name>`.
## Open source technologies
<details>
<summary><h2>Open source technologies (click to expand)</h2></summary>
* [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
</details>
## Sound Credits
ClassiCube uses sounds from [Freesound.org](https://freesound.org)<br>