Compare commits

...

748 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
Big Titted Goth Neko 9b155a3793 Disable save level button on Classic mode 2024-09-03 17:00:03 +01:00
1187 changed files with 41510 additions and 178282 deletions

View File

@ -17,3 +17,4 @@ runs:
with: with:
name: ${{ inputs.DEST_NAME }} name: ${{ inputs.DEST_NAME }}
path: ${{ inputs.SOURCE_FILE }} path: ${{ inputs.SOURCE_FILE }}
if-no-files-found: error

View File

@ -13,6 +13,7 @@ concurrency:
jobs: jobs:
build-3DS: build-3DS:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: devkitpro/devkitarm:latest image: devkitpro/devkitarm:latest
@ -24,13 +25,6 @@ jobs:
make 3ds make 3ds
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 3DS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -55,3 +49,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: '3ds' WORKFLOW_NAME: '3ds'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce 3DS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -1,5 +1,11 @@
name: Build latest (Android2) name: Build latest (Android2)
on: [push] # trigger via either push to selected branches or on manual run
on:
push:
branches:
- main
- master
workflow_dispatch:
concurrency: concurrency:
group: ${{ github.ref }}-android group: ${{ github.ref }}-android
@ -7,31 +13,16 @@ concurrency:
jobs: jobs:
build: build:
if: github.ref_name == github.event.repository.default_branch timeout-minutes: 10
runs-on: ubuntu-20.04 runs-on: ubuntu-latest
container: container:
image: ghcr.io/saschpe/android-ndk:34-jdk17.0.8_7-ndk25.2.9519653-cmake3.22.1 image: ghcr.io/saschpe/android-ndk:34-jdk17.0.8_7-ndk25.2.9519653-cmake3.22.1
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Compile android builds - name: Retrieve dependencies
shell: bash shell: bash
id: compile
env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
DROID_FLAGS: "-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
DROID_LIBS: "-lGLESv2 -lEGL -lm -landroid -llog"
run: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
DROID_FLAGS="-fPIC -shared -s -O1 -fvisibility=hidden -rdynamic -funwind-tables"
DROID_LIBS="-lGLESv2 -lEGL -lm -landroid -llog"
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"
mkdir build-tools mkdir build-tools
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/build-tools.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/build-tools.zip
unzip build-tools.zip -d build-tools unzip build-tools.zip -d build-tools
@ -39,21 +30,38 @@ jobs:
chmod +x build-tools/dx chmod +x build-tools/dx
chmod +x build-tools/zipalign chmod +x build-tools/zipalign
cd $ROOT_DIR/src - name: Compile android builds
$NDK_ROOT/armv7a-linux-androideabi19-clang *.c $DROID_FLAGS -march=armv5 $DROID_LIBS $LATEST_FLAG -o cc-droid-arm_16 shell: bash
$NDK_ROOT/armv7a-linux-androideabi19-clang *.c $DROID_FLAGS $DROID_LIBS $LATEST_FLAG -o cc-droid-arm_32 id: compile
$NDK_ROOT/aarch64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS $LATEST_FLAG -o cc-droid-arm_64 env:
$NDK_ROOT/i686-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS $LATEST_FLAG -o cc-droid-x86_32 COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Werror"
$NDK_ROOT/x86_64-linux-android21-clang *.c $DROID_FLAGS $DROID_LIBS $LATEST_FLAG -o cc-droid-x86_64 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 cd $ROOT_DIR/android/app/src/main
# copy required native libraries # copy required native libraries
mkdir lib lib/armeabi lib/armeabi-v7a lib/arm64-v8a lib/x86 lib/x86_64 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/cc-droid-arm_16 lib/armeabi/libclassicube.so
cp $ROOT_DIR/src/cc-droid-arm_32 lib/armeabi-v7a/libclassicube.so cp $ROOT_DIR/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/cc-droid-arm_64 lib/arm64-v8a/libclassicube.so
cp $ROOT_DIR/src/cc-droid-x86_32 lib/x86/libclassicube.so cp $ROOT_DIR/cc-droid-x86_32 lib/x86/libclassicube.so
cp $ROOT_DIR/src/cc-droid-x86_64 lib/x86_64/libclassicube.so cp $ROOT_DIR/cc-droid-x86_64 lib/x86_64/libclassicube.so
# The following commands are for manually building an .apk, see # 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://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/
@ -71,29 +79,44 @@ jobs:
echo -n "${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}" | base64 --decode > debug.keystore echo -n "${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}" | base64 --decode > debug.keystore
# compile the multiple .class files into one .dex file # compile the multiple .class files into one .dex file
$TOOLS_ROOT/dx --dex --output=obj/classes.dex ./obj $TOOLS_ROOT/dx --dex --output=classes.dex ./obj
# create initial .apk with packaged version of resources # 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 $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 # and add all the required files
cp obj/classes.dex classes.dex $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
$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/) # sign the apk with debug key (https://stackoverflow.com/questions/16711233/)
cp obj/cc-unsigned.apk obj/cc-signed.apk # Note per https://developer.android.com/tools/zipalign
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore debug.keystore -storepass android -keypass android obj/cc-signed.apk androiddebugkey # - 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 # jarsigner -verbose
# create aligned .apk file # create aligned .apk file
$TOOLS_ROOT/zipalign -f 4 obj/cc-signed.apk $ROOT_DIR/src/cc.apk #$TOOLS_ROOT/zipalign -f 4 cc-signed.apk $ROOT_DIR/src/cc.apk
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile android build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc.apk' SOURCE_FILE: 'src/cc.apk'
DEST_NAME: 'ClassiCube.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 }}'

View File

