Compare commits

...

2011 Commits

Author SHA1 Message Date
UnknownShadow200 b6eb396626 macOS: Fix some small mistakes with reference counting 2025-12-17 07:36:40 +11:00
UnknownShadow200 b4fdd26946 Unconditionally link lm in makefile on linux to avoid 'undefined sqrtf' when __builtin_sqrtf is not resolved to a CPU instruction intrinsic 2025-12-15 20:50:43 +11:00
UnknownShadow200 14b5df3e2c GBA: Add workflow, no website download though 2025-12-13 14:16:24 +11:00
UnknownShadow200 482c8e1256 Fix fresh copy of launcher on windows displaying multiple 'path not found' errors on startup 2025-12-13 14:06:23 +11:00
UnknownShadow200 162bb983ab GBA: Optimise framebuffer clearing
Measuring in mgBA, time taken reduced from ~52 ms to ~3ms
2025-12-13 12:12:24 +11:00
UnknownShadow200 4bd8d682c9 At least note GBA port in readme 2025-12-13 08:03:11 +11:00
UnknownShadow200 119cacac0d Split up Gamecube and Wii backends more 2025-12-12 20:45:06 +11:00
UnknownShadow200 1cdc87082f
Merge pull request #1471 from Extrems/master
Migrate GameCube port to libogc2
2025-12-12 19:47:17 +11:00
Extrems 73d591e877 GameCube: Update DNS list 2025-12-05 12:12:09 -05:00
Extrems e460578cba GameCube/Wii: Fix GameCube Controller hotplug 2025-12-05 12:12:09 -05:00
Extrems 29ea018a2e GameCube: Migrate to libogc2 2025-12-05 12:12:08 -05:00
UnknownShadow200 45d6bcb2a7 Try to fix .wavs accidentally being generated/read with wrong endianness on big endian systems 2025-12-03 17:15:10 +11:00
UnknownShadow200 f93bd379e6
Merge pull request #1459 from shinovon/13
Symbian: Default key mappings
2025-11-18 20:55:45 +11:00
UnknownShadow200 6a57a07073 Move zlib header skipping into Bitmap.c 2025-11-15 11:18:03 +11:00
UnknownShadow200 b6b1e95d37
Merge pull request #1460 from shinovon/14
Symbian: Implement clipboard
2025-11-15 10:40:30 +11:00
Shinovon edbfa2905f Symbian: Implement clipboard 2025-11-13 18:13:37 +05:00
Shinovon 2eb4ee2302 Symbian: fpu mode limited instead of minimal 2025-11-13 17:11:36 +05:00
Shinovon b79e19e901 Symbian: default key mappings 2025-11-11 19:11:11 +05:00
Shinovon 64196bd5e7 Symbian: fix build config after recent changes 2025-11-11 19:10:30 +05:00
UnknownShadow200 900d76d94c Avoid a per-pixel branch in SoftMin GPU renderer 2025-11-11 21:51:40 +11:00
UnknownShadow200 01ff9ecdc3 GBA: now reaches 2 FPS 2025-11-11 21:13:12 +11:00
UnknownShadow200 74e58b34e1 try fix again 2025-11-11 19:18:07 +11:00
UnknownShadow200 a1c52098ad try fix again 2025-11-11 19:13:01 +11:00
UnknownShadow200 115b032ca1 Try to fix last commit 2025-11-11 18:36:02 +11:00
UnknownShadow200 93b16188bf Try to simplify mem functions 2025-11-11 18:02:18 +11:00
UnknownShadow200 1395135d38 Defer directory (audio/texpacks) creation until actually necessary 2025-11-09 21:48:39 +11:00
UnknownShadow200 68572b545e Gamecube: Show network details on startup 2025-11-09 10:58:46 +11:00
UnknownShadow200 0f542d8517 Xbox: Now also shows dialogs 2025-11-09 08:52:44 +11:00
UnknownShadow200 b40eb663a7 Wii/Gamecube now show dialogs 2025-11-08 18:39:20 +11:00
UnknownShadow200 45ec826517 NDS: On-screen dialog now mostly works 2025-11-08 17:04:40 +11:00
UnknownShadow200 db4ed0301a Start support for virtual dialogs 2025-11-08 16:07:52 +11:00
UnknownShadow200 dca75bb289 Better track 2D/3D window type 2025-11-08 11:45:45 +11:00
UnknownShadow200 14811af6ec Move symbian files into directory 2025-11-08 09:30:34 +11:00
UnknownShadow200 0d4117bb59 Try to fix ClassiCube sometimes rendering as a translucent window
Because ClassiCube does use alpha (e.g. for water), it would confusingly by alpha blended by the compositor with other desktop windows
2025-11-08 07:33:34 +11:00
UnknownShadow200 b44deb2a1c PS4: Fix not generating final package 2025-11-08 06:59:43 +11:00
UnknownShadow200 30a575dc28 Android: WIP on pre 2.3 support 2025-11-07 19:55:45 +11:00
UnknownShadow200 500723614b Android: Get surface width/height from Java side instead 2025-11-07 17:50:47 +11:00
UnknownShadow200 61dd0df958 Switch: Use specific EGL code 2025-11-07 07:55:45 +11:00
UnknownShadow200 b199be2fc7 Android: Further code tidy up 2025-11-07 07:16:07 +11:00
UnknownShadow200 5ae8418352 Android: Slightly tidy up code 2025-11-07 06:24:01 +11:00
UnknownShadow200 742ac8f73a Try to fix inventory sprites sometimes being offset wrongly in Direct3D9 2025-11-06 07:16:39 +11:00
UnknownShadow200 93f23448d0 Fix cinematic GUI with direct3d9 2025-11-05 07:29:16 +11:00
UnknownShadow200 0e2c9177c0 Simplify CCFS.readFile 2025-11-01 07:24:03 +11:00
UnknownShadow200 968396b99b
Merge pull request #1454 from a1batross/master
Add support for Elbrus architecture
2025-10-28 12:00:44 +11:00
Alibek Omarov 2d4d6e6689 Makefile: set -O3 by default for MCST lcc compiler 2025-10-27 11:24:08 +00:00
Alibek Omarov 134725f121 Linux: add support for Elbrus 2025-10-26 15:29:19 +00:00
UnknownShadow200 d00fb4b333 Dreamcast: Return errno on EAI_SYSTEM error result from getaddrinfo 2025-10-26 23:24:06 +11:00
UnknownShadow200 f2b9b42437 X11: Try to log default depth/visual ID too 2025-10-26 08:00:45 +11:00
UnknownShadow200 e334105074 Minorly tidy up HTTP code 2025-10-18 07:08:21 +11:00
UnknownShadow200 5ca6ba9380 try to fix textures too 2025-10-17 19:35:33 +11:00
UnknownShadow200 6a734b0d6d OpenGL1: Try to fix on big endian systems 2025-10-17 18:54:10 +11:00
UnknownShadow200 56c6e1aab9
Merge pull request #1446 from shinovon/12
Symbian port improvement
2025-10-17 07:03:18 +11:00
UnknownShadow200 755622536f
Merge pull request #1452 from ClassiCube/SocketPoll5
Fix connecting to non-existent server showing 'Disconnected from server' instead of 'Failed to connect'
2025-10-16 19:42:46 +11:00
UnknownShadow200 a02df866d6 Fix for Windows too 2025-10-16 19:40:23 +11:00
UnknownShadow200 4910f2590f PS2: Remove now unneeded hack 2025-10-15 22:38:49 +11:00
UnknownShadow200 a44d18f2c1 Fixes for Gamecube, Dreamcast, etc 2025-10-15 22:22:55 +11:00
UnknownShadow200 309c6d920f Properly handle poll/select for writing
The last error code should be checked when select/poll returns true for writability, not false like it was before.

This should e.g. fix connecting to a non-existent LAN server showing 'disconnected from server' error instead of 'failed to connect to server' error. This was because since the async connect call was wrongly treated as having succeeded, the send method was then called, which immediately failed.
2025-10-15 18:24:44 +11:00
UnknownShadow200 d7faf89ff2 webclient: Also implement separate last error code function 2025-10-15 18:08:00 +11:00
UnknownShadow200 a4279c7efc When doing git add -A and a lot of files are changed,, thus resulting in only the number of changed files being listed in the command output, it's a good idea to still check the full list of files actually being changed 2025-10-15 16:58:12 +11:00
UnknownShadow200 3d5e009292 WIP Socket_GetLastError function 2025-10-15 07:25:06 +11:00
UnknownShadow200 b737122dd6 removed a little bit too much 2025-10-14 06:32:17 +11:00
UnknownShadow200 153623e1f1 whoops 2025-10-13 20:35:35 +11:00
UnknownShadow200 2f54c689e9 Always log raw native path 2025-10-13 20:22:33 +11:00
UnknownShadow200 8374c79c5d Switch to always opening using platform native paths 2025-10-13 19:13:37 +11:00
UnknownShadow200 f150f0c649 WIP always using platform native paths 2025-10-13 07:09:54 +11:00
UnknownShadow200 e465b9ccba WIP printing platform native paths 2025-10-12 21:46:38 +11:00
UnknownShadow200 d07f84330f
Merge pull request #1449 from picatsv/master
Add build instructions for WinCE target
2025-10-12 07:14:45 +11:00
svp 53406f5046
specify required libmpfr architecture
whoops this is not actually a trivial thing to miss, as arm-mingw32 itself is i386 it needs the i386 library
2025-10-11 20:38:04 +02:00
svp 6afdb0f176 Add build instructions for WinCE target
Fix typo in Core.h declarations for WinCE
Drop mcpu tuning as it conflicts with march
(armv5te does not target Jazelle but our code is C so it's fine i think...)
2025-10-11 20:21:58 +02:00
UnknownShadow200 fe76435079 Return specific error code for non writable filesystem 2025-10-11 07:39:42 +11:00
UnknownShadow200 2cbe56aaeb really fix uploading 2025-10-10 08:00:22 +11:00
UnknownShadow200 2a8309bcb0 Try to fix symbian exe not being uploaded 2025-10-10 07:53:48 +11:00
UnknownShadow200 831987e4db try to fix generic BearSSL I/O error being returned instead of actual error code 2025-10-10 07:42:50 +11:00
UnknownShadow200 b756f80b4a NDS: Fix trying to upload wrong file 2025-10-08 19:46:19 +11:00
UnknownShadow200 ddd50b5e3a NDS: Further work on separate non-networking build 2025-10-08 19:31:03 +11:00
UnknownShadow200 72b29fee19 NDS: WIP on combined dswifi support 2025-10-08 18:37:54 +11:00
UnknownShadow200 8459f9ed74 3DS: Avoid setting viewport all the time 2025-10-08 06:51:40 +11:00
Shinovon 78edbe2e00 Symbian: Fix crash handler 2025-10-07 15:30:46 +05:00
Shinovon 8af7006019 Symbian: Halt main loop on crash 2025-10-07 13:07:38 +05:00
Shinovon 6d3343f3b1 Symbian: Try to fix installing on later gpu-less models
Nokia 500, to be precise
2025-10-07 13:06:56 +05:00
UnknownShadow200 ad1623243c
Merge pull request #1445 from shinovon/11
Symbian: Improve dialog implementation
2025-10-07 06:53:56 +11:00
Shinovon c95ea4a498 Fix C89 compatibility 2025-10-06 21:08:16 +05:00
Shinovon e00e734ed3 Symbian: Improve dialog implementation 2025-10-06 21:03:22 +05:00
Shinovon 0ad706c3a9 Symbian: small refactor, fix winscw build 2025-10-06 21:03:21 +05:00
UnknownShadow200 0f95e40c83 Make content offset x/y configurable and increase default one for xbox 2025-10-04 08:23:55 +10:00
UnknownShadow200 68d6711d84 Fix cinematic bars not rendering properly on consoles 2025-10-04 08:09:31 +10:00
UnknownShadow200 4bf2e4ed83 Direct3D9: Move half pixel offset into matrix transform instead 2025-10-03 07:28:15 +10:00
UnknownShadow200 570ce0194e Wii U: try to draw to gamepad too 2025-10-02 20:22:02 +10:00
UnknownShadow200 6783b31260 Wii U: try to fix fog 2025-10-02 20:13:35 +10:00
UnknownShadow200 a99ef867bc Http: Fix ampersands being UTF8 converted in URLs, fix non-web URL redirects not remapping hosts 2025-10-02 07:22:03 +10:00
UnknownShadow200 29d34e7e86 3DS: Fix UI being affected by fog 2025-10-01 19:45:18 +10:00
UnknownShadow200 dc76a18275 Wii/Gamecube: Start splitting up code 2025-10-01 18:10:43 +10:00
UnknownShadow200 fa0f30e5ef 3DS: Fix not working anymore 2025-10-01 17:47:12 +10:00
UnknownShadow200 6ad23ed20b Simplify plugin writing a little bit 2025-09-30 21:44:39 +10:00
UnknownShadow200 5aa5eeb992 3DS: Minor code simplification 2025-09-30 21:26:37 +10:00
UnknownShadow200 42f472107d Wii U: Try to fix not working on real hardware
GPU doesn't allow reading two constants from constant registers in one instruction
2025-09-29 20:12:44 +10:00
UnknownShadow200 5d58a71618 Wii U: try to fix wrong texture coordinates input/output 2025-09-29 19:40:05 +10:00
UnknownShadow200 191abbad87 Android: Compile ARMv7 build for vfp3-D16 FPU, should fix crashing on Tegra 2
This shouldn't matter too much in practice, as ClassiCube does not make heavy use of doubles. The extra 16 doubles tended to get used for inline 8/16 byte mem load/store operations, but this can also be done with the regular CPU's load/store multiple instructions
2025-09-26 08:44:34 +10:00
UnknownShadow200 432885fb0b Matrix_Mul: Save 10-40 instructions 2025-09-25 07:08:09 +10:00
UnknownShadow200 e39c5d55d3 Cancel queued skin download if no more entities are using the skin
Also transfer skin download responbitilites if entity downloading a skin stops using that skin, but there is at least one other entity using that skin
2025-09-23 22:28:05 +10:00
UnknownShadow200 61beafa967 Avoid storing two texture IDs in entity struct 2025-09-23 20:13:57 +10:00
UnknownShadow200 c1fee0c161 PSP: Save 70kb 2025-09-23 07:05:15 +10:00
UnknownShadow200 6a05c82952 GC/Wii: WIP using custom graphics API 2025-09-22 06:41:13 +10:00
UnknownShadow200 7ccfdf0660 Dreamcast: B+L/R switch hotbar slot, WIP screenshot support 2025-09-21 21:04:27 +10:00
UnknownShadow200 f1d8dedd6f Dreamcast: Try to fix crashes when playing music 2025-09-21 09:07:10 +10:00
UnknownShadow200 0efd939a2d Dreamcast: Include thread name in crash dump 2025-09-19 19:12:00 +10:00
UnknownShadow200 2e7a5c9897 PSP: Use swizzled textures 2025-09-19 07:32:02 +10:00
UnknownShadow200 514b10f662 PSP: Save 1 GPU command per draw call 2025-09-19 06:48:23 +10:00
UnknownShadow200 deb7538384 PSP: WIP implementing raw GPU command API 2025-09-18 21:19:46 +10:00
UnknownShadow200 1f58533518 GC/Wii: Use twiddled style calculation for texture upload 2025-09-18 07:53:53 +10:00
UnknownShadow200 c25b0053d0 fix 2025-09-17 20:12:51 +10:00
UnknownShadow200 4712bf5909 Simplify pre processing of vertices 2025-09-17 20:04:57 +10:00
UnknownShadow200 f09f7d49e0
Merge pull request #1437 from oorange32/oorange32-wince-support
WindowsCE support
2025-09-17 18:55:11 +10:00
UnknownShadow200 5cd53f2017 OpenGL: Simplify RGBA texture conversion 2025-09-17 06:46:33 +10:00
UnknownShadow200 b7346799d3
Merge pull request #1432 from tenox7/hpux11iv3
hpux 11iv3 fixes
2025-09-17 06:28:10 +10:00
UnknownShadow200 d3c19e573d
Merge pull request #1421 from TheRealPear/ios-filesharing
Enable file sharing in Files app
2025-09-17 06:16:05 +10:00
UnknownShadow200 431a9c89e8
Merge pull request #1435 from coyoteclan/patch-1
Correct a typo in readme.md
2025-09-17 05:49:49 +10:00
UnknownShadow200 375ba90589 Really really fix workflows 2025-09-16 17:44:15 +10:00
UnknownShadow200 6af12744ff Really fix workflows 2025-09-16 17:29:56 +10:00
UnknownShadow200 7c9490116a workflow fixes 2025-09-16 17:14:16 +10:00
UnknownShadow200 20890533d5
Merge pull request #1436 from TheComputerGuy96/saturn-ds-build-fix
Saturn/NDS build fixes
2025-09-16 17:04:57 +10:00
oorange32 1fbf50dea4 add WinCE support 2025-09-16 15:51:04 +09:00
Echo J c0bb55a83b Saturn/NDS: Make ELF artifacts appear in Actions build 2025-09-16 09:15:36 +03:00
Echo J a6398b12fa Saturn: Remove the problematic dependency fetch 2025-09-16 09:06:48 +03:00
Echo J d606a2c7d3 Saturn: Update the yaul image version 2025-09-16 09:06:48 +03:00
Echo J 19f625947b NDS: Fix level of header include paths 2025-09-16 09:06:33 +03:00
Echo J fab5b4a5aa NDS: Update the old Makefile paths 2025-09-16 08:59:57 +03:00
TMK 95d311e9bf
optimized
Convert vertices to fixed-point format beforehand
Perform clipping calculations while retaining quads
2025-09-16 13:29:17 +09:00
UnknownShadow200 9283b69c00 Xbox: Keep generated vs/ps ASM files 2025-09-16 07:34:35 +10:00
TMK d006955398
latest version
correcting the size for memset
early clipping check
2025-09-15 17:10:37 +09:00
Mechamorph 31faecde59
Correct a typo in readme.md 2025-09-14 16:51:12 +05:00
UnknownShadow200 c6fada2c1f 3DS: Refactor vblank handling 2025-09-14 07:39:15 +10:00
みかみかん d437434cf9
Add files via upload
a new software renderer using fixed-point arithmetic for devices without an FPU
2025-09-14 00:18:21 +09:00
UnknownShadow200 4003ff7d6b 3DS: Send less commands per draw 2025-09-13 08:18:52 +10:00
UnknownShadow200 94768aa089 3DS: Make vertex shaders slightly more efficient (save one instruction, share uniforms across programs) 2025-09-12 21:54:43 +10:00
UnknownShadow200 34c1766007 Wii U: Less reliance on GX2R 2025-09-11 20:45:08 +10:00
UnknownShadow200 34ad75f2c9 Make L default to Place block control everywhere
Switch: Also detect ZL/ZR
2025-09-11 06:36:03 +10:00
UnknownShadow200 2b342b55bd PS2/Xbox/Xbox 360: Change L to place and R to delete for consistency with console editions
NDS: B+L/R also move hotbar too
2025-09-10 22:02:29 +10:00
UnknownShadow200 71991c2275 Gamecube: Change dpad to just be fly up/down hotbar left/right
Also make it possible for other platforms to override
2025-09-10 21:43:33 +10:00
UnknownShadow200 d2a0a597b9 GameCube/Wii: For gamecube controller, make B+Dpad L/R to hotbar L/R 2025-09-10 07:51:30 +10:00
UnknownShadow200 18a1f45ee4 Xbox: Try to fix texture warping 2025-09-09 21:29:14 +10:00
UnknownShadow200 39c266af1b Xbox: Fix log output on Xemu 2025-09-09 20:28:35 +10:00
Antoni Sawicki 3a762a5311 -lXhp11 not needed 2025-09-09 02:55:28 -07:00
Antoni Sawicki fc9f9c011b fix hpux colormap 2025-09-09 02:41:45 -07:00
Antoni Sawicki 5774e290c5 add casts to Graphics_GL1.c to make -Werror happy 2025-09-09 02:39:54 -07:00
Antoni Sawicki d84ad841f1 use hp opengl 2025-09-09 02:38:03 -07:00
Antoni Sawicki 873cc1ca67 update readme for hpux 2025-09-09 02:17:31 -07:00
Antoni Sawicki 5918ad85e6 restore compiler warnings 2025-09-09 02:15:56 -07:00
UnknownShadow200 f7dbe57966 PS3: More manual GPU commands 2025-09-08 20:37:39 +10:00
Antoni Sawicki 60c7da3cfb add CC_BUILD_GL11_FALLBACK for hpux 2025-09-08 02:18:17 -07:00
UnknownShadow200 cefb338e02 PS3: Write more GPU commands directly 2025-09-08 06:48:14 +10:00
Antoni Sawicki d6e7c9b41d hpux 11iv3 fixes, use mesa 2025-09-07 03:36:43 -07:00
UnknownShadow200 0d4b271fed Fix crashing on some 32 bit x86 systems 2025-09-07 19:40:47 +10:00
UnknownShadow200 f4cf292899 Disable processor specific enhancements when compiling BearSSL with win9x build 2025-09-07 13:41:28 +10:00
UnknownShadow200 da0b7c8484 NDS: Fix compiling and use own folder 2025-09-07 12:40:09 +10:00
UnknownShadow200 f68f7ffaf0 PS3: WIP on writing GPU commands directly 2025-09-07 12:15:57 +10:00
UnknownShadow200 8c4d2db9d1 Alter dos makefile so that windows and dos executables can exist side by side 2025-09-06 22:28:39 +10:00
UnknownShadow200 df692aeaba Xbox: Use slightly more memory efficient way of performing draw calls 2025-09-04 07:54:05 +10:00
UnknownShadow200 06da3877db Xbox: Fix going in-game with splitscreen, going back, then going in-game with singleplayer, leaving draw region messed up 2025-09-04 07:09:11 +10:00
UnknownShadow200 e88058ed37 Xbox: Prefer writing raw GPU commands directly 2025-09-03 18:49:12 +10:00
UnknownShadow200 26dc506d53 Xbox: Clouds now move 2025-09-02 21:28:36 +10:00
UnknownShadow200 04df26a574 Xbox: Avoid uploading shader repeatedly, just change run address 2025-09-02 21:15:52 +10:00
UnknownShadow200 f5541e7518 Xbox: Simplify clearing slightly 2025-09-02 20:51:26 +10:00
UnknownShadow200 f701f9a9cb Xbox: Start tidying up NV2A code 2025-09-02 19:50:50 +10:00
UnknownShadow200 5cd4d7854a Make sapling physics more accurate (thanks Beyond5D) 2025-09-01 19:02:48 +10:00
UnknownShadow200 8a8df0bfa4 Convert unicode to code page 437 for JSON output, partially addresses #1428 2025-08-31 07:50:26 +10:00
UnknownShadow200 d826461573 PS4: Bring makefile up to date 2025-08-29 19:51:13 +10:00
UnknownShadow200 53973d3505 Add missing UWP port files 2025-08-29 16:30:35 +10:00
UnknownShadow200 70b1d1a87a Provide common null/stub platform socket and threading backends 2025-08-27 22:13:23 +10:00
UnknownShadow200 359643af24 And don't forget memcmp 2025-08-27 18:02:39 +10:00
UnknownShadow200 3a66c9b359 BearSSL: Support relying on classicube's builtin mem functions when compiling in NO_STDLIB mode 2025-08-27 07:42:53 +10:00
UnknownShadow200 980a27427d Xbox 360: Try to fix clear colour 2 2025-08-26 07:02:31 +10:00
UnknownShadow200 edc2e32b3f Xbox 360: Try to fix clear colour 2025-08-26 06:28:18 +10:00
UnknownShadow200 e49446df61 Xbox 360: Try disabling some functionality 2025-08-25 21:30:00 +10:00
UnknownShadow200 5e4443a1f9 Amiga: WIP vbcc support 2025-08-24 18:05:28 +10:00
UnknownShadow200 afdfa29547 Atari ST: In-game technically renders 2025-08-24 15:50:08 +10:00
UnknownShadow200 28ef8faaa1 Atari ST: Launcher graphics render 2025-08-24 07:08:07 +10:00
UnknownShadow200 aabc23348b WIP Atari ST port 2025-08-23 23:34:37 +10:00
UnknownShadow200 dfb014d4a8 Mac classic: Use softmin GPU backend for 68k build 2025-08-23 13:38:58 +10:00
UnknownShadow200 aa175c75ac Fix platforms without networking support not compiling 2025-08-23 12:40:12 +10:00
UnknownShadow200 a3e54ebcf3 Avoid calling strlen with BearSSL 2025-08-23 12:22:54 +10:00
Pear ac4dfe9df7 Enable file sharing in Files app 2025-08-21 22:42:10 -04:00
UnknownShadow200 7bb3943467 BearSSL: Remove some unneeded defines 2025-08-22 07:20:51 +10:00
UnknownShadow200 4c1919cdee iOS: Enable users to access app's Documents folder 2025-08-22 07:00:14 +10:00
UnknownShadow200 321a829243 iOS/macOS: Add other game mode keys to info.plist 2025-08-20 23:32:01 +10:00
UnknownShadow200 4b01fa8556
Merge pull request #1418 from iblowmymind/iblowmymind-patch-2
Support Game Mode for macOS
2025-08-20 18:33:17 +10:00
blue 05c44ceb91
Add application category for iOS Info.plist 2025-08-20 11:27:00 +03:00
blue 2bb57c9317
macOS: Add application category type to Info.plist
Allows Game Mode to be enabled when playing ClassiCube
2025-08-20 10:52:05 +03:00
UnknownShadow200 6e5474959f macOS: Fix makefile compiled builds not compiling due to not linking to Security framework 2025-08-20 07:43:34 +10:00
UnknownShadow200 dc44cab8be GBA/32x: Increase free RAM by 18 kb and reduce binary size by 45/66 kb by going straight in-game rather than via the launcher 2025-08-19 20:13:45 +10:00
UnknownShadow200 af6cbc9b9e Try to simplify non updater/dynamic lib platform support 2025-08-19 19:31:11 +10:00
UnknownShadow200 17d7f82ffd 32x: Fix world being culled due to compiler bug 2025-08-17 20:44:22 +10:00
UnknownShadow200 2c11be635d GBA/32x: Render world without edge/horizon 2025-08-17 20:06:26 +10:00
UnknownShadow200 4fb5cec968 GBA: Now down to ~0.94 seconds a frame 2025-08-17 18:46:17 +10:00
UnknownShadow200 cbba51ddce GBA: Now takes 1.1 seconds to render the frame 2025-08-17 18:04:17 +10:00
UnknownShadow200 433f7cfa49 GBA: Frame time down to 7.3 seconds 2025-08-17 10:19:15 +10:00
UnknownShadow200 5efdf12738 GBA/32x: Hardcode alpha of 128, saves 10 milliseconds per frame in test case 2025-08-17 10:03:49 +10:00
UnknownShadow200 4cadc0009d GBA/32x: Implement control scheme making it technically possible to move the camera 2025-08-16 07:24:50 +10:00
UnknownShadow200 862519b051 GBA/32x: Loading screen render time improved from ~19 to ~1.5 seconds 2025-08-15 21:19:46 +10:00
UnknownShadow200 c6abd08689 Xbox: try to fix can't go back to launcher menu 2025-08-15 18:25:08 +10:00
UnknownShadow200 725b5d5973 Xbox: try to increase deadzone, and fix sprites always being drawn solidly 2025-08-15 17:57:57 +10:00
UnknownShadow200 ef1decc6ad 32x: Non working WDT timer for measuring elapsed time 2025-08-15 07:45:45 +10:00
UnknownShadow200 9c9626b502 Saturn: Use WDT for measuring elapsed time 2025-08-15 07:03:24 +10:00
UnknownShadow200 af20525b18 Fix buffer overflow if a plugin calls Chat_Add multiple times with very long messages that have URLs in them (Thanks SpiralP) 2025-08-13 21:21:41 +10:00
UnknownShadow200 873c3a5310
Merge pull request #1412 from calebabutler/fix/msvc-instructions
Fix instructions for MSVC command-line build
2025-08-10 22:59:43 +10:00
Caleb Butler fa8ab487a1 Fix instructions for MSVC command-line build 2025-08-09 12:43:32 -04:00
UnknownShadow200 c91641b5cd Tidy up timer code a little bit 2025-08-09 21:10:08 +10:00
Goodlyay 2d32791f35 Fix wrong entity PushStrength field being used, make network value fixed-point decimal 2025-08-07 03:03:12 -07:00
Goodlyay 79b2e7b474
Merge pull request #1410 from ddinan/push-control
Add PushStrength to EntityProperty v2
2025-08-07 04:46:48 -04:00
UnknownShadow200 529341fd7d Dreamcast: Use blind dialling, partially addresses #1409 2025-08-07 07:25:39 +10:00
UnknownShadow200 9d2b38d972 Add dedicated min soft GPU backend
Intended for slow FPU less systems like GBA/32x
2025-08-06 19:07:05 +10:00
Derek 38ef3678c6 Add PushStrength to EntityProperty 2025-08-06 17:52:11 +10:00
UnknownShadow200 8198a50fd6
Merge pull request #1408 from shinovon/10
Symbian: Improve PIPS version checking
2025-08-06 07:37:52 +10:00
UnknownShadow200 d28bf267a1 Make linux/BSD workflows treat warnings as errors 2025-08-04 20:57:32 +10:00
Shinovon ef1b8fe86d Symbian: Improve PIPS version checking 2025-08-04 04:32:28 +05:00
UnknownShadow200 7c326bb2a2 Fix TinyC compilation 2025-08-01 07:13:59 +10:00
UnknownShadow200 8b11e8b5c8
Merge pull request #1406 from DrinkyBird/sdl-gl-attributes
SDL: Set GL attributes before creating the window
2025-07-31 07:40:18 +10:00
Sean Baggaley fae6c725ec SDL: Set GL attributes before creating the window
This is required as on some platforms the attributes are needed at
window creation time. For example, EGL uses some attributes like bit depths
as part of the surface (which SDL creates alongside the window),
and not the context.
2025-07-30 22:10:07 +01:00
UnknownShadow200 21c092bd80 Make primary UI button smaller on small displays 2025-07-30 19:55:42 +10:00
UnknownShadow200 92b899f5bf
Merge pull request #1404 from shinovon/9
Symbian-specific fixes again
2025-07-29 20:10:00 +10:00
UnknownShadow200 b0ed2e02de Linux: Use versioned libcrypto .so as default
Also fix overallocating memory for 4bpp PS2 textures
2025-07-28 07:53:53 +10:00
UnknownShadow200 7c94970b8d Move Wii U to new makefile 2025-07-26 21:37:23 +10:00
UnknownShadow200 6dab29e62d Fix 32 bit windows build crashing due to obscure possible compiler bug
It was crashing with 'attempt to read from 0xFFFFFF', despite the fact that the faulting instruction was 'load XMM7 from ESP-0x10' and ESP was normal values like 0x01E3A048

Also, compiling at -O0 instead of -O1 didn't crash. So just disable the code, because working out exactly why it is crashing would take too much work
2025-07-26 10:50:43 +10:00
Shinovon 9b1af5d3af Try to achieve better performance on MBX by disabling things 2025-07-26 02:40:44 +05:00
UnknownShadow200 663a8ef24b More specific crash messages for null pointer reads/writes on Windows and POSIX systems 2025-07-25 07:26:43 +10:00
Shinovon aa11859bda Symbian: rewrite main loop 2025-07-24 12:54:13 +05:00
Shinovon e6644af301 Fix performance drop when rendering translucent on PowerVR MBX 2025-07-24 08:15:58 +05:00
UnknownShadow200 6f6eba3d2c
Merge pull request #1402 from shinovon/7
Check glGetError after glBufferData
2025-07-23 07:00:21 +10:00
UnknownShadow200 579aa4f6d8
Merge pull request #1403 from shinovon/8
Symbian: fix gcce builds not running on s60v3
2025-07-22 20:44:16 +10:00
UnknownShadow200 06cb87f773 N64: Save a few cycles here and there (down to 7.5 ms) 2025-07-22 20:35:03 +10:00
Shinovon d05f5cc34d Check glGetError only on Symbian 2025-07-22 13:40:18 +05:00
Shinovon 57714203de Symbian: fix gcce builds not running on s60v3 2025-07-22 13:03:46 +05:00
Shinovon dc25f28774 Check glGetError after glBufferData 2025-07-22 10:50:53 +05:00
UnknownShadow200 21b4fe79aa N64: WIP on in-place vertex list 2025-07-21 20:48:17 +10:00
UnknownShadow200 6658154f2d N64: Use optimised async triangle drawing (down to 7.8 ms on RSP) 2025-07-20 17:09:11 +10:00
UnknownShadow200 d547f6e0a5 N64: Optimise T&L code further (now down to 9.8 ms) 2025-07-20 10:53:03 +10:00
UnknownShadow200 da9b8209d6 N64: Optimise T&L further (complex world down to 10.3 ms) 2025-07-19 20:27:29 +10:00
UnknownShadow200 af4494284d N64: Save 3 cycles in RSP T&L loop 2025-07-19 14:53:42 +10:00
UnknownShadow200 00a1a49405 N64: Slightly optimise clipping path 2025-07-19 10:35:28 +10:00
UnknownShadow200 952824356e N64: Optimise clipping path (test world back to ~11.0 ms again) 2025-07-18 23:32:38 +10:00
UnknownShadow200 9b4e0ebd80 N64: Fix optimised RSP code (at the cost of increasing test world from 11.1 to 11.4 ms) 2025-07-18 23:19:34 +10:00
UnknownShadow200 b4989b62a1 Revert "N64: Optimise RSP transform code, reduces time from ~13.6 to ~11.1 ms on a moderately complex world with ~3,500 quads"
This reverts commit 9f93969211.
2025-07-18 22:26:16 +10:00
UnknownShadow200 ecb058079c N64: Slightly improve texture precision 2025-07-18 22:24:52 +10:00
UnknownShadow200 9f93969211 N64: Optimise RSP transform code, reduces time from ~13.6 to ~11.1 ms on a moderately complex world with ~3,500 quads 2025-07-18 21:43:22 +10:00
UnknownShadow200 19a4cb61ea N64: WIP texture filtering 2025-07-17 19:53:11 +10:00
UnknownShadow200 a52fdf90e7 N64: Save 68 RCP cycles per quad 2025-07-16 22:12:19 +10:00
UnknownShadow200 abbfe4181b N64: Minorly simplify RSP texture size multiply 2025-07-15 21:12:33 +10:00
UnknownShadow200 157c538a08 Fix virtual keyboard so that it can get allocated as a 4bpp texture 2025-07-14 22:49:47 +10:00
UnknownShadow200 027c6a8fb7 3DS: allow write access to VRAM 2025-07-14 19:47:50 +10:00
UnknownShadow200 99830141db PS2: More accurately allocate textures aligned to pages 2025-07-14 19:13:26 +10:00
UnknownShadow200 3ff478f3ef PS2: Work on supporting 4HL/4HH pixel formats 2025-07-14 07:56:47 +10:00
UnknownShadow200 b0f2597e38 PS3: Redo makefile 2025-07-13 23:25:49 +10:00
UnknownShadow200 8e3eebe483 PS2: Refactor VRAM allocation 2025-07-13 22:03:29 +10:00
UnknownShadow200 c44d33c4e1 PS2: Implement support for uploading non power of 2 UI textures 2025-07-13 18:05:33 +10:00
UnknownShadow200 ad229da788 Fix loading default texture pack twice if it isn't default.zip 2025-07-13 16:45:15 +10:00
UnknownShadow200 18bd436b39 Fix blockalloc not allocating last entry 2025-07-13 11:59:51 +10:00
UnknownShadow200 f19bf483be Fix blockalloc_total_free returning too many free blocks, other small tidyups 2025-07-12 21:34:33 +10:00
UnknownShadow200 085d4979ca
Merge pull request #1381 from shinovon/eikon-2
Symbian: rewrite to eikon framework
2025-07-12 08:18:01 +10:00
UnknownShadow200 167f501a1a N64: Still enable Z when depth write is enabled 2025-07-11 23:09:30 +10:00
UnknownShadow200 07026d593c Refactor CopyTextureData to allow customising rows/pixelsPerRow 2025-07-11 19:24:26 +10:00
UnknownShadow200 3ca40dae17 Vita: Change DPAD to instead be for flying up/down and cycling hotbar slot
3DS: Use optimised twiddled index calculation
2025-07-10 23:28:01 +10:00
UnknownShadow200 2741a33a15 3DS: Try to use VRAM for textures when possible 2025-07-10 22:20:28 +10:00
UnknownShadow200 403e466ac2 Refactor Saturn makefile, fix PSP build 2025-07-10 20:12:33 +10:00
Shinovon c9240a1880 Symbian: rewrite to eikon framework 2025-07-10 12:51:06 +05:00
UnknownShadow200 221ee0303c PSP: Fixup makefile 2025-07-10 07:20:21 +10:00
UnknownShadow200 cedd6ffae6 Refactor main loop to be less hardcoded for webclient 2025-07-09 20:06:58 +10:00
UnknownShadow200 85f1b4c5c5 Move MSDOS and webclient backend files out 2025-07-09 18:56:08 +10:00
UnknownShadow200 01c2e1c3fd Refactor main loop somewhat 2025-07-09 07:53:59 +10:00
UnknownShadow200 23aee471e5 Vita: Change binds so that L is place and R is delete, remove back screen behaviour 2025-07-09 06:58:35 +10:00
UnknownShadow200 28a2a74a97 Saturn: Properly manage VRAM allocations for textures 2025-07-08 22:29:15 +10:00
UnknownShadow200 f22810fe54 Updates are now over SSL 2025-07-07 23:10:16 +10:00
UnknownShadow200 e2d09bdcf5
Merge pull request #1395 from ClassiCube/WinBearSSL
Switch Windows build to use BearSSL
2025-07-07 22:58:12 +10:00
UnknownShadow200 baae55f1eb Fix crashing 2025-07-07 22:56:36 +10:00
UnknownShadow200 b23a91720e Check dwErrorStatus, which breaks it 2025-07-07 22:47:35 +10:00
UnknownShadow200 f2bf473e08 WIP on loading crypt funcs dynamically 2025-07-07 22:30:28 +10:00
UnknownShadow200 c1b6d369b2 Merge branch 'master' into WinBearSSL 2025-07-07 22:19:33 +10:00
UnknownShadow200 e995e54168 Partially works 2025-07-07 21:49:52 +10:00
UnknownShadow200 51d0cd7779 Include BearSSL in MSVC project 2025-07-07 20:57:11 +10:00
UnknownShadow200 8b6c4b97e6 Windows: Fix OpenGL build not working with builtin 1.1 software renderer anymore 2025-07-06 21:34:59 +10:00
UnknownShadow200 d6120b3c83 Refactor game/launcher loops a bit 2025-07-06 19:38:34 +10:00
UnknownShadow200 ae2d73cf54 Consoles: Avoid checking and uploading unused portions of UI textures on some consoles 2025-07-06 09:39:59 +10:00
UnknownShadow200 e41c2b15fb Dreamcast: Simplify GPU code 2025-07-05 23:47:24 +10:00
UnknownShadow200 863906766f Dreamcast: Only allocate necessary VRAM rows for UI textures
Doesn't usually save that much, but does make UI textures a bit quicker to upload and also makes virtual keyboard texture ~24 kb less
2025-07-05 21:03:14 +10:00
UnknownShadow200 8dd99cb11c WIP on non power of two texture upload support 2025-07-05 13:24:10 +10:00
UnknownShadow200 f23afac745 PS2: Fix onscreen keyboard not appearing 2025-07-04 23:19:18 +10:00
UnknownShadow200 1972cbe080 WIP moving Windows to BearSSL 2025-07-04 22:11:22 +10:00
UnknownShadow200 c225539ba7 Fix workflows whoops 2025-07-04 07:23:11 +10:00
UnknownShadow200 389fa08ebb Avoid needing extra include directory for BearSSL 2025-07-04 07:09:06 +10:00
UnknownShadow200 73397d3714 Try to fix the Android build 2025-07-03 22:43:50 +10:00
UnknownShadow200 a7705d16e5 Android: Switch to BearSSL 2025-07-03 22:38:09 +10:00
UnknownShadow200 9b55b3a958 SoftGPU: Optimise for when fallback textures are used 2025-07-02 20:54:56 +10:00
UnknownShadow200 b1905750be Backends asides from SoftGPU can declare their lack of fog support 2025-07-02 20:12:00 +10:00
UnknownShadow200 6dd9d26846 Move OpenGL 1.1 specific code into own backend file 2025-07-02 19:59:25 +10:00
UnknownShadow200 48bf31f86f Wii/GC: Clear framebuffer initially to grey 2025-07-02 19:30:49 +10:00
UnknownShadow200 b0370d117c GBA: Timing semi works now 2025-07-01 07:23:55 +10:00
UnknownShadow200 fa2a67fb3b
Merge pull request #1394 from shinovon/6
Symbian audio fixes
2025-06-30 21:28:46 +10:00
UnknownShadow200 c3e4d73341 Try again to fix macOS compiling 2025-06-30 21:18:44 +10:00
UnknownShadow200 3ca94e8a33 Attempt to fix macOS builds 2025-06-30 20:39:54 +10:00
UnknownShadow200 1de9fa76f9 macOS: Switch to BearSSL 2025-06-30 20:09:58 +10:00
UnknownShadow200 c0cf269159 iOS: Also use BearSSL 2025-06-30 18:58:36 +10:00
Shinovon bae80d369f Symbian: audio fixes 2025-06-30 09:15:49 +05:00
UnknownShadow200 74bb2a5fb3 GBA: Fix so it at least runs as a slideshow now 2025-06-29 20:36:29 +10:00
UnknownShadow200 6980a08090 Fix Visual Studio project and fix sounds not working properly on Symbian 2025-06-29 17:46:19 +10:00
UnknownShadow200 fa687e9e99 BearSSL: Use AES big backend when AES X86 NI isn't used 2025-06-29 14:39:39 +10:00
UnknownShadow200 c440ff84cc Further console fixups 2025-06-29 13:55:33 +10:00
UnknownShadow200 62ef0198c5 Redo more console makefiles 2025-06-29 12:11:17 +10:00
UnknownShadow200 ffb3964b10 Fix 32x/GBA builds not compiling 2025-06-28 22:36:57 +10:00
UnknownShadow200 155d7b2e07 Hopefully fix builds finally this time 2025-06-28 22:17:22 +10:00
UnknownShadow200 5fb24f6653 Start tidying up backend files a bit 2025-06-28 21:59:45 +10:00
UnknownShadow200 08dabad8ca Remove more unused code 2025-06-28 21:07:46 +10:00
UnknownShadow200 4f282b4f8b Fix linux build 2025-06-28 15:57:03 +10:00
UnknownShadow200 be14bbe80c Really try to fix builds 2025-06-28 15:42:17 +10:00
UnknownShadow200 51be963ac8 Fix builds 2025-06-28 15:27:13 +10:00
UnknownShadow200 f95507b448
Merge pull request #1391 from ClassiCube/SSL4
Start moving more platforms over to using own HTTP client + BearSSL + OS specific fallback certificate validation
2025-06-28 15:14:54 +10:00
UnknownShadow200 8b4c36a9ec Fixup workflow files 2025-06-28 15:11:14 +10:00
UnknownShadow200 8ce38175f5 Drop 3DES and other unneeded functions 2025-06-28 13:36:45 +10:00
UnknownShadow200 9c6895247d Remove more unused BearSSL functions 2025-06-28 10:16:10 +10:00
UnknownShadow200 c24ced908c Fix NetBSD build, more accurate readme instructions for BSD systems 2025-06-27 22:02:08 +10:00
UnknownShadow200 9069b33ded Use BearSSL + builtin HTTP on more posix platforms 2025-06-27 20:46:03 +10:00
UnknownShadow200 a8daedc480 Compiles now 2025-06-27 20:06:22 +10:00
UnknownShadow200 32e235634a WIP dynamic linking 2025-06-27 07:59:32 +10:00
UnknownShadow200 058352442e OpenSSL cert verifier works 2025-06-26 22:14:10 +10:00
UnknownShadow200 cc564500c1 Tidy up certificate API 2025-06-26 07:57:45 +10:00
UnknownShadow200 4eb7eb412c Xbox: Fix not using built in fabsf/fsqrtf 2025-06-26 06:56:12 +10:00
UnknownShadow200 5d0c9295ca Redo xbox makefile 2025-06-25 22:04:08 +10:00
UnknownShadow200 3f9627b776 Refactor some console makefiles 2025-06-25 19:34:18 +10:00
UnknownShadow200 cce29a87e1 Fixes for last commit 2025-06-25 18:43:04 +10:00
UnknownShadow200 215ecac933 Move main functions into respective platform backend files 2025-06-25 18:33:00 +10:00
UnknownShadow200 7c71e7dfe3 OpenSSL test 2025-06-24 22:23:03 +10:00
UnknownShadow200 de11785597 WIP certificate validation 2025-06-24 18:33:59 +10:00
UnknownShadow200 89b6d8ec59 Start drafting up cert validator backend API 2025-06-24 07:55:49 +10:00
UnknownShadow200 7c5229096f Change crash message if possibly due to a third party plugin 2025-06-23 22:45:00 +10:00
UnknownShadow200 273f249ec4 Further makefile tidyup 2025-06-23 22:25:41 +10:00
UnknownShadow200 2d1b480d68 Always compile with icon 2025-06-23 19:18:32 +10:00
UnknownShadow200 f7580f109a Simplify makefile to make it easier to integrate third party libraries, and unify build directory 2025-06-23 07:46:29 +10:00
UnknownShadow200 5ee12395a7 Dreamcast: Slightly optimise clipping 2025-06-22 16:11:22 +10:00
UnknownShadow200 7a532a8662 Save ~7 KB memory in non lowmem builds 2025-06-20 20:53:00 +10:00
UnknownShadow200 7330da3e5a DS: Sacrifice fog so UI doesn't clip so much with terrain 2025-06-20 19:26:43 +10:00
UnknownShadow200 c8377c7797 SSL: Ignore expired certificates on consoles when RTC isn't properly set
This has been a relatively common issue experienced by users on older consoles, due to RTC not being set properly
2025-06-19 07:32:25 +10:00
UnknownShadow200 8dad7b377d PS2: Fix tiny textures not being loaded properly 2025-06-18 07:23:48 +10:00
UnknownShadow200 3f8f16e711 Bugfixes 2025-06-10 22:13:05 +10:00
UnknownShadow200 6397a5a455
Merge pull request #1385 from ClassiCube/Audio3
Break up Audio api into sound and stream context APIs
2025-06-10 21:56:52 +10:00
UnknownShadow200 0b3a20be2d Some fixes and tidyup 2025-06-10 21:51:48 +10:00
UnknownShadow200 dbec9e8c76 WIP refactoring into separate sound and stream contexts 2025-06-09 10:57:28 +10:00
UnknownShadow200 c4a9dfb191 WIP refactoring audio, part 2 2025-06-08 12:59:00 +10:00
UnknownShadow200 d1cdb915f4 WIP refactoring audio 2025-06-08 07:43:25 +10:00
UnknownShadow200 46d2e4124e PS2: Fix max texture size being wrong 2025-06-07 23:02:13 +10:00
UnknownShadow200 2751661a4e PS2: Preparation for refactoring palette logic 2025-06-07 18:21:18 +10:00
UnknownShadow200 dbaa2e5e5d PS2: Use 4bpp indexed textures in some cases 2025-06-07 13:45:30 +10:00
UnknownShadow200 a0c9da6712
Merge pull request #1378 from shinovon/4
Add symbian to readme
2025-06-07 07:01:56 +10:00
UnknownShadow200 148d2debcb Minorly optimise palette calculation functions 2025-06-06 19:31:54 +10:00
UnknownShadow200 4405515c73 Implement Audio_Pause for null audio backend 2025-06-06 07:08:12 +10:00
UnknownShadow200 926a286277 Audio: Allow backends to override sounds loading 2025-06-05 21:22:48 +10:00
UnknownShadow200 ecd3302e74 PS1: Switch to direct makefile 2025-06-05 07:39:07 +10:00
UnknownShadow200 d13f1114c6 PS1: Slightly optimise texture loading 2025-06-04 22:28:25 +10:00
UnknownShadow200 d9320945ea Refactor audio logic a bit 2025-06-04 19:47:20 +10:00
UnknownShadow200 e4fa7264ba Glass should have metal step sound like classic 2025-06-04 18:12:34 +10:00
UnknownShadow200 33d73d9f4d
Merge pull request #1380 from shinovon/symbian-sound
Symbian: implement audio backend
2025-06-04 17:26:07 +10:00
Shinovon 0b102ee2c1 Symbian: Implement audio backend 2025-06-03 17:22:33 +05:00
UnknownShadow200 a4c8363d60 PS2: Use 24 bit instead of 32 bit for framebuffer 2025-06-03 19:34:46 +10:00
UnknownShadow200 ce5a0aec59 Audio: Split up backends 2025-06-03 19:25:59 +10:00
UnknownShadow200 03b17f565a OpenGL: Always restore all state 2025-06-02 19:29:28 +10:00
UnknownShadow200 cdd32375c6 Dreamcast: Use paletted textures when possible, bump max vertices up by 10000 more 2025-06-02 18:27:37 +10:00
UnknownShadow200 9667f5198d
Merge pull request #1377 from shinovon/3
Symbian: fix running on s60v3
2025-06-01 12:47:27 +10:00
Shinovon 47a318cb46 Add symbian to readme 2025-06-01 07:22:25 +05:00
UnknownShadow200 c89e224050 Whoops 2025-06-01 12:00:24 +10:00
Shinovon bbcfaff705 Symbian: fix running on s60v3 2025-06-01 06:46:04 +05:00
UnknownShadow200 1eb1af9389 DOS: Launcher shows Exit button now 2025-06-01 11:36:10 +10:00
UnknownShadow200 ac5a185d1b Move towards platform behaviour flags 2025-06-01 11:09:39 +10:00
UnknownShadow200 cecb4bc1b5 Fix classic options menu not using proper layout 2025-06-01 10:52:01 +10:00
UnknownShadow200 0b40c37ccd Dreamcast: Fix V3_VIS clipping case producing wrong output 2025-06-01 07:22:30 +10:00
UnknownShadow200 72eb16bc7b PS1: Minorly optimise T&L to save a few cycles 2025-05-31 22:32:05 +10:00
UnknownShadow200 4286c2d0c1 Dreamcast: Optimise vertex TnL
not completely accurate, but in flycast ~150,000 vertices went from 29 to 44 FPS
2025-05-31 22:07:55 +10:00
UnknownShadow200 f082d17ee4 Dreamcast: Fix not using second store queue 2025-05-31 20:18:58 +10:00
UnknownShadow200 ee2e521f5d Dreamcast: Optimise clipping slightly 2025-05-31 18:50:37 +10:00
UnknownShadow200 36785ad6db PS1: Use own GTE intrinsics 2025-05-31 13:23:47 +10:00
UnknownShadow200 7bc1d6b70a Dreamcast: Minorly optimise T&L to save a cycle 2025-05-31 12:06:47 +10:00
UnknownShadow200 35747957b7 Dreamcast: Minor optimisations 2025-05-31 09:21:39 +10:00
UnknownShadow200 56f79192e7 DOS: Fix cursor position 2025-05-29 22:45:13 +10:00
UnknownShadow200 d75c537d81 DOS: Make transfer to screen a little bit faster 2025-05-29 18:09:35 +10:00
UnknownShadow200 d5e75c8331 GameCube: Sign in works sort of 2025-05-28 07:12:02 +10:00
UnknownShadow200 9d68068d84 Fixes 2025-05-28 00:04:09 +10:00
UnknownShadow200 cb0b2fb7cf Unify IPv4 address parsing 2025-05-27 23:49:37 +10:00
UnknownShadow200 651d80b27d
Merge pull request #1371 from shinovon/2
Fix Symbian auto build
2025-05-26 18:17:18 +10:00
Shinovon c2242e06c4 Add symbian workflow timeout 2025-05-26 02:57:27 +05:00
Shinovon a1f74c4b6a Symbian: Fix auto builds 2025-05-25 15:44:21 +05:00
UnknownShadow200 d50b9db910 Consoles: Try to fix pressing enter on virtual keyboard resulting in lockup 2025-05-25 11:19:10 +10:00
UnknownShadow200 54c452de76 Dreamcast: Fix not compiling with latest KOS master 2025-05-25 11:08:16 +10:00
UnknownShadow200 4ea384e8b9 Android: Fix not being built with -fno-math-errno 2025-05-25 08:45:04 +10:00
UnknownShadow200 6a0291a9ab
Merge pull request #1368 from shinovon/1
Symbian: Implement browser opening
2025-05-25 08:24:07 +10:00
UnknownShadow200 215aca07f0
Merge pull request #1369 from Rayuck/master
Fixed type error stopping compilation
2025-05-25 08:11:28 +10:00
UnknownShadow200 72ea3e3be8 More workflows treat warnings as errors 2025-05-25 08:02:10 +10:00
Shinovon 2b7f007921 Make ConvertToUnicode void 2025-05-25 02:35:03 +05:00
Shinovon 4df5eecada Symbian: Fix ConvertToUnicode 2025-05-25 02:31:15 +05:00
Shinovon 81cb751756 Symbian: disable thumb compilation 2025-05-24 23:21:42 +05:00
Shinovon 4739372547 Symbian: Implement Process_StartOpen 2025-05-24 23:21:26 +05:00
Ray aedbcb51b2
Fixed type error stopping compilation
fixed issue where gl_indices was defined as a cc_uint16** despite "fillFunc" wanting a cc_uint16*
2025-05-24 19:00:05 +01:00
UnknownShadow200 0624680953 Symbian: Minor code tidy up 2025-05-24 07:41:43 +10:00
UnknownShadow200 7e1bd3b3ef Symbian: WIP keybind support 2025-05-23 23:21:43 +10:00
UnknownShadow200 62fd4e15ec
Merge pull request #1364 from shinovon/symbian_workflow
Symbian build workflow
2025-05-23 18:40:55 +10:00
Shinovon 54fbd6870b Replace ARMCC to GCCE 2025-05-23 12:08:29 +05:00
Shinovon c944f1ec67 Symbian workflow fixes 2025-05-23 12:08:13 +05:00
Shinovon 1fef9e1f23 Symbian build workflow 2025-05-23 11:26:18 +05:00
UnknownShadow200 396d18ff3b Symbian: Fix not compiling, fix crashing from using Waitable, drbug printing 2025-05-23 07:38:28 +10:00
UnknownShadow200 ee232ad635 Less memory leak 2025-05-22 12:39:53 +10:00
UnknownShadow200 603ac3218c wrong file pasted whoops 2025-05-22 12:35:08 +10:00
UnknownShadow200 dd28b954f4
Merge pull request #1365 from ClassiCube/SymbianSpecific
Use more symbian specific functions for platform implementation
2025-05-22 12:22:25 +10:00
UnknownShadow200 d60ff6fa51 Back to using symbian memory functions, oops 2025-05-22 12:19:26 +10:00
UnknownShadow200 549539e62f Fix 'Quit Game' not working 2025-05-22 11:15:51 +10:00
UnknownShadow200 812e86ed0b Use symbian native sync apis 2025-05-22 10:50:05 +10:00
UnknownShadow200 11b7f85cf0 Split up Platform POSIX implementation into POSIX and Symbian 2025-05-22 10:34:39 +10:00
UnknownShadow200 0b0f7f5f0a
Merge pull request #1360 from shinovon/symbian_squashed
Symbian port
2025-05-22 07:05:44 +10:00
Shinovon 47679d1788 Merge remote-tracking branch 'origin/master' into symbian_squashed
# Conflicts:
#	src/Builder.c
2025-05-20 19:28:34 +05:00
UnknownShadow200 734f9d2c6b Make temp mem allocation more reliable 2025-05-20 08:00:55 +10:00
Shinovon 467bfa00aa Symbian port squashed 2025-05-18 17:03:01 +05:00
UnknownShadow200 c7410c9792 Fix linux workflow 2025-05-18 21:37:37 +10:00
UnknownShadow200 e436de39b0 Try to fix Linux workflows, except SDL2 2025-05-17 11:56:52 +10:00
UnknownShadow200 0c08ad12e6 Fix non power of two skins not rendering properly with humanoid models 2025-05-15 21:23:07 +10:00
UnknownShadow200 12ec05879e Fix resized to power of two skin initialising the unused area with garbage, which could be seen with custom models 2025-05-15 21:12:39 +10:00
UnknownShadow200 e25df6065c
Merge pull request #1362 from alarixnia/sparc
Fix build on NetBSD/sparc64
2025-05-15 18:04:52 +10:00
nia f1afea268f Fix build on NetBSD/sparc64
Signed-off-by: Nia Alarie <nia@NetBSD.org>
2025-05-15 09:29:16 +02:00
UnknownShadow200 a1f1ce639e Better c89 compatibility 2025-05-13 19:55:11 +10:00
UnknownShadow200 9c9aa11d77 Better c89 compatibility 2025-05-12 19:54:00 +10:00
UnknownShadow200 b3d94e6abe Avoid duplicating encryption code for POSIX and Console systems 2025-05-12 19:28:29 +10:00
D 9284db5b65
Merge pull request #1361 from ddinan/toggle-block-list
Add ToggleBlockList CPE
2025-05-11 16:50:59 +10:00
Derek 2d43ecc092 Add ToggleBlockList CPE 2025-05-11 13:13:30 +10:00
UnknownShadow200 3cf0c04831 oops 2025-05-11 10:00:57 +10:00
UnknownShadow200 350fcdae1e Simplify small/tiny stack handling 2025-05-11 09:46:08 +10:00
UnknownShadow200 f7e54f4394 PS2: Ensure that empty DMA buffer can't be sent 2025-05-09 07:11:09 +10:00
UnknownShadow200 82b494203d PS2: Slightly optimise drawing by using aligned data where possible 2025-05-08 21:36:38 +10:00
UnknownShadow200 736f4fd10d PS2: Optimise textured triangle drawing
In PCSX2 test case with 70,000 vertices FPS went from 42 to 75
2025-05-08 21:12:25 +10:00
UnknownShadow200 c861410732 PS2: Fix optimised coloured vertex drawing 2025-05-08 20:08:30 +10:00
UnknownShadow200 748cc820e5 PS2: Non working slightly optimised vertex transform code 2025-05-07 21:16:20 +10:00
UnknownShadow200 e4cbe64172 PS2: Tidy up assembly 2025-05-06 06:24:20 +10:00
UnknownShadow200 751e44d399 Dreamcast: Add O_META to VMU files
ClassiCube currently manages reading/writing VMU header by itself. Future KOS versions will by default manage reading/writing the VMU header, so add O_META to opt into the old behaviour
2025-05-04 12:40:49 +10:00
UnknownShadow200 323f87dfe6 PS2: Don't pointlessly set W to 1 2025-05-04 12:17:52 +10:00
UnknownShadow200 1e414ac871 PS2: Minorly tidy up assembly 2025-05-04 08:10:47 +10:00
UnknownShadow200 8b36940221
Merge pull request #1356 from ClassiCube/N64Optim
Optimise GPU backend for N64
2025-05-02 22:02:43 +10:00
UnknownShadow200 a389afe03a Combine upload/draw 2025-05-02 20:27:31 +10:00
UnknownShadow200 db9b359b8b Optimise vertex upload 2025-05-02 07:16:29 +10:00
UnknownShadow200 b73d03b199 Simplify Draw command 2025-05-01 22:54:00 +10:00
UnknownShadow200 243af150a8 WIP on setting RDP state via own RSP overlay 2025-05-01 22:13:58 +10:00
UnknownShadow200 c6fd588088 Minorly optimise T&L 2025-05-01 06:34:07 +10:00
UnknownShadow200 06e09c3019 Simplify RGBA calculation, saves 4 bytes per vertex upload command 2025-04-30 21:10:29 +10:00
UnknownShadow200 34474b32aa Slightly simplify ST calculation 2025-04-30 20:54:35 +10:00
UnknownShadow200 3dc7b93eff Simplify triangle command calculation 2025-04-30 19:38:27 +10:00
UnknownShadow200 a44f760f31 Undo debug changes 2025-04-29 06:12:15 +10:00
UnknownShadow200 c770b22b38 Fix occasional crashes when handling redirected web requests
Specifically, if the buffer allocated for the original request content was larger than the content size of the redirected request contents
2025-04-28 22:30:07 +10:00
UnknownShadow200 61fc66f59f N64: Try to fix 2025-04-28 20:51:33 +10:00
UnknownShadow200 7db63f8570 N64 optimised, stage 5 2025-04-28 20:18:53 +10:00
UnknownShadow200 4dc90741d7 N64 optimised, stage 4 2025-04-27 13:38:39 +10:00
UnknownShadow200 1f395b9a6c N64 optimised, stage 3 2025-04-27 13:29:04 +10:00
UnknownShadow200 eba646cebb N64 optimised, stage 2 2025-04-27 12:58:17 +10:00
UnknownShadow200 3ef1f91d9d N64 optimised, stage 1 2025-04-27 08:34:04 +10:00
UnknownShadow200 182473618b Saturn: Fix can't see menus 2025-04-21 13:08:39 +10:00
UnknownShadow200 56dc6d133d Windows: Framebuffer draw now works on win32s 2025-04-17 19:15:49 +10:00
UnknownShadow200 8a4b76ec59 Windows: Better win32s compatibility 2025-04-17 07:10:00 +10:00
UnknownShadow200 fe11a70f22 PS3: Use swizzled/twiddled textures 2025-04-10 21:42:52 +10:00
UnknownShadow200 ecbe04bebe Vita: Use swizzled/twiddled textures 2025-04-10 21:17:09 +10:00
UnknownShadow200 6b8daad36d Dreamcast/Xbox: Slightly further optimise twiddled index calculation 2025-04-10 20:43:19 +10:00
UnknownShadow200 699e85799d Dreamcast/Xbox: Optimise twiddled index calculation 2025-04-09 18:47:44 +10:00
UnknownShadow200 59cf7735a3
Merge pull request #1351 from sungsphinx/sdl3-save-dialog-filters
SDL3: Fix only 1 filter type showing on save dialog
2025-04-07 22:03:16 +10:00
UnknownShadow200 16eb611825 Saturn: Further optimise T&L 2025-04-07 20:39:44 +10:00
Dexter Reed 44a0b99c76
flatpak: Upgrade runtime to 48 2025-04-06 14:30:02 +01:00
Dexter Reed 2bd057d829
SDL3: Fix only 1 filter type showing on save dialog 2025-04-06 14:29:56 +01:00
UnknownShadow200 dc108719e9 Saturn: Optimise T&L further 2025-04-05 09:13:52 +11:00
UnknownShadow200 1e048f5e81 Saturn: Optimise T&L 2025-04-04 08:19:52 +11:00
UnknownShadow200 4afe9de86b Saturn: Optimise transform function slightly 2025-04-04 07:10:04 +11:00
UnknownShadow200 d8f5f00aac Saturn: Save a few cycles in Transform function 2025-04-03 19:34:27 +11:00
UnknownShadow200 cb3383f310 Wii U: Fix liquid fog 2025-04-02 21:53:15 +11:00
UnknownShadow200 d423c5f715 Wii U: fog partially works 2025-04-02 21:31:53 +11:00
UnknownShadow200 1ba4035db6 Wii U: use less GPRs 2025-04-02 20:50:33 +11:00
UnknownShadow200 d14b21dc11 Wii U: WIP on refactoring shaders 2025-04-02 19:36:03 +11:00
UnknownShadow200 1abb1f39f5 OpenGL2: Avoid a division/reciprocal for linear fog calculation 2025-04-01 21:29:00 +11:00
UnknownShadow200 7a39d2a4ee Mark all chunks as dirty rather than immediately deleting when block def changes or sunlight/shadowlight colour changes 2025-04-01 21:00:17 +11:00
UnknownShadow200 6794e232ac
Merge pull request #1349 from AntonioND/nds
NDS: Small improvements
2025-03-26 07:24:12 +11:00
Antonio Niño Díaz 6786662d10 NDS: Use libnds helpers to set and restore VRAM banks 2025-03-25 19:24:38 +00:00
Antonio Niño Díaz 60a3b0742a NDS: Stop flushing VRAM after copying to it
The VRAM memory area isn't cacheable, so there is no need to use
DC_FlushRange(), and we can improve performance a bit by removing the
call.

This function would only be required if we were using DMA to copy the
data to VRAM. In that case, the source in main RAM would have to be
flushed before doing the DMA copy. However, CopyHWords() is a plain CPU
copy, so this isn't needed at all.

The following two articles are a nice introduction to cache handling on
the NDS:

https://web.archive.org/web/20210622053504/https://www.coranac.com/2009/05/dma-vs-arm9-fight/

https://web.archive.org/web/20210622053550/https://www.coranac.com/2010/03/dma-vs-arm9-round-2/
2025-03-25 19:21:53 +00:00
UnknownShadow200 d7e1525ff4
Merge pull request #1346 from Phil564/master
N64: Filesystem support for flashcarts
2025-03-18 22:04:56 +11:00
Phil564 4e37936525
N64: Filesystem support for flashcarts 2025-03-16 16:12:19 -04:00
UnknownShadow200 9f05130a04 Save a little bit of memory and computation when it comes to bobbing/tilt calculations 2025-03-16 11:38:17 +11:00
UnknownShadow200 053ab631ee PS1: Use GTE more efficiently
Don't save/load clip/Z to/from memory, overlap more calculations with GTE
2025-03-16 07:56:52 +11:00
UnknownShadow200 a7b57462fa Completely skip entity name rendering code in singleplayer 2025-03-15 21:27:06 +11:00
UnknownShadow200 5ed12e0cc0 PS1: Triangle+DPad controls camera 2025-03-15 19:47:10 +11:00
UnknownShadow200 400c3b568d PS1: Onscreen keyboard texture works 2025-03-15 19:43:58 +11:00
UnknownShadow200 587dfd1eea PS1: Fix paletted textures 2025-03-15 10:35:35 +11:00
UnknownShadow200 8ca8877339 PS1: Broken palette support 2025-03-15 06:50:00 +11:00
UnknownShadow200 382d1b2901 PS1: Implement 2D coloured polygons, support wider textures, change placeholder texture to grey 2025-03-14 20:04:12 +11:00
UnknownShadow200 8b51e47b19 Wii U: More work on fog 2025-03-14 18:51:21 +11:00
UnknownShadow200 c731d5770c Fixup .gsh files 2025-03-14 18:30:17 +11:00
UnknownShadow200 5cad6edec0 Wii U: Add missing pixel shader assembly 2025-03-14 17:21:42 +11:00
UnknownShadow200 5cf11c7a27 Wii U: Fix cloud movement 2025-03-13 22:59:47 +11:00
UnknownShadow200 671507979e PS1/Saturn: Water/Bedrock renders 2025-03-13 18:49:48 +11:00
UnknownShadow200 576faba9a6 PS1: Manually handle resetting GPU and VSync 2025-03-13 07:40:57 +11:00
UnknownShadow200 7f383f9caa WIP on supporting pad axis input 2025-03-11 22:37:21 +11:00
UnknownShadow200 1852e68b48 WIP on refactoring pad axis input 2025-03-11 21:33:20 +11:00
UnknownShadow200 f18d9e0559 PS1: Simplify draw env context building 2025-03-11 18:59:20 +11:00
UnknownShadow200 647fb43ccd PS1: Fix launcher not drawing in pcsx-redux software mode 2025-03-11 07:37:01 +11:00
UnknownShadow200 d76a64abc9 PS1: Minor optimisations 2025-03-10 21:14:39 +11:00
UnknownShadow200 d56d310c1f PS1: Don't use up buffer space in polygons that aren't used 2025-03-10 15:34:18 +11:00
UnknownShadow200 09059e2c1d PS1: Avoid loading xyz onto stack and then into GTE, instead load to GTE directly 2025-03-10 11:33:45 +11:00
UnknownShadow200 f9a8fa8ea9 PS1: Avoid << 2 shifting 2025-03-09 23:49:20 +11:00
UnknownShadow200 40ac530d59 PS1: Fix selected block outline not drawing properly 2025-03-09 23:23:17 +11:00
UnknownShadow200 9292c8952a PS1: Minorly optimise code 2025-03-09 22:59:03 +11:00
UnknownShadow200 4e0f762c3c PS1: Clear initial screen to grey 2025-03-09 18:05:03 +11:00
UnknownShadow200 c892cfb5dc Avoid using doubles for input handler ticking 2025-03-09 12:38:28 +11:00
UnknownShadow200 47c4e91443 Dreamcast: Don't force 50hz in Europe region 2025-03-09 07:52:25 +11:00
UnknownShadow200 698a461fdd Wii U: Don't forget to reset pointer to NULL 2025-03-09 07:30:16 +11:00
UnknownShadow200 199be2f489 Xbox: Simplify shaders by integrating viewport multiply into matrix multiply 2025-03-08 23:43:24 +11:00
UnknownShadow200 e3d91630ee Wii U: Change ZL/L/ZR/R default vpad bindings, increase sensitivity 2025-03-08 21:16:01 +11:00
UnknownShadow200 2abe621457 Wii U: Optimise vertex shader 2025-03-08 20:48:51 +11:00
UnknownShadow200 ac6ca04d74 Wii U: WIP on cloud movement 2025-03-08 19:36:21 +11:00
UnknownShadow200 ebc5d343a4 Wii U: Refactor shader loading 2025-03-08 17:52:50 +11:00
UnknownShadow200 035946cfe9 Non working PS4 2025-03-08 11:19:48 +11:00
UnknownShadow200 4f10d814c6 Wii U: Try to fix water renderering 2025-03-07 17:32:11 +11:00
UnknownShadow200 a2c7ad85fb Wii U: Enable dpeht test and alpha blend 2025-03-07 08:12:38 +11:00
UnknownShadow200 730441c692 Fix sky not rendering 2025-03-07 07:42:44 +11:00
UnknownShadow200 a608ac2de5 Wii U: Init audio device 2025-03-06 05:54:35 +11:00
UnknownShadow200 f2b29258f6 Wii U: Reenable some functionality 2025-03-06 05:35:42 +11:00
UnknownShadow200 e6e11c1e72 Wii U: Sorta works on real hardware now 2025-03-06 05:26:02 +11:00
UnknownShadow200 d737ae0c28 Wii U: Try drawing something on DRC screen 2025-03-05 07:02:08 +11:00
UnknownShadow200 023411e444 Wii U: Set matrix when switching shaders 2025-03-04 22:35:32 +11:00
UnknownShadow200 8559ccc404 NDS: Use smaller http buffer sizes 2025-03-03 19:41:32 +11:00
UnknownShadow200 a17571d9a3 NDS: Fix water outside map looking ugly 2025-03-02 21:01:42 +11:00
UnknownShadow200 fe086a089d NDS: Implement water translucency partially 2025-03-02 14:17:10 +11:00
UnknownShadow200 eb84b2e607 NDS: Fix data corruption in some textures and map gen 2025-03-02 11:45:48 +11:00
UnknownShadow200 ea38185ea9 GBA: Fix getting stuck in boot reset loop 2025-03-02 11:09:58 +11:00
UnknownShadow200 92b82d2cf8 NDS: Fix random block faces in the world missing 2025-03-02 10:49:28 +11:00
UnknownShadow200 49cc96b0c4 NDS: Fix log messages logging extra blank lines 2025-03-02 08:51:23 +11:00
UnknownShadow200 022855eca2 NDS: Don't add NOPs into FIFO buffer 2025-03-01 23:24:19 +11:00
UnknownShadow200 38b9deffbc NDS: Fix RGB4 format 2025-03-01 19:05:00 +11:00
UnknownShadow200 f2794d609a NDS: WIP rewrite to manually manage VRAM 2025-03-01 17:51:01 +11:00
UnknownShadow200 65253713f1 NDS: Avoid more gl functions 2025-03-01 14:08:37 +11:00
UnknownShadow200 9d56cf94cd Fix 2025-02-26 23:01:20 +11:00
UnknownShadow200 697f904e98 EGL: Log all configs if choosing config fails 2025-02-26 22:47:56 +11:00
UnknownShadow200 f01553497c Android: Compile older arm native library to use older runtime library that doesn't use armv8 insstructions 2025-02-26 18:48:05 +11:00
UnknownShadow200 7189ccbb7b OpenGL: Fix BGRA check being incorrect 2025-02-25 19:09:58 +11:00
UnknownShadow200 49bf55f5c6 Log a runtime address to assist with investigating crashes 2025-02-25 18:12:25 +11:00
UnknownShadow200 be5a215a6c SoftGPU: Optimise tex coord calculation
On test machine with -O1 and 28,000 FPS goes from ~48 to ~52
2025-02-24 20:12:22 +11:00
UnknownShadow200 7f13b8b1e1 Fix BGRA conversion code being used even when pixel format is already RGBA 2025-02-24 17:56:04 +11:00
UnknownShadow200 e340a8a4ff Add hidden option for auto pause on focus lost 2025-02-24 07:00:12 +11:00
UnknownShadow200 ae1b692333 GLES2: Also support fallback RGBA when BGRA isn't supported 2025-02-24 06:27:33 +11:00
UnknownShadow200 9dff9a2b14 GLES2: Log BGRA support 2025-02-24 06:16:26 +11:00
UnknownShadow200 398eceafca EGL: Always log all attributes 2025-02-23 21:12:55 +11:00
UnknownShadow200 18986b29f4 Add option for disabling xinput2 support at runtime 2025-02-23 20:08:29 +11:00
UnknownShadow200 2cfd53aa79 EGL: Try to ensure chosen config has same visual ID as window 2025-02-23 19:37:30 +11:00
UnknownShadow200 14c403f6b8 Fix EGL visual message printing wrong visual ID 2025-02-23 18:43:29 +11:00
UnknownShadow200 bc57708120 Fix ModernGL build 2025-02-23 10:46:16 +11:00
UnknownShadow200 f64d0807f4 OpenGL: Try to support very old systems without BGRA support 2025-02-23 10:41:48 +11:00
UnknownShadow200 faf2516d56 EGL: Use default depth/visual with X11 build 2025-02-23 09:21:00 +11:00
UnknownShadow200 2091c3cf69 X11: More compatible launcher window creation 2025-02-23 08:44:23 +11:00
UnknownShadow200 1296a7edea Fix backtrace not being used 2025-02-23 07:43:19 +11:00
UnknownShadow200 62caadf4c3 Fix compilation issues 2025-02-23 07:06:34 +11:00
UnknownShadow200 4b0ec476e3 Linux: Load pthread_setname_np dynamically 2025-02-23 07:01:22 +11:00
UnknownShadow200 932ec01ea1 X11: Use proper 2D visual instead of glx visual for the launcher
Saves a bit of memory (7 MB private RAM, 50 MB shared RAM on linux mint machine) and should improve startup time a little bit
2025-02-20 22:32:48 +11:00
UnknownShadow200 33d626cf60 Windows: Use proper backtrace on ARM/ARM64 platforms, instead of backtrace for current thread 2025-02-20 21:48:44 +11:00
UnknownShadow200 629662657f X11: Query actual window depth/visual for 2D framebuffer 2025-02-20 07:50:50 +11:00
UnknownShadow200 ad80542a57 32x/GBA: Disable menu UI code altogether 2025-02-17 18:15:11 +11:00
UnknownShadow200 876b81cc45 GBA: Now gets in-game for one frame before crashing 2025-02-16 18:41:07 +11:00
UnknownShadow200 52929fd904 GBA: Draw to screen directly 2025-02-16 10:46:17 +11:00
UnknownShadow200 794b4e0255 GBA: Launcher loads 2025-02-16 10:40:43 +11:00
UnknownShadow200 acdcb0a793 GBA: Main menu loads 2025-02-16 10:31:45 +11:00
UnknownShadow200 ab47f1f5f6 GBA: Fix missing sqrt function 2025-02-16 09:15:13 +11:00
UnknownShadow200 57c5aa664a GBA: Old non-working code 2025-02-16 08:34:05 +11:00
UnknownShadow200 55cd5bc3a0 WIP on redesigning static VB code 2025-02-16 08:29:47 +11:00
UnknownShadow200 78e7887c7b 68k build now 'runs' on 4 MB system 2025-02-14 21:30:31 +11:00
UnknownShadow200 6d5a5b78c8 Defer recreating env render VBs until actually needed 2025-02-12 18:22:08 +11:00
UnknownShadow200 d9b77bdf9a SoftGPU: Expand drawing sprite to loading screen background and some other widgets 2025-02-11 19:55:51 +11:00
UnknownShadow200 f8bdc510e8 Fix saturn build 2025-02-11 07:15:01 +11:00
UnknownShadow200 ffb790b1b5 Add hint that vertices can be drawn as a flat sprite
Previously just rendering the UI in the 2D loading/generating menu took around 20 seconds in the 68x build. Now it's a very fast 15 seconds
2025-02-11 07:02:57 +11:00
UnknownShadow200 09751a8aa4 PS1: Fix not handling out of vertex RAM at all 2025-02-09 20:46:53 +11:00
UnknownShadow200 a332ace34a Solaris: Try to fix not compiling 2025-02-03 00:28:58 +11:00
UnknownShadow200 eaef976993 PS1: Water/Ice is rendered translucent 2025-02-01 09:03:06 +11:00
UnknownShadow200 21c612b975 Saturn: also hardcode no terrain stretching 2025-01-28 23:01:19 +11:00
UnknownShadow200 1feb61062b
Merge pull request #1335 from whatsavalue3/master
Use GTE on PSX
2025-01-28 20:15:45 +11:00
whatsavalue3 c35ae6f714
Merge branch 'ClassiCube:master' into master 2025-01-26 08:21:35 +01:00
wav3 730236790d Great graphics on PSX 2025-01-26 08:19:34 +01:00
UnknownShadow200 753dff9ffc Fix mipmaps level not being properly calculated for modern opengl build 2025-01-26 12:32:35 +11:00
UnknownShadow200 b88f114e12 DS: Allocate palette on stack instead 2025-01-25 10:10:20 +11:00
UnknownShadow200 633d6abbec DS: Try to fix crash when generating 64x64x64 world 2025-01-25 08:55:08 +11:00
wav3 eecd3fbdeb Merge branch 'master' of https://github.com/whatsavalue3/ClassiCube 2025-01-24 22:44:06 +01:00
wav3 2d962cb418 Use GTE 2025-01-24 22:43:35 +01:00
UnknownShadow200 47d5b5e17c Save 10 kb memory in non-networking builds 2025-01-24 22:52:23 +11:00
UnknownShadow200 a07478f468
Merge pull request #1332 from whatsavalue3/master
Improve PS1 Rendering
2025-01-24 19:42:31 +11:00
wav3 5f845dff41 Fix rendering a little 2025-01-24 08:35:49 +01:00
UnknownShadow200 30eb0949c7 Saturn: Implement primitive Z sorting 2025-01-24 17:08:10 +11:00
UnknownShadow200 67d5e8dc16 Saturn: Fix frustum culling not working 2025-01-23 19:44:21 +11:00
UnknownShadow200 9667313919 SoftGPU: Fix triangles not being clipped properly when face culling is enabled 2025-01-23 18:40:27 +11:00
UnknownShadow200 d21e9a4b5f Windows: Try falling back to even older direct3d9 versions 2025-01-23 06:56:30 +11:00
UnknownShadow200 f07112e21c Saturn: Save ~14 kb from executable size 2025-01-22 20:38:11 +11:00
UnknownShadow200 76f98d30f0 Saturn/32x: Avoid TINYSTACK, fixes normal world generation not working on Saturn 2025-01-22 20:11:17 +11:00
UnknownShadow200 8a9c38f05c Windows: Try to fallback to direct3d 9.0b instance if creating 9.0c instance fails 2025-01-22 06:50:27 +11:00
Goodlyay 6dc082c7d0 Hotfix for NotifyAction not checking server support
Removed NotifyPositionAction cpe ext entry, as only one entry is needed per extension, rather than per packet defined within an extension
2025-01-20 15:34:56 -08:00
D ec958ff150 Fix for non-networking builds 2025-01-21 06:18:33 +10:00
D f209157070
Merge pull request #1322 from ddinan/notify-action
Add NotifyAction and NotifyPositionAction CPE
2025-01-21 05:28:50 +10:00
UnknownShadow200 27feb27c39 PS1: Save a few cycles in T&L loop 2025-01-20 21:30:20 +11:00
UnknownShadow200 c580186841 PS1: Don't use LoadImage2 for transferring to VRAM 2025-01-20 20:07:00 +11:00
UnknownShadow200 b0aad823b2 DS: Implement texture offseting, partially 2025-01-18 09:16:52 +11:00
UnknownShadow200 9f04e9f1a2 DS: Load texture matrix less often, try to improve texture precision a bit 2025-01-18 07:44:49 +11:00
UnknownShadow200 c03dffbf5f DS: Use smaller quads for water outside map 2025-01-18 07:11:50 +11:00
UnknownShadow200 69f0cda9c7
Merge pull request #1328 from rmn20/DS-fixes
[NDS/DSi] Rendering impovements
2025-01-18 06:42:38 +11:00
rmn20 ec47920b52 Enabled GL_ANTIALIAS on NDS since it's free anyways 2025-01-17 19:08:33 +03:00
rmn20 0e2859936a Send less colors to glColorTableEXT when possible 2025-01-17 17:49:50 +03:00
rmn20 bcc97ecbfe Merge remote-tracking branch 'origin/master' into DS-fixes 2025-01-17 16:42:47 +03:00
rmn20 a8d57d7d17 Use swiCopy to copy texture data in Graphics_NDS 2025-01-17 16:42:19 +03:00
rmn20 eb4137aefd Remove Platform_Log4 in NDS Gfx_AllocTexture 2025-01-17 16:41:53 +03:00
rmn20 ae2b0b10dd Disable CC_BUILD_ADVLIGHTING for NDS but keep for DSI 2025-01-17 16:41:26 +03:00
rmn20 8ba91e933a Replace spaces with tabs in Graphics_NDS.c 2025-01-17 16:11:52 +03:00
UnknownShadow200 8557bd0205 Dreamcast: Display crash screen 2025-01-17 18:54:01 +11:00
rmn20 59a656edb4 Low vram flag removed, advanced lighting enabled 2025-01-17 03:22:56 +03:00
rmn20 ee1c1ba2c7 Fog, DMA call lists, texture color indexation, texture offsets fixed and disabled, textureless polys fix, far plane intersecting polys fix 2025-01-17 03:22:35 +03:00
UnknownShadow200 df49656b25 PS1: Implement more accurate thread sleeping 2025-01-16 20:01:11 +11:00
UnknownShadow200 591e31bea6 PS1: Manually implement transferring launcher framebuffer to VRAM 2025-01-15 22:59:25 +11:00
UnknownShadow200 e93c9336dd Windows: Change OpenGL build to not rely on linking to opengl32 dll, and instead load all the functions dynamically 2025-01-15 19:57:58 +11:00
Derek 06cab0a5a1 Use an enum for notify action types 2025-01-13 11:41:59 +10:00
UnknownShadow200 a0f652cb8c Windows: Load wgl functions dynamically 2025-01-11 07:16:24 +11:00
UnknownShadow200 5092b5ac7f Show better error messages for when required symbols aren't found 2025-01-11 06:53:21 +11:00
UnknownShadow200 80957f9668 Fix accidentally copying too much data for textures on systems that only use 16 bits per pixel 2025-01-10 21:48:51 +11:00
UnknownShadow200 1055c7b5be 3DS: Try to fix on-screen keyboard not showing when 3D anaglyph is enabled 2025-01-05 18:07:14 +11:00
Derek 9053303825 Add ThirdPersonChanged NotifyAction type 2025-01-03 18:35:33 +10:00
Derek 6a51ab9215 Add NotifyPositionAction CPE packet
After some reflection, I think having a separate packet for position actions would be more useful than packing the data into one cc_uint16 value.
2025-01-03 18:21:51 +10:00
UnknownShadow200 be2c4be4a0
Merge pull request #1321 from man-of-eel/system-mode
[3DS] spec.rsf: set SystemMode to 80MB
2025-01-03 16:24:12 +11:00
man-of-eel eb73db48f3
spec.rsf: set SystemMode to 80MB 2025-01-02 16:24:08 +00:00
Derek ce409304c4 Add more NotifyAction types
BlockListSelected, BlockListToggled, LevelSaved, Respawned, SpawnUpdated, TexturePackChanged, TexturePromptResponded
2025-01-02 09:44:30 +10:00
UnknownShadow200 8397efbb9e Update copyright year 2025-01-02 08:39:57 +11:00
UnknownShadow200 7de040abf9 oops 2025-01-02 08:06:15 +11:00
UnknownShadow200 68fd12f52c Mac classic: Add 68040 optimised build 2025-01-02 07:56:40 +11:00
UnknownShadow200 a46626cf78 SoftGPU: Skip full texturing calculations for 1x1 bitmaps 2025-01-01 11:22:01 +11:00
UnknownShadow200 e86caaa4e1 SoftGPU: Don't render clouds or sky 2025-01-01 11:05:47 +11:00
UnknownShadow200 829511a337 macOS: Use custom declaration for master/main port default 2024-12-31 16:24:00 +11:00
Derek 9889eca356 Use cc_uint32 for NotifyAction value 2024-12-31 07:58:19 +10:00
UnknownShadow200 f9c66481c1 3DS: Disable low mem, enables IDs over 255 2024-12-30 23:46:13 +11:00
UnknownShadow200 f79435b30e
Merge pull request #1316 from TheComputerGuy96/ds-compile-fix
Remove environment variable overrides in DS build script
2024-12-30 23:25:22 +11:00
Echo J 70b22712a8 Remove environment variable overrides in DS build script 2024-12-28 12:02:57 +02:00
UnknownShadow200 d1942c6dd7 32x: Can now get in-game by default 2024-12-28 14:36:33 +11:00
UnknownShadow200 36a1fbbd49 32x: Add to main makefile 2024-12-28 12:58:14 +11:00
UnknownShadow200 2dc30e8859 N64: Try to fix not compiling anymore 2024-12-25 10:55:13 +11:00
UnknownShadow200 f172c913c2 PS2: Try to fix textures overlapping frame buffer 2024-12-25 09:49:09 +11:00
UnknownShadow200 d38ef4d233
Update overriding defaults since overriding modules design was redone 2024-12-23 19:38:54 +11:00
UnknownShadow200 13cbc3884d
Simplify, update outdated information 2024-12-23 19:15:32 +11:00
UnknownShadow200 f5ad93973f Update KOS docker image 2024-12-18 21:32:04 +11:00
UnknownShadow200 e2ada4cfe4 3DS/VITA: Fix touching on-screen keyboard button repeatedly typing their button character in 2024-12-18 20:37:40 +11:00
UnknownShadow200 0e1fba3d1e And for Windows too 2024-12-17 21:01:20 +11:00
UnknownShadow200 9467c8951a WIP on implementing entropy generation 2024-12-17 19:50:39 +11:00
UnknownShadow200 84118251fb Android: Fix wrong username/password not being handled properly, and instead proceeding to servers list without an active session 2024-12-16 19:46:26 +11:00
UnknownShadow200 d4cc8d442c Launcher: Make JSON parsing more robust 2024-12-16 19:17:45 +11:00
UnknownShadow200 d4c13858a5
Merge pull request #1307 from CiroZDP/dosbuild-incorrect-name
Change job name on file `build_msdos.yml`
2024-12-16 01:26:28 +11:00
SrFerraaaari 60b0f59551
Change job name on file `build_msdos.yml`
The name of the job shouldn't be called "build-mac-classic", it's confusing.
2024-12-15 12:41:27 +01:00
UnknownShadow200 361f7e3dcc VITA: Auto detect whether to use circle or cross as primary button 2024-12-14 09:46:53 +11:00
UnknownShadow200 3ced7d970e PS3: Auto detect whether to use circle or cross as primary button 2024-12-14 09:34:22 +11:00
UnknownShadow200 a6e410b09a PS3: Increase controller sensitivity 2024-12-14 07:49:25 +11:00
UnknownShadow200 507bbdf37a Launcher: Allow using left/right for menu navigation 2024-12-14 06:42:19 +11:00
UnknownShadow200 4b3b3517b7 Fix 8 bit grayscale without alpha PNGs not being decoded correctly 2024-12-09 21:25:51 +11:00
UnknownShadow200 744ea58b9d IRIX build fixes 2024-12-02 18:15:23 +11:00
UnknownShadow200 92c35cb04c Dreamcast: Fix FPS dropping to 10 when compiled against latest KOS commit 2024-12-01 13:14:16 +11:00
UnknownShadow200 f756f6d94a mac: Generate universal 32 bit build (both intel + powerpc) 2024-11-29 20:47:46 +11:00
UnknownShadow200 cef42bf5c1
Don't use obj directory, oops 2024-11-29 19:41:19 +11:00
UnknownShadow200 f5f79288d3
Use APK signer for android build 2024-11-29 19:34:26 +11:00
UnknownShadow200 51fa993fc1 Make it at least compile again 2024-11-28 21:42:13 +11:00
UnknownShadow200 03186fa2b0
Update MainActivity.java 2024-11-28 18:55:07 +11:00
UnknownShadow200 7901ee45a1 Ooops 2024-11-28 18:28:57 +11:00
UnknownShadow200 3043fe7f0b Better support compiling with modern NDK and then running on older android devices 2024-11-28 18:18:55 +11:00
UnknownShadow200 07c73d02ca Try to fix android signing for older android versions 2024-11-27 22:57:02 +11:00
UnknownShadow200 0a95076da4 NDS: Fix crashing when downloading resources fails 2024-11-26 08:08:55 +11:00
UnknownShadow200 d98304c617 Change crash logging to use module relative instead of absolute addresses
On x64 at least, module addresses are subject to ASLR which requires an extra step when investigating crashes to calculate the module offset
2024-11-25 21:53:12 +11:00
UnknownShadow200 c84d21c0f0 Build fixes 2024-11-25 17:28:44 +11:00
UnknownShadow200 50eeaa0409 Fix NDS workflow not upoading .elf files 2024-11-25 17:01:39 +11:00
UnknownShadow200 8d62f710fc webclient: Reduce initial stack size in makefile compiled builds 2024-11-04 08:19:15 +11:00
UnknownShadow200 3abe11b093 D3D11: Fix recent commits introducing some bluriness into UI textures (thanks 123DMWM) 2024-11-03 07:44:57 +11:00
UnknownShadow200 292c847777 UWP: Really fix launcher rendering 2024-11-02 18:21:11 +11:00
UnknownShadow200 33266d8fe1 UWP: Progress on rendering launcher 2024-11-02 08:35:27 +11:00
UnknownShadow200 fba21fe979 Better compatibility with old gcc 2024-10-31 20:01:31 +11:00
UnknownShadow200 a3b4a6dc03 Manually select older xcode version 2024-10-29 19:57:25 +11:00
UnknownShadow200 ff84934559 iOS: macOS 12 is being deprecated for github runners, switch to macOS 13 2024-10-29 07:54:29 +11:00
UnknownShadow200 0e5394e238 D3D11: Separate device and swapchain creation 2024-10-23 22:03:59 +11:00
UnknownShadow200 896af463ab Pure classic mode: Don't allow chat scrolling 2024-10-23 21:31:55 +11:00
UnknownShadow200 9ebf3fec6d
Merge pull request #1284 from CornerPin/options-fill-left
Fill left options column first
2024-10-23 18:59:30 +11:00
CornerPin eb7fb558e6
Fill left options column first 2024-10-23 02:11:39 +03:00
UnknownShadow200 22e8d52ed6 SoftGPU: Very minor performance increase 2024-10-23 07:19:46 +11:00
UnknownShadow200 1853ef1a3a More WIP on Amiga, better crash handler on NDS 2024-10-22 08:08:20 +11:00
UnknownShadow200 9a514e3ade Move process crash handler and forced termination out of Logger.c 2024-10-21 19:58:08 +11:00
UnknownShadow200 384892972c NDS: Try to add a crash handler 2024-10-20 22:32:09 +11:00
UnknownShadow200 2e4d92f526 Quick fix for last commit 2024-10-20 16:52:49 +11:00
UnknownShadow200 d1d00dae4c Http: Better handle out of memory when downloading data 2024-10-20 16:46:21 +11:00
UnknownShadow200 c1eea9b09f Amiga: Separate makefile 2024-10-20 16:20:51 +11:00
UnknownShadow200 f8319ad828 NDS: Log whether using DSi or NDS networking mode 2024-10-20 12:41:02 +11:00
UnknownShadow200 5e0697126e Amiga: WIP 2024-10-19 21:33:19 +11:00
UnknownShadow200 bcd6e6e457 Properly prevent loading multiplayer maps over 2 GB in size 2024-10-19 11:50:04 +11:00
UnknownShadow200 0c21f86a62 PS1: Non working polygon subdivision 2024-10-19 07:41:30 +11:00
UnknownShadow200 eedcc5326b 3DS: Fix can't click on on-screen keyboard in the launcher 2024-10-17 22:54:45 +11:00
UnknownShadow200 c26fb7b162 UWP: 3D rendering works sort of 2024-10-17 08:07:45 +11:00
UnknownShadow200 705106e324 And make it compile 2024-10-16 22:05:53 +11:00
UnknownShadow200 ec2993933c Switch from C++/CX to standard C++ for WinRT 2024-10-16 21:56:53 +11:00
UnknownShadow200 9ad3f97efb UWP changes 2024-10-16 21:38:24 +11:00
UnknownShadow200 fc676d906d
Merge pull request #1281 from Izder456/master
Implement LINK variable in Makefile
2024-10-16 08:01:50 +11:00
izder456 12a82990d3 implement LINK variable in Makefile to conditionally link to C++ runtime & thus use of _Unwind symbols 2024-10-15 15:58:45 -05:00
UnknownShadow200 a970aea405 Dreamcast: Make TnL slightly more efficient 2024-10-16 07:10:23 +11:00
UnknownShadow200 5a72b13822 Fix last commit 2024-10-15 21:30:43 +11:00
UnknownShadow200 a9868556a3 Dreamcast: Tidy up code a bit more 2024-10-15 21:00:15 +11:00
UnknownShadow200 5687f8070c Dreamcast: Slightly increase FPS and reduce RAM usage by submitting PT polygons straight to TA, instead of buffering in RAM first
OP and TR polygons are still buffered in RAM though, since you cannot submit the same list type more than once per frame without resorting to list contiuation etc

This approach is commonly referred to as hybrid rendering
2024-10-14 23:10:37 +11:00
UnknownShadow200 1ac30e0338 SDL2: Fix can't exit fullscreen 2024-10-14 21:45:31 +11:00
UnknownShadow200 c552004211
Merge pull request #1282 from tenox7/hpux
add initial build support for hp-ux
2024-10-14 18:24:43 +11:00
Antoni Sawicki 93523daf50 hp-ux needs -lpthread 2024-10-13 18:46:22 -07:00
Antoni Sawicki 259a100c82 re-added track dependencies 2024-10-13 18:07:13 -07:00
Antoni Sawicki 281338243a more hpux cruft 2024-10-13 17:57:35 -07:00
Antoni Sawicki 817f578dfc hpux needs -lXext 2024-10-13 17:41:44 -07:00
Antoni Sawicki d3374727e7 add initial build support for hp-ux 2024-10-13 17:32:34 -07:00
UnknownShadow200 a4c2c2f88a Fix libexecinfo not being used on OpenBSD 2024-10-14 08:16:18 +11:00
UnknownShadow200 a8b3bca199 Dreamcast: Use simple 2048 byte aligned allocator for textures 2024-10-12 08:16:46 +11:00
UnknownShadow200 6614b4de93 Fix Direct3D9 code not compiling with old MSVC 2024-10-11 19:43:54 +11:00
UnknownShadow200 d3f4bcdf53
Merge pull request #1267 from forkiesassds/master
Change SDL_TRUE to true for SDL3 backend
2024-10-11 07:56:24 +11:00
UnknownShadow200 01182aeb0e extremely preliminary UWP code 2024-10-10 20:23:27 +11:00
Derek cf5300149f Add NotifyAction CPE 2024-10-05 18:56:06 +10:00
UnknownShadow200 1bfc86b9c3 Dreamcast: Fix not compiling 2024-10-04 19:16:50 +10:00
UnknownShadow200 1c61512e64 Dreamcast: Further simplifications 2024-10-04 18:09:34 +10:00
UnknownShadow200 b1deff231e Dreamcast: Use direct rendering API to be compatible with KOS past 2.1.0 release 2024-10-04 17:29:13 +10:00
UnknownShadow200 447d4060d5 Simplify table updating when a flag is downloaded 2024-10-03 21:25:08 +10:00
UnknownShadow200 10f849cad1
Merge pull request #1275 from CornerPin/launcher-flags-fix
Redraw server list when new flags are fetched
2024-10-03 19:14:09 +10:00
CornerPin 41e3f6cc67
Redraw server list when new flags are fetched 2024-10-02 22:33:09 +03:00
UnknownShadow200 66fe5a9d00 DOS: Keyboard input sort of works 2024-10-01 21:04:20 +10:00
UnknownShadow200 dd1812a4ed DOS: Mouse input partially works 2024-10-01 18:13:38 +10:00
UnknownShadow200 1f50e8e0ec Fix compiling 2024-10-01 07:51:28 +10:00
UnknownShadow200 da9c4508b3 MS DOS workflow test 2024-10-01 07:25:02 +10:00
UnknownShadow200 c9abbde679 Dreamcast: Simplify texture management 2024-09-30 20:40:20 +10:00
UnknownShadow200 fb5d022a76
Merge pull request #1268 from sungsphinx/flatpak-time
Flatpak time (again)
2024-09-30 07:29:17 +10:00
UnknownShadow200 a004920785 Fix pointer inputs not being properly intercepted by onscreen keyboard
Xbox: Fix being too sensitive to joystick input
2024-09-29 07:21:18 +10:00
UnknownShadow200 a43ffbb54e DOS: Some fixups 2024-09-28 20:46:44 +10:00
UnknownShadow200 7c976cb3c5 Unfinished DOS port 2024-09-28 08:31:02 +10:00
UnknownShadow200 28d9cb117c 360: Draw using quad lists instead 2024-09-27 22:13:05 +10:00
UnknownShadow200 021a8ed409 360: Add more logging calls 2024-09-27 11:43:46 +10:00
UnknownShadow200 7d9542592a PS1: Minorly optimise vertex rendering 2024-09-26 21:59:55 +10:00
UnknownShadow200 b088b1a635 Update android manifest version 2024-09-26 18:18:15 +10:00
UnknownShadow200 2cc17f04c1 360: Try to fix crash from I/O 2024-09-26 17:05:59 +10:00
Dexter Reed efc52ab1ea
Use Zenity GTK4 on GNOME in Flatpak
This switches the runtime to org.gnome.Platform/Sdk 47, there is a wrapper script which will show a GTK4 dialog on GNOME only (unless the env CC_DIALOG_FORCE_ZENITY_GTK4 is set), and GTK3 on other DEs.
2024-09-25 20:14:38 +01:00
Dexter Reed 1f8d946de4
Install ClassiCube texpack and audio in Flatpak by default 2024-09-25 20:14:38 +01:00
Dexter Reed 1829014bc8
Upgrade Flatpak runtime to 24.08 2024-09-25 20:14:38 +01:00
Dexter Reed 319516126b
Move misc/linux/flatpak to misc/flatpak
Otherwise GNOME Builder doesn't detect the Flatpak manifests
2024-09-25 20:14:33 +01:00
UnknownShadow200 39ff1db4ff Readd iOS gitignored files 2024-09-25 21:22:44 +10:00
UnknownShadow200 ba00d2767a move iOS into misc folder 2024-09-25 20:43:20 +10:00
UnknownShadow200 9d5783c203 See if this fixes NT 3.5 2024-09-25 20:06:23 +10:00
UnknownShadow200 cba495bd88 Workflow notify for mac classic builds 2024-09-25 19:53:43 +10:00
UnknownShadow200 1064271e15 Try to fix colour codes in URLs 2024-09-23 19:42:29 +10:00
UnknownShadow200 a3a78d11c2
Merge pull request #1257 from BeyondThe5D/remove-save-level-on-classic-hax
Disable save level button on Classic mode when in multiplayer
2024-09-23 17:39:02 +10:00
UnknownShadow200 f8f518e90a Fix android build not triggering success notify 2024-09-21 18:55:31 +10:00
UnknownShadow200 c612d83a2b Fix android workflow 2024-09-21 11:35:33 +10:00
UnknownShadow200 e724a8e86e Fix BSD/Haiku release generation 2024-09-21 11:02:31 +10:00
forkiesassds 777e82f9fa Change SDL_TRUE to true for SDL3 backend 2024-09-21 02:55:51 +03:00
UnknownShadow200 2200456957 Release 1.3.7 2024-09-21 09:44:10 +10:00
UnknownShadow200 9e4f9f8ac4 PS2: Generate elf file without debug info 2024-09-21 08:37:01 +10:00
UnknownShadow200 21afe3027c N64: Fix FPU underflow/overflow exceptions still being triggered 2024-09-21 08:12:34 +10:00
UnknownShadow200 15a454c83c Wii: Fix mouse button order 2024-09-21 07:58:58 +10:00
UnknownShadow200 de1a06d59f N64: Onscreen keyboard 2024-09-18 22:28:49 +10:00
UnknownShadow200 82962a98b3 PS2: Use lower level DNS lookup API 2024-09-18 22:19:14 +10:00
UnknownShadow200 56053e919d Fix some system fonts missing characters 2024-09-17 21:51:43 +10:00
UnknownShadow200 eec503e517
Some improvements to readme wording 2024-09-17 19:00:51 +10:00
UnknownShadow200 07c3018b42
Merge pull request #1266 from StevenSYS/master
Change ".state" to ".down" and "SDL_PRESSED" to "SDL_TRUE" for SDL3
2024-09-17 18:15:32 +10:00
StevenSYS 0cd61b682f
Change ".state" to ".down" and "SDL_PRESSED" to "SDL_TRUE". 2024-09-17 07:02:21 +00:00
UnknownShadow200 a771fef5f0 N64: Splitscreen support 2024-09-16 19:33:47 +10:00
UnknownShadow200 f425e865dd Wii: Untested USB mouse support 2024-09-14 23:21:43 +10:00
UnknownShadow200 1f7125cc9c
Merge pull request #1261 from josch1710/os2
OS/2 support
2024-09-12 17:35:59 +10:00
Jochen Sch„fer 8fbc76eace Remove Player parameter from Camera::GetPosition 2024-09-12 08:18:15 +02:00
Jochen Sch„fer bce034185b Merge 2024-09-11 16:26:50 +02:00
Jochen Sch„fer ce120c56de Merge 2024-09-11 15:21:42 +02:00
UnknownShadow200 cac44bdfd6 Wifi fixes 2024-09-11 07:53:09 +10:00
UnknownShadow200 b777cdf2c9 DSI: Work on wifi support 2024-09-11 07:36:51 +10:00
UnknownShadow200 f77b5897fa 32x: Launcher displays better now 2024-09-10 18:39:20 +10:00
UnknownShadow200 12d127248c Add 32x support code 2024-09-10 18:00:31 +10:00
UnknownShadow200 8ca9709969 32x: Launcher rendering barely works 2024-09-10 07:25:40 +10:00
UnknownShadow200 81267118ce Launcher drawing barely works 2024-09-09 23:07:11 +10:00
UnknownShadow200 352d0f006f
Merge pull request #1259 from BeyondThe5D/dont-save-pitch-axis-on-checkpoint-creation
Don't save camera's pitch axis when making a checkpoint
2024-09-09 21:48:35 +10:00
UnknownShadow200 4861bcba6f Reduce memory usage even further 2024-09-09 21:17:33 +10:00
UnknownShadow200 b2744b1dd7 Save some memory in Saturn/PS1 by only supporting 66 block types 2024-09-09 20:04:52 +10:00
UnknownShadow200 8dc2b45827 Fix mouse getting centred when clicking on classic controls menu 2024-09-08 22:11:15 +10:00
UnknownShadow200 c7ad4a580b X11: Try to fix crashing when XCreateIC fails and you try to press a keyboard button 2024-09-08 09:43:06 +10:00
Big Titted Goth Neko 561000eb0c Don't save camera's pitch axis when making a checkpoint 2024-09-05 15:30:43 +01:00
UnknownShadow200 688afa067c DS: work on dsi wifi support 2024-09-05 23:10:10 +10:00
UnknownShadow200 b380a0a305 DS: Use better icon, build arm7 main file 2024-09-05 22:23:12 +10:00
UnknownShadow200 a74392dbb1 NDS: Launcher renders on bottom screen now 2024-09-05 19:48:57 +10:00
UnknownShadow200 f4913b6415 DS: WIP on cleaning up vram allocations 2024-09-05 18:00:02 +10:00
UnknownShadow200 a7c98ccb25
Merge pull request #1258 from BeyondThe5D/place-dirt-under-trees
Place dirt under generated trees
2024-09-05 17:26:20 +10:00
Big Titted Goth Neko 786632f936 Place dirt under generated trees 2024-09-05 06:29:35 +01:00
Big Titted Goth Neko 9b155a3793 Disable save level button on Classic mode 2024-09-03 17:00:03 +01:00
UnknownShadow200 8b0a1ecfce NDS: See if this fixes SD card loading 2024-09-03 20:34:25 +10:00
UnknownShadow200 caaa89dd2b Fix last commit 2024-09-02 23:42:32 +10:00
UnknownShadow200 a2c6580344 Tidy up Platform.h 2024-09-02 23:09:51 +10:00
UnknownShadow200 00eac312fe NDS: Try to fix mounting SD card failing 2024-09-02 19:27:43 +10:00
UnknownShadow200 0940ea13a1 Fix 'overwrite existing' not working in Save menu 2024-09-01 11:59:42 +10:00
UnknownShadow200 f5b7e1b891 DS: Show message if can't mount filesystem 2024-08-30 18:06:44 +10:00
UnknownShadow200 3e2b0ea9d4 DS: Try to avoid loading unnecessary textures into VRAM, slightly optimise matrix loading 2024-08-30 08:14:24 +10:00
UnknownShadow200 8c4e42a43b Slightly optimise rendering 2024-08-30 07:25:27 +10:00
UnknownShadow200 b98a7afacd Fix 4 bit images not being decoded correctly 2024-08-29 18:38:39 +10:00
UnknownShadow200 aab9a6b383 Webclient: Properly try to support controller input 2024-08-28 07:14:40 +10:00
UnknownShadow200 b17281e3cd Webclient: Try to fix gamepads not being detected 2024-08-27 22:49:52 +10:00
UnknownShadow200 ced493388f Android: Try to redirect from http to https on newer devices 2024-08-27 20:11:25 +10:00
UnknownShadow200 8ee7028104 Revert "Bump android target SDK version"
This reverts commit 6eee24b414.
2024-08-27 20:00:15 +10:00
UnknownShadow200 21551fa80e Revert "Android: Fix install breaking on modern versions"
This reverts commit 8c9016dde4.
2024-08-27 20:00:12 +10:00
UnknownShadow200 d699156645 Revert "Android: Try to fix install issues"
This reverts commit d98e3b4d40.
2024-08-27 20:00:07 +10:00
UnknownShadow200 c79fda41f9 Revert "Android: Try to fix install issues"
This reverts commit 8c508f54bd.
2024-08-27 19:59:53 +10:00
UnknownShadow200 8c508f54bd Android: Try to fix install issues 2024-08-27 19:53:11 +10:00
UnknownShadow200 d98e3b4d40 Android: Try to fix install issues 2024-08-27 19:15:55 +10:00
UnknownShadow200 8c9016dde4 Android: Fix install breaking on modern versions 2024-08-27 18:34:28 +10:00
UnknownShadow200 6eee24b414 Bump android target SDK version 2024-08-26 18:27:35 +10:00
Goodlyay ec27afe04b Add hideCrosshair option to CinematicGui 2024-08-25 14:24:26 -07:00
UnknownShadow200 485098d4fc Dreamcast: Use aliases for registers in VertexTransform.S, only load fr0 once 2024-08-25 10:00:36 +10:00
UnknownShadow200 7e656d278e Dreamcast: Avoid pushing/popping r10 in vertex transform, also don't forget to set size for assembly symbols 2024-08-25 07:36:05 +10:00
Goodlyay 5ba6d841e1 Increase network precision of cinematic bar size 2024-08-23 20:42:27 -07:00
UnknownShadow200 e19ca19e34
Merge pull request #1250 from ddinan/cinematic-bars
Add CinematicGui extension
2024-08-24 10:49:57 +10:00
Derek 37a8cf2a37 CinematicGui misc fixes 2024-08-24 09:43:05 +10:00
UnknownShadow200 8a23c73511 One less step compiling with TCC 2024-08-24 09:16:32 +10:00
D cd6016f1af
Merge branch 'master' into cinematic-bars 2024-08-24 07:39:35 +10:00
UnknownShadow200 8c36fad786 Better old win SDK compatibility 2024-08-23 20:45:45 +10:00
UnknownShadow200 4bd531808e Add more comments to Graphics.h 2024-08-23 19:48:29 +10:00
Derek 980b225254 Add CinematicGui extension
This extension gives servers a way to initiate cinematics/cutscenes.

Features included:
- Can add cinematic bars with full customization
- Ability to hide the hotbar and hand
2024-08-23 12:33:50 +10:00
UnknownShadow200 7d85dbbb31 PS1: Try to avoid dying when no buffer space left in the frame 2024-08-22 19:32:08 +10:00
UnknownShadow200 7c2306a85b PS1: Numeric onscreen keyboard works now, sort of 2024-08-22 18:36:29 +10:00
UnknownShadow200 3c65a4fc28 Dynamically load all imagehlp functions 2024-08-21 17:44:42 +10:00
UnknownShadow200 29f1a173bf Make SDL builds work better with GLES 2024-08-20 23:17:09 +10:00
UnknownShadow200 4a13eec6c8 Add --singleplayer and --resume support to ClassiCube command lline, also add support it in the desktop entry file 2024-08-20 22:24:44 +10:00
UnknownShadow200 c603018d48 use minimal winsock2 headers 2024-08-20 16:00:47 +10:00
UnknownShadow200 f1cac3962c
Merge pull request #1248 from forkiesassds/master
Fix SDL3 backend with latest SDL3 commits
2024-08-20 07:18:56 +10:00
forkiesassds f6d5a5a2a4 Fix SDL3 backend with latest SDL3 commits
They have changed flags property from `"flags"` to `SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER` causing window flags to never be set which causes the window to not be resizeable and ClassiCube not launching.
2024-08-19 23:06:03 +03:00
UnknownShadow200 f7edba625d Slightly better compatibility with older windows SDKs 2024-08-19 21:41:01 +10:00
UnknownShadow200 8fc8628adf Dreamcast: Slightly simplify sh4 code 2024-08-17 21:22:18 +10:00
UnknownShadow200 507f71c944 macOS: Build app bundle with makefile 2024-08-17 20:09:23 +10:00
UnknownShadow200 0d772f5e90 Consoles: Temp hack to make camera work in splitscreen mode 2024-08-17 16:26:44 +10:00
UnknownShadow200 7881d05646 Consoles: Fix after exiting splitscreen mode, then starting singleplayer/multiplayer mode, the game still acted as if it was in splitscreen mode 2024-08-17 16:02:09 +10:00
UnknownShadow200 7fc0906751 Better clang compatibility 2024-08-17 15:19:10 +10:00
UnknownShadow200 0e13440f1d PS3: Fix splitscreen 2024-08-17 14:50:04 +10:00
UnknownShadow200 b5fe2118c2 Add success notify for PS1/saturn builds 2024-08-17 10:26:42 +10:00
UnknownShadow200 b3e545f202 Tidy up Graphics.h a bit 2024-08-16 17:21:29 +10:00
UnknownShadow200 6dcd418acb PS3: Try to fix controllers input issue 2024-08-15 16:21:32 +10:00
UnknownShadow200 65575a2253 PS3: Try to fix not working on actual hardware 2024-08-14 22:58:46 +10:00
UnknownShadow200 0fe2ab6689 oops 2024-08-14 18:38:15 +10:00
UnknownShadow200 9016c3aaff 3DS: Use virtual keyboard built-in to ClassiCube instead of trying to use 3DS's keyboard 2024-08-14 18:29:24 +10:00
UnknownShadow200 1b85f54dbf
Merge pull request #1180 from yomcube/master
Add place command
2024-08-13 08:00:59 +10:00
UnknownShadow200 454637f0a1 Virtual keyboard: Push slightly upwards to avoid overlapping chat 2024-08-12 22:00:22 +10:00
UnknownShadow200 3e8fc0ddcf Consoles: Fix custom models never working and crashing Vita port 2024-08-12 21:42:35 +10:00
UnknownShadow200 9f7a7bcfb5 BearSSL: Force classicube.net signin to be done over TLS 1.2, fix https-verify=false not working, bump min RTC time to August 1 2024 2024-08-12 18:20:25 +10:00
UnknownShadow200 d48a14f9c9 Make it easier to compile for BearSSL 2024-08-10 22:39:39 +10:00
UnknownShadow200 acd8cb0d50
Merge pull request #1243 from forkiesassds/master
Fix SDL3 backend with latest SDL3 commits
2024-08-10 21:06:53 +10:00
UnknownShadow200 7848bb060c PPC mac: Fix launcher not drawing when compiled with more recent SDK 2024-08-10 20:33:16 +10:00
UnknownShadow200 5f937f6a06 Fix PPC build not actually working 2024-08-10 19:18:55 +10:00
UnknownShadow200 9dd2addba0 Should work now 2024-08-10 18:47:58 +10:00
UnknownShadow200 7d1b39145a Take 7 2024-08-10 18:08:51 +10:00
UnknownShadow200 3867674c0a Take 6 2024-08-10 18:05:32 +10:00
UnknownShadow200 99916b03b3 Take 5 2024-08-10 17:57:50 +10:00
UnknownShadow200 5f381968a4 Take 4 2024-08-10 17:52:23 +10:00
UnknownShadow200 ff37270150 Take 3 2024-08-10 17:34:47 +10:00
UnknownShadow200 99f4f3a8b3 Take 2 2024-08-10 17:06:39 +10:00
UnknownShadow200 01d00e887a oops 2024-08-10 17:02:35 +10:00
UnknownShadow200 d71fa3bc0a OSX PPC actions test 2024-08-10 16:58:42 +10:00
UnknownShadow200 8b08fe3abb Reduce dependency on libgcc 2024-08-10 15:29:00 +10:00
UnknownShadow200 666449416a Less compiler warnings 2024-08-10 14:22:29 +10:00
forkiesassds 135d0a79db Fix SDL3 backend with latest commits 2024-08-10 04:21:17 +03:00
UnknownShadow200 1b48ce3fe3 Dreamcast: Slightly optimise clipping by avoiding colour interpolation unless necessary 2024-08-10 10:08:06 +10:00
UnknownShadow200 b491c48cef Change FPS mode in classic mode options to behave more accurately 2024-08-09 22:07:59 +10:00
UnknownShadow200 3f4b61f1b8 Dreamcast: Use proper API for store queue locking/unlocking 2024-08-07 22:13:57 +10:00
UnknownShadow200 980f90283a Add /skin singleplayer command 2024-08-07 14:39:37 +10:00
UnknownShadow200 0a5cd607b0
Merge pull request #1242 from forkiesassds/master
Fix SDL3 backend with latest SDL3 commits and CC_BUILD_ICON defined
2024-08-06 11:28:27 +10:00
forkiesassds edd3e78832 Fix SDL3 backend with latest SDL3 commits and CC_BUILD_ICON defined 2024-08-03 19:13:47 +03:00
UnknownShadow200 5f72274380 Fix lighting mode button not being properly disabled 2024-08-03 18:41:38 +10:00
UnknownShadow200 68509d6d83 add make release which compiles at -O1 2024-08-03 11:07:45 +10:00
UnknownShadow200 11fb4a2b65 Dreamcast: Slightly optimise performance by avoiding separate viewport transform 2024-08-03 10:41:06 +10:00
UnknownShadow200 967d52ea6a Virtual cursor: Implement in-game too 2024-08-01 19:51:21 +10:00
UnknownShadow200 eb0f36ce58 Expose more functionality for plugins 2024-07-31 20:11:51 +10:00
UnknownShadow200 f09b8d9375 Fix Windows builds oops 2024-07-31 18:31:18 +10:00
UnknownShadow200 a31fec1973 Make it easier to switch Audio backends 2024-07-31 18:27:41 +10:00
UnknownShadow200 6da3ab1354 Make it easier to switch SSL backends 2024-07-31 18:07:12 +10:00
UnknownShadow200 b95abff3f0 Load sym functions dynamically 2024-07-31 08:21:41 +10:00
UnknownShadow200 67523f6228 Allow plugins to set scissor region and viewport region 2024-07-30 21:39:30 +10:00
UnknownShadow200 96840b1a03 OpenGL 1.0: Maybe working textures 2024-07-30 19:37:38 +10:00
UnknownShadow200 056bfb3e2f Fix most console builds 2024-07-30 19:06:02 +10:00
UnknownShadow200 76dc08d9a4 WIP on making it possible to use external 2D render code 2024-07-30 18:00:19 +10:00
UnknownShadow200 4cde887c24 Simplify backend type and expose Gfx.BackendType 2024-07-29 19:09:58 +10:00
UnknownShadow200 1c3d8fb72e Simplify writing plugins in C++ slightly 2024-07-28 23:33:22 +10:00
UnknownShadow200 e373481944 Consoles: Fix signing in always failing 2024-07-28 10:13:49 +10:00
UnknownShadow200 7d0bb7f363 Wii/GameCube: Try to fix input not being recognised 2024-07-27 20:03:29 +10:00
UnknownShadow200 0fbe0281e3 Saturn: 2D text now is somewhat legible 2024-07-27 08:58:20 +10:00
UnknownShadow200 34d9589b33 Avoid unnecessary matrix multiplies on saturn/ps1/softgpu 2024-07-27 08:27:58 +10:00
UnknownShadow200 a1d5d241fa WIP rework on gfx matrix loading 2024-07-27 08:09:54 +10:00
UnknownShadow200 2323b12599 Slightly optimise fallback text rendering to avoid division 2024-07-27 07:26:17 +10:00
UnknownShadow200 96b4a1a841 Vita: Log size of failed allocations 2024-07-26 23:17:28 +10:00
UnknownShadow200 ccf34bb325 Vita: Support back panel, use own virtual keyboard 2024-07-26 22:55:53 +10:00
UnknownShadow200 1d217b67c5 Better compatibility with old MSVC 2024-07-26 20:19:01 +10:00
UnknownShadow200 22d001462f Windows: Add CPU register dumping for PPC/MIPS/ALPHA/SH4, untested 2024-07-26 19:59:39 +10:00
UnknownShadow200 8e5df2b1c5 Better old MSVC compatibility 2024-07-25 23:06:18 +10:00
UnknownShadow200 fcdaf165ec Fix plugin incompatibility 2024-07-25 19:45:29 +10:00
UnknownShadow200 47fdeb17a5 Saturn: Use custom defaults 2024-07-23 19:51:27 +10:00
UnknownShadow200 57e37e0b46 NDS/Saturn: Also use integer sin/cos 2024-07-23 18:29:34 +10:00
UnknownShadow200 09357b5df9 Try to fix artifacts on some platforms when returning from in-game back to the launcher menu 2024-07-23 07:55:26 +10:00
UnknownShadow200 c981d8272f Try to avoid breaking input event backwards compatibility 2024-07-23 07:19:12 +10:00
UnknownShadow200 26879d1652 Add android build action 2024-07-22 20:06:25 +10:00
UnknownShadow200 06353a8fe5 Held block is visible on NDS by default 2024-07-21 17:16:21 +10:00
UnknownShadow200 4f184e46f5 PS1/Saturn/NDS: disable held block for better performance (now ~58 FPS when standing still on PS1, ~50 when moving) 2024-07-21 16:21:20 +10:00
UnknownShadow200 ba034579f9 PS1: 30 to 38 FPS by using optimised icos/isin for calculating angles 2024-07-21 15:23:08 +10:00
UnknownShadow200 427c4f213a PS1/Saturn: Double FPS (12 to 30 FPS in DuckStation, 10 to 20 FPS in mednafen) 2024-07-21 12:28:24 +10:00
UnknownShadow200 97c3dd8374 Allow binding controls to 1-9, fix can't activate texture ID overlay while in a UI menu 2024-07-20 10:44:41 +10:00
UnknownShadow200 0f5c74fb53 Fix can't multijump anymore 2024-07-20 10:14:09 +10:00
UnknownShadow200 071c6f68d5 Wii U: Use own virtual keyboard 2024-07-19 22:30:08 +10:00
UnknownShadow200 9f2eeca117 Dreamcast: Use OPB overflows, move RTC time check to SSL backend instead and clamp min RTC time there to start of 2024 2024-07-19 18:05:31 +10:00
UnknownShadow200 0eddcd119e Fix can't use Q/E as hotkeys when hacks disabled (Thanks Goodly) 2024-07-18 19:41:55 +10:00
UnknownShadow200 f06796195c N64: When expansion pack is there, allocate third display buffer (test initial flatgrass world goes from 30 to 47 FPS in Ares) 2024-07-18 07:52:50 +10:00
UnknownShadow200 493ab581de N64: Save 196 KB of memory by drawing as quads instead of using indexed drawing 2024-07-16 22:48:13 +10:00
UnknownShadow200 561010d897 N64: Untested mouse support 2024-07-16 19:22:56 +10:00
UnknownShadow200 3e827dba76 N64: Optimise rendering (20 to 30 FPS in ares?) by caching RSP blocks 2024-07-16 18:23:17 +10:00
UnknownShadow200 1f0b1d33e2 3DS: Avoid clearing bottom screen for a little better performance, and don't pointlessly allocate a depth buffer for it 2024-07-16 18:06:28 +10:00
UnknownShadow200 f32af27f1b PS1: Properly reset GPU 2024-07-15 22:30:40 +10:00
UnknownShadow200 7bef6c6d99
Merge pull request #1235 from forkiesassds/master
Fix SDL3 backend with latest SDL3 commits
2024-07-15 07:03:40 +10:00
forkiesassds de51069004 Fix SDL3 backend with latest SDL3 commits 2024-07-14 15:44:47 +03:00
UnknownShadow200 e8e1a7c062 Touch UI: Fix can't left align buttons 2024-07-14 16:06:44 +10:00
UnknownShadow200 22eb11689b PS1: Fix generating unloadable bin CD image 2024-07-14 15:25:33 +10:00
UnknownShadow200 e59c1cf0e8 Consoles: Should fix crash after going in-game in multiplayer, then quitting, then going into singleplayer 2024-07-14 13:11:29 +10:00
UnknownShadow200 c3de1a30c4 Splitscreen: Tie camera input to controller ports 2024-07-14 10:57:28 +10:00
UnknownShadow200 e83eea9ae9
Merge pull request #1234 from ClassiCube/ControllerFixup
Controller fixup
2024-07-14 10:18:12 +10:00
UnknownShadow200 d465e807c1 Fix wiimote getting detected as two connected controllers 2024-07-14 10:10:06 +10:00
UnknownShadow200 9a01316ce2 Fix menu option descriptions 2024-07-14 07:51:51 +10:00
UnknownShadow200 870014cbb0 Web/Mobile: Add WIP grayscale post processor 2024-07-13 23:09:20 +10:00
UnknownShadow200 17097aec6f Simplify menu options value get/set 2024-07-13 22:02:45 +10:00
UnknownShadow200 0444ca2c4c Less hacky nunchuck bindings 2024-07-13 18:27:29 +10:00
UnknownShadow200 736e20d0d8 WIP on supporting custom controller defaults 2024-07-13 12:48:11 +10:00
UnknownShadow200 9ea54dee7c Merge GamePad_States and PadDevice 2024-07-13 11:00:18 +10:00
UnknownShadow200 cf61ef23d3 Quick fix for MSVC project not compiling 2024-07-13 10:07:57 +10:00
UnknownShadow200 649eeba2ab tidy up readme and fix IOS build 2024-07-13 09:21:21 +10:00
UnknownShadow200 dbab0091b2 Make bind mapping a bit less hardcoded 2024-07-13 08:18:31 +10:00
UnknownShadow200 2b0941bccd
Merge pull request #1233 from ClassiCube/MenuOptions2
Simplify menu options UI code
2024-07-12 20:58:02 +10:00
UnknownShadow200 68812b65ad Bugfixes 2024-07-12 20:52:17 +10:00
UnknownShadow200 cde8ec5d3e More WIP, almost finished 2024-07-12 20:37:47 +10:00
UnknownShadow200 e28603c66c Windows/Linux: avoid relying on hidden win_handle global 2024-07-12 19:15:39 +10:00
UnknownShadow200 202e67c3dd IRIX: Fix dying with BadMatch error at XCreateWindow 2024-07-12 18:44:07 +10:00
UnknownShadow200 5be965131c Dreamcast: Wheel support for mice 2024-07-12 17:56:34 +10:00
UnknownShadow200 19b76c9f1b More WIP 2024-07-12 07:50:45 +10:00
UnknownShadow200 d8676cbd6c PS2: Non blocking sockets work now 2024-07-11 23:17:30 +10:00
UnknownShadow200 2bf6c3b78c Take two at rewriting menu options 2024-07-11 20:58:21 +10:00
UnknownShadow200 a94570e593 Enable actions on AngledLighting branch 2024-07-11 18:58:03 +10:00
UnknownShadow200 70e3a0e322 PS2: Fix direct connect IP parsing not working 2024-07-11 18:52:26 +10:00
UnknownShadow200 0d1a7c439b PS2: Try to fix wrong current time being calculated on some consoles 2024-07-11 07:36:24 +10:00
UnknownShadow200 0fab5e4d82 Make 0.0.23 texture pack more accurate 2024-07-10 21:23:45 +10:00
UnknownShadow200 4eeb4cdb0d PS2: Add mouse cursor crosshairs too, and fix noclip 2024-07-10 20:26:40 +10:00
UnknownShadow200 e7f9ab9797 Wii/Dreamcast: Display crosshairs at cursor position 2024-07-10 19:48:14 +10:00
UnknownShadow200 59156fa865
Merge pull request #1230 from ClassiCube/ControllerWork
Redesign input to properly support different devices
2024-07-10 18:33:10 +10:00
UnknownShadow200 b39a537adf Fix touch input issues and compiling issues 2024-07-10 18:25:48 +10:00
UnknownShadow200 87c89ba973 WIP on mapping physical controller ports to virtual input ports 2024-07-10 08:09:06 +10:00
UnknownShadow200 29ff41df59 Save around 16kb of memory by not caching entity transform 2024-07-10 07:39:37 +10:00
UnknownShadow200 1d6d7eabf9 PS2: Try to always read RTC time directly 2024-07-09 23:06:47 +10:00
UnknownShadow200 ce7c077ca9 Allow setting input override hooks, fix touch build not compiling 2024-07-09 21:34:58 +10:00
UnknownShadow200 67566d0fb7 WIP on per player input 2024-07-09 21:09:21 +10:00
UnknownShadow200 1f12b596f6 Split up Input into Input and InputHandler 2024-07-09 20:39:58 +10:00
UnknownShadow200 cf63911261 More WIP on new input API 2024-07-09 20:10:48 +10:00
UnknownShadow200 b6c00d767a WIP on supporting device specific input 2024-07-09 18:31:14 +10:00
UnknownShadow200 ad2b28cba0 PS2: Actually enable SSL support 2024-07-09 07:58:39 +10:00
UnknownShadow200 572c1ad775 PS2: Enable SSL support too 2024-07-09 07:48:45 +10:00
UnknownShadow200 55c4b51a39 Dreamcast: Minor code tidyup 2024-07-08 18:29:30 +10:00
UnknownShadow200 843173a118 NDS: Check and download resources too 2024-07-08 17:27:17 +10:00
UnknownShadow200 9473b429ec Dreamcast: Fix vertex clipping in assembly optimised 2024-07-08 07:14:47 +10:00
UnknownShadow200 97e3d016f4 Dreamcast: Optimise a little bit more, but clipped vertices still aren't right 2024-07-08 00:00:06 +10:00
UnknownShadow200 333f0e5c9b Dreamcast: assembly optimised version nearly works 2024-07-07 21:42:53 +10:00
UnknownShadow200 c891f09b7e Dreamcast: Port clipped transforms to assembly, broken though 2024-07-07 19:47:54 +10:00
UnknownShadow200 eacb76fb0c
Merge pull request #1227 from gyrovorbis/master
DC: INIT_FLAGS, optimization flags, dual analog
2024-07-07 18:40:02 +10:00
UnknownShadow200 06ac94db53 Dreamcast: Few minor assembly improvements 2024-07-07 17:43:23 +10:00
UnknownShadow200 8831f6a589 Dreamcast: Assembly version sort of works now 2024-07-07 12:46:15 +10:00
UnknownShadow200 af07f6576f Dreamcast: Don't use BIOS font for onscreen messages 2024-07-07 10:09:24 +10:00
UnknownShadow200 9d322660e8 Dreamcast: Fix not skipping completely invisible quads 2024-07-07 09:26:12 +10:00
UnknownShadow200 2e4d7cd080 Dreamcast: Use more updated KOS docker image 2024-07-07 08:55:13 +10:00
UnknownShadow200 b3abb0f054 Dreamcast: Further WIP on assembly code 2024-07-06 23:21:30 +10:00
UnknownShadow200 67a47a0a9b Dreamcast: Line clip works, unoptimised though 2024-07-06 21:06:24 +10:00
UnknownShadow200 60a6ce3840 Dreamcast: Non working assembly 2024-07-06 19:16:13 +10:00
UnknownShadow200 b31dd767e4 Fix PNGs that use a bits per sample less than 8 and a transparent colour, not calculating the transparent colour correctly 2024-07-06 08:40:28 +10:00
UnknownShadow200 172c47548e Quick fix for 5b0a269d2c slightly breaking appearance of sprite blocks in inventory for all platforms 2024-07-06 00:27:53 +10:00
UnknownShadow200 5b0a269d2c Saturn: Improve texture orientation 2024-07-05 20:36:03 +10:00
UnknownShadow200 b821c41ceb Saturn: UI barely works now 2024-07-05 20:17:23 +10:00
UnknownShadow200 b40db441c5 Saturn: Textures work kinda 2024-07-05 19:37:54 +10:00
Falco Girgis 455d180790 Merge branch 'master' of github.com:gyrovorbis/ClassiCube 2024-07-05 02:42:29 -05:00
Falco Girgis 62cee520f6 Formatting fix. 2024-07-05 02:42:09 -05:00
Falco Girgis c6aa2f85b1
Merge branch 'ClassiCube:master' into master 2024-07-05 02:41:01 -05:00
Falco Girgis 96926776bd DC: INIT_FLAGS, optimization flags, dual analog
1) Hand-tuned KOS_INIT_FLAGS() to only include what was actually needed
   (shaving off ~50KB for a GCC14 relese build).
2) Set optimization to best known flags in DC-specific Makefile.
3) Implemented dual-analog stick support when detected.
2024-07-05 02:38:56 -05:00
UnknownShadow200 ac97cbe96d Saturn: Offload perspective division to DIVU hardware 2024-07-05 17:09:40 +10:00
UnknownShadow200 5c7109bfd9 Saturn: Increase FPS from 7 to 11 2024-07-04 22:07:44 +10:00
UnknownShadow200 d79ab96b7e Log searched font directories, also fix Wii U build 2024-07-04 20:56:09 +10:00
UnknownShadow200 459390ef7b Dreamcast: Cope better with running out of memory for vertex buffer 2024-07-03 18:27:46 +10:00
UnknownShadow200 5f5d8824fa Dreamcast: Fix crashing on more recent KOS versions due to exceeding the 64 KB stack limit 2024-07-02 20:59:24 +10:00
UnknownShadow200 d222c47e59 Try to reduce stack usage for extracting ZIPs 2024-07-02 19:11:04 +10:00
UnknownShadow200 6772d2ff40
Merge pull request #1223 from gyrovorbis/gcc14_fix
Fixed Dreamcast build isues with latest GCC14.1.0
2024-07-02 17:13:39 +10:00
Falco Girgis e0386ae7a6 Fixed Dreamcast build isues with latest GCC14.1.0
- Apparently the latest GCC14.1.0 got stricter about integer/pointer
  conversions.
- Fixed two functions which failed to build due to implicitly converting between
  typedefs to unsigned and void* by adding explicit casts.
2024-07-02 00:11:45 -05:00
UnknownShadow200 889af509fa Terminal: Fix not resetting state properly on mac/Linux 2024-07-01 19:30:26 +10:00
UnknownShadow200 0be95a784d Dreamcast: Add icon for config file in bios 2024-07-01 18:48:40 +10:00
UnknownShadow200 5635d06b7e Fix last commit 2024-06-30 23:38:58 +10:00
UnknownShadow200 8b2f1aec5b PS consoles: Use more natural button bindings 2024-06-30 23:04:36 +10:00
UnknownShadow200 ede1a368f5 Windows 9x: Fix file existence check not working properly 2024-06-30 22:25:37 +10:00
UnknownShadow200 690692b8fb Less warnings when compiling with clang 2024-06-30 21:56:33 +10:00
UnknownShadow200 d4cd497ebb PS1: Little bit more optimised 2024-06-30 14:39:57 +10:00
UnknownShadow200 335733e10c PS1: Do vertex transform using integers (13 to 20 FPS) 2024-06-30 14:23:28 +10:00
UnknownShadow200 1caf0fa518 PS1: Slightly optimise rendering (9 to 13 FPS) 2024-06-30 09:30:18 +10:00
UnknownShadow200 39e5b04a4d Mac: Workflows now trigger upload to CDN 2024-06-29 21:41:54 +10:00
UnknownShadow200 2f4eeb6aec Simplify window closing 2024-06-29 11:53:29 +10:00
UnknownShadow200 89e47e7a2a iOS: Split up general interop and launcher backend 2024-06-29 07:49:26 +10:00
UnknownShadow200 308bd12fad Saturn: Fix not freeing memory, and overwriting VRAM 2024-06-28 23:09:58 +10:00
UnknownShadow200 c7b66b2ea4 Saturn: Textures are colored right now 2024-06-28 22:59:41 +10:00
UnknownShadow200 ea35f73c7a Saturn: Also draw 2D using textures 2024-06-28 20:46:09 +10:00
UnknownShadow200 1d7a43793a Saturn/PS1/NDS: Use 16bpp bitmaps entirely 2024-06-28 17:21:53 +10:00
UnknownShadow200 c17973bd53 Fix last commit 2024-06-28 16:55:47 +10:00
UnknownShadow200 1383530c4f Fix 16bpp bitmaps 2024-06-28 16:52:16 +10:00
UnknownShadow200 cadf185cee Broken 16 bits per pixel bitmaps 2024-06-28 08:12:46 +10:00
UnknownShadow200 3b0f54bc6a WIP fixing exiting splitscreen mode breaking 2024-06-27 00:11:26 +10:00
UnknownShadow200 4cb9e200ed Support mc:// urls as command line argument 2024-06-26 23:30:04 +10:00
UnknownShadow200 6c3a9d7466 Fix most platforms not compiling 2024-06-26 22:45:45 +10:00
UnknownShadow200 cc53107918 SDL: Untested controller support 2024-06-26 22:40:11 +10:00
UnknownShadow200 3b10190780 Tidy up gamepads code 2024-06-26 22:00:54 +10:00
UnknownShadow200 feb3aa9c8c PSP: Use fast clear 2024-06-26 21:15:48 +10:00
UnknownShadow200 79a996d6cd Fix X11 error when closing the game on Linux 2024-06-26 19:53:19 +10:00
UnknownShadow200 9607fa2cf1 Even more minimal X11 2024-06-26 17:47:55 +10:00
UnknownShadow200 a422564bc7 Change window handle to a union 2024-06-26 08:16:16 +10:00
UnknownShadow200 f07c13c02a PSP: add icon
Also better support older unix systems
2024-06-26 07:18:15 +10:00
UnknownShadow200 8e1a04999f PS2: Try to avoid displaying wrong image swhen switching from launcher to in-game 2024-06-25 20:19:54 +10:00
UnknownShadow200 77fbcd915d Consoles: Fix input for save level and menu input screens 2024-06-25 19:15:57 +10:00
UnknownShadow200 4c2a077751 Dreamcast: Simplify a bit more 2024-06-25 18:13:20 +10:00
UnknownShadow200 8a01581945 Fix last commit breaking maximising oops 2024-06-25 07:27:10 +10:00
UnknownShadow200 c9a59f7b5d Windows: Simplify resize processing a bit 2024-06-24 23:48:17 +10:00
UnknownShadow200 aadbbc756d Fix iOS workflow not being run 2024-06-24 20:25:04 +10:00
UnknownShadow200 a5bda7d22a Dreamast: Fix split screen mode not rendering right 2024-06-24 20:11:49 +10:00
UnknownShadow200 b09a76ea7e PS2: Optimise vertex transform further 2024-06-24 18:36:41 +10:00
UnknownShadow200 8767f31d6e Simplify vsync and frame limiting code 2024-06-23 21:49:32 +10:00
UnknownShadow200 4b8266ab83 Saturn: Textured rendering sort of works 2024-06-23 18:46:35 +10:00
UnknownShadow200 c34ceeab92 Saturn: Copying textures to VRAM partially works 2024-06-23 17:52:01 +10:00
UnknownShadow200 197e440f1c Saturn: WIP textures 2024-06-23 17:25:02 +10:00
UnknownShadow200 e493d80671 PS2: Draw coloured vertices in same way as textured ones 2024-06-23 13:00:46 +10:00
UnknownShadow200 c591415e7c PS2: Better support non default display modes 2024-06-23 11:41:07 +10:00
UnknownShadow200 a10df262b1 Virtual keyboard: Support numpad layout too 2024-06-23 10:45:46 +10:00
UnknownShadow200 2f11809354 Tidy up virtual keyboard a bit 2024-06-23 09:41:34 +10:00
UnknownShadow200 3acf8d7536 Consoles: Fix can't use soft keyboard properly in menus 2024-06-23 09:15:43 +10:00
UnknownShadow200 b1999b5942
Merge pull request #1220 from sungsphinx/sdl3-flatpak-stuff
Fix building with SDL3 from git, Flatpak improvements
2024-06-23 08:17:08 +10:00
UnknownShadow200 3a2c469c99 SDL: Fix can't input text fields in the main menu 2024-06-23 08:05:25 +10:00
Dexter Reed be37a3af8e
flatpak: Use JSON, add X11 and SDL3 manifests
I have chosen to use JSON and move the script into a file so it is
possible to use GNOME Builder to test/run.

The reason for the gitignore change is so the ClassiCubeLauncher file is
not ignored.

Also, ClassiCube using SDL3 launches on GNOME now.
2024-06-22 22:44:04 +01:00
Dexter Reed 8b05ee6ace
SDL3: Fix building with 3.1.2 (git) 2024-06-22 22:43:58 +01:00
UnknownShadow200 09445f294c PS2: Optimise a little bit more 2024-06-23 00:14:47 +10:00
UnknownShadow200 2ddedc3390 PS2: Optimise transform again 2024-06-22 23:45:20 +10:00
UnknownShadow200 3bfec7b607 Tidy up makefiles a bit more 2024-06-22 21:55:29 +10:00
UnknownShadow200 92ac33c2df Dreamcast: Try to fix not using right path on SD card 2024-06-22 21:25:25 +10:00
UnknownShadow200 a36ea8380c PS2: Optimise vertex clipping 2024-06-22 20:51:55 +10:00
UnknownShadow200 bd223eb457 PS2: Slightly optimise vertex transform 2024-06-22 20:35:06 +10:00
Jochen Sch„fer a3d042c094 Fixed key handling 2024-06-22 06:31:19 +02:00
UnknownShadow200 90643e8077 PS2: Optimise vertex transform using VU0 2024-06-22 11:20:22 +10:00
UnknownShadow200 c0a6811d56 Consoles: Don't auto show virtual keyboard when an input field is selected, only show it after A/Start is pressed 2024-06-22 08:18:38 +10:00
UnknownShadow200 73ea4968bc Dreamcast: Be a little bit more efficient in clipping by using z > 0 instead of z > -w 2024-06-21 23:54:24 +10:00
UnknownShadow200 ebfa704e08 PS2: Improve split screen rendering a bit, but still broken 2024-06-21 22:22:18 +10:00
UnknownShadow200 402bdb1b57 Implement scissoring for Direct3D9/11/OpenGL too 2024-06-21 21:08:57 +10:00
UnknownShadow200 7485956415 Split up viewport setting into viewport and scissor 2024-06-21 20:45:30 +10:00
UnknownShadow200 7744ce6d32 PS2: Fix graphics again, crash on exit, print not working properly 2024-06-21 20:19:32 +10:00
UnknownShadow200 655850e81a Dreamcast: simplify code a bit more 2024-06-21 19:25:02 +10:00
UnknownShadow200 e91ce96900 Split up socket_connect into creation and connect calls 2024-06-21 11:38:23 +10:00
UnknownShadow200 fb54ec45ec 3DS: Try fixing chat open freeze 2024-06-20 22:45:09 +10:00
UnknownShadow200 6c778824a1 3DS: WIP tidying up suspend/restore code 2024-06-20 22:25:51 +10:00
UnknownShadow200 f3326f4f17 Consoles: Make Quit Game more stable 2024-06-20 22:14:42 +10:00
UnknownShadow200 5d31caf57b Vita: Be more specific for GPU alloc failures 2024-06-20 19:37:47 +10:00
UnknownShadow200 af3b4ed6d3 Slightly tidy up some console makefiles 2024-06-20 19:03:55 +10:00
UnknownShadow200 b72d7027f5 Wii U: Try to properly init keyboard 2024-06-20 07:37:26 +10:00
UnknownShadow200 f6666d59b2 GameCube/Wii: Implement fog 2024-06-19 18:38:20 +10:00
UnknownShadow200 3275675b8e Include more minified X11 headers 2024-06-19 17:33:24 +10:00
UnknownShadow200 edf81f7a71 Try to be more compatible with older systems 2024-06-19 12:31:30 +10:00
UnknownShadow200 e8f6800096 PS2: WIP split screen 2024-06-18 21:38:41 +10:00
UnknownShadow200 924a19e078 Allow window backends to override window scale dimension units, e.g. for PS2 2024-06-18 20:44:09 +10:00
UnknownShadow200 f5bed6ff69 Save 32kb from custom_models array by avoiding pointless padding 2024-06-18 17:00:41 +10:00
UnknownShadow200 6153ff8c8a Dreamcast: Optimise vertex transform by a couple of cycles 2024-06-18 08:37:09 +10:00
UnknownShadow200 74f3c424e8 Consoles: Allow using A button as 'action' button in menus in-game too 2024-06-17 23:20:58 +10:00
UnknownShadow200 5a4bad4da4 Consoles: Support encrypted options by using a key specific to the console type, rather than either a per console ID or failing altogether
This is sufficient to ensure that passwords can't be simply decrypted as plaintext and can't easily be copied to/from PC/mobile devices, which is good enough
2024-06-17 22:58:13 +10:00
UnknownShadow200 59e402dccd Avoid exporting FreeType symbols in builds compiled using Makefile, since that can conflict with system freetype libraries 2024-06-17 21:39:26 +10:00
UnknownShadow200 a8022a70b3 Lazy load 1D atlases in LOWMEM builds 2024-06-17 20:39:03 +10:00
UnknownShadow200 e32b5572a0 DS: Change error message for when network access isn't working 2024-06-17 20:09:40 +10:00
UnknownShadow200 7b7d7f45c3 Add more warnings to makefile by default 2024-06-17 19:54:29 +10:00
UnknownShadow200 1069733086 More WIP on moving to taking native paths 2024-06-17 19:40:50 +10:00
UnknownShadow200 932fca0b0b More WIP on moving to taking native paths 2024-06-17 18:58:11 +10:00
UnknownShadow200 7899dd51d5 WIP on moving to taking native paths 2024-06-17 18:18:05 +10:00
UnknownShadow200 94cc83d369 Change directory enumeration callbacks to having a 'is_directory' parameter 2024-06-17 07:23:07 +10:00
UnknownShadow200 cade7453e4 PS2: Really get directory iteration working 2024-06-16 12:52:30 +10:00
UnknownShadow200 c3fcb0edf5 PS2: Attempt to support directory iteration 2024-06-16 08:38:42 +10:00
UnknownShadow200 54cd0e18e2 Dreamcast: Store options.txt to the VMU if can't use an SD card 2024-06-16 08:04:24 +10:00
UnknownShadow200 8dc49de72f SoftGPU: Fix a little bit more, but doesn't work still 2024-06-15 21:21:02 +10:00
UnknownShadow200 44d0197e53 SoftGPU: Partially working near plane clipping 2024-06-15 20:38:55 +10:00
UnknownShadow200 525dfd8e9c PS2: Optimise triangle drawing to use larger GIF packets, instead of 1 GIF packet per triangle 2024-06-15 16:20:06 +10:00
UnknownShadow200 594abe09bf PS2: Fix alpha testing and depth writing 2024-06-15 09:50:12 +10:00
UnknownShadow200 c949f0ca8f PS2: Fix blending issues 2024-06-15 09:21:01 +10:00
UnknownShadow200 3787a48c64 PS2: Texture animations, coloured only vertices support 2024-06-15 08:34:21 +10:00
UnknownShadow200 212c5b23e2 PS2: Implement double buffering 2024-06-14 21:17:32 +10:00
UnknownShadow200 f486f74dcf PS2: Fix textures appearing slightly offset 2024-06-14 20:47:13 +10:00
UnknownShadow200 662d47505f PS2: Add mouse support maybe 2024-06-14 20:34:34 +10:00
UnknownShadow200 2b7541caee PS2: Fix stuck initialising on actual hardware 2024-06-14 19:41:02 +10:00
UnknownShadow200 09da2e6874 PS2: Fix wrong DMA usage 2024-06-14 18:14:55 +10:00
UnknownShadow200 b7d224e5f1 PS2: Make fallback terrain texture look a bit better 2024-06-14 17:50:58 +10:00
UnknownShadow200 77ae580467 PS2: Properly initialise GS before displaying launcher 2024-06-14 17:02:31 +10:00
UnknownShadow200 4873a854bf PS2: Don't shutdown GIF DMA channel when resetting GFX state 2024-06-14 08:28:14 +10:00
UnknownShadow200 6dcc9ec7e3 Audio: Now pass chunks in QueueChunk too 2024-06-14 07:19:25 +10:00
UnknownShadow200 e7a0619e47 Move more things to use input binds directly 2024-06-13 21:55:40 +10:00
UnknownShadow200 39627876d2 Document web requests/responses directly in LWeb.c 2024-06-12 20:46:17 +10:00
UnknownShadow200 c45a8149f7 Dreamcast: Fix held block being invisible 2024-06-12 20:20:32 +10:00
UnknownShadow200 6694f05ac5 Switch: Simplify audio code a bit 2024-06-12 19:13:21 +10:00
UnknownShadow200 0daccab319 Dreamcast: Simplfy code a bit 2024-06-12 18:34:02 +10:00
Jochen Sch„fer 7d1fe56fd2 Fixed crash at exit. Implemented missing functions after merge. 2024-06-12 09:05:53 +02:00
UnknownShadow200 173b68aff6 Terminal: add middle/right mouse on unix backend 2024-06-12 07:49:33 +10:00
UnknownShadow200 4778001348 Terminal: Try to get camera movement working 2024-06-11 23:12:24 +10:00
UnknownShadow200 1668edf45a Terminal: Try to fix colours on mac, fix launcher and in-game windows overlapping each other 2024-06-11 22:54:59 +10:00
UnknownShadow200 0927f33763 Terminal: Sort of works on mac terminal now too 2024-06-11 18:19:14 +10:00
UnknownShadow200 c25f248b03 Termina: Fix can't quit 2024-06-11 07:59:37 +10:00
UnknownShadow200 73608cd118 Windows: Terminal mouse/key input sort of works 2024-06-11 07:52:12 +10:00
UnknownShadow200 472f901ed5 Terminal: Fix output and not receiving input events on Windows 2024-06-11 00:16:51 +10:00
UnknownShadow200 db7700fb4b Makefile: Add 'make terminal' case, and fix 'make clean' not working under msys environment 2024-06-10 23:06:24 +10:00
Jochen Sch„fer 75660165c5 Merge remote-tracking branch 'origin/master' into os2 2024-06-10 08:39:40 +02:00
UnknownShadow200 c9b1c04924 Try to better support non glibc systems 2024-06-10 09:50:58 +10:00
UnknownShadow200 08e5d21d4b Classic mode should only show players up to 64 blocks away 2024-06-10 08:41:00 +10:00
UnknownShadow200 25ecbf379e Fix ModernGL linux builds oops 2024-06-10 08:00:23 +10:00
UnknownShadow200 e6d19d7ca1 Dreamcast: Tidy up the assembly a bit 2024-06-09 12:36:55 +10:00
UnknownShadow200 7f37bb8ddc Mac classic: I/O sort of works 2024-06-09 10:29:12 +10:00
UnknownShadow200 0790d0662a Mac classic: Directory creation works 2024-06-09 09:36:20 +10:00
UnknownShadow200 8ef3bba286 Mac classic: Support resizing and fix not compiling with multiversal headers 2024-06-09 08:34:31 +10:00
UnknownShadow200 28a0929b6d 32 bit macOS workflow test 2024-06-08 22:43:54 +10:00
UnknownShadow200 433b6eaa08 Simplify OpenGL includes 2024-06-08 22:07:01 +10:00
UnknownShadow200 dd766b1b8a Better compatibility with older mac SDK 2024-06-08 20:40:16 +10:00
UnknownShadow200 8c96150937 Fix touch UI builds 2024-06-08 14:00:40 +10:00
UnknownShadow200 d36f8dab79 WIP on redoing input binds to support multiple bindings to same button 2024-06-08 13:52:34 +10:00
UnknownShadow200 d3bb45337a Mac classic: Fix keyup events not being received 2024-06-08 12:47:50 +10:00
UnknownShadow200 549719cc34 Classic Mac: Disable non-working audio and networking to reduce file size, add to readme 2024-06-08 12:03:52 +10:00
UnknownShadow200 e742a26739 DS: Support enumerating files in directory 2024-06-08 11:45:55 +10:00
UnknownShadow200 93c18b6177 Mac classic: Save 90kb from 68k and 120kb PPC builds by using own cut down console log 2024-06-08 10:22:02 +10:00
UnknownShadow200 e2a4fc1205 Mac classic: Avoid allocating second offscreen framebuffer when possible 2024-06-08 09:11:25 +10:00
UnknownShadow200 72ea74f27d SoftGPU backend supports strided colour buffers now 2024-06-08 08:54:50 +10:00
UnknownShadow200 09ba1e4017 WIP supporting launcher framebuffers with different sizes 2024-06-08 08:35:14 +10:00
UnknownShadow200 e89731accd Try to avoid breaking plugins 2024-06-07 22:50:33 +10:00
UnknownShadow200 c1f4104ddd SoftGPU: Add faster path for 2D triangles 2024-06-07 17:47:38 +10:00
UnknownShadow200 c2be079943 Save a few instructions for chunk updating checks 2024-06-07 13:17:30 +10:00
UnknownShadow200 0c8d8a04ad Add actions workflow for Mac Classic 2024-06-07 07:50:57 +10:00
UnknownShadow200 06dc140534 Fix OpenGL 1.0 mode 2024-06-06 23:07:57 +10:00
UnknownShadow200 343bd7413a OpenGL 1.0 fallback attempt 2024-06-06 22:49:47 +10:00
UnknownShadow200 14f3b610e8 Mac classic: Support multiverse headers too 2024-06-06 22:01:01 +10:00
UnknownShadow200 2913551bbe Tidy up legacy opengl 1.1 fallback code 2024-06-06 21:39:01 +10:00
UnknownShadow200 f780f204d5 oops 2024-06-06 20:48:04 +10:00
UnknownShadow200 e9fc3024c4 SDL2/SDL3: Add icon and makefile support 2024-06-06 18:40:21 +10:00
UnknownShadow200 7ff8eddb4b Enable CustomModels in LOWMEM builds too 2024-06-06 18:00:37 +10:00
UnknownShadow200 c6b9d34184 SoftGPU: Simplify barycentric coordinate calculation to increase performance
Flatgrass world: 57 -> 72 FPS, Vanilla world: 26 -> 34 FPS
2024-06-05 23:05:39 +10:00
UnknownShadow200 dfd12d8c9f Be more consistent with depth write enabling/disabling 2024-06-05 22:04:28 +10:00
UnknownShadow200 8800578b65 Change SoftGPU triangle rasteriser to use more standard style 2024-06-05 19:04:53 +10:00
UnknownShadow200 74fa5daf7c Add back Math_Sin/Cos for certain plugins 2024-06-05 18:12:24 +10:00
UnknownShadow200 98f7d2126d Add a safer way of setting socket addresses 2024-06-05 18:05:38 +10:00
UnknownShadow200 77e1786d29 Simplify graphics backend macros 2024-06-05 17:36:39 +10:00
UnknownShadow200 f37100231f SoftGPU: Make blending a bit more efficient 2024-06-05 12:55:31 +10:00
UnknownShadow200 e7e50b6164 Try to fix opening graphics menu crashing on N64 2024-06-05 12:28:52 +10:00
UnknownShadow200 483c7b6b07 Use Math_CosF/SinF in all cases 2024-06-05 12:24:17 +10:00
UnknownShadow200 6be13e0951 Boost SoftGPU backend performance a little bit more
On test flat world, FPS went from 45 to 47
2024-06-05 07:49:20 +10:00
UnknownShadow200 5b20773092 WIP on tidying up OpenGL 1 backend a bit 2024-06-04 22:37:48 +10:00
UnknownShadow200 ba68f4c625 Allow naming mutexes/waitables 2024-06-04 20:26:11 +10:00
UnknownShadow200 f8b388551d Move interop files into more appropriate files 2024-06-04 20:09:59 +10:00
UnknownShadow200 0c3aa4e1a4 Mac classic: Keyboard input somewhat works now 2024-06-04 19:48:22 +10:00
UnknownShadow200 b6539ef09c Increase minimum memory size for PowerPC build 2024-06-04 18:11:27 +10:00
UnknownShadow200 7af729335e
Merge pull request #1208 from ClassiCube/MacClassic
Optimise performance for Mac OS classic a bit
2024-06-04 17:46:27 +10:00
UnknownShadow200 ed1eb7265e Better Mac OS 6 compatibility 2024-06-04 17:35:31 +10:00
UnknownShadow200 79078b7cc6 Mac classic: Build with CPU optimisations on at least 2024-06-04 17:24:45 +10:00
UnknownShadow200 4f732af28b Optimise SoftGPU backend a bit
On test linux system, FPS went from 31 to 33
2024-06-04 17:20:00 +10:00
UnknownShadow200 f50afc5c24 Mac OS: Try to support fast blitting 2024-06-04 12:04:30 +10:00
UnknownShadow200 c0087369f0 Try again with re-declaring system header functions 2024-06-04 08:00:06 +10:00
UnknownShadow200 19c9c15e62 Mac classic: Import some functionality directly 2024-06-04 07:37:15 +10:00
UnknownShadow200 ca8f617b1b Mac classic: Split into 68k and PPC makefiles 2024-06-03 22:54:45 +10:00
UnknownShadow200 3caa4d41c9 Mac classic: Mouse input sort of works 2024-06-03 21:18:51 +10:00
UnknownShadow200 c7e994658e Classic macOS: Avoid stdlib 2024-06-03 18:58:03 +10:00
UnknownShadow200 2fe99c24ac More fixes 2024-06-03 18:15:17 +10:00
UnknownShadow200 bccf27f29f Untested fixups 2024-06-03 17:41:15 +10:00
UnknownShadow200 6fbc7a6301
Merge pull request #1205 from EGAMatsu/master
Preliminary MacOS Classic Work (It runs, just not good)
2024-06-03 17:25:30 +10:00
EGAMatsu a7ae678420 Final push for the early morning, tired. 2024-06-03 02:09:14 -05:00
EGAMatsu 27b22e8765 Use console-style launching (App just closes, but it's a start.) 2024-06-03 02:05:31 -05:00
EGAMatsu 51e3580700 Begin to work on getting the process system working (Single-Process/Window) 2024-06-03 01:43:10 -05:00
EGAMatsu e57fcd3a9e EXTREMELY placeholder input for testing. 2024-06-03 01:30:08 -05:00
EGAMatsu 7634039864 Fix window creation func. 2024-06-03 00:40:58 -05:00
EGAMatsu ebe28eea87 Quickly fix the RGB colors to be a bit closer too the actual math needed. 2024-06-03 00:23:51 -05:00
EGAMatsu f393d0763f Renderer Working! 2024-06-03 00:20:36 -05:00
EGAMatsu c5f6a48910 Blit image to window, can't verify it works since it crashes due to broken netcode. 2024-06-02 20:18:54 -05:00
EGAMatsu 3b73fe8803 Quickly make the code a bit prettier/ 2024-06-02 18:05:08 -05:00
EGAMatsu a0087e75fb Ditto; But the window SHOULD be centered, and have the correct size. 2024-06-02 18:04:17 -05:00
UnknownShadow200 018d8f8769 Revert camera changes to fix crashing plugins 2024-06-03 07:45:51 +10:00
EGAMatsu 7927025ab0 Logger window vanished, and a window attempts to be created, but the Window crashes, thus, the program ends. 2024-06-02 16:37:24 -05:00
EGAMatsu d2b3831fcc Begining to try getting MacOS Classic to **run** at all. 2024-06-02 16:22:15 -05:00
UnknownShadow200 d639c66cf5 Classic mac stuff 2024-06-02 22:18:19 +10:00
UnknownShadow200 d28cef938e Classic mac stuff 2024-06-02 20:17:56 +10:00
UnknownShadow200 accb1d4af4 maybe disable lowmem build for Wii 2024-06-02 07:46:59 +10:00
UnknownShadow200 1587dd7f65 Fix last commit 2024-06-01 20:19:55 +10:00
UnknownShadow200 e13917ec44 Add Window_PreInit that's called before loading options and initing platform 2024-06-01 20:07:50 +10:00
UnknownShadow200 9db8b20f08 PS1 workflow 2024-06-01 18:11:21 +10:00
UnknownShadow200 cbaf9a8386 Avoid implicit reliance on memcpy due to large structure copy 2024-05-31 21:39:13 +10:00
UnknownShadow200 2d362dcd01 Avoid even more stdlib 2024-05-31 20:12:28 +10:00
UnknownShadow200 cbaf42c886 Avoid more stdlib functions with FreeType 2024-05-31 08:03:54 +10:00
UnknownShadow200 bbda33cd5a Add update links for FreeBSD, NetBSD, Windows ARM 2024-05-30 19:56:34 +10:00
UnknownShadow200 b3716e259e Avoid stdlib a bit more with FreeType 2024-05-30 17:35:43 +10:00
UnknownShadow200 bd878f464a macOS: Add xcode project 2024-05-29 20:53:48 +10:00
UnknownShadow200 a5b80f2390 N64/Saturn/PS1: Disable multiplayer stuff on main menu 2024-05-29 20:46:46 +10:00
UnknownShadow200 8c014a5d26 GUIs that grab input should always prevent all normal actions 2024-05-29 17:48:49 +10:00
Jochen Sch„fer 8923d27cf0 Fixed some bugs 2024-05-28 11:02:32 +02:00
Jochen Sch„fer bf9db200f4 Corrected merge 2024-05-28 10:49:24 +02:00
Jochen Sch„fer f09394cdd5 Merged upstream 2024-05-28 10:45:06 +02:00
Jochen Sch„fer ccbfd3d003 Some progress 2024-05-28 09:14:48 +02:00
UnknownShadow200 245d470a39 Use more conditionally compiled code via if/else instead of via preprocessor 2024-05-28 11:51:32 +10:00
UnknownShadow200 264106c526 Avoid breaking plugin backwards compatibility 2024-05-27 09:39:26 +10:00
UnknownShadow200 aefed23229 iOS: Change updater message because you don't need to compile source code to update anymore 2024-05-26 18:49:42 +10:00
UnknownShadow200 0e993ff6d4 Move autogenerated header files out of src directory 2024-05-26 18:04:17 +10:00
UnknownShadow200 ce20154942 Always enable ModernGL builds in Updates menu 2024-05-26 07:56:50 +10:00
UnknownShadow200 b28f1a802d macOS: Try to reduce warnings 2024-05-25 19:11:14 +10:00
UnknownShadow200 3302963305 Unify ARM64 and Intel64 macOS workflows 2024-05-25 18:21:54 +10:00
UnknownShadow200 a7d2921a85 SoftGPU backend: Fix can't take screenshots 2024-05-25 17:24:41 +10:00
UnknownShadow200 b3a1d45f75 Actions: Build for macOS arm64 2024-05-25 17:15:50 +10:00
UnknownShadow200 9d0f87abd7 Oops 2024-05-25 16:42:53 +10:00
UnknownShadow200 02c7ae5da7
Merge pull request #1197 from ClassiCube/BindsRewrite
Support two button bind mappings
2024-05-25 16:32:56 +10:00
UnknownShadow200 304dd6c327 Fix two button mappings not behaving properly 2024-05-25 16:18:00 +10:00
TomCube f51f8d02a2
Merge branch 'ClassiCube:master' into master 2024-05-24 19:55:41 -05:00
UnknownShadow200 2331c3d445 Change fly/noclip/speed gamepad mappings to two button defaults 2024-05-25 09:31:25 +10:00
UnknownShadow200 c1670ba583 WIP on support for 2 button binds 2024-05-25 09:26:43 +10:00
UnknownShadow200 16f0900198 Rename keybinds to more general input binds 2024-05-24 17:58:27 +10:00
UnknownShadow200 b45dfc9176 Dreamcast: Allow binding D and C buttons too 2024-05-24 17:18:49 +10:00
Goodlyay 563a941ead Correct WoM style hacks description 2024-05-23 17:01:26 -07:00
UnknownShadow200 077b3956fe Change terminal backend to not use printf 2024-05-24 09:52:28 +10:00
Goodlyay ac3ab3b84e Give a description for WoM style hacks in the hacks settings menu 2024-05-23 16:48:37 -07:00
UnknownShadow200 e3a5f77502 Oops 2024-05-23 20:15:22 +10:00
UnknownShadow200 bce813602e Android: Controller support, maybe 2024-05-23 19:55:30 +10:00
UnknownShadow200 0a28e7fa7e Horizontal scroll wheel support (untested) 2024-05-23 18:17:05 +10:00
UnknownShadow200 8b58359c12 Fix direct3d9 backend 2024-05-23 07:10:20 +10:00
UnknownShadow200 20909895d6 Fix wrong output on Powershell 2024-05-22 23:24:03 +10:00
UnknownShadow200 93c0286739 Termina: Keyboard buttons now release after 1 second, display works on Windows sorta 2024-05-22 22:52:46 +10:00
UnknownShadow200 079e83dae6 Sort of get terminal backend to work on windows 2024-05-22 21:39:43 +10:00
UnknownShadow200 8630a87cc7 oops 2024-05-22 20:03:02 +10:00
UnknownShadow200 1732750da9 Try building SDL2 for Linux too 2024-05-22 19:55:04 +10:00
UnknownShadow200 30d3fe47a8 simplify overriding graphics backend 2024-05-22 19:47:19 +10:00
UnknownShadow200 3aa1f9749f Allow easily overriding default window backend 2024-05-22 18:35:43 +10:00
UnknownShadow200 7ef901715c Build fixes 2024-05-22 18:09:40 +10:00
UnknownShadow200 dcf25086c6
Merge pull request #1195 from ClassiCube/ModernLighting
Add "Fancy lighting"
2024-05-22 17:35:40 +10:00
UnknownShadow200 855923abf2 Try to restore terminal state on exit 2024-05-22 07:51:10 +10:00
UnknownShadow200 1d205638ed Respond to resize and maybe fix macOS compilation 2024-05-22 07:13:30 +10:00
UnknownShadow200 6b25058f68 Try to fix mouse input 2024-05-21 23:29:37 +10:00
UnknownShadow200 ec2a492687 Terminal backend: Double window vertical resolution 2024-05-21 22:09:32 +10:00
UnknownShadow200 454e41fcd3 Add a terminal/CLI window backend 2024-05-21 21:31:14 +10:00
Goodlyay f82cdb7a7b Some more minor tidyup 2024-05-20 23:09:54 -07:00
UnknownShadow200 1290640a7c Some minor tidyup 2024-05-20 22:21:50 +10:00
UnknownShadow200 48c5c0dc88 Start making scroll wheel bindable 2024-05-20 21:55:39 +10:00
UnknownShadow200 dfe2ae1dd1 Increase default map size in classic mode to match original classic 2024-05-20 20:51:09 +10:00
UnknownShadow200 99c3c07988 PS2: Really fix this time 2024-05-20 20:01:16 +10:00
UnknownShadow200 f4865e4376 Try to fix Dreamcast/PS2 ports failing to compile 2024-05-20 07:25:57 +10:00
UnknownShadow200 e91fff6f85 TNT shouldn't blow up in singleplayer when in classic mode 2024-05-19 22:31:48 +10:00
Goodlyay 21ee159b2c Don't pointlessly reload chunks if lighting mode is the same as before 2024-05-18 21:16:50 -07:00
Goodlyay 9d83d8a345 Merge branch 'master' into ModernLighting 2024-05-18 17:33:24 -07:00
Goodlyay f4aaced448 Support server changing, locking, and reverting lighting mode 2024-05-18 17:32:26 -07:00
UnknownShadow200 b24e2cb56b Linux: Try adding AltGr support 2024-05-19 08:14:00 +10:00
UnknownShadow200 9d7bde7218 Windows/Linux: Add more special keys support 2024-05-18 20:19:11 +10:00
Goodlyay 64c4582b01 Merge branch 'master' into ModernLighting 2024-05-18 00:20:58 -07:00
Goodlyay 3e797338db Fix out of bounds colors in fancy lighting 2024-05-17 18:09:04 -07:00
UnknownShadow200 a9929e52b0 Saturn: Double performance and fix timing sort of 2024-05-17 23:14:59 +10:00
Goodlyay 44d808016c Fix grass physics in singleplayer 2024-05-17 02:16:50 -07:00
UnknownShadow200 1e765919ea More multimedia keys 2024-05-17 18:31:59 +10:00
UnknownShadow200 0ad6d4e8ba Windows: Add support for binding to some media keys 2024-05-17 17:53:36 +10:00
Goodlyay 883d93c6b8 Change "Fancy lighting" option bool to "Lighting mode" enum
Fully rename modern lighting to fancy lighting internally
Other misc code cleanup and rename "sun" light type to "lamp"
2024-05-16 20:21:38 -07:00
UnknownShadow200 a5dfd2ef8b All graphics backends can now see if in 2D mode or not 2024-05-16 21:28:10 +10:00
UnknownShadow200 2d5e0e2edf Fix NetBSD workflow 2024-05-16 18:47:09 +10:00
UnknownShadow200 a3e559add9 Linux/macOS: Support 4 extra buttons, partially addresses #1186 2024-05-16 17:20:17 +10:00
Goodlyay d18a8fe988 Fix overly bright env colors 2024-05-15 22:12:44 -07:00
Goodlyay fd7988e492 Support LavaLight and LampLight colors 2024-05-15 21:42:40 -07:00
Goodlyay 40f454b602 Support LavaLight and LampLight env color part 1 2024-05-15 20:41:39 -07:00
Goodlyay c4235fa653 Support blocks casting "sun" color 2024-05-15 18:46:23 -07:00
Goodlyay a994bf367c Update lighting appropriately when block definitions are changed 2024-05-15 17:04:18 -07:00
UnknownShadow200 29859ca9ab Dreamcast: Unify assembly 2024-05-15 22:00:24 +10:00
Goodlyay f1e7cad094 Rename and clarify lighting-related options 2024-05-15 03:54:27 -07:00
Goodlyay a9c5c7167c Support BlockLight EnvColor variable 2024-05-15 03:38:46 -07:00
UnknownShadow200 9a69e3fac6 Fix order of buttons in PauseScreen to work better for gamepad input 2024-05-15 20:17:06 +10:00
Goodlyay d401b13cbb Fix wrong axis in Z light unspread 2024-05-14 16:50:57 -07:00
Goodlyay c93a3c56c2 Fix missing return value in Block_WriteFullBright (thanks Unk) 2024-05-14 01:31:09 -07:00
UnknownShadow200 8621415f50 Dreamcast: Move clipflag calculation into vertex transform code 2024-05-14 17:52:02 +10:00
Goodlyay e82fb20943 Not to jinx it, but lighting updates seems to fully work now
TODO: Handle "sun" color light updates and calculations
2024-05-14 00:15:40 -07:00
Goodlyay 1077948a13 WIP remove lights when blocks update 2024-05-13 20:54:37 -07:00
Goodlyay 0b597fbb3f Light updates when placing light sources now 2024-05-13 14:40:14 -07:00
UnknownShadow200 effa39f3aa Merge remote-tracking branch 'origin' into ModernLighting 2024-05-13 22:56:18 +10:00
UnknownShadow200 66cf05667c Try to be a bit more efficient in LightHint 2024-05-13 22:54:26 +10:00
UnknownShadow200 1151eb473d Fix can't manually run workflows on non-master branches 2024-05-13 22:24:47 +10:00
UnknownShadow200 779c75022b Make it compile with non-MSVC compilers 2024-05-13 21:35:20 +10:00
UnknownShadow200 6b089ccb22 Xbox: Use proper way of infinite timeout when waiting for a signal 2024-05-13 21:10:49 +10:00
Goodlyay 957d89ecd0 Break lighting update 2024-05-13 02:06:28 -07:00
UnknownShadow200 e0970e1c9f Xbox: Add support for disabling stuff that doesn't work in cxbx-reloaded 2024-05-12 21:52:10 +10:00
Goodlyay b26e9fc3a9 Lighting now updates in an unoptimized way when blocks are changed 2024-05-12 01:10:34 -07:00
Goodlyay d759277961 Don't pointlessly allocate memory for chunks with no block lighting data 2024-05-11 20:39:40 -07:00
Goodlyay 5221a827c7 revert "always use sunlight color" test 2024-05-11 19:55:37 -07:00
Goodlyay 4e01e2ac67 Less code duplication when calculating lighting
Also don't actually include sunlight in chunkLightingData as it's already calculated from classic heightmap.
TODO: don't waste memory allocating lighting data for chunks that have no light-casting block influence
2024-05-11 19:44:35 -07:00
UnknownShadow200 8a3f02dc0c Xbox: Don't pointlessly create unused index buffer 2024-05-12 11:27:47 +10:00
Goodlyay 808819a045 Add a generic, reusable queue for future lighting logic 2024-05-10 23:18:05 -07:00
UnknownShadow200 4a96f653bf Direct3D11: Fix 3D anaglyph not working 2024-05-11 11:12:03 +10:00
UnknownShadow200 43a49d48cc Xbox: Be a little more efficient in draw calls 2024-05-11 11:12:02 +10:00
Goodlyay 04cbf398eb Merge branch 'master' into ModernLighting 2024-05-09 23:38:28 -07:00
UnknownShadow200 0bcc2c09c0 Allow triggering workflows manually 2024-05-10 12:49:51 +10:00
Goodlyay df3e6834d6 Fix setting spawn with -noclip sometimes allowing clipping through blocks 2024-05-09 19:38:40 -07:00
UnknownShadow200 7fd7d489f1 VirtualKeyboard: L/R append @ and /, also fFix accidentally initing with placeholder instead of initial text 2024-05-09 23:08:46 +10:00
UnknownShadow200 c4e20e94f4 Avoid pointer sign conversion warning when parsing content length, should also fix DS build 2024-05-09 21:43:50 +10:00
UnknownShadow200 0035ffc9cd Upload .bin/.cue for Saturn build 2024-05-09 21:30:46 +10:00
UnknownShadow200 5bd2d6848a Saturn: Try to fix chunk building insta crashing the game 2024-05-09 20:53:46 +10:00
UnknownShadow200 3ee1b1e92a Mobile: Fix can't click on thumbstick widget to move anymore after going in-game, quitting, then going in-game again 2024-05-08 22:59:24 +10:00
UnknownShadow200 3ce74bf30e PS1: Fix texture brightness and blocks in inventory 2024-05-08 22:03:59 +10:00
UnknownShadow200 b6ff26aa5b PS1: Backface culling and better VRAM usage 2024-05-08 21:29:49 +10:00
UnknownShadow200 a4848d0f38 PS1: 10 to 15 FPS, sorta fix 2D rendering 2024-05-08 19:26:09 +10:00
UnknownShadow200 137705c51d 360: Untested analog controller support 2024-05-08 18:30:11 +10:00
Goodlyay c601405db0 Now changing sun/shadow color updates modern lighting colors 2024-05-07 18:03:13 -07:00
Goodlyay ff3752a26d Fix ModernLighting_OnBlockChanged function signature 2024-05-07 14:33:42 -07:00
UnknownShadow200 fe7fd614da Dreamcast: Slightly optimise clipping 2024-05-07 19:15:08 +10:00
Goodlyay 5b25d2a0f3 Move ModernLighting logic into its own source file 2024-05-07 02:05:56 -07:00
UnknownShadow200 4f0b125f9b Change back Camera.GetPosition argument list to avoid breaking plugins 2024-05-07 18:39:26 +10:00
Goodlyay 2c4a7e2a6d Merge branch 'master' into ModernLighting 2024-05-07 00:48:22 -07:00
Goodlyay 35beb67d6a Buggy but compiles sans Windows_WiiU.cpp change 2024-05-07 00:41:31 -07:00
Jochen Sch„fer f8c450e962 Changes 2024-05-07 09:14:02 +02:00
UnknownShadow200 d3f9c5ab84 Windows ARM builds for github actions 2024-05-05 21:37:55 +10:00
UnknownShadow200 c70cc1932c PS3/Vita: Disable low memory mode 2024-05-05 19:20:44 +10:00
UnknownShadow200 b55dadf50e Try to fix rare download issues 2024-05-05 18:25:46 +10:00
Jochen Sch„fer f41071c25b Implemented audio for OS/2 by using KAI 2024-05-05 09:26:18 +02:00
UnknownShadow200 ffa128c854
Merge pull request #1183 from ClassiCube/AdvLightingFix
Adv lighting: make entities lit in fully bright blocks
2024-05-05 16:59:43 +10:00
UnknownShadow200 14685d704c GameCube/Wii: Very slightly faster rendering 2024-05-05 14:43:13 +10:00
UnknownShadow200 3081e4b304 Implement comment state tracking for Gfx_SetAlphaBlending 2024-05-04 21:22:53 +10:00
UnknownShadow200 fd1f6ef424 Implement comment state tracking for Gfx_SetAlphaTest 2024-05-04 12:35:18 +10:00
UnknownShadow200 7cfce0fb96 iOS: Compile with less warnings 2024-05-04 11:00:54 +10:00
UnknownShadow200 6f0918ee95 iOS: Set deployment target to 6.0 2024-05-04 08:57:39 +10:00
UnknownShadow200 798a2d6e1e Dreamcast: Increase powervr buffer size 2024-05-03 23:26:49 +10:00
UnknownShadow200 0b8f07f307 Add right version of last commit 2024-05-03 23:07:41 +10:00
UnknownShadow200 f1fdc2a177 Dreamcast: Try to optimise transform, and increase powervr buffer size 2024-05-03 22:53:42 +10:00
UnknownShadow200 b659b609b9 Use faster atan2 implementation since accuracy is not that important 2024-05-03 19:53:12 +10:00
Goodlyay dc59fc318a Adv lighting: make entities lit in fully bright blocks 2024-05-03 00:54:21 -07:00
UnknownShadow200 577d69153a Switch to classicube SDN for updates url 2024-05-03 17:02:05 +10:00
UnknownShadow200 1ee4c58fdd Webclient action 2024-05-02 22:23:34 +10:00
UnknownShadow200 7af80a9223 Virtual keyboard: X for backspace, Y for space 2024-05-02 21:03:39 +10:00
Goodlyay 400257da1a Merge branch 'master' into ModernLighting 2024-05-01 21:57:47 -07:00
UnknownShadow200 82529852f4 Test whether notify action works 2024-05-02 07:22:13 +10:00
UnknownShadow200 a9a90c91e3 Wii U: WIP splitscreen and non-gamepade input 2024-05-01 21:47:00 +10:00
UnknownShadow200 f2307da83a WiiU: Properly handle out of memory for textures 2024-05-01 20:31:19 +10:00
UnknownShadow200 91e16cabff WiiU: Set initial and hint text 2024-05-01 20:17:21 +10:00
UnknownShadow200 db96ee16a2 Also fallback if can't load a system font 2024-05-01 17:58:53 +10:00
UnknownShadow200 e98906b706 Always fallback to hardcoded font when default.png is missing 2024-05-01 17:48:54 +10:00
UnknownShadow200 72ea074fa4 WiiU: Add onscreen keyboard 2024-05-01 07:35:07 +10:00
UnknownShadow200 15d18206ff DS: Try to fix not loading internal SD card in DSi mode 2024-04-30 21:46:58 +10:00
UnknownShadow200 e52be3a30a DS: Fix freezing when going in-game without a texture pack 2024-04-30 20:43:00 +10:00
UnknownShadow200 a7da47e552 Fix last commit whoops 2024-04-30 17:34:54 +10:00
UnknownShadow200 e90e63e92c Fix grayscale encoded PNGs not being decoded correctly, fixes #1181 (Thanks rdebath) 2024-04-30 17:09:44 +10:00
TomCube e8a41d715d
Change help message of place command 2024-04-29 23:50:25 -05:00
TomCube 189efeef28
Use `Block_Parse` in place command 2024-04-29 23:46:41 -05:00
TomCube b67370c02b
Add place command 2024-04-29 23:28:53 -05:00
UnknownShadow200 574e0b578a WiiU: Switch to using GX api for drawing launcher
This will be necessary for virtual keyboard support
2024-04-30 12:26:55 +10:00
UnknownShadow200 d1320bd2c9 Consoles: Add exit button to bottom right of launcher menu 2024-04-30 12:09:15 +10:00
UnknownShadow200 5e5b4680e4 Fix multiple gamepads connected causing buttons to constantly flip flop between pressed and released, fix launcher not supporting holding gamepad buttons 2024-04-30 08:51:36 +10:00
UnknownShadow200 cc182416a5 Fix fonts list menu not saving custom added fonts 2024-04-30 07:55:06 +10:00
Jochen Sch„fer bf636a67e4 First implemenation of sound support for OS/2 via KAI 2024-04-29 19:49:47 +02:00
UnknownShadow200 d602caddde Add %e string formatter that auto adjusts whether to display the error number in decimal or in hex 2024-04-29 23:27:44 +10:00
UnknownShadow200 0cdcab1c2a iOS: Clicking onthe background dismisses onscreen keyboard 2024-04-29 22:02:18 +10:00
UnknownShadow200 f82b1ab6ce
Merge pull request #1178 from yomcube/master
Add MOTD command
2024-04-29 21:28:04 +10:00
UnknownShadow200 ddf842c86d Xbox: Fix singleplayer mode not rendering properly 2024-04-29 21:13:37 +10:00
UnknownShadow200 908077203e DS: Don't clear console after showing keyboard, also log if running in DS or DSi mode 2024-04-29 20:36:15 +10:00
UnknownShadow200 fec395d3c5 Android: Fix can't move or jump 2024-04-29 18:39:07 +10:00
TomCube 66a77e6242
Use `Chat_Add1` instead of `String_Format1` and `Chat_Add` 2024-04-28 20:47:16 -05:00
UnknownShadow200 d3c1ccf52d Fix last commit whoops 2024-04-29 08:24:48 +10:00
UnknownShadow200 207989a2f0 iOS: simplify flags decoding a bit 2024-04-29 07:42:55 +10:00
TomCube 1ebfbc9a6a
Add color to MOTD command output 2024-04-28 10:34:05 -05:00
TomCube d0350cff01
Add MOTD command 2024-04-28 10:27:15 -05:00
UnknownShadow200 04f8cad0cb Add missing java file 2024-04-28 23:05:15 +10:00
UnknownShadow200 35b7b570dc Android: WIP on the backend file too 2024-04-28 21:32:29 +10:00
UnknownShadow200 344ca3e089 Android: Add unused UI backend file and split out CCView class 2024-04-28 21:09:26 +10:00
UnknownShadow200 b61562a5c7 Touch UI: Allow left-aligning on-screen buttons 2024-04-28 19:27:41 +10:00
UnknownShadow200 da3a0f6154 Fix xbox 360 workflow 2024-04-28 12:37:10 +10:00
UnknownShadow200 f6b4967366 Release workflow 2024-04-28 11:21:09 +10:00
UnknownShadow200 020bf31dbd Switch to v4 for upload-artifact 2024-04-28 10:22:31 +10:00
UnknownShadow200 c219b15e84 Make workflows more consistent 2024-04-28 09:40:27 +10:00
UnknownShadow200 e013bb9f15 Combine some workflows, add notify success action 2024-04-28 09:11:15 +10:00
UnknownShadow200 ae3ac8cdb1 NDS: Optimise rendering to be a little bit faster 2024-04-27 23:24:31 +10:00
UnknownShadow200 d6c51983ac Simplify fallback terrain loading 2024-04-27 21:20:25 +10:00
UnknownShadow200 b45ac6630d DS: Use a majorly reduced onscreen console 2024-04-27 19:02:40 +10:00
Jochen Sch„fer f960bd07cd Merged upstream/master 2024-04-27 09:30:31 +02:00
Jochen Sch„fer d71b77ef68 OS/2 port. Blitting works. Key input not working. 2024-04-27 09:28:03 +02:00
Jochen Sch„fer 26cfcc18a3 Removed OS/2 code from SDL support 2024-04-27 09:19:34 +02:00
Jochen Sch„fer 92b81f76b5 Removed OS/2 code from SDL support 2024-04-27 09:16:24 +02:00
Jochen Sch„fer 56707c36d8 Removed OS/2 code from SDL support 2024-04-27 09:15:08 +02:00
UnknownShadow200 2bf387cd28 Download links for Switch and NDS 2024-04-27 14:41:55 +10:00
UnknownShadow200 f108f5e5e6 Even less double usage 2024-04-27 09:57:06 +10:00
UnknownShadow200 10bd6222be Move touch UI functionality to its own file 2024-04-27 08:44:03 +10:00
UnknownShadow200 7932a5be3c Use floats instead of doubles in more places 2024-04-26 20:42:12 +10:00
UnknownShadow200 047c390e70 Fix respawn point not being set (oops) 2024-04-26 20:07:11 +10:00
UnknownShadow200 d927560acc Fix pause screen not working with some graphics backends, oops 2024-04-26 19:35:08 +10:00
UnknownShadow200 b8fa769bbe DS: Enable backface culling 2024-04-26 17:44:22 +10:00
UnknownShadow200 715307f06f N64: Map fly/speed to dpad 2024-04-26 17:00:48 +10:00
UnknownShadow200 dcf3a1be3a Fix fallback terrain atlas not working properly with graphics backends that have minimum texture size requirements 2024-04-26 14:56:09 +10:00
UnknownShadow200 a58ede8911 In splitscreen mode, tie controller joystick input to a specific player 2024-04-26 13:39:27 +10:00
UnknownShadow200 4be7d08f20 Move more menus to new init method 2024-04-26 13:05:17 +10:00
UnknownShadow200 db9b620bc0 Dreamcast: Fix build from website crashing when going in-game 2024-04-26 11:58:23 +10:00
UnknownShadow200 084f1ecbaf Dreamcast: Fix game crashing when going back to menu 2024-04-26 11:45:48 +10:00
UnknownShadow200 483dbd9aff Dreamcast: Fix no debug logging messages 2024-04-26 11:35:26 +10:00
UnknownShadow200 93bd9bd1e1 Move more menus over to simpler init method 2024-04-26 10:43:21 +10:00
UnknownShadow200 0bc1b1c971 Xbox: Add splitscreen too 2024-04-26 07:51:18 +10:00
UnknownShadow200 efa7558960 Fix webclient whoops 2024-04-26 06:58:39 +10:00
UnknownShadow200 0ffc36133d Wii/GameCube: Enable split screen mode too 2024-04-25 22:44:53 +10:00
UnknownShadow200 2d307e6fc1 Dreamcast: Fix last commit oops 2024-04-25 22:19:53 +10:00
UnknownShadow200 6f5500d4e8 Dreamcast: WIP on split screen support 2024-04-25 22:07:33 +10:00
UnknownShadow200 b478c486a0 WIP on supporting splitscreen from launcher (Dreamcast and PS3 only ATM) 2024-04-25 21:49:10 +10:00
UnknownShadow200 3b0e842ede Process input from controllers past the first in some consoles 2024-04-25 20:30:24 +10:00
UnknownShadow200 35ad6372ff Fix last commit 2024-04-25 18:49:24 +10:00
UnknownShadow200 c7fd3a05f9 Simplify viewport setting 2024-04-25 18:36:49 +10:00
UnknownShadow200 791e96ed2d Splitscreen test 2024-04-25 18:10:09 +10:00
UnknownShadow200 6465c91b95 Fix last commit 2024-04-25 16:54:29 +10:00
UnknownShadow200 ca195d161f More player refactoring 2024-04-25 16:10:15 +10:00
UnknownShadow200 fcc903016b Further reduce use of LocalPlayer_Instance 2024-04-25 15:36:06 +10:00
UnknownShadow200 335279a634 More LocalPlayer refactoring 2024-04-25 14:36:30 +10:00
UnknownShadow200 8353881b50 Refactor player input 2024-04-25 13:27:16 +10:00
UnknownShadow200 31d13ba41e Allow altering graphics viewport (unfinished) 2024-04-25 11:30:18 +10:00
UnknownShadow200 029a59a836 Try to avoid using LocalPlayer_Instance so much 2024-04-25 11:10:12 +10:00
UnknownShadow200 e533f71e0f Controller inputs, add WIP port argument 2024-04-25 10:26:48 +10:00
UnknownShadow200 80abeb82ab Split up gamepad controller handling 2024-04-25 10:11:26 +10:00
UnknownShadow200 1b6bbbe6cf Fix last commit 2024-04-25 09:10:42 +10:00
UnknownShadow200 cf7b353572 Pass LocalPlayer instance explicitly in more places, rather than relying on an implicit global 2024-04-25 08:39:34 +10:00
UnknownShadow200 cbf8b01447 N64: Disable sounds and music 2024-04-24 21:58:31 +10:00
UnknownShadow200 6d555a3059 iOS: Try to fix corrupted pixels on button borders, add workflow 2024-04-24 21:35:36 +10:00
Jochen Sch„fer afbdc87ac7 Merge remote-tracking branch 'origin/master' into os2 2024-04-24 11:45:19 +02:00
Jochen Sch„fer 9298d1a677 Corrected preprocessor test to OS/2 2024-04-24 11:45:09 +02:00
UnknownShadow200 ade1769719 Saturn build for github actions 2024-04-24 08:00:56 +10:00
UnknownShadow200 92db4e2a9d Change workflows to use v4 upload 2024-04-23 21:26:29 +10:00
UnknownShadow200 1b3987a7da Dreamcast: Very minorly optimise vertex clipping 2024-04-23 11:36:39 +10:00
UnknownShadow200 81d697e3ec Dreamcast: Minorly optimise vertex transformation code by using hardcoded stride
The optimiser was interchanging the loops and unrolling them anyways, but was slightly limited because it couldn't make any assumptions about value of stride
2024-04-22 22:41:49 +10:00
UnknownShadow200 34e8b11919 Dreamcast: Minorly optimise by avoiding unnecessary vertex memcpy 2024-04-22 19:55:15 +10:00
UnknownShadow200 8dcfaca06a SoftGPU: Reduce fuzziness of 2D textures and fix alpha testing pixels still being drawn opaque 2024-04-22 18:39:28 +10:00
UnknownShadow200 d0172cbada
Merge pull request #1171 from josch1710/master
Support for opening URLs
2024-04-20 13:34:49 +10:00
UnknownShadow200 f30bbddbdc WiiU: Manage framebuffer buffers instead of relying on WHBLogConsole to do it 2024-04-20 09:28:46 +10:00
UnknownShadow200 2c5d0f5e77 WiiU: Draw launcher output on both screens 2024-04-20 08:46:39 +10:00
UnknownShadow200 95d5cd5e09 Move a few more menus to new widget init method 2024-04-20 07:14:04 +10:00
UnknownShadow200 12b1f8dbe1 iOS: Try to support older autorotate API 2024-04-19 23:21:04 +10:00
UnknownShadow200 82f9f7047e Wii U: Fix corrupted textures whoops 2024-04-19 22:43:32 +10:00
UnknownShadow200 e82c9c0a9b Try to fix status bar and checkbox label background colour issues on older iOS versions 2024-04-19 21:57:21 +10:00
UnknownShadow200 c849adb43a Fix music volume < 100 being distorted on Windows
Also fix older iOS devices getting stuck in a loop when opening in-game chat
2024-04-19 21:21:51 +10:00
UnknownShadow200 893912e0bf iOS: Fix labels not being transparent on old devices 2024-04-19 20:00:17 +10:00
UnknownShadow200 880f703a87 Allow loading fonts via open file dialog, try to reduce warnings on macOS 2024-04-19 19:26:30 +10:00
UnknownShadow200 629622e44c Allow creating textures from row stride that is different to image width 2024-04-19 17:27:44 +10:00
UnknownShadow200 1f8a3dbe96 Some options shouldn't apply in classic mode 2024-04-19 16:49:02 +10:00
UnknownShadow200 b2cb63a6e9 Saturn: Rendering kinda works 2024-04-19 07:41:51 +10:00
UnknownShadow200 c3878e3248 Saturn: Now it dies after one frame 2024-04-18 23:44:32 +10:00
UnknownShadow200 d77db06643 Saturn: In-game still doesn't work 2024-04-18 23:12:55 +10:00
UnknownShadow200 cf90a4d3a0 Saturn: Rendering launcher works sorta 2024-04-18 22:14:49 +10:00
UnknownShadow200 88046b4467 Saturn: Now runs a tiny bit before crashing due to out of memory 2024-04-18 21:06:41 +10:00
UnknownShadow200 ce7d07944a Saturn: Black screen that doesn't work 2024-04-18 19:18:05 +10:00
UnknownShadow200 dbbcf8bcd8
Merge pull request #1175 from Buwwet/crosshair_scale
Adds an option to modify the crosshair's scale in the GUI menu
2024-04-18 07:52:41 +10:00
UnknownShadow200 dcf7b303fb iOS: Use backwards compatible layout for checkboxes for pre iOS 6 2024-04-18 07:12:56 +10:00
UnknownShadow200 d22d934153 iOS: More pre 6.0 fixes 2024-04-17 22:22:59 +10:00
UnknownShadow200 b2bf81451f iOS: Support pre iOS 6.0 way of setting label text/color too, mostly 2024-04-17 21:16:43 +10:00
UnknownShadow200 2c07e5fdf1 iOS: Try to log unhandled objective C errors 2024-04-17 17:58:10 +10:00
UnknownShadow200 e492db93f6 Fix opening inventory with hidden block selected not displaying the block's details as the menu title 2024-04-17 17:42:14 +10:00
ricardo 382bb0dabf Moved the gui menu buttons so that they fit in a nice grid 2024-04-16 15:22:52 -06:00
UnknownShadow200 2ea26fcf5e Collapse more of readme by default, general tidy up 2024-04-16 21:26:38 +10:00
UnknownShadow200 cc2a8f4cb7 Xbox 360: Maybe in-game works, completely untested 2024-04-16 18:27:58 +10:00
ricardo cd3002e17e Added an option to modify the crosshair scale on gui options 2024-04-15 22:04:13 -06:00
UnknownShadow200 50ca3dc327 Use fallback 1x1 tile terrain.png if no texture pack can be loaded 2024-04-16 11:38:12 +10:00
Jochen Sch„fer f1494776e4 OS/2 specific branch created. Work on audio and window system done. 2024-04-15 12:13:11 +02:00
UnknownShadow200 6156b71436 Fix can't open hotkeys list menu due to recent commits 2024-04-15 19:43:05 +10:00
UnknownShadow200 c48188f215 Xbox 360: Workflow and maybe launcher works 2024-04-15 18:40:40 +10:00
UnknownShadow200 6b8c1c118b iOS: Fix missing touch UI 2024-04-15 17:56:06 +10:00
UnknownShadow200 24643471a7 3DS: Fix password/integer fields not behaving quite right 2024-04-14 22:42:14 +10:00
UnknownShadow200 e591bab6e6 PS2: Improve stability a bit 2024-04-14 22:23:48 +10:00
josch1710 56c88cab57
Merge branch 'ClassiCube:master' into master 2024-04-14 09:46:39 +02:00
UnknownShadow200 e20bf233aa Launcher: Double maximum input length for textbox inputs 2024-04-14 14:49:18 +10:00
UnknownShadow200 c8dfb45973 Make initial block face visibility calculation much faster by avoiding redundant work for most blocks
Reduces initial calculation time from ~11 ms to ~2 ms on my PC, and from ~1300 ms to ~130 ms on the DS
2024-04-13 23:10:18 +10:00
UnknownShadow200 873899d676 DS: Boost idle FPS from 40 to 60 in melonDS at least by disabling texture animations
Also boots FPS from 0.5 to 10 in PS1 build
2024-04-13 22:32:12 +10:00
UnknownShadow200 cb652983b0 PS1: Now alpha testing works 2024-04-13 20:23:24 +10:00
UnknownShadow200 d78fb8ed21 PS1: Texturing sort of works technically 2024-04-13 19:49:24 +10:00
UnknownShadow200 aa4fc4f218 Simplify UI code a little bit 2024-04-13 18:03:44 +10:00
UnknownShadow200 1a82ef84ce SoftGPU: Sort of renders properly now 2024-04-13 16:39:07 +10:00
UnknownShadow200 de69850731 SoftGPU: Fix clipped triangles not working properly 2024-04-13 16:23:29 +10:00
UnknownShadow200 cd647f8666 Software renderer backend works a little better 2024-04-13 09:36:23 +10:00
UnknownShadow200 4a438fe907 Enable dependency tracking in makefile, so that changing a .h automatically causes .c files using it to be automatically recompiled 2024-04-13 08:52:20 +10:00
Jochen Sch„fer 424ad6808e Fixed URL support 2024-04-12 11:22:22 +02:00
UnknownShadow200 4bda9ee2c1 Fix onscreen keyboard capital letters, make it sort of transparent too 2024-04-12 11:48:19 +10:00
UnknownShadow200 361859cd09 Wii/GameCube: Fix memory corruption when playing music 2024-04-12 08:03:21 +10:00
UnknownShadow200 ff9ef2285e Make virtual onscreen keyboard more usable 2024-04-11 23:30:57 +10:00
UnknownShadow200 a76720d6a7 WIP onscreen keyboard in 3D mode 2024-04-11 23:11:29 +10:00
UnknownShadow200 37343b68d4 Optimise onscreen keyboard to only redraw framebuffer and not entire UI again 2024-04-11 22:29:05 +10:00
UnknownShadow200 fe221b1098 PSP/PS3/Wii/GameCube/Xbox: Add virtual keyboard support to launcher 2024-04-11 20:40:01 +10:00
UnknownShadow200 8bd5e66f46 Dreamcast: Initial WIP on showing on-screen keyboard when no keyboard connected 2024-04-11 20:16:40 +10:00
UnknownShadow200 4d8cd3e49e WIP terrible onscreen keyboard 2024-04-11 19:18:29 +10:00
Jochen Sch„fer 5cf50dc362 Merge branch 'master' of github.com:josch1710/ClassiCube 2024-04-11 09:18:18 +02:00
Jochen Sch„fer aa6643370a Added support for opening URLs 2024-04-11 09:17:26 +02:00
UnknownShadow200 1c06744220 Add missing files for Wii U, oops
Also change PNG encoder to use stream->Position instead of stream->Length
2024-04-10 20:03:36 +10:00
UnknownShadow200 4c0f7a3867 WiiU: Fix alpha blending, WIP towards dual screen support 2024-04-10 18:54:57 +10:00
UnknownShadow200 d8ee8a5fab Wii U: Touchscreen input sorta works 2024-04-10 07:56:50 +10:00
UnknownShadow200 c147500fc6 WiiU: Rendering mostly works 2024-04-09 22:59:00 +10:00
UnknownShadow200 5c567c06f7 WiiU: Rendering sort of works now 2024-04-09 21:46:00 +10:00
UnknownShadow200 8149621985 WiiU: Something renders now 2024-04-09 21:11:27 +10:00
UnknownShadow200 d43693f3dd WiiU: WIP graphics stuff, doesn't actually work though 2024-04-09 20:34:58 +10:00
UnknownShadow200 4c21c1c072 Non-working Wii u shader test 2024-04-09 19:29:11 +10:00
UnknownShadow200 b24b25c094 Exiting reduced performance message now shown in top left for around a second instead of in chat 2024-04-09 17:31:15 +10:00
UnknownShadow200 5177ff9d13 PNG encoding now uses dynamically allocated memory for temp buffer 2024-04-09 11:42:31 +10:00
UnknownShadow200 c26944576f Optimise PNG decoding to decode image using the destination image buffer, instead of allocating a giant array on the stack 2024-04-09 09:05:35 +10:00
UnknownShadow200 8b516b44c9 Slightly reduce memory usage by 14 kb for mesh builder 2024-04-09 07:32:59 +10:00
UnknownShadow200 c28649d2c5 Change mesh building functions so they compile to a few less instructions 2024-04-08 22:00:20 +10:00
UnknownShadow200 92b2db3ce1 PNG decoding: Slightly optimise decoding first row, drop support for 16 bpp images 2024-04-08 17:48:36 +10:00
UnknownShadow200 53225568af 3DS: Numpad onscreen keyboard now shows . and - when appropriate 2024-04-07 22:31:30 +10:00
UnknownShadow200 9d3283a292 3DS: Sort of working fog
Also expose Anaglyph 3D in graphics options in Enhanced mode
2024-04-07 21:21:51 +10:00
UnknownShadow200 24656d52df 3DS: Render UI for right eye too in anaglyph 3D mode, don't forget to turn off 3D mode when going back to launcher 2024-04-07 20:49:04 +10:00
UnknownShadow200 781103feda DS: Fix crashing in DS mode with last commit 2024-04-07 18:09:11 +10:00
UnknownShadow200 d8e24b0f21 DS: Try to fix not running in DSi mode when an SD card is readable, also fix network requests taking 15 seconds when can't connect to wifi 2024-04-07 17:55:18 +10:00
UnknownShadow200 bde97e4076 Makefile compiled builds have the icon now
Also fix flatpak .xml file, inventory shouldn't be closed when B is pressed in classic mode
2024-04-07 16:57:06 +10:00
UnknownShadow200 b27f86384f Classic mode should preserve selected block in inventory across inventory menu opens
Also remove older versions from flatpak yml that caused problems for me when trying to build it
2024-04-07 16:45:44 +10:00
UnknownShadow200 536ec594e5 3DS: Show message in chat when initing DSP for playing audio fails 2024-04-07 15:38:40 +10:00
UnknownShadow200 0d36359615 3DS: Try to fix crash sometimes when quitting game 2024-04-07 15:27:56 +10:00
UnknownShadow200 d00174c680 3DS: Chat should be sent immediately after clicking Send, also display normal keyboard layout for 'number' input types since the 3DS numpad keyboard doesn't include a decimal point 2024-04-07 15:02:31 +10:00
UnknownShadow200 1b6ebc5baf 3DS: Try to transfer non-dynamic textures to VRAM 2024-04-07 14:43:29 +10:00
UnknownShadow200 43e2197a2d 3DS: Simplify Citro3D code a little bit 2024-04-07 14:31:41 +10:00
UnknownShadow200 2de2054c1c PS3/Vita: Revert to lowmem build since png decoding uses up too much stack space 2024-04-07 12:13:21 +10:00
UnknownShadow200 e76f9f3dd5 3DS: Non working fog 2024-04-07 10:47:04 +10:00
UnknownShadow200 f514155e83 3DS: Optimise to reduce GPU commands a bit 2024-04-07 09:46:59 +10:00
UnknownShadow200 efa38fe4f4 3DS: Embed citro3d source directly into the graphics backend 2024-04-07 09:06:34 +10:00
UnknownShadow200 ad5804344c 3DS: Try 3D again, also minorly optimise to use slightly less VRAM for render targets and slightly less unnecessary GPU commands 2024-04-07 07:58:14 +10:00
UnknownShadow200 ec62110c71 Controllers: Allow using joysticks to scroll around in inventory menu 2024-04-06 16:21:52 +11:00
UnknownShadow200 abfa1f0b97 PS3/Vita/WiiU: Enable support for all features 2024-04-06 14:40:28 +11:00
UnknownShadow200 add2537ecf 3DS: Give real 3D support a try 2024-04-06 14:27:59 +11:00
UnknownShadow200 01c872f333 Show better error message when not enough memory to load a level 2024-04-06 14:05:57 +11:00
UnknownShadow200 4ee1775ccb More consistency 2024-04-06 09:49:37 +11:00
UnknownShadow200 1e8bbd0c4b More consistent struct field naming 2024-04-06 09:34:07 +11:00
UnknownShadow200 90a20b2077 GameCube/Wii: Fix crashing if ran out of memory for allocating texture
Also don't immediately show on screen keyboard when going to servers list in 3DS/NDS/Switch/Vita consoles
2024-04-05 23:33:48 +11:00
UnknownShadow200 a03a5a9b78 3DS: Fix movement being stuck, crash when going into texture pack, extra logged line in citra logs 2024-04-05 22:26:33 +11:00
UnknownShadow200 2e902da2c8
Merge pull request #1168 from josch1710/master
Initial OS/2 support
2024-04-05 20:20:43 +11:00
UnknownShadow200 5dc6976d93 Try to fix CIA file generation 2024-04-05 18:46:07 +11:00
UnknownShadow200 84fb814a35 3DS: Try to generate CIA file, swap cstick behaviour, double command buffer size 2024-04-05 18:30:32 +11:00
Jochen Schäfer 8b9f12db85 removed superfluous O_BINARY 2024-04-05 08:14:57 +02:00
UnknownShadow200 02b068c7dc 3DS: Bind stick input to left pad axis instead (so moves player), double GPU command buffer size
Also implement thread naming on BSD systems
2024-04-05 08:04:25 +11:00
Jochen Sch„fer 69d4a3f0ff Added OS/2 icon 2024-04-04 08:03:04 +02:00
Jochen Sch„fer f88700e84c Merged upstream. Added File Dialogs for OS/2 2024-04-03 22:28:21 +02:00
Jochen Sch„fer a8142fc624 OS2 port 2024-04-03 19:41:15 +02:00
UnknownShadow200 d7b805a480
Merge pull request #1166 from ClassiCube/AudioZip
Rewrite sounds so that they are loaded from a zip instead
2024-04-03 20:08:54 +11:00
UnknownShadow200 d31122eb0d Swap .wav audio endian so that it is read/written as little endian on big endian machines 2024-04-03 19:52:39 +11:00
UnknownShadow200 b98cb2fc74 Change messaging for required vs optional resources, support loading classicube.zip as fallback for sounds 2024-04-03 19:22:31 +11:00
UnknownShadow200 9c0bdb68e7 Load sounds from zip instead 2024-04-03 19:00:00 +11:00
UnknownShadow200 4ecffcedb0 More work on audio zip generation 2024-04-03 18:37:52 +11:00
UnknownShadow200 f600f84cbf More WIP towards sound zip creation 2024-04-03 07:45:04 +11:00
UnknownShadow200 4b9ab4de5f Start refactoring resource creation 2024-04-02 23:28:27 +11:00
UnknownShadow200 cfa3676e44 Gamepad: WIP towards customising axis behaviour and sensitivity 2024-04-02 22:18:13 +11:00
UnknownShadow200 d056f8c2ff Slightly reduce memory on PS1/N64 consoles, avoid creating plugins folder on any console
Also slightly tidy up some defines
2024-04-02 21:55:57 +11:00
UnknownShadow200 290252767f Classic options should show anaglyph 3D option 2024-04-02 18:37:49 +11:00
Jochen Sch„fer 7ca1219356 Initial OS/2 support. 2024-04-01 19:23:30 +02:00
UnknownShadow200 1671b2fef1
Merge pull request #1164 from sungsphinx/more-flatpak-stuff
More Flatpak stuff :D
2024-04-01 22:49:01 +11:00
Dexter Reed c7e2d5b03e
X11: Don't compile/use when CC_BUILD_SDL3 is defined 2024-04-01 12:43:19 +01:00
Dexter Reed 13c8e223b1
misc/linux: Upstream Flatpak files from https://github.com/sungsphinx/ClassiCubeFlatpak 2024-04-01 12:35:15 +01:00
UnknownShadow200 5b7800fe2b Switch: Use a few more native APIs 2024-04-01 22:13:32 +11:00
UnknownShadow200 0ff916fbfc SDL3: Try to centre window and fix compiling error 2024-04-01 14:39:34 +11:00
UnknownShadow200 1db08d9246
Merge pull request #1157 from sungsphinx/flatpak-wmclass
Improvements for Flatpak build stuff
2024-04-01 11:46:44 +11:00
Dexter Reed 426737aaa1
SDL3: Use different class when built as Flatpak 2024-04-01 00:42:43 +01:00
UnknownShadow200 5d88fa5ddf SDL: Support OpenGL ES specific contexts 2024-04-01 10:41:26 +11:00
Dexter Reed 2bea8728da
Core: Enable resource downloading for Flatpak builds 2024-04-01 00:41:17 +01:00
Dexter Reed a75515c191
X11: Use different class when built as Flatpak 2024-04-01 00:41:07 +01:00
UnknownShadow200 e5ef11d6bb Gamepad: Buttons can now be held down to periodically trigger them every second 2024-04-01 10:29:36 +11:00
UnknownShadow200 7a7dcec05f First phase of refactoring gamepad input 2024-04-01 09:58:27 +11:00
UnknownShadow200 4671a99f68 PS1: More broken texture support 2024-04-01 08:42:36 +11:00
UnknownShadow200 6369631ebe SDL3: Open/Save dialogs work now, although leak a little bit of memory when displayed each time 2024-03-31 23:06:43 +11:00
UnknownShadow200 86961f50a3 Add unfinished SDL3 window backend 2024-03-31 22:20:01 +11:00
UnknownShadow200 121665d98c PS1: Controller movement support 2024-03-31 17:14:59 +11:00
UnknownShadow200 521cc79dd0 PS3: Add working github actions workflow 2024-03-30 22:55:28 +11:00
UnknownShadow200 a7488f2a0b PS1: WIP on texture support
PSP: Fix faces not being culled
2024-03-30 21:43:28 +11:00
UnknownShadow200 978aeaf925 Vita: Support touchscreen input in-game 2024-03-30 12:12:38 +11:00
UnknownShadow200 4f504f8a2e PSP: Add screenshot support 2024-03-30 11:52:25 +11:00
UnknownShadow200 cf50e71d12 GameCube/Wii: Support taking screenshots 2024-03-30 10:37:21 +11:00
UnknownShadow200 44e0774f6c
Merge pull request #1161 from headshot2017/wii-audio
GC/Wii fix music playback
2024-03-30 10:26:47 +11:00
UnknownShadow200 8c62223f90 3DS/GameCube/Wii: Increase max texture width/height for little bit faster world rendering 2024-03-30 09:51:57 +11:00
UnknownShadow200 174005d6bf PS1: 3D 'technically' works now 2024-03-29 23:35:53 +11:00
UnknownShadow200 06b8497e9f Fix held block being rendered slightly too far downwards in classic mode 2024-03-29 22:51:17 +11:00
UnknownShadow200 9e3f9f9e4a 3DS: Test screenshot code 2024-03-29 19:45:00 +11:00
headshot2017 b443562b7f GC/Wii: fix music 2024-03-29 04:19:45 -04:00
Headshotnoby 2ecea55887
Merge branch 'ClassiCube:master' into wii-audio 2024-03-29 04:19:47 -04:00
UnknownShadow200 1bc589b8e5 3DS: Fix never freeing textures, oops
Also redesign PNG encoding API to support a context parameter
2024-03-29 19:12:42 +11:00
UnknownShadow200 5f95ce2fea GC/Wii: Use better method of logging for Dolphin 2024-03-29 17:50:39 +11:00
Headshotnoby 1fd4285268
Merge branch 'ClassiCube:master' into wii-audio 2024-03-29 02:18:04 -04:00
UnknownShadow200 c8acd0ad33 iOS: Add support for older UIAlertView for displaying message boxes 2024-03-29 10:48:26 +11:00
UnknownShadow200 ff42b7d352 Use stopwatch time for measuring ping and launcher caret, change UTC time measurement to seconds instead of milliseconds 2024-03-28 19:03:30 +11:00
UnknownShadow200 5fb4887191 PS1: Use a little bit less memory 2024-03-28 17:39:10 +11:00
Headshotnoby 1cb87ee034
Merge branch 'ClassiCube:master' into wii-audio 2024-03-28 00:42:53 -04:00
UnknownShadow200 95a1efe5f1 PS1: Bit more works 2024-03-27 22:01:44 +11:00
UnknownShadow200 6bc90ea76d PS1: Something renders 2024-03-27 17:36:54 +11:00
UnknownShadow200 93d3d5d84f PS1: 3D clearing works I guess 2024-03-27 17:02:31 +11:00
UnknownShadow200 eff5ddabd2 Broken PS1 port 2024-03-27 16:31:01 +11:00
headshot2017 0676d409a4 Wii: set unused voice channel in Audio_SetFormat
if it's set in Audio_Init, all sounds will be on the same channel, causing cut-offs
2024-03-26 14:03:50 -04:00
headshot2017 38736b2a25 Wii: remove Audio_PlayData, make buf[0] available immediately if playing a wav file 2024-03-26 14:00:24 -04:00
headshot2017 1668a1ba2b Wii: some more fixes to audio backend/music 2024-03-26 13:54:16 -04:00
UnknownShadow200 8bfe004d71 Audio: AllocChunks should return error code, and fix GameCube/Wii backend to compile again after merging audio changes branch 2024-03-26 20:20:58 +11:00
UnknownShadow200 cb92c04cef
Merge pull request #1159 from ClassiCube/AudioRewrite2
Simplify audio code slightly
2024-03-26 19:46:32 +11:00
UnknownShadow200 25f6fddd2e Fix Android 2024-03-26 19:36:55 +11:00
UnknownShadow200 5c8e6db4e2
Merge pull request #1160 from headshot2017/wii-audio
GC/Wii audio backend
2024-03-26 18:20:23 +11:00
headshot2017 910ade826f add audio backend for GC/Wii 2024-03-26 02:53:43 -04:00
UnknownShadow200 bd7f646d6a Wii U: Now 3D blank screen works 2024-03-26 12:14:31 +11:00
UnknownShadow200 17f0e51a07 Fix windowws audio backend 2024-03-26 07:38:32 +11:00
UnknownShadow200 56177f94f5 Fix non-working common audio code oops 2024-03-25 20:51:16 +11:00
UnknownShadow200 b2fdf80be1 Try to simplify audio backend code a bit 2024-03-25 20:33:25 +11:00
UnknownShadow200 93f2ef9d46 DS: Fix options being wiped on load 2024-03-25 20:11:12 +11:00
UnknownShadow200 e22be93ab3 Refactor audio backends to allow explicitly setting volume 2024-03-25 19:46:27 +11:00
UnknownShadow200 e06f54e61b Makefile stores results in build folder instead, general tidyup 2024-03-25 18:02:14 +11:00
UnknownShadow200 d9e2ec9ad9 Less warnings compiling on MinGW 2024-03-25 07:31:12 +11:00
UnknownShadow200 b2941dd4b6 oops 2024-03-25 07:04:34 +11:00
UnknownShadow200 32c135ea5d DS: On screen keyboard triggers Enter key behaviour when RETURN button is pressed, also fix to properly initialise it with initial text 2024-03-24 21:52:47 +11:00
UnknownShadow200 28324ddd40 DS: Http downloads stuff, try to reduce UI clipping with the world 2024-03-24 21:10:15 +11:00
UnknownShadow200 0c2fc7f5c5 DS: Increase thresholds for timer overflow detection 2024-03-24 15:32:16 +11:00
UnknownShadow200 189b164be4 DS: Try to fix issues with water overlapping from outside of world, don't infinitely loop when connecting to WIFI 2024-03-24 10:57:46 +11:00
UnknownShadow200 9164d7c9c3 DS: Try to fix GUI and allow more VRAM for textures 2024-03-24 10:28:07 +11:00
UnknownShadow200 ed6864004b DS: Slightly optimise vertex submission code 2024-03-24 09:37:01 +11:00
UnknownShadow200 2326020f89 DS: Increase camera sensitivity, fix window not being restored properly after quitting game, fix keyboard not hiding debug console, allocate another 128 kb vram bank for textures 2024-03-24 08:59:27 +11:00
UnknownShadow200 02082d71fb DS: Fix texture coordinates not being repeated 2024-03-23 22:23:29 +11:00
UnknownShadow200 d9d63b86dd Fix last commit whoops 2024-03-23 21:18:42 +11:00
UnknownShadow200 d319f07192 DS: Fix touch input block tapping not behaving correctly 2024-03-23 20:43:44 +11:00
UnknownShadow200 02d35e96c8
Merge pull request #1155 from ClassiCube/ChatScaleImprovements
Chat scale improvements
2024-03-23 20:02:15 +11:00
UnknownShadow200 ccc6802028 DS: Add github action workflow 2024-03-23 19:51:46 +11:00
Goodlyay 5ff4eae241 Merge branch 'master' into ChatScaleImprovements 2024-03-23 01:16:28 -07:00
Goodlyay 195b0ad2f7 Merge branch 'master' into ChatScaleImprovements 2024-03-23 01:13:09 -07:00
UnknownShadow200 c1d19c5d07 Allow separately toggling touch GUI from touch input support, mainly for DS 2024-03-23 19:09:43 +11:00
UnknownShadow200 e86d57f4f6 DS: Slightly better touch input, still needs work though 2024-03-23 10:46:46 +11:00
UnknownShadow200 d54cf921c4 DS: Fix hanging after a minute or two due to timer overflow, fix messages not being logged to nocash debug output 2024-03-23 10:22:23 +11:00
UnknownShadow200 d88b095b98 DS: Onscreen keyboard support 2024-03-23 09:40:09 +11:00
UnknownShadow200 d64a38fa0d DS: Fix console window not showing anything in 3D mode, also log path of opened files 2024-03-23 08:32:23 +11:00
UnknownShadow200 a47374aeaa DS: Avoid assuming fat:/ for SD card location, also default to generating 16x16x16 flatgrass 2024-03-23 08:17:26 +11:00
UnknownShadow200 526bd40646 DS: Fix UI sort of to work 2024-03-22 23:55:17 +11:00
UnknownShadow200 6d8a0fb933 DS: World rendering sort of works better now 2024-03-22 23:36:30 +11:00
Goodlyay f617cc22e8 Improve scales of big and small announce
They now default to clean multiples to avoid non-uniform pixel distortion, assuming your chat scale is a whole integer
2024-03-22 04:21:45 -07:00
UnknownShadow200 da398bb2bd DS: WIP wifi support 2024-03-22 21:57:06 +11:00
UnknownShadow200 3f26352644 DS: Texturing sort of works 2024-03-22 21:33:53 +11:00
UnknownShadow200 85db25c305 DS: Fix incorrect stopwatch measurement resulting in jumpy movement etc 2024-03-22 19:42:01 +11:00
UnknownShadow200 de815b0de8 Add secret broken anaglyph 3D option 2024-03-22 08:14:20 +11:00
UnknownShadow200 551dfa716f Change Gfx_Clear to allow separately clearing colour and depth buffer 2024-03-22 07:51:51 +11:00
UnknownShadow200 b7bde85cd4 Gfx_SetColorWrite remembers state across depth only rendering calls 2024-03-22 07:14:36 +11:00
Goodlyay b972f105f6 Merge branch 'master' into ChatScaleImprovements 2024-03-21 06:58:16 -07:00
Goodlyay c3aec9a912 Add "scale with window" chat option 2024-03-21 06:56:49 -07:00
UnknownShadow200 8f9d56fd0c Dreamcast: Audio sort of works now 2024-03-21 22:23:29 +11:00
UnknownShadow200 b7d92bc8b9 Change saplings to not instantly grow when placed in singleplayer
Also change PSP to always load from PSP/GAME/ClassiCube folder on the memory stick
2024-03-21 17:13:52 +11:00
UnknownShadow200 5c4b85abf9 macOS: Fix app icon code only working on 10.6 and later 2024-03-21 08:57:36 +11:00
UnknownShadow200 ed01ef0e1c Fix compilation problems 2024-03-20 22:12:57 +11:00
UnknownShadow200 a7854d8aec macOS: Remove Carbon backend and only use Cocoa backend 2024-03-20 21:53:19 +11:00
UnknownShadow200 950a88fce0 Simplify audio backend code again slightly 2024-03-20 19:31:51 +11:00
UnknownShadow200 1966c551e9 Simplify audio context init and change OpenAL backend to use AL_GAIN to adjust volume of sounds 2024-03-20 18:23:36 +11:00
UnknownShadow200 bb87a24464 Refactor Audio into frontend and backend files 2024-03-20 17:26:39 +11:00
UnknownShadow200 f83c1f38f3 Haiku: Fix raw move events still being raised in menus with mouse devices 2024-03-20 07:48:36 +11:00
UnknownShadow200 e08a26481c Haiku: Fix crash when exiting game
Also use legacy render mode when running under llvmpipe to reduce disappearing water/bedrock outside map into fog
2024-03-20 07:02:31 +11:00
UnknownShadow200 2ab73f7d6c Haiku: Updates works for 64 bit OS, and thread naming works now too 2024-03-19 17:47:29 +11:00
UnknownShadow200 9daf872e57 Haiku: Try to handle mouse movement for camera more appropriately, partially addresses #1105
Also warn when running OpenGL build on llvmpipe that performance will be affected
2024-03-19 17:13:06 +11:00
UnknownShadow200 0991c0707e Xbox: Fix stack overflow when downloading resources, fix textures not being deleted, try to increase deadzone 2024-03-17 17:19:16 +11:00
UnknownShadow200 b58da2de66 Xbox: Try to fix texture format issue 2024-03-17 14:51:27 +11:00
UnknownShadow200 329d927dac OpenGL ES: Enable proper mipmaps when device supports 3.2 or later 2024-03-17 11:30:43 +11:00
UnknownShadow200 b548cfa231 Switch: Respond to exit requests and avoid relying on assumptions about stride of framebuffer 2024-03-17 10:55:04 +11:00
UnknownShadow200 34d2e868fc
Merge pull request #1152 from headshot2017/switch
add left analog stick movement for Switch
2024-03-17 10:31:22 +11:00
UnknownShadow200 701603faba Switch: Bit of minor tidy up 2024-03-17 10:22:08 +11:00
headshot2017 e8cf6df029 add analog movement for Switch 2024-03-16 18:50:49 -04:00
UnknownShadow200 f3a391e9c3 Xbox: Try to fix texture allocation failure 2024-03-17 09:23:20 +11:00
UnknownShadow200 450b4c921e Set thread stack size on posix and thread name on Linux 2024-03-17 08:15:24 +11:00
UnknownShadow200 66d328ba2e
Merge pull request #1151 from headshot2017/switch
Nintendo Switch port
2024-03-17 08:02:33 +11:00
Headshotnoby ff9052ca01
Merge branch 'ClassiCube:master' into switch 2024-03-16 16:34:49 -04:00
headshot2017 dec5e41ab9 Revert "add Switch to readme"
This reverts commit 3231cb7b06.
2024-03-16 16:34:16 -04:00
UnknownShadow200 514d16a313 Add Switch to readme and fix PSP/PS Vita builds 2024-03-17 07:31:59 +11:00
headshot2017 46da4fb095 adapt thread API redesign for Switch 2024-03-16 16:25:37 -04:00
Headshotnoby d6caaf43d6
Merge branch 'ClassiCube:master' into switch 2024-03-16 16:18:53 -04:00
UnknownShadow200 83ba419a06 Redesign thread running API 2024-03-17 07:12:34 +11:00
headshot2017 1ce265fe89 remove stray code from Applet_Event
this is already in GLContext_InitSurface
2024-03-16 16:00:12 -04:00
headshot2017 3231cb7b06 add Switch to readme 2024-03-16 15:50:18 -04:00
headshot2017 8fd0e83c6e fix resolution change on handheld/docked
thx unknownshadow200
2024-03-16 13:20:52 -04:00
headshot2017 7978719237 attempts to fix resolution 2024-03-15 21:08:37 -04:00
headshot2017 cedc2ca8e0 use classicube's built in EGL implementation
i didn't realize i forgot to set Window_Main.Handle so it didn't crash
2024-03-15 20:06:08 -04:00
headshot2017 102a5367d1 change resolution on handheld/docked mode 2024-03-15 19:19:27 -04:00
headshot2017 e74023ce66 audrvUpdate after freeing audio backend
fixes garbage data playing on yuzu after returning to launcher
2024-03-15 19:12:53 -04:00
headshot2017 8d4adefb0e don't de-init audren on AudioBackend_Free()
fixes sounds not playing when returning to launcher and starting the game again
2024-03-15 12:44:12 -04:00
headshot2017 5c136aea57 AudioBackend_Tick!! 2024-03-14 22:18:19 -04:00
Headshotnoby e1d830064c
Merge branch 'ClassiCube:master' into switch 2024-03-14 22:12:48 -04:00
UnknownShadow200 2e7c309e79 Tick audio from main game thread 2024-03-15 13:08:26 +11:00
headshot2017 1383d84daf change sound volume 2024-03-14 21:55:40 -04:00
headshot2017 2df6854dcf fix waitable milliseconds overflow
fixes music immediately starting again after it ends
2024-03-14 21:44:06 -04:00
headshot2017 c590975cdf fix music 2024-03-14 21:33:02 -04:00
headshot2017 413fa5e8de why didn't this sync?? 2024-03-14 19:46:28 -04:00
headshot2017 0bf5bb7762 log using svcOutputDebugString() 2024-03-14 19:32:51 -04:00
headshot2017 e0487ef70d waiting 2024-03-14 19:32:51 -04:00
headshot2017 5f9f8d15bc some more progress on switch audio backend
* if channels == 2 (stereo), use audrvVoiceSetMixFactor() calls from hwopus-decoder libnx example
* issue where music stops after playing for a few seconds
2024-03-14 19:32:50 -04:00
headshot2017 076f8dcb73 download sound asset on all platfoms
removed if defined CC_BUILD_CONSOLE preprocessor
2024-03-14 19:32:50 -04:00
headshot2017 aa23b5d444 download sound resources on Switch 2024-03-14 19:32:50 -04:00
headshot2017 ed3c0ff23c use libnx code for aligned alloc 2024-03-14 19:32:50 -04:00
headshot2017 5fdad50316 sounds are finally working on Switch
music is audible as well but it's broken. WARNING: if you decide to play with music, watch out for garbage data earrape
2024-03-14 19:32:50 -04:00
headshot2017 36b937e1c8 increase thread stack size to 0x100000 2024-03-14 19:32:49 -04:00
headshot2017 2d8949661d create sdmc:/switch
if it doesn't exist, it fails to create sdmc:/switch/ClassiCube and does not download resources
2024-03-14 19:32:49 -04:00
headshot2017 f37b3aea77 revert back to mutex/condvar waitables
fixes sign in
2024-03-14 19:32:48 -04:00
headshot2017 ee012dcd36 use 0x20000 stack size for threads 2024-03-14 19:32:48 -04:00
headshot2017 8566ac9631 use LEvent (light events) for waitable
also left Thread_Detach() empty
2024-03-14 19:32:48 -04:00
headshot2017 f14e3a55f5 add Thread_Detach for switch 2024-03-14 19:32:47 -04:00
headshot2017 bd1d7c674f replace pthread with libnx threads 2024-03-14 19:32:47 -04:00
headshot2017 ec4959c57e fix some mistakes on switch audren 2024-03-14 19:32:47 -04:00
headshot2017 198c6e18cc implement switch audren driver
temporarily calls audrvUpdate() on Window_ProcessEvents. need an audio update function
2024-03-14 19:32:46 -04:00
headshot2017 05a7e82582 comment out Thread_Detach code 2024-03-14 19:32:46 -04:00
headshot2017 7ee08a5c16 add -lpthread just in case 2024-03-14 19:32:46 -04:00
headshot2017 9fd89c3073 add Switch port 2024-03-14 19:32:24 -04:00
UnknownShadow200 8c78f66cc5 Wii U WIP stuff 2024-03-15 09:56:51 +11:00
UnknownShadow200 44ce6561ea Copy paste fail 2024-03-15 08:54:18 +11:00
UnknownShadow200 e41833dd26 Unfinished wii U stuff 2024-03-15 08:44:05 +11:00
UnknownShadow200 c087dfac50 Dreamcast: Optimise a tiny bit 2024-03-12 23:43:58 +11:00
Goodlyay 3e9c1b3d3d Compiles again 2024-03-10 21:29:30 -07:00
Goodlyay db0af47418 Merge branch 'master' into ModernLighting 2024-03-10 21:09:43 -07:00
UnknownShadow200 0b82f4f3df N64: Try to disable FPU exceptions 2024-03-04 19:15:32 +11:00
UnknownShadow200 dfcd025cab Support displaying < 1 FPS in HUD 2024-02-21 19:41:13 +11:00
UnknownShadow200 c4e8729034 Separate event for controller movement from pointer raw movement 2024-02-20 21:04:24 +11:00
UnknownShadow200 89725e4676 Transfer repository to ClassiCube organization
Dreamcast: Also fix loading messages being trimmed
2024-02-20 11:52:31 +11:00
UnknownShadow200 c74151e289 NetBSD github actions too 2024-02-19 20:56:06 +11:00
UnknownShadow200 c9e4ce31b2 FreeBSD workflow and update checkout action version 2024-02-18 21:11:40 +11:00
UnknownShadow200 ffc1626261 RPI build workflows 2024-02-18 09:03:04 +11:00
UnknownShadow200 e4b80f60a4 Dreamcast: Draw each quad as a triangle strip instead of two triangles 2024-02-15 19:31:05 +11:00
UnknownShadow200 751e5b500f macOS: Use platform serial number key on macOS pre 10.5 as machine ID 2024-02-11 21:08:54 +11:00
UnknownShadow200 a03d1d7a13 3DS: Don't delete GPU textures immediately to avoid crashing/freezing 2024-02-11 15:50:16 +11:00
UnknownShadow200 adfd994f8e PSP: Try to get web requests to at least work, although it completely blocks the UI 2024-02-10 21:21:15 +11:00
UnknownShadow200 09a33815a1
Merge pull request #1146 from UnknownShadow200/UIFixes_3DS
Try to simplify code for 3DS dual screen behaviour
2024-02-09 11:47:34 +11:00
UnknownShadow200 6d7d7ce0d5 PSP: Some networking fixes so it at least sort of works now 2024-02-09 08:16:04 +11:00
UnknownShadow200 475cb602ca 3DS: Set gfx render screen target directly 2024-02-08 23:04:36 +11:00
UnknownShadow200 e91cc7cfd8 WIP on avoiding calling Window_SetRenderScreen so often 2024-02-08 22:34:31 +11:00
UnknownShadow200 7d3bdb7f53 Dreamcast: Simplify loading messages 2024-02-08 19:10:48 +11:00
UnknownShadow200 2634c0bb12 PSP: Use cooperative threading for map gen
Also fix OpenAL backend not properly resetting error state before calling important functions that may set the error state
2024-02-08 18:26:57 +11:00
UnknownShadow200 7d881ad452 iOS: Add missing files to xcode project 2024-02-07 21:45:40 +11:00
UnknownShadow200 fc279ff830 Reorganise Http worker code to avoid having a single global for current request progress
Dreamcast: Be slightly more sensitive to mouse movement
2024-02-07 18:00:11 +11:00
UnknownShadow200 acd4edb0b0 Dreamcast: SD card support, maybe 2024-02-06 18:58:16 +11:00
UnknownShadow200 7c3e5c735b Don't try to write chat logs or cache texture packs when filesystem is known to be readonly
Attempting to save options will still show an error message, that way the user at least knows that the changed option won't be persisted
2024-02-06 18:32:55 +11:00
UnknownShadow200 f677529e44 PSP: Untested networking support 2024-02-06 17:54:10 +11:00
UnknownShadow200 b4821e5092 PSP: Really fix this time 2024-02-06 12:10:59 +11:00
UnknownShadow200 57cbd94469 PSP: Fix launcher not displaying and fix game usually crashing after several seconds (Thanks Zekiu, fixes #1144 and fixes #1145) 2024-02-06 11:52:14 +11:00
UnknownShadow200 13a7f49658 Fix not building prx and fix errors logged about closing files (based on issues raised in #1145, thanks Zekiu) 2024-02-06 08:39:29 +11:00
UnknownShadow200 04346551dc Dreamcast: Try dialling a longer number 2024-02-05 23:59:05 +11:00
UnknownShadow200 2963723746 Dreamcast: Show initial loading messages for modem initing, so that users don't think the game is unresponsive 2024-02-05 23:01:20 +11:00
UnknownShadow200 9feeadb52f Dreamcast: Add WIP mouse support 2024-02-05 22:05:52 +11:00
UnknownShadow200 88d43a8420 DS: Fix can't move camera 2024-02-05 21:45:10 +11:00
UnknownShadow200 f4ada2aa51 DS: 3D sorta works 2024-02-05 21:26:58 +11:00
UnknownShadow200 0437d9d0cc DS: Add control support sorta 2024-02-05 20:28:22 +11:00
UnknownShadow200 e07f1bc4c7 Completely unfinished DS port
macOS: Always build cocoa build when using makefile, fixes it trying to compile carbon build on M1 macs
2024-02-05 18:15:02 +11:00
UnknownShadow200 4de0747168 PSP: Try to fix launcher not rendering
Dreamcast: Try to workaround when BIOS RTC time hasn't been configured
2024-02-05 17:51:59 +11:00
Goodlyay 653c6497ae
Update readme.md 2024-02-02 20:47:46 -08:00
UnknownShadow200 a2710e044a 3DS: Move setting render screen out of Launcher code 2024-02-03 14:45:44 +11:00
UnknownShadow200 61e901ec10 Try to simplify launcher framebuffer drawing, hopefully doesn't break 2024-02-03 14:20:41 +11:00
UnknownShadow200 2955330e49 Simplify launcher title drawing 2024-02-03 13:49:42 +11:00
UnknownShadow200 d65fad3836 Use CC_BUILD_DUALSCREEN define instead, and fix PSP build to work with latest master commit 2024-02-03 13:15:44 +11:00
UnknownShadow200 164958df36
Merge pull request #1136 from camthehaxman/3ds-dualscreen
Dual screen mode for 3DS
2024-02-03 12:57:14 +11:00
UnknownShadow200 510b34317d 3DS: Try to defer deleting buffers to avoid issues 2024-02-03 09:13:03 +11:00
UnknownShadow200 3583aa29bc Dreamcast: Try to fix freeze/crash after leaving in-game and then trying to go in-game again 2024-02-02 21:37:53 +11:00
UnknownShadow200 6921c9516d Vita: Try to fix problems with deleting unreferenced buffers causing crashes 2024-02-02 19:21:04 +11:00
UnknownShadow200 9e0c9ba942 Fix some skins couldn't be downloaded from dropbox (fixes #1143), fix root directory not being created on Vita port 2024-02-02 18:25:08 +11:00
UnknownShadow200 e5eafc25a0 Nintendo 64 github actions build 2024-02-01 23:38:41 +11:00
UnknownShadow200 003542eef7 PS2 build on github actions 2024-02-01 20:22:16 +11:00
UnknownShadow200 fff5887126 Dreamcast: Try to simplify some things, doesn't fix issues though 2024-01-27 23:01:21 +11:00
camthehaxman 8cd740f054 remove 3DS exit button combo that I used for debugging 2024-01-26 19:51:13 -06:00
UnknownShadow200 b8a7305bb1 Dreamcast: Reduce error spam and fix some long error messages being cutoff 2024-01-26 18:49:58 +11:00
UnknownShadow200 57bba753f6 Dreamcast: Not really working audio and modem support 2024-01-26 15:15:39 +11:00
camthehaxman cdab26b0a5 enable double buffering on top screen to fix tearing 2024-01-24 17:23:08 -06:00
camthehaxman c27c0bd639 vertically center the title on 3DS 2024-01-24 16:37:57 -06:00
camthehaxman a05ac59cc5 add an ugly brown background to the touch screen 2024-01-24 16:24:58 -06:00
camthehaxman 18adec0295 put launcher titles on 3DS bottom screen 2024-01-24 15:10:27 -06:00
UnknownShadow200 9c3158e258
Merge pull request #1138 from camthehaxman/x11-flicker-fix
fix annoying flicker when resizing window on X11
2024-01-25 07:10:26 +11:00
camthehaxman f0f7da8a16 clarify comment about screen width 2024-01-24 11:51:30 -06:00
camthehaxman 77e9ac6320 put chat buttons on bottom screen 2024-01-24 11:28:53 -06:00
camthehaxman 5b8a8bc091 fix positioning of highlighted buttons 2024-01-24 11:28:27 -06:00
camthehaxman c1adccb0aa simplify 3DS touch handling and make it behave more like the Android port 2024-01-24 10:50:27 -06:00
camthehaxman e66e99c048 don't emulate a mouse click with the 3DS touch. doing so causes unintentional block removal when touch screen buttons are clicked 2024-01-24 10:04:24 -06:00
camthehaxman 0932dfc6f8 fix annoying flicker when resizing window on X11 2024-01-24 09:26:28 -06:00
UnknownShadow200 959f00cc46 Dreamcast: Fix couldn't sign in due to SSL certificate valid period time validation failing, fix couldn't connect to servers on real hardware 2024-01-23 23:09:46 +11:00
UnknownShadow200 1814fdc286 Dreamcast: Fix can't sign in due to SSL support not actually being enabled 2024-01-23 11:47:36 +11:00
camthehaxman 4e53ea0ab5 put Tablist on top screen 2024-01-22 16:41:40 -06:00
camthehaxman b6f1c6728e Merge branch 'master' into 3ds-dualscreen 2024-01-22 15:30:01 -06:00
UnknownShadow200 4ac860ad34
Merge pull request #1135 from camthehaxman/3ds-audio
fix audio on 3DS
2024-01-23 07:08:13 +11:00
camthehaxman 65217e4529 Merge branch 'master' into 3ds-audio 2024-01-22 10:48:34 -06:00
UnknownShadow200 eedea7446d Only load top parts of gui.png and icons.png into GPU textures 2024-01-22 19:55:43 +11:00
UnknownShadow200 cc35e79766 N64: Change controls, default to flatgrass, add more blocks in default textures
Also switch to dynamically allocating memory for vorbis decoder when converting .ogg sounds to .wav
2024-01-21 18:41:13 +11:00
UnknownShadow200 3dd9b32f22 N64: Change movement keys to c buttons, change mipmaps grahics option to filtering option 2024-01-20 22:23:16 +11:00
camthehaxman aaeac485a4 make screens go on 3DS bottom screen by default 2024-01-19 21:44:28 -06:00
UnknownShadow200 12c952a02a Rename WindowInfo to Window_Main 2024-01-20 11:57:23 +11:00
camthehaxman 96c098bd43 fix layout of some more menus, and put crosshair back on top screen 2024-01-19 16:32:58 -06:00
UnknownShadow200 0efa11390e Redesign audio chunk allocation for music 2024-01-20 08:52:56 +11:00
camthehaxman d46428592b initial dual-screen support for 3DS 2024-01-19 15:52:39 -06:00
camthehaxman f9550ff6a3 don't error if LightEvent_WaitTimeout times out 2024-01-19 08:42:34 -06:00
camthehaxman c2f2f9570a Merge branch 'master' into 3ds-audio 2024-01-19 08:19:24 -06:00
UnknownShadow200 81b56f76ce Move Display_ScaleX/Y to Window.h and ignore build results for other consoles too 2024-01-19 22:03:20 +11:00
UnknownShadow200 cdbe0d77f1
Merge pull request #1134 from camthehaxman/3ds
make the UI actually legible on 3DS
2024-01-19 20:47:57 +11:00
UnknownShadow200 c156484de2 Add audio backend function for allocating audio chunks
Also try to fix stick drift on 3DS (Thanks camthesaxman)
2024-01-19 18:33:55 +11:00
camthehaxman 4d2de70f45 increase stick deadzone to 16 2024-01-18 19:13:52 -06:00
camthehaxman a41fda79da fix issue with 3DS music not playing after entering the game 3 times 2024-01-18 18:01:39 -06:00
camthehaxman 13965dbf2a get sound effects to play on 3DS 2024-01-18 16:10:02 -06:00
camthehaxman 82e547c256 fix music playback on 3DS 2024-01-18 14:51:18 -06:00
camthehaxman 7ec019cd45 make the UI actually legible on 3DS 2024-01-17 14:15:08 -06:00
UnknownShadow200 3945e4e938 iOS: Again try to improve older version compatibility 2024-01-17 22:40:23 +11:00
UnknownShadow200 67adc43433 N64: Reduce default view distance, add Z and cpad bindings, increase analog controller responsiveness 2024-01-16 20:44:13 +11:00
UnknownShadow200 258413124e iOS: Try to improve iOS 5.0 compatibility a little bit 2024-01-16 08:36:43 +11:00
UnknownShadow200 0ed3e8325d iOS: Try to fix compiling on older SDK 2024-01-15 20:42:29 +11:00
UnknownShadow200 9f1eeb4a20 Fix can't compile android/iOS projects due to PickedPosRenderer.c having been renamed to SelOutlineRenderer.c, less warnings when compiling with modern gcc 2024-01-15 18:19:59 +11:00
UnknownShadow200 6f41df9926 Consoles: Try to deinit some stuff on some consoles when exiting the game 2024-01-14 16:32:46 +11:00
UnknownShadow200 dda2f34523 Rename Window_Close to Window_RequestClose to better reflect what it does, also ignore game files in root directory for .gitignore 2024-01-14 15:25:12 +11:00
UnknownShadow200 936abbf453 Webclient: Set default stack size to 1 MB
Newer emscripten versions now only give a 64 KB stack by default (https://github.com/emscripten-core/emscripten/pull/18191)
Older emscripten versions gave a 5 MB stack by default, so we can allocate 4 MB more for use by the game itself
2024-01-10 19:49:39 +11:00
UnknownShadow200 1c4a3c067a Webclient: Stop relying on ccall and call interop functions directly 2024-01-09 20:47:46 +11:00
UnknownShadow200 85d0a980ec Webclient: Make it easier to change where default texture pack is downloaded from, and use ccall a little bit less
Also update buildbot scripts
2024-01-09 20:21:24 +11:00
UnknownShadow200 bb5ca6a957 Stop relying on positive infinity for a 'very large distance' value 2024-01-08 22:21:28 +11:00
UnknownShadow200 d9b01a0a11 Generate Wii homebrew zip 2024-01-07 12:34:58 +11:00
UnknownShadow200 7d26562277 N64: Try to avoid crash when although width * height * pixel size of a texture fits within 4096 bytes, after aligning each row to 8 bytes, row pitch * height does not fit within 4096 bytes 2024-01-06 11:07:55 +11:00
UnknownShadow200 df7a5eefd4 Don't show resources download screen on Dreamcast and N64 builds 2024-01-06 10:12:55 +11:00
UnknownShadow200 5f96ca2eac Windows: Less warnings when compiling 2024-01-04 22:31:48 +11:00
UnknownShadow200 9cc6ae25da Fix when using http client backend, sometimes unable to join servers from the server list and the game would start in singleplayer instead
This was because only 256 bytes were allocated to store response headers, however the session Set-Cookie response header was sometimes longer than that
2023-12-29 09:57:21 +11:00
UnknownShadow200 53de5363c3 And fix the same sort of issue for BearSSL too 2023-12-28 20:19:15 +11:00
UnknownShadow200 2dc6834e0b Windows: Fix getting errors when downloading something, waiting several minutes, then trying to download from that same address again 2023-12-28 19:15:38 +11:00
UnknownShadow200 efb8de3e69 Optimise http client to avoid unnecessary memcpy when reading most of body/chunk response data 2023-12-26 13:57:17 +11:00
UnknownShadow200 78080bc9fc Windows: Use custom http client instead of WinINet for http backend, hopefully this doesn't break anything 2023-12-26 12:26:17 +11:00
UnknownShadow200 c82ec9e4b9 Add support for resolving domains to IPv6 addresses on Windows, also support IPV6 addresses for host component of a URL in HttpClient http backend 2023-12-24 14:17:55 +11:00
UnknownShadow200 fefc2c5ff4
Merge pull request #1115 from UnknownShadow200/SocketAddrRewrite
Rewrite address parsing to support resolving hostnames to multiple IP addresses
2023-12-24 12:39:58 +11:00
UnknownShadow200 12fc36890a 3DS: Fix due to last commit that attempting to resolve domains that had IPv6 addresses would crash in Citra 2023-12-24 10:57:11 +11:00
UnknownShadow200 4e05f3626f Move consoles to use new socket parsing API, also improve PS3 input support
3DS seems to be broken though, not sure why yet
2023-12-23 23:29:59 +11:00
UnknownShadow200 d2a43e4f0e Fix keyboard camera movement having a large jump in rotation if a camera movement key is held down when exiting a menu that held input lock
Also
- Fix the launcher main menu showing 'Checking..' afer going to Updates menu, waiting a bit, and then going back to main menu
- The centre box in the check/fetch resources menu is now appropriately coloured based on the launcher theme background
2023-12-22 22:02:09 +11:00
UnknownShadow200 39d582a88c Start rewriting sockets backends to supporting resolving a hostname to multiple IP addresses 2023-12-22 12:57:55 +11:00
UnknownShadow200 0d24afb9b8 Webclient: Fix L/R and ZL/ZR being swapped 2023-12-21 20:47:32 +11:00
UnknownShadow200 dbbd448168 Make more screens use new max vertices calculation, fix macOS and Haiku OS builds 2023-12-18 21:12:22 +11:00
UnknownShadow200 f5d8b44b8f Change X/Y/Z to lowercase in structs 2023-12-18 20:33:13 +11:00
UnknownShadow200 893e6612c0 PS3: Fix can't connect to multiplayer servers, fix crashing when trying to extract a texture pack zip on real hardware 2023-12-17 15:46:04 +11:00
UnknownShadow200 9f583dd486 Start moving chat screen towards using a screen specific vertex buffer 2023-12-17 11:27:03 +11:00
UnknownShadow200 0def08bfd4 Make in-game a GUI a bit simpler to work with by reducing the need to manually calculate max vertices for screens 2023-12-16 14:42:06 +11:00
UnknownShadow200 83e331c500 BlockEdit: Also allow changing whether a block emits and/or stops light
Also set an actual proper file version for the android APK
2023-12-14 19:32:29 +11:00
UnknownShadow200 d04327c5e7 Expand /client blockedit to also allow editing sounds, try to fix crashing on PS3 2023-12-12 22:51:02 +11:00
UnknownShadow200 df57b9f5fc PS3: Implement keyboard support, try to fix networking 2023-12-10 21:07:01 +11:00
UnknownShadow200 0473b89e7f Vita: Fix attempting to connect to servers usually immediately failing 2023-12-10 13:10:45 +11:00
UnknownShadow200 ce125de895 Compiles with less warnings 2023-12-10 10:49:11 +11:00
UnknownShadow200 740c2416d7 Vita: Add proper left/right circle pad support and fix 'some resources missing' menu always appearing 2023-12-09 12:42:07 +11:00
UnknownShadow200 e6f897dbf3 Vita: Sorta works on real hardware 2023-12-09 11:58:46 +11:00
UnknownShadow200 315f8debee Add option for adjusting scale of scrollbar in inventory 2023-12-08 20:10:57 +11:00
UnknownShadow200 19038d55a4 Vita: Try to fix networking, take 3 2023-12-08 07:18:38 +11:00
UnknownShadow200 0532bef3b3 Consoles: Add icon for Vita, try to fix blocking network sockets for PS3 build, try to fix crash with Xbox build on actual hardware 2023-12-07 19:54:35 +11:00
UnknownShadow200 e582ca1f87 Vita: Try to fix networking, take 2 2023-12-07 07:52:18 +11:00
UnknownShadow200 fba5faa5ee PS3: WIP on keyboard support 2023-12-06 23:39:44 +11:00
UnknownShadow200 b4c30b7122 Vita: Try to fix insta crash on real hardware 2023-12-06 21:17:30 +11:00
UnknownShadow200 cf90a60117 Xbox: Try to fix buffer overflow when parsing socket addresses 2023-12-06 19:55:04 +11:00
UnknownShadow200 42e6719241 Make debugging possible for console builds 2023-12-05 21:30:47 +11:00
UnknownShadow200 247561db66 PS3: Generate .pkg with icon 2023-12-05 18:12:14 +11:00
UnknownShadow200 cc048431f6 N64: Support loading UI textures as 16bpp instead of 32bpp to squeeze even more out of the 4 KB TMEM 2023-12-04 22:07:55 +11:00
UnknownShadow200 9661c34b4f N64: Add support for non power of two textures for UI texures to squeeze a bit more into the 4 kb TMEM 2023-12-04 20:14:39 +11:00
UnknownShadow200 b92327e40c Add replace command to singleplayer 2023-12-03 14:36:07 +11:00
UnknownShadow200 67aaf98f87 BlockEdit command: Allow modifying draw mode and min/max corners 2023-12-03 11:19:14 +11:00
UnknownShadow200 e58642e566 Break up Chat module into Chat and Commands modules 2023-12-03 10:49:33 +11:00
UnknownShadow200 27a583b521 PS2: Fix everything being drawn too bright, be less wasteful in number of GIF primitives user for rendering 2023-12-02 20:56:57 +11:00
UnknownShadow200 6422ecc4f2 PS2: Fix freezing and fix textures appearing in screen background 2023-12-02 20:18:38 +11:00
UnknownShadow200 2a80bf833e macOS: Fix launcher and icon colours being swapped when compiled with recent SDK versions 2023-12-02 13:20:17 +11:00
UnknownShadow200 a614100b0c Add dedicated github actions workflows for Windows, Linux, and macOS 2023-12-02 12:13:37 +11:00
UnknownShadow200 6aa3289826 PS2: Broken rendering, but it does look nicer before it breaks 2023-11-30 21:50:02 +11:00
UnknownShadow200 ce6a8d2516 PS3: Fix to compile again 2023-11-30 19:12:21 +11:00
UnknownShadow200 677edba22e Change console links in readme to classicube.net pages 2023-11-30 07:20:30 +11:00
UnknownShadow200 bc11c84206 N64: Water kinda renders 2023-11-28 21:08:01 +11:00
UnknownShadow200 ef64163e57 N64: Text sometimes works 2023-11-28 19:25:00 +11:00
UnknownShadow200 b603cad5ae Gfx: Initial work on supporting graphics backends whose available VRAM size for texture storage is smaller than their maximum supported texture dimensions 2023-11-28 09:00:13 +11:00
UnknownShadow200 542325c75c PS2: Textures sort of work 2023-11-25 18:44:57 +11:00
UnknownShadow200 9bb2c084c4 PS2: Non working textures 2023-11-25 17:38:34 +11:00
UnknownShadow200 293b11d779 Fix last commit 2023-11-25 15:32:55 +11:00
UnknownShadow200 52c3450e32 Consoles: Save option changes immediately 2023-11-25 15:22:50 +11:00
UnknownShadow200 bc9b97aeba PS2: Maybe working USB mass storage device support 2023-11-25 14:32:17 +11:00
UnknownShadow200 410fcf438f PS2: Some progress on filesystem support 2023-11-25 11:53:32 +11:00
UnknownShadow200 ae52ab9761 PS2: Not really working networking 2023-11-25 10:37:23 +11:00
UnknownShadow200 4b3e520ec3 Consoles: Allow separating horizontal from vertical content offset 2023-11-24 20:34:19 +11:00
UnknownShadow200 788d4f32d9 Try to avoid dividing by zero in some cases when calculating picked block and performing camera clipping 2023-11-24 20:00:58 +11:00
UnknownShadow200 b2c70a479d Wii/GameCube: Switch to cooperative threading for map generator 2023-11-24 08:48:31 +11:00
UnknownShadow200 48f0cb7b1a Dreamcast: Slightly boost performance by attempting to perform polygon perspective division and clipping as a quad instead of 2 triangles when possible 2023-11-24 08:00:55 +11:00
UnknownShadow200 064be092e8 Dreamcast: Squeeze a bit more performance out of the system 2023-11-23 21:57:37 +11:00
UnknownShadow200 e57d0e2575 PS2: Try to fix partial corruption on real hardware when displaying launcher, try to optimise graphics rendering a bit 2023-11-23 19:27:44 +11:00
UnknownShadow200 17fea79cc2 PS2: Rendering partially works, analog joystick controls now work 2023-11-22 22:27:56 +11:00
UnknownShadow200 1c5f90285b PS2: 3D renders something now 2023-11-22 20:56:11 +11:00
UnknownShadow200 2f58a44e31 PS2: Clearing screen to a colour each frame sorta works 2023-11-22 19:22:26 +11:00
UnknownShadow200 9e4fc869ad Make generation screen somewhat usable with controller input 2023-11-21 18:51:45 +11:00
UnknownShadow200 cb4cfb59cb
Merge pull request #1099 from ddinan/master
Allow modifying selected block outline appearance
2023-11-21 18:00:00 +11:00
Derek 911df3d1ca Allow modifying selected block outline appearance
I've added three new options which can be added into options.txt:

`selected-block-outline-color`
`selected-block-outline-opacity`
`selected-block-outline-scale`
2023-11-21 16:19:34 +10:00
UnknownShadow200 c82364f886 Support dividing the notchy map generator into separate steps, so that they can be interwoven with periodically switching back to the game thread on systems that don't support preemptive multitasking
Basically, this means that on systems that don't support preemptive multithreading (currently just enabled for the webclient, but will be enabled for some console systems too), rather than the game being completely unresponsive until map generation completes, the map generator will periodically (around every 100 milliseconds or so) switch back to the main thread for a frame so that the game still appears to have not completely locked up
2023-11-21 09:08:23 +11:00
UnknownShadow200 27d195ef39 Add a few more reference comments to Vorbis decoder 2023-11-20 19:59:02 +11:00
UnknownShadow200 39b09a9202 Simplify altering default builtin colours, and loading options representing colours
Also improve String_Append to deliberately crash the game when attempting to append to an uninitialised string in MSVC debug builds
2023-11-20 19:30:36 +11:00
UnknownShadow200 7bbfd61f63 Make Xbox 360 port compile at least 2023-11-19 16:15:34 +11:00
UnknownShadow200 3adc437dbe Make map generation a bit more flexible 2023-11-19 08:57:16 +11:00
UnknownShadow200 b437554fa7 PS2: Launcher drawing somewhat works 2023-11-18 10:56:31 +11:00
UnknownShadow200 07d2438d5a Majorly unfinished PS2 port 2023-11-17 21:36:21 +11:00
UnknownShadow200 87d4d84107 Nintendo 64 port somewhat works 2023-11-17 08:52:58 +11:00
UnknownShadow200 029b6d80de Add a broken software renderer backend 2023-11-16 20:56:57 +11:00
UnknownShadow200 df9eb0c4bf Try to fix crashes when running with CEF plugin since 066bb0f67e 2023-11-13 19:11:52 +11:00
UnknownShadow200 071b14f02d Consoles: Switch to per entity model vertex buffers 2023-11-12 11:21:40 +11:00
UnknownShadow200 066bb0f67e Disable custom models on consoles 2023-11-12 10:50:29 +11:00
UnknownShadow200 f0f01b7d6d Start moving towards supporting per-entity model vertex buffers 2023-11-11 09:19:47 +11:00
UnknownShadow200 f9525efaf5
Merge pull request #1094 from UnknownShadow200/GfxRewrite2
Slightly optimise human model rendering
2023-11-10 18:20:44 +11:00
UnknownShadow200 05490de16b Slightly optimise human model rendering 2023-11-10 07:15:59 +11:00
UnknownShadow200 d04c19ea4b Start moving entity model rendering away from Gfx_SetDynamicVBData 2023-11-08 20:43:14 +11:00
UnknownShadow200 80405ddfbe Nintendo 64: Texturing kinda works 2023-11-07 09:24:30 +11:00
UnknownShadow200 f63018b05a Defer allocation of more dynamic VBs 2023-11-05 09:53:32 +11:00
UnknownShadow200 46a1e4daf8 Dreamcast: Fix multiplayer stuck at ~1 FPS 2023-11-04 10:03:19 +11:00
UnknownShadow200 a645f407bc Fix console builds and integrate N64 backend files into the main .sln file 2023-11-03 22:14:27 +11:00
UnknownShadow200 8a20397b6e
Merge pull request #1090 from UnknownShadow200/GfxRewrite
Graphics rendering backend related changes
2023-11-03 21:47:54 +11:00
UnknownShadow200 776906ebce Move entity name rendering into more general EntityRenderers module 2023-11-03 18:34:05 +11:00
UnknownShadow200 a81d9d7ee9 Try to handle out of VRAM when allocating vertex buffers across all graphics backends 2023-11-03 08:50:41 +11:00
UnknownShadow200 3fa4ef6d44 Unify texture creation checking, and defer dynamic vertex buffer allocation for rain/snow until actually needed 2023-11-03 08:06:16 +11:00
Goodlyay 3477649d7f Merge branch 'master' into ModernLighting 2023-10-30 21:48:37 -07:00
UnknownShadow200 abe92bfe8f 3D kinda works 2023-10-29 09:23:14 +11:00
UnknownShadow200 70410bfff3 Non working nintendo 64 test port 2023-10-28 22:07:22 +11:00
UnknownShadow200 4bb4f89781 Move weather rendering to LockDynamicVB/UnlockDynamicVB too 2023-10-27 18:25:51 +11:00
UnknownShadow200 a4fb5098ef Eliminate usage of Gfx_UpdateDynamicVb_IndexedTris 2023-10-26 21:58:13 +11:00
UnknownShadow200 c0831a8f04 Only try to clear solid white/black pixels in 'hat' area of skin for humanoid models - don't do this for skinnedcube or custom models 2023-10-25 22:06:02 +11:00
UnknownShadow200 8d012e9029 Fix last commit oops 2023-10-23 20:42:46 +11:00
UnknownShadow200 0355fdf863 Use elapsed game time instead of elapsed system time for automatic periodic block place/delete when mouse is held down 2023-10-23 20:38:36 +11:00
UnknownShadow200 9e561e645f Consoles: Slightly offset FPS/position text on consoles that output to TV displays to avoid them being partially clipped due to overscan 2023-10-22 20:18:35 +11:00
UnknownShadow200 9e978a2f31 Dreamcast: Add keyboard support 2023-10-22 11:57:02 +11:00
UnknownShadow200 edab3d2ec0 Dreamcast: Fix not compiling 2023-10-21 15:02:59 +11:00
UnknownShadow200 1cc9746511 Dreamcast: Fix can't go in-game anymore 2023-10-21 14:07:41 +11:00
UnknownShadow200 dd45c90b4c Fix custom blocks with no fog in .cw files mistakenly still being loaded with fog density
The easiest way to reproduce this was to use noclip to move inside a solid custom block, and then notice the horizon has become black fog

To solve this problem for both current and past client versions:
- when the read FogDensity value is 0, the in-memory fog density value is set to 0
- when writing FogDensity values to disc, 0xFF instead of 0 is written to indicate 'no fog' (since older client versions convert FogDensity values of 0xFF to 0 in-memory)
2023-10-21 11:42:42 +11:00
UnknownShadow200 60e5b4efa0 WIP on splitting up static and dynamic vertex buffers 2023-10-21 09:29:23 +11:00
UnknownShadow200 b168adc7fe iOS: Update the XCode project so it compiles again 2023-10-20 19:10:37 +11:00
UnknownShadow200 816c1dac8e macOS: Try to fix camera majorly warping the first time after returning to the game from an in-game menu
Note that this was only fixed in the cocoa backend. It still happens in the carbon backend
2023-10-19 22:37:42 +11:00
UnknownShadow200 d443d3d35c Windows: Also dump stack contents near stack register on crashes 2023-10-19 20:05:15 +11:00
UnknownShadow200 532b9924d4 Finish launcher screen rewrite 2023-10-18 20:02:24 +11:00
UnknownShadow200 d60550683c Allow loading HD terrain.png as long as a single tile fits within the GPU's texture limits, instead of the entire terrain.png
For example, this means a GPU with max texture size of 1024 x 1024 can now use a 4096 x 4096 terrain.png

I don't know how well it will perform, but it probably won't be great
2023-10-17 21:40:14 +11:00
UnknownShadow200 9bbee1cb8f Show better error messages for some reasons plugins fail to load, fixes #1076 2023-10-17 08:12:38 +11:00
UnknownShadow200 09bfca5217 Launcher: Simplify button initialisation code 2023-10-14 12:49:06 +11:00
UnknownShadow200 656497b0ea Start moving entity shadow rendering to dedicated file 2023-10-12 20:11:23 +11:00
UnknownShadow200 6aedeffa30 Console: Don't show Register button in Launcher and disable support for opening links from chat, fixes #1081 2023-10-11 20:46:07 +11:00
UnknownShadow200 4042e3e742 Launcher: Simplify creating screens with non-fixed number of widgets 2023-10-11 19:49:06 +11:00
UnknownShadow200 2d8067ea2d Consoles: Always use Goodly's font for classicube texture pack as the system font 2023-10-09 20:26:11 +11:00
UnknownShadow200 b827246fcc Try to fix Xbox and Dreamcast builds again 2023-10-08 18:26:16 +11:00
UnknownShadow200 5a094d1a70 Get it to compile with tcc again 2023-10-07 23:40:57 +11:00
UnknownShadow200 76c175e61d Make it compile in MSVC again 2023-10-07 22:20:30 +11:00
UnknownShadow200 32d29727b4
Merge pull request #1073 from calebabutler/math
Remove external math lib dependency
2023-10-07 21:48:32 +11:00
UnknownShadow200 67c7a486cd PS3: Fix rendering and add actions workflow 2023-10-07 08:57:25 +11:00
UnknownShadow200 4c60ceda46 PS3: Rendering mostly works now 2023-10-06 22:07:20 +11:00
UnknownShadow200 57c05867d6 PS3: Rendering sort of works now 2023-10-06 20:45:44 +11:00
UnknownShadow200 4f6d3850f0 PS3: Make texture animations work 2023-10-06 20:00:48 +11:00
UnknownShadow200 9ee529c8c3
Merge pull request #1078 from Spongecade/patch-1
Update Minecraft wiki links to new domain
2023-10-06 08:09:38 +11:00
Spongecade 6e232e6178
Update Minecraft wiki links to new domain 2023-10-05 16:02:36 -05:00
Caleb Butler c13d4f4429 Rename PI and DIV_2_PI to avoid conflict
On Windows, PI and DIV_2_PI are already defined, so we cannot use those
names for constants. I renamed them to DOUBLE_PI and DOUBLE_DIV_2_PI
respectively.
2023-10-05 09:48:16 -04:00
Caleb Butler 4741c548d6 Fix compiling on VS2019
In VS2019, although the math functions are intrinsic, they need to be
declared by the math.h header. So the header must be included in the
ifndef block.
2023-10-05 09:40:52 -04:00
Caleb Butler 0d97d58edc Fix arguments of Atan2 to match ExtMath.h 2023-10-05 09:08:48 -04:00
UnknownShadow200 d932c8cbb5 PS3: Texturing at least works now 2023-10-04 23:40:49 +11:00
Caleb Butler cc933ced82 Remove -O2 from readme 2023-10-02 12:41:09 -04:00
Caleb Butler 13f73de403 Remove external math lib dependency
Replace external math lib functions with our own custom versions.
2023-10-01 22:13:28 -04:00
UnknownShadow200 031da68c8e Dreamcast: Fix build not working, also add classicube textures for default textures since Dreamcast build currently can't write any files 2023-09-30 15:22:23 +10:00
UnknownShadow200 2b34308d8d Dreamcast: Hopefully get github actions build to work 2023-09-30 13:44:27 +10:00
UnknownShadow200 08e2238a49 Dreamcast: Simplify gldc code a bit, to hopefully alleviate the minor performance reduction from disabling LTO 2023-09-30 12:36:41 +10:00
UnknownShadow200 b07f6575ba WIP on very basic platform independent system font backend 2023-09-30 09:11:21 +10:00
UnknownShadow200 0c2b52efe7
Merge pull request #1072 from UnknownShadow200/MainClosingRewrite
Allow closing back to launcher on consoles
2023-09-29 16:07:59 +10:00
UnknownShadow200 81e544c425 Fix PSP and Vita too sort of work too 2023-09-29 15:48:27 +10:00
UnknownShadow200 9b1d9ced16 WIP for 3DS, Wii/GameCube, Dreamcast 2023-09-29 13:51:03 +10:00
UnknownShadow200 100eae256f Consoles: WIP on supporting back to quitting back to launcher 2023-09-29 10:31:25 +10:00
UnknownShadow200 000a74932b Windows: Try to fix backtraces in crash handling always only showing one entry on Windows 9x 2023-09-28 22:15:08 +10:00
UnknownShadow200 899b66ae13 BearSSL backend: Fix socket read/write errors not being initialised to 0 2023-09-27 20:49:16 +10:00
UnknownShadow200 388b9daac4 Configure BearSSL to always rely on ClassiCube's platform function to retrieve the current time 2023-09-26 22:08:05 +10:00
UnknownShadow200 9a1072d45a Tidy up readme 2023-09-26 21:13:23 +10:00
UnknownShadow200 e01ab2878d 3DS: Try to fix encrypted options not being remembered
Also expand dreamcast instructions to include generating IP.BIN
Also minorly optimise entity rendering by avoiding unnecessary matrix multiplications
Change block model rendering to avoid using Gfx_SetDynamicVbData
2023-09-26 20:03:23 +10:00
UnknownShadow200 fd612bd95a Add gamepad controller bindings for left stick and right stick press to Web, Android and Xbox builds 2023-09-25 18:18:18 +10:00
UnknownShadow200 dd6fe33121 Try to return actual error code when socket I/O error occurs with a BearSSL read or write 2023-09-24 21:57:09 +10:00
UnknownShadow200 2c2f5d14fb WIP dreamcast build using github actions 2023-09-23 19:19:57 +10:00
UnknownShadow200 52f3acc285 More documentation updates 2023-09-21 20:48:44 +10:00
UnknownShadow200 4e9c0cd4d4 Some documentation additions 2023-09-20 21:44:02 +10:00
UnknownShadow200 5f09f90a57 Vita: Spam a bit less 2023-09-18 21:47:40 +10:00
UnknownShadow200 163c6d6493 Vita: Add missing files 2023-09-18 21:16:34 +10:00
UnknownShadow200 33e2a270e3 iOS: Mostly annotate minimum required iOS version for various APIs 2023-09-18 19:25:44 +10:00
UnknownShadow200 4ed73bb708 Fix held block not rendering properly on some consoles when not in classic mode (3DS,PSP,Vita, probably more)
Also most common errors with BearSSL (certificate date failed to validate, certificate authority wasn't trusted) now show a description message to the user instead of just the error number
Also fix Xbox build not compiling (nor notifying on actions build failure)
2023-09-17 12:32:53 +10:00
UnknownShadow200 fbdac77bb2 Add Vita and PS3 instructions to readme, add actions workflows for Xbox and Vita 2023-09-16 22:50:22 +10:00
UnknownShadow200 e555fdc21f PSP/Vita: Switch to using BearSSL for SSL support 2023-09-15 08:41:09 +10:00
UnknownShadow200 2f2d6aadbb Wii/GameCube: Switch to using BearSSL for SSL support 2023-09-14 23:19:55 +10:00
UnknownShadow200 734330823d 3DS: Switch to using BearSSL for SSL support 2023-09-14 20:57:54 +10:00
UnknownShadow200 e538100409 Add root certificates for most important websites for BearSSL 2023-09-14 19:20:36 +10:00
UnknownShadow200 797f75140f WIP on adding BearSSL SSL backend 2023-09-13 21:52:35 +10:00
UnknownShadow200 08e93f7562 Show better error message when plugin fails to load with error 126 on Windows, which most often happens because the exe isn't named ClassiCube.exe
Also
1) Add section to plugin development document on how you should load functions/variables dynamically on Windows
2) Add function pointer declarations for a number of exported functions from ClassiCube
2023-09-11 20:13:48 +10:00
UnknownShadow200 467d8acee5 PS3: Implement joystick support 2023-09-10 11:43:12 +10:00
UnknownShadow200 4808701c6e PS3: More work on 3D, switch to using native FS apis 2023-09-09 22:28:53 +10:00
UnknownShadow200 d2b262fc39 PS3: Launcher works, WIP on 3D 2023-09-09 19:38:04 +10:00
UnknownShadow200 7ece36c006 WIP PS3 stuff 2023-09-09 13:28:23 +10:00
UnknownShadow200 e6d1f593d2 Open source unfinished 360 stuff, fix some depth issues with xbox build 2023-09-08 21:39:37 +10:00
UnknownShadow200 466bc0134b Mostly move tablist screen over to new rendering method 2023-09-07 21:56:49 +10:00
UnknownShadow200 aa2c0f4b9f Launcher: If downloading a resource fails, then cancel all subsequent pending resources
macOS: Fix on cocoa backend, total video memory and HW acceleration status wasn't being shown on /client gpu on macOS 10.4 and later
2023-09-07 20:56:47 +10:00
UnknownShadow200 f9c898f859 Android: Try supporting gamepad controller buttons 2023-09-07 18:08:14 +10:00
UnknownShadow200 63aa34d2c2 Xbox: Fix coloured only vertices not being rendered 2023-09-05 19:39:39 +10:00
UnknownShadow200 14d076c21d XBox: Controller input works properly now
Also fix depth values being slightly messed up
Also fix couldn't go from launcher to in-game (due to the vblank interrupt handler that pbkit wanted to install, failing due to XVideoWaitForVBlank already having installed a vblank handler
2023-09-05 17:50:44 +10:00
UnknownShadow200 64148764f5 Xbox: Texture animations work 2023-09-04 23:27:51 +10:00
UnknownShadow200 0dfef89ad3 Xbox: 3D rendering kinda works now 2023-09-04 23:00:55 +10:00
UnknownShadow200 9af521b7cd Xbox: Now 2D renders with less graphical corruption 2023-09-04 21:55:16 +10:00
UnknownShadow200 2a7fb28aac Direct3D11: Fix after taking a screenshot, that attempting to resize the window would crash (Thanks 123DMWM) 2023-09-04 17:48:56 +10:00
UnknownShadow200 0a4f26c296 Mac: Make cocoa backend compile on macOS 10.3 2023-09-03 23:12:53 +10:00
UnknownShadow200 40fbd0cf05 Xbox: Textures kinda work 2023-09-03 14:07:36 +10:00
UnknownShadow200 5a4827f034 Vita: Connecting to multiplayer works probably 2023-09-03 11:38:32 +10:00
UnknownShadow200 11b96ef7e5 PSP: Some small fixes
- Try to reduce number of discarded polygons when rendering
- Try to peek instead of read controller input buffer to avoid blocking in rare cases
- Avoid logging two lines in PPSSPP debug console for each Platform_Log logged message
2023-09-03 10:42:33 +10:00
UnknownShadow200 1e132a1b25 Add more editable block properties, also allow configuring both wii keyboard and controller at same time 2023-09-03 08:07:25 +10:00
UnknownShadow200 18c15cc700 Webclient: Support joysticks and ZL/ZR buttons for gamepad 2023-09-02 17:46:16 +10:00
UnknownShadow200 b836fc6cb4
Merge pull request #1065 from UnknownShadow200/MultiBindInputSources
Support multiple sources of input
2023-09-01 21:03:05 +10:00
UnknownShadow200 1fce20a30a Webclient: Support controller input too 2023-09-01 20:43:05 +10:00
UnknownShadow200 f9c65faa0f WIP on menu for switching between whether configuring controller or keyboard/mouse bindings 2023-09-01 20:10:30 +10:00
UnknownShadow200 55316623a7 WIP on supporting both mouse/keyboard and gamepad bindings at the same time 2023-09-01 18:45:14 +10:00
UnknownShadow200 577ba9bf82 3DS: Clouds move now 2023-08-31 19:44:17 +10:00
UnknownShadow200 93bdd192ba HTTP: Fix not handling when connection needs to be auto closed properly 2023-08-30 21:49:19 +10:00
UnknownShadow200 b1c9e4bd5e Dreamcast: Texture animations 2023-08-30 19:15:46 +10:00
UnknownShadow200 1db63e3e19
Merge pull request #1062 from cellularmitosis/dashf
Use -f so 'make clean' doesn't fail
2023-08-30 17:44:26 +10:00
Jason Pepas a1419159cc Use -f so 'make clean' doesn't fail 2023-08-29 18:27:29 -05:00
UnknownShadow200 510a3f4044 Dreamcast: Use more optimised specialised drawing method in forked gldc 2023-08-29 18:15:30 +10:00
Goodlyay 3cf0cfd3e6 Fix palette, document brightness a bit better 2023-04-24 22:41:33 -07:00
Goodlyay efe31b9971 Always take light from neighbor block instead of self in modern smooth builder
Simplifies mesh builder and matches behavior of current adv lighting
2023-04-24 19:48:55 -07:00
Goodlyay b03fb01068 Blocks can cast either sun color or block color
Untested: Server should be able to specify the strength of block light as well as either using sun or block color
2023-04-23 18:41:45 -07:00
Goodlyay 054cceed87 Change block Fullbright boolean property to Brightness uint8 property 2023-04-23 05:32:07 -07:00
Goodlyay f771a917d8 Merge branch 'master' into ModernLighting 2023-04-22 23:19:39 -07:00
Goodlyay 80eca0233b Set sun lighting levels to 2 total 2023-04-22 23:19:10 -07:00
UnknownShadow200 b1f2c5ccaa Merge branch 'master' of github.com:UnknownShadow200/ClassicalSharp into ModernLighting
Conflicts:
	src/Menus.c
2023-02-23 07:41:57 +11:00
Goodlyay 1118871aae Merge branch 'master' into ModernLighting 2022-11-04 06:19:55 -07:00
UnknownShadow200 6c8b909f27 Merge branch 'master' of https://github.com/UnknownShadow200/ClassiCube into ModernLighting 2022-10-16 11:52:03 +11:00
Goodlyay 6c5f7b2a5d Merge branch 'master' into ModernLighting 2022-09-11 15:49:35 -07:00
UnknownShadow200 f645f82297 fix mistake from merge 2022-07-31 13:54:12 +10:00
UnknownShadow200 dfaa93672c fix merge conflicts 2022-07-31 13:52:01 +10:00
Goodlyay ebdc42ad6b Merge branch 'master' into ModernLighting 2022-07-18 14:59:34 -07:00
Goodlyay 3d6a26bc04 Merge branch 'master' into ModernLighting 2022-07-13 17:34:41 -07:00
UnknownShadow200 dfb5679287 Minorly optimise lighting 2022-07-07 21:30:05 +10:00
UnknownShadow200 c6c0f525c6 Fix memory leak and get rid of redundant Lighting.Color_YMax_Fast function 2022-07-07 21:02:49 +10:00
UnknownShadow200 671f1a36cc style cleanup 2022-07-07 20:36:42 +10:00
Goodlyay 7226d49c55 Make default block light color brighter and less saturated 2022-07-06 08:07:53 -07:00
Goodlyay 25bd61db18 Make smooth modern lighting respect Blocks.LightOffset 2022-07-06 06:48:30 -07:00
Goodlyay b2d00b0c2d Implement smooth lighting for modern lighting
Also tweak default sun ramp colors
2022-07-06 06:18:39 -07:00
UnknownShadow200 f6ce731246 Make block lighting a little bit faster 2022-07-05 08:39:39 +10:00
Goodlyay f7dbfbadcc Merge branch 'master' into ModernLighting 2022-07-04 03:48:19 -07:00
Goodlyay c3593afd54 Make sun light faster*, again
*based on extremely scientific tests of flying around a map and observing double/triple fps while loading chunks
TODO: somehow reign in the unacceptable code duplication
2022-07-03 07:21:14 -07:00
Goodlyay ec74342e45 Soften default transition from sun to shadow 2022-07-03 05:22:30 -07:00
Goodlyay 9ed7eec4fb Make sunlight significantly faster 2022-07-03 04:51:48 -07:00
Goodlyay 6e868ed312 Remove unused functions 2022-07-03 03:23:20 -07:00
Goodlyay 872ba78513 Horrifically slow sunlight 2022-07-03 03:21:06 -07:00
Goodlyay 3a2613fa56 Make light occlusion take block shape and other properties into account 2022-07-02 22:22:57 -07:00
Goodlyay e4b259aaad Use World for chunk count and axes [...]
Add new LightOffset flag to denote upper-slab type block, for classic lighting
Make FACE_Y in LightOffset behave like the other axes
Make classic lighting more accurate
2022-07-02 00:23:39 -07:00
Goodlyay 5b942bf763 Merge branch 'master' into ModernLighting 2022-07-02 00:11:26 -07:00
Goodlyay 965f278d3a Less broken test (Thanks UnknownShadow200) 2022-07-01 22:47:42 -07:00
Goodlyay 967aded9aa Extremely broken lighting calculation test 2022-07-01 00:03:42 -07:00
Goodlyay f18c28ec93 Merge branch 'master' into ModernLighting 2022-06-30 21:00:57 -07:00
Goodlyay d819dc9d73 Fix graphics menu misaligned descs index 2022-06-28 02:14:00 -07:00
Goodlyay f03b538abb Rudimentary lighting palette and memory test 2022-06-27 04:48:08 -07:00
816 changed files with 138815 additions and 29184 deletions

View File

@ -25,5 +25,6 @@ runs:
steps:
- name: Notify failure
shell: sh
if: ${{ inputs.WEBHOOK_URL != '' }}
run: |
curl ${{ inputs.WEBHOOK_URL }} -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"username\": \"${{ inputs.BOT_USERNAME }}\", \"avatar_url\": \"${{ inputs.BOT_AVATAR }}\", \"content\": \"${{ inputs.NOTIFY_MESSAGE }}\" }"

View File

@ -0,0 +1,19 @@
name: Notify success
description: Sends a notification that a workflow has finished
inputs:
DESTINATION_URL:
description: 'Webhook notification URL'
type: string
WORKFLOW_NAME:
description: 'Workflow name'
required: true
type: string
runs:
using: "composite"
steps:
- name: Notify failure
if: ${{ inputs.DESTINATION_URL != '' }}
shell: sh
run: |
curl ${{ inputs.DESTINATION_URL }}/${{ inputs.WORKFLOW_NAME }}/${{ github.sha }}

View File

@ -13,7 +13,8 @@ inputs:
runs:
using: "composite"
steps:
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: ${{ inputs.DEST_NAME }}
path: ${{ inputs.SOURCE_FILE }}
if-no-files-found: error

View File

@ -1,135 +0,0 @@
name: Build
on: [push, pull_request]
jobs:
build_on_ubuntu:
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Ubuntu
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
config:
- { plat: "Linux", bits: 64 }
- { plat: "Linux", bits: 32 }
- { plat: "Windows", bits: 64 }
- { plat: "Windows", bits: 32 }
steps:
- uses: actions/checkout@v2
- name: Install Shared Dependencies
run: |
sudo apt-get -y update &&
sudo apt-get -y install build-essential
# Install platform specific dependencies
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Linux' && matrix.config.bits == 64
run: |
sudo apt-get -y install libx11-dev libxi-dev libgl1-mesa-dev
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Linux' && matrix.config.bits == 32
run: |
sudo dpkg --add-architecture i386 \
&& sudo apt-get -y update \
&& sudo apt-get -y install gcc-multilib libx11-dev:i386 libxi-dev:i386 libgl1-mesa-dev:i386
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
run: |
sudo apt-get -y install gcc-mingw-w64-x86-64
- name: Install Dependencies for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
run: |
sudo apt-get -y install gcc-mingw-w64-i686
# Build
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Linux' && matrix.config.bits == 64
run: |
cd src
make linux
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Linux' && matrix.config.bits == 32
run: |
cd src
# Note, this overwrites the previous flags
make linux CFLAGS="-m32" LDFLAGS="-m32"
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
run: |
cd src
make mingw CC="x86_64-w64-mingw32-gcc"
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
run: |
cd src
make mingw CC="i686-w64-mingw32-gcc"
build_on_windows:
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
config:
- { plat: "Windows", bits: 64 }
- { plat: "Windows", bits: 32 }
steps:
- uses: actions/checkout@v2
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.1
# Build
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 64
run: |
msbuild src\ClassiCube.vcxproj `
-property:Configuration=Debug -property:Platform=x64 `
-property:WindowsTargetPlatformVersion=10 -property:PlatformToolset=v142
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Windows' && matrix.config.bits == 32
run: |
msbuild src\ClassiCube.vcxproj `
-property:Configuration=Debug -property:Platform=Win32 `
-property:WindowsTargetPlatformVersion=10 -property:PlatformToolset=v142
build_on_mac:
name: Build ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit) on Mac
runs-on: macOS-latest
strategy:
fail-fast: false
matrix:
config:
- { plat: "Mac", bits: 64 }
# "ld: warning: ignoring file ..., missing required architecture i386 in file ..."
# "Undefined symbols for architecture i386"
# - { plat: "Mac", bits: 32 }
steps:
- uses: actions/checkout@v2
# Build
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Mac' && matrix.config.bits == 64
run: |
cd src
make mac_x64
- name: Build for ${{ matrix.config.plat }} (${{ matrix.config.bits }} bit)
if: matrix.config.plat == 'Mac' && matrix.config.bits == 32
run: |
cd src
make mac_x32

View File

@ -1,5 +1,11 @@
name: Build latest (3DS)
on: [push]
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-3ds
@ -7,24 +13,46 @@ concurrency:
jobs:
build-3DS:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: devkitpro/devkitarm:latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Compile 3DS build
id: compile
run: |
make 3ds
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 3DS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
SOURCE_FILE: 'ClassiCube-3ds.cia'
DEST_NAME: 'ClassiCube-3ds.cia'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-3ds.3dsx'
DEST_NAME: 'ClassiCube-3ds.3dsx'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-3ds.elf'
DEST_NAME: 'ClassiCube-3ds.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: '3ds'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 3DS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

122
.github/workflows/build_android.yml vendored Normal file
View File

@ -0,0 +1,122 @@
name: Build latest (Android2)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-android
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/saschpe/android-ndk:34-jdk17.0.8_7-ndk25.2.9519653-cmake3.22.1
steps:
- uses: actions/checkout@v4
- name: Retrieve dependencies
shell: bash
run: |
mkdir build-tools
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/build-tools.zip
unzip build-tools.zip -d build-tools
chmod +x build-tools/aapt
chmod +x build-tools/dx
chmod +x build-tools/zipalign
- name: Compile android builds
shell: bash
id: compile
env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror"
DROID_FLAGS: "-fPIC -shared -fvisibility=hidden -rdynamic -funwind-tables"
LIBS: "-lGLESv2 -lEGL -lm -llog"
SRCS: "src/*.c src/android/*.c third_party/bearssl/*.c"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
DROID_FLAGS="-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
ROOT_DIR=$PWD
NDK_ROOT="/opt/android-sdk-linux/ndk/25.2.9519653/toolchains/llvm/prebuilt/linux-x86_64/bin"
TOOLS_ROOT=$ROOT_DIR/build-tools
SDK_ROOT="/opt/android-sdk-linux/platforms/android-34"
$NDK_ROOT/armv7a-linux-androideabi19-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS -march=armv5 -rtlib=libgcc -L $ROOT_DIR/build-tools/runtime ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_16
$NDK_ROOT/armv7a-linux-androideabi19-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS -mfpu=vfp3-d16 ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_32
$NDK_ROOT/aarch64-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-arm_64
$NDK_ROOT/i686-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-x86_32
$NDK_ROOT/x86_64-linux-android21-clang ${{ env.SRCS }} $COMMON_FLAGS $DROID_FLAGS ${{ env.LIBS }} $LATEST_FLAG -o cc-droid-x86_64
cd $ROOT_DIR/android/app/src/main
# copy required native libraries
mkdir lib lib/armeabi lib/armeabi-v7a lib/arm64-v8a lib/x86 lib/x86_64
cp $ROOT_DIR/cc-droid-arm_16 lib/armeabi/libclassicube.so
cp $ROOT_DIR/cc-droid-arm_32 lib/armeabi-v7a/libclassicube.so
cp $ROOT_DIR/cc-droid-arm_64 lib/arm64-v8a/libclassicube.so
cp $ROOT_DIR/cc-droid-x86_32 lib/x86/libclassicube.so
cp $ROOT_DIR/cc-droid-x86_64 lib/x86_64/libclassicube.so
# The following commands are for manually building an .apk, see
# https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
# https://github.com/cnlohr/rawdrawandroid/blob/master/Makefile
# https://stackoverflow.com/questions/41132753/how-can-i-build-an-android-apk-without-gradle-on-the-command-line
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/Makefile
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/CMakeLists.txt
# compile java files into multiple .class files
cd $ROOT_DIR/android/app/src/main/java/com/classicube
javac *.java -d $ROOT_DIR/android/app/src/main/obj -classpath $SDK_ROOT/android.jar --release 8
cd $ROOT_DIR/android/app/src/main
# get debug signing key
echo -n "${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}" | base64 --decode > debug.keystore
# compile the multiple .class files into one .dex file
$TOOLS_ROOT/dx --dex --output=classes.dex ./obj
# create initial .apk with packaged version of resources
$TOOLS_ROOT/aapt package -f -M AndroidManifest.xml -S res -F cc-unsigned.apk -I $SDK_ROOT/android.jar
# and add all the required files
$TOOLS_ROOT/aapt add -f cc-unsigned.apk classes.dex lib/armeabi/libclassicube.so lib/armeabi-v7a/libclassicube.so lib/arm64-v8a/libclassicube.so lib/x86/libclassicube.so lib/x86_64/libclassicube.so
# sign the apk with debug key (https://stackoverflow.com/questions/16711233/)
# Note per https://developer.android.com/tools/zipalign
# - if using apksigner, zipalign must be called before apksigner
# - if using jarsigner, zipalign must be called after jarsigner
$TOOLS_ROOT/zipalign -f 4 cc-unsigned.apk cc-signed.apk
$TOOLS_ROOT/apksigner sign --ks debug.keystore --ks-pass pass:android cc-signed.apk
cp cc-signed.apk $ROOT_DIR/src/cc.apk
# old v1 only version (doesn't work properly now)
#cp cc-unsigned.apk cc-signed.apk
#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore -storepass android -keypass android cc-signed.apk androiddebugkey
# jarsigner -verbose
# create aligned .apk file
#$TOOLS_ROOT/zipalign -f 4 cc-signed.apk $ROOT_DIR/src/cc.apk
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'src/cc.apk'
DEST_NAME: 'cc.apk'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'android'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce android build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

68
.github/workflows/build_dreamcast.yml vendored Normal file
View File

@ -0,0 +1,68 @@
name: Build latest (Dreamcast)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-dreamcast
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/kos-builds/kos-dc:sha-20149ee-14.2.0
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
shell: bash
run: |
apt-get update
apt-get -y install genisoimage
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/cdi4dc -O /opt/toolchains/dc/kos/utils/cdi4dc
chmod +x /opt/toolchains/dc/kos/utils/cdi4dc
- name: Compile Dreamcast build
id: compile
shell: bash
run: |
export PATH=/opt/toolchains/dc/kos/utils/:$PATH
make dreamcast
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-dc.cdi'
DEST_NAME: 'ClassiCube-dc.cdi'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-dc.iso'
DEST_NAME: 'ClassiCube-dc.iso'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-dc.elf'
DEST_NAME: 'ClassiCube-dc.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'dreamcast'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Dreamcast build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

81
.github/workflows/build_freebsd.yml vendored Normal file
View File

@ -0,0 +1,81 @@
name: Build latest (FreeBSD)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-freebsd
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: empterdose/freebsd-cross-build:11.4
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: apk add bash wget curl
- name: Retrieve OpenGL and X11 dev files (64 bit)
run: |
mkdir freebsd64
cd freebsd64
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd64.zip
unzip freebsd64.zip
- name: Retrieve OpenGL and X11 dev files (32 bit)
run: |
mkdir freebsd32
cd freebsd32
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd32.zip
unzip freebsd32.zip
- name: Compile FreeBSD builds
id: compile
shell: bash
env:
LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
PLAT32_FLAGS: "-fno-pie -fcf-protection=none -I freebsd32/include -L freebsd32/lib"
PLAT64_FLAGS: "-fno-pie -fcf-protection=none -I freebsd64/include -L freebsd64/lib"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
i386-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT32_FLAGS }} $LATEST_FLAG -o cc-fbsd32-gl1 ${{ env.LIBS }}
x86_64-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-fbsd64-gl1 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-fbsd32-gl1'
DEST_NAME: 'ClassiCube-FreeBSD-32'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-fbsd64-gl1'
DEST_NAME: 'ClassiCube-FreeBSD-64'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'freebsd'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce FreeBSD build(s)'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

48
.github/workflows/build_gba.yml vendored Normal file
View File

@ -0,0 +1,48 @@
name: Build latest (GBA)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-gba
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: devkitpro/devkitarm:latest
steps:
- uses: actions/checkout@v4
- name: Compile GBA build
id: compile
run: |
make gba
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-gba.gba'
DEST_NAME: 'ClassiCube-gba.gba'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-gba.elf'
DEST_NAME: 'ClassiCube-gba.elf'
# NOTE: Not uploaded to website downloads at present
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce GBA build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

52
.github/workflows/build_gc.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Build latest (GameCube)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-gc
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/extremscorner/libogc2:latest
steps:
- uses: actions/checkout@v4
- name: Compile GameCube build
id: compile
run: |
make gamecube
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-gc.dol'
DEST_NAME: 'ClassiCube-gc.dol'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-gc.elf'
DEST_NAME: 'ClassiCube-gc.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'gc'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce GameCube build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -1,31 +1,51 @@
name: Build latest (Haiku)
on: [push]
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-haiku
cancel-in-progress: true
jobs:
build-haiku:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: haiku/cross-compiler:x86_64-r1beta4
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Compile haiku build
id: compile
env:
LIBS: "-lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker"
SRCS: "src/*.c src/Platform_BeOS.cpp src/Window_BeOS.cpp third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror"
run: |
cd src
x86_64-unknown-haiku-gcc *.c interop_BeOS.cpp -o ClassiCube-haiku -O1 -s -fno-stack-protector -fno-math-errno -Qn -lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
x86_64-unknown-haiku-gcc ${{ env.SRCS }} -o ClassiCube-haiku ${{ env.COMMON_FLAGS }} ${{ env.LIBS }}
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Haiku build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'src/ClassiCube-haiku'
SOURCE_FILE: 'ClassiCube-haiku'
DEST_NAME: 'ClassiCube-haiku'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'haiku'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Haiku build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

49
.github/workflows/build_ios.yml vendored Normal file
View File

@ -0,0 +1,49 @@
name: Build latest (iOS)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-ios
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: macOS-14
steps:
- uses: actions/checkout@v4
- name: Compile iOS build
id: compile
run: |
cd misc/ios
sudo xcode-select -s /Applications/Xcode_15.0.1.app/Contents/Developer
xcodebuild -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
cd build/Release-iphoneos
mkdir Payload
mv ClassiCube.app Payload/ClassiCube.app
zip -r cc.ipa Payload
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'misc/ios/build/Release-iphoneos/cc.ipa'
DEST_NAME: 'cc.ipa'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ios'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce iOS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

150
.github/workflows/build_linux.yml vendored Normal file
View File

@ -0,0 +1,150 @@
name: Build latest (Linux)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
- ModernLighting
- AngledLighting
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-linux
cancel-in-progress: true
jobs:
#============================================
# =============== 32 BIT LINUX ==============
# ===========================================
build-32:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
steps:
- uses: actions/checkout@v4
- name: Install packages
shell: bash
run: |
apt-get -y update
apt-get -y install gcc-multilib wget curl unzip
- name: Retrieve dependencies
shell: bash
run: |
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/linux32.zip
unzip linux32.zip
- name: Compile 32 bit Linux builds
shell: bash
id: compile
env:
LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
NIX32_FLAGS: "-no-pie -fno-pie -m32 -fcf-protection=none -L ./lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -o cc-nix32-gl1 ${{ env.LIBS }}
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix32-gl2 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-nix32-gl1'
DEST_NAME: 'ClassiCube-Linux32-OpenGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-nix32-gl2'
DEST_NAME: 'ClassiCube-Linux32-ModernGL'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'linux32'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 32 bit Linux build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
#============================================
# =============== 64 BIT LINUX ==============
# ===========================================
build-64:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
steps:
- uses: actions/checkout@v4
- name: Install packages
shell: bash
run: |
apt-get -y update
apt-get -y install gcc wget curl unzip
- name: Retrieve dependencies
shell: bash
run: |
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/linux64.zip
unzip linux64.zip
- name: Compile 64 bit Linux builds
shell: bash
id: compile
env:
LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic -Werror"
NIX64_FLAGS: "-no-pie -fno-pie -m64 -fcf-protection=none -rdynamic -L ./lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -o cc-nix64-gl1 ${{ env.LIBS }}
gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix64-gl2 ${{ env.LIBS }}
#gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL2 -o cc-sdl64-gl2 -lSDL2 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-nix64-gl1'
DEST_NAME: 'ClassiCube-Linux64-OpenGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-nix64-gl2'
DEST_NAME: 'ClassiCube-Linux64-ModernGL'
# - uses: ./.github/actions/upload_build
# if: ${{ always() && steps.compile.outcome == 'success' }}
# with:
# SOURCE_FILE: 'cc-sdl64-gl2'
# DEST_NAME: 'ClassiCube-Linux64-SDL2'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'linux64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 64 bit Linux build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

99
.github/workflows/build_mac32.yml vendored Normal file
View File

@ -0,0 +1,99 @@
name: Build latest (macOS 32 bit)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-mac32
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/classicube/minimal-osxcross:latest
credentials:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Compile 32 bit macOS builds
shell: bash
id: compile
env:
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1"
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
PATH=$PATH:/usr/local/compiler/target/bin
i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 ${{ env.LIBS }}
i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac32-gl2 ${{ env.LIBS }}
- name: Compile 32 bit macOS builds (PowerPC)
shell: bash
id: compile_ppc
env:
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc"
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -static-libgcc -Wl,-no_compact_unwind -isystem /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk -Wl,-syslibroot /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
mkdir -p /home/minty/repos/osxcross-ppc-test/target/bin
ln -s /usr/local/compiler/ppc/target/bin/powerpc64-apple-darwin9-as /home/minty/repos/osxcross-ppc-test/target/bin/powerpc64-apple-darwin9-as
PATH=$PATH:/usr/local/compiler/ppc/target/bin
powerpc-apple-darwin9-base-gcc *${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -o cc-mac32-ppc -mmacosx-version-min=10.2.0 -m32 ${{ env.LIBS }}
- name: Generate combined Intel + PowerPC build
shell: bash
id: gen_universal
run: |
PATH=$PATH:/usr/local/compiler/target/bin
i386-apple-darwin8-lipo -create -output cc-mac32-universal cc-mac32-gl1 cc-mac32-ppc
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac32-gl1'
DEST_NAME: 'ClassiCube-mac32-OpenGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac32-gl2'
DEST_NAME: 'ClassiCube-mac32-ModernGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile_ppc.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac32-ppc'
DEST_NAME: 'ClassiCube-mac32-PPC'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.gen_universal.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac32-universal'
DEST_NAME: 'ClassiCube-mac32'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'mac32'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 32 bit macOS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

71
.github/workflows/build_mac64.yml vendored Normal file
View File

@ -0,0 +1,71 @@
name: Build latest (macOS 64 bit)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
- AngledLighting
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-mac64
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: macOS-latest
steps:
- uses: actions/checkout@v4
- name: Compile 64 bit macOS builds
shell: bash
id: compile
env:
LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc"
SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic"
ARM64_FLAGS: "-DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -arch arm64"
INTEL64_FLAGS: "-arch x86_64"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -o cc-mac64-gl1 ${{ env.LIBS }}
MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac64-gl2 ${{ env.LIBS }}
clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.ARM64_FLAGS }} $LATEST_FLAG -o cc-mac-arm64 ${{ env.LIBS }}
# https://wiki.freepascal.org/Code_Signing_for_macOS#Ad_hoc_signing
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac64-gl1'
DEST_NAME: 'ClassiCube-mac64-OpenGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac64-gl2'
DEST_NAME: 'ClassiCube-mac64-ModernGL'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac-arm64'
DEST_NAME: 'ClassiCube-mac-ARM64'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'mac64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 64 bit macOS builds'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

60
.github/workflows/build_macclassic.yml vendored Normal file
View File

@ -0,0 +1,60 @@
name: Build latest (Mac Classic)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-mac-classic
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/autc04/retro68
steps:
- uses: actions/checkout@v4
- name: Compile Mac classic build
id: compile
run: |
make macclassic_ppc RETRO68=/Retro68-build/toolchain
make macclassic_68k RETRO68=/Retro68-build/toolchain
make macclassic_68k RETRO68=/Retro68-build/toolchain ARCH_68040=1
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ppc.dsk'
DEST_NAME: 'ClassiCube-ppc.dsk'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-68k.dsk'
DEST_NAME: 'ClassiCube-68k.dsk'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-68040.dsk'
DEST_NAME: 'ClassiCube-68040.dsk'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'macclassic'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Mac Classic build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

51
.github/workflows/build_msdos.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: Build latest (MS DOS)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-msdos
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/volkertb/debian-djgpp
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get -y install curl
- name: Compile MS dos build
id: compile
run: |
make CC=gcc dos
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'CCDOS.EXE'
DEST_NAME: 'ClassiCube.exe'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'msdos'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce MS DOS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

64
.github/workflows/build_n64.yml vendored Normal file
View File

@ -0,0 +1,64 @@
name: Build latest (N64)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-n64
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/dragonminded/libdragon:preview
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get -y install curl
- name: Compile N64 build
id: compile
run: |
REAL_DIR=`pwd`
cd /tmp
git clone -b opengl https://github.com/DragonMinded/libdragon.git --depth=1
cd libdragon
make install
make tools-install
cd $REAL_DIR
make n64
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'build-n64/ClassiCube-n64.elf'
DEST_NAME: 'ClassiCube-n64.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-n64.z64'
DEST_NAME: 'ClassiCube-n64.z64'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'n64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce N64 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

71
.github/workflows/build_nds.yml vendored Normal file
View File

@ -0,0 +1,71 @@
name: Build latest (NDS)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-nds
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: skylyrac/blocksds:dev-latest
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get -y install curl
- name: Compile NDS build
id: compile
run: |
make ds
export BUILD_NONET=1
make ds
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube.nds'
DEST_NAME: 'ClassiCube.nds'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'build/nds/cc-arm9.elf'
DEST_NAME: 'ClassiCube.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-nonet.nds'
DEST_NAME: 'ClassiCube-nonet.nds'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'build/nds_nonet/cc-arm9.elf'
DEST_NAME: 'ClassiCube-nonet.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'nds'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce NDS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

66
.github/workflows/build_netbsd.yml vendored Normal file
View File

@ -0,0 +1,66 @@
name: Build latest (NetBSD)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-netbsd
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/cross-rs/x86_64-unknown-netbsd:edge
steps:
- uses: actions/checkout@v3
- name: Install prerequisites
run: |
apt-get update
apt-get -y install zip wget
- name: Retrieve OpenGL and X11 dev files (64 bit)
run: |
mkdir netbsd64
cd netbsd64
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/netbsd64.zip
unzip netbsd64.zip
- name: Compile NetBSD builds
id: compile
shell: bash
env:
LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -Wl,-R/usr/X11R7/lib -fvisibility=hidden -rdynamic -Werror"
PLAT64_FLAGS: "-fno-pie -fcf-protection=none -I netbsd64/include -L netbsd64/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
x86_64-unknown-netbsd-gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-netbsd64-gl1 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-netbsd64-gl1'
DEST_NAME: 'ClassiCube-NetBSD-64'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'netbsd'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce NetBSD build(s)'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

70
.github/workflows/build_ps1.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Build latest (PS1)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-ps1
cancel-in-progress: true
jobs:
build-PS1:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/classicube/minimal-psn00b:latest
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get install -y curl
- name: Compile PS1 build
id: compile
run: |
export PSN00BSDK_ROOT=/usr/local/psnoob
make ps1
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'build/ps1/ClassiCube-ps1.elf'
DEST_NAME: 'ClassiCube-PS1.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ps1.exe'
DEST_NAME: 'ClassiCube-PS1.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ps1.bin'
DEST_NAME: 'ClassiCube-PS1.bin'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ps1.cue'
DEST_NAME: 'ClassiCube-PS1.cue'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps1'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PS1 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

56
.github/workflows/build_ps2.yml vendored Normal file
View File

@ -0,0 +1,56 @@
name: Build latest (PS2)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-ps2
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/ps2dev/ps2sdk:latest
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add make mpc1 curl
- name: Compile PS2 build
id: compile
run: |
make ps2
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ps2.elf'
DEST_NAME: 'ClassiCube-ps2.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-ps2-min.elf'
DEST_NAME: 'ClassiCube-ps2-min.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps2'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PS2 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

67
.github/workflows/build_ps3.yml vendored Normal file
View File

@ -0,0 +1,67 @@
name: Build latest (PS3)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-ps3
cancel-in-progress: true
jobs:
build-PS3:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/classicube/minimal-psl1ght:latest
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get install -y curl
- name: Compile PS3 build
id: compile
run: |
export PS3DEV=/usr/local/ps3dev
export PSL1GHT=/usr/local/ps3dev
export PATH=$PATH:$PS3DEV/bin
export PATH=$PATH:$PS3DEV/ppu/bin
make ps3
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-PS3.elf'
DEST_NAME: 'ClassiCube-PS3.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-PS3.self'
DEST_NAME: 'ClassiCube-PS3.self'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-PS3.pkg'
DEST_NAME: 'ClassiCube-PS3.pkg'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps3'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PS3 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -1,30 +1,56 @@
name: Build latest (PSP)
on: [push]
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-psp
cancel-in-progress: true
jobs:
build-PSP:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: pspdev/pspdev:latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add curl curl-dev
- name: Compile PSP build
id: compile
run: |
make psp
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile PSP build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'EBOOT.PBP'
DEST_NAME: 'EBOOT.PBP'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-psp.elf'
DEST_NAME: 'ClassiCube-psp.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'psp'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PSP build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

116
.github/workflows/build_rpi.yml vendored Normal file
View File

@ -0,0 +1,116 @@
name: Build latest (RPI)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-rpi
cancel-in-progress: true
jobs:
#============================================
# ================ 32 BIT RPI ===============
# ===========================================
build-RPI32:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: dockcross/linux-armv6-lts
steps:
- uses: actions/checkout@v4
- name: Retrieve OpenGL and X11 dev files
run: |
mkdir rpi
cd rpi
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi32.zip
unzip rpi32.zip
- name: Compile RPI 32 bit build
id: compile
env:
LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic"
RPI32_FLAGS: "-DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
$CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI32_FLAGS }} $LATEST_FLAG -o cc-rpi32 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-rpi32'
DEST_NAME: 'cc-rpi32'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'rpi32'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce RPI 32 bit build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
#============================================
# ================ 64 BIT RPI ===============
# ===========================================
build-RPI64:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: dockcross/linux-arm64-lts
steps:
- uses: actions/checkout@v4
- name: Retrieve OpenGL and X11 dev files
run: |
mkdir rpi
cd rpi
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi64.zip
unzip rpi64.zip
- name: Compile RPI 64 bit build
id: compile
env:
LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
SRCS: "src/*.c third_party/bearssl/*.c"
FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror -fvisibility=hidden -rdynamic"
RPI64_FLAGS: "-DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
$CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI64_FLAGS }} $LATEST_FLAG -o cc-rpi64 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-rpi64'
DEST_NAME: 'cc-rpi64'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'rpi64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce RPI 64 bit build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

63
.github/workflows/build_saturn.yml vendored Normal file
View File

@ -0,0 +1,63 @@
name: Build latest (Saturn)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-saturn
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ijacquez/yaul:latest
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get --allow-releaseinfo-change update
apt-get install -y curl
- name: Compile Saturn build
id: compile
run: |
make saturn
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'build/saturn/ClassiCube-saturn.elf'
DEST_NAME: 'ClassiCube-saturn.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-saturn.iso'
DEST_NAME: 'ClassiCube-saturn.iso'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-saturn.cue'
DEST_NAME: 'ClassiCube-saturn.cue'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'saturn'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Saturn build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

52
.github/workflows/build_switch.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Build latest (Switch)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-switch
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: devkitpro/devkita64:latest
steps:
- uses: actions/checkout@v4
- name: Compile Switch build
id: compile
run: |
make switch
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-switch.nro'
DEST_NAME: 'ClassiCube-switch.nro'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-switch.elf'
DEST_NAME: 'ClassiCube-switch.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'switch'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Switch build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

82
.github/workflows/build_symbian.yml vendored Normal file
View File

@ -0,0 +1,82 @@
name: Build latest (Symbian)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
- ModernLighting
- AngledLighting
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-symbian
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Download Symbian SDK
run: Invoke-WebRequest https://nnp.nnchan.ru/dl/symbiansr1_gcce_workflow.zip -OutFile symbiansdk.zip
- name: Extract Symbian SDK
run: Expand-Archive symbiansdk.zip -DestinationPath .
- name: Compile Symbian build
id: compile
run: |
$SDK = "$pwd/SDK/"
$Env:EPOCROOT = "$SDK".Substring(2)
$Env:SBS_GCCE441BIN = "$pwd/GCCE/bin"
cmd /c "$SDK/epoc32/tools/sbs\bin\sbs.bat -b misc/symbian/bld.inf -c armv5_urel_gcce -f - -m $SDK/epoc32/build/ClassiCube/makefile -j 4"
cd misc/symbian
(Get-Content ClassiCube.pkg).Replace('$(EPOCROOT)', "$SDK").Replace('$(PLATFORM)', 'armv5').Replace('$(TARGET)', 'urel') | Set-Content ClassiCube.pkg
cmd /c "$SDK/epoc32/tools/makesis.exe ClassiCube.pkg ClassiCube.sis"
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'misc/symbian/ClassiCube.sis'
DEST_NAME: 'ClassiCube-Symbian.sis'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v5.exe'
DEST_NAME: 'ClassiCube_s60v5.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v3.exe'
DEST_NAME: 'ClassiCube_s60v3.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v5.exe.sym'
DEST_NAME: 'ClassiCube_s60v5.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'SDK/epoc32/release/armv5/urel/ClassiCube_s60v3.exe.sym'
DEST_NAME: 'ClassiCube_s60v3.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'symbian'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Symbian build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

52
.github/workflows/build_vita.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Build latest (Vita)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-vita
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: vitasdk/vitasdk:latest
steps:
- uses: actions/checkout@v4
- name: Compile Vita build
id: compile
run: |
make vita
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-vita.vpk'
DEST_NAME: 'ClassiCube-vita.vpk'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-vita.elf'
DEST_NAME: 'ClassiCube-vita.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'vita'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Vita build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

48
.github/workflows/build_webclient.yml vendored Normal file
View File

@ -0,0 +1,48 @@
name: Build latest (Webclient)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-webclient
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: trzeci/emscripten-fastcomp:1.39.0
steps:
- uses: actions/checkout@v4
- name: Compiles webclient
id: compile
env:
SRCS: "src/*.c src/webclient/*.c"
run: |
emcc ${{ env.SRCS }} -o ClassiCube.js -s WASM=0 -s NO_EXIT_RUNTIME=1 -s LEGACY_VM_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 -s ABORTING_MALLOC=0 -s ENVIRONMENT=web -s TOTAL_STACK=256Kb --js-library src/webclient/interop_web.js -Os -g2 -s SINGLE_FILE
sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' ClassiCube.js
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube.js'
DEST_NAME: 'ClassiCube.js'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'webclient'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Webclient'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

65
.github/workflows/build_wii.yml vendored Normal file
View File

@ -0,0 +1,65 @@
name: Build latest (Wii)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-wii
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: devkitpro/devkitppc:latest
steps:
- uses: actions/checkout@v4
- name: Compile Wii build
id: compile
run: |
make wii
- name: Create Wii homebrew
run: |
mkdir -p wiitest/apps/ClassiCube
cp ClassiCube-wii.dol wiitest/apps/ClassiCube/boot.dol
cp misc/wii/icon.png wiitest/apps/ClassiCube/icon.png
cp misc/wii/meta.xml wiitest/apps/ClassiCube/meta.xml
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wii.dol'
DEST_NAME: 'ClassiCube-wii.dol'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wii.elf'
DEST_NAME: 'ClassiCube-wii.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'wiitest'
DEST_NAME: 'ClassiCube-Wii-Homebrew'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'wii'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Wii build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -1,38 +0,0 @@
name: Build latest (Wii/GameCube)
on: [push]
concurrency:
group: ${{ github.ref }}-wiigc
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
container:
image: devkitpro/devkitppc:latest
steps:
- uses: actions/checkout@v3
- name: Compile Wii and GameCube build
id: compile
run: |
make wii
make clean
make gamecube
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Wii/Gamecube build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wii.dol'
DEST_NAME: 'ClassiCube-wii.dol'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-gc.dol'
DEST_NAME: 'ClassiCube-gc.dol'

58
.github/workflows/build_wiiu.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: Build latest (WiiU)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-wiiu
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: devkitpro/devkitppc:latest
steps:
- uses: actions/checkout@v4
- name: Compile Wii U build
id: compile
run: |
make wiiu
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wiiu.wuhb'
DEST_NAME: 'ClassiCube-wiiu.wuhb'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wiiu.rpx'
DEST_NAME: 'ClassiCube-wiiu.rpx'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-wiiu.elf'
DEST_NAME: 'ClassiCube-wiiu.elf'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'wiiu'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce WiiU build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

92
.github/workflows/build_win-arm.yml vendored Normal file
View File

@ -0,0 +1,92 @@
name: Build latest (Windows ARM32/64)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-windows-arm
cancel-in-progress: true
jobs:
#============================================
# ============== ARM32 WINDOWS ==============
# ===========================================
build-32:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: dockcross/windows-armv7
steps:
- uses: actions/checkout@v4
- name: Compile ARM32 Windows builds
shell: bash
id: compile
env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
armv7-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-arm32-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-arm32-d3d11.exe'
DEST_NAME: 'ClassiCube-arm32-Direct3D11.exe'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 32 bit Windows-ARM build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
#============================================
# ============== ARM64 WINDOWS ==============
# ===========================================
build-64:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: dockcross/windows-arm64
steps:
- uses: actions/checkout@v4
- name: Compile ARM64 Windows builds
shell: bash
id: compile
env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
aarch64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-arm64-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-arm64-d3d11.exe'
DEST_NAME: 'ClassiCube-arm64-Direct3D11.exe'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows-ARM build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

151
.github/workflows/build_windows.yml vendored Normal file
View File

@ -0,0 +1,151 @@
name: Build latest (Windows)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
- ModernLighting
- AngledLighting
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-windows
cancel-in-progress: true
jobs:
#============================================
# ============== 32 BIT WINDOWS =============
# ===========================================
build-32:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install packages
shell: bash
run: |
sudo apt-get -y install gcc-mingw-w64-i686
- name: Compile 32 bit Windows builds
shell: bash
id: compile
env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN src/CCicon_32.res"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cp misc/windows/CCicon_32.res src/CCicon_32.res
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d9.exe $LATEST_FLAG ${{ env.LIBS }}
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 ${{ env.LIBS }}
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 ${{ env.LIBS }}
# mingw defaults to i686, but some really old CPUs only support i586
i686-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -march=i586 -o cc-w9x-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 -DCC_BUILD_NOSTDLIB ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w32-d3d9.exe'
DEST_NAME: 'ClassiCube-Win32-Direct3D9.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w32-ogl.exe'
DEST_NAME: 'ClassiCube-Win32-OpenGL.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w32-d3d11.exe'
DEST_NAME: 'ClassiCube-Win32-Direct3D11.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w9x-ogl.exe'
DEST_NAME: 'ClassiCube-Win9x.exe'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'win32'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 32 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
#============================================
# ============== 64 BIT WINDOWS =============
# ===========================================
build-64:
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install packages
shell: bash
run: |
sudo apt-get -y install gcc-mingw-w64-x86-64
- name: Compile 64 bit Windows builds
shell: bash
id: compile
env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN src/CCicon_64.res"
run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cp misc/windows/CCicon_64.res src/CCicon_64.res
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d9.exe $LATEST_FLAG ${{ env.LIBS }}
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 ${{ env.LIBS }}
x86_64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 ${{ env.LIBS }}
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w64-d3d9.exe'
DEST_NAME: 'ClassiCube-Win64-Direct3D9.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w64-ogl.exe'
DEST_NAME: 'ClassiCube-Win64-OpenGL.exe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w64-d3d11.exe'
DEST_NAME: 'ClassiCube-Win64-Direct3D11.exe'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'win64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

57
.github/workflows/build_xbox.yml vendored Normal file
View File

@ -0,0 +1,57 @@
name: Build latest (Xbox)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-xbox
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ghcr.io/xboxdev/nxdk:git-e955705a
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add curl curl-dev
- name: Compile Xbox build
id: compile
run: |
eval $(/usr/src/nxdk/bin/activate -s)
make xbox
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-xbox.xbe'
DEST_NAME: 'ClassiCube-xbox.xbe'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-xbox.iso'
DEST_NAME: 'ClassiCube-xbox.iso'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'xbox'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Xbox build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

60
.github/workflows/build_xbox360.yml vendored Normal file
View File

@ -0,0 +1,60 @@
name: Build latest (Xbox 360)
# trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency:
group: ${{ github.ref }}-xbox360
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: free60/libxenon
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
apt-get update
apt-get install -y curl
- name: Compile 360 build
id: compile
run: |
export DEVKITXENON=/usr/local/xenon
export PATH=$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin
make xbox360
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-xbox360.elf'
DEST_NAME: 'ClassiCube-xbox360.elf'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'ClassiCube-xbox360.elf32'
DEST_NAME: 'ClassiCube-xbox360.elf32'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'xbox360'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Xbox 360 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

222
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,222 @@
name: Produce release
on: [workflow_dispatch]
concurrency:
group: ${{ github.ref }}-release
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Download resources
- name: Retrieve classicube texture pack
run: |
wget https://www.classicube.net/static/default.zip
- name: Retrieve classicube audio pack
run: |
wget https://www.classicube.net/static/audio.zip
# Download windows artifacts
- name: Retrieve Windows binaries
run: |
wget https://cdn.classicube.net/client/latest/ClassiCube.64.exe -O cc-w64.exe
wget https://cdn.classicube.net/client/latest/ClassiCube.exe -O cc-w32.exe
wget https://cdn.classicube.net/client/latest/cc-w9x.exe -O cc-w9x.exe
# Download Linux artifacts
- name: Retrieve Linux binaries
run: |
wget https://cdn.classicube.net/client/latest/ClassiCube -O cc-linux-64
wget https://cdn.classicube.net/client/latest/ClassiCube.32 -O cc-linux-32
# Download macOS artifacts
- name: Retrieve macOS binaries
run: |
wget https://cdn.classicube.net/client/latest/ClassiCube.64.osx -O cc-mac-64
wget https://cdn.classicube.net/client/latest/ClassiCube.osx -O cc-mac-32
# Download RPI artifacts
- name: Retrieve RPI binaries
run: |
wget https://cdn.classicube.net/client/latest/cc-rpi64 -O cc-rpi-64
wget https://cdn.classicube.net/client/latest/ClassiCube.rpi -O cc-rpi-32
# Download FreeBSD artifacts
- name: Retrieve FreeBSD binaries
run: |
wget https://cdn.classicube.net/client/latest/cc-freebsd-64 -O cc-freebsd-64
wget https://cdn.classicube.net/client/latest/cc-freebsd-32 -O cc-freebsd-32
# Download NetBSD artifacts
- name: Retrieve NetBSD binaries
run: |
wget https://cdn.classicube.net/client/latest/cc-netbsd-64 -O cc-netbsd-64
# Download haiku artifacts
- name: Retrieve haiku binaries
run: |
wget https://cdn.classicube.net/client/latest/cc-haiku-64 -O cc-haiku-64
- name: Generate builds
id: compile
shell: bash
run: |
mkdir ClassiCube
mkdir ClassiCube/audio
mkdir ClassiCube/texpacks
cp audio.zip ClassiCube/audio/classicube.zip
cp default.zip ClassiCube/texpacks/classicube.zip
# ./ClassiCube
make_unix_tar() {
cp $2 ClassiCube/ClassiCube
chmod +x ClassiCube/ClassiCube
tar -zcvf $1 ClassiCube
rm ClassiCube/ClassiCube
}
# ./ClassiCube
make_windows_zip() {
cp $2 ClassiCube/ClassiCube.exe
zip -r $1 ClassiCube
rm ClassiCube/ClassiCube.exe
}
# Generate haiku builds
make_unix_tar cc-haiku64.tar.gz cc-haiku-64
# Generate NetBSD builds
make_unix_tar cc-netbsd64.tar.gz cc-netbsd-64
# Generate FreeBSD builds
make_unix_tar cc-freebsd32.tar.gz cc-freebsd-32
make_unix_tar cc-freebsd64.tar.gz cc-freebsd-64
# Generate RPI builds
make_unix_tar cc-rpi32.tar.gz cc-rpi-32
make_unix_tar cc-rpi64.tar.gz cc-rpi-64
# Generate macOS builds
make_unix_tar cc-mac32.tar.gz cc-mac-32
make_unix_tar cc-mac64.tar.gz cc-mac-64
# Generate Windows builds
make_windows_zip cc-win32.zip cc-w32.exe
make_windows_zip cc-win64.zip cc-w64.exe
# Generate Linux builds
# NOTE: Must be last since it adds linux specific file
cp misc/linux/install-desktop-entry.sh ClassiCube/install-desktop-entry.sh
chmod +x ClassiCube/install-desktop-entry.sh
make_unix_tar cc-linux32.tar.gz cc-linux-32
make_unix_tar cc-linux64.tar.gz cc-linux-64
# Generate Linux release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-linux32.tar.gz'
DEST_NAME: 'cc-linux32.tar.gz'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-linux64.tar.gz'
DEST_NAME: 'cc-linux64.tar.gz'
# Generate macOS release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac32.tar.gz'
DEST_NAME: 'cc-mac32.tar.gz'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-mac64.tar.gz'
DEST_NAME: 'cc-mac64.tar.gz'
# Generate Windows release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-win32.zip'
DEST_NAME: 'cc-win32.zip'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-win64.zip'
DEST_NAME: 'cc-win64.zip'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-w9x.exe'
DEST_NAME: 'cc-win9x.exe'
# Generate RPI release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-rpi32.tar.gz'
DEST_NAME: 'cc-rpi32.tar.gz'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-rpi64.tar.gz'
DEST_NAME: 'cc-rpi64.tar.gz'
# Generate FreeBSD release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-freebsd32.tar.gz'
DEST_NAME: 'cc-freebsd32.tar.gz'
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-freebsd64.tar.gz'
DEST_NAME: 'cc-freebsd64.tar.gz'
# Generate NetBSD release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-netbsd64.tar.gz'
DEST_NAME: 'cc-netbsd64.tar.gz'
# Generate haiku release files
- uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
SOURCE_FILE: 'cc-haiku64.tar.gz'
DEST_NAME: 'cc-haiku64.tar.gz'
- uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }}
with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'release'
# Log any failure
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce release'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

154
.gitignore vendored
View File

@ -1,7 +1,7 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
# Visual studio User-specific files
*.suo
*.user
*.sln.docstates
@ -11,6 +11,7 @@
*.VC.VC.opendb
# Android build results
android/app/.cxx/
android/.cxx/
android/.idea/
android/.gradle/
@ -20,19 +21,50 @@ android/app/.externalNativeBuild/
android/local.properties
*.iml
#XCode stuff
project.xcworkspace/
xcuserdata/
# Nintendo Console build results
build-nds/
build-dsi/
build-n64/
classicube.nds
# SEGA console build results
IP.BIN
ISO_FILES/
cd/
# Microsoft console build results
build-360/
main.exe
main.lib
misc/xbox/ps_coloured.inl
misc/xbox/ps_textured.inl
misc/xbox/vs_coloured.inl
misc/xbox/vs_textured.inl
# Sony console build results
EBOOT.PBP
PARAM.SFO
param.sfo
eboot.bin
pkg.gp4
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
[Oo]utput/
[Pp]rofilingSessions/
src/.vs/
# ClassiCube game files
src/audio
src/texpacks
src/maps
@ -42,9 +74,43 @@ src/options.txt
src/ClassiCube*
src/screenshots
src/fontscache.txt
src/.vs/
# ClassiCube game files
audio
texpacks
maps
texturecache
logs
options.txt
ClassiCube*
screenshots
fontscache.txt
# DOS files
CWSDPMI.EXE
CWSDPMI.SWP
OPTIONS.TXT
CCDOS.EXE
# Android source files need to be included
!android/app/src/main/java/com/classicube
# Flatpak wrapper needs to be included
!misc/flatpak/ClassiCubeLauncher
# UWP files needs to be included
!misc/UWP/ClassiCube-UWP.sln
!misc/UWP/ClassiCube-UWP.vcxproj
!misc/UWP/ClassiCube-UWP.vcxproj.filters
# CMake files
CMakeFiles/
CMakeCache.txt
#GCC object files
*.o
# Build dependency files
*.d
# Roslyn cache directories
*.ide/
@ -62,6 +128,12 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c
# Mac classic
retro68scripts/
# PS2
openvcl/
*_i.c
*_p.c
*_i.h
@ -86,9 +158,11 @@ dlldata.c
*.pidb
*.svclog
*.scc
*.map
# Chutzpah Test files
_Chutzpah*
# Binary files
*.bin
*.elf
# Visual C++ cache files
ipch/
@ -103,61 +177,14 @@ ipch/
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
@ -184,11 +211,6 @@ ClientBin/
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
@ -198,14 +220,6 @@ Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Eclipse
.cproject
.project

403
Makefile
View File

@ -1,174 +1,371 @@
C_SOURCES:=$(wildcard src/*.c)
C_OBJECTS:=$(patsubst %.c, %.o, $(C_SOURCES))
OBJECTS:=$(C_OBJECTS)
ENAME=ClassiCube
DEL=rm
CFLAGS=-g -pipe -fno-math-errno
LDFLAGS=-g -rdynamic
SOURCE_DIR = src
BUILD_DIR = build
C_SOURCES = $(wildcard $(SOURCE_DIR)/*.c)
OBJECTS = $(patsubst %.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
BUILD_DIRS = $(BUILD_DIR) $(BUILD_DIR)/src
ifndef $(PLAT)
##############################
# Configurable flags and names
##############################
# Flags passed to the C compiler
CFLAGS = -pipe -fno-math-errno -Werror -Wno-error=missing-braces -Wno-error=strict-aliasing
# Flags passed to the linker
LDFLAGS = -g -rdynamic
# Name of the main executable
ENAME = ClassiCube
# Name of the final target file
# (usually this is the executable, but e.g. is the app bundle on macOS)
TARGET := $(ENAME)
# Enables dependency tracking (https://make.mad-scientist.net/papers/advanced-auto-dependency-generation/)
# This ensures that changing a .h file automatically results in the .c files using it being auto recompiled when next running make
# On older systems the required GCC options may not be supported - in which case just change TRACK_DEPENDENCIES to 0
TRACK_DEPENDENCIES=1
# link using C Compiler by default
LINK = $(CC)
# Whether to add BearSSL source files to list of files to compile
BEARSSL=1
# Optimization level in release builds
OPT_LEVEL=1
#################################################################
# Determine shell command used to remove files (for "make clean")
#################################################################
ifndef RM
# No prefined RM variable, try to guess OS default
ifeq ($(OS),Windows_NT)
PLAT=mingw
RM = del
else
PLAT=$(shell uname -s | tr '[:upper:]' '[:lower:]')
endif
ifeq ($(PLAT),darwin)
ifeq ($(shell uname -m), x86_64)
PLAT=mac_x64
else
PLAT=mac_x32
endif
RM = rm -f
endif
endif
###########################################################
# If target platform isn't specified, default to current OS
###########################################################
ifndef $(PLAT)
ifeq ($(OS),Windows_NT)
PLAT = mingw
else
PLAT = $(shell uname -s | tr '[:upper:]' '[:lower:]')
endif
endif
#########################################################
# Setup environment appropriate for the specific platform
#########################################################
ifeq ($(PLAT),web)
CC=emcc
OEXT=.html
CFLAGS=-g
LDFLAGS=-s WASM=1 -s NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1
CC = emcc
OEXT = .html
CFLAGS = -g
LDFLAGS = -g -s WASM=1 -s NO_EXIT_RUNTIME=1 -s ABORTING_MALLOC=0 -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=256Kb --js-library $(SOURCE_DIR)/webclient/interop_web.js
BUILD_DIR = build/web
BEARSSL = 0
BUILD_DIRS += $(BUILD_DIR)/src/webclient
C_SOURCES += $(wildcard src/webclient/*.c)
endif
ifeq ($(PLAT),mingw)
CC=gcc
OEXT=.exe
CFLAGS=-g -pipe -DUNICODE -fno-math-errno
LDFLAGS=-g
LIBS=-mwindows -lwinmm -limagehlp
CC = gcc
OEXT = .exe
CFLAGS += -DUNICODE
LDFLAGS = -g
LIBS = -mwindows -lwinmm
BUILD_DIR = build/win
endif
ifeq ($(PLAT),linux)
LIBS=-lX11 -lXi -lpthread -lGL -lm -ldl
# -lm may be needed for __builtin_sqetf (in cases where it isn't replaced by a CPU instruction intrinsic)
LIBS = -lX11 -lXi -lpthread -lGL -ldl -lm
BUILD_DIR = build/linux
# Detect MCST LCC, where -O3 is about equivalent to -O1
ifeq ($(shell $(CC) -dM -E -xc - < /dev/null | grep -o __MCST__),__MCST__)
OPT_LEVEL=3
endif
endif
ifeq ($(PLAT),sunos)
CFLAGS=-g -pipe -fno-math-errno
LIBS=-lm -lsocket -lX11 -lXi -lGL
LIBS = -lsocket -lX11 -lXi -lGL
BUILD_DIR = build/solaris
endif
ifeq ($(PLAT),mac_x32)
CFLAGS=-g -m32 -pipe -fno-math-errno
LIBS=
LDFLAGS=-rdynamic -framework Carbon -framework AGL -framework OpenGL -framework IOKit
ifeq ($(PLAT),hp-ux)
CC = gcc
CFLAGS += -std=c99 -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE -D_BSD_SOURCE
LDFLAGS =
LIBS = -lm -lX11 -lXi -lXext -L/opt/graphics/OpenGL/lib/hpux32 -lGL -lpthread
BUILD_DIR = build/hpux
endif
ifeq ($(PLAT),mac_x64)
OBJECTS+=src/interop_cocoa.o
CFLAGS=-g -m64 -pipe -fno-math-errno
LIBS=
LDFLAGS=-rdynamic -framework Cocoa -framework OpenGL -framework IOKit -lobjc
ifeq ($(PLAT),darwin)
OBJECTS += $(BUILD_DIR)/src/Window_cocoa.o
LIBS =
LDFLAGS = -rdynamic -framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc
BUILD_DIR = build/macos
TARGET = $(ENAME).app
endif
ifeq ($(PLAT),freebsd)
CFLAGS=-g -pipe -I /usr/local/include -fno-math-errno
LDFLAGS=-L /usr/local/lib -rdynamic
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
CFLAGS += -I /usr/local/include
LDFLAGS = -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build/freebsd
endif
ifeq ($(PLAT),openbsd)
CFLAGS=-g -pipe -I /usr/X11R6/include -I /usr/local/include -fno-math-errno
LDFLAGS=-L /usr/X11R6/lib -L /usr/local/lib -rdynamic
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
CFLAGS += -I /usr/X11R6/include -I /usr/local/include
LDFLAGS = -L /usr/X11R6/lib -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build/openbsd
endif
ifeq ($(PLAT),netbsd)
CFLAGS=-g -pipe -I /usr/X11R7/include -I /usr/pkg/include -fno-math-errno
LDFLAGS=-L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic
LIBS=-lexecinfo -lGL -lX11 -lXi -lpthread
CFLAGS += -I /usr/X11R7/include -I /usr/pkg/include
LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic -Wl,-R/usr/X11R7/lib
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build/netbsd
endif
ifeq ($(PLAT),dragonfly)
CFLAGS=-g -pipe -I /usr/local/include -fno-math-errno
LDFLAGS=-L /usr/local/lib -rdynamic
LIBS=-lexecinfo -lGL -lX11 -lXi -lm -lpthread
CFLAGS += -I /usr/local/include
LDFLAGS = -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build/flybsd
endif
ifeq ($(PLAT),haiku)
OBJECTS+=src/interop_BeOS.o
CFLAGS=-g -pipe -fno-math-errno
LDFLAGS=-g
LIBS=-lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
CFLAGS = -pipe -fno-math-errno
LDFLAGS = -g
LINK = $(CXX)
LIBS = -lGL -lnetwork -lbe -lgame -ltracker
BUILD_DIR = build/haiku
endif
ifeq ($(PLAT),beos)
OBJECTS+=src/interop_BeOS.o
CFLAGS=-g -pipe
LDFLAGS=-g
LIBS=-lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
CFLAGS = -pipe
LDFLAGS = -g
LINK = $(CXX)
LIBS = -lGL -lnetwork -lbe -lgame -ltracker
BUILD_DIR = build/beos
TRACK_DEPENDENCIES = 0
BEARSSL = 0
endif
ifeq ($(PLAT),serenityos)
LIBS=-lgl -lSDL2
LIBS = -lgl -lSDL2
BUILD_DIR = build/serenity
endif
ifeq ($(PLAT),irix)
CC=gcc
LIBS=-lGL -lX11 -lXi -lm -lpthread -ldl
CC = gcc
LIBS = -lGL -lX11 -lXi -lpthread -ldl
BUILD_DIR = build/irix
endif
ifeq ($(OS),Windows_NT)
DEL=del
ifeq ($(PLAT),rpi)
CFLAGS += -DCC_BUILD_RPI
LIBS = -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl
BUILD_DIR = build/rpi
endif
ifeq ($(PLAT),riscos)
LIBS =
LDFLAGS = -g
BUILD_DIR = build/riscos
endif
ifeq ($(PLAT),wince)
CC = arm-mingw32ce-gcc
OEXT = .exe
CFLAGS += -march=armv5te -DUNICODE -D_WIN32_WCE -std=gnu99
LDFLAGS = -g
LIBS = -lcoredll -lws2
BUILD_DIR = build/wince
endif
ifdef BUILD_SDL2
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL2
LIBS += -lSDL2
endif
ifdef BUILD_SDL3
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3
LIBS += -lSDL3
endif
ifdef BUILD_TERMINAL
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_TERMINAL -DCC_GFX_BACKEND=CC_GFX_BACKEND_SOFTGPU
LIBS := $(subst mwindows,mconsole,$(LIBS))
endif
ifeq ($(BEARSSL),1)
BUILD_DIRS += $(BUILD_DIR)/third_party/bearssl
C_SOURCES += $(wildcard third_party/bearssl/*.c)
endif
ifdef RELEASE
CFLAGS += -O$(OPT_LEVEL)
else
CFLAGS += -g
endif
default: $(PLAT)
# Build for the specified platform
web:
$(MAKE) $(ENAME) PLAT=web
$(MAKE) $(TARGET) PLAT=web
linux:
$(MAKE) $(ENAME) PLAT=linux
$(MAKE) $(TARGET) PLAT=linux
mingw:
$(MAKE) $(ENAME) PLAT=mingw
$(MAKE) $(TARGET) PLAT=mingw
sunos:
$(MAKE) $(ENAME) PLAT=sunos
mac_x32:
$(MAKE) $(ENAME) PLAT=mac_x32
mac_x64:
$(MAKE) $(ENAME) PLAT=mac_x64
$(MAKE) $(TARGET) PLAT=sunos
hp-ux:
$(MAKE) $(TARGET) PLAT=hp-ux
darwin:
$(MAKE) $(TARGET) PLAT=darwin
freebsd:
$(MAKE) $(ENAME) PLAT=freebsd
$(MAKE) $(TARGET) PLAT=freebsd
openbsd:
$(MAKE) $(ENAME) PLAT=openbsd
$(MAKE) $(TARGET) PLAT=openbsd
netbsd:
$(MAKE) $(ENAME) PLAT=netbsd
$(MAKE) $(TARGET) PLAT=netbsd
dragonfly:
$(MAKE) $(ENAME) PLAT=dragonfly
$(MAKE) $(TARGET) PLAT=dragonfly
haiku:
$(MAKE) $(ENAME) PLAT=haiku
$(MAKE) $(TARGET) PLAT=haiku
beos:
$(MAKE) $(ENAME) PLAT=beos
$(MAKE) $(TARGET) PLAT=beos
serenityos:
$(MAKE) $(ENAME) PLAT=serenityos
$(MAKE) $(TARGET) PLAT=serenityos
irix:
$(MAKE) $(ENAME) PLAT=irix
$(MAKE) $(TARGET) PLAT=irix
riscos:
$(MAKE) $(TARGET) PLAT=riscos
wince:
$(MAKE) $(TARGET) PLAT=wince
# Default overrides
sdl2:
$(MAKE) $(TARGET) BUILD_SDL2=1
sdl3:
$(MAKE) $(TARGET) BUILD_SDL3=1
terminal:
$(MAKE) $(TARGET) BUILD_TERMINAL=1
release:
$(MAKE) $(TARGET) RELEASE=1
# consoles builds require special handling, so are moved to
# Some builds require more complex handling, so are moved to
# separate makefiles to avoid having one giant messy makefile
psp:
$(MAKE) -f src/Makefile_PSP PLAT=psp
3ds:
$(MAKE) -f src/Makefile_3DS PLAT=3ds
wii:
$(MAKE) -f src/Makefile_wii PLAT=wii
gamecube:
$(MAKE) -f src/Makefile_gamecube PLAT=gamecube
xbox:
$(MAKE) -f src/Makefile_xbox PLAT=xbox
vita:
$(MAKE) -f src/Makefile_vita PLAT=vita
32x:
$(MAKE) -f misc/32x/Makefile
saturn:
$(MAKE) -f misc/saturn/Makefile
dreamcast:
$(MAKE) -f src/Makefile_dreamcast PLAT=dreamcast
$(MAKE) -f misc/dreamcast/Makefile
psp:
$(MAKE) -f misc/psp/Makefile
vita:
$(MAKE) -f misc/vita/Makefile
ps1:
$(MAKE) -f misc/ps1/Makefile
ps2:
$(MAKE) -f misc/ps2/Makefile
ps3:
$(MAKE) -f misc/ps3/Makefile
ps4:
$(MAKE) -f misc/ps4/Makefile
xbox:
$(MAKE) -f misc/xbox/Makefile
xbox360:
$(MAKE) -f misc/xbox360/Makefile
n64:
$(MAKE) -f misc/n64/Makefile
gba:
$(MAKE) -f misc/gba/Makefile
ds:
$(MAKE) -f misc/nds/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
dos:
$(MAKE) -f misc/msdos/Makefile
macclassic_68k:
$(MAKE) -f misc/macclassic/Makefile_68k
macclassic_ppc:
$(MAKE) -f misc/macclassic/Makefile_ppc
amiga_gcc:
$(MAKE) -f misc/amiga/Makefile_68k
amiga:
$(MAKE) -f misc/amiga/Makefile
atari_st:
$(MAKE) -f misc/atari_st/Makefile
# Cleans up all build .o files
clean:
$(DEL) $(OBJECTS)
$(RM) $(OBJECTS)
$(ENAME): $(OBJECTS)
$(CC) $(LDFLAGS) -o $@$(OEXT) $(OBJECTS) $(LIBS)
$(C_OBJECTS): %.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
#################################################
# Source files and executable compilation section
#################################################
# Auto creates directories for build files (.o and .d files)
$(BUILD_DIRS):
mkdir -p $@
src/interop_cocoa.o: src/interop_cocoa.m
$(CC) $(CFLAGS) -c $< -o $@
# Main executable (typically just 'ClassiCube' or 'ClassiCube.exe')
$(ENAME): $(BUILD_DIRS) $(OBJECTS)
$(LINK) $(LDFLAGS) -o $@$(OEXT) $(OBJECTS) $(EXTRA_LIBS) $(LIBS)
@echo "----------------------------------------------------"
@echo "Successfully compiled executable file: $(ENAME)"
@echo "----------------------------------------------------"
src/interop_BeOS.o: src/interop_BeOS.cpp
$(CC) $(CFLAGS) -c $< -o $@
# macOS app bundle
$(ENAME).app : $(ENAME)
mkdir -p $(TARGET)/Contents/MacOS
mkdir -p $(TARGET)/Contents/Resources
cp $(ENAME) $(TARGET)/Contents/MacOS/$(ENAME)
cp misc/macOS/Info.plist $(TARGET)/Contents/Info.plist
cp misc/macOS/appicon.icns $(TARGET)/Contents/Resources/appicon.icns
# === Compiling with dependency tracking ===
# NOTE: Tracking dependencies might not work on older systems - disable this if so
ifeq ($(TRACK_DEPENDENCIES), 1)
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(patsubst %.o, %.d, $(OBJECTS))
$(DEPFILES):
$(BUILD_DIR)/%.o : %.c $(BUILD_DIR)/%.d
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o : %.cpp $(BUILD_DIR)/%.d
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o : %.m $(BUILD_DIR)/%.d
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
include $(wildcard $(DEPFILES))
# === Compiling WITHOUT dependency tracking ===
else
$(BUILD_DIR)/%.o : %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o : %.cpp
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
endif
# EXTRA_CFLAGS and EXTRA_LIBS are not defined in the makefile intentionally -
# define them on the command line as a simple way of adding CFLAGS/LIBS

View File

@ -22,7 +22,6 @@ set(${CMAKE_C_FLAGS}, "${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
add_library(classicube SHARED
../../src/Program.c
../../src/IsometricDrawer.c
../../src/Builder.c
../../src/ExtMath.c
@ -31,7 +30,6 @@ add_library(classicube SHARED
../../src/Camera.c
../../src/Game.c
../../src/GameVersion.c
../../src/Window_Android.c
../../src/_ftbase.c
../../src/Graphics_GL2.c
../../src/Deflate.c
@ -47,9 +45,8 @@ add_library(classicube SHARED
../../src/Vorbis.c
../../src/Protocol.c
../../src/World.c
../../src/PickedPosRenderer.c
../../src/SelOutlineRenderer.c
../../src/Platform_Posix.c
../../src/Platform_Android.c
../../src/LScreens.c
../../src/_truetype.c
../../src/_ftglyph.c
@ -98,12 +95,140 @@ add_library(classicube SHARED
../../src/Animations.c
../../src/LBackend.c
../../src/SystemFonts.c
../../src/Commands.c
../../src/EntityRenderers.c
../../src/Audio_SLES.c
../../src/TouchUI.c
../../src/LBackend_Android.c
../../src/InputHandler.c
../../src/MenuOptions.c
../../src/FancyLighting.c
../../src/Queue.c
../../src/SSL.c
../../src/Certs.c
../../src/android/Platform_Android.c
../../src/android/Window_Android.c
../../third_party/bearssl/aes_big_cbcdec.c
../../third_party/bearssl/aes_big_cbcenc.c
../../third_party/bearssl/aes_big_ctr.c
../../third_party/bearssl/aes_big_ctrcbc.c
../../third_party/bearssl/aes_big_dec.c
../../third_party/bearssl/aes_big_enc.c
../../third_party/bearssl/aes_common.c
../../third_party/bearssl/aesctr_drbg.c
../../third_party/bearssl/aes_x86ni.c
../../third_party/bearssl/aes_x86ni_cbcdec.c
../../third_party/bearssl/aes_x86ni_cbcenc.c
../../third_party/bearssl/aes_x86ni_ctr.c
../../third_party/bearssl/aes_x86ni_ctrcbc.c
../../third_party/bearssl/asn1enc.c
../../third_party/bearssl/ccm.c
../../third_party/bearssl/ccopy.c
../../third_party/bearssl/chacha20_ct.c
../../third_party/bearssl/chacha20_sse2.c
../../third_party/bearssl/dec32be.c
../../third_party/bearssl/dec32le.c
../../third_party/bearssl/dec64be.c
../../third_party/bearssl/dec64le.c
../../third_party/bearssl/dig_oid.c
../../third_party/bearssl/dig_size.c
../../third_party/bearssl/ec_all_m31.c
../../third_party/bearssl/ec_c25519_i31.c
../../third_party/bearssl/ec_c25519_m31.c
../../third_party/bearssl/ec_c25519_m62.c
../../third_party/bearssl/ec_c25519_m64.c
../../third_party/bearssl/ec_curve25519.c
../../third_party/bearssl/ec_default.c
../../third_party/bearssl/ecdsa_atr.c
../../third_party/bearssl/ecdsa_default_vrfy_asn1.c
../../third_party/bearssl/ecdsa_default_vrfy_raw.c
../../third_party/bearssl/ecdsa_i31_bits.c
../../third_party/bearssl/ecdsa_i31_vrfy_asn1.c
../../third_party/bearssl/ecdsa_i31_vrfy_raw.c
../../third_party/bearssl/ec_p256_m31.c
../../third_party/bearssl/ec_p256_m62.c
../../third_party/bearssl/ec_p256_m64.c
../../third_party/bearssl/ec_prime_i31.c
../../third_party/bearssl/ec_secp256r1.c
../../third_party/bearssl/ec_secp384r1.c
../../third_party/bearssl/ec_secp521r1.c
../../third_party/bearssl/enc32be.c
../../third_party/bearssl/enc32le.c
../../third_party/bearssl/enc64be.c
../../third_party/bearssl/enc64le.c
../../third_party/bearssl/gcm.c
../../third_party/bearssl/ghash_ctmul64.c
../../third_party/bearssl/ghash_ctmul.c
../../third_party/bearssl/ghash_pclmul.c
../../third_party/bearssl/hmac.c
../../third_party/bearssl/hmac_ct.c
../../third_party/bearssl/hmac_drbg.c
../../third_party/bearssl/i31_add.c
../../third_party/bearssl/i31_bitlen.c
../../third_party/bearssl/i31_decmod.c
../../third_party/bearssl/i31_decode.c
../../third_party/bearssl/i31_decred.c
../../third_party/bearssl/i31_encode.c
../../third_party/bearssl/i31_fmont.c
../../third_party/bearssl/i31_iszero.c
../../third_party/bearssl/i31_moddiv.c
../../third_party/bearssl/i31_modpow2.c
../../third_party/bearssl/i31_modpow.c
../../third_party/bearssl/i31_montmul.c
../../third_party/bearssl/i31_mulacc.c
../../third_party/bearssl/i31_muladd.c
../../third_party/bearssl/i31_ninv31.c
../../third_party/bearssl/i31_reduce.c
../../third_party/bearssl/i31_rshift.c
../../third_party/bearssl/i31_sub.c
../../third_party/bearssl/i31_tmont.c
../../third_party/bearssl/i32_div32.c
../../third_party/bearssl/i62_modpow2.c
../../third_party/bearssl/md5.c
../../third_party/bearssl/md5sha1.c
../../third_party/bearssl/multihash.c
../../third_party/bearssl/poly1305_ctmul.c
../../third_party/bearssl/poly1305_ctmulq.c
../../third_party/bearssl/prf.c
../../third_party/bearssl/prf_md5sha1.c
../../third_party/bearssl/prf_sha256.c
../../third_party/bearssl/prf_sha384.c
../../third_party/bearssl/rsa_default_pkcs1_vrfy.c
../../third_party/bearssl/rsa_default_priv.c
../../third_party/bearssl/rsa_default_pub.c
../../third_party/bearssl/rsa_i31_pkcs1_vrfy.c
../../third_party/bearssl/rsa_i31_priv.c
../../third_party/bearssl/rsa_i31_pub.c
../../third_party/bearssl/rsa_i62_pkcs1_vrfy.c
../../third_party/bearssl/rsa_i62_priv.c
../../third_party/bearssl/rsa_i62_pub.c
../../third_party/bearssl/rsa_pkcs1_sig_unpad.c
../../third_party/bearssl/sha1.c
../../third_party/bearssl/sha2big.c
../../third_party/bearssl/sha2small.c
../../third_party/bearssl/ssl_client.c
../../third_party/bearssl/ssl_client_default_rsapub.c
../../third_party/bearssl/ssl_client_full.c
../../third_party/bearssl/ssl_engine.c
../../third_party/bearssl/ssl_engine_default_aescbc.c
../../third_party/bearssl/ssl_engine_default_aesccm.c
../../third_party/bearssl/ssl_engine_default_aesgcm.c
../../third_party/bearssl/ssl_engine_default_chapol.c
../../third_party/bearssl/ssl_engine_default_ec.c
../../third_party/bearssl/ssl_engine_default_ecdsa.c
../../third_party/bearssl/ssl_engine_default_rsavrfy.c
../../third_party/bearssl/ssl_hashes.c
../../third_party/bearssl/ssl_hs_client.c
../../third_party/bearssl/ssl_io.c
../../third_party/bearssl/ssl_rec_cbc.c
../../third_party/bearssl/ssl_rec_ccm.c
../../third_party/bearssl/ssl_rec_chapol.c
../../third_party/bearssl/ssl_rec_gcm.c
../../third_party/bearssl/x509_minimal.c
../../third_party/bearssl/x509_minimal_full.c
)
# add lib dependencies
target_link_libraries(classicube
android
EGL
GLESv2
log
OpenSLES)
log)

View File

@ -2,8 +2,8 @@
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.classicube.android.client"
android:versionCode="1"
android:versionName="1.0">
android:versionCode="1370"
android:versionName="1.3.7">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

View File

@ -0,0 +1,57 @@
package com.classicube;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.View;
public class CCMotionListener implements View.OnGenericMotionListener {
MainActivity activity;
public CCMotionListener(MainActivity activity) {
this.activity = activity;
}
// https://developer.android.com/develop/ui/views/touch-and-input/game-controllers/controller-input#java
@Override
public boolean onGenericMotion(View view, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_MOVE) return false;
boolean source_joystick = (event.getSource() & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK;
boolean source_gamepad = (event.getSource() & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD;
if (source_joystick || source_gamepad) {
int historySize = event.getHistorySize();
for (int i = 0; i < historySize; i++) {
processJoystickInput(event, i);
}
processJoystickInput(event, -1);
return true;
}
return false;
}
void processJoystickInput(MotionEvent event, int historyPos) {
float x1 = getAxisValue(event, MotionEvent.AXIS_X, historyPos);
float y1 = getAxisValue(event, MotionEvent.AXIS_Y, historyPos);
float x2 = getAxisValue(event, MotionEvent.AXIS_Z, historyPos);
float y2 = getAxisValue(event, MotionEvent.AXIS_RZ, historyPos);
if (x1 != 0 || y1 != 0)
pushAxisMovement(MainActivity.CMD_GPAD_AXISL, x1, y1);
if (x2 != 0 || y2 != 0)
pushAxisMovement(MainActivity.CMD_GPAD_AXISR, x2, y2);
}
float getAxisValue(MotionEvent event, int axis, int historyPos) {
float value = historyPos < 0 ? event.getAxisValue(axis) :
event.getHistoricalAxisValue(axis, historyPos);
// Deadzone detection
if (value >= -0.25f && value <= 0.25f) value = 0;
return value;
}
void pushAxisMovement(int axis, float x, float y) {
activity.pushCmd(axis, (int)(x * 4096), (int)(y * 4096));
}
}

View File

@ -0,0 +1,108 @@
package com.classicube;
import android.text.Editable;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceView;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
public class CCView extends SurfaceView {
SpannableStringBuilder kbText;
MainActivity activity;
public CCView(MainActivity activity) {
// setFocusable, setFocusableInTouchMode - API level 1
super(activity);
this.activity = activity;
setFocusable(true);
setFocusableInTouchMode(true);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return activity.handleTouchEvent(ev) || super.dispatchTouchEvent(ev);
}
@Override
public InputConnection onCreateInputConnection(EditorInfo attrs) {
// BaseInputConnection, IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
attrs.actionLabel = null;
attrs.inputType = MainActivity.calcKeyboardType(activity.keyboardType);
attrs.imeOptions = MainActivity.calcKeyboardOptions(activity.keyboardType);
kbText = new SpannableStringBuilder(activity.keyboardText);
InputConnection ic = new BaseInputConnection(this, true) {
boolean inited;
void updateText() {
activity.pushCmd(MainActivity.CMD_KEY_TEXT, kbText.toString());
}
@Override
public Editable getEditable() {
if (!inited) {
// needed to set selection, otherwise random crashes later with backspacing
// set selection to end, so backspacing after opening keyboard with text still works
Selection.setSelection(kbText, kbText.toString().length());
inited = true;
}
return kbText;
}
@Override
public boolean setComposingText(CharSequence text, int newCursorPosition) {
boolean success = super.setComposingText(text, newCursorPosition);
updateText();
return success;
}
@Override
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
boolean success = super.deleteSurroundingText(beforeLength, afterLength);
updateText();
return success;
}
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
boolean success = super.commitText(text, newCursorPosition);
updateText();
return success;
}
@Override
public boolean sendKeyEvent(KeyEvent ev) {
// getSelectionStart - API level 1
if (ev.getAction() != KeyEvent.ACTION_DOWN) return super.sendKeyEvent(ev);
int code = ev.getKeyCode();
int uni = ev.getUnicodeChar();
// start is -1 sometimes, and trying to insert/delete there crashes
int start = Selection.getSelectionStart(kbText);
if (start == -1) start = kbText.toString().length();
if (code == KeyEvent.KEYCODE_ENTER) {
// enter maps to \n but that should not be intercepted
} else if (code == KeyEvent.KEYCODE_DEL) {
if (start <= 0) return false;
kbText.delete(start - 1, start);
updateText();
return false;
} else if (uni != 0) {
kbText.insert(start, String.valueOf((char) uni));
updateText();
return false;
}
return super.sendKeyEvent(ev);
}
};
//String text = MainActivity.this.keyboardText;
//if (text != null) ic.setComposingText(text, 0);
return ic;
}
}

View File

@ -1,14 +1,14 @@
package com.classicube;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
@ -23,30 +23,31 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.provider.Settings.Secure;
import android.text.Editable;
import android.text.InputType;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
// This class contains all the glue/interop code for bridging ClassiCube to the java Android world.
// Some functionality is only available on later Android versions - try {} catch {} is used in such places
// to ensure that the game can still run on earlier Android versions (albeit with reduced functionality)
@ -57,6 +58,7 @@ import android.view.inputmethod.InputMethodManager;
// implements InputQueue.Callback
public class MainActivity extends Activity
{
public boolean launcher;
// ==================================================================
// ---------------------------- COMMANDS ----------------------------
// ==================================================================
@ -73,20 +75,28 @@ public class MainActivity extends Activity
return args != null ? args : new NativeCmdArgs();
}
void pushCmd(int cmd) {
public void pushCmd(int cmd) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
pending.add(args);
}
void pushCmd(int cmd, int a1) {
public void pushCmd(int cmd, int a1) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
args.arg1 = a1;
pending.add(args);
}
void pushCmd(int cmd, int a1, int a2, int a3, int a4) {
public void pushCmd(int cmd, int a1, int a2) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
args.arg1 = a1;
args.arg2 = a2;
pending.add(args);
}
public void pushCmd(int cmd, int a1, int a2, int a3, int a4) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
args.arg1 = a1;
@ -96,45 +106,65 @@ public class MainActivity extends Activity
pending.add(args);
}
void pushCmd(int cmd, String text) {
public void pushCmd(int cmd, String text) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
args.str = text;
pending.add(args);
}
void pushCmd(int cmd, Surface surface) {
public void pushCmd(int cmd, int a1, String str) {
NativeCmdArgs args = getCmdArgs();
args.cmd = cmd;
args.sur = surface;
args.cmd = cmd;
args.arg1 = a1;
args.str = str;
pending.add(args);
}
final static int CMD_KEY_DOWN = 0;
final static int CMD_KEY_UP = 1;
final static int CMD_KEY_CHAR = 2;
final static int CMD_POINTER_DOWN = 3;
final static int CMD_POINTER_UP = 4;
final static int CMD_POINTER_MOVE = 5;
public void pushCmd(int cmd, SurfaceHolder holder) {
NativeCmdArgs args = getCmdArgs();
Rect rect = holder.getSurfaceFrame();
final static int CMD_WIN_CREATED = 6;
final static int CMD_WIN_DESTROYED = 7;
final static int CMD_WIN_RESIZED = 8;
final static int CMD_WIN_REDRAW = 9;
args.cmd = cmd;
args.sur = holder.getSurface();
args.arg1 = rect.width();
args.arg2 = rect.height();
pending.add(args);
}
final static int CMD_APP_START = 10;
final static int CMD_APP_STOP = 11;
final static int CMD_APP_RESUME = 12;
final static int CMD_APP_PAUSE = 13;
final static int CMD_APP_DESTROY = 14;
public final static int CMD_KEY_DOWN = 0;
public final static int CMD_KEY_UP = 1;
public final static int CMD_KEY_CHAR = 2;
public final static int CMD_POINTER_DOWN = 3;
public final static int CMD_POINTER_UP = 4;
public final static int CMD_POINTER_MOVE = 5;
final static int CMD_GOT_FOCUS = 15;
final static int CMD_LOST_FOCUS = 16;
final static int CMD_CONFIG_CHANGED = 17;
final static int CMD_LOW_MEMORY = 18;
public final static int CMD_WIN_CREATED = 6;
public final static int CMD_WIN_DESTROYED = 7;
public final static int CMD_WIN_RESIZED = 8;
public final static int CMD_WIN_REDRAW = 9;
final static int CMD_KEY_TEXT = 19;
final static int CMD_OFD_RESULT = 20;
public final static int CMD_APP_START = 10;
public final static int CMD_APP_STOP = 11;
public final static int CMD_APP_RESUME = 12;
public final static int CMD_APP_PAUSE = 13;
public final static int CMD_APP_DESTROY = 14;
public final static int CMD_GOT_FOCUS = 15;
public final static int CMD_LOST_FOCUS = 16;
public final static int CMD_CONFIG_CHANGED = 17;
public final static int CMD_LOW_MEMORY = 18;
public final static int CMD_KEY_TEXT = 19;
public final static int CMD_OFD_RESULT = 20;
public final static int CMD_UI_CREATED = 21;
public final static int CMD_UI_CLICKED = 22;
public final static int CMD_UI_CHANGED = 23;
public final static int CMD_UI_STRING = 24;
public final static int CMD_GPAD_AXISL = 25;
public final static int CMD_GPAD_AXISR = 26;
// ====================================================================
@ -322,9 +352,12 @@ public class MainActivity extends Activity
case CMD_POINTER_UP: processPointerUp( c.arg1, c.arg2, c.arg3, c.arg4); break;
case CMD_POINTER_MOVE: processPointerMove(c.arg1, c.arg2, c.arg3, c.arg4); break;
case CMD_WIN_CREATED: processSurfaceCreated(c.sur); break;
case CMD_GPAD_AXISL: processJoystickL(c.arg1, c.arg2); break;
case CMD_GPAD_AXISR: processJoystickR(c.arg1, c.arg2); break;
case CMD_WIN_CREATED: processSurfaceCreated(c.sur, c.arg1, c.arg2); break;
case CMD_WIN_DESTROYED: processSurfaceDestroyed(); break;
case CMD_WIN_RESIZED: processSurfaceResized(c.sur); break;
case CMD_WIN_RESIZED: processSurfaceResized(c.arg1, c.arg2); break;
case CMD_WIN_REDRAW: processSurfaceRedrawNeeded(); break;
case CMD_APP_START: processOnStart(); break;
@ -356,9 +389,12 @@ public class MainActivity extends Activity
native void processPointerUp( int id, int x, int y, int isMouse);
native void processPointerMove(int id, int x, int y, int isMouse);
native void processSurfaceCreated(Surface sur);
native void processJoystickL(int x, int y);
native void processJoystickR(int x, int y);
native void processSurfaceCreated(Surface sur, int w, int h);
native void processSurfaceDestroyed();
native void processSurfaceResized(Surface sur);
native void processSurfaceResized(int w, int h);
native void processSurfaceRedrawNeeded();
native void processOnStart();
@ -385,20 +421,43 @@ public class MainActivity extends Activity
// static to persist across activity destroy/create
static final Semaphore winDestroyedSem = new Semaphore(0, true);
SurfaceHolder.Callback callback;
CCView curView;
public View curView;
public void setActiveView(View view) {
// setContentView, requestFocus - API level 1
curView = view;
setContentView(view);
curView.requestFocus();
if (fullscreen) setUIVisibility(FULLSCREEN_FLAGS);
hookMotionListener(view);
}
void hookMotionListener(View view) {
try {
CCMotionListener listener = new CCMotionListener(this);
view.setOnGenericMotionListener(listener);
} catch (Exception ex) {
// Unsupported on android 12
} catch (NoClassDefFoundError ex) {
// Unsupported on android 12
}
}
// SurfaceHolder.Callback - API level 1
class CCSurfaceCallback implements SurfaceHolder.Callback {
public void surfaceCreated(SurfaceHolder holder) {
// getSurface - API level 1
Log.i("CC_WIN", "win created " + holder.getSurface());
MainActivity.this.pushCmd(CMD_WIN_CREATED, holder.getSurface());
Rect r = holder.getSurfaceFrame();
MainActivity.this.pushCmd(CMD_WIN_CREATED, holder);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// getSurface - API level 1
Log.i("CC_WIN", "win changed " + holder.getSurface());
MainActivity.this.pushCmd(CMD_WIN_RESIZED, holder.getSurface());
Rect r = holder.getSurfaceFrame();
MainActivity.this.pushCmd(CMD_WIN_RESIZED, holder);
}
public void surfaceDestroyed(SurfaceHolder holder) {
@ -449,107 +508,11 @@ public class MainActivity extends Activity
void attachSurface() {
// setContentView, requestFocus, getHolder, addCallback, RGBX_8888 - API level 1
createSurfaceCallback();
curView = new CCView(this);
curView.getHolder().addCallback(callback);
curView.getHolder().setFormat(PixelFormat.RGBX_8888);
CCView view = new CCView(this);
view.getHolder().addCallback(callback);
view.getHolder().setFormat(PixelFormat.RGBX_8888);
setContentView(curView);
curView.requestFocus();
if (fullscreen) setUIVisibility(FULLSCREEN_FLAGS);
}
class CCView extends SurfaceView {
SpannableStringBuilder kbText;
public CCView(Context context) {
// setFocusable, setFocusableInTouchMode - API level 1
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return MainActivity.this.handleTouchEvent(ev) || super.dispatchTouchEvent(ev);
}
@Override
public InputConnection onCreateInputConnection(EditorInfo attrs) {
// BaseInputConnection, IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
attrs.actionLabel = null;
attrs.inputType = MainActivity.this.getKeyboardType();
attrs.imeOptions = MainActivity.this.getKeyboardOptions();
kbText = new SpannableStringBuilder(MainActivity.this.keyboardText);
InputConnection ic = new BaseInputConnection(this, true) {
boolean inited;
void updateText() { MainActivity.this.pushCmd(CMD_KEY_TEXT, kbText.toString()); }
@Override
public Editable getEditable() {
if (!inited) {
// needed to set selection, otherwise random crashes later with backspacing
// set selection to end, so backspacing after opening keyboard with text still works
Selection.setSelection(kbText, kbText.toString().length());
inited = true;
}
return kbText;
}
@Override
public boolean setComposingText(CharSequence text, int newCursorPosition) {
boolean success = super.setComposingText(text, newCursorPosition);
updateText();
return success;
}
@Override
public boolean deleteSurroundingText(int beforeLength, int afterLength) {
boolean success = super.deleteSurroundingText(beforeLength, afterLength);
updateText();
return success;
}
@Override
public boolean commitText(CharSequence text, int newCursorPosition) {
boolean success = super.commitText(text, newCursorPosition);
updateText();
return success;
}
@Override
public boolean sendKeyEvent(KeyEvent ev) {
// getSelectionStart - API level 1
if (ev.getAction() != KeyEvent.ACTION_DOWN) return super.sendKeyEvent(ev);
int code = ev.getKeyCode();
int uni = ev.getUnicodeChar();
// start is -1 sometimes, and trying to insert/delete there crashes
int start = Selection.getSelectionStart(kbText);
if (start == -1) start = kbText.toString().length();
if (code == KeyEvent.KEYCODE_ENTER) {
// enter maps to \n but that should not be intercepted
} else if (code == KeyEvent.KEYCODE_DEL) {
if (start <= 0) return false;
kbText.delete(start - 1, start);
updateText();
return false;
} else if (uni != 0) {
kbText.insert(start, String.valueOf((char)uni));
updateText();
return false;
}
return super.sendKeyEvent(ev);
}
};
//String text = MainActivity.this.keyboardText;
//if (text != null) ic.setComposingText(text, 0);
return ic;
}
setActiveView(view);
}
@ -655,8 +618,9 @@ public class MainActivity extends Activity
if (curView == null) return;
// Try to avoid restarting input if possible
if (curView.kbText != null) {
String curText = curView.kbText.toString();
CCView view = (CCView)curView;
if (view.kbText != null) {
String curText = view.kbText.toString();
if (text.equals(curText)) return;
}
@ -668,9 +632,9 @@ public class MainActivity extends Activity
input.restartInput(curView);
}
public int getKeyboardType() {
public static int calcKeyboardType(int kbType) {
// TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_TEXT_VARIATION_PASSWORD - API level 3
int type = keyboardType & 0xFF;
int type = kbType & 0xFF;
if (type == 2) return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;
if (type == 1) return InputType.TYPE_CLASS_NUMBER; // KEYBOARD_TYPE_NUMERIC
@ -678,9 +642,9 @@ public class MainActivity extends Activity
return InputType.TYPE_CLASS_TEXT;
}
public int getKeyboardOptions() {
public static int calcKeyboardOptions(int kbType) {
// IME_ACTION_GO, IME_FLAG_NO_EXTRACT_UI - API level 3
if ((keyboardType & 0x100) != 0) {
if ((kbType & 0x100) != 0) {
return EditorInfo.IME_ACTION_SEND | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
} else {
return EditorInfo.IME_ACTION_GO | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
@ -950,108 +914,100 @@ public class MainActivity extends Activity
// ======================================================================
// -------------------------------- HTTP --------------------------------
// -------------------------------- SSL ---------------------------------
// ======================================================================
// Implements java Android side of the Android HTTP backend (See Http.c)
static HttpURLConnection conn;
static InputStream src;
static byte[] readCache = new byte[8192];
static X509TrustManager trust;
static CertificateFactory certFactory;
static ArrayList<X509Certificate> chain = new ArrayList<X509Certificate>();
public static int httpInit(String url, String method) {
static X509TrustManager CreateTrust() throws Exception {
TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
// Load default Trust Anchor certificates
factory.init((KeyStore)null);
TrustManager[] trustManagers = factory.getTrustManagers();
for (int i = 0; i < trustManagers.length; i++)
{
// Should be first entry, e.g. X509TrustManagerImpl
if (trustManagers[i] instanceof X509TrustManager)
return (X509TrustManager)trustManagers[i];
}
return null;
}
public static int sslCreateTrust() {
try {
conn = (HttpURLConnection)new URL(url).openConnection();
conn.setDoInput(true);
conn.setRequestMethod(method);
conn.setInstanceFollowRedirects(true);
httpAddMethodHeaders(method);
return 0;
trust = CreateTrust();
return 1;
} catch (Exception ex) {
return httpOnError(ex);
ex.printStackTrace();
return 0;
}
}
static void httpAddMethodHeaders(String method) {
if (!method.equals("HEAD")) return;
// Ever since dropbox switched to to chunked transfer encoding,
// sending a HEAD request to dropbox always seems to result in the
// next GET request failing with 'Unexpected status line' ProtocolException
// Seems to be a known issue: https://github.com/square/okhttp/issues/3689
// Simplest workaround is to ask for connection to be closed after HEAD request
httpSetHeader("connection", "close");
}
public static void httpSetHeader(String name, String value) {
conn.setRequestProperty(name, value);
}
public static int httpSetData(byte[] data) {
public static void sslAddCert(byte[] data) {
try {
conn.setDoOutput(true);
conn.getOutputStream().write(data);
conn.getOutputStream().flush();
return 0;
if (certFactory == null) certFactory = CertificateFactory.getInstance("X.509");
if (certFactory == null) return;
InputStream in = new ByteArrayInputStream(data);
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
chain.add(cert);
} catch (Exception ex) {
return httpOnError(ex);
ex.printStackTrace();
}
}
public static int httpPerform() {
int len;
public static int sslVerifyChain() {
int result = -200;
try {
conn.connect();
// Some implementations also provide this as getHeaderField(0), but some don't
httpParseHeader("HTTP/1.1 " + conn.getResponseCode() + " MSG");
X509Certificate[] certs = new X509Certificate[chain.size()];
for (int i = 0; i < chain.size(); i++) certs[i] = chain.get(i);
// Legitimate webservers aren't going to reply with over 200 headers
for (int i = 0; i < 200; i++) {
String key = conn.getHeaderFieldKey(i);
String val = conn.getHeaderField(i);
if (key == null && val == null) break;
if (key == null) {
httpParseHeader(val);
} else {
httpParseHeader(key + ":" + val);
}
}
src = conn.getInputStream();
while ((len = src.read(readCache)) > 0) {
httpAppendData(readCache, len);
}
httpFinish();
return 0;
trust.checkServerTrusted(certs, "INV");
// standard java checks auth type, but android doesn't
// See https://issues.chromium.org/issues/40955801
result = 0;
} catch (Exception ex) {
return httpOnError(ex);
ex.printStackTrace();
}
chain.clear();
return result;
}
static void httpFinish() {
conn = null;
try {
src.close();
} catch (Exception ex) { }
src = null;
// ======================================================================
// --------------------------- Legacy window ----------------------------
// ======================================================================
Canvas cur_canvas;
public int[] legacy_lockCanvas(int l, int t, int r, int b) {
CCView surface = (CCView)curView;
Rect rect = new Rect(l, t, r, b);
cur_canvas = surface.getHolder().lockCanvas(rect);
int w = (r - l);
int h = (b - t);
return new int[w * h];
}
// TODO: Should we prune this list?
static List<String> errors = new ArrayList<String>();
public void legacy_unlockCanvas(int l, int t, int r, int b, int[] buf) {
CCView surface = (CCView)curView;
int w = (r - l);
int h = (b - t);
static int httpOnError(Exception ex) {
ex.printStackTrace();
httpFinish();
errors.add(ex.getMessage());
return -errors.size(); // don't want 0 as an error code
// TODO avoid need to swap R/B
for (int i = 0; i < buf.length; i++)
{
int color = buf[i];
int R = color & 0x00FF0000;
int B = color & 0x000000FF;
buf[i] = (color & 0xFF00FF00) | (B << 16) | (R >> 16);
}
cur_canvas.drawBitmap(buf, 0, w, l, t, w, h, false, null);
surface.getHolder().unlockCanvasAndPost(cur_canvas);
cur_canvas = null;
}
public static String httpDescribeError(int res) {
res = -res - 1;
return res >= 0 && res < errors.size() ? errors.get(res) : null;
}
native static void httpParseHeader(String header);
native static void httpAppendData(byte[] data, int len);
}

View File

@ -4,13 +4,15 @@
* AndrewPH - Advice on how to improve ui of both client and launcher, multiple
suggestions, and hosting the automatic build bot for ClassiCube.
* 123DMWM - many suggestions, and assistance in identifying bugs and their causes.
* video_error - Allowing remote use of an OSX machine, pointing out many flaws in the plugin API.
The OSX port would not have been possible without you, thanks!
* video_error - Allowing remote use of an macOS machine, pointing out many flaws in the plugin API.
The macOS port would not have been possible without you, thanks!
* Jerralish - reverse engineering and documenting the original classic map generation algorithm.
* Cybertoon - Adding water animation, better metal step/dig sounds, identifying multiple flaws
* FabTheZen - suggestions about how to improve user experience, testing.
* Cheesse - multiple suggestions, testing ClassicalSharp on AMD graphics cards.
* Hemsindor - testing ClassicalSharp on OSX.
* Hemsindor - testing ClassicalSharp on macOS.
* headshotnoby - developing the Switch port.
* Beyond_5D - identifying many differences from original Classic
* shinovon - developing the Symbian port.
And a big thanks to everyone else in the ClassiCube community (who I didn't mention here),
who in the past have provided many suggestions and assisted in identifying bugs.

View File

@ -16,10 +16,10 @@ Common compilation errors
Add ```-lrt``` when compiling. Occurs when using glibc versions before 2.17.
#### fatal error: execinfo.h: No such file or directory
Install ```libexecinfo``` package. Occurs when using musl.
Define `CC_BACKTRACE_BUILTIN` when compiling. Usually occurs when using musl.
#### Undefined reference to 'backtrace'
Add ```-lexecinfo``` when compiling. Occurs when using musl.
Define `CC_BACKTRACE_BUILTIN` when compiling. Usually occurs when using musl.
Webclient patches
---------------------

View File

@ -1,11 +1,15 @@
So you want to host your own version of the webclient? It's pretty easy to do, you need 3 files:
1) A web page to initialise the .js and display the game
Hosting your own version of the ClassiCube webclient is relatively straightforward
Only the following 3 files are required:
1) A web page to initialise the game .js and display the game
2) The game .js file
3) The default texture pack
TODO: more advanced sample (authentication, custom game.js, skin server)
### Example setup
For example, let's assume our site is setup like this:
For example, let's assume your website is setup like this:
* `example.com/play.html`
* `example.com/static/classisphere.js`
* `example.com/static/default.zip`
@ -14,11 +18,17 @@ For simplicitly,
1) Download `cs.classicube.net/client/latest/ClassiCube.js`, then upload it to `static/classisphere.js` on the webserver
2) Download `classicube.net/static/default.zip`, then upload it to `static/default.zip` on the webserver
The play.html page is the trickiest part, because how to implement this is website-specific. (depends on how your website is styled, what webserver you use, what programming language is used to generate the html, etc)
The play.html page is the trickiest part, because how to implement this is website-specific. (depends on how the website is styled, what webserver is used, what programming language is used to generate the html, etc)
#### Changing where the game downloads the texture pack from
There should be this piece of code somewhere in the .JS file: `function _interop_AsyncDownloadTexturePack(rawPath) {`
A bit below that, there should be `var url = '/static/default.zip';` - change that to the desired URL.
#### Embedding the game in play.html
You are required to have this HTML code somewhere in the page:
The following HTML code is required to be somewhere in the webpage:
```HTML
<!-- the canvas *must not* have any border or padding, or mouse coords will be wrong -->
<canvas id="canvas" style="display:block; border:0; padding:0; background-color: black;"

View File

@ -1,6 +1,6 @@
### Introduction
## Introduction
The 2D gui works by showing multiple 'screens' or 'layers' on top of each other. Each 'screen' usually contains one or more widgets. (e.g. a 'ButtonWidget' for a 'Close' button)
The 2D GUI works by showing multiple 'screens' or 'layers' on top of each other. Each 'screen' usually contains one or more widgets. (e.g. a 'ButtonWidget' for a 'Close' button)
Here's an example of multiple screens:
@ -11,52 +11,143 @@ The example above consists of three screens:
2. `ChatScreen` - Text widgets in the bottom left area (Only one is currently used though)
3. `HUDScreen` - Text in the top left and hotbar at the bottom
### Screen interface
TODO: Explain event processing architecture
`Init` - Where you initialise stuff that lasts for the entire duration the screen is open, e.g. hooking into events.
TODO: Explain pointer IDs. maybe a separate input-architecture.md file?
`Free` - Where you undo the allocating/event hooking you did in Init.
TODO: Explain dynamic vertex buffer
`ContextRecreated` - Where you actually allocate stuff like textures of widgets and the screen's dynamic vertex buffer. It's where you should call stuff like ButtonWidget_SetConst, TextWidget_SetConst, etc.
## Screen interface
`ContextLost` - Where you destroy what you allocated in `ContextRecreated`. You **MUST** destroy all the textures/vertex buffers that you allocated, as otherwise you will get an error later with 'recreating context failed' with the Direct3D9 backend when you next try to resize the window or go fullscreen.
#### `void Init(void* screen)`
`Layout` - Where you reposition all the elements (i.e. widgets + anything else) of this screen. (Will always be called when initially showing this screen and whenever window resizes)
Where you initialise state and objects that lasts for the entire duration the screen is open
`HandlesInputDown/HandlesInputUp` - Called whenever a keyboard or mouse button is pressed/released.
E.g. Hooking into events
`HandlesKeyPress` - Called when a key character is entered on the keyboard. (e.g. you'd get '$' here if user pressed 4 while holding shift)
#### `void Free(void* screen)`
`HandlesTextChanged` - Called when the text changes in the on-screen keyboard. (i.e. KeyPress but for mobile text input)
Where you undo the allocating/event hooking you did in `Init`.
`HandlesMouseScroll` - Called when the wheel is scrolled on the mouse.
#### `void ContextRecreated(void* screen)`
`HandlesPointerDown/HandlesPointerUp/HandlesPointerMove` - Called whenever the left mouse or a touch finger is pressed/released/moved.
Where you allocate resources used for rendering, such as fonts, textures of widgets, and the screen's dynamic vertex buffer.
`BuildMesh` - Where you fill out the screen's dynamic vertex buffer with the vertices of all the widgets. This gets called just before `Render` whenever s->dirty is set to true. (pointer/input events automatically set s->dirty to true for the next frame)
E.g. where you should call `ButtonWidget_SetConst`, `TextWidget_SetConst`, etc.
`Update` - Called just before `Render` every frame and also provides the elapsed time since last render. Typically you'd use this to update simple stuff that depends on accumulated time. (e.g. whether the flashing caret should appear or not for input widgets)
#### `void ContextLost(void* screen)`
`Render` - Called every frame and is where you actually draw the widgets and other stuff on-screen. Don't forget to call Gfx_SetTexturing(true) before rendering widgets and Gfx_SetTexturing(false) once you're done.
Where you destroy/release all that resources that were allocated in `ContextRecreated`.
### Screen members
Note: You **MUST** destroy all the textures/vertex buffers that you allocated, as otherwise you will get an error later with 'recreating context failed' with the Direct3D9 backend when you next try to resize the window or go fullscreen. TODO: rewrite this note
`VTABLE` - Set to a ScreenVTABLE instance which implements all of the `Screen interface` functions
#### `void Layout(void* screen)`
`grabsInput` - Whether this screen grabs all input. If any screen grabs all input, then the mouse cursor becomes visible, W/A/S/D stops causing player movement, etc.
Where you reposition all the elements (i.e. widgets + anything else) of this screen.
`blocksWorld` - Whether this screen completely and opaquely covers the game world behind it. (e.g. loading screen and disconnect screen)
Note: This is called when initially showing this screen, and whenever the window is resized
`closable` - Whether this screen is automatically closed when pressing Escape. (Usually should be true for screens that are menus, e.g. pause screen)
#### `int HandlesInputDown(void* screen, int button)`
`dirty` - Whether this screen will have `BuildMesh` called on the next frame
Called whenever a input button (keyboard/mouse/gamepad) is pressed.
`maxVertices` - The maximum number of vertices that this screen's dynamic vertex buffer may use
#### `void OnInputUp(void* screen, int button)`
`vb` - This screen's dynamic vertex buffer
Called whenever a input button (keyboard/mouse/gamepad) is released.
#### `int HandlesKeyPress(void* screen, char keyChar)`
Called when a key character is entered on the keyboard.
E.g. you'd get '$' here if user pressed 4 while holding shift)
#### `int HandlesTextChanged(void* screen, const cc_string* str)`
Called when the text changes in the on-screen keyboard. (i.e. KeyPress but for mobile text input)
#### `int HandlesMouseScroll(void* screen, float wheelDelta)`
Called when the wheel is scrolled on the mouse.
#### `int HandlesPointerDown(void* screen, int pointerID, int x, int y)`
Called whenever the left mouse or a touch finger is pressed.
#### `void OnPointerUp(void* screen, int pointerID, int x, int y)`
Called whenever the left mouse or a touch finger is released.
#### `int HandlesPointerMove(void* screen, int pointerID, int x, int y)`
Called whenever the left mouse or a touch finger is moved.
#### `void BuildMesh(void* screen)`
Where you fill out the screen's dynamic vertex buffer with the vertices of all the widgets.
Note: This gets called just before `Render()` whenever the `dirty` field is set to `true`.
Note: Pointer/Input events automatically set the `dirty` field to `true` for the next frame
#### `void Update(void* screen, double delta)`
Called just before `Render()` every frame and also provides the elapsed time since last render.
Typically you'd use this to update simple stuff that depends on accumulated time.
(E.g. whether the flashing caret should appear or not for input widgets)
#### `void Render(void* screen)`
Called every frame and is where you actually draw the widgets and other stuff on-screen.
## Screen members
#### `struct ScreenVTABLE* VTABLE`
Set to a `ScreenVTABLE` instance which implements all of the `Screen interface` functions
#### `cc_bool grabsInput`
Whether this screen grabs all input.
Note: If any screen grabs all input, then the mouse cursor becomes visible, W/A/S/D stops causing player movement, etc.
#### `cc_bool blocksWorld`
Whether this screen completely and opaquely covers the game world behind it.
E.g. loading screen and disconnect screen
#### `cc_bool closable`
Whether this screen is automatically closed when pressing Escape.
Note: Usually should be true for screens that are menus (e.g. pause screen)
#### `cc_bool dirty`
Whether this screen will have `BuildMesh()` called on the next frame
Note: This should be set to `true` whenever any event/actions that might alter the screen's appearance occurs TODO explain when automatically called?
#### `int maxVertices`
The maximum number of vertices that this screen's dynamic vertex buffer may use
#### `GfxResourceID vb`
This screen's dynamic vertex buffer
#### `struct Widget** widgets;`
Pointer to the array of pointers to widgets that are contained in this screen
#### `int numWidgets;`
The number of widgets that are contained in this screen
### Screen notes
## Screen notes
* When the screen is shown via `Gui_Add`, the following functions are called
1) Init
@ -74,3 +165,13 @@ The example above consists of three screens:
3) Layout
Note: Whenever `default.png` (font texture) changes, `Gui_Refresh` is called for all screens. Therefore, fonts should usually be allocated/freed in `ContextRecreated/ContextLost` instead of `Init/Free` to ensure that the screen still looks correct after the texture pack changes.
TODO: Move this note earlier?
# Putting it altogether
TODO Add example of screen
Simple menu example that grabs all input
More complicated example too

View File

@ -1,119 +1,124 @@
The overall source code is structured where each .c represents a particular module. These modules are:
TODO: explain multiple backends for some Modules
## 2D modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Bitmap.c|Represents a 2D array of pixels (and encoding/decoding to PNG)
|Drawer2D.c|Contains a variety of drawing operations on bitmaps (including text and fonts)
|PackedCol.c|32 bit RGBA color in a format suitable for using as color component of a vertex
|Bitmap|Represents a 2D array of pixels (and encoding/decoding to PNG)
|Drawer2D|Contains a variety of drawing operations on bitmaps (including text and fonts)
|PackedCol|32 bit RGBA color in a format suitable for using as color component of a vertex
|SystemFonts|Drawing, measuring, and retrieving the list of platform/system specific fonts
## Audio modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Audio.c|Playing music and dig/place/step sounds, and abstracts a PCM audio playing API
|Vorbis.c| Decodes [ogg vorbis](https://xiph.org/vorbis/) audio into PCM audio samples
|Audio|Playing music and dig/place/step sounds, and abstracts a PCM audio playing API
|Vorbis| Decodes [ogg vorbis](https://xiph.org/vorbis/) audio into PCM audio samples
## Entity modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Entity.c|Represents an in-game entity, and manages updating and rendering all entities
|EntityComponents.c|Various components that can be used by entities (e.g. tilt, animation, hacks state)
|Model.c|Contains the list of entity models, and provides relevant methods for entity models
|Particle.c|Represents particle effects, and manages rendering and spawning particles
|Entity|Represents an in-game entity, and manages updating and rendering all entities
|EntityComponents|Various components that can be used by entities (e.g. tilt, animation, hacks state)
|Model|Contains the list of entity models, and provides relevant methods for entity models
|Particle|Represents particle effects, and manages rendering and spawning particles
## Game modules
|File|Functionality|
|--------|-------|
|Block.c|Stores properties and data for blocks (e.g. collide type, draw type, sound type)
|BlockPhysics.c|Implements simple block physics for singleplayer
|Camera.c|Represents a camera (can be first or third person)
|Chat.c|Manages sending, adding, logging and handling chat
|Game.c|Manages the overall game loop, state, and variables (e.g. renders a frame, runs scheduled tasks)
|Input.c|Manages keyboard, mouse, and touch state and events, and implements base handlers for them
|Inventory.c|Manages inventory hotbar, and ordering of blocks in the inventory menu
|Block|Stores properties and data for blocks (e.g. collide type, draw type, sound type)
|BlockPhysics|Implements simple block physics for singleplayer
|Camera|Represents a camera (can be first or third person)
|Chat|Manages sending, adding, logging and handling chat
|Game|Manages the overall game loop, state, and variables (e.g. renders a frame, runs scheduled tasks)
|Input|Manages keyboard, mouse, and touch state and events, and implements base handlers for them
|Inventory|Manages inventory hotbar, and ordering of blocks in the inventory menu
## Game gui modules
|File|Functionality|
|--------|-------|
|Gui.c|Describes and manages the 2D GUI elements on screen
|IsometricDrawer.c|Draws 2D isometric blocks for the hotbar and inventory UIs
|Menus.c|Contains all 2D non-menu screens (e.g. inventory, HUD, loading, chat)
|Screens.c|Contains all 2D menu screens (e.g. pause menu, keys list menu, font list menu)
|Widgets.c|Contains individual GUI widgets (e.g. button, label)
|Gui|Describes and manages the 2D GUI elements on screen
|IsometricDrawer|Draws 2D isometric blocks for the hotbar and inventory UIs
|Menus|Contains all 2D non-menu screens (e.g. inventory, HUD, loading, chat)
|Screens|Contains all 2D menu screens (e.g. pause menu, keys list menu, font list menu)
|Widgets|Contains individual GUI widgets (e.g. button, label)
## Graphics modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Builder.c|Converts a 16x16x16 chunk into a mesh of vertices
|Drawer.c|Draws the vertices for a cuboid region
|Graphics.c|Abstracts a 3D graphics rendering API
|Builder|Converts a 16x16x16 chunk into a mesh of vertices
|Drawer|Draws the vertices for a cuboid region
|Graphics|Abstracts a 3D graphics rendering API
## I/O modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Deflate.c|Decodes and encodes data compressed using DEFLATE (in addition to GZIP/ZLIB headers)
|Stream.c|Abstract reading and writing data to/from various sources in a streaming manner
|Deflate|Decodes and encodes data compressed using DEFLATE (in addition to GZIP/ZLIB headers)
|Stream|Abstract reading and writing data to/from various sources in a streaming manner
## Launcher modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Launcher.c|Manages the overall launcher loop, state, and variables (e.g. resets pixels in areas, marks areas as needing to be redrawn)
|LScreens.c|Contains all the menus in the launcher (e.g. servers list, updates menu, main menu)
|LWeb.c|Responsible for launcher related web requests (e.g. signing in, fetching servers list)
|LWidgets.c|Contains individual launcher GUI widgets (e.g. button, label, input textbox)
|Resources.c|Responsible for checking, downloading, and creating the default assets (e.g. default.zip, sounds)
|Launcher|Manages the overall launcher loop, state, and variables (e.g. resets pixels in areas, marks areas as needing to be redrawn)
|LBackend|Handles the rendering of widgets and forwarding input events to screens/menus
|LScreens|Contains all the menus in the launcher (e.g. servers list, updates menu, main menu)
|LWeb|Responsible for launcher related web requests (e.g. signing in, fetching servers list)
|LWidgets|Contains individual launcher GUI widgets (e.g. button, label, input textbox)
|Resources|Responsible for checking, downloading, and creating the default assets (e.g. default.zip, sounds)
## Map modules
|File|Description|
|Module|Description|
|--------|-------|
|Formats.c|Imports/exports a world from/to several map file formats (e.g. .cw, .dat, .lvl)
|Generator.c|Generates a new world in either a flatgrass or Minecraft Classic style
|Lighting.c|Gets lighting colors at coordinates in the world
|World.c|Manages fixed size 3D array of blocks and associated environment metadata
|Formats|Imports/exports a world from/to several map file formats (e.g. .cw, .dat, .lvl)
|Generator|Generates a new world in either a flatgrass or Minecraft Classic style
|Lighting|Gets lighting colors at coordinates in the world
|World|Manages fixed size 3D array of blocks and associated environment metadata
## Math/Physics modules
|File|Description|
|Module|Description|
|--------|-------|
|ExtMath.c|Math functions, math constants, and a Random Number Generator
|Physics.c|AABBs and geometry intersection
|Picking.c|Performs raytracing to e.g. determine the picked/selected block in the world
|Vectors.c|Contains vector,matrix,and frustum culling
|ExtMath|Math functions, math constants, and a Random Number Generator
|Physics|AABBs and geometry intersection
|Picking|Performs raytracing to e.g. determine the picked/selected block in the world
|Vectors|Contains vector,matrix,and frustum culling
## Network modules
|File|Description|
|Module|Description|
|--------|-------|
|Http.c|Performs GET and POST requests in the background
|Protocol.c|Implements Minecraft Classic, CPE, and WoM environment protocols
|Server.c|Manages a connection to a singleplayer or multiplayer server
|Http|Performs GET and POST requests in the background
|Protocol|Implements Minecraft Classic, CPE, and WoM environment protocols
|Server|Manages a connection to a singleplayer or multiplayer server
|SSL|Performs SSL/TLS encryption and decryption
## Platform modules
|File|Description|
|Module|Description|
|--------|-------|
|Logger.c|Manages logging to client.log, and dumping state in both intentional and unhandled crashes
|Platform.c|Abstracts platform specific functionality. (e.g. opening a file, allocating memory, starting a thread)
|Program.c|Parses command line arguments, and then starts either the Game or Launcher
|Window.c|Abstracts creating and managing a window (e.g. setting titlebar text, entering fullscreen)
|Logger|Manages logging to client.log, and dumping state in both intentional and unhandled crashes
|Platform|Abstracts platform specific functionality. (e.g. opening a file, allocating memory, starting a thread)
|Program|Parses command line arguments, and then starts either the Game or Launcher
|Window|Abstracts creating and managing a window (e.g. setting titlebar text, entering fullscreen)
## Rendering modules
|File|Description|
|Module|Description|
|--------|-------|
|AxisLinesRenderer.c|Renders 3 lines showing direction of each axis
|EnvRenderer.c|Renders environment of the world (clouds, sky, skybox, world sides/edges, etc)
|HeldBlockRenderer.c|Renders the block currently being held in bottom right corner
|MapRenderer.c|Renders the blocks of the world by diving it into chunks, and manages sorting/updating these chunks
|PickedPosRenderer.c|Renders an outline around the block currently being looked at
|SelectionBox.c|Renders and stores selection boxes
|AxisLinesRenderer|Renders 3 lines showing direction of each axis
|EnvRenderer|Renders environment of the world (clouds, sky, skybox, world sides/edges, etc)
|HeldBlockRenderer|Renders the block currently being held in bottom right corner
|MapRenderer|Renders the blocks of the world by diving it into chunks, and manages sorting/updating these chunks
|SelOutlineRenderer|Renders an outline around the block currently being looked at
|SelectionBox|Renders and stores selection boxes
## Texture pack modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Animations.c|Everything relating to texture animations (including default water/lava ones)
|TexturePack.c|Everything relating to texture packs (e.g. extracting .zip, terrain atlas, etc)
|Animations|Everything relating to texture animations (including default water/lava ones)
|TexturePack|Everything relating to texture packs (e.g. extracting .zip, terrain atlas, etc)
## Utility modules
|File|Functionality|
|Module|Functionality|
|--------|-------|
|Event.c|Contains all events and provies helper methods for using events
|Options.c|Retrieves options from and sets options in options.txt
|String.c|Implements operations for a string with a buffer, length, and capacity
|Utils.c|Various general utility functions
|Event|Contains all events and provies helper methods for using events
|Options|Retrieves options from and sets options in options.txt
|String|Implements operations for a string with a buffer, length, and capacity
|Utils|Various general utility functions

View File

@ -1,44 +1,69 @@
#### Note: By default, ClassiCube automatically selects the recommended backends for the platform. <br> It is recommended that you do *NOT* change the backends unless you know exactly what you are doing.
Although ClassiCube strives to be as platform independent as possible, in some cases it will need to use system specific code
For instance:
* Texture creation for 3D graphics rendering
* Buffer allocation for audio output
* High resolution time measurement
* Window creation
For simplicity, related system specific code is grouped together as a Module (e.g. `Audio`), which can then be implemented using a backend (e.g. `WinMM`, `OpenAL`, `OpenSL ES`, etc)
#### Note: By default, ClassiCube automatically selects the recommended backends for the system. <br> It is recommended that you do *NOT* change the backends unless you know exactly what you are doing.
Some systems may provide multiple potential backends for a Module. For example on Windows:
* OpenGL could be used instead of Direct3D 9 for the 3D rendering backend
* SDL could be used instead of the native WinAPI for the window backend
TODO finish this
TODO introduction (explaining platform specific modules, and how classicube has to integrate with one of them)
Two ways
1) Changing the defines in `Core.h`
2) Adding `-DCC_BUILD_MANUAL` to compilation flags and then manually defining module backends via additional compilation flags
There are two ways of changing the backend that gets used for the system:
1) Changing the default defines in `Core.h`
2) Using additional compilation flags to override default module backend(s)
3) Adding `-DCC_BUILD_MANUAL` to compilation flags and then manually defining all module backends via additional compilation flags
When manually compiling the source code, 1) is usually the easiest. <br>
For automated scripts compiling every single commit, 2) is the recommended approach
TODO: Move this into table
### 3D Graphics backends
* CC_BUILD_D3D9 - Direct3D 9
* CC_BUILD_D3D11 - Direct3D 11
* CC_BUILD_GL - OpenGL
### 3D Graphics backends (`CC_GFX_BACKEND`)
* CC_GFX_BACKEND_SOFTGPU - Software rasteriser
* CC_GFX_BACKEND_D3D9 - Direct3D 9
* CC_GFX_BACKEND_D3D11 - Direct3D 11
* CC_GFX_BACKEND_GL1 - OpenGL 1.2/1.5
* CC_GFX_BACKEND_GL2 - OpenGL 2 (shaders)
The OpenGL backend can be further customised:
* CC_BUILD_GL11 - (must also have CC_BUILD_GL defined)
* CC_BUILD_GLMODERN - (must also have CC_BUILD_GL defined)
* CC_BUILD_GLES (must also have CC_BUILD_GL defined)
* CC_BUILD_GL11 (must be using CC_GFX_BACKEND_GL1)
* CC_BUILD_GLES (must be using CC_GFX_BACKEND_GL2)
### OpenGL context backends
* CC_BUILD_EGL
* CC_BUILD_WGL
### HTTP backends
* CC_BUILD_CURL
* CC_BUILD_HTTPCLIENT - custom HTTP client
* CC_BUILD_WININET
### HTTP backends (`CC_NET_BACKEND`)
* CC_NET_BACKEND_BUILTIN - custom HTTP client
* CC_NET_BACKEND_LIBCURL
* CC_BUILD_CFNETWORK
### SSL backends
* CC_BUILD_SCHANNEL
### SSL backends (`CC_SSL_BACKEND`)
* CC_SSL_BACKEND_NONE
* CC_SSL_BACKEND_BEARSSL
* CC_SSL_BACKEND_SCHANNEL
### Window backends
* CC_BUILD_SDL
* CC_BUILD_X11
* CC_BUILD_WINGUI
### Window backends (`CC_WIN_BACKEND`)
* CC_WIN_BACKEND_TERMINAL
* CC_WIN_BACKEND_SDL2
* CC_WIN_BACKEND_SDL3
* CC_WIN_BACKEND_X11
* CC_WIN_BACKEND_WIN32
### Audio backends (`CC_AUD_BACKEND`)
* CC_AUD_BACKEND_OPENAL
* CC_AUD_BACKEND_WINMM
* CC_AUD_BACKEND_OPENSLES
### Platform backends
* CC_BUILD_POSIX

View File

@ -1,14 +1,14 @@
This document details how to compile a basic plugin in Visual Studio, MinGW, or GCC.
This document details how to compile a basic plugin in Visual Studio, MinGW, or GCC/Clang.
To find the functions and variables available for use in plugins, look for CC_API/CC_VAR in the .h files.
To find the functions and variables available for use in plugins, look for `CC_API`/`CC_VAR` in the .h files.
[Source code of some actual plugins](https://github.com/UnknownShadow200/ClassiCube-Plugins/)
[Source code of some actual plugins](https://github.com/ClassiCube/ClassiCube-Plugins/)
### Setup
You need to download and install either Visual Studio, MinGW, or GCC.
You need to download and install either Visual Studio, MinGW, or GCC/Clang.
*Note: MinGW/GCC are relatively small, while Visual Studio is gigabytes in size.
*Note: MinGW/GCC/Clang are relatively small, while Visual Studio is gigabytes in size.
If you're just trying to compile a plugin on Windows you might want to use MinGW. See main readme.*
I assume your directory is structured like this:
@ -20,6 +20,7 @@ Or in other words, in a directory somewhere, you have a file named `TestPlugin.c
### Basic plugin
```C
#include "src/PluginAPI.h"
#include "src/Chat.h"
#include "src/Game.h"
#include "src/String.h"
@ -29,56 +30,22 @@ static void TestPlugin_Init(void) {
Chat_Add(&msg);
}
int Plugin_ApiVersion = 1;
struct IGameComponent Plugin_Component = { TestPlugin_Init };
PLUGIN_EXPORT int Plugin_ApiVersion = 1;
PLUGIN_EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
```
Here's the idea for a basic plugin that shows "Hello world" in chat when the game starts. Alas, this won't compile...
Here's a basic plugin that shows "Hello world" in chat when the game starts.
### Basic plugin boilerplate
```C
#ifdef _WIN32
#define CC_API __declspec(dllimport)
#define CC_VAR __declspec(dllimport)
#define EXPORT __declspec(dllexport)
#else
#define CC_API
#define CC_VAR
#define EXPORT __attribute__((visibility("default")))
#endif
#include "src/Chat.h"
#include "src/Game.h"
#include "src/String.h"
static void TestPlugin_Init(void) {
cc_string msg = String_FromConst("Hello world!");
Chat_Add(&msg);
}
EXPORT int Plugin_ApiVersion = 1;
EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
```
With this boilerplate, we're ready to compile the plugin.
All plugins require this boilerplate, so feel free to copy and paste it.
Note that `src/PluginAPI.h` must always be included as the first header.
---
### Writing plugins in C++
When including headers from ClassiCube, they **must** be surrounded with `extern "C"`, i.e.
```C
extern "C" {
#include "src/Chat.h"
#include "src/Game.h"
#include "src/String.h"
}
```
Otherwise you will get obscure `Undefined reference` errors when compiling.
Exported plugin functions **must** be surrounded with `extern "C"`, i.e.
```C
extern "C" {
EXPORT int Plugin_ApiVersion = 1;
EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
PLUGIN_EXPORT int Plugin_ApiVersion = 1;
PLUGIN_EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
}
```
Otherwise your plugin will not load. (you'll see `error getting plugin version` in-game)
@ -196,7 +163,7 @@ The simplest way of linking to the `.lib` file is simply adding the following co
#pragma comment(lib, "[GAME SRC FOLDER]/x86/Debug/ClassiCube.lib")
#endif
#endif
`
```
replacing `[GAME SRC FOLDER]` with the full path of `src` folder (e.g. `C:/Dev/ClassiCube/src`)
@ -241,9 +208,22 @@ Then put `TestPlugin.dll` into your game's `plugins` folder. Done.
Then put `TestPlugin.dll` into your game's `plugins` folder. Done.
## Compiling - other notes
## Notes for compiling for Windows
##### Ultra small dlls - mingw
If you **ONLY** use code from the game (no external libraries and no C standard library functions), add `-nostartfiles -Wl,--entry=0` to the compile flags
### Ensuring your plugin works when the ClassiCube exe isn't named ClassiCube.exe
This step isn't necessary, the dll works fine without it. But it does reduce the size of the dll from 11 to 4 kb.
If you follow the prior compilation instructions, the compiled DLL will have a runtime dependancy on `ClassiCube.exe`
However, this means that if the executable is e.g. named `ClassiCube (2).exe` instead. the plugin DLL will fail to load
To avoid this problem, you must
1) Stop linking to `ClassiCube` (e.g. for `MinGW`, remove the ` -L . -lClassiCube`)
2) Load all functions and variables exported from ClassiCube via `GetProcAddress` instead
This is somewhat tedious to do - see [here](https://github.com/ClassiCube/ClassiCube-Plugins/) for some examples of plugins which do this
#### Compiling ultra small plugin DLLs - MinGW
If you **ONLY** use code from the game (no external libraries and no C standard library functions):
* You can add `-nostartfiles -Wl,--entry=0` to the compile flags to reduce the DLL size (e.g from 11 to 4 kb)
This isn't necessary to do though, and plugin DLLs work completely fine without doing this.

View File

@ -1,69 +1,23 @@
Although most of the code is platform-independent, some per-platform functionality is required.
By default I try to automatically define appropriate backends for your OS in Core.h. Define ```CC_BUILD_MANUAL``` to disable this.
By default `Core.h` tries to automatically define appropriate backends for your system. Define ```CC_BUILD_MANUAL``` to disable this.
Note: Updating doesn't work properly in Windows 95 or Windows 98
## Before you start
* IEEE floating support is required.
* int must be 32-bits. 32-bit addressing (or more) is required.
* IEEE floating-point support is required. (Can be emulated in software, but will affect performance)
* The `int` data type must be 32-bits.
* 32-bit addressing (or more) is required.
* Support for 8/16/32/64 integer types is required. (your compiler must support 64-bit arithmetic)
* At least around 2 MB of RAM is required at a minimum
* At least 128 kb for main thread stack size
In other words, the codebase can theroetically be ported to any modern-ish hardware, but not stuff like a UNIVAC machine, the SuperFX chip on the SNES, or an 8-bit microcontroller.
## Supported platforms
**Note:** Some of these machines are just virtual machines. Should still work on real hardware though.
#### Tier 1 support
These platforms are regularly tested on and have executables automatically compiled for. (see buildbot.sh)
|Platform|Machine|Notes|
|--------|-------|-----|
|Windows x86/x64 | Windows 7 |
|macOS x86/x64 | macOS 10.12 |
|Linux x86/x64 | Xubuntu 14 |
|Web client | Chrome |
#### Tier 2 support
These machines are far less frequently tested on, but are otherwise same as tier 1 support.
|Platform|Machine|Notes|
|--------|-------|-----|
|Windows x86 | Windows 2000 |
|Windows x86 | 98 + KernelEX | Updating doesn't work
|Windows x64 | Windows 10 |
|ReactOS | ReactOS |
|Linux x64 | Arch linux |
|Linux x64 | Linux Mint |
|Linux x64 | Kubuntu |
|Linux x64 | Debian |
|Linux x64 | Fedora |
|Linux x86/x64 | Lubuntu |
|Web client | Firefox |
|Web client | Safari |
|Web client | Edge | Cursor doesn't seem to disappear
#### Tier 3 support
The game has been compiled and run on these platforms before. It may or may not still compile for them.
I don't really test these platforms at all, only when I suspect some changes to the code might impact them.
|Platform|Machine|Notes|
|--------|-------|-----|
|macOS x86 | macOS 10.4 |
|FreeBSD x86 | FreeBSD | x64 should work too |
|NetBSD x86 | NetBSD | x64 should work too |
|OpenBSD x86 | OpenBSD | x64 should work too |
|Solaris x86 | OpenIndiana | x64 should work too |
|macOS PPC | macOS 10.3 | PPC64 completely untested |
|Linux PPC | Debian | Issues with colour channels incorrectly swapped? |
|Linux ARM | Raspberry pi | ARM64 should work too |
|Linux SPARC | Debian | Didn't really work due to lack of 24-bit colours |
|Linux Alpha | Debian |
|HaikuOS | Nightly | Requires SDL for windowing
In summary, the codebase can theroetically be ported to any modern-ish hardware, but not stuff like a UNIVAC machine, the SuperFX chip on the SNES, or an 8-bit microcontroller.
## Porting
Listed below are the requirements for implementing each platform-dependent file.
You should try to take advantage of existing backends when porting to other platforms.
Listed below are the requirements for implementing each platform-dependent file.<br>
When porting to other platforms, you should try to leverage existing backends when possible.<br>
Only cross platform backends are listed below.
### Platform
@ -91,8 +45,8 @@ Create a window, show a dialog window, set window contents, keyboard/mouse input
Also monitor size, clipboard, cursor, raw relative mouse movement (optional)
Define:
- ```CC_BUILD_X11``` - Use X11/XLib (unix-ish) (glX)
- ```CC_BUILD_SDL``` - Use SDL library (SDL)
- ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11 ``` - Use X11/XLib (unix-ish) (glX)
- ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_SDL2``` - Use SDL2 library (SDL2)
If using OpenGL, also OpenGL context management
@ -110,23 +64,29 @@ posix note: Register access is highly dependent on OS and architecture.
Play multiple audio streams with varying sample rates
Define:
- ```CC_BUILD_OPENAL``` - use OpenAL
- ```DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL``` - use OpenAL
- ```CC_BUILD_NOAUDIO``` - stub audio implementation (silent)
### 3D Graphics
Texturing, depth buffer, alpha, etc (See Graphics.h for full list)
Define:
- ```CC_BUILD_D3D9``` - Use Direct3D9
- ```CC_BUILD_GL``` - Use OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
- ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only
- ```CC_BUILD_GLMODERN``` - Use modern OpenGL shaders
- ```CC_BUILD_GLES``` - Makes these shaders compatible with OpenGL ES
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1``` - Use legacy OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
- ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL2``` - Use modern OpenGL shaders
- ```CC_BUILD_GLES``` - Makes these shaders compatible with OpenGL ES
- ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_SOFTGPU``` - Use built in software rasteriser
### Http
### HTTP
HTTP, HTTPS, and setting request/getting response headers
Define:
- ```CC_BUILD_CURL``` - use libcurl for http
- ```DEFAULT_NET_BACKEND CC_NET_BACKEND_BUILTIN``` - use built in simple HTTP backend
Supporting connection reuse is highly recommended. (but not required)
### SSL
SSL and TLS support, plus basic certificate validation
Define:
- ```DEFAULT_SSL_BACKEND CC_SSL_BACKEND_BEARSSL``` - use BearSSL for SSL/TLS

View File

@ -3,7 +3,7 @@
ClassiCube uses a custom string type rather than the standard C `char*` string in most places
ClassiCube strings (`cc_string`) are a struct with the following fields:
- `buffer` -> Pointer to 8 bit characters (unsigned code page 437 indices)
- `buffer` -> Pointer to 8 bit characters (unsigned [code page 437 indices](https://en.wikipedia.org/wiki/Code_page_437#Character_set))
- `length` -> Number of characters currently used
- `capacity` -> Maximum number of characters (i.e buffer size)
@ -20,6 +20,29 @@ Some general guidelines to keep in mind when it comes to `cc_string` strings:
- Strings are not garbage collected or reference counted<br>
(i.e. you are responsible for managing the lifetime of strings)
## Usage examples
Initialisating a string from readonly text:
```C
cc_string str = String_FromConst("ABC");
```
Initialising a string from temporary memory on the stack:
```C
// str will be able to store at most 200 characters in it
char strBuffer[200];
cc_string str = String_FromArray(strBuffer);
```
Initialising a string from persistent memory on the heap:
```C
// str will be able to store at most 200 characters in it
char* str = Mem_Alloc(1, 200, "String buffer");
cc_string str = String_Init(str, 0, 200);
```
# Converting to/from other string representations
## C String conversion
### C string -> cc_string
@ -88,7 +111,7 @@ void SetWorkingDir(cc_string* title) {
Platform_EncodeUtf16(&str, title);
SetCurrentDirectoryW(str.uni);
// it's recommended that you DON'T use the ansi format whenever possible
// it's recommended that you DON'T use the ansi format whenever possible
//SetCurrentDirectoryA(str.ansi);
}
```
@ -106,13 +129,15 @@ void SetWorkingDir(cc_string* title) {
}
```
## API
# API
I'm lazy so I will just link to [String.h](/src/String.h)
If you'd rather I provided a more detailed reference here, please let me know.
# Extra details
TODO
# Comparisons to other string implementations
## C comparison
@ -202,11 +227,103 @@ string::compare -> String_Compare
std::sprintf -> String_Format1/2/3/4
```
# Detailed lifetime examples
## lifetime examples
Managing the lifetime of strings is important, as not properly managing them can cause issues.
Stack allocated returning example
For example, consider the following function:
```C
const cc_string* GetString(void);
Mem_Alloc/Mem_Free and function example
void PrintSomething(void) {
cc_string* str = GetString();
// .. other code ..
Chat_Add(str);
}
```
UNSAFE and mutating characters example
Without knowing the lifetime of the string returned from `GetString`, using it might either:
* Work just fine
* Sometimes work fine
* Cause a subtle issue
* Cause a major problem
ptodo rearrange
### Constant string return example
```C
const cc_string* GetString(void) {
static cc_string str = String_FromConst("ABC");
return &str;
}
```
This will work fine - as long as the caller does not modify the returned string at all
### Stack allocated string return example
```C
const cc_string* GetString(void) {
char strBuffer[1024];
cc_string str = String_FromArray(strBuffer);
String_AppendConst(&str, "ABC");
return &str;
}
```
This will **almost certainly cause problems** - after `GetString` returns, the contents of both `str` and `strBuffer` may be changed to arbitary values (as once `GetString` returns, their contents are then eligible to be overwritten by other stack allocated variables)
As a general rule, you should **NEVER** return a string allocated on the stack
### Dynamically allocated string return example
```C
const cc_string* GetString(void) {
char* buffer = Mem_Alloc(1024, 1, "string buffer");
cc_string* str = Mem_Alloc(1, sizeof(cc_string), "string");
*str = String_Init(buffer, 0, 1024);
String_AppendConst(str, "ABC");
return str;
}
```
This will work fine - however, now you also need to remember to `Mem_Free` both the string and its buffer to avoid a memory leak
As a general rule, you should avoid returning a dynamically allocated string
### UNSAFE mutable string return example
```C
char global_buffer[1024];
cc_string global_str = String_FromArray(global_buffer);
const cc_string* GetString(void) {
return &global_str;
}
```
Depending on what functions are called in-between `GetString` and `Chat_Add`, `global_str` or its contents may be modified - which can result in an unexpected value being displayed in chat
This potential issue is not just theoretical - it has actually resulted in several real bugs in ClassiCube itself
As a general rule, for unsafe functions returning a string that may be mutated behind your back, you should try to maintain a reference to the string for as short of time as possible
### Reducing string lifetime issues
In general, for functions that produce strings, you should try to leave the responsibility of managing the string's lifetime up to the calling function to avoid these pitfalls
The example from before could instead be rewritten like so:
```C
void GetString(cc_string* str);
void PrintSomething(void) {
char strBuffer[256];
cc_string str = String_InitArray(strBuffer);
GetString(&str);
// .. other code ..
Chat_Add(&str);
}
```

View File

@ -6,29 +6,29 @@
* Private variables don't really have a consistent style.
### Types
* Explicit integer typedefs are provided in ```Core.h``` for when needed. Otherwise just use int.
* Explicit integer size typedefs are provided in `Core.h` for when needed. Otherwise just use int.
* A few common simple structs are typedef-ed, but are rarely otherwise.
* ```cc_bool``` is an alias for 8 bit unsigned integer
* ```PackedCol``` field order differs depending on the underlying 3D graphics API
* `cc_bool` is an alias for 8 bit unsigned integer
* `PackedCol` field order differs depending on the underlying 3D graphics API
I may not have defined the appropriate types for your compiler, so you may need to modify ```Core.h```
Note: The explicit integer size typedefs may not have been defined if you aren't compiling using GCC/Clang/MSVC, so for other compilers you may need to add them into `Core.h`
### Strings
A custom string type (`cc_string`) is used rather than `char*` strings in most places (see [strings](doc/strings.md) page for more details)
A custom string type (`cc_string`) is used rather than `char*` strings in most places (see [strings](strings.md) page for more details)
*Note: Several functions will take raw ```char*``` for performance, but this is not encouraged*
*Note: Several functions will take raw `char*` for performance, but this is not encouraged*
#### String arguments
String arguments are annotated to indicate storage and readonly requirements. These are:
- ```const cc_string*``` - String is not modified at all
- ```cc_string*``` - Characters in string may be modified
- ```STRING_REF``` - Macro annotation indicating a **reference is kept to the characters**
- `const cc_string*` - String is not modified at all
- `cc_string*` - Characters in string may be modified
- `STRING_REF` - Macro annotation indicating a **reference is kept to the characters**
To make it extra clear, functions with ```STRING_REF``` arguments usually also have ```_UNSAFE_``` as part of their name.
To make it extra clear, functions with `STRING_REF` arguments usually also have `_UNSAFE_` as part of their name.
For example, consider the function ```cc_string Substring_UNSAFE(STRING_REF const cc_string* str, length)```
For example, consider the function `cc_string Substring_UNSAFE(STRING_REF const cc_string* str, length)`
The *input string* is not modified at all. However, the characters of the *returned string* points to the characters of the *input string*, so modifying the characters in the *input string* also modifies the *returned string*.
In general, use of ```const String*``` is preferred when possible, and ```STRING_REF``` as little as possible.
In general, use of `const cc_string*` is preferred when possible, and `STRING_REF` as little as possible.

View File

@ -1,785 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
9A62ADF5286D906F00E5E3DE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A62ADF4286D906F00E5E3DE /* Assets.xcassets */; };
9A89D4F227F802F600FF3F80 /* LWidgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37827F802F500FF3F80 /* LWidgets.c */; };
9A89D4F327F802F600FF3F80 /* Graphics_GL2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */; };
9A89D4F427F802F600FF3F80 /* Vorbis.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37C27F802F500FF3F80 /* Vorbis.c */; };
9A89D4F527F802F600FF3F80 /* _ftsynth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37D27F802F500FF3F80 /* _ftsynth.c */; };
9A89D4F627F802F600FF3F80 /* Platform_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D37F27F802F500FF3F80 /* Platform_Android.c */; };
9A89D4F727F802F600FF3F80 /* Game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38027F802F500FF3F80 /* Game.c */; };
9A89D4F827F802F600FF3F80 /* Window_Android.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38127F802F500FF3F80 /* Window_Android.c */; };
9A89D4F927F802F600FF3F80 /* Http_Worker.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38227F802F500FF3F80 /* Http_Worker.c */; };
9A89D4FB27F802F600FF3F80 /* TexturePack.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38427F802F500FF3F80 /* TexturePack.c */; };
9A89D4FC27F802F600FF3F80 /* Graphics_D3D9.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */; };
9A89D4FD27F802F600FF3F80 /* ExtMath.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38627F802F500FF3F80 /* ExtMath.c */; };
9A89D4FE27F802F600FF3F80 /* Inventory.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38B27F802F500FF3F80 /* Inventory.c */; };
9A89D4FF27F802F600FF3F80 /* Gui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38C27F802F500FF3F80 /* Gui.c */; };
9A89D50027F802F600FF3F80 /* _truetype.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38E27F802F500FF3F80 /* _truetype.c */; };
9A89D50127F802F600FF3F80 /* LBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38F27F802F500FF3F80 /* LBackend.c */; };
9A89D50227F802F600FF3F80 /* Block.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39127F802F500FF3F80 /* Block.c */; };
9A89D50327F802F600FF3F80 /* Platform_Posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39227F802F500FF3F80 /* Platform_Posix.c */; };
9A89D50427F802F600FF3F80 /* Model.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39627F802F500FF3F80 /* Model.c */; };
9A89D50527F802F600FF3F80 /* LScreens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39827F802F500FF3F80 /* LScreens.c */; };
9A89D50627F802F600FF3F80 /* Builder.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39927F802F500FF3F80 /* Builder.c */; };
9A89D50727F802F600FF3F80 /* Particle.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39B27F802F500FF3F80 /* Particle.c */; };
9A89D50827F802F600FF3F80 /* PackedCol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D39C27F802F500FF3F80 /* PackedCol.c */; };
9A89D54F27F802F600FF3F80 /* Deflate.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47227F802F500FF3F80 /* Deflate.c */; };
9A89D55027F802F600FF3F80 /* Entity.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47427F802F500FF3F80 /* Entity.c */; };
9A89D55127F802F600FF3F80 /* IsometricDrawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47527F802F500FF3F80 /* IsometricDrawer.c */; };
9A89D55227F802F600FF3F80 /* Logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47627F802F500FF3F80 /* Logger.c */; };
9A89D55327F802F600FF3F80 /* _psaux.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47727F802F500FF3F80 /* _psaux.c */; };
9A89D55427F802F600FF3F80 /* Bitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47827F802F500FF3F80 /* Bitmap.c */; };
9A89D55527F802F600FF3F80 /* HeldBlockRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */; };
9A89D55627F802F600FF3F80 /* EnvRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47A27F802F500FF3F80 /* EnvRenderer.c */; };
9A89D55727F802F600FF3F80 /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47B27F802F500FF3F80 /* Makefile */; };
9A89D55827F802F600FF3F80 /* Graphics_GL1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */; };
9A89D55927F802F600FF3F80 /* interop_ios.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D47F27F802F600FF3F80 /* interop_ios.m */; };
9A89D55A27F802F600FF3F80 /* Program.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48127F802F600FF3F80 /* Program.c */; };
9A89D55B27F802F600FF3F80 /* _type1.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48227F802F600FF3F80 /* _type1.c */; };
9A89D55C27F802F600FF3F80 /* Animations.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48527F802F600FF3F80 /* Animations.c */; };
9A89D55D27F802F600FF3F80 /* _psmodule.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48627F802F600FF3F80 /* _psmodule.c */; };
9A89D55E27F802F600FF3F80 /* World.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48727F802F600FF3F80 /* World.c */; };
9A89D55F27F802F600FF3F80 /* _sfnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48827F802F600FF3F80 /* _sfnt.c */; };
9A89D56027F802F600FF3F80 /* _ftbitmap.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48A27F802F600FF3F80 /* _ftbitmap.c */; };
9A89D56127F802F600FF3F80 /* Menus.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48B27F802F600FF3F80 /* Menus.c */; };
9A89D56227F802F600FF3F80 /* _ftbase.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48C27F802F600FF3F80 /* _ftbase.c */; };
9A89D56327F802F600FF3F80 /* _autofit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D48D27F802F600FF3F80 /* _autofit.c */; };
9A89D56427F802F600FF3F80 /* String.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49227F802F600FF3F80 /* String.c */; };
9A89D56527F802F600FF3F80 /* Generator.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49427F802F600FF3F80 /* Generator.c */; };
9A89D56627F802F600FF3F80 /* Drawer2D.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49527F802F600FF3F80 /* Drawer2D.c */; };
9A89D56727F802F600FF3F80 /* Drawer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49827F802F600FF3F80 /* Drawer.c */; };
9A89D56827F802F600FF3F80 /* Lighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49927F802F600FF3F80 /* Lighting.c */; };
9A89D56927F802F600FF3F80 /* Window_Carbon.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49A27F802F600FF3F80 /* Window_Carbon.c */; };
9A89D56A27F802F600FF3F80 /* Physics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49B27F802F600FF3F80 /* Physics.c */; };
9A89D56B27F802F600FF3F80 /* Server.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D49E27F802F600FF3F80 /* Server.c */; };
9A89D56C27F802F600FF3F80 /* _ftinit.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A027F802F600FF3F80 /* _ftinit.c */; };
9A89D56D27F802F600FF3F80 /* Window_X11.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A127F802F600FF3F80 /* Window_X11.c */; };
9A89D56E27F802F600FF3F80 /* Platform_WinApi.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */; };
9A89D56F27F802F600FF3F80 /* Input.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4A627F802F600FF3F80 /* Input.c */; };
9A89D57227F802F600FF3F80 /* Picking.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AA27F802F600FF3F80 /* Picking.c */; };
9A89D57327F802F600FF3F80 /* Utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AB27F802F600FF3F80 /* Utils.c */; };
9A89D57427F802F600FF3F80 /* MapRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AE27F802F600FF3F80 /* MapRenderer.c */; };
9A89D57527F802F600FF3F80 /* AxisLinesRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */; };
9A89D57627F802F600FF3F80 /* _pshinter.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B127F802F600FF3F80 /* _pshinter.c */; };
9A89D57827F802F600FF3F80 /* Protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B327F802F600FF3F80 /* Protocol.c */; };
9A89D57927F802F600FF3F80 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B527F802F600FF3F80 /* Event.c */; };
9A89D57A27F802F600FF3F80 /* Graphics_D3D11.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */; };
9A89D57B27F802F600FF3F80 /* _ftglyph.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BB27F802F600FF3F80 /* _ftglyph.c */; };
9A89D57C27F802F600FF3F80 /* Chat.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BC27F802F600FF3F80 /* Chat.c */; };
9A89D57D27F802F600FF3F80 /* _smooth.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BD27F802F600FF3F80 /* _smooth.c */; };
9A89D57E27F802F600FF3F80 /* Resources.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4BE27F802F600FF3F80 /* Resources.c */; };
9A89D57F27F802F600FF3F80 /* LWeb.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C427F802F600FF3F80 /* LWeb.c */; };
9A89D58027F802F600FF3F80 /* Formats.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C627F802F600FF3F80 /* Formats.c */; };
9A89D58127F802F600FF3F80 /* PickedPosRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */; };
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CC27F802F600FF3F80 /* EntityComponents.c */; };
9A89D58427F802F600FF3F80 /* Camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CF27F802F600FF3F80 /* Camera.c */; };
9A89D58527F802F600FF3F80 /* Platform_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D027F802F600FF3F80 /* Platform_Web.c */; };
9A89D58627F802F600FF3F80 /* Screens.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D127F802F600FF3F80 /* Screens.c */; };
9A89D58727F802F600FF3F80 /* SelectionBox.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4D227F802F600FF3F80 /* SelectionBox.c */; };
9A89D58927F802F600FF3F80 /* _cff.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DA27F802F600FF3F80 /* _cff.c */; };
9A89D58A27F802F600FF3F80 /* BlockPhysics.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */; };
9A89D58B27F802F600FF3F80 /* Launcher.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DD27F802F600FF3F80 /* Launcher.c */; };
9A89D58C27F802F600FF3F80 /* Window_Win.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4DF27F802F600FF3F80 /* Window_Win.c */; };
9A89D58D27F802F600FF3F80 /* Options.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E327F802F600FF3F80 /* Options.c */; };
9A89D58E27F802F600FF3F80 /* Window_SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E427F802F600FF3F80 /* Window_SDL.c */; };
9A89D58F27F802F600FF3F80 /* Audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E727F802F600FF3F80 /* Audio.c */; };
9A89D59027F802F600FF3F80 /* Stream.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E827F802F600FF3F80 /* Stream.c */; };
9A89D59127F802F600FF3F80 /* Vectors.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E927F802F600FF3F80 /* Vectors.c */; };
9A89D59227F802F600FF3F80 /* Http_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EB27F802F600FF3F80 /* Http_Web.c */; };
9A89D59327F802F600FF3F80 /* Window_Web.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EC27F802F600FF3F80 /* Window_Web.c */; };
9A89D59427F802F600FF3F80 /* Widgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EE27F802F600FF3F80 /* Widgets.c */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
9A62ADF4286D906F00E5E3DE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ClassiCube/Assets.xcassets; sourceTree = "<group>"; };
9A89D35727F802B100FF3F80 /* ClassiCube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ClassiCube.app; sourceTree = BUILT_PRODUCTS_DIR; };
9A89D36827F802B400FF3F80 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9A89D37827F802F500FF3F80 /* LWidgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LWidgets.c; sourceTree = "<group>"; };
9A89D37927F802F500FF3F80 /* AxisLinesRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AxisLinesRenderer.h; sourceTree = "<group>"; };
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_GL2.c; sourceTree = "<group>"; };
9A89D37B27F802F500FF3F80 /* MapRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapRenderer.h; sourceTree = "<group>"; };
9A89D37C27F802F500FF3F80 /* Vorbis.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Vorbis.c; sourceTree = "<group>"; };
9A89D37D27F802F500FF3F80 /* _ftsynth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftsynth.c; sourceTree = "<group>"; };
9A89D37E27F802F500FF3F80 /* Protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Protocol.h; sourceTree = "<group>"; };
9A89D37F27F802F500FF3F80 /* Platform_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Android.c; sourceTree = "<group>"; };
9A89D38027F802F500FF3F80 /* Game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Game.c; sourceTree = "<group>"; };
9A89D38127F802F500FF3F80 /* Window_Android.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Android.c; sourceTree = "<group>"; };
9A89D38227F802F500FF3F80 /* Http_Worker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Http_Worker.c; sourceTree = "<group>"; };
9A89D38427F802F500FF3F80 /* TexturePack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TexturePack.c; sourceTree = "<group>"; };
9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_D3D9.c; sourceTree = "<group>"; };
9A89D38627F802F500FF3F80 /* ExtMath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ExtMath.c; sourceTree = "<group>"; };
9A89D38727F802F500FF3F80 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utils.h; sourceTree = "<group>"; };
9A89D38827F802F500FF3F80 /* Picking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Picking.h; sourceTree = "<group>"; };
9A89D38927F802F500FF3F80 /* Input.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Input.h; sourceTree = "<group>"; };
9A89D38A27F802F500FF3F80 /* _HttpBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _HttpBase.h; sourceTree = "<group>"; };
9A89D38B27F802F500FF3F80 /* Inventory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Inventory.c; sourceTree = "<group>"; };
9A89D38C27F802F500FF3F80 /* Gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Gui.c; sourceTree = "<group>"; };
9A89D38D27F802F500FF3F80 /* Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Core.h; sourceTree = "<group>"; };
9A89D38E27F802F500FF3F80 /* _truetype.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _truetype.c; sourceTree = "<group>"; };
9A89D38F27F802F500FF3F80 /* LBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LBackend.c; sourceTree = "<group>"; };
9A89D39027F802F500FF3F80 /* LWeb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWeb.h; sourceTree = "<group>"; };
9A89D39127F802F500FF3F80 /* Block.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Block.c; sourceTree = "<group>"; };
9A89D39227F802F500FF3F80 /* Platform_Posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Posix.c; sourceTree = "<group>"; };
9A89D39327F802F500FF3F80 /* Formats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Formats.h; sourceTree = "<group>"; };
9A89D39427F802F500FF3F80 /* Resources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Resources.h; sourceTree = "<group>"; };
9A89D39527F802F500FF3F80 /* Chat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chat.h; sourceTree = "<group>"; };
9A89D39627F802F500FF3F80 /* Model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Model.c; sourceTree = "<group>"; };
9A89D39727F802F500FF3F80 /* Http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Http.h; sourceTree = "<group>"; };
9A89D39827F802F500FF3F80 /* LScreens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LScreens.c; sourceTree = "<group>"; };
9A89D39927F802F500FF3F80 /* Builder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Builder.c; sourceTree = "<group>"; };
9A89D39A27F802F500FF3F80 /* _PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _PlatformBase.h; sourceTree = "<group>"; };
9A89D39B27F802F500FF3F80 /* Particle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Particle.c; sourceTree = "<group>"; };
9A89D39C27F802F500FF3F80 /* PackedCol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PackedCol.c; sourceTree = "<group>"; };
9A89D47227F802F500FF3F80 /* Deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Deflate.c; sourceTree = "<group>"; };
9A89D47327F802F500FF3F80 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = "<group>"; };
9A89D47427F802F500FF3F80 /* Entity.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Entity.c; sourceTree = "<group>"; };
9A89D47527F802F500FF3F80 /* IsometricDrawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IsometricDrawer.c; sourceTree = "<group>"; };
9A89D47627F802F500FF3F80 /* Logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Logger.c; sourceTree = "<group>"; };
9A89D47727F802F500FF3F80 /* _psaux.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _psaux.c; sourceTree = "<group>"; };
9A89D47827F802F500FF3F80 /* Bitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Bitmap.c; sourceTree = "<group>"; };
9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = HeldBlockRenderer.c; sourceTree = "<group>"; };
9A89D47A27F802F500FF3F80 /* EnvRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EnvRenderer.c; sourceTree = "<group>"; };
9A89D47B27F802F500FF3F80 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
9A89D47C27F802F500FF3F80 /* Screens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Screens.h; sourceTree = "<group>"; };
9A89D47D27F802F500FF3F80 /* SelectionBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionBox.h; sourceTree = "<group>"; };
9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_GL1.c; sourceTree = "<group>"; };
9A89D47F27F802F600FF3F80 /* interop_ios.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = interop_ios.m; sourceTree = "<group>"; };
9A89D48027F802F600FF3F80 /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Camera.h; sourceTree = "<group>"; };
9A89D48127F802F600FF3F80 /* Program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Program.c; sourceTree = "<group>"; };
9A89D48227F802F600FF3F80 /* _type1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _type1.c; sourceTree = "<group>"; };
9A89D48327F802F600FF3F80 /* _GraphicsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _GraphicsBase.h; sourceTree = "<group>"; };
9A89D48427F802F600FF3F80 /* EntityComponents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EntityComponents.h; sourceTree = "<group>"; };
9A89D48527F802F600FF3F80 /* Animations.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Animations.c; sourceTree = "<group>"; };
9A89D48627F802F600FF3F80 /* _psmodule.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _psmodule.c; sourceTree = "<group>"; };
9A89D48727F802F600FF3F80 /* World.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = World.c; sourceTree = "<group>"; };
9A89D48827F802F600FF3F80 /* _sfnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _sfnt.c; sourceTree = "<group>"; };
9A89D48927F802F600FF3F80 /* _WindowBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WindowBase.h; sourceTree = "<group>"; };
9A89D48A27F802F600FF3F80 /* _ftbitmap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftbitmap.c; sourceTree = "<group>"; };
9A89D48B27F802F600FF3F80 /* Menus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Menus.c; sourceTree = "<group>"; };
9A89D48C27F802F600FF3F80 /* _ftbase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftbase.c; sourceTree = "<group>"; };
9A89D48D27F802F600FF3F80 /* _autofit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _autofit.c; sourceTree = "<group>"; };
9A89D48E27F802F600FF3F80 /* PickedPosRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PickedPosRenderer.h; sourceTree = "<group>"; };
9A89D48F27F802F600FF3F80 /* Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Window.h; sourceTree = "<group>"; };
9A89D49027F802F600FF3F80 /* Errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Errors.h; sourceTree = "<group>"; };
9A89D49127F802F600FF3F80 /* Widgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Widgets.h; sourceTree = "<group>"; };
9A89D49227F802F600FF3F80 /* String.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = String.c; sourceTree = "<group>"; };
9A89D49327F802F600FF3F80 /* Audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Audio.h; sourceTree = "<group>"; };
9A89D49427F802F600FF3F80 /* Generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Generator.c; sourceTree = "<group>"; };
9A89D49527F802F600FF3F80 /* Drawer2D.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Drawer2D.c; sourceTree = "<group>"; };
9A89D49627F802F600FF3F80 /* Vectors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vectors.h; sourceTree = "<group>"; };
9A89D49727F802F600FF3F80 /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Stream.h; sourceTree = "<group>"; };
9A89D49827F802F600FF3F80 /* Drawer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Drawer.c; sourceTree = "<group>"; };
9A89D49927F802F600FF3F80 /* Lighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Lighting.c; sourceTree = "<group>"; };
9A89D49A27F802F600FF3F80 /* Window_Carbon.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Carbon.c; sourceTree = "<group>"; };
9A89D49B27F802F600FF3F80 /* Physics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Physics.c; sourceTree = "<group>"; };
9A89D49C27F802F600FF3F80 /* Options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Options.h; sourceTree = "<group>"; };
9A89D49D27F802F600FF3F80 /* BlockPhysics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockPhysics.h; sourceTree = "<group>"; };
9A89D49E27F802F600FF3F80 /* Server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Server.c; sourceTree = "<group>"; };
9A89D49F27F802F600FF3F80 /* Launcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Launcher.h; sourceTree = "<group>"; };
9A89D4A027F802F600FF3F80 /* _ftinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftinit.c; sourceTree = "<group>"; };
9A89D4A127F802F600FF3F80 /* Window_X11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_X11.c; sourceTree = "<group>"; };
9A89D4A227F802F600FF3F80 /* Inventory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Inventory.h; sourceTree = "<group>"; };
9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_WinApi.c; sourceTree = "<group>"; };
9A89D4A427F802F600FF3F80 /* Gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Gui.h; sourceTree = "<group>"; };
9A89D4A527F802F600FF3F80 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = "<group>"; };
9A89D4A627F802F600FF3F80 /* Input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Input.c; sourceTree = "<group>"; };
9A89D4A927F802F600FF3F80 /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = "<group>"; };
9A89D4AA27F802F600FF3F80 /* Picking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Picking.c; sourceTree = "<group>"; };
9A89D4AB27F802F600FF3F80 /* Utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Utils.c; sourceTree = "<group>"; };
9A89D4AC27F802F600FF3F80 /* ExtMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtMath.h; sourceTree = "<group>"; };
9A89D4AD27F802F600FF3F80 /* TexturePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TexturePack.h; sourceTree = "<group>"; };
9A89D4AE27F802F600FF3F80 /* MapRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MapRenderer.c; sourceTree = "<group>"; };
9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AxisLinesRenderer.c; sourceTree = "<group>"; };
9A89D4B027F802F600FF3F80 /* LWidgets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LWidgets.h; sourceTree = "<group>"; };
9A89D4B127F802F600FF3F80 /* _pshinter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _pshinter.c; sourceTree = "<group>"; };
9A89D4B327F802F600FF3F80 /* Protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Protocol.c; sourceTree = "<group>"; };
9A89D4B427F802F600FF3F80 /* Vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Vorbis.h; sourceTree = "<group>"; };
9A89D4B527F802F600FF3F80 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Event.c; sourceTree = "<group>"; };
9A89D4B627F802F600FF3F80 /* Deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deflate.h; sourceTree = "<group>"; };
9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_D3D11.c; sourceTree = "<group>"; };
9A89D4B827F802F600FF3F80 /* Entity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Entity.h; sourceTree = "<group>"; };
9A89D4B927F802F600FF3F80 /* Particle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Particle.h; sourceTree = "<group>"; };
9A89D4BA27F802F600FF3F80 /* PackedCol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PackedCol.h; sourceTree = "<group>"; };
9A89D4BB27F802F600FF3F80 /* _ftglyph.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftglyph.c; sourceTree = "<group>"; };
9A89D4BC27F802F600FF3F80 /* Chat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Chat.c; sourceTree = "<group>"; };
9A89D4BD27F802F600FF3F80 /* _smooth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _smooth.c; sourceTree = "<group>"; };
9A89D4BE27F802F600FF3F80 /* Resources.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Resources.c; sourceTree = "<group>"; };
9A89D4BF27F802F600FF3F80 /* Builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Builder.h; sourceTree = "<group>"; };
9A89D4C027F802F600FF3F80 /* LScreens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LScreens.h; sourceTree = "<group>"; };
9A89D4C127F802F600FF3F80 /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Model.h; sourceTree = "<group>"; };
9A89D4C227F802F600FF3F80 /* BlockID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockID.h; sourceTree = "<group>"; };
9A89D4C327F802F600FF3F80 /* Block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Block.h; sourceTree = "<group>"; };
9A89D4C427F802F600FF3F80 /* LWeb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LWeb.c; sourceTree = "<group>"; };
9A89D4C527F802F600FF3F80 /* LBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LBackend.h; sourceTree = "<group>"; };
9A89D4C627F802F600FF3F80 /* Formats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Formats.c; sourceTree = "<group>"; };
9A89D4C727F802F600FF3F80 /* Funcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Funcs.h; sourceTree = "<group>"; };
9A89D4C827F802F600FF3F80 /* World.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = World.h; sourceTree = "<group>"; };
9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PickedPosRenderer.c; sourceTree = "<group>"; };
9A89D4CB27F802F600FF3F80 /* Menus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Menus.h; sourceTree = "<group>"; };
9A89D4CC27F802F600FF3F80 /* EntityComponents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EntityComponents.c; sourceTree = "<group>"; };
9A89D4CD27F802F600FF3F80 /* Animations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animations.h; sourceTree = "<group>"; };
9A89D4CE27F802F600FF3F80 /* Graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Graphics.h; sourceTree = "<group>"; };
9A89D4CF27F802F600FF3F80 /* Camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Camera.c; sourceTree = "<group>"; };
9A89D4D027F802F600FF3F80 /* Platform_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Platform_Web.c; sourceTree = "<group>"; };
9A89D4D127F802F600FF3F80 /* Screens.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Screens.c; sourceTree = "<group>"; };
9A89D4D227F802F600FF3F80 /* SelectionBox.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SelectionBox.c; sourceTree = "<group>"; };
9A89D4D427F802F600FF3F80 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Logger.h; sourceTree = "<group>"; };
9A89D4D527F802F600FF3F80 /* IsometricDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsometricDrawer.h; sourceTree = "<group>"; };
9A89D4D627F802F600FF3F80 /* EnvRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EnvRenderer.h; sourceTree = "<group>"; };
9A89D4D727F802F600FF3F80 /* _GLShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _GLShared.h; sourceTree = "<group>"; };
9A89D4D827F802F600FF3F80 /* Bitmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bitmap.h; sourceTree = "<group>"; };
9A89D4D927F802F600FF3F80 /* HeldBlockRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeldBlockRenderer.h; sourceTree = "<group>"; };
9A89D4DA27F802F600FF3F80 /* _cff.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _cff.c; sourceTree = "<group>"; };
9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BlockPhysics.c; sourceTree = "<group>"; };
9A89D4DC27F802F600FF3F80 /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Server.h; sourceTree = "<group>"; };
9A89D4DD27F802F600FF3F80 /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Launcher.c; sourceTree = "<group>"; };
9A89D4DE27F802F600FF3F80 /* Lighting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lighting.h; sourceTree = "<group>"; };
9A89D4DF27F802F600FF3F80 /* Window_Win.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Win.c; sourceTree = "<group>"; };
9A89D4E027F802F600FF3F80 /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = "<group>"; };
9A89D4E127F802F600FF3F80 /* Drawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Drawer.h; sourceTree = "<group>"; };
9A89D4E227F802F600FF3F80 /* _D3D11Shaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _D3D11Shaders.h; sourceTree = "<group>"; };
9A89D4E327F802F600FF3F80 /* Options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Options.c; sourceTree = "<group>"; };
9A89D4E427F802F600FF3F80 /* Window_SDL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_SDL.c; sourceTree = "<group>"; };
9A89D4E527F802F600FF3F80 /* Physics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Physics.h; sourceTree = "<group>"; };
9A89D4E627F802F600FF3F80 /* Generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Generator.h; sourceTree = "<group>"; };
9A89D4E727F802F600FF3F80 /* Audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Audio.c; sourceTree = "<group>"; };
9A89D4E827F802F600FF3F80 /* Stream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Stream.c; sourceTree = "<group>"; };
9A89D4E927F802F600FF3F80 /* Vectors.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Vectors.c; sourceTree = "<group>"; };
9A89D4EA27F802F600FF3F80 /* Drawer2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Drawer2D.h; sourceTree = "<group>"; };
9A89D4EB27F802F600FF3F80 /* Http_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Http_Web.c; sourceTree = "<group>"; };
9A89D4EC27F802F600FF3F80 /* Window_Web.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_Web.c; sourceTree = "<group>"; };
9A89D4ED27F802F600FF3F80 /* String.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = String.h; sourceTree = "<group>"; };
9A89D4EE27F802F600FF3F80 /* Widgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Widgets.c; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
9A89D35427F802B100FF3F80 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
9A89D34E27F802B100FF3F80 = {
isa = PBXGroup;
children = (
9A62ADF4286D906F00E5E3DE /* Assets.xcassets */,
9A89D36827F802B400FF3F80 /* Info.plist */,
9A89D37727F802F500FF3F80 /* src */,
9A89D35827F802B100FF3F80 /* Products */,
);
sourceTree = "<group>";
};
9A89D35827F802B100FF3F80 /* Products */ = {
isa = PBXGroup;
children = (
9A89D35727F802B100FF3F80 /* ClassiCube.app */,
);
name = Products;
sourceTree = "<group>";
};
9A89D37727F802F500FF3F80 /* src */ = {
isa = PBXGroup;
children = (
9A89D47B27F802F500FF3F80 /* Makefile */,
9A89D48D27F802F600FF3F80 /* _autofit.c */,
9A89D4DA27F802F600FF3F80 /* _cff.c */,
9A89D48C27F802F600FF3F80 /* _ftbase.c */,
9A89D48A27F802F600FF3F80 /* _ftbitmap.c */,
9A89D4BB27F802F600FF3F80 /* _ftglyph.c */,
9A89D4A027F802F600FF3F80 /* _ftinit.c */,
9A89D37D27F802F500FF3F80 /* _ftsynth.c */,
9A89D47727F802F500FF3F80 /* _psaux.c */,
9A89D4B127F802F600FF3F80 /* _pshinter.c */,
9A89D48627F802F600FF3F80 /* _psmodule.c */,
9A89D48827F802F600FF3F80 /* _sfnt.c */,
9A89D4BD27F802F600FF3F80 /* _smooth.c */,
9A89D38E27F802F500FF3F80 /* _truetype.c */,
9A89D48227F802F600FF3F80 /* _type1.c */,
9A89D48527F802F600FF3F80 /* Animations.c */,
9A89D4E727F802F600FF3F80 /* Audio.c */,
9A89D4AF27F802F600FF3F80 /* AxisLinesRenderer.c */,
9A89D47827F802F500FF3F80 /* Bitmap.c */,
9A89D39127F802F500FF3F80 /* Block.c */,
9A89D4DB27F802F600FF3F80 /* BlockPhysics.c */,
9A89D39927F802F500FF3F80 /* Builder.c */,
9A89D4CF27F802F600FF3F80 /* Camera.c */,
9A89D4BC27F802F600FF3F80 /* Chat.c */,
9A89D47227F802F500FF3F80 /* Deflate.c */,
9A89D49827F802F600FF3F80 /* Drawer.c */,
9A89D49527F802F600FF3F80 /* Drawer2D.c */,
9A89D47427F802F500FF3F80 /* Entity.c */,
9A89D4CC27F802F600FF3F80 /* EntityComponents.c */,
9A89D47A27F802F500FF3F80 /* EnvRenderer.c */,
9A89D4B527F802F600FF3F80 /* Event.c */,
9A89D38627F802F500FF3F80 /* ExtMath.c */,
9A89D4C627F802F600FF3F80 /* Formats.c */,
9A89D38027F802F500FF3F80 /* Game.c */,
9A89D49427F802F600FF3F80 /* Generator.c */,
9A89D38527F802F500FF3F80 /* Graphics_D3D9.c */,
9A89D4B727F802F600FF3F80 /* Graphics_D3D11.c */,
9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */,
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */,
9A89D38C27F802F500FF3F80 /* Gui.c */,
9A89D47927F802F500FF3F80 /* HeldBlockRenderer.c */,
9A89D4EB27F802F600FF3F80 /* Http_Web.c */,
9A89D38227F802F500FF3F80 /* Http_Worker.c */,
9A89D4A627F802F600FF3F80 /* Input.c */,
9A89D38B27F802F500FF3F80 /* Inventory.c */,
9A89D47527F802F500FF3F80 /* IsometricDrawer.c */,
9A89D4DD27F802F600FF3F80 /* Launcher.c */,
9A89D38F27F802F500FF3F80 /* LBackend.c */,
9A89D49927F802F600FF3F80 /* Lighting.c */,
9A89D47627F802F500FF3F80 /* Logger.c */,
9A89D39827F802F500FF3F80 /* LScreens.c */,
9A89D4C427F802F600FF3F80 /* LWeb.c */,
9A89D37827F802F500FF3F80 /* LWidgets.c */,
9A89D4AE27F802F600FF3F80 /* MapRenderer.c */,
9A89D48B27F802F600FF3F80 /* Menus.c */,
9A89D39627F802F500FF3F80 /* Model.c */,
9A89D4E327F802F600FF3F80 /* Options.c */,
9A89D39C27F802F500FF3F80 /* PackedCol.c */,
9A89D39B27F802F500FF3F80 /* Particle.c */,
9A89D49B27F802F600FF3F80 /* Physics.c */,
9A89D4C927F802F600FF3F80 /* PickedPosRenderer.c */,
9A89D4AA27F802F600FF3F80 /* Picking.c */,
9A89D37F27F802F500FF3F80 /* Platform_Android.c */,
9A89D39227F802F500FF3F80 /* Platform_Posix.c */,
9A89D4D027F802F600FF3F80 /* Platform_Web.c */,
9A89D4A327F802F600FF3F80 /* Platform_WinApi.c */,
9A89D48127F802F600FF3F80 /* Program.c */,
9A89D4B327F802F600FF3F80 /* Protocol.c */,
9A89D4BE27F802F600FF3F80 /* Resources.c */,
9A89D4D127F802F600FF3F80 /* Screens.c */,
9A89D4D227F802F600FF3F80 /* SelectionBox.c */,
9A89D49E27F802F600FF3F80 /* Server.c */,
9A89D4E827F802F600FF3F80 /* Stream.c */,
9A89D49227F802F600FF3F80 /* String.c */,
9A89D38427F802F500FF3F80 /* TexturePack.c */,
9A89D4AB27F802F600FF3F80 /* Utils.c */,
9A89D4E927F802F600FF3F80 /* Vectors.c */,
9A89D37C27F802F500FF3F80 /* Vorbis.c */,
9A89D4EE27F802F600FF3F80 /* Widgets.c */,
9A89D38127F802F500FF3F80 /* Window_Android.c */,
9A89D49A27F802F600FF3F80 /* Window_Carbon.c */,
9A89D4E427F802F600FF3F80 /* Window_SDL.c */,
9A89D4EC27F802F600FF3F80 /* Window_Web.c */,
9A89D4DF27F802F600FF3F80 /* Window_Win.c */,
9A89D4A127F802F600FF3F80 /* Window_X11.c */,
9A89D48727F802F600FF3F80 /* World.c */,
9A89D4E227F802F600FF3F80 /* _D3D11Shaders.h */,
9A89D4D727F802F600FF3F80 /* _GLShared.h */,
9A89D48327F802F600FF3F80 /* _GraphicsBase.h */,
9A89D38A27F802F500FF3F80 /* _HttpBase.h */,
9A89D39A27F802F500FF3F80 /* _PlatformBase.h */,
9A89D48927F802F600FF3F80 /* _WindowBase.h */,
9A89D4CD27F802F600FF3F80 /* Animations.h */,
9A89D49327F802F600FF3F80 /* Audio.h */,
9A89D37927F802F500FF3F80 /* AxisLinesRenderer.h */,
9A89D4D827F802F600FF3F80 /* Bitmap.h */,
9A89D4C327F802F600FF3F80 /* Block.h */,
9A89D4C227F802F600FF3F80 /* BlockID.h */,
9A89D49D27F802F600FF3F80 /* BlockPhysics.h */,
9A89D4BF27F802F600FF3F80 /* Builder.h */,
9A89D48027F802F600FF3F80 /* Camera.h */,
9A89D39527F802F500FF3F80 /* Chat.h */,
9A89D4A527F802F600FF3F80 /* Constants.h */,
9A89D38D27F802F500FF3F80 /* Core.h */,
9A89D4B627F802F600FF3F80 /* Deflate.h */,
9A89D4E127F802F600FF3F80 /* Drawer.h */,
9A89D4EA27F802F600FF3F80 /* Drawer2D.h */,
9A89D4B827F802F600FF3F80 /* Entity.h */,
9A89D48427F802F600FF3F80 /* EntityComponents.h */,
9A89D4D627F802F600FF3F80 /* EnvRenderer.h */,
9A89D49027F802F600FF3F80 /* Errors.h */,
9A89D47327F802F500FF3F80 /* Event.h */,
9A89D4AC27F802F600FF3F80 /* ExtMath.h */,
9A89D39327F802F500FF3F80 /* Formats.h */,
9A89D4C727F802F600FF3F80 /* Funcs.h */,
9A89D4A927F802F600FF3F80 /* Game.h */,
9A89D4E627F802F600FF3F80 /* Generator.h */,
9A89D4CE27F802F600FF3F80 /* Graphics.h */,
9A89D4A427F802F600FF3F80 /* Gui.h */,
9A89D4D927F802F600FF3F80 /* HeldBlockRenderer.h */,
9A89D39727F802F500FF3F80 /* Http.h */,
9A89D38927F802F500FF3F80 /* Input.h */,
9A89D4A227F802F600FF3F80 /* Inventory.h */,
9A89D4D527F802F600FF3F80 /* IsometricDrawer.h */,
9A89D49F27F802F600FF3F80 /* Launcher.h */,
9A89D4C527F802F600FF3F80 /* LBackend.h */,
9A89D4DE27F802F600FF3F80 /* Lighting.h */,
9A89D4D427F802F600FF3F80 /* Logger.h */,
9A89D4C027F802F600FF3F80 /* LScreens.h */,
9A89D39027F802F500FF3F80 /* LWeb.h */,
9A89D4B027F802F600FF3F80 /* LWidgets.h */,
9A89D37B27F802F500FF3F80 /* MapRenderer.h */,
9A89D4CB27F802F600FF3F80 /* Menus.h */,
9A89D4C127F802F600FF3F80 /* Model.h */,
9A89D49C27F802F600FF3F80 /* Options.h */,
9A89D4BA27F802F600FF3F80 /* PackedCol.h */,
9A89D4B927F802F600FF3F80 /* Particle.h */,
9A89D4E527F802F600FF3F80 /* Physics.h */,
9A89D48E27F802F600FF3F80 /* PickedPosRenderer.h */,
9A89D38827F802F500FF3F80 /* Picking.h */,
9A89D4E027F802F600FF3F80 /* Platform.h */,
9A89D37E27F802F500FF3F80 /* Protocol.h */,
9A89D39427F802F500FF3F80 /* Resources.h */,
9A89D47C27F802F500FF3F80 /* Screens.h */,
9A89D47D27F802F500FF3F80 /* SelectionBox.h */,
9A89D4DC27F802F600FF3F80 /* Server.h */,
9A89D49727F802F600FF3F80 /* Stream.h */,
9A89D4ED27F802F600FF3F80 /* String.h */,
9A89D4AD27F802F600FF3F80 /* TexturePack.h */,
9A89D38727F802F500FF3F80 /* Utils.h */,
9A89D49627F802F600FF3F80 /* Vectors.h */,
9A89D4B427F802F600FF3F80 /* Vorbis.h */,
9A89D49127F802F600FF3F80 /* Widgets.h */,
9A89D48F27F802F600FF3F80 /* Window.h */,
9A89D4C827F802F600FF3F80 /* World.h */,
9A89D47F27F802F600FF3F80 /* interop_ios.m */,
);
path = src;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
9A89D35627F802B100FF3F80 /* ClassiCube */ = {
isa = PBXNativeTarget;
buildConfigurationList = 9A89D36D27F802B400FF3F80 /* Build configuration list for PBXNativeTarget "ClassiCube" */;
buildPhases = (
9A89D35327F802B100FF3F80 /* Sources */,
9A89D35427F802B100FF3F80 /* Frameworks */,
9A89D35527F802B100FF3F80 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ClassiCube;
productName = CCIOS2;
productReference = 9A89D35727F802B100FF3F80 /* ClassiCube.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
9A89D34F27F802B100FF3F80 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1010;
ORGANIZATIONNAME = ClassiCube;
TargetAttributes = {
9A89D35627F802B100FF3F80 = {
CreatedOnToolsVersion = 10.1;
};
};
};
buildConfigurationList = 9A89D35227F802B100FF3F80 /* Build configuration list for PBXProject "CCIOS" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 9A89D34E27F802B100FF3F80;
productRefGroup = 9A89D35827F802B100FF3F80 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
9A89D35627F802B100FF3F80 /* ClassiCube */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
9A89D35527F802B100FF3F80 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9A62ADF5286D906F00E5E3DE /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
9A89D35327F802B100FF3F80 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9A89D57A27F802F600FF3F80 /* Graphics_D3D11.c in Sources */,
9A89D50727F802F600FF3F80 /* Particle.c in Sources */,
9A89D56C27F802F600FF3F80 /* _ftinit.c in Sources */,
9A89D58F27F802F600FF3F80 /* Audio.c in Sources */,
9A89D55227F802F600FF3F80 /* Logger.c in Sources */,
9A89D58E27F802F600FF3F80 /* Window_SDL.c in Sources */,
9A89D4FF27F802F600FF3F80 /* Gui.c in Sources */,
9A89D55027F802F600FF3F80 /* Entity.c in Sources */,
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */,
9A89D57327F802F600FF3F80 /* Utils.c in Sources */,
9A89D58427F802F600FF3F80 /* Camera.c in Sources */,
9A89D59227F802F600FF3F80 /* Http_Web.c in Sources */,
9A89D57C27F802F600FF3F80 /* Chat.c in Sources */,
9A89D50527F802F600FF3F80 /* LScreens.c in Sources */,
9A89D56727F802F600FF3F80 /* Drawer.c in Sources */,
9A89D4F327F802F600FF3F80 /* Graphics_GL2.c in Sources */,
9A89D55C27F802F600FF3F80 /* Animations.c in Sources */,
9A89D58D27F802F600FF3F80 /* Options.c in Sources */,
9A89D57927F802F600FF3F80 /* Event.c in Sources */,
9A89D55B27F802F600FF3F80 /* _type1.c in Sources */,
9A89D58127F802F600FF3F80 /* PickedPosRenderer.c in Sources */,
9A89D56027F802F600FF3F80 /* _ftbitmap.c in Sources */,
9A89D50327F802F600FF3F80 /* Platform_Posix.c in Sources */,
9A89D58027F802F600FF3F80 /* Formats.c in Sources */,
9A89D4FB27F802F600FF3F80 /* TexturePack.c in Sources */,
9A89D50827F802F600FF3F80 /* PackedCol.c in Sources */,
9A89D50227F802F600FF3F80 /* Block.c in Sources */,
9A89D57227F802F600FF3F80 /* Picking.c in Sources */,
9A89D4FC27F802F600FF3F80 /* Graphics_D3D9.c in Sources */,
9A89D59127F802F600FF3F80 /* Vectors.c in Sources */,
9A89D58A27F802F600FF3F80 /* BlockPhysics.c in Sources */,
9A89D56127F802F600FF3F80 /* Menus.c in Sources */,
9A89D4F727F802F600FF3F80 /* Game.c in Sources */,
9A89D55627F802F600FF3F80 /* EnvRenderer.c in Sources */,
9A89D58927F802F600FF3F80 /* _cff.c in Sources */,
9A89D4F627F802F600FF3F80 /* Platform_Android.c in Sources */,
9A89D4F227F802F600FF3F80 /* LWidgets.c in Sources */,
9A89D55327F802F600FF3F80 /* _psaux.c in Sources */,
9A89D50427F802F600FF3F80 /* Model.c in Sources */,
9A89D54F27F802F600FF3F80 /* Deflate.c in Sources */,
9A89D56E27F802F600FF3F80 /* Platform_WinApi.c in Sources */,
9A89D56327F802F600FF3F80 /* _autofit.c in Sources */,
9A89D55F27F802F600FF3F80 /* _sfnt.c in Sources */,
9A89D55527F802F600FF3F80 /* HeldBlockRenderer.c in Sources */,
9A89D4FD27F802F600FF3F80 /* ExtMath.c in Sources */,
9A89D56427F802F600FF3F80 /* String.c in Sources */,
9A89D57D27F802F600FF3F80 /* _smooth.c in Sources */,
9A89D50127F802F600FF3F80 /* LBackend.c in Sources */,
9A89D56827F802F600FF3F80 /* Lighting.c in Sources */,
9A89D57827F802F600FF3F80 /* Protocol.c in Sources */,
9A89D55427F802F600FF3F80 /* Bitmap.c in Sources */,
9A89D56D27F802F600FF3F80 /* Window_X11.c in Sources */,
9A89D50627F802F600FF3F80 /* Builder.c in Sources */,
9A89D55127F802F600FF3F80 /* IsometricDrawer.c in Sources */,
9A89D57B27F802F600FF3F80 /* _ftglyph.c in Sources */,
9A89D55827F802F600FF3F80 /* Graphics_GL1.c in Sources */,
9A89D59427F802F600FF3F80 /* Widgets.c in Sources */,
9A89D56927F802F600FF3F80 /* Window_Carbon.c in Sources */,
9A89D55927F802F600FF3F80 /* interop_ios.m in Sources */,
9A89D55A27F802F600FF3F80 /* Program.c in Sources */,
9A89D58527F802F600FF3F80 /* Platform_Web.c in Sources */,
9A89D4F527F802F600FF3F80 /* _ftsynth.c in Sources */,
9A89D55D27F802F600FF3F80 /* _psmodule.c in Sources */,
9A89D56F27F802F600FF3F80 /* Input.c in Sources */,
9A89D4F827F802F600FF3F80 /* Window_Android.c in Sources */,
9A89D57E27F802F600FF3F80 /* Resources.c in Sources */,
9A89D4F427F802F600FF3F80 /* Vorbis.c in Sources */,
9A89D56227F802F600FF3F80 /* _ftbase.c in Sources */,
9A89D58C27F802F600FF3F80 /* Window_Win.c in Sources */,
9A89D56B27F802F600FF3F80 /* Server.c in Sources */,
9A89D50027F802F600FF3F80 /* _truetype.c in Sources */,
9A89D57F27F802F600FF3F80 /* LWeb.c in Sources */,
9A89D55727F802F600FF3F80 /* Makefile in Sources */,
9A89D59327F802F600FF3F80 /* Window_Web.c in Sources */,
9A89D56627F802F600FF3F80 /* Drawer2D.c in Sources */,
9A89D57427F802F600FF3F80 /* MapRenderer.c in Sources */,
9A89D57627F802F600FF3F80 /* _pshinter.c in Sources */,
9A89D56A27F802F600FF3F80 /* Physics.c in Sources */,
9A89D58727F802F600FF3F80 /* SelectionBox.c in Sources */,
9A89D4FE27F802F600FF3F80 /* Inventory.c in Sources */,
9A89D56527F802F600FF3F80 /* Generator.c in Sources */,
9A89D57527F802F600FF3F80 /* AxisLinesRenderer.c in Sources */,
9A89D55E27F802F600FF3F80 /* World.c in Sources */,
9A89D58627F802F600FF3F80 /* Screens.c in Sources */,
9A89D4F927F802F600FF3F80 /* Http_Worker.c in Sources */,
9A89D58B27F802F600FF3F80 /* Launcher.c in Sources */,
9A89D59027F802F600FF3F80 /* Stream.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
9A89D36B27F802B400FF3F80 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
};
name = Debug;
};
9A89D36C27F802B400FF3F80 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
9A89D36E27F802B400FF3F80 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.classicube.client.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
9A89D36F27F802B400FF3F80 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.classicube.client.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
9A89D35227F802B100FF3F80 /* Build configuration list for PBXProject "CCIOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9A89D36B27F802B400FF3F80 /* Debug */,
9A89D36C27F802B400FF3F80 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
9A89D36D27F802B400FF3F80 /* Build configuration list for PBXNativeTarget "ClassiCube" */ = {
isa = XCConfigurationList;
buildConfigurations = (
9A89D36E27F802B400FF3F80 /* Debug */,
9A89D36F27F802B400FF3F80 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 9A89D34F27F802B100FF3F80 /* Project object */;
}

View File

@ -1,108 +0,0 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"filename" : "CC_80.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"filename" : "CC_120.png",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"filename" : "CC_120.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"filename" : "CC_180.png",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"filename" : "CC_40.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"filename" : "CC_80.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"filename" : "CC_76.png",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"filename" : "CC_152.png",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"filename" : "CC_167.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "CC_1024.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -1,4 +1,4 @@
Copyright (c) 2014 - 2022, UnknownShadow200
Copyright (c) 2014 - 2024, UnknownShadow200
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@ -150,6 +150,59 @@ SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
==============================================================================
BearSSL license
==============================================================================
Copyright (c) 2016 Thomas Pornin <pornin@bolet.org>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
==============================================================================
BearSSL license
==================
Copyright (c) 2016 Thomas Pornin <pornin@bolet.org>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
FreeType license
==================
The FreeType Project LICENSE

130
misc/32x/32x.h Normal file
View File

@ -0,0 +1,130 @@
#ifndef __32X_H__
#define __32X_H__
/* Create a 5:5:5 RGB color */
#define COLOR(r,g,b) (((r)&0x1F)|((g)&0x1F)<<5|((b)&0x1F)<<10)
#define MARS_CRAM (*(volatile unsigned short *)0x20004200)
#define MARS_FRAMEBUFFER (*(volatile unsigned short *)0x24000000)
#define MARS_OVERWRITE_IMG (*(volatile unsigned short *)0x24020000)
#define MARS_SDRAM (*(volatile unsigned short *)0x26000000)
#define MARS_SYS_INTMSK (*(volatile unsigned short *)0x20004000)
#define MARS_SYS_DMACTR (*(volatile unsigned short *)0x20004006)
#define MARS_SYS_DMASAR (*(volatile unsigned long *)0x20004008)
#define MARS_SYS_DMADAR (*(volatile unsigned long *)0x2000400C)
#define MARS_SYS_DMALEN (*(volatile unsigned short *)0x20004010)
#define MARS_SYS_DMAFIFO (*(volatile unsigned short *)0x20004012)
#define MARS_SYS_VRESI_CLR (*(volatile unsigned short *)0x20004014)
#define MARS_SYS_VINT_CLR (*(volatile unsigned short *)0x20004016)
#define MARS_SYS_HINT_CLR (*(volatile unsigned short *)0x20004018)
#define MARS_SYS_CMDI_CLR (*(volatile unsigned short *)0x2000401A)
#define MARS_SYS_PWMI_CLR (*(volatile unsigned short *)0x2000401C)
#define MARS_SYS_COMM0 (*(volatile unsigned short *)0x20004020) /* Master SH2 communication */
#define MARS_SYS_COMM2 (*(volatile unsigned short *)0x20004022)
#define MARS_SYS_COMM4 (*(volatile unsigned short *)0x20004024) /* Slave SH2 communication */
#define MARS_SYS_COMM6 (*(volatile unsigned short *)0x20004026)
#define MARS_SYS_COMM8 (*(volatile unsigned short *)0x20004028) /* controller 1 current value */
#define MARS_SYS_COMM10 (*(volatile unsigned short *)0x2000402A) /* controller 2 current value */
#define MARS_SYS_COMM12 (*(volatile unsigned long *)0x2000402C) /* vcount current value */
#define MARS_PWM_CTRL (*(volatile unsigned short *)0x20004030)
#define MARS_PWM_CYCLE (*(volatile unsigned short *)0x20004032)
#define MARS_PWM_LEFT (*(volatile unsigned short *)0x20004034)
#define MARS_PWM_RIGHT (*(volatile unsigned short *)0x20004036)
#define MARS_PWM_MONO (*(volatile unsigned short *)0x20004038)
#define MARS_VDP_DISPMODE (*(volatile unsigned short *)0x20004100)
#define MARS_VDP_FILLEN (*(volatile unsigned short *)0x20004104)
#define MARS_VDP_FILADR (*(volatile unsigned short *)0x20004106)
#define MARS_VDP_FILDAT (*(volatile unsigned short *)0x20004108)
#define MARS_VDP_FBCTL (*(volatile unsigned short *)0x2000410A)
#define MARS_SH2_ACCESS_VDP 0x8000
#define MARS_68K_ACCESS_VDP 0x0000
#define MARS_PAL_FORMAT 0x0000
#define MARS_NTSC_FORMAT 0x8000
#define MARS_VDP_PRIO_68K 0x0000
#define MARS_VDP_PRIO_32X 0x0080
#define MARS_224_LINES 0x0000
#define MARS_240_LINES 0x0040
#define MARS_VDP_MODE_OFF 0x0000
#define MARS_VDP_MODE_256 0x0001
#define MARS_VDP_MODE_32K 0x0002
#define MARS_VDP_MODE_RLE 0x0003
#define MARS_VDP_VBLK 0x8000
#define MARS_VDP_HBLK 0x4000
#define MARS_VDP_PEN 0x2000
#define MARS_VDP_FEN 0x0002
#define MARS_VDP_FS 0x0001
#define SH2_CCTL_CP 0x10
#define SH2_CCTL_TW 0x08
#define SH2_CCTL_CE 0x01
#define SH2_FRT_TIER (*(volatile unsigned char *)0xFFFFFE10)
#define SH2_FRT_FTCSR (*(volatile unsigned char *)0xFFFFFE11)
#define SH2_FRT_FRCH (*(volatile unsigned char *)0xFFFFFE12)
#define SH2_FRT_FRCL (*(volatile unsigned char *)0xFFFFFE13)
#define SH2_FRT_OCRH (*(volatile unsigned char *)0xFFFFFE14)
#define SH2_FRT_OCRL (*(volatile unsigned char *)0xFFFFFE15)
#define SH2_FRT_TCR (*(volatile unsigned char *)0xFFFFFE16)
#define SH2_FRT_TOCR (*(volatile unsigned char *)0xFFFFFE17)
#define SH2_FRT_ICRH (*(volatile unsigned char *)0xFFFFFE18)
#define SH2_FRT_ICRL (*(volatile unsigned char *)0xFFFFFE19)
#define SH2_DMA_SAR0 (*(volatile unsigned long *)0xFFFFFF80)
#define SH2_DMA_DAR0 (*(volatile unsigned long *)0xFFFFFF84)
#define SH2_DMA_TCR0 (*(volatile unsigned long *)0xFFFFFF88)
#define SH2_DMA_CHCR0 (*(volatile unsigned long *)0xFFFFFF8C)
#define SH2_DMA_VCR0 (*(volatile unsigned long *)0xFFFFFFA0)
#define SH2_DMA_DRCR0 (*(volatile unsigned char *)0xFFFFFE71)
#define SH2_DMA_SAR1 (*(volatile unsigned long *)0xFFFFFF90)
#define SH2_DMA_DAR1 (*(volatile unsigned long *)0xFFFFFF94)
#define SH2_DMA_TCR1 (*(volatile unsigned long *)0xFFFFFF98)
#define SH2_DMA_CHCR1 (*(volatile unsigned long *)0xFFFFFF9C)
#define SH2_DMA_VCR1 (*(volatile unsigned long *)0xFFFFFFA8)
#define SH2_DMA_DRCR1 (*(volatile unsigned char *)0xFFFFFE72)
#define SH2_DMA_DMAOR (*(volatile unsigned long *)0xFFFFFFB0)
#define SH2_INT_IPRA (*(volatile unsigned short *)0xFFFFFEE2)
#define SEGA_CTRL_UP 0x0001
#define SEGA_CTRL_DOWN 0x0002
#define SEGA_CTRL_LEFT 0x0004
#define SEGA_CTRL_RIGHT 0x0008
#define SEGA_CTRL_B 0x0010
#define SEGA_CTRL_C 0x0020
#define SEGA_CTRL_A 0x0040
#define SEGA_CTRL_START 0x0080
#define SEGA_CTRL_Z 0x0100
#define SEGA_CTRL_Y 0x0200
#define SEGA_CTRL_X 0x0400
#define SEGA_CTRL_MODE 0x0800
#define SEGA_CTRL_TYPE 0xF000
#define SEGA_CTRL_THREE 0x0000
#define SEGA_CTRL_SIX 0x1000
#define SEGA_CTRL_NONE 0xF000
#ifdef __cplusplus
extern "C" {
#endif
/* global functions in sh2_crt0.s */
extern void fast_memcpy(void *dst, void *src, int len);
extern void CacheControl(int mode);
extern void CacheClearLine(void* ptr);
#ifdef __cplusplus
}
#endif
#endif

119
misc/32x/Makefile Normal file
View File

@ -0,0 +1,119 @@
ifdef $(GENDEV)
ROOTDIR = $(GENDEV)
else
ROOTDIR = /opt/toolchains/sega
endif
.SUFFIXES:
#---------------------------------------------------------------------------------
# Configurable options
#---------------------------------------------------------------------------------
TARGET = ClassiCube-32x
BUILD_DIR = build/32x
SOURCE_DIRS = src src/32x misc/32x
#---------------------------------------------------------------------------------
# Compilable files
#---------------------------------------------------------------------------------
C_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
S_FILES = misc/32x/sh2_crt0.s
OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.s=%.o)))
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
LDSCRIPTSDIR = $(ROOTDIR)/ldscripts
LIBS = $(LIBPATH) -lc -lgcc -lgcc-Os-4-200 -lnosys
LIBPATH = -L$(ROOTDIR)/sh-elf/lib -L$(ROOTDIR)/sh-elf/lib/gcc/sh-elf/4.6.2 -L$(ROOTDIR)/sh-elf/sh-elf/lib
INCPATH = -I$(ROOTDIR)/sh-elf/include -I$(ROOTDIR)/sh-elf/sh-elf/include
SHCCFLAGS = -m2 -mb -Ofast -Wall -g -c -fomit-frame-pointer -DPLAT_32X -ffunction-sections -fdata-sections
SHHWFLAGS = -m2 -mb -O1 -Wall -g -c -fomit-frame-pointer
SHLDFLAGS = -T $(LDSCRIPTSDIR)/mars.ld -nostdlib -Wl,--gc-sections
SHASFLAGS = --big
MDLDFLAGS = -T $(LDSCRIPTSDIR)/md.ld --oformat binary
MDASFLAGS = -m68000 --register-prefix-optional
#---------------------------------------------------------------------------------
# Compiler tools
#---------------------------------------------------------------------------------
SHPREFIX = $(ROOTDIR)/sh-elf/bin/sh-elf-
SHCC = $(SHPREFIX)gcc
SHAS = $(SHPREFIX)as
SHLD = $(SHPREFIX)ld
SHOBJC = $(SHPREFIX)objcopy
MDPREFIX = $(ROOTDIR)/m68k-elf/bin/m68k-elf-
MDAS = $(MDPREFIX)as
MDLD = $(MDPREFIX)ld
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
all: $(BUILD_DIR) $(BUILD_DIR)/m68k_crt0.bin $(BUILD_DIR)/m68k_crt1.bin $(TARGET).bin
clean:
rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/*.bin $(TARGET).bin $(TARGET).elf
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#---------------------------------------------------------------------------------
# binary generation
#---------------------------------------------------------------------------------
$(TARGET).bin: $(TARGET).elf
$(SHOBJC) -O binary $< $(BUILD_DIR)/temp.bin
dd if=$(BUILD_DIR)/temp.bin of=$@ bs=64K conv=sync
$(TARGET).elf: $(OBJS)
$(SHCC) $(SHLDFLAGS) $(OBJS) $(LIBS) -o $(TARGET).elf
$(BUILD_DIR)/m68k_crt0.o: misc/32x/m68k_crt0.s
$(MDAS) $(MDASFLAGS) $< -o $@
$(BUILD_DIR)/m68k_crt0.bin: $(BUILD_DIR)/m68k_crt0.o
$(MDLD) $(MDLDFLAGS) $< -o $@
$(BUILD_DIR)/m68k_crt1.o: misc/32x/m68k_crt1.s
$(MDAS) $(MDASFLAGS) $< -o $@
$(BUILD_DIR)/m68k_crt1.bin: $(BUILD_DIR)/m68k_crt1.o
$(MDLD) $(MDLDFLAGS) $< -o $@
#---------------------------------------------------------------------------------
# object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o: src/%.c
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
$(BUILD_DIR)/%.o: src/32x/%.c
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
$(BUILD_DIR)/%.o: misc/32x/%.c
$(SHCC) $(SHCCFLAGS) $(INCPATH) $(DEPFLAGS) $< -o $@
$(BUILD_DIR)/%.o: misc/32x/%.s
$(SHAS) $(SHASFLAGS) $(INCPATH) $< -o $@
#---------------------------------------------------------------------------------
# Dependency tracking
#---------------------------------------------------------------------------------
$(DEPFILES):
include $(wildcard $(DEPFILES))

256
misc/32x/hw_32x.c Normal file
View File

@ -0,0 +1,256 @@
/*
* Licensed under the BSD license
*
* debug_32x.c - Debug screen functions.
*
* Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
* Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
*
* Altered for 32X by Chilly Willy
*/
#include "32x.h"
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
static int init = 0;
static unsigned short fgc = 0, bgc = 0;
static unsigned char fgs = 0, bgs = 0;
static unsigned short currentFB = 0;
void Hw32xSetFGColor(int s, int r, int g, int b)
{
volatile unsigned short *palette = &MARS_CRAM;
fgs = s;
fgc = COLOR(r, g, b);
palette[fgs] = fgc;
}
void Hw32xSetBGColor(int s, int r, int g, int b)
{
volatile unsigned short *palette = &MARS_CRAM;
bgs = s;
bgc = COLOR(r, g, b);
palette[bgs] = bgc;
}
void Hw32xInit(int vmode, int lineskip)
{
volatile unsigned short *frameBuffer16 = &MARS_FRAMEBUFFER;
int i;
// Wait for the SH2 to gain access to the VDP
while ((MARS_SYS_INTMSK & MARS_SH2_ACCESS_VDP) == 0) ;
if (vmode == MARS_VDP_MODE_32K)
{
// Set 16-bit direct mode, 224 lines
MARS_VDP_DISPMODE = MARS_224_LINES | MARS_VDP_MODE_32K;
// init both framebuffers
// Flip the framebuffer selection bit and wait for it to take effect
MARS_VDP_FBCTL = currentFB ^ 1;
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
currentFB ^= 1;
// rewrite line table
for (i=0; i<224/(lineskip+1); i++)
{
if (lineskip)
{
int j = lineskip + 1;
while (j)
{
frameBuffer16[i*(lineskip+1) + (lineskip + 1 - j)] = i*320 + 0x100; /* word offset of line */
j--;
}
}
else
{
if (i<200)
frameBuffer16[i] = i*320 + 0x100; /* word offset of line */
else
frameBuffer16[i] = 200*320 + 0x100; /* word offset of line */
}
}
// clear screen
for (i=0x100; i<0x10000; i++)
frameBuffer16[i] = 0;
// Flip the framebuffer selection bit and wait for it to take effect
MARS_VDP_FBCTL = currentFB ^ 1;
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
currentFB ^= 1;
// rewrite line table
for (i=0; i<224/(lineskip+1); i++)
{
if (lineskip)
{
int j = lineskip + 1;
while (j)
{
frameBuffer16[i*(lineskip+1) + (lineskip + 1 - j)] = i*320 + 0x100; /* word offset of line */
j--;
}
}
else
{
if (i<200)
frameBuffer16[i] = i*320 + 0x100; /* word offset of line */
else
frameBuffer16[i] = 200*320 + 0x100; /* word offset of line */
}
}
// clear screen
for (i=0x100; i<0x10000; i++)
frameBuffer16[i] = 0;
}
Hw32xSetFGColor(255,31,31,31);
Hw32xSetBGColor(0,0,0,0);
init = vmode;
}
void Hw32xScreenClear()
{
int i;
int l = (init == MARS_VDP_MODE_256) ? 320*224/2 + 0x100 : 320*200 + 0x100;
volatile unsigned short *frameBuffer16 = &MARS_FRAMEBUFFER;
// clear screen
for (i=0x100; i<l; i++)
frameBuffer16[i] = 0;
// Flip the framebuffer selection bit and wait for it to take effect
MARS_VDP_FBCTL = currentFB ^ 1;
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
currentFB ^= 1;
// clear screen
for (i=0x100; i<l; i++)
frameBuffer16[i] = 0;
Hw32xSetFGColor(255,31,31,31);
Hw32xSetBGColor(0,0,0,0);
}
void Hw32xDelay(int ticks)
{
unsigned long ct = MARS_SYS_COMM12 + ticks;
while (MARS_SYS_COMM12 < ct) ;
}
void Hw32xScreenFlip(int wait)
{
// Flip the framebuffer selection bit
MARS_VDP_FBCTL = currentFB ^ 1;
if (wait)
{
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
currentFB ^= 1;
}
}
void Hw32xFlipWait()
{
while ((MARS_VDP_FBCTL & MARS_VDP_FS) == currentFB) ;
currentFB ^= 1;
}
// MD Command support code ---------------------------------------------
unsigned short HwMdReadPad(int port)
{
if (port == 0)
return MARS_SYS_COMM8;
else if (port == 1)
return MARS_SYS_COMM10;
else
return SEGA_CTRL_NONE;
}
unsigned char HwMdReadSram(unsigned short offset)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM2 = offset;
MARS_SYS_COMM0 = 0x0100; // Read SRAM
while (MARS_SYS_COMM0) ;
return MARS_SYS_COMM2 & 0x00FF;
}
void HwMdWriteSram(unsigned char byte, unsigned short offset)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM2 = offset;
MARS_SYS_COMM0 = 0x0200 | byte; // Write SRAM
while (MARS_SYS_COMM0) ;
}
int HwMdReadMouse(int port)
{
unsigned int mouse1, mouse2;
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM0 = 0x0300|port; // tells 68000 to read mouse
while (MARS_SYS_COMM0 == (0x0300|port)) ; // wait for mouse value
mouse1 = MARS_SYS_COMM0;
mouse2 = MARS_SYS_COMM2;
MARS_SYS_COMM0 = 0; // tells 68000 we got the mouse value
return (int)((mouse1 << 16) | mouse2);
}
void HwMdClearScreen(void)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM0 = 0x0400; // Clear Screen (Name Table B)
while (MARS_SYS_COMM0) ;
}
void HwMdSetOffset(unsigned short offset)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM2 = offset;
MARS_SYS_COMM0 = 0x0500; // Set offset (into either Name Table B or VRAM)
while (MARS_SYS_COMM0) ;
}
void HwMdSetNTable(unsigned short word)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM2 = word;
MARS_SYS_COMM0 = 0x0600; // Set word at offset in Name Table B
while (MARS_SYS_COMM0) ;
}
void HwMdSetVram(unsigned short word)
{
while (MARS_SYS_COMM0) ; // wait until 68000 has responded to any earlier requests
MARS_SYS_COMM2 = word;
MARS_SYS_COMM0 = 0x0700; // Set word at offset in VRAM
while (MARS_SYS_COMM0) ;
}
void HwMdPuts(char *str, int color, int x, int y)
{
HwMdSetOffset(((y<<6) | x) << 1);
while (*str)
HwMdSetNTable(((*str++ - 0x20) & 0xFF) | color);
}
void HwMdPutc(char chr, int color, int x, int y)
{
HwMdSetOffset(((y<<6) | x) << 1);
HwMdSetNTable(((chr - 0x20) & 0xFF) | color);
}
// Slave SH2 support code ----------------------------------------------
void slave(void)
{
while (1) ;
}

30
misc/32x/hw_32x.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef HW_32X_H
#define HW_32X_H
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
extern void Hw32xSetFGColor(int s, int r, int g, int b);
extern void Hw32xSetBGColor(int s, int r, int g, int b);
extern void Hw32xInit(int vmode, int lineskip);
extern int Hw32xScreenGetX();
extern int Hw32xScreenGetY();
extern void Hw32xScreenSetXY(int x, int y);
extern void Hw32xScreenClear();
extern void Hw32xDelay(int ticks);
extern void Hw32xScreenFlip(int wait);
extern void Hw32xFlipWait();
extern unsigned short HwMdReadPad(int port);
extern unsigned char HwMdReadSram(unsigned short offset);
extern void HwMdWriteSram(unsigned char byte, unsigned short offset);
extern int HwMdReadMouse(int port);
extern void HwMdClearScreen(void);
extern void HwMdSetOffset(unsigned short offset);
extern void HwMdSetNTable(unsigned short word);
extern void HwMdSetVram(unsigned short word);
extern void HwMdPuts(char *str, int color, int x, int y);
extern void HwMdPutc(char chr, int color, int x, int y);
#endif

98
misc/32x/m68k_crt0.s Normal file
View File

@ -0,0 +1,98 @@
| SEGA 32X support code for the 68000
| by Chilly Willy
| First part of rom header
.text
| Initial exception vectors. When the console is first turned on, it is
| in MegaDrive mode. All vectors just point to the code to start up the
| Mars adapter. After the adapter is enabled, none of these vectors will
| appear as the adapter uses its own vector table to route exceptions to
| the jump table. 0x3F0 is where the 68000 starts at for the 32X.
.long 0x01000000,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
.long 0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0,0x000003F0
| Standard MegaDrive ROM header at 0x100
.ascii "SEGA 32X Example" /* SEGA must be the first four chars for TMSS */
.ascii "(C)2024 "
.ascii "ClassiCube 32X " /* export name */
.ascii " "
.ascii " "
.ascii "ClassiCube 32X " /* domestic (Japanese) name */
.ascii " "
.ascii " "
.ascii "GM MK-0000 -00"
.word 0x0000 /* checksum - not needed */
.ascii "J6 "
.long 0x00000000,0x0007FFFF /* ROM start, end */
.long 0x00FF0000,0x00FFFFFF /* RAM start, end */
.ifdef HAS_SAVE_RAM
.ascii "RA" /* External RAM */
.byte 0xF8 /* don't clear + odd bytes */
.byte 0x20 /* SRAM */
.long 0x00200001,0x0020FFFF /* SRAM start, end */
.else
.ascii " " /* no SRAM */
.endif
.ascii " "
.ascii " "
.ifdef MYTH_HOMEBREW
.ascii "MYTH3900" /* memo indicates Myth native executable */
.else
.ascii " " /* memo */
.endif
.ascii " "
.ascii " "
.ascii "F " /* enable any hardware configuration */
| Mars exception vector jump table at 0x200
jmp 0x880800.l /* reset = hot start */
jsr 0x880806.l /* EX_BusError */
jsr 0x880806.l /* EX_AddrError */
jsr 0x880806.l /* EX_IllInstr */
jsr 0x880806.l /* EX_DivByZero */
jsr 0x880806.l /* EX_CHK */
jsr 0x880806.l /* EX_TrapV */
jsr 0x880806.l /* EX_Priviledge */
jsr 0x880806.l /* EX_Trace */
jsr 0x880806.l /* EX_LineA */
jsr 0x880806.l /* EX_LineF */
.space 72 /* reserved */
jsr 0x880806.l /* EX_Spurious */
jsr 0x880806.l /* EX_Level1 */
jsr 0x880806.l /* EX_Level2 */
jsr 0x880806.l /* EX_Level3 */
jmp 0x88080C.l /* EX_Level4 HBlank */
jsr 0x880806.l /* EX_Level5 */
jmp 0x880812.l /* EX_Level6 VBlank */
jsr 0x880806.l /* EX_Level7 */
jsr 0x880806.l /* EX_Trap0 */
jsr 0x880806.l /* EX_Trap1 */
jsr 0x880806.l /* EX_Trap2 */
jsr 0x880806.l /* EX_Trap3 */
jsr 0x880806.l /* EX_Trap4 */
jsr 0x880806.l /* EX_Trap5 */
jsr 0x880806.l /* EX_Trap6 */
jsr 0x880806.l /* EX_Trap7 */
jsr 0x880806.l /* EX_Trap8 */
jsr 0x880806.l /* EX_Trap9 */
jsr 0x880806.l /* EX_TrapA */
jsr 0x880806.l /* EX_TrapB */
jsr 0x880806.l /* EX_TrapC */
jsr 0x880806.l /* EX_TrapD */
jsr 0x880806.l /* EX_TrapE */
jsr 0x880806.l /* EX_TrapF */
.space 166 /* reserved */

1846
misc/32x/m68k_crt1.s Normal file

File diff suppressed because it is too large Load Diff

727
misc/32x/sh2_crt0.s Normal file
View File

@ -0,0 +1,727 @@
! SEGA 32X support code for SH2
! by Chilly Willy
! Rom header and SH2 init/exception code - must be first in object list
.text
! Standard MD Header at 0x000
.incbin "build/32x/m68k_crt0.bin", 0, 0x3C0
! Standard Mars Header at 0x3C0
.ascii "ClassiCube 32X " /* module name (16 chars) */
.long 0x00000000 /* version */
.long __text_end-0x02000000 /* Source (in ROM) */
.long 0x00000000 /* Destination (in SDRAM) */
.long __data_size /* Size */
.long 0x06000240 /* Master SH2 Jump */
.long 0x06000244 /* Slave SH2 Jump */
.long 0x06000000 /* Master SH2 VBR */
.long 0x06000120 /* Slave SH2 VBR */
! Standard MD startup code at 0x3F0
.incbin "build/32x/m68k_crt1.bin"
.data
! Master Vector Base Table at 0x06000000
.long mstart /* 0, Cold Start PC */
.long 0x0603FC00 /* 1, Cold Start SP */
.long mstart /* 2, Manual Reset PC */
.long 0x0603FC00 /* 3, Manual Reset SP */
.long main_err /* 4, Illegal instruction */
.long _wdt_handler/* 5, reserved - repurposed for WDT */
.long main_err /* 6, Invalid slot instruction */
.long 0x20100400 /* 7, reserved */
.long 0x20100420 /* 8, reserved */
.long main_err /* 9, CPU address error */
.long main_err /* 10, DMA address error */
.long main_err /* 11, NMI vector */
.long main_err /* 12, User break vector */
.space 76 /* reserved */
.long main_err /* TRAPA #32 */
.long main_err /* TRAPA #33 */
.long main_err /* TRAPA #34 */
.long main_err /* TRAPA #35 */
.long main_err /* TRAPA #36 */
.long main_err /* TRAPA #37 */
.long main_err /* TRAPA #38 */
.long main_err /* TRAPA #39 */
.long main_err /* TRAPA #40 */
.long main_err /* TRAPA #41 */
.long main_err /* TRAPA #42 */
.long main_err /* TRAPA #43 */
.long main_err /* TRAPA #44 */
.long main_err /* TRAPA #45 */
.long main_err /* TRAPA #46 */
.long main_err /* TRAPA #47 */
.long main_err /* TRAPA #48 */
.long main_err /* TRAPA #49 */
.long main_err /* TRAPA #50 */
.long main_err /* TRAPA #51 */
.long main_err /* TRAPA #52 */
.long main_err /* TRAPA #53 */
.long main_err /* TRAPA #54 */
.long main_err /* TRAPA #55 */
.long main_err /* TRAPA #56 */
.long main_err /* TRAPA #57 */
.long main_err /* TRAPA #58 */
.long main_err /* TRAPA #59 */
.long main_err /* TRAPA #60 */
.long main_err /* TRAPA #61 */
.long main_err /* TRAPA #62 */
.long main_err /* TRAPA #63 */
.long main_irq /* Level 1 IRQ */
.long main_irq /* Level 2 & 3 IRQ's */
.long main_irq /* Level 4 & 5 IRQ's */
.long main_irq /* PWM interupt */
.long main_irq /* Command interupt */
.long main_irq /* H Blank interupt */
.long main_irq /* V Blank interupt */
.long main_irq /* Reset Button */
! Slave Vector Base Table at 0x06000120
.long sstart /* Cold Start PC */
.long 0x06040000 /* Cold Start SP */
.long sstart /* Manual Reset PC */
.long 0x06040000 /* Manual Reset SP */
.long slav_err /* Illegal instruction */
.long 0x00000000 /* reserved */
.long slav_err /* Invalid slot instruction */
.long 0x20100400 /* reserved */
.long 0x20100420 /* reserved */
.long slav_err /* CPU address error */
.long slav_err /* DMA address error */
.long slav_err /* NMI vector */
.long slav_err /* User break vector */
.space 76 /* reserved */
.long slav_err /* TRAPA #32 */
.long slav_err /* TRAPA #33 */
.long slav_err /* TRAPA #34 */
.long slav_err /* TRAPA #35 */
.long slav_err /* TRAPA #36 */
.long slav_err /* TRAPA #37 */
.long slav_err /* TRAPA #38 */
.long slav_err /* TRAPA #39 */
.long slav_err /* TRAPA #40 */
.long slav_err /* TRAPA #41 */
.long slav_err /* TRAPA #42 */
.long slav_err /* TRAPA #43 */
.long slav_err /* TRAPA #44 */
.long slav_err /* TRAPA #45 */
.long slav_err /* TRAPA #46 */
.long slav_err /* TRAPA #47 */
.long slav_err /* TRAPA #48 */
.long slav_err /* TRAPA #49 */
.long slav_err /* TRAPA #50 */
.long slav_err /* TRAPA #51 */
.long slav_err /* TRAPA #52 */
.long slav_err /* TRAPA #53 */
.long slav_err /* TRAPA #54 */
.long slav_err /* TRAPA #55 */
.long slav_err /* TRAPA #56 */
.long slav_err /* TRAPA #57 */
.long slav_err /* TRAPA #58 */
.long slav_err /* TRAPA #59 */
.long slav_err /* TRAPA #60 */
.long slav_err /* TRAPA #61 */
.long slav_err /* TRAPA #62 */
.long slav_err /* TRAPA #63 */
.long slav_irq /* Level 1 IRQ */
.long slav_irq /* Level 2 & 3 IRQ's */
.long slav_irq /* Level 4 & 5 IRQ's */
.long slav_irq /* PWM interupt */
.long slav_irq /* Command interupt */
.long slav_irq /* H Blank interupt */
.long slav_irq /* V Blank interupt */
.long slav_irq /* Reset Button */
! The main SH2 starts here at 0x06000240
mstart:
bra mcont
nop
! The slave SH2 starts here at 0x06000244
sstart:
bra scont
nop
! Each section of code below has its own data table so that the code
! can be extended without worrying about the offsets becoming too big.
! This results in duplicate entries, but not so many that we care. :)
mcont:
! clear interrupt flags
mov.l _master_int_clr,r1
mov.w r0,@-r1 /* PWM INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* CMD INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* H INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* V INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* VRES INT clear */
mov.w r0,@r1
mov.l _master_stk,r15
! purge cache and turn it off
mov.l _master_cctl,r0
mov #0x10,r1
mov.b r1,@r0
! clear bss
mov #0,r0
mov.l _master_bss_start,r1
mov.l _master_bss_end,r2
0:
mov.l r0,@r1
cmp/eq r1,r2
bf/s 0b
add #4,r1
! wait for 68000 to finish init
mov.l _master_sts,r0
mov.l _master_ok,r1
1:
mov.l @r0,r2
nop
nop
cmp/eq r1,r2
bt 1b
! do all initializers
mov.l _master_do_init,r0
jsr @r0
nop
! let Slave SH2 run
mov #0,r1
mov.l r1,@(4,r0) /* clear slave status */
mov #0x80,r0
mov.l _master_adapter,r1
mov.b r0,@r1 /* set FM */
mov #0x00,r0
mov.b r0,@(1,r1) /* set int enables */
mov #0x20,r0
ldc r0,sr /* allow ints */
! purge cache, turn it on, and run main()
mov.l _master_cctl,r0
mov #0x11,r1
mov.b r1,@r0
mov.l _master_go,r0
jsr @r0
nop
! do all finishers
mov.l _master_do_fini,r0
jsr @r0
nop
2:
bra 2b
nop
.align 2
_master_int_clr:
.long 0x2000401E /* one word passed last int clr reg */
_master_stk:
.long 0x0603FC00 /* Cold Start SP */
_master_sts:
.long 0x20004020
_master_ok:
.ascii "M_OK"
_master_adapter:
.long 0x20004000
_master_cctl:
.long 0xFFFFFE92
_master_go:
.long _main
_master_bss_start:
.long __bss_start
_master_bss_end:
.long __bss_end
_master_do_init:
.long __INIT_SECTION__
_master_do_fini:
.long __FINI_SECTION__
scont:
! clear interrupt flags
mov.l _slave_int_clr,r1
mov.w r0,@-r1 /* PWM INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* CMD INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* H INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* V INT clear */
mov.w r0,@r1
mov.w r0,@-r1 /* VRES INT clear */
mov.w r0,@r1
mov.l _slave_stk,r15
! wait for Master SH2 and 68000 to finish init
mov.l _slave_sts,r0
mov.l _slave_ok,r1
1:
mov.l @r0,r2
nop
nop
cmp/eq r1,r2
bt 1b
mov.l _slave_adapter,r1
mov #0x00,r0
mov.b r0,@(1,r1) /* set int enables (different from master despite same address!) */
mov #0x20,r0
ldc r0,sr /* allow ints */
! purge cache, turn it on, and run slave()
mov.l _slave_cctl,r0
mov #0x11,r1
mov.b r1,@r0
mov.l _slave_go,r0
jmp @r0
nop
.align 2
_slave_int_clr:
.long 0x2000401E /* one word passed last int clr reg */
_slave_stk:
.long 0x06040000 /* Cold Start SP */
_slave_sts:
.long 0x20004024
_slave_ok:
.ascii "S_OK"
_slave_adapter:
.long 0x20004000
_slave_cctl:
.long 0xFFFFFE92
_slave_go:
.long _slave
! Master exception handler
main_err:
rte
nop
! Master IRQ handler
main_irq:
mov.l r0,@-r15
stc sr,r0 /* SR holds IRQ level in I3-I0 */
shlr2 r0
and #0x38,r0
cmp/eq #0x28,r0
bt main_h_irq
cmp/eq #0x18,r0
bt main_pwm_irq
cmp/eq #0x30,r0
bt main_v_irq
cmp/eq #0x20,r0
bt main_cmd_irq
cmp/eq #0x38,r0
bt main_vres_irq
mov.l @r15+,r0
rte
nop
main_v_irq:
mov.l r1,@-r15
mov.l mvi_mars_adapter,r1
mov.w r0,@(0x16,r1) /* clear V IRQ */
nop
nop
nop
nop
! handle V IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
mvi_mars_adapter:
.long 0x20004000
main_h_irq:
mov.l r1,@-r15
mov.l mhi_mars_adapter,r1
mov.w r0,@(0x18,r1) /* clear H IRQ */
nop
nop
nop
nop
! handle H IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
mhi_mars_adapter:
.long 0x20004000
main_cmd_irq:
mov.l r1,@-r15
mov.l mci_mars_adapter,r1
mov.w r0,@(0x1A,r1) /* clear CMD IRQ */
nop
nop
nop
nop
! handle CMD IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
mci_mars_adapter:
.long 0x20004000
main_pwm_irq:
mov.l r1,@-r15
mov.l mpi_mars_adapter,r1
mov.w r0,@(0x1C,r1) /* clear PWM IRQ */
nop
nop
nop
nop
! handle PWM IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
mpi_mars_adapter:
.long 0x20004000
main_vres_irq:
mov.l mvri_mars_adapter,r1
mov.w r0,@(0x14,r1) /* clear VRES IRQ */
nop
nop
nop
nop
mov #0x0F,r0
shll2 r0
shll2 r0
ldc r0,sr /* disallow ints */
mov.l mvri_master_stk,r15
mov.l mvri_master_vres,r0
jmp @r0
nop
.align 2
mvri_mars_adapter:
.long 0x20004000
mvri_master_stk:
.long 0x0603FC00 /* Cold Start SP */
mvri_master_vres:
.long main_reset
! Slave exception handler
slav_err:
rte
nop
! Slave IRQ handler
slav_irq:
mov.l r0,@-r15
stc sr,r0 /* SR holds IRQ level I3-I0 */
shlr2 r0
and #0x38,r0
cmp/eq #0x28,r0
bt slav_h_irq
cmp/eq #0x18,r0
bt slav_pwm_irq
cmp/eq #0x30,r0
bt slav_v_irq
cmp/eq #0x20,r0
bt slav_cmd_irq
cmp/eq #0x38,r0
bt slav_vres_irq
mov.l @r15+,r0
rte
nop
slav_v_irq:
mov.l r1,@-r15
mov.l svi_mars_adapter,r1
mov.w r0,@(0x16,r1) /* clear V IRQ */
nop
nop
nop
nop
! handle V IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
svi_mars_adapter:
.long 0x20004000
slav_h_irq:
mov.l r1,@-r15
mov.l shi_mars_adapter,r1
mov.w r0,@(0x18,r1) /* clear H IRQ */
nop
nop
nop
nop
! handle H IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
shi_mars_adapter:
.long 0x20004000
slav_cmd_irq:
mov.l r1,@-r15
mov.l sci_mars_adapter,r1
mov.w r0,@(0x1A,r1) /* clear CMD IRQ */
nop
nop
nop
nop
! handle CMD IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
sci_mars_adapter:
.long 0x20004000
slav_pwm_irq:
mov.l r1,@-r15
mov.l spi_mars_adapter,r1
mov.w r0,@(0x1C,r1) /* clear PWM IRQ */
nop
nop
nop
nop
! handle PWM IRQ
mov.l @r15+,r1
mov.l @r15+,r0
rte
nop
.align 2
spi_mars_adapter:
.long 0x20004000
slav_vres_irq:
mov.l svri_mars_adapter,r1
mov.w r0,@(0x14,r1) /* clear VRES IRQ */
nop
nop
nop
nop
mov #0x0F,r0
shll2 r0
shll2 r0
ldc r0,sr /* disallow ints */
mov.l svri_slave_stk,r15
mov.l svri_slave_vres,r0
jmp @r0
nop
.align 2
svri_mars_adapter:
.long 0x20004000
svri_slave_stk:
.long 0x06040000 /* Cold Start SP */
svri_slave_vres:
.long slav_reset
! Fast memcpy function - copies longs, runs from sdram for speed
! On entry: r4 = dst, r5 = src, r6 = len (in longs)
.align 4
.global _fast_memcpy
_fast_memcpy:
mov.l @r5+,r3
mov.l r3,@r4
dt r6
bf/s _fast_memcpy
add #4,r4
rts
nop
! Cache clear line function
! On entry: r4 = ptr - should be 16 byte aligned
.align 4
.global _CacheClearLine
_CacheClearLine:
mov.l _cache_flush,r0
or r0,r4
mov #0,r0
mov.l r0,@r4
rts
nop
.align 2
_cache_flush:
.long 0x40000000
! Cache control function
! On entry: r4 = cache mode => 0x10 = CP, 0x08 = TW, 0x01 = CE
.align 4
.global _CacheControl
_CacheControl:
mov.l _sh2_cctl,r0
mov.b r4,@r0
rts
nop
.align 2
_sh2_cctl:
.long 0xFFFFFE92
.align 2
.text
main_reset:
! do any master SH2 specific reset code here
mov.l slav_st,r0
mov.l slav_ok,r1
0:
mov.l @r0,r2
nop
nop
cmp/eq r1,r2
bf 0b /* wait for slave */
! recopy rom data to sdram
mov.l rom_header,r1
mov.l @r1,r2 /* src relative to start of rom */
mov.l @(4,r1),r3 /* dst relative to start of sdram */
mov.l @(8,r1),r4 /* size (longword aligned) */
mov.l rom_start,r1
add r1,r2
mov.l sdram_start,r1
add r1,r3
shlr2 r4 /* number of longs */
add #-1,r4
1:
mov.l @r2+,r0
mov.l r0,@r3
add #4,r3
dt r4
bf 1b
mov.l main_st,r0
mov.l main_ok,r1
mov.l r1,@r0 /* tell everyone reset complete */
mov.l main_go,r0
jmp @r0
nop
slav_reset:
! do any slave SH2 specific reset code here
mov.l slav_st,r0
mov.l slav_ok,r1
mov.l r1,@r0 /* tell master to start reset */
mov.l main_st,r0
mov.l main_ok,r1
0:
mov.l @r0,r2
nop
nop
cmp/eq r1,r2
bf 0b /* wait for master to do the work */
mov.l slav_go,r0
jmp @r0
nop
.align 2
main_st:
.long 0x20004020
main_ok:
.ascii "M_OK"
main_go:
.long mstart
rom_header:
.long 0x220003D4
rom_start:
.long 0x22000000
sdram_start:
.long 0x26000000
slav_st:
.long 0x20004024
slav_ok:
.ascii "S_OK"
slav_go:
.long sstart
.global _start
_start:

132
misc/3ds/Makefile Normal file
View File

@ -0,0 +1,132 @@
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro)
endif
.SUFFIXES:
#---------------------------------------------------------------------------------
# Configurable options
#---------------------------------------------------------------------------------
# Name of the final output
TARGET = ClassiCube-3ds
# List of directories containing source code
SOURCE_DIRS = src src/3ds third_party/bearssl
# List of directories containing shader files
SHDR_DIRS = misc/3ds
# Directory where object files are placed
BUILD_DIR = build/3ds
APP_ICON = misc/3ds/icon.png
APP_TITLE = ClassiCube
APP_DESCRIPTION = Simple block building sandbox
APP_AUTHOR = ClassiCube team
CIA_BANNER_BIN = misc/3ds/banner.bin
CIA_ICON_BIN = misc/3ds/icon.bin
CIA_SPEC_RSF = misc/3ds/spec.rsf
#---------------------------------------------------------------------------------
# Compilable files
#---------------------------------------------------------------------------------
S_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
C_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
OBJS = $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
PICAFILES := $(foreach dir,$(SHDR_DIRS),$(notdir $(wildcard $(dir)/*.v.pica)))
OBJS += $(addprefix $(BUILD_DIR)/, $(PICAFILES:.v.pica=.shbin.o))
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
ARCH = -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft
CFLAGS = -g -Wall -O2 -mword-relocations -ffunction-sections $(ARCH) $(INCLUDE) -D__3DS__ -DPLAT_3DS
ASFLAGS = -g $(ARCH)
LDFLAGS = -specs=3dsx.specs -g $(ARCH)
LIBS = -lctru -lm
INCLUDES=
CTRULIB = $(DEVKITPRO)/libctru
INCLUDES += $(foreach dir, $(CTRULIB), -I$(dir)/include)
LDFLAGS += $(foreach dir,$(CTRULIB), -L$(dir)/lib)
#---------------------------------------------------------------------------------
# Compiler tools
#---------------------------------------------------------------------------------
PREFIX := $(DEVKITPRO)/devkitARM/bin/arm-none-eabi-
ARM_AS := $(PREFIX)as
ARM_CC := $(PREFIX)gcc
ARM_CXX := $(PREFIX)g++
_DSXTOOL := $(DEVKITPRO)/tools/bin/3dsxtool
SMDHTOOL := $(DEVKITPRO)/tools/bin/smdhtool
PICASSO := $(DEVKITPRO)/tools/bin/picasso
BIN2S := $(DEVKITPRO)/tools/bin/bin2s
#---------------------------------------------------------------------------------
# Main targets
#---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET).cia
clean:
rm $(TARGET).cia $(TARGET).3dsx $(TARGET).elf $(OBJS)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#---------------------------------------------------------------------------------
# Executable generation
#---------------------------------------------------------------------------------
$(TARGET).elf: $(OBJS)
$(ARM_CC) $(LDFLAGS) $^ -o $@ $(LIBS)
$(BUILD_DIR).smdh: $(APP_ICON)
$(SMDHTOOL) --create "$(APP_TITLE)" "$(APP_DESCRIPTION)" "$(APP_AUTHOR)" $(APP_ICON) $@
$(TARGET).3dsx: $(TARGET).elf $(BUILD_DIR).smdh
$(_DSXTOOL) $< $@ --smdh=$(BUILD_DIR).smdh
$(BUILD_DIR)/makerom:
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip -O $(BUILD_DIR)/makerom.zip
unzip $(BUILD_DIR)/makerom.zip -d $(BUILD_DIR)
chmod +x $(BUILD_DIR)/makerom
$(TARGET).cia : $(TARGET).3dsx $(BUILD_DIR)/makerom
$(BUILD_DIR)/makerom -f cia -o $(TARGET).cia -elf $(TARGET).elf -rsf $(CIA_SPEC_RSF) -icon $(CIA_ICON_BIN) -banner $(CIA_BANNER_BIN) -exefslogo -target t
#---------------------------------------------------------------------------------
# Object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o: src/%.c
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: src/3ds/%.c
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: third_party/bearssl/%.c
$(ARM_CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
$(BUILD_DIR)/%.shbin: misc/3ds/%.v.pica
$(PICASSO) $< -o $@
$(BUILD_DIR)/%.shbin.o: $(BUILD_DIR)/%.shbin
$(BIN2S) $< | $(ARM_CC) -x assembler-with-cpp -c - -o $@
#---------------------------------------------------------------------------------
# Dependency tracking
#---------------------------------------------------------------------------------
$(DEPFILES):
include $(wildcard $(DEPFILES))

15
misc/3ds/README.md Normal file
View File

@ -0,0 +1,15 @@
To see debug log messages in Citra:
1) Make sure log level set to "Debug.Emulated:Debug"
---
Commands used to generate the .bin files:
`bannertool makebanner -i banner.png -a audio.wav -o banner.bin`
`bannertool makesmdh -s ClassiCube -l ClassiCube -p UnknownShadow200 -i icon.png -o icon.bin`
----
Debug log messages output to debug service, so may be possible to see from console via remote gdb

BIN
misc/3ds/audio.wav Normal file

Binary file not shown.

BIN
misc/3ds/banner.bin Normal file

Binary file not shown.

BIN
misc/3ds/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

34
misc/3ds/coloured.v.pica Normal file
View File

@ -0,0 +1,34 @@
; Vertex shader for rendering coloured vertices for PICA200 GPU on the Nintendo 3DS
; ==================================================================================
; Uniforms (layout common to all shaders)
.alias MVP_0 c0
.alias MVP_1 c1
.alias MVP_2 c2
.alias MVP_3 c3
.alias TEX_OFFSET c4
; Constants (initialised in Graphics_3DS.c)
.alias ONE_DIV_255 c5
; Outputs
.out out_pos position
.out out_col color
; Inputs (defined as aliases for convenience)
.alias in_pos v0
.alias in_col v1
.proc main
; out_pos = MVP * in_pos
dp4 out_pos.x, MVP_0, in_pos
dp4 out_pos.y, MVP_1, in_pos
dp4 out_pos.z, MVP_2, in_pos
dp4 out_pos.w, MVP_3, in_pos
; out_col = in_col * ONE_DIV_255
mul out_col, ONE_DIV_255, in_col
end
.end

BIN
misc/3ds/icon.bin Normal file

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,12 +1,15 @@
; Vertex shader for rendering textured vertices with an offset for PICA200 GPU on the Nintendo 3DS
; ==================================================================================
; Uniforms
.fvec MVP[4];
.fvec tex_offset;
; Uniforms (layout common to all shaders)
.alias MVP_0 c0
.alias MVP_1 c1
.alias MVP_2 c2
.alias MVP_3 c3
.alias TEX_OFFSET c4
; Constants
.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
; Constants (initialised in Graphics_3DS.c)
.alias ONE_DIV_255 c5
; Outputs
.out out_pos position
@ -19,19 +22,17 @@
.alias in_tex v2
.proc main
; r0 = in_pos
mov r0, in_pos
; out_pos = MVP * r0
dp4 out_pos.x, MVP[0], r0
dp4 out_pos.y, MVP[1], r0
dp4 out_pos.z, MVP[2], r0
dp4 out_pos.w, MVP[3], r0
; out_pos = MVP * in_pos
dp4 out_pos.x, MVP_0, in_pos
dp4 out_pos.y, MVP_1, in_pos
dp4 out_pos.z, MVP_2, in_pos
dp4 out_pos.w, MVP_3, in_pos
; out_col = in_col * ONE_DIV_255
mul out_col, ONE_DIV_255, in_col
; out_tex = in_tex + tex_offset
add out_tex, tex_offset, in_tex
add out_tex, TEX_OFFSET, in_tex
end
.end

204
misc/3ds/spec.rsf Normal file
View File

@ -0,0 +1,204 @@
# https://github.com/msikma/3ds-tpl
# https://gist.github.com/jakcron/9f9f02ffd94d98a72632
BasicInfo:
Title : ClassiCube
CompanyCode : "00"
ProductCode : CCBE
ContentType : Application
Logo : Nintendo
TitleInfo:
UniqueId : 0x00CCBE
Category : Application
CardInfo:
MediaSize : 128MB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB
MediaType : Card1 # Card1 / Card2
CardDevice : NorFlash # NorFlash(Pick this if you use savedata) / None
Option:
UseOnSD : true # true if App is to be installed to SD
FreeProductCode : true # Removes limitations on ProductCode
MediaFootPadding : false # If true CCI files are created with padding
EnableCrypt : false # Enables encryption for NCCH and CIA
EnableCompress : true # Compresses exefs code
AccessControlInfo:
#UseExtSaveData : true
#ExtSaveDataId: 0xff3ff
#UseExtendedSaveDataAccessControl: true
#AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
SystemControlInfo:
SaveDataSize: 128KB
RemasterVersion: 0
StackSize: 0x40000
AccessControlInfo:
FileSystemAccess:
- Debug
- DirectSdmc
- DirectSdmcWrite
IdealProcessor : 0
AffinityMask : 1
Priority : 16
SystemMode : 80MB
MaxCpu : 0x9E # Default
DisableDebug : false
EnableForceDebug : false
CanWriteSharedPage : false
CanUsePrivilegedPriority : false
CanUseNonAlphabetAndNumber : false
PermitMainFunctionArgument : false
CanShareDeviceMemory : false
RunnableOnSleep : false
SpecialMemoryArrange : false
CoreVersion : 2
DescVersion : 2
ReleaseKernelMajor : "02"
ReleaseKernelMinor : "33"
MemoryType : Application
HandleTableSize: 512
# New3DS Exclusive Process Settings
SystemModeExt : 124MB # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode
CpuSpeed : 804MHz # 268MHz(Default)/804MHz
EnableL2Cache : true # false(default)/true
CanAccessCore2 : true
# Virtual Address Mappings
IORegisterMapping:
- 1ff50000-1ff57fff # DSP memory
- 1ff70000-1ff77fff
MemoryMapping:
- 1f000000-1f5fffff # VRAM
SystemCallAccess:
ArbitrateAddress: 34
Break: 60
CancelTimer: 28
ClearEvent: 25
ClearTimer: 29
CloseHandle: 35
ConnectToPort: 45
ControlMemory: 1
CreateAddressArbiter: 33
CreateEvent: 23
CreateMemoryBlock: 30
CreateMutex: 19
CreateSemaphore: 21
CreateThread: 8
CreateTimer: 26
DuplicateHandle: 39
ExitProcess: 3
ExitThread: 9
GetCurrentProcessorNumber: 17
GetHandleInfo: 41
GetProcessId: 53
GetProcessIdOfThread: 54
GetProcessIdealProcessor: 6
GetProcessInfo: 43
GetResourceLimit: 56
GetResourceLimitCurrentValues: 58
GetResourceLimitLimitValues: 57
GetSystemInfo: 42
GetSystemTick: 40
GetThreadContext: 59
GetThreadId: 55
GetThreadIdealProcessor: 15
GetThreadInfo: 44
GetThreadPriority: 11
MapMemoryBlock: 31
OutputDebugString: 61
QueryMemory: 2
ReleaseMutex: 20
ReleaseSemaphore: 22
SendSyncRequest1: 46
SendSyncRequest2: 47
SendSyncRequest3: 48
SendSyncRequest4: 49
SendSyncRequest: 50
SetThreadPriority: 12
SetTimer: 27
SignalEvent: 24
SleepThread: 10
UnmapMemoryBlock: 32
WaitSynchronization1: 36
WaitSynchronizationN: 37
InterruptNumbers:
# Service List
# Maximum 34 services (32 if firmware is prior to 9.3.0)
ServiceAccessControl:
- APT:U
- $hioFIO
- $hostio0
- $hostio1
- ac:u
- boss:U
- cam:u
- cecd:u
- cfg:u
- dlp:FKCL
- dlp:SRVR
- dsp::DSP
- frd:u
- fs:USER
- gsp::Gpu
- hid:USER
- mic:u
- ndm:u
- news:s
- nwm::UDS
- ptm:u
- pxi:dev
- soc:U
- gsp::Lcd
- y2r:u
- ldr:ro
- ir:USER
- ir:u
- csnd:SND
- am:u
- ns:s
SystemControlInfo:
# Modules that run services listed above should be included below
# Maximum 48 dependencies
# If a module is listed that isn't present on the 3DS, the title will get stuck at the logo (3ds waves)
# So act, nfc and qtm are commented for 4.x support. Uncomment if you need these.
# <module name>:<module titleid>
Dependency:
ac: 0x0004013000002402L
am: 0x0004013000001502L
boss: 0x0004013000003402L
camera: 0x0004013000001602L
cecd: 0x0004013000002602L
cfg: 0x0004013000001702L
codec: 0x0004013000001802L
csnd: 0x0004013000002702L
dlp: 0x0004013000002802L
dsp: 0x0004013000001a02L
friends: 0x0004013000003202L
gpio: 0x0004013000001b02L
gsp: 0x0004013000001c02L
hid: 0x0004013000001d02L
i2c: 0x0004013000001e02L
ir: 0x0004013000003302L
mcu: 0x0004013000001f02L
mic: 0x0004013000002002L
ndm: 0x0004013000002b02L
news: 0x0004013000003502L
nim: 0x0004013000002c02L
nwm: 0x0004013000002d02L
pdn: 0x0004013000002102L
ps: 0x0004013000003102L
ptm: 0x0004013000002202L
ro: 0x0004013000003702L
socket: 0x0004013000002e02L
spi: 0x0004013000002302L

View File

@ -1,11 +1,15 @@
; Vertex shader for rendering textured vertices for PICA200 GPU on the Nintendo 3DS
; ==================================================================================
; Uniforms
.fvec MVP[4];
; Uniforms (layout common to all shaders)
.alias MVP_0 c0
.alias MVP_1 c1
.alias MVP_2 c2
.alias MVP_3 c3
.alias TEX_OFFSET c4
; Constants
.constf ONE_DIV_255(0.003921568627, 0.003921568627, 0.003921568627, 0.003921568627)
; Constants (initialised in Graphics_3DS.c)
.alias ONE_DIV_255 c5
; Outputs
.out out_pos position
@ -18,14 +22,11 @@
.alias in_tex v2
.proc main
; r0 = in_pos
mov r0, in_pos
; out_pos = MVP * r0
dp4 out_pos.x, MVP[0], r0
dp4 out_pos.y, MVP[1], r0
dp4 out_pos.z, MVP[2], r0
dp4 out_pos.w, MVP[3], r0
; out_pos = MVP * in_pos
dp4 out_pos.x, MVP_0, in_pos
dp4 out_pos.y, MVP_1, in_pos
dp4 out_pos.z, MVP_2, in_pos
dp4 out_pos.w, MVP_3, in_pos
; out_col = in_col * ONE_DIV_255
mul out_col, ONE_DIV_255, in_col
@ -34,3 +35,4 @@
end
.end

View File

@ -1,21 +0,0 @@
* Blocks over 256 are not saved or loaded at all.
* Custom block information for blocks over 256 is not saved or loaded at all.
* /hold 0 prevents you deleting blocks until you change to another.
* Sometimes when holding air and your own model is a block model, you crash.
* Labels and buttons overlap in launcher with some fonts. (e.g. Lucida Console)
* terrain.png with width under 16 insta-crash the game
* catbox.moe texture packs/terrain.png links insta-crash the game
* Sometimes you randomly crash reading leveldatachunk packet on OSX
* Models with size of over 2 are not supported at all
* Direct3D9 backend uses an ill-formed vertex format that works by accident
* Alt text doesn't update its Y position if you click on chat
* Menu inputs (save, edit hotkey, water level, etc) are reset on window resize
* Chat input caret is reset on window resize
* Position in chat (if you scrolled up into history) is reset on window resize
* Two blank lines get shown in chat when you type /client cuboid
* Alt text is closed on window resize
* Changing server texture packs sometimes still retains textures from previous one
* Crashes at startup when another process has exclusively acquired Direct3D9 device
* Can't bind controls to mouse buttons
* Does not work at all on 64 bit macOS
* Making a gas block undeletable doesn't prevent placing blocks over it

View File

@ -1,5 +0,0 @@
Here lies ClassicalSharp, the original C# client. (works with Mono and .NET framework 2.0)
It has unfixed bugs and missing features. There's no reason to use it anymore.
For licensing, please see license.txt inside ClassicalSharp.zip.
Absolutely no support or assistance will be provided for ClassicalSharp.

View File

@ -1,61 +0,0 @@
// DER encoded Baltimore CyberTrust root certificate
static const unsigned char Baltimore_RootCert[] CERT_ATTRIBUTES = {
0x30, 0x82, 0x03, 0x77, 0x30, 0x82, 0x02, 0x5F, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x04, 0x02,
0x00, 0x00, 0xB9, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05,
0x05, 0x00, 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49,
0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74,
0x69, 0x6D, 0x6F, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A,
0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03,
0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43,
0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
0x17, 0x0D, 0x30, 0x30, 0x30, 0x35, 0x31, 0x32, 0x31, 0x38, 0x34, 0x36, 0x30, 0x30, 0x5A, 0x17,
0x0D, 0x32, 0x35, 0x30, 0x35, 0x31, 0x32, 0x32, 0x33, 0x35, 0x39, 0x30, 0x30, 0x5A, 0x30, 0x5A,
0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, 0x12, 0x30,
0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72,
0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A, 0x43, 0x79, 0x62, 0x65,
0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72,
0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D,
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA3, 0x04, 0xBB, 0x22, 0xAB,
0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A, 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80,
0xB1, 0xB0, 0xE3, 0x5B, 0x8E, 0x2B, 0x29, 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, 0x05,
0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2, 0x62, 0xFE, 0xB4, 0x88, 0xDA, 0x12, 0xEB, 0x38, 0xEB,
0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52, 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9,
0x88, 0xB5, 0x6A, 0x09, 0xE7, 0x73, 0xE8, 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, 0x2D,
0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8, 0x50, 0xC3, 0x28, 0xEA, 0xF5, 0xAB, 0x25, 0x87, 0x8A,
0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F, 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B,
0xD5, 0x70, 0x70, 0xF0, 0x8F, 0xC0, 0x12, 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, 0x7A,
0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xD2, 0xC0, 0xC2, 0xA4, 0xAE,
0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC, 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98,
0x63, 0xF5, 0xA5, 0x63, 0xE0, 0x90, 0x0C, 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, 0xEB,
0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F, 0xFF, 0x15, 0xED, 0x69, 0xBC, 0xF9, 0x39, 0x36, 0x72,
0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9, 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F,
0x1F, 0x24, 0x98, 0x21, 0x5C, 0x07, 0x99, 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, 0x3A,
0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68, 0x18, 0x31, 0xF0, 0x78, 0x8D, 0x76, 0xBF, 0xFC, 0x9E,
0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90, 0xDC, 0x27, 0x1A, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01,
0xA3, 0x45, 0x30, 0x43, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xE5,
0x9D, 0x59, 0x30, 0x82, 0x47, 0x58, 0xCC, 0xAC, 0xFA, 0x08, 0x54, 0x36, 0x86, 0x7B, 0x3A, 0xB5,
0x04, 0x4D, 0xF0, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30,
0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x03, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01,
0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x85, 0x0C, 0x5D, 0x8E, 0xE4,
0x6F, 0x51, 0x68, 0x42, 0x05, 0xA0, 0xDD, 0xBB, 0x4F, 0x27, 0x25, 0x84, 0x03, 0xBD, 0xF7, 0x64,
0xFD, 0x2D, 0xD7, 0x30, 0xE3, 0xA4, 0x10, 0x17, 0xEB, 0xDA, 0x29, 0x29, 0xB6, 0x79, 0x3F, 0x76,
0xF6, 0x19, 0x13, 0x23, 0xB8, 0x10, 0x0A, 0xF9, 0x58, 0xA4, 0xD4, 0x61, 0x70, 0xBD, 0x04, 0x61,
0x6A, 0x12, 0x8A, 0x17, 0xD5, 0x0A, 0xBD, 0xC5, 0xBC, 0x30, 0x7C, 0xD6, 0xE9, 0x0C, 0x25, 0x8D,
0x86, 0x40, 0x4F, 0xEC, 0xCC, 0xA3, 0x7E, 0x38, 0xC6, 0x37, 0x11, 0x4F, 0xED, 0xDD, 0x68, 0x31,
0x8E, 0x4C, 0xD2, 0xB3, 0x01, 0x74, 0xEE, 0xBE, 0x75, 0x5E, 0x07, 0x48, 0x1A, 0x7F, 0x70, 0xFF,
0x16, 0x5C, 0x84, 0xC0, 0x79, 0x85, 0xB8, 0x05, 0xFD, 0x7F, 0xBE, 0x65, 0x11, 0xA3, 0x0F, 0xC0,
0x02, 0xB4, 0xF8, 0x52, 0x37, 0x39, 0x04, 0xD5, 0xA9, 0x31, 0x7A, 0x18, 0xBF, 0xA0, 0x2A, 0xF4,
0x12, 0x99, 0xF7, 0xA3, 0x45, 0x82, 0xE3, 0x3C, 0x5E, 0xF5, 0x9D, 0x9E, 0xB5, 0xC8, 0x9E, 0x7C,
0x2E, 0xC8, 0xA4, 0x9E, 0x4E, 0x08, 0x14, 0x4B, 0x6D, 0xFD, 0x70, 0x6D, 0x6B, 0x1A, 0x63, 0xBD,
0x64, 0xE6, 0x1F, 0xB7, 0xCE, 0xF0, 0xF2, 0x9F, 0x2E, 0xBB, 0x1B, 0xB7, 0xF2, 0x50, 0x88, 0x73,
0x92, 0xC2, 0xE2, 0xE3, 0x16, 0x8D, 0x9A, 0x32, 0x02, 0xAB, 0x8E, 0x18, 0xDD, 0xE9, 0x10, 0x11,
0xEE, 0x7E, 0x35, 0xAB, 0x90, 0xAF, 0x3E, 0x30, 0x94, 0x7A, 0xD0, 0x33, 0x3D, 0xA7, 0x65, 0x0F,
0xF5, 0xFC, 0x8E, 0x9E, 0x62, 0xCF, 0x47, 0x44, 0x2C, 0x01, 0x5D, 0xBB, 0x1D, 0xB5, 0x32, 0xD2,
0x47, 0xD2, 0x38, 0x2E, 0xD0, 0xFE, 0x81, 0xDC, 0x32, 0x6A, 0x1E, 0xB5, 0xEE, 0x3C, 0xD5, 0xFC,
0xE7, 0x81, 0x1D, 0x19, 0xC3, 0x24, 0x42, 0xEA, 0x63, 0x39, 0xA9,
};
static const int Baltimore_RootCert_Size = sizeof(Baltimore_RootCert);

View File

@ -0,0 +1,51 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32002.261
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassiCube-UWP", "ClassiCube-UWP.vcxproj", "{A901236D-C8EF-4041-966F-46F17511E342}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.ActiveCfg = Debug|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.Build.0 = Debug|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM.Deploy.0 = Debug|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.Build.0 = Debug|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|ARM64.Deploy.0 = Debug|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.ActiveCfg = Debug|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.Build.0 = Debug|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x64.Deploy.0 = Debug|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.ActiveCfg = Debug|Win32
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.Build.0 = Debug|Win32
{A901236D-C8EF-4041-966F-46F17511E342}.Debug|x86.Deploy.0 = Debug|Win32
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.ActiveCfg = Release|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.Build.0 = Release|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM.Deploy.0 = Release|ARM
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.ActiveCfg = Release|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.Build.0 = Release|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|ARM64.Deploy.0 = Release|ARM64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.ActiveCfg = Release|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.Build.0 = Release|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x64.Deploy.0 = Release|x64
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.ActiveCfg = Release|Win32
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.Build.0 = Release|Win32
{A901236D-C8EF-4041-966F-46F17511E342}.Release|x86.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AB4A9C28-F91F-439E-8D2E-E54273138ADC}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,432 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{a901236d-c8ef-4041-966f-46f17511e342}</ProjectGuid>
<RootNamespace>ClassiCube_UWP</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.20348.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
<AppxPackageSigningEnabled>false</AppxPackageSigningEnabled>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<PlatformToolset>v142</PlatformToolset>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<LanguageStandard>stdcpp17</LanguageStandard>
<CompileAs>Default</CompileAs>
<CompileAsWinRT>false</CompileAsWinRT>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\Animations.c" />
<ClCompile Include="..\..\src\Audio.c" />
<ClCompile Include="..\..\src\Audio_OpenAL.c" />
<ClCompile Include="..\..\src\AxisLinesRenderer.c" />
<ClCompile Include="..\..\src\Bitmap.c" />
<ClCompile Include="..\..\src\Block.c" />
<ClCompile Include="..\..\src\BlockPhysics.c" />
<ClCompile Include="..\..\src\Builder.c" />
<ClCompile Include="..\..\src\Camera.c" />
<ClCompile Include="..\..\src\Certs.c" />
<ClCompile Include="..\..\src\Chat.c" />
<ClCompile Include="..\..\src\Commands.c" />
<ClCompile Include="..\..\src\Deflate.c" />
<ClCompile Include="..\..\src\Drawer.c" />
<ClCompile Include="..\..\src\Drawer2D.c" />
<ClCompile Include="..\..\src\Entity.c" />
<ClCompile Include="..\..\src\EntityComponents.c" />
<ClCompile Include="..\..\src\EntityRenderers.c" />
<ClCompile Include="..\..\src\EnvRenderer.c" />
<ClCompile Include="..\..\src\Event.c" />
<ClCompile Include="..\..\src\ExtMath.c" />
<ClCompile Include="..\..\src\FancyLighting.c" />
<ClCompile Include="..\..\src\Formats.c" />
<ClCompile Include="..\..\src\Game.c" />
<ClCompile Include="..\..\src\GameVersion.c" />
<ClCompile Include="..\..\src\Generator.c" />
<ClCompile Include="..\..\src\Graphics_D3D11.c" />
<ClCompile Include="..\..\src\Gui.c" />
<ClCompile Include="..\..\src\HeldBlockRenderer.c" />
<ClCompile Include="..\..\src\Http_Worker.c" />
<ClCompile Include="..\..\src\Input.c" />
<ClCompile Include="..\..\src\InputHandler.c" />
<ClCompile Include="..\..\src\Inventory.c" />
<ClCompile Include="..\..\src\IsometricDrawer.c" />
<ClCompile Include="..\..\src\Launcher.c" />
<ClCompile Include="..\..\src\LBackend.c" />
<ClCompile Include="..\..\src\LBackend_Android.c" />
<ClCompile Include="..\..\src\Lighting.c" />
<ClCompile Include="..\..\src\Logger.c" />
<ClCompile Include="..\..\src\LScreens.c" />
<ClCompile Include="..\..\src\LWeb.c" />
<ClCompile Include="..\..\src\LWidgets.c" />
<ClCompile Include="..\..\src\MapRenderer.c" />
<ClCompile Include="..\..\src\MenuOptions.c" />
<ClCompile Include="..\..\src\Menus.c" />
<ClCompile Include="..\..\src\Model.c" />
<ClCompile Include="..\..\src\Options.c" />
<ClCompile Include="..\..\src\PackedCol.c" />
<ClCompile Include="..\..\src\Particle.c" />
<ClCompile Include="..\..\src\Physics.c" />
<ClCompile Include="..\..\src\Picking.c" />
<ClCompile Include="..\..\src\Protocol.c" />
<ClCompile Include="..\..\src\Queue.c" />
<ClCompile Include="..\..\src\Resources.c" />
<ClCompile Include="..\..\src\Screens.c" />
<ClCompile Include="..\..\src\SelectionBox.c" />
<ClCompile Include="..\..\src\SelOutlineRenderer.c" />
<ClCompile Include="..\..\src\Server.c" />
<ClCompile Include="..\..\src\SSL.c" />
<ClCompile Include="..\..\src\Stream.c" />
<ClCompile Include="..\..\src\String.c" />
<ClCompile Include="..\..\src\SystemFonts.c" />
<ClCompile Include="..\..\src\TexturePack.c" />
<ClCompile Include="..\..\src\TouchUI.c" />
<ClCompile Include="..\..\src\Utils.c" />
<ClCompile Include="..\..\src\UWP\Platform_UWP.cpp" />
<ClCompile Include="..\..\src\UWP\Window_UWP.cpp" />
<ClCompile Include="..\..\src\Vectors.c" />
<ClCompile Include="..\..\src\Vorbis.c" />
<ClCompile Include="..\..\src\Widgets.c" />
<ClCompile Include="..\..\src\World.c" />
<ClCompile Include="..\..\third_party\bearssl\aesctr_drbg.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcdec.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcenc.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctr.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctrcbc.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_dec.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_enc.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_common.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcdec.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcenc.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctr.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctrcbc.c" />
<ClCompile Include="..\..\third_party\bearssl\asn1enc.c" />
<ClCompile Include="..\..\third_party\bearssl\ccm.c" />
<ClCompile Include="..\..\third_party\bearssl\ccopy.c" />
<ClCompile Include="..\..\third_party\bearssl\chacha20_ct.c" />
<ClCompile Include="..\..\third_party\bearssl\chacha20_sse2.c" />
<ClCompile Include="..\..\third_party\bearssl\dec32be.c" />
<ClCompile Include="..\..\third_party\bearssl\dec32le.c" />
<ClCompile Include="..\..\third_party\bearssl\dec64be.c" />
<ClCompile Include="..\..\third_party\bearssl\dec64le.c" />
<ClCompile Include="..\..\third_party\bearssl\dig_oid.c" />
<ClCompile Include="..\..\third_party\bearssl\dig_size.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_atr.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_asn1.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_raw.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_bits.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_asn1.c" />
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_raw.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_all_m31.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_i31.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m31.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m62.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m64.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_curve25519.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_default.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m31.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m62.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m64.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_prime_i31.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_secp256r1.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_secp384r1.c" />
<ClCompile Include="..\..\third_party\bearssl\ec_secp521r1.c" />
<ClCompile Include="..\..\third_party\bearssl\enc32be.c" />
<ClCompile Include="..\..\third_party\bearssl\enc32le.c" />
<ClCompile Include="..\..\third_party\bearssl\enc64be.c" />
<ClCompile Include="..\..\third_party\bearssl\enc64le.c" />
<ClCompile Include="..\..\third_party\bearssl\gcm.c" />
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul.c" />
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul64.c" />
<ClCompile Include="..\..\third_party\bearssl\ghash_pclmul.c" />
<ClCompile Include="..\..\third_party\bearssl\hmac.c" />
<ClCompile Include="..\..\third_party\bearssl\hmac_ct.c" />
<ClCompile Include="..\..\third_party\bearssl\hmac_drbg.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_add.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_bitlen.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_decmod.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_decode.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_decred.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_encode.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_fmont.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_iszero.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_moddiv.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_modpow.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_modpow2.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_montmul.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_mulacc.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_muladd.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_ninv31.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_reduce.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_rshift.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_sub.c" />
<ClCompile Include="..\..\third_party\bearssl\i31_tmont.c" />
<ClCompile Include="..\..\third_party\bearssl\i32_div32.c" />
<ClCompile Include="..\..\third_party\bearssl\i62_modpow2.c" />
<ClCompile Include="..\..\third_party\bearssl\md5.c" />
<ClCompile Include="..\..\third_party\bearssl\md5sha1.c" />
<ClCompile Include="..\..\third_party\bearssl\multihash.c" />
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmul.c" />
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmulq.c" />
<ClCompile Include="..\..\third_party\bearssl\prf.c" />
<ClCompile Include="..\..\third_party\bearssl\prf_md5sha1.c" />
<ClCompile Include="..\..\third_party\bearssl\prf_sha256.c" />
<ClCompile Include="..\..\third_party\bearssl\prf_sha384.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pkcs1_vrfy.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_default_priv.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pub.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pkcs1_vrfy.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_priv.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pub.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pkcs1_vrfy.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_priv.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pub.c" />
<ClCompile Include="..\..\third_party\bearssl\rsa_pkcs1_sig_unpad.c" />
<ClCompile Include="..\..\third_party\bearssl\sha1.c" />
<ClCompile Include="..\..\third_party\bearssl\sha2big.c" />
<ClCompile Include="..\..\third_party\bearssl\sha2small.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_client.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_client_default_rsapub.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_client_full.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aescbc.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesccm.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesgcm.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_chapol.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ec.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ecdsa.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_rsavrfy.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_hashes.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_hs_client.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_io.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_cbc.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_ccm.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_chapol.c" />
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_gcm.c" />
<ClCompile Include="..\..\third_party\bearssl\x509_minimal.c" />
<ClCompile Include="..\..\third_party\bearssl\x509_minimal_full.c" />
</ItemGroup>
<ItemGroup>
<Image Include="Assets\Square150x150Logo.scale-200.png">
<DeploymentContent>true</DeploymentContent>
</Image>
<Image Include="Assets\Square44x44Logo.scale-200.png">
<DeploymentContent>true</DeploymentContent>
</Image>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,445 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Common">
<UniqueIdentifier>a901236d-c8ef-4041-966f-46f17511e342</UniqueIdentifier>
</Filter>
<Filter Include="BearSSL">
<UniqueIdentifier>{93fa4266-80e4-4bbf-a7fa-c47e07da5098}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\Animations.c" />
<ClCompile Include="..\..\src\Audio.c" />
<ClCompile Include="..\..\src\AxisLinesRenderer.c" />
<ClCompile Include="..\..\src\Bitmap.c" />
<ClCompile Include="..\..\src\Block.c" />
<ClCompile Include="..\..\src\BlockPhysics.c" />
<ClCompile Include="..\..\src\Builder.c" />
<ClCompile Include="..\..\src\Camera.c" />
<ClCompile Include="..\..\src\Chat.c" />
<ClCompile Include="..\..\src\Commands.c" />
<ClCompile Include="..\..\src\Deflate.c" />
<ClCompile Include="..\..\src\Drawer.c" />
<ClCompile Include="..\..\src\Drawer2D.c" />
<ClCompile Include="..\..\src\Entity.c" />
<ClCompile Include="..\..\src\EntityComponents.c" />
<ClCompile Include="..\..\src\EntityRenderers.c" />
<ClCompile Include="..\..\src\EnvRenderer.c" />
<ClCompile Include="..\..\src\Event.c" />
<ClCompile Include="..\..\src\ExtMath.c" />
<ClCompile Include="..\..\src\FancyLighting.c" />
<ClCompile Include="..\..\src\Formats.c" />
<ClCompile Include="..\..\src\Game.c" />
<ClCompile Include="..\..\src\GameVersion.c" />
<ClCompile Include="..\..\src\Generator.c" />
<ClCompile Include="..\..\src\Gui.c" />
<ClCompile Include="..\..\src\HeldBlockRenderer.c" />
<ClCompile Include="..\..\src\Http_Worker.c" />
<ClCompile Include="..\..\src\Input.c" />
<ClCompile Include="..\..\src\InputHandler.c" />
<ClCompile Include="..\..\src\Inventory.c" />
<ClCompile Include="..\..\src\IsometricDrawer.c" />
<ClCompile Include="..\..\src\Launcher.c" />
<ClCompile Include="..\..\src\LBackend.c" />
<ClCompile Include="..\..\src\LBackend_Android.c" />
<ClCompile Include="..\..\src\Lighting.c" />
<ClCompile Include="..\..\src\Logger.c" />
<ClCompile Include="..\..\src\LScreens.c" />
<ClCompile Include="..\..\src\LWeb.c" />
<ClCompile Include="..\..\src\LWidgets.c" />
<ClCompile Include="..\..\src\MapRenderer.c" />
<ClCompile Include="..\..\src\MenuOptions.c" />
<ClCompile Include="..\..\src\Menus.c" />
<ClCompile Include="..\..\src\Model.c" />
<ClCompile Include="..\..\src\Options.c" />
<ClCompile Include="..\..\src\PackedCol.c" />
<ClCompile Include="..\..\src\Particle.c" />
<ClCompile Include="..\..\src\Physics.c" />
<ClCompile Include="..\..\src\Picking.c" />
<ClCompile Include="..\..\src\Protocol.c" />
<ClCompile Include="..\..\src\Queue.c" />
<ClCompile Include="..\..\src\Resources.c" />
<ClCompile Include="..\..\src\Screens.c" />
<ClCompile Include="..\..\src\SelectionBox.c" />
<ClCompile Include="..\..\src\SelOutlineRenderer.c" />
<ClCompile Include="..\..\src\Server.c" />
<ClCompile Include="..\..\src\SSL.c" />
<ClCompile Include="..\..\src\Stream.c" />
<ClCompile Include="..\..\src\String.c" />
<ClCompile Include="..\..\src\SystemFonts.c" />
<ClCompile Include="..\..\src\TexturePack.c" />
<ClCompile Include="..\..\src\TouchUI.c" />
<ClCompile Include="..\..\src\Utils.c" />
<ClCompile Include="..\..\src\Vectors.c" />
<ClCompile Include="..\..\src\Vorbis.c" />
<ClCompile Include="..\..\src\Widgets.c" />
<ClCompile Include="..\..\src\World.c" />
<ClCompile Include="..\..\src\Graphics_D3D11.c" />
<ClCompile Include="..\..\src\UWP\Platform_UWP.cpp" />
<ClCompile Include="..\..\src\UWP\Window_UWP.cpp" />
<ClCompile Include="..\..\src\Audio_OpenAL.c" />
<ClCompile Include="..\..\src\Certs.c" />
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcdec.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_big_cbcenc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctr.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_big_ctrcbc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_big_dec.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_big_enc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_common.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcdec.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_cbcenc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctr.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aes_x86ni_ctrcbc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\aesctr_drbg.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\asn1enc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ccm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ccopy.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\chacha20_ct.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\chacha20_sse2.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dec32be.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dec32le.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dec64be.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dec64le.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dig_oid.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\dig_size.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_all_m31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_i31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m62.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_c25519_m64.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_curve25519.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_default.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m62.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_p256_m64.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_prime_i31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_secp256r1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_secp384r1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ec_secp521r1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_atr.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_asn1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_default_vrfy_raw.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_bits.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_asn1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ecdsa_i31_vrfy_raw.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\enc32be.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\enc32le.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\enc64be.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\enc64le.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\gcm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ghash_ctmul64.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ghash_pclmul.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\hmac.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\hmac_ct.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\hmac_drbg.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_add.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_bitlen.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_decmod.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_decode.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_decred.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_encode.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_fmont.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_iszero.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_moddiv.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_modpow.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_modpow2.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_montmul.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_mulacc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_muladd.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_ninv31.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_reduce.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_rshift.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_sub.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i31_tmont.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i32_div32.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\i62_modpow2.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\md5.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\md5sha1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\multihash.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmul.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\poly1305_ctmulq.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\prf.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\prf_md5sha1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\prf_sha256.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\prf_sha384.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pkcs1_vrfy.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_default_priv.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_default_pub.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pkcs1_vrfy.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_priv.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i31_pub.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pkcs1_vrfy.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_priv.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_i62_pub.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\rsa_pkcs1_sig_unpad.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\sha1.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\sha2big.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\sha2small.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_client.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_client_default_rsapub.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_client_full.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aescbc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesccm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_aesgcm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_chapol.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ec.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_ecdsa.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_engine_default_rsavrfy.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_hashes.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_hs_client.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_io.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_cbc.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_ccm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_chapol.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\ssl_rec_gcm.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\x509_minimal.c">
<Filter>BearSSL</Filter>
</ClCompile>
<ClCompile Include="..\..\third_party\bearssl\x509_minimal_full.c">
<Filter>BearSSL</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Image Include="Assets\Square44x44Logo.scale-200.png" />
<Image Include="Assets\Square150x150Logo.scale-200.png" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity
Name="64f1d536-965b-4190-90d3-47d861786f88"
Publisher="CN=ClassiCube"
Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="64f1d536-965b-4190-90d3-47d861786f88" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>ClassiCube-UWP</DisplayName>
<PublisherDisplayName>ClassiCube</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="ClassiCube_UWP.App">
<uap:VisualElements
DisplayName="ClassiCube-UWP"
Description="ClassiCube-UWP"
BackgroundColor="transparent" Square44x44Logo="Assets\Square44x44Logo.png" Square150x150Logo="Assets\Square150x150Logo.png">
<uap:DefaultTile>
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo"/>
</uap:ShowNameOnTiles>
</uap:DefaultTile>
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

42
misc/amiga/Makefile Normal file
View File

@ -0,0 +1,42 @@
TARGET := ClassiCube-amiga
BUILD_DIR := build/amiga
SOURCE_DIRS := src src/amiga
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
CC = vc +aos68k
CFLAGS = -rmcfg-amiga-softfloat -O1 -DPLAT_AMIGA
AS = vasmm68k_mot
ASFLAGS = -Fvobj -m68000 -no-fpu
LDFLAGS = $(CFLAGS)
LDLIBS = -lamiga -lmsoft
#---------------------------------------------------------------------------------
# Main targets
#---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(TARGET): $(OBJS)
$(CC) $(LDFLAGS) -final -o $@ $^ $(LDLIBS)
#---------------------------------------------------------------------------------
# object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o : src/%.c
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD_DIR)/%.o : src/amiga/%.c
$(CC) $(CFLAGS) -c -o $@ $<

50
misc/amiga/Makefile_68k Normal file
View File

@ -0,0 +1,50 @@
TARGET := ClassiCube-amiga
BUILD_DIR := build/amiga_68k
SOURCE_DIRS := src src/amiga
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
AS := m68k-amigaos-as
CC := m68k-amigaos-gcc
CXX := m68k-amigaos-g++
CFLAGS := -O1 -fno-math-errno -DPLAT_AMIGA -DCC_BUILD_NOFPU
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET).exe
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(TARGET).exe: $(C_OBJECTS)
$(CC) $(LDFLAGS) -o $(TARGET).exe $(C_OBJECTS)
#---------------------------------------------------------------------------------
# object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o : src/amiga/%.S
$(AS) $< -o $@
$(BUILD_DIR)/%.o : src/%.c
$(CC) $(CFLAGS) $(DEPFLAGS) -S -c $< -o $@
$(BUILD_DIR)/%.o : src/amiga/%.c
$(CC) $(CFLAGS) $(DEPFLAGS) -S -c $< -o $@
# Dependency tracking
$(DEPFILES):
include $(wildcard $(DEPFILES))

42
misc/atari_st/Makefile Normal file
View File

@ -0,0 +1,42 @@
TARGET := ClassiCube-atari
BUILD_DIR := build/atari_st
SOURCE_DIRS := src src/atari_st
S_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.S))
C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c))
OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o) $(S_FILES:%.S=%.o)))
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
CC = vc +tos
CFLAGS = -O1 -DPLAT_ATARIOS
AS = vasmm68k_mot
ASFLAGS = -Fvobj -m68000 -no-fpu
LDFLAGS = $(CFLAGS)
LDLIBS = -lm
#---------------------------------------------------------------------------------
# Main targets
#---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET).tos
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(TARGET).tos: $(OBJS)
$(CC) $(LDFLAGS) -final -o $@ $^ $(LDLIBS)
#---------------------------------------------------------------------------------
# object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o : src/%.c
$(CC) $(CFLAGS) -c -o $@ $<
$(BUILD_DIR)/%.o : src/atari_st/%.c
$(CC) $(CFLAGS) -c -o $@ $<

41
misc/bitmap_font_gen.cs Normal file
View File

@ -0,0 +1,41 @@
void Main()
{
Console.WriteLine("static cc_uint8 font_bitmap[][8] = {");
using (Bitmap bmp = new Bitmap(@"C:\classicube-dev\default.png"))
{
for (int CY = 0; CY < 16; CY++)
for (int CX = 0; CX < 16; CX++)
DecodeTile(bmp, CX, CY);
}
Console.WriteLine("}");
}
static void DecodeTile(Bitmap bmp, int cx, int cy) {
int c = (cy << 4) | cx;
if (c <= 32 || c >= 127) return;
int X = cx * 8, Y = cy * 8;
Console.Write("\t{ ");
for (int y = Y; y < Y + 8; y++) {
uint mask = 0;
int shift = 0;
for (int x = X; x < X + 8; x++, shift++) {
Color P = bmp.GetPixel(x, y);
if (P.A == 0) {
mask |= 0u << shift;
} else if (P.R == 255 && P.G == 255 && P.B == 255 && P.A == 255) {
mask |= 1u << shift;
} else {
throw new InvalidOperationException("unsupported colour" + P);
}
}
string suffix = y == Y + 7 ? " " : ",";
Console.Write("0x" + mask.ToString("X2") + suffix);
}
Console.WriteLine("}, /* " + (char)c + " */");
}

View File

@ -1,64 +0,0 @@
from http.server import HTTPServer, SimpleHTTPRequestHandler
import os
import subprocess
build_files = {
'/ClassiCube.exe' : 'cc-w32-d3d.exe', '/ClassiCube.opengl.exe' : 'cc-w32-ogl.exe',
'/ClassiCube.64.exe' : 'cc-w64-d3d.exe', '/ClassiCube.64-opengl.exe' : 'cc-w64-ogl.exe',
'/ClassiCube.32' : 'cc-nix32', '/ClassiCube' : 'cc-nix64',
'/ClassiCube.osx' : 'cc-osx32', '/ClassiCube.64.osx' : 'cc-osx64',
'/ClassiCube.js' : 'cc.js', '/ClassiCube.apk' : 'cc.apk',
'/ClassiCube.rpi' : 'cc-rpi',
'/cc-nix32-gl2' : 'cc-nix32-gl2', '/cc-nix64-gl2' : 'cc-nix64-gl2',
'/cc-osx32-gl2' : 'cc-osx32-gl2', '/cc-osx64-gl2' : 'cc-osx64-gl2',
}
release_files = {
'/win32' : 'win32/ClassiCube.exe', '/win64' : 'win64/ClassiCube.exe',
'/osx32' : 'osx32/ClassiCube.tar.gz', '/osx64' : 'osx64/ClassiCube.tar.gz',
'/mac32' : 'mac32/ClassiCube.tar.gz', '/mac64' : 'mac64/ClassiCube.tar.gz',
'/nix32' : 'nix32/ClassiCube.tar.gz', '/nix64' : 'nix64/ClassiCube.tar.gz',
'/rpi32' : 'rpi32/ClassiCube.tar.gz',
}
def run_script(file):
args = ["sh", file]
su = subprocess.Popen(args)
return su.wait()
class Handler(SimpleHTTPRequestHandler):
def serve_script(self, file, msg):
ret = run_script(file)
self.send_response(200)
self.end_headers()
self.wfile.write(msg % ret)
def do_GET(self):
if self.path in build_files:
self.serve_exe('client/src/' + build_files[self.path])
elif self.path in release_files:
self.serve_exe('client/release/' + release_files[self.path])
elif self.path == '/rebuild':
self.serve_script('build.sh', 'Rebuild client (%s)')
elif self.path == '/release':
self.serve_script('build_release.sh', 'Package release (%s)')
else:
self.send_error(404, "Unknown action")
return
def serve_exe(self, path):
try:
f = open(path, 'rb')
fs = os.fstat(f.fileno())
self.send_response(200)
self.send_header("Content-type", "application/octet-stream")
self.send_header("Content-Length", str(fs[6]))
self.end_headers()
self.copyfile(f, self.wfile)
f.close()
except IOError:
self.send_error(404, "File not found")
httpd = HTTPServer(('', 80), Handler)
httpd.serve_forever()

View File

@ -1,267 +0,0 @@
#!/bin/bash
# These build instructions are for ubuntu. Other linux distributions may have saner behaviour.
# The build script relies on the following assumptions:
# - You have already cloned ClassiCube from github
# - The root folder is ~/client/ (i.e. folder layout is ~/client/.git/, ~/client/src/, etc)
# First you need to install these packages: gcc, i686-w64-mingw32-gcc and x86_64-w64-mingw32-gcc
#
# You then need to install these packages: libx11-dev and libgl1-mesa-dev
# - if 32 bit, also install the 64 bit variants of all these packages (e.g. libx11-dev:amd64)
# - if 64 bit, also install the 32 bit variants of all these packages (e.g. libx11-dev:i386)
#
# However! You may find that with some ubuntu versions, installing the alternate
# bit variant of libgl1-mesa-dev uninstalls your current package.
# To fix this, first reinstall the normal libgl1-mesa-dev package
# The alternate bit .so files should have been left behind in the mesa folder, so adding a symlink should make it compile again
# - for 32 bit: ln -sf /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
# - for 64 bit: ln -sf /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
ROOT_DIR=~/client # can be changed
ALL_FLAGS="-O1 -s -fno-stack-protector -fno-math-errno -Qn -w"
# log file that errors are written to
ERRS_FILE=$ROOT_DIR/cc_errors.txt
rm "$ERRS_FILE"
# ----------------------------- compile windows
# I installed gcc-mingw-w64-i686 and gcc-mingw-w64-x86-64 packages
WIN32_CC="i686-w64-mingw32-gcc"
WIN64_CC="x86_64-w64-mingw32-gcc"
WIN32_FLAGS="-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN"
WIN64_FLAGS="-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN"
build_win32() {
echo "Building win32.."
cp $ROOT_DIR/misc/windows/CCicon_32.res $ROOT_DIR/src/CCicon_32.res
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-d3d.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -lwinmm -limagehlp
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit" >> "$ERRS_FILE"; fi
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-ogl.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp -lopengl32
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit (OpenGL)" >> "$ERRS_FILE"; fi
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -o cc-w32-d3d11.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_D3D11 -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp
if [ $? -ne 0 ]; then echo "Failed to compile Windows 32 bit (Direct3D11)" >> "$ERRS_FILE"; fi
# mingw defaults to i686, but some really old CPUs only support i586
$WIN32_CC *.c $ALL_FLAGS $WIN32_FLAGS -march=i586 -o cc-w9x-ogl.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_HTTPCLIENT -DCC_BUILD_SCHANNEL -lwinmm -limagehlp -lopengl32
if [ $? -ne 0 ]; then echo "Failed to compile Windows 9x (OpenGL)" >> "$ERRS_FILE"; fi
}
build_win64() {
echo "Building win64.."
cp $ROOT_DIR/misc/windows/CCicon_64.res $ROOT_DIR/src/CCicon_64.res
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-d3d.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -lwinmm -limagehlp
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit" >> "$ERRS_FILE"; fi
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-ogl.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp -lopengl32
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit (OpenGL)" >> "$ERRS_FILE"; fi
$WIN64_CC *.c $ALL_FLAGS $WIN64_FLAGS -o cc-w64-d3d11.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_D3D11 -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lwinmm -limagehlp
if [ $? -ne 0 ]; then echo "Failed to compile Windows 64 bit (Direct3D11)" >> "$ERRS_FILE"; fi
}
# ----------------------------- compile linux
# I installed gcc and gcc-multilib packages
NIX32_FLAGS="-no-pie -fno-pie -m32 -fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
NIX64_FLAGS="-no-pie -fno-pie -m64 -fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
build_nix32() {
echo "Building linux32.."
rm cc-nix32
gcc *.c $ALL_FLAGS $NIX32_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-nix32 -lX11 -lXi -lpthread -lGL -lm -ldl
if [ $? -ne 0 ]; then echo "Failed to compile Linux 32 bit" >> "$ERRS_FILE"; fi
gcc *.c $ALL_FLAGS $NIX32_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-nix32-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl
if [ $? -ne 0 ]; then echo "Failed to compile Linux 32 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
}
build_nix64() {
echo "Building linux64.."
rm cc-nix64
gcc *.c $ALL_FLAGS $NIX64_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-nix64 -lX11 -lXi -lpthread -lGL -lm -ldl
if [ $? -ne 0 ]; then echo "Failed to compile Linux 64 bit" >> "$ERRS_FILE"; fi
gcc *.c $ALL_FLAGS $NIX64_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-nix64-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl
if [ $? -ne 0 ]; then echo "Failed to compile Linux 64 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
}
# ----------------------------- compile macOS
MAC32_CC="/home/buildbot/osx/target/bin/o32-clang"
MAC64_CC="/home/buildbot/osx/target/bin/o64-clang"
MACOS_FLAGS="-fvisibility=hidden -rdynamic -DCC_BUILD_ICON"
build_mac32() {
echo "Building mac32.."
rm cc-osx32
$MAC32_CC *.c $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-osx32 -framework Carbon -framework AGL -framework OpenGL -framework IOKit -lgcc_s.1
if [ $? -ne 0 ]; then echo "Failed to compile macOS 32 bit" >> "$ERRS_FILE"; fi
$MAC32_CC *.c $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-osx32-gl2 -framework Carbon -framework AGL -framework OpenGL -framework IOKit -lgcc_s.1
if [ $? -ne 0 ]; then echo "Failed to compile macOS 32 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
}
build_mac64() {
echo "Building mac64.."
rm cc-osx64
$MAC64_CC *.c interop_cocoa.m $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-osx64 -framework Cocoa -framework OpenGL -framework IOKit -lobjc
if [ $? -ne 0 ]; then echo "Failed to compile macOS 64 bit" >> "$ERRS_FILE"; fi
$MAC64_CC *.c interop_cocoa.m $ALL_FLAGS $MACOS_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_GLMODERN -o cc-osx64-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc
if [ $? -ne 0 ]; then echo "Failed to compile macOS 64 bit (OpenGL Modern)" >> "$ERRS_FILE"; fi
}
# ----------------------------- compile web
# I installed emscripten per https://emscripten.org/docs/getting_started/downloads.html
WEB_CC="/home/buildbot/emsdk/emscripten/1.38.31/emcc"
build_web() {
echo "Building web.."
rm cc.js
$WEB_CC *.c -O1 -o cc.js --js-library interop_web.js -s WASM=0 -s LEGACY_VM_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 -s ABORTING_MALLOC=0 -s ENVIRONMENT=web
if [ $? -ne 0 ]; then echo "Failed to compile Webclient" >> "$ERRS_FILE"; fi
# fix mouse wheel scrolling page not being properly prevented
# "[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive."
sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' cc.js
}
# ----------------------------- compile raspberry pi
# I cloned https://github.com/raspberrypi/tools to get prebuilt cross compilers
# Then I copied across various files/folders from /usr/include and /usr/lib from a real Raspberry pi as needed
RPI32_CC=~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3
RPI_FLAGS="-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -DCC_BUILD_RPI"
# I cloned from https://github.com/abhiTronix/raspberry-pi-cross-compilers
RPI64_CC=~/rpi64/cross-pi-gcc-9.4.0-64/bin/aarch64-linux-gnu-gcc
build_rpi32() {
echo "Building rpi32.."
rm cc-rpi
$RPI32_CC *.c $ALL_FLAGS $RPI_FLAGS -I ~/rpi/include -L ~/rpi/lib -DCC_COMMIT_SHA=\"$LATEST\" -o cc-rpi -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt -Wl,-rpath-link ~/rpi/lib
if [ $? -ne 0 ]; then echo "Failed to compile Raspberry Pi 32 bit" >> "$ERRS_FILE"; fi
}
build_rpi64() {
echo "Building rpi64.."
rm cc-rpi64
$RPI64_CC *.c $ALL_FLAGS $RPI_FLAGS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-rpi64 -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl
if [ $? -ne 0 ]; then echo "Failed to compile Raspberry Pi 64 bit" >> "$ERRS_FILE"; fi
}
# ----------------------------- compile android
DROID_FLAGS="-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
DROID_LIBS="-lGLESv2 -lEGL -lm -landroid -llog"
NDK_ROOT="/home/buildbot/android/android-ndk-r22/toolchains/llvm/prebuilt/linux-x86_64/bin"
TOOLS_ROOT="/home/buildbot/android/sdk/build-tools/26.0.0"
SDK_ROOT="/home/buildbot/android/sdk/platforms/android-28"
build_android() {
echo "Building android.."
rm cc.apk cc-droid-arm_16 cc-droid-arm_32 cc-droid-arm_64 cc-droid-x86_32 cc-droid-x86_64
$NDK_ROOT/armv7a-linux-androideabi16-clang *.c $DROID_FLAGS -march=armv5 $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_16
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-16" >> "$ERRS_FILE"; fi
$NDK_ROOT/armv7a-linux-androideabi16-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_32
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-32" >> "$ERRS_FILE"; fi
$NDK_ROOT/aarch64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-arm_64
if [ $? -ne 0 ]; then echo "Failed to compile Android ARM-64" >> "$ERRS_FILE"; fi
$NDK_ROOT/i686-linux-android16-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-x86_32
if [ $? -ne 0 ]; then echo "Failed to compile Android x86-32" >> "$ERRS_FILE"; fi
$NDK_ROOT/x86_64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS -DCC_COMMIT_SHA=\"$LATEST\" -o cc-droid-x86_64
if [ $? -ne 0 ]; then echo "Failed to compile Android x86-64" >> "$ERRS_FILE"; fi
cd $ROOT_DIR/android/app/src/main
# remove old java temp files
rm -rf obj
mkdir obj
rm classes.dex
# copy required native libraries
rm -rf lib
mkdir lib lib/armeabi lib/armeabi-v7a lib/arm64-v8a lib/x86 lib/x86_64
cp $ROOT_DIR/src/cc-droid-arm_16 lib/armeabi/libclassicube.so
cp $ROOT_DIR/src/cc-droid-arm_32 lib/armeabi-v7a/libclassicube.so
cp $ROOT_DIR/src/cc-droid-arm_64 lib/arm64-v8a/libclassicube.so
cp $ROOT_DIR/src/cc-droid-x86_32 lib/x86/libclassicube.so
cp $ROOT_DIR/src/cc-droid-x86_64 lib/x86_64/libclassicube.so
# The following commands are for manually building an .apk, see
# https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
# https://github.com/cnlohr/rawdrawandroid/blob/master/Makefile
# https://stackoverflow.com/questions/41132753/how-can-i-build-an-android-apk-without-gradle-on-the-command-line
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/Makefile
# https://github.com/skanti/Android-Manual-Build-Command-Line/blob/master/hello-jni/CMakeLists.txt
# compile java files into multiple .class files
cd $ROOT_DIR/android/app/src/main/java/com/classicube
javac *.java -d $ROOT_DIR/android/app/src/main/obj -classpath $SDK_ROOT/android.jar
if [ $? -ne 0 ]; then echo "Failed to compile Android Java" >> "$ERRS_FILE"; fi
cd $ROOT_DIR/android/app/src/main
# compile the multiple .class files into one .dex file
$TOOLS_ROOT/dx --dex --output=obj/classes.dex ./obj
# create initial .apk with packaged version of resources
$TOOLS_ROOT/aapt package -f -M AndroidManifest.xml -S res -F obj/cc-unsigned.apk -I $SDK_ROOT/android.jar
# and add all the required files
cp obj/classes.dex classes.dex
$TOOLS_ROOT/aapt add -f obj/cc-unsigned.apk classes.dex lib/armeabi/libclassicube.so lib/armeabi-v7a/libclassicube.so lib/arm64-v8a/libclassicube.so lib/x86/libclassicube.so lib/x86_64/libclassicube.so
# sign the apk with debug key (https://stackoverflow.com/questions/16711233/)
cp obj/cc-unsigned.apk obj/cc-signed.apk
jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore -storepass android -keypass android obj/cc-signed.apk androiddebugkey
# jarsigner -verbose
# create aligned .apk file
$TOOLS_ROOT/zipalign -f 4 obj/cc-signed.apk $ROOT_DIR/src/cc.apk
# restore to normal directory now that finished
cd $ROOT_DIR/src/
}
# ----------------------------- compile ios
IOS_CC="ios-cc"
IOS_LIBS="-framework OpenGLES -framework CoreGraphics -framework IOKit -framework CoreFoundation -framework Foundation -framework UIKit -framework QuartzCore -framework CFNetwork -lobjc"
IOS_FLAGS="-s -O1 -fvisibility=hidden -rdynamic -funwind-tables -arch armv7 -arch arm64"
build_ios() {
echo "Building ios.."
# IPHONEOS_DEPLOYMENT_TARGET=7.0 $IOS_CC *.c interop_ios.m $IOS_FLAGS $IOS_LIBS -o cc-ios
$IOS_CC *.c interop_ios.m $IOS_FLAGS $IOS_LIBS -o cc-ios
if [ $? -ne 0 ]; then echo "Failed to compile iOS" >> "$ERRS_FILE"; fi
mkdir Payload
mkdir Payload/ClassiCube.app
cp cc-ios Payload/ClassiCube.app/ClassiCube
# https://askubuntu.com/questions/681949/plutil-equivalent-in-ubuntu
plistutil -i $ROOT_DIR/ios/Info.plist -o Payload/ClassiCube.app/Info.plist -f bin
# copy across the icon files
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_40.png "Payload/ClassiCube.app/AppIcon40x40~ipad.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_76.png "Payload/ClassiCube.app/AppIcon76x76~ipad.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_80.png "Payload/ClassiCube.app/AppIcon40x40@2x.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_80.png "Payload/ClassiCube.app/AppIcon40x40@2x~ipad.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_120.png "Payload/ClassiCube.app/AppIcon40x40@3x.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_120.png "Payload/ClassiCube.app/AppIcon60x60@2x.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_152.png "Payload/ClassiCube.app/AppIcon76x76@2x~ipad.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_167.png "Payload/ClassiCube.app/AppIcon83.5x83.5@2x~ipad.png"
cp $ROOT_DIR/ios/ClassiCube/Assets.xcassets/AppIcon.appiconset/CC_180.png "Payload/ClassiCube.app/AppIcon60x60@3x.png"
zip -r cc.ipa Payload
}
# ----------------------------- driver
cd $ROOT_DIR/src/
echo $PWD
git pull https://github.com/UnknownShadow200/ClassiCube.git
git fetch --all
git reset --hard origin/master
LATEST=$(git rev-parse --short HEAD)
run_timed() {
beg=`date +%s`
$1
end=`date +%s`
runtime=$((end-beg))
echo "Compiling took $runtime"
}
run_timed build_win32
run_timed build_win64
run_timed build_nix32
run_timed build_nix64
run_timed build_mac32
run_timed build_mac64
run_timed build_web
run_timed build_rpi32
run_timed build_rpi64
run_timed build_android
cd ~
python3 notify.py

View File

@ -1,60 +0,0 @@
#!/bin/bash
# paths, change these as needed
SOURCE_DIR=~/client/src
MISC_DIR=~/client/misc
BUILDS_DIR=~/client/release
# ./ClassiCube
make_nix_tar() {
cp $SOURCE_DIR/$1 ClassiCube
chmod +x ClassiCube
tar -zcvf ClassiCube.tar.gz ClassiCube
rm ClassiCube
}
# ./ClassiCube.app/Info.plist
# ./ClassiCube.app/Contents/MacOS/ClassiCube
# ./ClassiCube.app/Resources/ClassiCube.icns
make_mac_tar() {
mkdir ClassiCube.app
mkdir ClassiCube.app/Contents
mkdir ClassiCube.app/Contents/MacOS
mkdir ClassiCube.app/Contents/Resources
cp $SOURCE_DIR/$1 ClassiCube.app/Contents/MacOS/ClassiCube
chmod +x ClassiCube.app/Contents/MacOS/ClassiCube
cp $MISC_DIR/info.plist ClassiCube.app/Contents/Info.plist
cp $MISC_DIR/CCIcon.icns ClassiCube.app/Contents/Resources/ClassiCube.icns
tar -zcvf ClassiCube.tar.gz ClassiCube.app
rm -rf ClassiCube.app
}
mkdir -p $BUILDS_DIR
mkdir -p $BUILDS_DIR/win32 $BUILDS_DIR/win64 $BUILDS_DIR/osx32 $BUILDS_DIR/osx64
mkdir -p $BUILDS_DIR/nix32 $BUILDS_DIR/nix64 $BUILDS_DIR/mac32 $BUILDS_DIR/mac64
mkdir -p $BUILDS_DIR/rpi32
# edge doesn't respect download attribute, and having ClassiCube.64.exe breaks plugins
cp $SOURCE_DIR/cc-w32-d3d.exe $BUILDS_DIR/win32/ClassiCube.exe
cp $SOURCE_DIR/cc-w64-d3d.exe $BUILDS_DIR/win64/ClassiCube.exe
# use tar to preserve chmod +x, so users don't have to manually do it
cd $BUILDS_DIR/osx32/
make_nix_tar cc-osx32
cd $BUILDS_DIR/osx64/
make_nix_tar cc-osx64
cd $BUILDS_DIR/nix32/
make_nix_tar cc-nix32
cd $BUILDS_DIR/nix64/
make_nix_tar cc-nix64
cd $BUILDS_DIR/rpi32/
make_nix_tar cc-rpi
# generate ClassiCube.app for mac users
cd $BUILDS_DIR/mac32/
make_mac_tar cc-osx32
cd $BUILDS_DIR/mac64/
make_mac_tar cc-osx64

View File

@ -1,33 +0,0 @@
import requests, re, datetime, json, time, os
# Any resemblence to any discord bots written by 123DMWM is purely coincidental. I swear.
# The URL of the discord channel webhook to notify
# You can generate a webhook by right clicking channel -> Edit Channel -> Webhooks
WEBHOOK_URL = ''
# The ID of the user you want to ping on a build failure
# You can get this by right clicking user -> Copy ID
# You may have to go to settings -> Appearance -> Check Developer Mode to see this option
TARGET_USER = ''
def notify_webhook(body):
try:
webhook_data = {
"username": "CC BuildBot",
"avatar_url": "https://static.classicube.net/img/cc-cube-small.png",
"content" : body
}
r = requests.post(WEBHOOK_URL, json=webhook_data)
print("BuildNotify response: " + r.text)
except Exception as e:
print("BuildNotify failed: %s" % (e))
cc_errors = None
try:
with open('client/cc_errors.txt', 'r') as file:
cc_errors = file.read()
except FileNotFoundError:
# nothing to as no compile errors
pass
if cc_errors:
notify_webhook('**Houston, we have a problem** <@%s>\n\n%s' % (TARGET_USER, cc_errors))

View File

@ -2,8 +2,5 @@ This folder contains build scripts for automatically compiling ClassiCube
|File|Description|
|--------|-------|
|buildbot.sh | Compiles the game to optimised executables (with icons) |
|buildbot_plugin.sh | Compiles specified plugin for various platforms |
|buildtestplugin.sh | Example script for how to use buildbot_plugin.sh |
|makerelease.sh | Packages the executables to produce files for a release |
|notify.py | Notifies a user on Discord if buildbot fails |

Some files were not shown because too many files have changed in this diff Show More