@ -13,36 +13,40 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/kos-builds/kos-dc:sha-656a397-14.1.0 image: ghcr.io/kos-builds/kos-dc:sha-20149ee-14.2.0
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile Dreamcast build - name: Install prerequisites
id: compile
shell: bash shell: bash
run: | run: |
apt-get update apt-get update
apt-get -y install genisoimage apt-get -y install genisoimage
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/cdi4dc -O /opt/toolchains/dc/kos/utils/cdi4dc 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 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 export PATH=/opt/toolchains/dc/kos/utils/:$PATH
make dreamcast make dreamcast
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Dreamcast build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-dc.cdi' SOURCE_FILE: 'ClassiCube-dc.cdi'
DEST_NAME: '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 - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -55,3 +59,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'dreamcast' WORKFLOW_NAME: 'dreamcast'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Dreamcast build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,63 +13,57 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: empterdose/freebsd-cross-build:11.4 image: empterdose/freebsd-cross-build:11.4
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites - name: Install prerequisites
run: apk add bash wget run: apk add bash wget curl
- name: Retrieve OpenGL and X11 dev files (64 bit) - name: Retrieve OpenGL and X11 dev files (64 bit)
run: | run: |
mkdir src/freebsd64 mkdir freebsd64
cd src/freebsd64 cd freebsd64
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd64.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd64.zip
unzip freebsd64.zip unzip freebsd64.zip
- name: Retrieve OpenGL and X11 dev files (32 bit) - name: Retrieve OpenGL and X11 dev files (32 bit)
run: | run: |
mkdir src/freebsd32 mkdir freebsd32
cd src/freebsd32 cd freebsd32
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd32.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/freebsd32.zip
unzip freebsd32.zip unzip freebsd32.zip
- name: Compile FreeBSD builds - name: Compile FreeBSD builds
id: compile id: compile
shell: bash shell: bash
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
PLAT32_FLAGS: "-fno-pie -fvisibility=hidden -fcf-protection=none -rdynamic -DCC_BUILD_ICON -I freebsd32/include -L freebsd32/lib" SRCS: "src/*.c third_party/bearssl/*.c"
PLAT64_FLAGS: "-fno-pie -fvisibility=hidden -fcf-protection=none -rdynamic -DCC_BUILD_ICON -I freebsd64/include -L freebsd64/lib" 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: | run: |
apk add curl
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
cd src i386-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT32_FLAGS }} $LATEST_FLAG -o cc-fbsd32-gl1 ${{ env.LIBS }}
i386-freebsd11-clang *.c ${{ env.COMMON_FLAGS }} ${{ env.PLAT32_FLAGS }} $LATEST_FLAG -o cc-fbsd32-gl1 -lm -lpthread -lX11 -lXi -lGL -lexecinfo x86_64-freebsd11-clang ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-fbsd64-gl1 ${{ env.LIBS }}
x86_64-freebsd11-clang *.c ${{ env.COMMON_FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-fbsd64-gl1 -lm -lpthread -lX11 -lXi -lGL -lexecinfo
# otherwise notify_failure doesn't work
- name: Install curl when necessary
if: ${{ always() && steps.compile.outcome == 'failure' }}
run: apk add curl
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile FreeBSD build(s)'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-fbsd32-gl1' SOURCE_FILE: 'cc-fbsd32-gl1'
DEST_NAME: 'ClassiCube-FreeBSD-32' DEST_NAME: 'ClassiCube-FreeBSD-32'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-fbsd64-gl1' SOURCE_FILE: 'cc-fbsd64-gl1'
DEST_NAME: 'ClassiCube-FreeBSD-64' DEST_NAME: 'ClassiCube-FreeBSD-64'
@ -78,3 +72,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'freebsd' 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

@ -12,32 +12,28 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-haiku: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: haiku/cross-compiler:x86_64-r1beta4 image: haiku/cross-compiler:x86_64-r1beta4
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile haiku build - name: Compile haiku build
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" 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: | run: |
cd src x86_64-unknown-haiku-gcc ${{ env.SRCS }} -o ClassiCube-haiku ${{ env.COMMON_FLAGS }} ${{ env.LIBS }}
x86_64-unknown-haiku-gcc *.c Platform_BeOS.cpp Window_BeOS.cpp -o ClassiCube-haiku ${{ env.COMMON_FLAGS }} -lm -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker
- 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 - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/ClassiCube-haiku' SOURCE_FILE: 'ClassiCube-haiku'
DEST_NAME: 'ClassiCube-haiku' DEST_NAME: 'ClassiCube-haiku'
@ -46,3 +42,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'haiku' WORKFLOW_NAME: 'haiku'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Haiku build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,29 +13,25 @@ concurrency:
jobs: jobs:
build: build:
runs-on: macOS-12 timeout-minutes: 10
runs-on: macOS-14
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Compile iOS build - name: Compile iOS build
id: compile id: compile
run: | run: |
cd ios 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 xcodebuild -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
cd build/Release-iphoneos cd build/Release-iphoneos
mkdir Payload mkdir Payload
mv ClassiCube.app Payload/ClassiCube.app mv ClassiCube.app Payload/ClassiCube.app
zip -r cc.ipa Payload zip -r cc.ipa Payload
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile iOS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ios/build/Release-iphoneos/cc.ipa' SOURCE_FILE: 'misc/ios/build/Release-iphoneos/cc.ipa'
DEST_NAME: 'cc.ipa' DEST_NAME: 'cc.ipa'
@ -44,3 +40,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ios' WORKFLOW_NAME: 'ios'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce iOS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -18,46 +18,50 @@ jobs:
# =============== 32 BIT LINUX ============== # =============== 32 BIT LINUX ==============
# =========================================== # ===========================================
build-32: build-32:
runs-on: ubuntu-20.04 timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install packages - name: Install packages
shell: bash shell: bash
run: | run: |
sudo dpkg --add-architecture i386 apt-get -y update
sudo apt-get -y update apt-get -y install gcc-multilib wget curl unzip
sudo apt-get -y install gcc-multilib libx11-dev:i386 libxi-dev:i386 libgl1-mesa-dev:i386
- 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 - name: Compile 32 bit Linux builds
shell: bash shell: bash
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
NIX32_FLAGS: "-no-pie -fno-pie -m32 -fvisibility=hidden -fcf-protection=none -rdynamic -DCC_BUILD_ICON" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
cd src gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -o cc-nix32-gl1 ${{ env.LIBS }}
gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -o cc-nix32-gl1 -lX11 -lXi -lpthread -lGL -lm -ldl gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix32-gl2 ${{ env.LIBS }}
gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.NIX32_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix32-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 32 bit Linux build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-nix32-gl1' SOURCE_FILE: 'cc-nix32-gl1'
DEST_NAME: 'ClassiCube-Linux32-OpenGL' DEST_NAME: 'ClassiCube-Linux32-OpenGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-nix32-gl2' SOURCE_FILE: 'cc-nix32-gl2'
DEST_NAME: 'ClassiCube-Linux32-ModernGL' DEST_NAME: 'ClassiCube-Linux32-ModernGL'
@ -67,54 +71,69 @@ jobs:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'linux32' 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 ============== # =============== 64 BIT LINUX ==============
# =========================================== # ===========================================
build-64: build-64:
runs-on: ubuntu-20.04 timeout-minutes: 10
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
steps: steps:
- uses: actions/checkout@v4 - 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 - name: Compile 64 bit Linux builds
shell: bash shell: bash
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lX11 -lXi -lpthread -lGL -lm -ldl"
NIX64_FLAGS: "-no-pie -fno-pie -m64 -fvisibility=hidden -fcf-protection=none -rdynamic -DCC_BUILD_ICON" 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: | run: |
sudo apt-get -y update LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
sudo apt-get -y install libx11-dev libxi-dev libgl1-mesa-dev libsdl2-dev
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cd src gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -o cc-nix64-gl1 ${{ env.LIBS }}
gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -o cc-nix64-gl1 -lX11 -lXi -lpthread -lGL -lm -ldl gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix64-gl2 ${{ env.LIBS }}
gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.NIX64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-nix64-gl2 -lX11 -lXi -lpthread -lGL -lm -ldl #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 }}
gcc *.c ${{ env.COMMON_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 -lpthread -lGL -lm -ldl
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 64 bit Linux build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-nix64-gl1' SOURCE_FILE: 'cc-nix64-gl1'
DEST_NAME: 'ClassiCube-Linux64-OpenGL' DEST_NAME: 'ClassiCube-Linux64-OpenGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-nix64-gl2' SOURCE_FILE: 'cc-nix64-gl2'
DEST_NAME: 'ClassiCube-Linux64-ModernGL' DEST_NAME: 'ClassiCube-Linux64-ModernGL'
- uses: ./.github/actions/upload_build # - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} # if: ${{ always() && steps.compile.outcome == 'success' }}
with: # with:
SOURCE_FILE: 'src/cc-sdl64-gl2' # SOURCE_FILE: 'cc-sdl64-gl2'
DEST_NAME: 'ClassiCube-Linux64-SDL2' # DEST_NAME: 'ClassiCube-Linux64-SDL2'
- uses: ./.github/actions/notify_success - uses: ./.github/actions/notify_success
@ -122,3 +141,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'linux64' 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 }}'

View File

@ -13,70 +13,87 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/classicube/minimal-osxcross:latest image: ghcr.io/classicube/minimal-osxcross:latest
credentials: credentials:
username: UnknownShadow200 username: ${{ github.actor }}
password: ${{ secrets.GHCR_ACCESS_KEY }} password: ${{ secrets.GITHUB_TOKEN }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile 32 bit macOS builds - name: Compile 32 bit macOS builds
shell: bash shell: bash
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic -DCC_BUILD_ICON" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
cd src
PATH=$PATH:/usr/local/compiler/target/bin PATH=$PATH:/usr/local/compiler/target/bin
i386-apple-darwin8-clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1 i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 ${{ env.LIBS }}
i386-apple-darwin8-clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac32-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1 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) - name: Compile 32 bit macOS builds (PowerPC)
shell: bash shell: bash
id: compile_ppc id: compile_ppc
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -static-libgcc -Wl,-no_compact_unwind -DCC_BUILD_ICON -isystem /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk -Wl,-syslibroot /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
mkdir -p /home/minty/repos/osxcross-ppc-test/target/bin 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 ln -s /usr/local/compiler/ppc/target/bin/powerpc64-apple-darwin9-as /home/minty/repos/osxcross-ppc-test/target/bin/powerpc64-apple-darwin9-as
cd src
PATH=$PATH:/usr/local/compiler/ppc/target/bin PATH=$PATH:/usr/local/compiler/ppc/target/bin
powerpc-apple-darwin9-base-gcc *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-ppc -mmacosx-version-min=10.2.0 -m32 -framework Cocoa -framework OpenGL -framework IOKit -lobjc 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
- uses: ./.github/actions/notify_failure shell: bash
if: ${{ always() && steps.compile.outcome == 'failure' }} id: gen_universal
with: run: |
NOTIFY_MESSAGE: 'Failed to compile 32 bit macOS build' PATH=$PATH:/usr/local/compiler/target/bin
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}' i386-apple-darwin8-lipo -create -output cc-mac32-universal cc-mac32-gl1 cc-mac32-ppc
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac32-gl1' SOURCE_FILE: 'cc-mac32-gl1'
DEST_NAME: 'ClassiCube-mac32-OpenGL' DEST_NAME: 'ClassiCube-mac32-OpenGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac32-gl2' SOURCE_FILE: 'cc-mac32-gl2'
DEST_NAME: 'ClassiCube-mac32-ModernGL' DEST_NAME: 'ClassiCube-mac32-ModernGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile_ppc.outcome == 'success' }} if: ${{ always() && steps.compile_ppc.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac32-ppc' SOURCE_FILE: 'cc-mac32-ppc'
DEST_NAME: 'ClassiCube-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 - uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'mac32' 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 }}'

View File

@ -15,6 +15,7 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: macOS-latest runs-on: macOS-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -22,42 +23,37 @@ jobs:
shell: bash shell: bash
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc"
MAC_ARM64_FLAGS: "-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -arch arm64" SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/*.c"
MAC_INTEL64_FLAGS: "-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -arch x86_64" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\" LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cd src
MACOSX_DEPLOYMENT_TARGET=10.5 clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_INTEL64_FLAGS }} $LATEST_FLAG -o cc-mac64-gl1 -framework Cocoa -framework OpenGL -framework IOKit -lobjc 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 *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_INTEL64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac64-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc 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 *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_ARM64_FLAGS }} $LATEST_FLAG -o cc-mac-arm64 -framework Cocoa -framework OpenGL -framework IOKit -lobjc 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 # https://wiki.freepascal.org/Code_Signing_for_macOS#Ad_hoc_signing
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 64 bit macOS builds'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac64-gl1' SOURCE_FILE: 'cc-mac64-gl1'
DEST_NAME: 'ClassiCube-mac64-OpenGL' DEST_NAME: 'ClassiCube-mac64-OpenGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac64-gl2' SOURCE_FILE: 'cc-mac64-gl2'
DEST_NAME: 'ClassiCube-mac64-ModernGL' DEST_NAME: 'ClassiCube-mac64-ModernGL'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-mac-arm64' SOURCE_FILE: 'cc-mac-arm64'
DEST_NAME: 'ClassiCube-mac-ARM64' DEST_NAME: 'ClassiCube-mac-ARM64'
@ -66,3 +62,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'mac64' 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 }}'

View File

@ -12,7 +12,8 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-mac-classic: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/autc04/retro68 image: ghcr.io/autc04/retro68
@ -21,16 +22,16 @@ jobs:
- name: Compile Mac classic build - name: Compile Mac classic build
id: compile id: compile
run: | run: |
make macclassic_68k RETRO68=/Retro68-build/toolchain
make macclassic_ppc RETRO68=/Retro68-build/toolchain 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/notify_failure - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'failure' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
NOTIFY_MESSAGE: 'Failed to compile Mac Classic build' SOURCE_FILE: 'ClassiCube-ppc.dsk'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}' DEST_NAME: 'ClassiCube-ppc.dsk'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
@ -41,5 +42,19 @@ jobs:
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-ppc.dsk' SOURCE_FILE: 'ClassiCube-68040.dsk'
DEST_NAME: 'ClassiCube-ppc.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 }}'

View File

@ -13,16 +13,20 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/dragonminded/libdragon:latest image: ghcr.io/dragonminded/libdragon:preview
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile N64 build - name: Install prerequisites
id: compile
run: | run: |
apt-get update apt-get update
apt-get -y install curl apt-get -y install curl
- name: Compile N64 build
id: compile
run: |
REAL_DIR=`pwd` REAL_DIR=`pwd`
cd /tmp cd /tmp
git clone -b opengl https://github.com/DragonMinded/libdragon.git --depth=1 git clone -b opengl https://github.com/DragonMinded/libdragon.git --depth=1
@ -33,13 +37,6 @@ jobs:
make n64 make n64
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile N64 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -58,3 +55,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'n64' WORKFLOW_NAME: 'n64'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce N64 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -12,47 +12,49 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-DS: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: skylyrac/blocksds:dev-latest image: skylyrac/blocksds:dev-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get update
apt-get -y install curl
- name: Compile NDS build - name: Compile NDS build
id: compile id: compile
run: | run: |
apt-get -y install curl
export BLOCKSDS=/opt/blocksds/core
export BLOCKSDSEXT=/opt/blocksds/external
make ds make ds
export BUILD_DSI=1 export BUILD_NONET=1
make ds make ds
- uses: ./.github/actions/notify_failure - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'failure' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
NOTIFY_MESSAGE: 'Failed to compile NDS build' SOURCE_FILE: 'ClassiCube.nds'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}' DEST_NAME: 'ClassiCube.nds'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-nds.nds' SOURCE_FILE: 'build/nds/cc-arm9.elf'
DEST_NAME: 'ClassiCube-nds.nds' DEST_NAME: 'ClassiCube.elf'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'build-nds/ClassiCube.elf' SOURCE_FILE: 'ClassiCube-nonet.nds'
DEST_NAME: 'ClassiCube-nds.elf' DEST_NAME: 'ClassiCube-nonet.nds'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-dsi.nds' SOURCE_FILE: 'build/nds_nonet/cc-arm9.elf'
DEST_NAME: 'ClassiCube-dsi.nds' DEST_NAME: 'ClassiCube-nonet.elf'
- uses: ./.github/actions/notify_success - uses: ./.github/actions/notify_success
@ -60,3 +62,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'nds' WORKFLOW_NAME: 'nds'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce NDS build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,6 +13,7 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/cross-rs/x86_64-unknown-netbsd:edge image: ghcr.io/cross-rs/x86_64-unknown-netbsd:edge
@ -22,37 +23,32 @@ jobs:
run: | run: |
apt-get update apt-get update
apt-get -y install zip wget apt-get -y install zip wget
- name: Retrieve OpenGL and X11 dev files (64 bit) - name: Retrieve OpenGL and X11 dev files (64 bit)
run: | run: |
mkdir src/netbsd64 mkdir netbsd64
cd src/netbsd64 cd netbsd64
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/netbsd64.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/netbsd64.zip
unzip netbsd64.zip unzip netbsd64.zip
- name: Compile NetBSD builds - name: Compile NetBSD builds
id: compile id: compile
shell: bash shell: bash
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lm -lpthread -lX11 -lXi -lGL -lexecinfo"
PLAT64_FLAGS: "-fno-pie -fvisibility=hidden -fcf-protection=none -rdynamic -DCC_BUILD_ICON -I netbsd64/include -L netbsd64/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
echo $LATEST_FLAG
cd src x86_64-unknown-netbsd-gcc ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-netbsd64-gl1 ${{ env.LIBS }}
x86_64-unknown-netbsd-gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.PLAT64_FLAGS }} $LATEST_FLAG -o cc-netbsd64-gl1 -lm -lpthread -lX11 -lXi -lGL -lexecinfo
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile NetBSD build(s)'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-netbsd64-gl1' SOURCE_FILE: 'cc-netbsd64-gl1'
DEST_NAME: 'ClassiCube-NetBSD-64' DEST_NAME: 'ClassiCube-NetBSD-64'
@ -61,3 +57,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'netbsd' WORKFLOW_NAME: 'netbsd'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce NetBSD build(s)'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,51 +13,46 @@ concurrency:
jobs: jobs:
build-PS1: build-PS1:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/classicube/minimal-psn00b:latest image: ghcr.io/classicube/minimal-psn00b:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile PS1 build - name: Install prerequisites
id: compile
run: | run: |
apt-get update apt-get update
apt-get install -y curl apt-get install -y curl
export PSNOOB=/usr/local/psnoob
export PATH=$PATH:$PSNOOB/bin - name: Compile PS1 build
export PSN00BSDK_LIBS=$PSNOOB/lib/libpsn00b id: compile
run: |
export PSN00BSDK_ROOT=/usr/local/psnoob
make ps1 make ps1
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile PS1 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'misc/ps1/build/ClassiCube-PS1.elf' SOURCE_FILE: 'build/ps1/ClassiCube-ps1.elf'
DEST_NAME: 'ClassiCube-PS1.elf' DEST_NAME: 'ClassiCube-PS1.elf'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'misc/ps1/build/ClassiCube-PS1.exe' SOURCE_FILE: 'ClassiCube-ps1.exe'
DEST_NAME: 'ClassiCube-PS1.exe' DEST_NAME: 'ClassiCube-PS1.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'misc/ps1/build/ClassiCube-PS1.bin' SOURCE_FILE: 'ClassiCube-ps1.bin'
DEST_NAME: 'ClassiCube-PS1.bin' DEST_NAME: 'ClassiCube-PS1.bin'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'misc/ps1/build/ClassiCube-PS1.cue' SOURCE_FILE: 'ClassiCube-ps1.cue'
DEST_NAME: 'ClassiCube-PS1.cue' DEST_NAME: 'ClassiCube-PS1.cue'
@ -66,3 +61,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps1' WORKFLOW_NAME: 'ps1'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PS1 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,25 +13,22 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/ps2dev/ps2sdk:latest image: ghcr.io/ps2dev/ps2sdk:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add make mpc1 curl
- name: Compile PS2 build - name: Compile PS2 build
id: compile id: compile
run: | run: |
apk add make mpc1 curl
make ps2 make ps2
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile PS2 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -50,3 +47,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps2' WORKFLOW_NAME: 'ps2'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PS2 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,16 +13,20 @@ concurrency:
jobs: jobs:
build-PS3: build-PS3:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/classicube/minimal-psl1ght:latest image: ghcr.io/classicube/minimal-psl1ght:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile PS3 build - name: Install prerequisites
id: compile
run: | run: |
apt-get update apt-get update
apt-get install -y curl apt-get install -y curl
- name: Compile PS3 build
id: compile
run: |
export PS3DEV=/usr/local/ps3dev export PS3DEV=/usr/local/ps3dev
export PSL1GHT=/usr/local/ps3dev export PSL1GHT=/usr/local/ps3dev
export PATH=$PATH:$PS3DEV/bin export PATH=$PATH:$PS3DEV/bin
@ -30,13 +34,6 @@ jobs:
make ps3 make ps3
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile PS3 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -61,3 +58,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'ps3' 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

@ -12,27 +12,23 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-PSP: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: pspdev/pspdev:latest image: pspdev/pspdev:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add curl curl-dev
- name: Compile PSP build - name: Compile PSP build
id: compile id: compile
run: | run: |
apk add curl curl-dev
export PSPSDK=$(psp-config --pspsdk-path)
make psp 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 - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -51,3 +47,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'psp' WORKFLOW_NAME: 'psp'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce PSP build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -16,40 +16,37 @@ jobs:
# ================ 32 BIT RPI =============== # ================ 32 BIT RPI ===============
# =========================================== # ===========================================
build-RPI32: build-RPI32:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: dockcross/linux-armv6-lts image: dockcross/linux-armv6-lts
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Retrieve OpenGL and X11 dev files - name: Retrieve OpenGL and X11 dev files
run: | run: |
mkdir src/rpi mkdir rpi
cd src/rpi cd rpi
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi32.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi32.zip
unzip rpi32.zip unzip rpi32.zip
- name: Compile RPI 32 bit build - name: Compile RPI 32 bit build
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
RPI32_FLAGS: "-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\" LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
cd src $CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI32_FLAGS }} $LATEST_FLAG -o cc-rpi32 ${{ env.LIBS }}
$CC *.c ${{ env.COMMON_FLAGS }} ${{ env.RPI32_FLAGS }} $LATEST_FLAG -o cc-rpi32 -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile RPI 32 bit build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-rpi32' SOURCE_FILE: 'cc-rpi32'
DEST_NAME: 'cc-rpi32' DEST_NAME: 'cc-rpi32'
@ -60,44 +57,48 @@ jobs:
WORKFLOW_NAME: 'rpi32' 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 =============== # ================ 64 BIT RPI ===============
# =========================================== # ===========================================
build-RPI64: build-RPI64:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: dockcross/linux-arm64-lts image: dockcross/linux-arm64-lts
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Retrieve OpenGL and X11 dev files - name: Retrieve OpenGL and X11 dev files
run: | run: |
mkdir src/rpi mkdir rpi
cd src/rpi cd rpi
wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi64.zip wget https://github.com/ClassiCube/rpi-compiling-stuff/raw/main/rpi64.zip
unzip rpi64.zip unzip rpi64.zip
- name: Compile RPI 64 bit build - name: Compile RPI 64 bit build
id: compile id: compile
env: env:
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" LIBS: "-lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt"
RPI64_FLAGS: "-fvisibility=hidden -rdynamic -DCC_BUILD_ICON -DCC_BUILD_RPI -I rpi/include -L rpi/lib -Wl,--unresolved-symbols=ignore-in-shared-libs" 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: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\" LATEST_FLAG=-DCC_COMMIT_SHA=\"$GITHUB_SHA\"
cd src $CC ${{ env.SRCS }} ${{ env.FLAGS }} ${{ env.RPI64_FLAGS }} $LATEST_FLAG -o cc-rpi64 ${{ env.LIBS }}
$CC *.c ${{ env.COMMON_FLAGS }} ${{ env.RPI64_FLAGS }} $LATEST_FLAG -o cc-rpi64 -lGLESv2 -lEGL -lX11 -lXi -lm -lpthread -ldl -lrt
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile RPI 64 bit build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-rpi64' SOURCE_FILE: 'cc-rpi64'
DEST_NAME: 'cc-rpi64' DEST_NAME: 'cc-rpi64'
@ -106,3 +107,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'rpi64' 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 }}'

View File

@ -13,29 +13,27 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ijacquez/yaul:1.0.10 image: ijacquez/yaul:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites
run: |
apt-get --allow-releaseinfo-change update
apt-get install -y curl
- name: Compile Saturn build - name: Compile Saturn build
id: compile id: compile
run: | run: |
apt-get update
apt-get -y install curl
make saturn make saturn
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Saturn build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'build-saturn/ClassiCube-saturn.elf' SOURCE_FILE: 'build/saturn/ClassiCube-saturn.elf'
DEST_NAME: 'ClassiCube-saturn.elf' DEST_NAME: 'ClassiCube-saturn.elf'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
@ -56,3 +54,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'saturn' WORKFLOW_NAME: 'saturn'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Saturn build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -12,7 +12,8 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-switch: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: devkitpro/devkita64:latest image: devkitpro/devkita64:latest
@ -24,13 +25,6 @@ jobs:
make switch make switch
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Switch build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -49,3 +43,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'switch' 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 }}'

View File

@ -12,7 +12,8 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-Vita: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: vitasdk/vitasdk:latest image: vitasdk/vitasdk:latest
@ -24,13 +25,6 @@ jobs:
make vita make vita
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Vita build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -49,3 +43,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'vita' WORKFLOW_NAME: 'vita'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Vita build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -13,6 +13,7 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: trzeci/emscripten-fastcomp:1.39.0 image: trzeci/emscripten-fastcomp:1.39.0
@ -20,21 +21,16 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compiles webclient - name: Compiles webclient
id: compile id: compile
env:
SRCS: "src/*.c src/webclient/*.c"
run: | run: |
cd src 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
emcc *.c -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 interop_web.js -Os -g2 -s SINGLE_FILE
sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' ClassiCube.js sed -i 's#eventHandler.useCapture);#{ useCapture: eventHandler.useCapture, passive: false });#g' ClassiCube.js
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Webclient'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/ClassiCube.js' SOURCE_FILE: 'ClassiCube.js'
DEST_NAME: 'ClassiCube.js' DEST_NAME: 'ClassiCube.js'
@ -43,3 +39,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'webclient' WORKFLOW_NAME: 'webclient'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Webclient'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -1,4 +1,4 @@
name: Build latest (Wii/GameCube) name: Build latest (Wii)
# trigger via either push to selected branches or on manual run # trigger via either push to selected branches or on manual run
on: on:
push: push:
@ -8,22 +8,21 @@ on:
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:
group: ${{ github.ref }}-wiigc group: ${{ github.ref }}-wii
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: devkitpro/devkitppc:latest image: devkitpro/devkitppc:latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Compile Wii and GameCube build - name: Compile Wii build
id: compile id: compile
run: | run: |
make wii make wii
make clean
make gamecube
- name: Create Wii homebrew - name: Create Wii homebrew
run: | run: |
@ -33,37 +32,18 @@ jobs:
cp misc/wii/meta.xml wiitest/apps/ClassiCube/meta.xml cp misc/wii/meta.xml wiitest/apps/ClassiCube/meta.xml
- 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 - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-wii.dol' SOURCE_FILE: 'ClassiCube-wii.dol'
DEST_NAME: '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'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'ClassiCube-wii.elf' SOURCE_FILE: 'ClassiCube-wii.elf'
DEST_NAME: 'ClassiCube-wii.elf' DEST_NAME: 'ClassiCube-wii.elf'
- 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/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -75,4 +55,11 @@ jobs:
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'wiigc' 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

@ -13,6 +13,7 @@ concurrency:
jobs: jobs:
build: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: devkitpro/devkitppc:latest image: devkitpro/devkitppc:latest
@ -24,13 +25,6 @@ jobs:
make wiiu make wiiu
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile WiiU build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
@ -55,3 +49,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'wiiu' WORKFLOW_NAME: 'wiiu'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce WiiU build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -16,6 +16,7 @@ jobs:
# ============== ARM32 WINDOWS ============== # ============== ARM32 WINDOWS ==============
# =========================================== # ===========================================
build-32: build-32:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: dockcross/windows-armv7 image: dockcross/windows-armv7
@ -25,30 +26,32 @@ jobs:
shell: bash shell: bash
id: compile id: compile
env: env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" 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" WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
run: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
cd src armv7-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-arm32-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
armv7-w64-mingw32-gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-arm32-d3d11.exe $LATEST_FLAG -lwinmm -limagehlp
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 32 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-arm32-d3d11.exe' SOURCE_FILE: 'cc-arm32-d3d11.exe'
DEST_NAME: 'ClassiCube-arm32-Direct3D11.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 ============== # ============== ARM64 WINDOWS ==============
# =========================================== # ===========================================
build-64: build-64:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: dockcross/windows-arm64 image: dockcross/windows-arm64
@ -58,23 +61,32 @@ jobs:
shell: bash shell: bash
id: compile id: compile
env: env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" 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" WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11"
run: | run: |
LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\"
cd src aarch64-w64-mingw32-gcc ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-arm64-d3d11.exe $LATEST_FLAG ${{ env.LIBS }}
aarch64-w64-mingw32-gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-arm64-d3d11.exe $LATEST_FLAG -lwinmm -limagehlp
- uses: ./.github/actions/notify_failure - uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }} if: failure()
with: with:
NOTIFY_MESSAGE: 'Failed to compile 64 bit Windows build' NOTIFY_MESSAGE: 'Failed to produce 64 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}' WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-arm64-d3d11.exe' SOURCE_FILE: 'cc-arm64-d3d11.exe'
DEST_NAME: 'ClassiCube-arm64-Direct3D11.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 }}'

View File

@ -18,58 +18,58 @@ jobs:
# ============== 32 BIT WINDOWS ============= # ============== 32 BIT WINDOWS =============
# =========================================== # ===========================================
build-32: build-32:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - 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 - name: Compile 32 bit Windows builds
shell: bash shell: bash
id: compile id: compile
env: env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN CCicon_32.res" WIN32_FLAGS: "-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN src/CCicon_32.res"
run: | run: |
sudo apt-get -y install gcc-mingw-w64-i686
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\" LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cp misc/windows/CCicon_32.res src/CCicon_32.res cp misc/windows/CCicon_32.res src/CCicon_32.res
cd src
i686-w64-mingw32-gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d9.exe $LATEST_FLAG -lwinmm -limagehlp 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 *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 -lwinmm -limagehlp -lopengl32 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 *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN32_FLAGS }} -o cc-w32-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 -lwinmm -limagehlp 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 # mingw defaults to i686, but some really old CPUs only support i586
i686-w64-mingw32-gcc *.c ${{ 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 -lwinmm -limagehlp -lopengl32 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/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 32 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w32-d3d9.exe' SOURCE_FILE: 'cc-w32-d3d9.exe'
DEST_NAME: 'ClassiCube-Win32-Direct3D9.exe' DEST_NAME: 'ClassiCube-Win32-Direct3D9.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w32-ogl.exe' SOURCE_FILE: 'cc-w32-ogl.exe'
DEST_NAME: 'ClassiCube-Win32-OpenGL.exe' DEST_NAME: 'ClassiCube-Win32-OpenGL.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w32-d3d11.exe' SOURCE_FILE: 'cc-w32-d3d11.exe'
DEST_NAME: 'ClassiCube-Win32-Direct3D11.exe' DEST_NAME: 'ClassiCube-Win32-Direct3D11.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w9x-ogl.exe' SOURCE_FILE: 'cc-w9x-ogl.exe'
DEST_NAME: 'ClassiCube-Win9x.exe' DEST_NAME: 'ClassiCube-Win9x.exe'
@ -80,53 +80,60 @@ jobs:
WORKFLOW_NAME: 'win32' 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 ============= # ============== 64 BIT WINDOWS =============
# =========================================== # ===========================================
build-64: build-64:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - 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 - name: Compile 64 bit Windows builds
shell: bash shell: bash
id: compile id: compile
env: env:
LIBS: "-lwinmm -limagehlp"
SRCS: "src/*.c third_party/bearssl/*.c"
COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn"
WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN CCicon_64.res" WIN64_FLAGS: "-mwindows -nostartfiles -Wl,-emain_real -DCC_NOMAIN src/CCicon_64.res"
run: | run: |
sudo apt-get -y install gcc-mingw-w64-x86-64
LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\" LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\"
cp misc/windows/CCicon_64.res src/CCicon_64.res cp misc/windows/CCicon_64.res src/CCicon_64.res
cd src 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 *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d9.exe $LATEST_FLAG -lwinmm -limagehlp 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 *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-ogl.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL1 -lwinmm -limagehlp -lopengl32 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 }}
x86_64-w64-mingw32-gcc *.c ${{ env.COMMON_FLAGS }} ${{ env.WIN64_FLAGS }} -o cc-w64-d3d11.exe $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_D3D11 -lwinmm -limagehlp
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile 64 bit Windows build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w64-d3d9.exe' SOURCE_FILE: 'cc-w64-d3d9.exe'
DEST_NAME: 'ClassiCube-Win64-Direct3D9.exe' DEST_NAME: 'ClassiCube-Win64-Direct3D9.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w64-ogl.exe' SOURCE_FILE: 'cc-w64-ogl.exe'
DEST_NAME: 'ClassiCube-Win64-OpenGL.exe' DEST_NAME: 'ClassiCube-Win64-OpenGL.exe'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
SOURCE_FILE: 'src/cc-w64-d3d11.exe' SOURCE_FILE: 'cc-w64-d3d11.exe'
DEST_NAME: 'ClassiCube-Win64-Direct3D11.exe' DEST_NAME: 'ClassiCube-Win64-Direct3D11.exe'
@ -135,3 +142,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'win64' 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 }}'

View File

@ -12,26 +12,22 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-Xbox: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: ghcr.io/xboxdev/nxdk:git-e955705a image: ghcr.io/xboxdev/nxdk:git-e955705a
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Install prerequisites
run: |
apk add curl curl-dev
- name: Compile Xbox build - name: Compile Xbox build
id: compile id: compile
run: | run: |
apk add curl curl-dev
eval $(/usr/src/nxdk/bin/activate -s) eval $(/usr/src/nxdk/bin/activate -s)
make xbox make xbox
cp bin/default.xbe ClassiCube-xbox.xbe
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Xbox build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
@ -52,3 +48,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'xbox' WORKFLOW_NAME: 'xbox'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Xbox build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -12,28 +12,26 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
build-360: build:
timeout-minutes: 10
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: free60/libxenon image: free60/libxenon
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Compile 360 build - name: Install prerequisites
id: compile
run: | run: |
sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
apt-get update apt-get update
apt-get install -y curl apt-get install -y curl
- name: Compile 360 build
id: compile
run: |
export DEVKITXENON=/usr/local/xenon export DEVKITXENON=/usr/local/xenon
export PATH=$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin export PATH=$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin
make xbox360 make xbox360
- uses: ./.github/actions/notify_failure
if: ${{ always() && steps.compile.outcome == 'failure' }}
with:
NOTIFY_MESSAGE: 'Failed to compile Xbox 360 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
@ -53,3 +51,10 @@ jobs:
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'xbox360' WORKFLOW_NAME: 'xbox360'
- uses: ./.github/actions/notify_failure
if: failure()
with:
NOTIFY_MESSAGE: 'Failed to produce Xbox 360 build'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'

View File

@ -23,6 +23,7 @@ jobs:
run: | run: |
wget https://cdn.classicube.net/client/latest/ClassiCube.64.exe -O cc-w64.exe 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/ClassiCube.exe -O cc-w32.exe
wget https://cdn.classicube.net/client/latest/cc-w9x.exe -O cc-w9x.exe
# Download Linux artifacts # Download Linux artifacts
- name: Retrieve Linux binaries - name: Retrieve Linux binaries
@ -43,11 +44,21 @@ jobs:
wget https://cdn.classicube.net/client/latest/ClassiCube.rpi -O cc-rpi-32 wget https://cdn.classicube.net/client/latest/ClassiCube.rpi -O cc-rpi-32
# Download FreeBSD artifacts # Download FreeBSD artifacts
- name: Retrieve macOS binaries - name: Retrieve FreeBSD binaries
run: | run: |
wget https://cdn.classicube.net/client/latest/cc-freebsd-64 -O cc-freebsd-64 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 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 - name: Generate builds
id: compile id: compile
shell: bash shell: bash
@ -73,6 +84,12 @@ jobs:
rm ClassiCube/ClassiCube.exe 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 # Generate FreeBSD builds
make_unix_tar cc-freebsd32.tar.gz cc-freebsd-32 make_unix_tar cc-freebsd32.tar.gz cc-freebsd-32
make_unix_tar cc-freebsd64.tar.gz cc-freebsd-64 make_unix_tar cc-freebsd64.tar.gz cc-freebsd-64
@ -81,10 +98,6 @@ jobs:
make_unix_tar cc-rpi32.tar.gz cc-rpi-32 make_unix_tar cc-rpi32.tar.gz cc-rpi-32
make_unix_tar cc-rpi64.tar.gz cc-rpi-64 make_unix_tar cc-rpi64.tar.gz cc-rpi-64
# Generate Linux builds
make_unix_tar cc-linux32.tar.gz cc-linux-32
make_unix_tar cc-linux64.tar.gz cc-linux-64
# Generate macOS builds # Generate macOS builds
make_unix_tar cc-mac32.tar.gz cc-mac-32 make_unix_tar cc-mac32.tar.gz cc-mac-32
make_unix_tar cc-mac64.tar.gz cc-mac-64 make_unix_tar cc-mac64.tar.gz cc-mac-64
@ -93,12 +106,13 @@ jobs:
make_windows_zip cc-win32.zip cc-w32.exe make_windows_zip cc-win32.zip cc-w32.exe
make_windows_zip cc-win64.zip cc-w64.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
- uses: ./.github/actions/notify_failure make_unix_tar cc-linux32.tar.gz cc-linux-32
if: ${{ always() && steps.compile.outcome == 'failure' }} make_unix_tar cc-linux64.tar.gz cc-linux-64
with:
NOTIFY_MESSAGE: 'Failed to produce release'
WEBHOOK_URL: '${{ secrets.WEBHOOK_URL }}'
# Generate Linux release files # Generate Linux release files
@ -142,6 +156,12 @@ jobs:
SOURCE_FILE: 'cc-win64.zip' SOURCE_FILE: 'cc-win64.zip'
DEST_NAME: '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 # Generate RPI release files
- uses: ./.github/actions/upload_build - uses: ./.github/actions/upload_build
@ -171,8 +191,32 @@ jobs:
DEST_NAME: '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 - uses: ./.github/actions/notify_success
if: ${{ always() && steps.compile.outcome == 'success' }} if: ${{ always() && steps.compile.outcome == 'success' }}
with: with:
DESTINATION_URL: '${{ secrets.NOTIFY_URL }}' DESTINATION_URL: '${{ secrets.NOTIFY_URL }}'
WORKFLOW_NAME: 'release' 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 }}'

38
.gitignore vendored
View File

@ -11,6 +11,7 @@
*.VC.VC.opendb *.VC.VC.opendb
# Android build results # Android build results
android/app/.cxx/
android/.cxx/ android/.cxx/
android/.idea/ android/.idea/
android/.gradle/ android/.gradle/
@ -25,21 +26,16 @@ project.xcworkspace/
xcuserdata/ xcuserdata/
# Nintendo Console build results # Nintendo Console build results
build-3ds/
build-gc/
build-nds/ build-nds/
build-dsi/
build-n64/ build-n64/
build-wii/
build-wiiu/
build-switch/
classicube.nds classicube.nds
# SEGA console build results # SEGA console build results
build-dc/
IP.BIN IP.BIN
ISO_FILES/ ISO_FILES/
third_party/gldc/libGLdc.a
build-saturn/
cd/ cd/
# Microsoft console build results # Microsoft console build results
build-360/ build-360/
main.exe main.exe
@ -48,20 +44,17 @@ misc/xbox/ps_coloured.inl
misc/xbox/ps_textured.inl misc/xbox/ps_textured.inl
misc/xbox/vs_coloured.inl misc/xbox/vs_coloured.inl
misc/xbox/vs_textured.inl misc/xbox/vs_textured.inl
# Sony console build results # Sony console build results
build-ps2/
build-ps3/
build-psp/
build-vita/
EBOOT.PBP EBOOT.PBP
PARAM.SFO PARAM.SFO
param.sfo param.sfo
eboot.bin eboot.bin
pkg.gp4
# Build results # Build results
[Dd]ebug/ [Dd]ebug/
[Rr]elease/ [Rr]elease/
[Rr]eleases/
x64/ x64/
x86/ x86/
build/ build/
@ -93,11 +86,22 @@ ClassiCube*
screenshots screenshots
fontscache.txt fontscache.txt
# DOS files
CWSDPMI.EXE
CWSDPMI.SWP
OPTIONS.TXT
CCDOS.EXE
# Android source files need to be included # Android source files need to be included
!android/app/src/main/java/com/classicube !android/app/src/main/java/com/classicube
# Flatpak wrapper which needs to be included # Flatpak wrapper needs to be included
!misc/linux/flatpak/ClassiCubeLauncher !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 # CMake files
CMakeFiles/ CMakeFiles/
@ -215,3 +219,7 @@ _UpgradeReport_Files/
Backup*/ Backup*/
UpgradeLog*.XML UpgradeLog*.XML
UpgradeLog*.htm UpgradeLog*.htm
# Eclipse
.cproject
.project

226
Makefile
View File

@ -1,9 +1,12 @@
SOURCE_DIR = src SOURCE_DIR = src
BUILD_DIR = build BUILD_DIR = build
C_SOURCES = $(wildcard $(SOURCE_DIR)/*.c) C_SOURCES = $(wildcard $(SOURCE_DIR)/*.c)
C_OBJECTS = $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.o, $(C_SOURCES)) OBJECTS = $(patsubst %.c, $(BUILD_DIR)/%.o, $(C_SOURCES))
BUILD_DIRS = $(BUILD_DIR) $(BUILD_DIR)/src
OBJECTS = $(C_OBJECTS) ##############################
# Configurable flags and names
##############################
# Flags passed to the C compiler # Flags passed to the C compiler
CFLAGS = -pipe -fno-math-errno -Werror -Wno-error=missing-braces -Wno-error=strict-aliasing CFLAGS = -pipe -fno-math-errno -Werror -Wno-error=missing-braces -Wno-error=strict-aliasing
# Flags passed to the linker # Flags passed to the linker
@ -11,9 +14,24 @@ LDFLAGS = -g -rdynamic
# Name of the main executable # Name of the main executable
ENAME = ClassiCube ENAME = ClassiCube
# Name of the final target file # Name of the final target file
# (usually this is the executable, but e.g. is app bundle on macOS) # (usually this is the executable, but e.g. is the app bundle on macOS)
TARGET := $(ENAME) 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 ifndef RM
# No prefined RM variable, try to guess OS default # No prefined RM variable, try to guess OS default
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
@ -23,11 +41,10 @@ ifndef RM
endif endif
endif endif
# 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
###########################################################
# If target platform isn't specified, default to current OS
###########################################################
ifndef $(PLAT) ifndef $(PLAT)
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
PLAT = mingw PLAT = mingw
@ -36,12 +53,20 @@ ifndef $(PLAT)
endif endif
endif endif
#########################################################
# Setup environment appropriate for the specific platform
#########################################################
ifeq ($(PLAT),web) ifeq ($(PLAT),web)
CC = emcc CC = emcc
OEXT = .html OEXT = .html
CFLAGS = -g CFLAGS = -g
LDFLAGS = -g -s WASM=1 -s NO_EXIT_RUNTIME=1 -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=1Mb --js-library $(SOURCE_DIR)/interop_web.js 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 BUILD_DIR = build/web
BEARSSL = 0
BUILD_DIRS += $(BUILD_DIR)/src/webclient
C_SOURCES += $(wildcard src/webclient/*.c)
endif endif
ifeq ($(PLAT),mingw) ifeq ($(PLAT),mingw)
@ -50,115 +75,148 @@ ifeq ($(PLAT),mingw)
CFLAGS += -DUNICODE CFLAGS += -DUNICODE
LDFLAGS = -g LDFLAGS = -g
LIBS = -mwindows -lwinmm LIBS = -mwindows -lwinmm
BUILD_DIR = build-win BUILD_DIR = build/win
endif endif
ifeq ($(PLAT),linux) ifeq ($(PLAT),linux)
CFLAGS += -DCC_BUILD_ICON # -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 LIBS = -lX11 -lXi -lpthread -lGL -ldl -lm
BUILD_DIR = build-linux 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 endif
ifeq ($(PLAT),sunos) ifeq ($(PLAT),sunos)
CFLAGS += -DCC_BUILD_ICON
LIBS = -lsocket -lX11 -lXi -lGL LIBS = -lsocket -lX11 -lXi -lGL
BUILD_DIR = build-solaris BUILD_DIR = build/solaris
endif
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 endif
ifeq ($(PLAT),darwin) ifeq ($(PLAT),darwin)
OBJECTS += $(BUILD_DIR)/Window_cocoa.o OBJECTS += $(BUILD_DIR)/src/Window_cocoa.o
CFLAGS += -DCC_BUILD_ICON
LIBS = LIBS =
LDFLAGS = -rdynamic -framework Cocoa -framework OpenGL -framework IOKit -lobjc LDFLAGS = -rdynamic -framework Security -framework Cocoa -framework OpenGL -framework IOKit -lobjc
BUILD_DIR = build-macos BUILD_DIR = build/macos
TARGET = $(ENAME).app TARGET = $(ENAME).app
endif endif
ifeq ($(PLAT),freebsd) ifeq ($(PLAT),freebsd)
CFLAGS += -I /usr/local/include -DCC_BUILD_ICON CFLAGS += -I /usr/local/include
LDFLAGS = -L /usr/local/lib -rdynamic LDFLAGS = -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build-freebsd BUILD_DIR = build/freebsd
endif endif
ifeq ($(PLAT),openbsd) ifeq ($(PLAT),openbsd)
CFLAGS += -I /usr/X11R6/include -I /usr/local/include -DCC_BUILD_ICON CFLAGS += -I /usr/X11R6/include -I /usr/local/include
LDFLAGS = -L /usr/X11R6/lib -L /usr/local/lib -rdynamic LDFLAGS = -L /usr/X11R6/lib -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build-openbsd BUILD_DIR = build/openbsd
endif endif
ifeq ($(PLAT),netbsd) ifeq ($(PLAT),netbsd)
CFLAGS += -I /usr/X11R7/include -I /usr/pkg/include -DCC_BUILD_ICON CFLAGS += -I /usr/X11R7/include -I /usr/pkg/include
LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic LDFLAGS = -L /usr/X11R7/lib -L /usr/pkg/lib -rdynamic -Wl,-R/usr/X11R7/lib
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build-netbsd BUILD_DIR = build/netbsd
endif endif
ifeq ($(PLAT),dragonfly) ifeq ($(PLAT),dragonfly)
CFLAGS += -I /usr/local/include -DCC_BUILD_ICON CFLAGS += -I /usr/local/include
LDFLAGS = -L /usr/local/lib -rdynamic LDFLAGS = -L /usr/local/lib -rdynamic
LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread LIBS = -lexecinfo -lGL -lX11 -lXi -lpthread
BUILD_DIR = build-flybsd BUILD_DIR = build/flybsd
endif endif
ifeq ($(PLAT),haiku) ifeq ($(PLAT),haiku)
OBJECTS += $(BUILD_DIR)/Platform_BeOS.o $(BUILD_DIR)/Window_BeOS.o OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
CFLAGS = -pipe -fno-math-errno CFLAGS = -pipe -fno-math-errno
LDFLAGS = -g LDFLAGS = -g
LIBS = -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker LINK = $(CXX)
BUILD_DIR = build-haiku LIBS = -lGL -lnetwork -lbe -lgame -ltracker
BUILD_DIR = build/haiku
endif endif
ifeq ($(PLAT),beos) ifeq ($(PLAT),beos)
OBJECTS += $(BUILD_DIR)/Platform_BeOS.o $(BUILD_DIR)/Window_BeOS.o OBJECTS += $(BUILD_DIR)/src/Platform_BeOS.o $(BUILD_DIR)/src/Window_BeOS.o
CFLAGS = -pipe CFLAGS = -pipe
LDFLAGS = -g LDFLAGS = -g
LIBS = -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker LINK = $(CXX)
BUILD_DIR = build-beos LIBS = -lGL -lnetwork -lbe -lgame -ltracker
BUILD_DIR = build/beos
TRACK_DEPENDENCIES = 0 TRACK_DEPENDENCIES = 0
BEARSSL = 0
endif endif
ifeq ($(PLAT),serenityos) ifeq ($(PLAT),serenityos)
LIBS = -lgl -lSDL2 LIBS = -lgl -lSDL2
BUILD_DIR = build-serenity BUILD_DIR = build/serenity
endif endif
ifeq ($(PLAT),irix) ifeq ($(PLAT),irix)
CC = gcc CC = gcc
LIBS = -lGL -lX11 -lXi -lpthread -ldl LIBS = -lGL -lX11 -lXi -lpthread -ldl
BUILD_DIR = build-irix BUILD_DIR = build/irix
endif endif
ifeq ($(PLAT),rpi)
CFLAGS += -DCC_BUILD_RPI
LIBS = -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl
BUILD_DIR = build/rpi
endif
ifdef SDL2 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 CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL2
LIBS += -lSDL2 LIBS += -lSDL2
endif endif
ifdef SDL3 ifdef BUILD_SDL3
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3 CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3
LIBS += -lSDL3 LIBS += -lSDL3
endif endif
ifdef TERMINAL ifdef BUILD_TERMINAL
CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_TERMINAL -DCC_GFX_BACKEND=CC_GFX_BACKEND_SOFTGPU CFLAGS += -DCC_WIN_BACKEND=CC_WIN_BACKEND_TERMINAL -DCC_GFX_BACKEND=CC_GFX_BACKEND_SOFTGPU
LIBS := $(subst mwindows,mconsole,$(LIBS)) LIBS := $(subst mwindows,mconsole,$(LIBS))
endif endif
ifdef BEARSSL ifeq ($(BEARSSL),1)
BEARSSL_SOURCES = $(wildcard third_party/bearssl/src/*.c) BUILD_DIRS += $(BUILD_DIR)/third_party/bearssl
BEARSSL_OBJECTS = $(patsubst third_party/bearssl/src/%.c, $(BUILD_DIR)/%.o, $(BEARSSL_SOURCES)) C_SOURCES += $(wildcard third_party/bearssl/*.c)
OBJECTS += $(BEARSSL_OBJECTS)
CFLAGS += -Ithird_party/bearssl/inc -DCC_SSL_BACKEND=CC_SSL_BACKEND_BEARSSL -DCC_NET_BACKEND=CC_NET_BACKEND_BUILTIN
endif endif
ifdef RELEASE ifdef RELEASE
CFLAGS += -O1 CFLAGS += -O$(OPT_LEVEL)
else else
CFLAGS += -g CFLAGS += -g
endif endif
default: $(PLAT) default: $(PLAT)
# Build for the specified platform
web: web:
$(MAKE) $(TARGET) PLAT=web $(MAKE) $(TARGET) PLAT=web
linux: linux:
@ -167,6 +225,8 @@ mingw:
$(MAKE) $(TARGET) PLAT=mingw $(MAKE) $(TARGET) PLAT=mingw
sunos: sunos:
$(MAKE) $(TARGET) PLAT=sunos $(MAKE) $(TARGET) PLAT=sunos
hp-ux:
$(MAKE) $(TARGET) PLAT=hp-ux
darwin: darwin:
$(MAKE) $(TARGET) PLAT=darwin $(MAKE) $(TARGET) PLAT=darwin
freebsd: freebsd:
@ -185,42 +245,50 @@ serenityos:
$(MAKE) $(TARGET) PLAT=serenityos $(MAKE) $(TARGET) PLAT=serenityos
irix: irix:
$(MAKE) $(TARGET) PLAT=irix $(MAKE) $(TARGET) PLAT=irix
riscos:
$(MAKE) $(TARGET) PLAT=riscos
wince:
$(MAKE) $(TARGET) PLAT=wince
# Default overrides # Default overrides
sdl2: sdl2:
$(MAKE) $(TARGET) SDL2=1 $(MAKE) $(TARGET) BUILD_SDL2=1
sdl3: sdl3:
$(MAKE) $(TARGET) SDL3=1 $(MAKE) $(TARGET) BUILD_SDL3=1
terminal: terminal:
$(MAKE) $(TARGET) TERMINAL=1 $(MAKE) $(TARGET) BUILD_TERMINAL=1
release: release:
$(MAKE) $(TARGET) RELEASE=1 $(MAKE) $(TARGET) RELEASE=1
# Some builds require more complex handling, so are moved to # Some builds require more complex handling, so are moved to
# separate makefiles to avoid having one giant messy makefile # separate makefiles to avoid having one giant messy makefile
dreamcast: 32x:
$(MAKE) -f misc/dreamcast/Makefile $(MAKE) -f misc/32x/Makefile
saturn: saturn:
$(MAKE) -f misc/saturn/Makefile $(MAKE) -f misc/saturn/Makefile
dreamcast:
$(MAKE) -f misc/dreamcast/Makefile
psp: psp:
$(MAKE) -f misc/psp/Makefile $(MAKE) -f misc/psp/Makefile
vita: vita:
$(MAKE) -f misc/vita/Makefile $(MAKE) -f misc/vita/Makefile
ps1: ps1:
cmake --preset default misc/ps1 $(MAKE) -f misc/ps1/Makefile
cmake --build misc/ps1/build
ps2: ps2:
$(MAKE) -f misc/ps2/Makefile $(MAKE) -f misc/ps2/Makefile
ps3: ps3:
$(MAKE) -f misc/ps3/Makefile $(MAKE) -f misc/ps3/Makefile
ps4:
$(MAKE) -f misc/ps4/Makefile
xbox: xbox:
$(MAKE) -f misc/xbox/Makefile $(MAKE) -f misc/xbox/Makefile
xbox360: xbox360:
$(MAKE) -f misc/xbox360/Makefile $(MAKE) -f misc/xbox360/Makefile
n64: n64:
$(MAKE) -f misc/n64/Makefile $(MAKE) -f misc/n64/Makefile
gba:
$(MAKE) -f misc/gba/Makefile
ds: ds:
$(MAKE) -f misc/ds/Makefile $(MAKE) -f misc/nds/Makefile
3ds: 3ds:
$(MAKE) -f misc/3ds/Makefile $(MAKE) -f misc/3ds/Makefile
gamecube: gamecube:
@ -233,19 +301,37 @@ switch:
$(MAKE) -f misc/switch/Makefile $(MAKE) -f misc/switch/Makefile
os/2: os/2:
$(MAKE) -f misc/os2/Makefile $(MAKE) -f misc/os2/Makefile
dos:
$(MAKE) -f misc/msdos/Makefile
macclassic_68k: macclassic_68k:
$(MAKE) -f misc/macclassic/Makefile_68k $(MAKE) -f misc/macclassic/Makefile_68k
macclassic_ppc: macclassic_ppc:
$(MAKE) -f misc/macclassic/Makefile_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: clean:
$(RM) $(OBJECTS) $(RM) $(OBJECTS)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(ENAME): $(BUILD_DIR) $(OBJECTS)
$(CC) $(LDFLAGS) -o $@$(OEXT) $(OBJECTS) $(EXTRA_LIBS) $(LIBS)
#################################################
# Source files and executable compilation section
#################################################
# Auto creates directories for build files (.o and .d files)
$(BUILD_DIRS):
mkdir -p $@
# 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 "----------------------------------------------------"
# macOS app bundle # macOS app bundle
$(ENAME).app : $(ENAME) $(ENAME).app : $(ENAME)
@ -259,29 +345,27 @@ $(ENAME).app : $(ENAME)
# === Compiling with dependency tracking === # === Compiling with dependency tracking ===
# NOTE: Tracking dependencies might not work on older systems - disable this if so # NOTE: Tracking dependencies might not work on older systems - disable this if so
ifeq ($(TRACK_DEPENDENCIES), 1) ifeq ($(TRACK_DEPENDENCIES), 1)
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(patsubst $(SOURCE_DIR)/%.c, $(BUILD_DIR)/%.d, $(C_SOURCES)) DEPFILES := $(patsubst %.o, %.d, $(OBJECTS))
$(DEPFILES): $(DEPFILES):
$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c $(BUILD_DIR)/%.d $(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 $@ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(DEPFLAGS) -c $< -o $@
include $(wildcard $(DEPFILES)) include $(wildcard $(DEPFILES))
# === Compiling WITHOUT dependency tracking === # === Compiling WITHOUT dependency tracking ===
else else
$(C_OBJECTS): $(BUILD_DIR)/%.o : $(SOURCE_DIR)/%.c
$(BUILD_DIR)/%.o : %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o : %.cpp
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
endif endif
# === Platform specific file compiling ===
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.m
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.cpp
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: third_party/bearssl/src/%.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@
# EXTRA_CFLAGS and EXTRA_LIBS are not defined in the makefile intentionally - # 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 # 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") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")
add_library(classicube SHARED add_library(classicube SHARED
../../src/main.c
../../src/IsometricDrawer.c ../../src/IsometricDrawer.c
../../src/Builder.c ../../src/Builder.c
../../src/ExtMath.c ../../src/ExtMath.c
@ -31,7 +30,6 @@ add_library(classicube SHARED
../../src/Camera.c ../../src/Camera.c
../../src/Game.c ../../src/Game.c
../../src/GameVersion.c ../../src/GameVersion.c
../../src/Window_Android.c
../../src/_ftbase.c ../../src/_ftbase.c
../../src/Graphics_GL2.c ../../src/Graphics_GL2.c
../../src/Deflate.c ../../src/Deflate.c
@ -49,7 +47,6 @@ add_library(classicube SHARED
../../src/World.c ../../src/World.c
../../src/SelOutlineRenderer.c ../../src/SelOutlineRenderer.c
../../src/Platform_Posix.c ../../src/Platform_Posix.c
../../src/Platform_Android.c
../../src/LScreens.c ../../src/LScreens.c
../../src/_truetype.c ../../src/_truetype.c
../../src/_ftglyph.c ../../src/_ftglyph.c
@ -100,16 +97,138 @@ add_library(classicube SHARED
../../src/SystemFonts.c ../../src/SystemFonts.c
../../src/Commands.c ../../src/Commands.c
../../src/EntityRenderers.c ../../src/EntityRenderers.c
../../src/AudioBackend.c ../../src/Audio_SLES.c
../../src/TouchUI.c ../../src/TouchUI.c
../../src/LBackend_Android.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 target_link_libraries(classicube
android
EGL EGL
GLESv2 GLESv2
log log)
OpenSLES
jnigraphics)

View File

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

View File

@ -1,14 +1,14 @@
package com.classicube; package com.classicube;
import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.Method; import java.security.KeyStore;
import java.net.HttpURLConnection; import java.security.cert.CertificateFactory;
import java.net.URL; import java.security.cert.X509Certificate;
import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Queue; import java.util.Queue;
@ -23,30 +23,31 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.provider.OpenableColumns; import android.provider.OpenableColumns;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.Surface; import android.view.Surface;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager; 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. // 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 // 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) // to ensure that the game can still run on earlier Android versions (albeit with reduced functionality)
@ -120,10 +121,14 @@ public class MainActivity extends Activity
pending.add(args); pending.add(args);
} }
public void pushCmd(int cmd, Surface surface) { public void pushCmd(int cmd, SurfaceHolder holder) {
NativeCmdArgs args = getCmdArgs(); NativeCmdArgs args = getCmdArgs();
Rect rect = holder.getSurfaceFrame();
args.cmd = cmd; args.cmd = cmd;
args.sur = surface; args.sur = holder.getSurface();
args.arg1 = rect.width();
args.arg2 = rect.height();
pending.add(args); pending.add(args);
} }
@ -350,9 +355,9 @@ public class MainActivity extends Activity
case CMD_GPAD_AXISL: processJoystickL(c.arg1, c.arg2); break; case CMD_GPAD_AXISL: processJoystickL(c.arg1, c.arg2); break;
case CMD_GPAD_AXISR: processJoystickR(c.arg1, c.arg2); break; case CMD_GPAD_AXISR: processJoystickR(c.arg1, c.arg2); break;
case CMD_WIN_CREATED: processSurfaceCreated(c.sur); break; case CMD_WIN_CREATED: processSurfaceCreated(c.sur, c.arg1, c.arg2); break;
case CMD_WIN_DESTROYED: processSurfaceDestroyed(); 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_WIN_REDRAW: processSurfaceRedrawNeeded(); break;
case CMD_APP_START: processOnStart(); break; case CMD_APP_START: processOnStart(); break;
@ -387,9 +392,9 @@ public class MainActivity extends Activity
native void processJoystickL(int x, int y); native void processJoystickL(int x, int y);
native void processJoystickR(int x, int y); native void processJoystickR(int x, int y);
native void processSurfaceCreated(Surface sur); native void processSurfaceCreated(Surface sur, int w, int h);
native void processSurfaceDestroyed(); native void processSurfaceDestroyed();
native void processSurfaceResized(Surface sur); native void processSurfaceResized(int w, int h);
native void processSurfaceRedrawNeeded(); native void processSurfaceRedrawNeeded();
native void processOnStart(); native void processOnStart();
@ -434,6 +439,8 @@ public class MainActivity extends Activity
view.setOnGenericMotionListener(listener); view.setOnGenericMotionListener(listener);
} catch (Exception ex) { } catch (Exception ex) {
// Unsupported on android 12 // Unsupported on android 12
} catch (NoClassDefFoundError ex) {
// Unsupported on android 12
} }
} }
@ -442,13 +449,15 @@ public class MainActivity extends Activity
public void surfaceCreated(SurfaceHolder holder) { public void surfaceCreated(SurfaceHolder holder) {
// getSurface - API level 1 // getSurface - API level 1
Log.i("CC_WIN", "win created " + holder.getSurface()); 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) { public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// getSurface - API level 1 // getSurface - API level 1
Log.i("CC_WIN", "win changed " + holder.getSurface()); 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) { public void surfaceDestroyed(SurfaceHolder holder) {
@ -905,113 +914,100 @@ public class MainActivity extends Activity
// ====================================================================== // ======================================================================
// -------------------------------- HTTP -------------------------------- // -------------------------------- SSL ---------------------------------
// ====================================================================== // ======================================================================
// Implements java Android side of the Android HTTP backend (See Http.c) static X509TrustManager trust;
static HttpURLConnection conn; static CertificateFactory certFactory;
static InputStream src; static ArrayList<X509Certificate> chain = new ArrayList<X509Certificate>();
static byte[] readCache = new byte[8192];
public static int httpInit(String url, String method) { static X509TrustManager CreateTrust() throws Exception {
// newer android versions block cleartext traffic by default TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
if (android.os.Build.VERSION.SDK_INT >= 26) { // Load default Trust Anchor certificates
url = url.replace("http://", "https://"); 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 { try {
conn = (HttpURLConnection)new URL(url).openConnection(); trust = CreateTrust();
conn.setDoInput(true); return 1;
conn.setRequestMethod(method);
conn.setInstanceFollowRedirects(true);
httpAddMethodHeaders(method);
return 0;
} catch (Exception ex) { } catch (Exception ex) {
return httpOnError(ex);
}
}
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) {
try {
conn.setDoOutput(true);
conn.getOutputStream().write(data);
conn.getOutputStream().flush();
return 0;
} catch (Exception ex) {
return httpOnError(ex);
}
}
public static int httpPerform() {
int len;
try {
conn.connect();
// Some implementations also provide this as getHeaderField(0), but some don't
httpParseHeader("HTTP/1.1 " + conn.getResponseCode() + " MSG");
// 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;
} catch (Exception ex) {
return httpOnError(ex);
}
}
static void httpFinish() {
conn = null;
try {
src.close();
} catch (Exception ex) { }
src = null;
}
// TODO: Should we prune this list?
static List<String> errors = new ArrayList<String>();
static int httpOnError(Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
httpFinish(); return 0;
errors.add(ex.getMessage()); }
return -errors.size(); // don't want 0 as an error code
} }
public static String httpDescribeError(int res) { public static void sslAddCert(byte[] data) {
res = -res - 1; try {
return res >= 0 && res < errors.size() ? errors.get(res) : null; 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) {
ex.printStackTrace();
}
} }
native static void httpParseHeader(String header); public static int sslVerifyChain() {
native static void httpAppendData(byte[] data, int len); int result = -200;
try {
X509Certificate[] certs = new X509Certificate[chain.size()];
for (int i = 0; i < chain.size(); i++) certs[i] = chain.get(i);
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) {
ex.printStackTrace();
}
chain.clear();
return result;
}
// ======================================================================
// --------------------------- 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];
}
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);
// 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;
}
} }

View File

@ -12,6 +12,7 @@
* Hemsindor - testing ClassicalSharp on macOS. * Hemsindor - testing ClassicalSharp on macOS.
* headshotnoby - developing the Switch port. * headshotnoby - developing the Switch port.
* Beyond_5D - identifying many differences from original Classic * 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), 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. who in the past have provided many suggestions and assisted in identifying bugs.

View File

@ -10,7 +10,7 @@ For simplicity, related system specific code is grouped together as a Module (e.
#### 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. #### 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.
However, on some systems there are potentially multiple backends for a Module. For example on Windows: 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 * 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 * SDL could be used instead of the native WinAPI for the window backend
@ -19,42 +19,51 @@ TODO finish this
TODO introduction (explaining platform specific modules, and how classicube has to integrate with one of them) TODO introduction (explaining platform specific modules, and how classicube has to integrate with one of them)
There are two ways of changing the backend that gets used for the system: There are two ways of changing the backend that gets used for the system:
1) Changing the defines in `Core.h` 1) Changing the default defines in `Core.h`
2) Adding `-DCC_BUILD_MANUAL` to compilation flags and then manually defining module backends via additional compilation flags 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> When manually compiling the source code, 1) is usually the easiest. <br>
For automated scripts compiling every single commit, 2) is the recommended approach For automated scripts compiling every single commit, 2) is the recommended approach
TODO: Move this into table TODO: Move this into table
### 3D Graphics backends ### 3D Graphics backends (`CC_GFX_BACKEND`)
* CC_BUILD_D3D9 - Direct3D 9 * CC_GFX_BACKEND_SOFTGPU - Software rasteriser
* CC_BUILD_D3D11 - Direct3D 11 * CC_GFX_BACKEND_D3D9 - Direct3D 9
* CC_BUILD_GL - OpenGL * 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: The OpenGL backend can be further customised:
* CC_BUILD_GL11 - (must also have CC_BUILD_GL defined) * CC_BUILD_GL11 (must be using CC_GFX_BACKEND_GL1)
* CC_BUILD_GLMODERN - (must also have CC_BUILD_GL defined) * CC_BUILD_GLES (must be using CC_GFX_BACKEND_GL2)
* CC_BUILD_GLES (must also have CC_BUILD_GL defined)
### OpenGL context backends ### OpenGL context backends
* CC_BUILD_EGL * CC_BUILD_EGL
* CC_BUILD_WGL * CC_BUILD_WGL
### HTTP backends ### HTTP backends (`CC_NET_BACKEND`)
* CC_BUILD_CURL * CC_NET_BACKEND_BUILTIN - custom HTTP client
* CC_BUILD_HTTPCLIENT - custom HTTP client * CC_NET_BACKEND_LIBCURL
* CC_BUILD_WININET
* CC_BUILD_CFNETWORK * CC_BUILD_CFNETWORK
### SSL backends ### SSL backends (`CC_SSL_BACKEND`)
* CC_BUILD_SCHANNEL * CC_SSL_BACKEND_NONE
* CC_BUILD_BEARSSL * CC_SSL_BACKEND_BEARSSL
* CC_SSL_BACKEND_SCHANNEL
### Window backends ### Window backends (`CC_WIN_BACKEND`)
* CC_BUILD_SDL * CC_WIN_BACKEND_TERMINAL
* CC_BUILD_X11 * CC_WIN_BACKEND_SDL2
* CC_BUILD_WINGUI * 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 ### Platform backends
* CC_BUILD_POSIX * CC_BUILD_POSIX

View File

@ -20,6 +20,7 @@ Or in other words, in a directory somewhere, you have a file named `TestPlugin.c
### Basic plugin ### Basic plugin
```C ```C
#include "src/PluginAPI.h"
#include "src/Chat.h" #include "src/Chat.h"
#include "src/Game.h" #include "src/Game.h"
#include "src/String.h" #include "src/String.h"
@ -29,37 +30,12 @@ static void TestPlugin_Init(void) {
Chat_Add(&msg); Chat_Add(&msg);
} }
int Plugin_ApiVersion = 1; PLUGIN_EXPORT int Plugin_ApiVersion = 1;
struct IGameComponent Plugin_Component = { TestPlugin_Init }; 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 Note that `src/PluginAPI.h` must always be included as the first header.
```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.
--- ---
@ -68,8 +44,8 @@ All plugins require this boilerplate, so feel free to copy and paste it.
Exported plugin functions **must** be surrounded with `extern "C"`, i.e. Exported plugin functions **must** be surrounded with `extern "C"`, i.e.
```C ```C
extern "C" { extern "C" {
EXPORT int Plugin_ApiVersion = 1; PLUGIN_EXPORT int Plugin_ApiVersion = 1;
EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init }; PLUGIN_EXPORT struct IGameComponent Plugin_Component = { TestPlugin_Init };
} }
``` ```
Otherwise your plugin will not load. (you'll see `error getting plugin version` in-game) Otherwise your plugin will not load. (you'll see `error getting plugin version` in-game)

View File

@ -1,71 +1,23 @@
Although most of the code is platform-independent, some per-platform functionality is required. 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 system 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 ## Before you start
* IEEE floating support is required. (Can be emulated in software, but will affect performance) * IEEE floating-point support is required. (Can be emulated in software, but will affect performance)
* int must be 32-bits. 32-bit addressing (or more) is required. * 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) * 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 around 2 MB of RAM is required at a minimum
* At least 128 kb for main thread stack size * 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. 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.
## 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 |
## Porting ## Porting
Listed below are the requirements for implementing each platform-dependent file. Listed below are the requirements for implementing each platform-dependent file.<br>
You should try to take advantage of existing backends when porting to other platforms. When porting to other platforms, you should try to leverage existing backends when possible.<br>
Only cross platform backends are listed below. Only cross platform backends are listed below.
### Platform ### Platform
@ -93,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) Also monitor size, clipboard, cursor, raw relative mouse movement (optional)
Define: Define:
- ```CC_BUILD_X11``` - Use X11/XLib (unix-ish) (glX) - ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_X11 ``` - Use X11/XLib (unix-ish) (glX)
- ```CC_BUILD_SDL``` - Use SDL library (SDL) - ```DEFAULT_WIN_BACKEND CC_WIN_BACKEND_SDL2``` - Use SDL2 library (SDL2)
If using OpenGL, also OpenGL context management If using OpenGL, also OpenGL context management
@ -112,24 +64,29 @@ posix note: Register access is highly dependent on OS and architecture.
Play multiple audio streams with varying sample rates Play multiple audio streams with varying sample rates
Define: Define:
- ```CC_BUILD_OPENAL``` - use OpenAL - ```DEFAULT_AUD_BACKEND CC_AUD_BACKEND_OPENAL``` - use OpenAL
- ```CC_BUILD_NOAUDIO``` - stub audio implementation (silent) - ```CC_BUILD_NOAUDIO``` - stub audio implementation (silent)
### 3D Graphics ### 3D Graphics
Texturing, depth buffer, alpha, etc (See Graphics.h for full list) Texturing, depth buffer, alpha, etc (See Graphics.h for full list)
Define: Define:
- ```CC_BUILD_D3D9``` - Use Direct3D9 - ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL1``` - Use legacy OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
- ```CC_BUILD_GL``` - Use OpenGL (1.5/1.2 + ARB_VERTEX_BUFFER_OBJECT)
- ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only - ```CC_BUILD_GL11``` - Use OpenGL 1.1 features only
- ```CC_BUILD_GLMODERN``` - Use modern OpenGL shaders - ```DEFAULT_GFX_BACKEND CC_GFX_BACKEND_GL2``` - Use modern OpenGL shaders
- ```CC_BUILD_GLES``` - Makes these shaders compatible with OpenGL ES - ```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 HTTP, HTTPS, and setting request/getting response headers
Define: Define:
- ```CC_BUILD_HTTPCLIENT``` - use built in simple HTTP backend - ```DEFAULT_NET_BACKEND CC_NET_BACKEND_BUILTIN``` - use built in simple HTTP backend
- ```CC_BUILD_CURL``` - use libcurl for HTTP
Supporting connection reuse is highly recommended. (but not required) 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

@ -1,652 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
9A4D0C642BDD168800E1695D /* TouchUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A4D0C632BDD168800E1695D /* TouchUI.c */; };
9A57ECEE2BCD1408006A89F0 /* AudioBackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A57ECED2BCD1408006A89F0 /* AudioBackend.c */; };
9A57ECF02BCD1413006A89F0 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A57ECEF2BCD1412006A89F0 /* main.c */; };
9A62ADF5286D906F00E5E3DE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A62ADF4286D906F00E5E3DE /* Assets.xcassets */; };
9A6C79652BFDDEF200676D27 /* FancyLighting.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C79642BFDDEF100676D27 /* FancyLighting.c */; };
9A6C79672BFDDF0700676D27 /* Queue.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C79662BFDDF0600676D27 /* Queue.c */; };
9A6C7DFA2C2F610C00676D27 /* LBackend_ios.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7DF92C2F610C00676D27 /* LBackend_ios.m */; };
9A6C7DFC2C41E93700676D27 /* InputHandler.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7DFB2C41E93700676D27 /* InputHandler.c */; };
9A6C7DFE2C41E95D00676D27 /* MenuOptions.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7DFD2C41E95C00676D27 /* MenuOptions.c */; };
9A6C7E002C41EED700676D27 /* Window_ios.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6C7DFF2C41EED700676D27 /* Window_ios.m */; };
9A7401D92B737D5C0040E575 /* Commands.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A7401D82B737D5B0040E575 /* Commands.c */; };
9A7401DB2B7384060040E575 /* SSL.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A7401DA2B7384060040E575 /* SSL.c */; };
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 */; };
9A89D4F727F802F600FF3F80 /* Game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D38027F802F500FF3F80 /* Game.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 */; };
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 */; };
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 */; };
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 */; };
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 */; };
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 */; };
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 /* SelOutlineRenderer.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4C927F802F600FF3F80 /* SelOutlineRenderer.c */; };
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CC27F802F600FF3F80 /* EntityComponents.c */; };
9A89D58427F802F600FF3F80 /* Camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4CF27F802F600FF3F80 /* Camera.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 */; };
9A89D58D27F802F600FF3F80 /* Options.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E327F802F600FF3F80 /* Options.c */; };
9A89D58E27F802F600FF3F80 /* Window_SDL2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4E427F802F600FF3F80 /* Window_SDL2.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 */; };
9A89D59427F802F600FF3F80 /* Widgets.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A89D4EE27F802F600FF3F80 /* Widgets.c */; };
9AC5433E2AE2649F0086C85F /* SystemFonts.c in Sources */ = {isa = PBXBuildFile; fileRef = 9AC5433D2AE2649E0086C85F /* SystemFonts.c */; };
9AC543402AE264AC0086C85F /* GameVersion.c in Sources */ = {isa = PBXBuildFile; fileRef = 9AC5433F2AE264AC0086C85F /* GameVersion.c */; };
9AC543422AE264B90086C85F /* EntityRenderers.c in Sources */ = {isa = PBXBuildFile; fileRef = 9AC543412AE264B90086C85F /* EntityRenderers.c */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
9A4D0C632BDD168800E1695D /* TouchUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = TouchUI.c; sourceTree = "<group>"; };
9A57ECED2BCD1408006A89F0 /* AudioBackend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AudioBackend.c; sourceTree = "<group>"; };
9A57ECEF2BCD1412006A89F0 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
9A62ADF4286D906F00E5E3DE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = ClassiCube/Assets.xcassets; sourceTree = "<group>"; };
9A6C79642BFDDEF100676D27 /* FancyLighting.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = FancyLighting.c; sourceTree = "<group>"; };
9A6C79662BFDDF0600676D27 /* Queue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Queue.c; sourceTree = "<group>"; };
9A6C7DF92C2F610C00676D27 /* LBackend_ios.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LBackend_ios.m; sourceTree = "<group>"; };
9A6C7DFB2C41E93700676D27 /* InputHandler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = InputHandler.c; sourceTree = "<group>"; };
9A6C7DFD2C41E95C00676D27 /* MenuOptions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MenuOptions.c; sourceTree = "<group>"; };
9A6C7DFF2C41EED700676D27 /* Window_ios.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Window_ios.m; sourceTree = "<group>"; };
9A7401D82B737D5B0040E575 /* Commands.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Commands.c; sourceTree = "<group>"; };
9A7401DA2B7384060040E575 /* SSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SSL.c; 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>"; };
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Graphics_GL2.c; 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>"; };
9A89D38027F802F500FF3F80 /* Game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Game.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>"; };
9A89D38627F802F500FF3F80 /* ExtMath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ExtMath.c; 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>"; };
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>"; };
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>"; };
9A89D39627F802F500FF3F80 /* Model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Model.c; 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>"; };
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>"; };
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>"; };
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>"; };
9A89D48227F802F600FF3F80 /* _type1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _type1.c; 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>"; };
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>"; };
9A89D49227F802F600FF3F80 /* String.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = String.c; 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>"; };
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>"; };
9A89D49B27F802F600FF3F80 /* Physics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Physics.c; sourceTree = "<group>"; };
9A89D49E27F802F600FF3F80 /* Server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Server.c; sourceTree = "<group>"; };
9A89D4A027F802F600FF3F80 /* _ftinit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = _ftinit.c; sourceTree = "<group>"; };
9A89D4A627F802F600FF3F80 /* Input.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Input.c; 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>"; };
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>"; };
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>"; };
9A89D4B527F802F600FF3F80 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Event.c; 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>"; };
9A89D4C427F802F600FF3F80 /* LWeb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = LWeb.c; sourceTree = "<group>"; };
9A89D4C627F802F600FF3F80 /* Formats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Formats.c; sourceTree = "<group>"; };
9A89D4C927F802F600FF3F80 /* SelOutlineRenderer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SelOutlineRenderer.c; sourceTree = "<group>"; };
9A89D4CC27F802F600FF3F80 /* EntityComponents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EntityComponents.c; sourceTree = "<group>"; };
9A89D4CF27F802F600FF3F80 /* Camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Camera.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>"; };
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>"; };
9A89D4DD27F802F600FF3F80 /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Launcher.c; sourceTree = "<group>"; };
9A89D4E327F802F600FF3F80 /* Options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Options.c; sourceTree = "<group>"; };
9A89D4E427F802F600FF3F80 /* Window_SDL2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Window_SDL2.c; 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>"; };
9A89D4EE27F802F600FF3F80 /* Widgets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Widgets.c; sourceTree = "<group>"; };
9AC5433D2AE2649E0086C85F /* SystemFonts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SystemFonts.c; sourceTree = "<group>"; };
9AC5433F2AE264AC0086C85F /* GameVersion.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GameVersion.c; sourceTree = "<group>"; };
9AC543412AE264B90086C85F /* EntityRenderers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EntityRenderers.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 = (
9A6C7DFF2C41EED700676D27 /* Window_ios.m */,
9A6C7DFD2C41E95C00676D27 /* MenuOptions.c */,
9A6C7DFB2C41E93700676D27 /* InputHandler.c */,
9A6C7DF92C2F610C00676D27 /* LBackend_ios.m */,
9A6C79662BFDDF0600676D27 /* Queue.c */,
9A6C79642BFDDEF100676D27 /* FancyLighting.c */,
9A4D0C632BDD168800E1695D /* TouchUI.c */,
9A57ECEF2BCD1412006A89F0 /* main.c */,
9A57ECED2BCD1408006A89F0 /* AudioBackend.c */,
9A7401DA2B7384060040E575 /* SSL.c */,
9A7401D82B737D5B0040E575 /* Commands.c */,
9AC543412AE264B90086C85F /* EntityRenderers.c */,
9AC5433F2AE264AC0086C85F /* GameVersion.c */,
9AC5433D2AE2649E0086C85F /* SystemFonts.c */,
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 */,
9A89D47E27F802F500FF3F80 /* Graphics_GL1.c */,
9A89D37A27F802F500FF3F80 /* Graphics_GL2.c */,
9A89D38C27F802F500FF3F80 /* Gui.c */,
9A89D47927F802F500FF3F80 /* HeldBlockRenderer.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 /* SelOutlineRenderer.c */,
9A89D4AA27F802F600FF3F80 /* Picking.c */,
9A89D39227F802F500FF3F80 /* Platform_Posix.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 */,
9A89D4E427F802F600FF3F80 /* Window_SDL2.c */,
9A89D48727F802F600FF3F80 /* World.c */,
9A89D47F27F802F600FF3F80 /* interop_ios.m */,
);
name = src;
path = ../src;
sourceTree = SOURCE_ROOT;
};
/* 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 = (
9A89D50727F802F600FF3F80 /* Particle.c in Sources */,
9A89D56C27F802F600FF3F80 /* _ftinit.c in Sources */,
9A89D58F27F802F600FF3F80 /* Audio.c in Sources */,
9A89D55227F802F600FF3F80 /* Logger.c in Sources */,
9A89D58E27F802F600FF3F80 /* Window_SDL2.c in Sources */,
9A89D4FF27F802F600FF3F80 /* Gui.c in Sources */,
9A89D55027F802F600FF3F80 /* Entity.c in Sources */,
9A89D58327F802F600FF3F80 /* EntityComponents.c in Sources */,
9A7401D92B737D5C0040E575 /* Commands.c in Sources */,
9A89D57327F802F600FF3F80 /* Utils.c in Sources */,
9A6C7DFE2C41E95D00676D27 /* MenuOptions.c in Sources */,
9A89D58427F802F600FF3F80 /* Camera.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 /* SelOutlineRenderer.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 */,
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 */,
9A6C79672BFDDF0700676D27 /* Queue.c in Sources */,
9A89D4F227F802F600FF3F80 /* LWidgets.c in Sources */,
9A89D55327F802F600FF3F80 /* _psaux.c in Sources */,
9A89D50427F802F600FF3F80 /* Model.c in Sources */,
9A89D54F27F802F600FF3F80 /* Deflate.c in Sources */,
9A89D56327F802F600FF3F80 /* _autofit.c in Sources */,
9A89D55F27F802F600FF3F80 /* _sfnt.c in Sources */,
9A89D55527F802F600FF3F80 /* HeldBlockRenderer.c in Sources */,
9A89D4FD27F802F600FF3F80 /* ExtMath.c in Sources */,
9A57ECEE2BCD1408006A89F0 /* AudioBackend.c in Sources */,
9A89D56427F802F600FF3F80 /* String.c in Sources */,
9A89D57D27F802F600FF3F80 /* _smooth.c in Sources */,
9AC543402AE264AC0086C85F /* GameVersion.c in Sources */,
9AC543422AE264B90086C85F /* EntityRenderers.c in Sources */,
9A89D50127F802F600FF3F80 /* LBackend.c in Sources */,
9A89D56827F802F600FF3F80 /* Lighting.c in Sources */,
9A89D57827F802F600FF3F80 /* Protocol.c in Sources */,
9A89D55427F802F600FF3F80 /* Bitmap.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 */,
9A89D55927F802F600FF3F80 /* interop_ios.m in Sources */,
9A7401DB2B7384060040E575 /* SSL.c in Sources */,
9A89D4F527F802F600FF3F80 /* _ftsynth.c in Sources */,
9A89D55D27F802F600FF3F80 /* _psmodule.c in Sources */,
9A89D56F27F802F600FF3F80 /* Input.c in Sources */,
9A89D57E27F802F600FF3F80 /* Resources.c in Sources */,
9A89D4F427F802F600FF3F80 /* Vorbis.c in Sources */,
9A89D56227F802F600FF3F80 /* _ftbase.c in Sources */,
9A89D56B27F802F600FF3F80 /* Server.c in Sources */,
9A89D50027F802F600FF3F80 /* _truetype.c in Sources */,
9A6C79652BFDDEF200676D27 /* FancyLighting.c in Sources */,
9A4D0C642BDD168800E1695D /* TouchUI.c in Sources */,
9AC5433E2AE2649F0086C85F /* SystemFonts.c in Sources */,
9A89D57F27F802F600FF3F80 /* LWeb.c in Sources */,
9A89D56627F802F600FF3F80 /* Drawer2D.c in Sources */,
9A57ECF02BCD1413006A89F0 /* main.c in Sources */,
9A89D57427F802F600FF3F80 /* MapRenderer.c in Sources */,
9A89D57627F802F600FF3F80 /* _pshinter.c in Sources */,
9A89D56A27F802F600FF3F80 /* Physics.c in Sources */,
9A6C7DFA2C2F610C00676D27 /* LBackend_ios.m in Sources */,
9A89D58727F802F600FF3F80 /* SelectionBox.c in Sources */,
9A89D4FE27F802F600FF3F80 /* Inventory.c in Sources */,
9A89D56527F802F600FF3F80 /* Generator.c in Sources */,
9A89D57527F802F600FF3F80 /* AxisLinesRenderer.c in Sources */,
9A6C7E002C41EED700676D27 /* Window_ios.m 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 */,
9A6C7DFC2C41E93700676D27 /* InputHandler.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 = 6.0;
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 = 6.0;
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 = 6.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 = 6.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

@ -177,6 +177,32 @@ 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 FreeType license
================== ==================
The FreeType Project LICENSE The FreeType Project LICENSE

View File

@ -122,7 +122,6 @@ extern "C" {
extern void fast_memcpy(void *dst, void *src, int len); extern void fast_memcpy(void *dst, void *src, int len);
extern void CacheControl(int mode); extern void CacheControl(int mode);
extern void CacheClearLine(void* ptr); extern void CacheClearLine(void* ptr);
extern void ScreenStretch(int src, int width, int height, int interp);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -4,19 +4,50 @@ else
ROOTDIR = /opt/toolchains/sega ROOTDIR = /opt/toolchains/sega
endif 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 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 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. -I../include -I$(ROOTDIR)/sh-elf/include -I$(ROOTDIR)/sh-elf/sh-elf/include 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 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 SHHWFLAGS = -m2 -mb -O1 -Wall -g -c -fomit-frame-pointer
SHLDFLAGS = -T $(LDSCRIPTSDIR)/mars.ld -Wl,-Map=output.map -nostdlib -Wl,--gc-sections SHLDFLAGS = -T $(LDSCRIPTSDIR)/mars.ld -nostdlib -Wl,--gc-sections
SHASFLAGS = --big SHASFLAGS = --big
MDLDFLAGS = -T $(LDSCRIPTSDIR)/md.ld --oformat binary MDLDFLAGS = -T $(LDSCRIPTSDIR)/md.ld --oformat binary
MDASFLAGS = -m68000 --register-prefix-optional MDASFLAGS = -m68000 --register-prefix-optional
#---------------------------------------------------------------------------------
# Compiler tools
#---------------------------------------------------------------------------------
SHPREFIX = $(ROOTDIR)/sh-elf/bin/sh-elf- SHPREFIX = $(ROOTDIR)/sh-elf/bin/sh-elf-
SHCC = $(SHPREFIX)gcc SHCC = $(SHPREFIX)gcc
SHAS = $(SHPREFIX)as SHAS = $(SHPREFIX)as
@ -27,44 +58,62 @@ MDPREFIX = $(ROOTDIR)/m68k-elf/bin/m68k-elf-
MDAS = $(MDPREFIX)as MDAS = $(MDPREFIX)as
MDLD = $(MDPREFIX)ld MDLD = $(MDPREFIX)ld
DD = dd
RM = rm -f
TARGET = ClassiCube #---------------------------------------------------------------------------------
LIBS = $(LIBPATH) -lc -lgcc -lgcc-Os-4-200 -lnosys # main targets
#---------------------------------------------------------------------------------
all: $(BUILD_DIR) $(BUILD_DIR)/m68k_crt0.bin $(BUILD_DIR)/m68k_crt1.bin $(TARGET).bin
SOURCE_DIRS = ../../src clean:
C_FILES = $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c)) rm -f $(BUILD_DIR)/*.o $(BUILD_DIR)/*.bin $(TARGET).bin $(TARGET).elf
OBJS = sh2_crt0.o main_32x.o hw_32x.o $(notdir $(C_FILES:%.c=%.o))
all: m68k_crt0.bin m68k_crt1.bin $(TARGET).bin $(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#---------------------------------------------------------------------------------
# binary generation
#---------------------------------------------------------------------------------
$(TARGET).bin: $(TARGET).elf $(TARGET).bin: $(TARGET).elf
$(SHOBJC) -O binary $< temp.bin $(SHOBJC) -O binary $< $(BUILD_DIR)/temp.bin
$(DD) if=temp.bin of=$@ bs=64K conv=sync dd if=$(BUILD_DIR)/temp.bin of=$@ bs=64K conv=sync
$(TARGET).elf: $(OBJS) $(TARGET).elf: $(OBJS)
$(SHCC) $(SHLDFLAGS) $(OBJS) $(LIBS) -o $(TARGET).elf $(SHCC) $(SHLDFLAGS) $(OBJS) $(LIBS) -o $(TARGET).elf
m68k_crt0.bin: m68k_crt0.s
$(MDAS) $(MDASFLAGS) -o m68k_crt0.o m68k_crt0.s
$(MDLD) $(MDLDFLAGS) -o m68k_crt0.bin m68k_crt0.o
m68k_crt1.bin: m68k_crt1.s $(BUILD_DIR)/m68k_crt0.o: misc/32x/m68k_crt0.s
$(MDAS) $(MDASFLAGS) -o m68k_crt1.o m68k_crt1.s $(MDAS) $(MDASFLAGS) $< -o $@
$(MDLD) $(MDLDFLAGS) -o m68k_crt1.bin m68k_crt1.o
hw_32x.o: hw_32x.c $(BUILD_DIR)/m68k_crt0.bin: $(BUILD_DIR)/m68k_crt0.o
$(SHCC) $(SHHWFLAGS) $(INCPATH) $< -o $@ $(MDLD) $(MDLDFLAGS) $< -o $@
%.o: %.c $(BUILD_DIR)/m68k_crt1.o: misc/32x/m68k_crt1.s
$(SHCC) $(SHCCFLAGS) $(INCPATH) $< -o $@ $(MDAS) $(MDASFLAGS) $< -o $@
%.o: ../../src/%.c $(BUILD_DIR)/m68k_crt1.bin: $(BUILD_DIR)/m68k_crt1.o
$(SHCC) $(SHCCFLAGS) $(INCPATH) $< -o $@ $(MDLD) $(MDLDFLAGS) $< -o $@
%.o: %.s
#---------------------------------------------------------------------------------
# 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 $@ $(SHAS) $(SHASFLAGS) $(INCPATH) $< -o $@
clean:
$(RM) *.o *.bin *.elf output.map #---------------------------------------------------------------------------------
# Dependency tracking
#---------------------------------------------------------------------------------
$(DEPFILES):
include $(wildcard $(DEPFILES))

View File

@ -1,29 +0,0 @@
#include <stdlib.h>
#include "32x.h"
#include "hw_32x.h"
int32_t fix16_sqrt(int32_t value)
{
uint32_t t;
uint32_t r = value;
uint32_t b = 0x40000000;
uint32_t q = 0;
while (b > 0x40) {
t = q + b;
if (r >= t) {
r -= t;
q = t + b; /* Equivalent to q += 2 * b */
}
r <<= 1;
b >>= 1;
}
q >>= 8;
return q;
}

View File

@ -6,11 +6,11 @@
! Standard MD Header at 0x000 ! Standard MD Header at 0x000
.incbin "m68k_crt0.bin", 0, 0x3C0 .incbin "build/32x/m68k_crt0.bin", 0, 0x3C0
! Standard Mars Header at 0x3C0 ! Standard Mars Header at 0x3C0
.ascii "32X Example " /* module name (16 chars) */ .ascii "ClassiCube 32X " /* module name (16 chars) */
.long 0x00000000 /* version */ .long 0x00000000 /* version */
.long __text_end-0x02000000 /* Source (in ROM) */ .long __text_end-0x02000000 /* Source (in ROM) */
.long 0x00000000 /* Destination (in SDRAM) */ .long 0x00000000 /* Destination (in SDRAM) */
@ -22,26 +22,26 @@
! Standard MD startup code at 0x3F0 ! Standard MD startup code at 0x3F0
.incbin "m68k_crt1.bin" .incbin "build/32x/m68k_crt1.bin"
.data .data
! Master Vector Base Table at 0x06000000 ! Master Vector Base Table at 0x06000000
.long mstart /* Cold Start PC */ .long mstart /* 0, Cold Start PC */
.long 0x0603FC00 /* Cold Start SP */ .long 0x0603FC00 /* 1, Cold Start SP */
.long mstart /* Manual Reset PC */ .long mstart /* 2, Manual Reset PC */
.long 0x0603FC00 /* Manual Reset SP */ .long 0x0603FC00 /* 3, Manual Reset SP */
.long main_err /* Illegal instruction */ .long main_err /* 4, Illegal instruction */
.long 0x00000000 /* reserved */ .long _wdt_handler/* 5, reserved - repurposed for WDT */
.long main_err /* Invalid slot instruction */ .long main_err /* 6, Invalid slot instruction */
.long 0x20100400 /* reserved */ .long 0x20100400 /* 7, reserved */
.long 0x20100420 /* reserved */ .long 0x20100420 /* 8, reserved */
.long main_err /* CPU address error */ .long main_err /* 9, CPU address error */
.long main_err /* DMA address error */ .long main_err /* 10, DMA address error */
.long main_err /* NMI vector */ .long main_err /* 11, NMI vector */
.long main_err /* User break vector */ .long main_err /* 12, User break vector */
.space 76 /* reserved */ .space 76 /* reserved */
.long main_err /* TRAPA #32 */ .long main_err /* TRAPA #32 */
.long main_err /* TRAPA #33 */ .long main_err /* TRAPA #33 */
@ -637,81 +637,6 @@ _CacheControl:
_sh2_cctl: _sh2_cctl:
.long 0xFFFFFE92 .long 0xFFFFFE92
! void ScreenStretch(int src, int width, int height, int interp);
! On entry: r4 = src pointer, r5 = width, r6 = height, r7 = interpolate
.align 4
.global _ScreenStretch
_ScreenStretch:
cmp/pl r7
bt ss_interp
! stretch screen without interpolation
0:
mov r5,r3
shll r3
mov r3,r2
shll r2
add r4,r3
add r4,r2
1:
add #-2,r3
mov.w @r3,r0
extu.w r0,r1
shll16 r0
or r1,r0
mov.l r0,@-r2
cmp/eq r3,r4
bf 1b
/* next line */
mov.w ss_pitch,r0
dt r6
bf/s 0b
add r0,r4
rts
nop
ss_interp:
! stretch screen with interpolation
0:
mov r5,r3
shll r3
mov r3,r2
shll r2
add r4,r3
add r4,r2
mov #0,r7
1:
add #-2,r3
mov.w @r3,r0
mov.w ss_mask,r1
and r0,r1 /* masked curr pixel */
shll16 r0
add r1,r7 /* add to masked prev pixel */
shlr r7 /* blended pixel */
or r7,r0 /* curr pixel << 16 | blended pixel */
mov r1,r7 /* masked prev pixel = masked curr pixel */
mov.l r0,@-r2
cmp/eq r3,r4
bf 1b
/* next line */
mov.w ss_pitch,r0
dt r6
bf/s 0b
add r0,r4
rts
nop
ss_mask:
.word 0x7BDE
ss_pitch:
.word 640
.align 2 .align 2
.text .text

View File

@ -1,136 +1,132 @@
#--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro)
endif
.SUFFIXES: .SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
TOPDIR ?= $(CURDIR)
include $(DEVKITARM)/3ds_rules
#---------------------------------------------------------------------------------
# configurable options
#---------------------------------------------------------------------------------
APP_ICON := $(TOPDIR)/misc/3ds/icon.png
APP_TITLE := ClassiCube
APP_DESCRIPTION := Simple block building sandbox
APP_AUTHOR := UnknownShadow200
TARGET := ClassiCube-3ds
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
BUILD := build-3ds
SOURCES := src misc/3ds third_party/bearssl/src
INCLUDES := third_party/bearssl/inc
CIA_BANNER_BIN := $(TOPDIR)/misc/3ds/banner.bin
CIA_ICON_BIN := $(TOPDIR)/misc/3ds/icon.bin
CIA_SPEC_RSF := $(TOPDIR)/misc/3ds/spec.rsf
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft
CFLAGS := -g -Wall -O2 -mword-relocations \
-ffunction-sections \
$(ARCH)
CFLAGS += $(INCLUDE) -D__3DS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
LIBS := -lctru -lm
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional # Configurable options
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# 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
export OUTPUT := $(CURDIR)/$(TARGET) APP_ICON = misc/3ds/icon.png
export TOPDIR := $(CURDIR) APP_TITLE = ClassiCube
APP_DESCRIPTION = Simple block building sandbox
APP_AUTHOR = ClassiCube team
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) CIA_BANNER_BIN = misc/3ds/banner.bin
CIA_ICON_BIN = misc/3ds/icon.bin
CIA_SPEC_RSF = misc/3ds/spec.rsf
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica)))
export LD := $(CC)
export OFILES_SOURCES := $(CFILES:.c=.o) $(SFILES:.s=.o)
export OFILES_BIN := $(PICAFILES:.v.pica=.shbin.o)
export OFILES := $(OFILES_BIN) $(OFILES_SOURCES)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(CTRULIB),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(CTRULIB),-L$(dir)/lib)
export _3DSXFLAGS = --smdh=$(CURDIR)/$(TARGET).smdh
.PHONY: all clean
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
all: $(BUILD) # Compilable files
$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/3ds/Makefile #---------------------------------------------------------------------------------
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)
$(BUILD):
mkdir -p $@
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# 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: clean:
echo clean ... rm $(TARGET).cia $(TARGET).3dsx $(TARGET).elf $(OBJS)
rm -fr $(BUILD) $(TARGET).cia $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
else # 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
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# main targets # Object generation
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(OUTPUT).cia : $(OUTPUT).3dsx makerom $(BUILD_DIR)/%.o: src/%.c
./makerom -f cia -o "$(OUTPUT).cia" -elf "$(OUTPUT).elf" -rsf "$(CIA_SPEC_RSF)" -icon "$(CIA_ICON_BIN)" -banner "$(CIA_BANNER_BIN)" -exefslogo -target t $(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
makerom: $(BUILD_DIR)/%.o: src/3ds/%.c
wget https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.18.3/makerom-v0.18.3-ubuntu_x86_64.zip $(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
unzip makerom-v0.18.3-ubuntu_x86_64.zip
chmod +x makerom
$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh $(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 $@
$(OUTPUT).elf : $(OFILES)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
.PRECIOUS : %.shbin # Dependency tracking
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(DEPFILES):
%.shbin.o : %.v.pica include $(wildcard $(DEPFILES))
$(eval CUR_SRC := $<)
$(eval CUR_FILE := $(notdir $(CUR_SRC)))
$(eval CUR_BIN := $(CURDIR)/$(subst .v.pica,.shbin,$(CUR_FILE)))
picasso -o $(CUR_BIN) $(CUR_SRC)
bin2s $(CUR_BIN) | $(AS) -o $(CUR_BIN).o
-include $(DEPSDIR)/*.d
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

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

View File

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

View File

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

View File

@ -1,5 +0,0 @@
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`

View File

@ -46,7 +46,7 @@ AccessControlInfo:
AffinityMask : 1 AffinityMask : 1
Priority : 16 Priority : 16
SystemMode : 80MB
MaxCpu : 0x9E # Default MaxCpu : 0x9E # Default
DisableDebug : false DisableDebug : false
EnableForceDebug : false EnableForceDebug : false
@ -76,7 +76,7 @@ AccessControlInfo:
- 1ff50000-1ff57fff # DSP memory - 1ff50000-1ff57fff # DSP memory
- 1ff70000-1ff77fff - 1ff70000-1ff77fff
MemoryMapping: MemoryMapping:
- 1f000000-1f5fffff:r # VRAM - 1f000000-1f5fffff # VRAM
SystemCallAccess: SystemCallAccess:
ArbitrateAddress: 34 ArbitrateAddress: 34

View File

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

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

View File

@ -299,13 +299,17 @@ static const unsigned char TA6_EC_Q[] = {
0x8A 0x8A
}; };
static const br_x509_trust_anchor TAs[7] = { static
#ifndef CC_BUILD_SYMBIAN
const
#endif
br_x509_trust_anchor TAs[7] = {
{ {
{ (unsigned char *)TA0_DN, sizeof TA0_DN }, { (unsigned char *)TA0_DN, sizeof TA0_DN },
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
BR_KEYTYPE_RSA, BR_KEYTYPE_RSA,
{ .rsa = { { {
(unsigned char *)TA0_RSA_N, sizeof TA0_RSA_N, (unsigned char *)TA0_RSA_N, sizeof TA0_RSA_N,
(unsigned char *)TA0_RSA_E, sizeof TA0_RSA_E, (unsigned char *)TA0_RSA_E, sizeof TA0_RSA_E,
} } } }
@ -316,7 +320,7 @@ static const br_x509_trust_anchor TAs[7] = {
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
BR_KEYTYPE_RSA, BR_KEYTYPE_RSA,
{ .rsa = { { {
(unsigned char *)TA1_RSA_N, sizeof TA1_RSA_N, (unsigned char *)TA1_RSA_N, sizeof TA1_RSA_N,
(unsigned char *)TA1_RSA_E, sizeof TA1_RSA_E, (unsigned char *)TA1_RSA_E, sizeof TA1_RSA_E,
} } } }
@ -327,7 +331,7 @@ static const br_x509_trust_anchor TAs[7] = {
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
BR_KEYTYPE_RSA, BR_KEYTYPE_RSA,
{ .rsa = { { {
(unsigned char *)TA2_RSA_N, sizeof TA2_RSA_N, (unsigned char *)TA2_RSA_N, sizeof TA2_RSA_N,
(unsigned char *)TA2_RSA_E, sizeof TA2_RSA_E, (unsigned char *)TA2_RSA_E, sizeof TA2_RSA_E,
} } } }
@ -337,11 +341,17 @@ static const br_x509_trust_anchor TAs[7] = {
{ (unsigned char *)TA3_DN, sizeof TA3_DN }, { (unsigned char *)TA3_DN, sizeof TA3_DN },
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
#if defined CC_BUILD_SYMBIAN
BR_KEYTYPE_EC
/* set in SSL.c */
#else
BR_KEYTYPE_EC, BR_KEYTYPE_EC,
{ .ec = { { .ec = {
BR_EC_secp384r1, BR_EC_secp384r1,
(unsigned char *)TA3_EC_Q, sizeof TA3_EC_Q, (unsigned char *)TA3_EC_Q, sizeof TA3_EC_Q,
} } } }
#endif
} }
}, },
{ {
@ -349,7 +359,7 @@ static const br_x509_trust_anchor TAs[7] = {
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
BR_KEYTYPE_RSA, BR_KEYTYPE_RSA,
{ .rsa = { { {
(unsigned char *)TA4_RSA_N, sizeof TA4_RSA_N, (unsigned char *)TA4_RSA_N, sizeof TA4_RSA_N,
(unsigned char *)TA4_RSA_E, sizeof TA4_RSA_E, (unsigned char *)TA4_RSA_E, sizeof TA4_RSA_E,
} } } }
@ -360,7 +370,7 @@ static const br_x509_trust_anchor TAs[7] = {
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
BR_KEYTYPE_RSA, BR_KEYTYPE_RSA,
{ .rsa = { { {
(unsigned char *)TA5_RSA_N, sizeof TA5_RSA_N, (unsigned char *)TA5_RSA_N, sizeof TA5_RSA_N,
(unsigned char *)TA5_RSA_E, sizeof TA5_RSA_E, (unsigned char *)TA5_RSA_E, sizeof TA5_RSA_E,
} } } }
@ -370,11 +380,16 @@ static const br_x509_trust_anchor TAs[7] = {
{ (unsigned char *)TA6_DN, sizeof TA6_DN }, { (unsigned char *)TA6_DN, sizeof TA6_DN },
BR_X509_TA_CA, BR_X509_TA_CA,
{ {
#if defined CC_BUILD_SYMBIAN
BR_KEYTYPE_EC
/* set in SSL.c */
#else
BR_KEYTYPE_EC, BR_KEYTYPE_EC,
{ .ec = { { .ec = {
BR_EC_secp384r1, BR_EC_secp384r1,
(unsigned char *)TA6_EC_Q, sizeof TA6_EC_Q, (unsigned char *)TA6_EC_Q, sizeof TA6_EC_Q,
} } } }
#endif
} }
} }
}; };

Binary file not shown.

View File

@ -1,20 +1,3 @@
BUILD_DIR := build-dc
SOURCE_DIRS := src third_party/bearssl/src misc/dreamcast
TARGET := ClassiCube-dc
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)))
CFLAGS := -g -DNDEBUG -O3 -fipa-pta -fno-pie -flto=auto -fomit-frame-pointer -fbuiltin -ffast-math -ffp-contract=fast -mfsrra -mfsca -pipe -fno-math-errno -Ithird_party/bearssl/inc
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
GLDC_LIB = third_party/gldc/libGLdc.a
LDFLAGS = -g
LIBS = -lm $(GLDC_LIB) -lppp -lkosfat
ifeq ($(strip $(KOS_BASE)),) ifeq ($(strip $(KOS_BASE)),)
$(warning Please set KOS variables in your environment. For example:) $(warning Please set KOS variables in your environment. For example:)
$(warning source /opt/toolchains/dc/kos/environ.sh) $(warning source /opt/toolchains/dc/kos/environ.sh)
@ -23,7 +6,39 @@ endif
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# main targets # Configurable options
#---------------------------------------------------------------------------------
# Directory where object files are placed
BUILD_DIR := build/dc
# List of directories containing source code
SOURCE_DIRS := src third_party/bearssl src/dreamcast
# Name of the final output
TARGET := ClassiCube-dc
#---------------------------------------------------------------------------------
# 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)))
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
CFLAGS = -g -DNDEBUG -O3 -fipa-pta -fno-pie -flto=auto -fomit-frame-pointer -fbuiltin -ffast-math -ffp-contract=fast -mfsrra -mfsca -pipe -fno-math-errno -DPLAT_DREAMCAST
LDFLAGS = -g
# Additional libraries to link against
LIBS = -lm -lppp -lkosfat
#---------------------------------------------------------------------------------
# Main targets
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET).cdi default: $(BUILD_DIR) $(TARGET).cdi
@ -35,9 +50,9 @@ $(BUILD_DIR):
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# executable generation # Executable generation
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(TARGET).elf: $(OBJS) $(GLDC_LIB) $(TARGET).elf: $(OBJS)
kos-cc $(LDFLAGS) $^ -o $@ $(LIBS) kos-cc $(LDFLAGS) $^ -o $@ $(LIBS)
$(TARGET).bin: $(TARGET).elf $(TARGET).bin: $(TARGET).elf
@ -64,22 +79,24 @@ $(TARGET).cdi: $(TARGET).iso
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# object generation # Object generation
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(GLDC_LIB): FORCE
$(MAKE) -C third_party/gldc
FORCE: ;
$(BUILD_DIR)/%.o: src/%.c $(BUILD_DIR)/%.o: src/%.c
kos-cc $(CFLAGS) $(DEPFLAGS) -c $< -o $@ kos-cc $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: third_party/bearssl/src/%.c $(BUILD_DIR)/%.o: src/dreamcast/%.c
kos-cc $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: third_party/bearssl/%.c
kos-cc $(CFLAGS) -c $< -o $@ kos-cc $(CFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: misc/dreamcast/%.S $(BUILD_DIR)/%.o: src/dreamcast/%.S
kos-cc $(DEPFLAGS) -c $< -o $@ kos-cc $(DEPFLAGS) -c $< -o $@
#---------------------------------------------------------------------------------
# Dependency tracking # Dependency tracking
#---------------------------------------------------------------------------------
$(DEPFILES): $(DEPFILES):
include $(wildcard $(DEPFILES)) include $(wildcard $(DEPFILES))

View File

@ -1,184 +0,0 @@
! FR0 = 0
! FR1 = 0
! FR2 = A.1
! FR3 = B.1
! FR4 = 0
! FR5 = 0
! FR6 = A.2
! FR7 = B.2
! FR8 = 0
! FR9 = 0
! FR10 = invT
! FR11 = t
#define TM1 r1 // temp register 1
#define TM2 r3 // temp register 2
#define IN1 r4 // input vertex 1
#define IN2 r5 // input vertex 2
#define OUT r6 // output vertex
#define CL1 r4 // input colour 1
#define CL2 r5 // input colour 2
#define CLO r7 // output colour
! Calculates the near plane intersection point between two points:
! float t = fabsf(v1->z) / fabsf(v2->z - v1->z)
! float invt = 1.0f - t;
!
! out->x = invt * v1->x + t * v2->x;
! out->y = invt * v1->y + t * v2->y;
! out->z = 0.0f; // clipped against near plane anyways (I.e Z/W = 0 --> Z = 0)
!
! out->u = invt * v1->u + t * v2->u;
! out->v = invt * v1->v + t * v2->v;
! out->w = invt * v1->w + t * v2->w;
!
! out->b = invt * v1->b + t * v2->b;
! out->g = invt * v1->g + t * v2->g;
! out->r = invt * v1->r + t * v2->r;
! out->a = invt * v1->a + t * v2->a;
! To optimise these calculations, FIPR is used:
! FIPR = FVm.x*FVn.x + FVm.y*FVn.x + FVm.z*FVn.z + FVm.w*FVn.w --> FVn.w
! FIPR can be used to accomplish "vout->Q invt * v1->Q + t * v2->Q" by:
! - assigning x/y components to 0 for both vectors
! - assigning t and invT to z/w of FVm vector
! - assigning v1 and v2 to z/w of FVn vector
! FIPR = 0*0 + 0*0 + t*v1->Q + invT*v2->Q --> FVn.w
! FIPR = t*v1->Q + invT*v2->Q --> FVn.w
.global _ClipEdge
.align 4
_ClipEdge:
mov IN1, TM1 ! MT, tmp = &v1
fldi0 fr4 ! LS, fr4 = 0
add #12, TM1 ! EX, tmp = &v1->z
fmov.s @TM1, fr2 ! LS, fr2 = v1->z
mov IN2, TM1 ! MT, tmp = &v2
fldi0 fr5 ! LS, fr5 = 0
add #12, TM1 ! EX, tmp = &v2->z
fmov.s @TM1,fr11 ! LS, fr11 = v2->z
fsub fr2,fr11 ! FE, fr11 = v2->z - v1->z
fldi0 fr8 ! LS, fr8 = 0
fmul fr11,fr11 ! FE, fr11 = (v2->z - v1->z) * (v2->z * v1->z)
fldi0 fr9 ! LS, fr9 = 0
fldi0 fr0 ! LS, fr0 = 0
fldi0 fr1 ! LS, fr1 = 0
fsrra fr11 ! FE, fr11 = 1 / abs(v2->z - v1->z)
fabs fr2 ! LS, fr2 = abs(v1->z)
fmul fr2,fr11 ! FE, fr11 = abs(v1->Z) / abs(v2->z - v1->z) --> t
add #4, IN1 ! EX, v1 += 4
fldi1 fr10 ! LS, fr10 = 1
add #4, IN2 ! EX, v2 += 4
add #4, OUT ! EX, OUT += 4
fsub fr11,fr10 ! FE, fr10 = 1.0 - t --> invT
fmov.s @IN1+, fr2 ! LS, A1 = v1->x, v1 += 4
fmov.s @IN2+, fr3 ! LS, B1 = v2->x, v2 += 4
fipr fv8, fv0 ! FE, LERP(A1, B1)
fmov.s @IN1+, fr6 ! LS, A2 = v1->y, v1 += 4
fmov.s @IN2+, fr7 ! LS, B2 = v2->y, v2 += 4
fmov.s fr3,@OUT ! LS, OUT->x = LERP
add #4, OUT ! EX, OUT += 4
fipr fv8, fv4 ! FE, LERP(A2, B2)
add #4, IN1 ! EX, v1 += 4
add #4, IN2 ! EX, v2 += 4
fmov.s fr7,@OUT ! LS, OUT->y = LERP
add #4, OUT ! EX, OUT += 4
fmov.s fr1,@OUT ! LS, OUT->z = 0
add #4, OUT ! EX, OUT += 4
fmov.s @IN1+, fr2 ! LS, A1 = v1->u, v1 += 4
fmov.s @IN2+, fr3 ! LS, B1 = v2->u, v2 += 4
fipr fv8, fv0 ! FE, LERP(A1, B1)
fmov.s @IN1+, fr6 ! LS, A2 = v1->v, v1 += 4
fmov.s @IN2+, fr7 ! LS, B2 = v2->v, v2 += 4
fmov.s fr3,@OUT ! LS, OUT->u = LERP
add #4, OUT ! EX, OUT += 4
fipr fv8, fv4 ! FE, LERP(A2, B2)
add #4, IN1 ! EX, v1 += 4
add #4, IN2 ! EX, v2 += 4
fmov.s @IN1,fr2 ! LS, A1 = v1->w
fmov.s @IN2,fr3 ! LS, B1 = v2->w
fmov.s fr7,@OUT ! LS, OUT->v = LERP
add #8, OUT ! EX, OUT += 8
fipr fv8, fv0 ! FE, LERP(A1, B1)
add #-4, IN1 ! EX, v1 -= 4
add #-4, IN2 ! EX, v2 -= 4
fmov.s fr3,@OUT ! LS, OUT->w = lerp
add #-4, OUT ! EX, OUT -= 4
mov.l @IN1,CL1 ! LS, ACOLOR = v1->bgra
mov.l @IN2,CL2 ! LS, BCOLOR = v2->bgra
! Bypass RGBA interpolation if unnecessary
cmp/eq CL1,CL2 ! MT, T = ACOLOR == BCOLOR
bt.s 1f ! BR, if (T) goto 1;
mov CL1,CLO ! MT, OUTCOLOR = ACOLOR (branch delay instruction)
! Interpolate B
extu.b CL1,TM1 ! EX, val = ACOLOR.b
lds TM1,fpul ! CO, FPUL = val
float fpul,fr2 ! EX, fr2 = float(FPUL)
extu.b CL2,TM1 ! EX, val = BCOLOR.b
lds TM1,fpul ! CO, FPUL = val
float fpul,fr3 ! EX, fr3 = float(FPUL)
fipr fv8, fv0 ! FE, LERP(A1, B1)
shlr8 CL1 ! EX, ACOLOR >>= 8
ftrc fr3,fpul ! FE, FPUL = int(lerp)
shlr8 CL2 ! EX, BCOLOR >>= 8
sts fpul,TM2 ! CO, tmp = FPUL
! Interpolate G
extu.b CL1,TM1 ! EX, val = ACOLOR.g
lds TM1,fpul ! CO, FPUL = val
float fpul,fr2 ! EX, fr2 = float(FPUL)
extu.b CL2,TM1 ! EX, val = BCOLOR.g
lds TM1,fpul ! CO, FPUL = val
float fpul,fr3 ! EX, fr3 = float(FPUL)
fipr fv8, fv0 ! FE, LERP(A1, B1)
shlr8 CL1 ! EX, ACOLOR >>= 8
ftrc fr3,fpul ! FE, FPUL = int(lerp)
extu.b TM2,TM2 ! EX, tmp = (uint8)tmp
mov TM2,CLO ! MT, OUTCOLOR.b = tmp
shlr8 CL2 ! EX, BCOLOR >>= 8
sts fpul,TM2 ! CO, tmp = FPUL
! Interpolate R
extu.b CL1,TM1 ! EX, val = ACOLOR.r
lds TM1,fpul ! CO, FPUL = val
float fpul,fr2 ! EX, fr2 = float(FPUL)
extu.b CL2,TM1 ! EX, val = BCOLOR.r
lds TM1,fpul ! CO, FPUL = val
float fpul,fr3 ! EX, fr3 = float(FPUL)
fipr fv8, fv0 ! FE, LERP(A1, B1)
shlr8 CL1 ! EX, ACOLOR >>= 8
ftrc fr3,fpul ! FE, FPUL = int(lerp)
extu.b TM2,TM2 ! EX, tmp = (uint8)tmp
shll8 TM2 ! EX, tmp <<= 8
or TM2,CLO ! EX, OUTCOLOR.g |= tmp
shlr8 CL2 ! EX, BCOLOR >>= 8
sts fpul,TM2 ! CO, tmp = FPUL
extu.b CL1,TM1 ! EX, val = ACOLOR.a
lds TM1,fpul ! CO, FPUL = val
float fpul,fr2 ! EX, fr2 = float(FPUL)
extu.b CL2,TM1 ! EX, val = BCOLOR.a
lds TM1,fpul ! CO, FPUL = val
float fpul,fr3 ! EX, fr3 = float(FPUL)
fipr fv8, fv0 ! FE, LERP(A1, B1)
ftrc fr3,fpul ! FE, FPUL = int(lerp)
extu.b TM2,TM2 ! EX, tmp = (uint8)tmp
shll16 TM2 ! EX, tmp <<= 16
or TM2,CLO ! EX, OUTCOLOR.r |= tmp
sts fpul,TM2 ! CO, tmp = FPUL
extu.b TM2,TM2 ! EX, tmp = (uint8)tmp
shll16 TM2 ! EX, tmp <<= 16
shll8 TM2 ! EX, tmp <<= 8
or TM2,CLO ! EX, OUTCOLOR.a |= tmp
1:
rts ! CO, return after executing instruction in delay slot
mov.l CLO,@OUT ! LS, OUT->color = OUTCOLOR
.size _ClipEdge, .-_ClipEdge
.type _ClipEdge, %function

View File

@ -1,3 +1,3 @@
Version : V1.360 Version : V1.360
SW Maker Name : UnknownShadow200 SW Maker Name : ClassiCube team
Game Title : ClassiCube Dreamcast Game Title : ClassiCube

View File

@ -0,0 +1,7 @@
#!/bin/sh
# Fallback Texture Pack and Audio
mkdir -p ${XDG_DATA_HOME}/ClassiCube/texpacks ${XDG_DATA_HOME}/ClassiCube/audio
test -f ${XDG_DATA_HOME}/ClassiCube/texpacks/classicube.zip || cp /app/share/classicube-texpack.zip ${XDG_DATA_HOME}/ClassiCube/texpacks/classicube.zip
test -f ${XDG_DATA_HOME}/ClassiCube/audio/classicube.zip || cp /app/share/classicube-audio.zip ${XDG_DATA_HOME}/ClassiCube/audio/classicube.zip
cd ${XDG_DATA_HOME}/ClassiCube && exec ClassiCube "$@"

View File

@ -0,0 +1,136 @@
{
"id": "net.classicube.flatpak.client",
"runtime": "org.gnome.Platform",
"runtime-version": "48",
"sdk": "org.gnome.Sdk",
"command": "ClassiCubeLauncher",
"finish-args": [
"--socket=wayland",
"--socket=fallback-x11",
"--device=dri",
"--share=network",
"--share=ipc",
"--socket=pulseaudio"
],
"modules": [
{
"name": "SDL3",
"buildsystem": "cmake-ninja",
"builddir": true,
"sources": [
{
"type": "git",
"url": "https://github.com/libsdl-org/SDL.git",
"branch": "main"
}
],
"cleanup": [
"/bin/sdl3-config",
"/include",
"/lib/libSDL3.la",
"/lib/libSDL3main.a",
"/lib/libSDL3main.la",
"/lib/libSDL3_test.a",
"/lib/libSDL3_test.la",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"
],
"modules": [
{
"name": "libdecor",
"buildsystem": "meson",
"config-opts": [
"-Ddemo=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.freedesktop.org/libdecor/libdecor.git"
}
],
"cleanup": [
"/include",
"/lib/pkgconfig"
]
}
]
},
{
"name": "zenity-gtk3",
"buildsystem": "meson",
"build-commands": [
"mkdir -p ${FLATPAK_DEST}/share/icons/hicolor"
],
"sources": [
{
"type": "archive",
"url": "https://gitlab.gnome.org/GNOME/zenity/-/archive/3.44.4/zenity-3.44.4.tar.gz",
"sha256": "e7b334867d4e11053e6e52e5d51b7a983dc549f93cb3fda757e40309b16bc57b"
}
],
"post-install": [
"mv ${FLATPAK_DEST}/bin/zenity ${FLATPAK_DEST}/bin/zenity-gtk3"
]
},
{
"name": "zenity-gtk4",
"buildsystem": "meson",
"sources": [
{
"type": "archive",
"url": "https://gitlab.gnome.org/GNOME/zenity/-/archive/4.0.2/zenity-4.0.2.tar.gz",
"sha256": "fdbb74e882a6a56bb2f1a2381b81e08b06c627cc7e944edb71d107092c70dd80",
"x-checker-data": {
"type": "gnome",
"name": "zenity"
}
}
],
"post-install": [
"mv ${FLATPAK_DEST}/bin/zenity ${FLATPAK_DEST}/bin/zenity-gtk4"
]
},
{
"name": "ClassiCubeAssets",
"buildsystem": "simple",
"build-commands": [
"install -Dm644 classicube-texpack.zip ${FLATPAK_DEST}/share/classicube-texpack.zip",
"install -Dm644 classicube-audio.zip ${FLATPAK_DEST}/share/classicube-audio.zip"
],
"sources": [
{
"type": "file",
"dest-filename": "classicube-texpack.zip",
"url": "https://classicube.net/static/default.zip",
"sha256": "55eac12a9727d209b42694d07dfdca8d50349779ab77ffc11a31d2cb66b45635"
},
{
"type": "file",
"dest-filename": "classicube-audio.zip",
"url": "https://classicube.net/static/audio.zip",
"sha256": "13562a712d1cb1de3f36dd93a03245a377f201e7934d19c17de09202b410e04b"
}
]
},
{
"name": "ClassiCube",
"buildsystem": "simple",
"build-commands": [
"gcc -fno-math-errno src/*.c -o src/ClassiCube -rdynamic -lpthread -lGL -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3 -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -DCC_BUILD_FLATPAK -L /app/lib -lSDL3",
"install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin",
"install -Dm755 misc/flatpak/ClassiCubeLauncher -t ${FLATPAK_DEST}/bin",
"install -Dm755 misc/flatpak/zenity-wrapper ${FLATPAK_DEST}/bin/zenity",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml"
],
"sources": [
{
"type": "git",
"url": "https://github.com/ClassiCube/ClassiCube.git"
}
]
}
]
}

View File

@ -0,0 +1,56 @@
{
"id": "net.classicube.flatpak.client",
"runtime": "org.freedesktop.Platform",
"runtime-version": "24.08",
"sdk": "org.freedesktop.Sdk",
"command": "ClassiCubeLauncher",
"finish-args": [
"--socket=x11",
"--device=dri",
"--share=network",
"--share=ipc",
"--socket=pulseaudio"
],
"modules": [
{
"name": "ClassiCubeAssets",
"buildsystem": "simple",
"build-commands": [
"install -Dm644 classicube-texpack.zip ${FLATPAK_DEST}/share/classicube-texpack.zip",
"install -Dm644 classicube-audio.zip ${FLATPAK_DEST}/share/classicube-audio.zip"
],
"sources": [
{
"type": "file",
"dest-filename": "classicube-texpack.zip",
"url": "https://classicube.net/static/default.zip",
"sha256": "55eac12a9727d209b42694d07dfdca8d50349779ab77ffc11a31d2cb66b45635"
},
{
"type": "file",
"dest-filename": "classicube-audio.zip",
"url": "https://classicube.net/static/audio.zip",
"sha256": "13562a712d1cb1de3f36dd93a03245a377f201e7934d19c17de09202b410e04b"
}
]
},
{
"name": "ClassiCube",
"buildsystem": "simple",
"build-commands": [
"gcc -fno-math-errno src/*.c -o src/ClassiCube -O1 -DCC_BUILD_FLATPAK -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -rdynamic -lm -lpthread -lX11 -lXi -lGL -ldl",
"install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin",
"install -Dm755 misc/flatpak/ClassiCubeLauncher -t ${FLATPAK_DEST}/bin",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop",
"install -Dm644 misc/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml"
],
"sources": [
{
"type": "git",
"url": "https://github.com/ClassiCube/ClassiCube.git"
}
]
}
]
}

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

7
misc/flatpak/zenity-wrapper Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
# Allow forcing GTK3/4 through $CC_DIALOG_FORCE_ZENITY_GTK{3,4}
if [[ -z "${CC_DIALOG_FORCE_ZENITY_GTK3}" && "${XDG_CURRENT_DESKTOP}" == "GNOME" || ! -z "${CC_DIALOG_FORCE_ZENITY_GTK4}" ]]; then
zenity-gtk4 "$@"
else
zenity-gtk3 "$@"
fi

97
misc/gba/Makefile Normal file
View File

@ -0,0 +1,97 @@
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-gba
# List of directories containing source code
SOURCE_DIRS = src src/gba
# Directory where object files are placed
BUILD_DIR = build/gba
GAME_TITLE = ClassiCube
GAME_CODE = 0000
MAKER_CODE = 00
#---------------------------------------------------------------------------------
# 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)))
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
#---------------------------------------------------------------------------------
# Code generation
#---------------------------------------------------------------------------------
ARCH = -mthumb -mthumb-interwork
CFLAGS = -g -gdwarf-4 -Wall -O2 -DPLAT_GBA -ffunction-sections -fdata-sections -mcpu=arm7tdmi -mtune=arm7tdmi $(ARCH)
ASFLAGS = -g $(ARCH)
LDFLAGS = -specs=gba.specs -g $(ARCH)
#---------------------------------------------------------------------------------
# Compiler tools
#---------------------------------------------------------------------------------
PREFIX = $(DEVKITPRO)/devkitARM/bin/arm-none-eabi-
ARM_AS = $(PREFIX)as
ARM_CC = $(PREFIX)gcc
ARM_OBJCOPY = $(PREFIX)objcopy
GBAFIX = $(DEVKITPRO)/tools/bin/gbafix
#---------------------------------------------------------------------------------
# Main targets
#---------------------------------------------------------------------------------
default: $(BUILD_DIR) $(TARGET).gba
clean:
rm $(TARGET).gba $(TARGET).elf $(OBJS)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#---------------------------------------------------------------------------------
# Executable generation
#---------------------------------------------------------------------------------
$(TARGET).elf: $(OBJS)
$(ARM_CC) $(LDFLAGS) $^ -o $@ $(LIBS)
$(TARGET).gba: $(TARGET).elf
$(ARM_OBJCOPY) -O binary $< $@
$(GBAFIX) $@ -t$(GAME_TITLE) -c$(GAME_CODE) -m$(MAKER_CODE)
#---------------------------------------------------------------------------------
# Object generation
#---------------------------------------------------------------------------------
$(BUILD_DIR)/%.o: src/%.c
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: src/gba/%.c
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: src/gba/%.S
$(ARM_CC) $(CFLAGS) $(INCLUDES) $(DEPFLAGS) -c $< -o $@
#---------------------------------------------------------------------------------
# Dependency tracking
#---------------------------------------------------------------------------------
$(DEPFILES):
include $(wildcard $(DEPFILES))

3
misc/gba/README.md Normal file
View File

@ -0,0 +1,3 @@
To see debug log messages in mGBA:
1) In the UI, make sure in Tools > Logging, that Debugger is enabled

View File

@ -1,102 +1,94 @@
#--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKITPRO)),)
# Clear the implicit built in rules $(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPro)
#--------------------------------------------------------------------------------- endif
.SUFFIXES: .SUFFIXES:
.SECONDARY:
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
endif
include $(DEVKITPPC)/gamecube_rules
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# TARGET is the name of the output # Configurable options
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
TARGET := ClassiCube-gc # Name of the final output
BUILD := build-gc TARGET = ClassiCube-gc
SOURCES := src third_party/bearssl/src # List of directories containing source code
INCLUDES := third_party/bearssl/inc SOURCE_DIRS = src src/gcwii third_party/bearssl
# Directory where object files are placed
BUILD_DIR = build/gc
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# options for code generation # 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)))
# Dependency tracking
DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD_DIR)/$*.d
DEPFILES := $(OBJS:%.o=%.d)
CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
CXXFLAGS = $(CFLAGS)
LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project # Code generation
#---------------------------------------------------------------------------------
LIBS := -lasnd -lbba -lfat -logc -lm
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET) MACHDEP = -DGEKKO -mogc -mcpu=750 -meabi -msdata=sysv -mhard-float
CFLAGS = -g -O2 -Wall $(MACHDEP) -I$(DEVKITPRO)/libogc2/gamecube/include -DPLAT_GAMECUBE
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) LDFLAGS = -g $(MACHDEP) -L$(DEVKITPRO)/libogc2/gamecube/lib
# Additional libraries to link against
LIBS = -lasnd -lbba -lfat -logc -lm
export DEPSDIR := $(CURDIR)/$(BUILD)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# automatically build a list of object files for our project # Compiler tools
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) PREFIX := $(DEVKITPRO)/devkitPPC/bin/powerpc-eabi-
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) PPC_AS := $(PREFIX)as
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S))) PPC_CC := $(PREFIX)gcc
PPC_CXX := $(PREFIX)g++
export LD := $(CC) ELF2DOL := $(DEVKITPRO)/tools/bin/elf2dol
export OFILES := $(CFILES:.c=.o) $(sFILES:.s=.o) $(SFILES:.S=.o)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# build a list of include paths # Main targets
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ default: $(BUILD_DIR) $(TARGET).dol
-I$(CURDIR)/$(BUILD) \
-I$(LIBOGC_INC)
#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
export LIBPATHS := -L$(LIBOGC_LIB)
export OUTPUT := $(CURDIR)/$(TARGET)
.PHONY: $(BUILD) clean
#---------------------------------------------------------------------------------
all: $(BUILD)
$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/misc/gc/Makefile
$(BUILD):
mkdir -p $@
#---------------------------------------------------------------------------------
clean: clean:
echo clean ... rm $(TARGET).dol $(TARGET).elf $(OBJS)
rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
else # Executable generation
#---------------------------------------------------------------------------------
$(TARGET).elf: $(OBJS)
$(PPC_CC) $(LDFLAGS) $^ -o $@ $(LIBS)
$(TARGET).dol: $(TARGET).elf
$(ELF2DOL) $< $@
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# main targets # Object generation
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(OUTPUT).dol: $(OUTPUT).elf $(BUILD_DIR)/%.o: src/%.c
$(OUTPUT).elf: $(OFILES) $(PPC_CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: src/gcwii/%.c
$(PPC_CC) $(CFLAGS) $(DEPFLAGS) -c $< -o $@
$(BUILD_DIR)/%.o: third_party/bearssl/%.c
$(PPC_CC) $(CFLAGS) -c $< -o $@
-include $(DEPSDIR)/*.d
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
endif # Dependency tracking
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
$(DEPFILES):
include $(wildcard $(DEPFILES))

5
misc/gc/README.md Normal file
View File

@ -0,0 +1,5 @@
To see debug log messages in Dolphin:
1) In the UI, make sure 'Show log configuration' checkbox is checked in View menu
2) Make sure "OSReport EXI (OSREPORT)" log type is enabled
3) In the UI, make sure 'Show log' checkbox is checked in View menu

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -18,6 +18,16 @@
<string>1.0</string> <string>1.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.games</string>
<key>GCSupportsGameMode</key>
<true/>
<key>LSSupportsGameMode</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
<false/> <false/>
<key>NSPhotoLibraryAddUsageDescription</key> <key>NSPhotoLibraryAddUsageDescription</key>

View File

@ -1,3 +0,0 @@
#!/bin/sh
mkdir -p ${XDG_DATA_HOME}/ClassiCube
cd ${XDG_DATA_HOME}/ClassiCube && exec ClassiCube $@

View File

@ -1,78 +0,0 @@
{
"id": "net.classicube.flatpak.client",
"runtime": "org.freedesktop.Platform",
"runtime-version": "23.08",
"sdk": "org.freedesktop.Sdk",
"command": "ClassiCubeLauncher",
"finish-args": [
"--socket=wayland",
"--socket=fallback-x11",
"--device=dri",
"--share=network",
"--share=ipc",
"--socket=pulseaudio"
],
"modules": [
{
"name": "SDL3",
"buildsystem": "cmake-ninja",
"builddir": true,
"sources": [
{
"type": "git",
"url": "https://github.com/libsdl-org/SDL.git",
"branch": "main"
}
],
"cleanup": [
"/bin/sdl3-config",
"/include",
"/lib/libSDL3.la",
"/lib/libSDL3main.a",
"/lib/libSDL3main.la",
"/lib/libSDL3_test.a",
"/lib/libSDL3_test.la",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"
],
"modules": [
{
"name": "libdecor",
"buildsystem": "meson",
"config-opts": [
"-Ddemo=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.freedesktop.org/libdecor/libdecor.git"
}
],
"cleanup": [
"/include",
"/lib/pkgconfig"
]
}
]
},
{
"name": "ClassiCube",
"buildsystem": "simple",
"build-commands": [
"gcc -fno-math-errno src/*.c -o src/ClassiCube -rdynamic -lpthread -lGL -DCC_WIN_BACKEND=CC_WIN_BACKEND_SDL3 -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -DCC_BUILD_FLATPAK -L /app/lib -lSDL3",
"install -Dm755 src/ClassiCube -t ${FLATPAK_DEST}/bin",
"install -Dm755 misc/linux/flatpak/ClassiCubeLauncher -t ${FLATPAK_DEST}/bin",
"install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.svg ${FLATPAK_DEST}/share/icons/hicolor/scalable/apps/net.classicube.flatpak.client.svg",
"install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.desktop ${FLATPAK_DEST}/share/applications/net.classicube.flatpak.client.desktop",
"install -Dm644 misc/linux/flatpak/net.classicube.flatpak.client.metainfo.xml ${FLATPAK_DEST}/share/metainfo/net.classicube.flatpak.client.metainfo.xml"
],
"sources": [
{
"type": "git",
"url": "https://github.com/ClassiCube/ClassiCube.git"
}
]
}
]
}

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