Compare commits

..
Author SHA1 Message Date
Alibek Omarov c7768c48a6 ref: gl: fix GL state tracker inconsistency caused by VBO renderer 2026-08-08 21:20:52 +05:00
Alibek Omarov 2d88199150 engine: common: mod_bmodel: widen external BSP models clipnodes to 32-bit if the world is 32-bit 2026-08-08 18:42:57 +05:00
Alibek Omarov b2ebe5adfd engine: common: mod_bmodel: fix crash on Quake sky textures, pass real miptex data to Mod_InitSkyClouds instead of the on-stack header copy
Fixes: ef5295c5a ("engine: workaround the misalignment issue when reading textures in BSP")
2026-08-08 17:58:33 +05:00
Alibek Omarov f864494603 engine: platform: apple: workaround MasterPort/MainPort symbols in different macOS versions 2026-08-08 16:49:54 +05:00
Alibek Omarov 6f2e55c2fb engine: client: sound: harden S_AdjustLoopedSamplePosition against invalid loopstart also 2026-08-08 16:43:16 +05:00
Alibek Omarov 010bf63d42 engine: client: soundlib: refuse to loop WAV files that have broken "cue " chunk (for example, if loopstart points at invalid offset) 2026-08-08 16:41:49 +05:00
Alibek Omarov 4144c9e240 engine: client: vgui: refactoring 2026-08-08 16:16:15 +05:00
Alibek Omarov 9f8cb4c172 common: render_api: add CONTEXT_TYPE_SOFTWARE just to distinguish ref_soft and ref_null from ref_gl. Both returned 0 which in case of PARM_GL_CONTEXT_TYPE means compatibility GL profile 2026-08-08 00:39:42 +05:00
Alibek Omarov 28ed4e7930 engine: server: remove duplicated sv_clienttrace check, use Cvar_DirectSet 2026-08-07 23:07:21 +05:00
Alibek Omarov c2cb4ed5b8 ref: gl: mark gl_max_size as compatibility cvar 2026-08-07 07:12:30 +05:00
Alibek Omarov 3041bd0ba9 engine: client: sound: clamp mixed sample count to requested amount, fixes paintbuffer overflow with timecompressed VOX 2026-08-06 16:14:52 +05:00
Alibek Omarov 15276ef92a engine: client: sound: fix inverted check for inaudible channel auto free 2026-08-06 03:55:51 +05:00
Mohamad Kanjoanda1batross 4f554e7b8b engine: client: deliver keys in Key_Event regardless of whether the client.dll handled them or not + expanded comment
I have also removed the comment at the return statement, as its now misleading
2026-08-06 06:39:54 +08:00
Mohamad Kanjoanda1batross e39d872bb7 engine: client: deliver keys in Key_Event's handled-in-client case 2026-08-06 06:39:54 +08:00
Alibek Omarov 46add4784b ref: gl: extract studio draw mesh branch into it's own function, refactoring 2026-08-05 04:17:40 +05:00
Alibek Omarov fe62e61aa4 3rdparty: nanogl: update, again 2026-08-05 01:00:12 +05:00
Alibek Omarov de74ce9767 ref: add r_studio_builtin_renderer cvar to use engine's StudioModelRenderer. It gives no benefit other than for debugging purposes 2026-08-05 00:15:23 +05:00
Alibek Omarov 8c89579c35 3rdparty: nanogl: update 2026-08-04 21:58:54 +05:00
Alibek Omarov 18dddaf1a5 3rdparty: nanogl: update 2026-08-03 23:44:48 +05:00
Alibek Omarov d3bcdc6c06 engine: imagelib: Image_SaveWAD refactoring 2026-08-03 21:55:03 +05:00
Andrey Akhmichinanda1batross c0a40f6e03 Documentation: opensource-mods.md: add Zombie Panic. 2026-08-03 18:43:59 +08:00
Andrey Akhmichinanda1batross e3e459bb67 Documentation: supported-mod-list.md: add Half-Life: Sum. 2026-08-02 18:12:30 +05:00
Andrey Akhmichinanda1batross badda6c585 Documentation: opensource-mods.md: add Half-Life: Sum. 2026-08-02 18:05:46 +05:00
Andrey Akhmichinanda1batross db68b7c6e7 Documentation: supported-mod-list.md: update. 2026-08-01 19:20:22 +05:00
Andrey Akhmichinanda1batross 841b2bcf5a Documentation: opensource-mods.md: update. 2026-08-01 19:19:50 +05:00
Alibek Omarov a5fb74eb8f engine: use XASH_OSX macro 2026-08-01 16:12:04 +05:00
Alibek Omarov 31d44f85a7 engine: implement reading hardware serial ID on Mac, implement reading MAC addresses on *BSDs, refactoring 2026-08-01 16:12:04 +05:00
Alibek Omarov 24f8525fad engine: server: refactoring. 2026-08-01 16:12:04 +05:00
SLB8910anda1batross 04fbe1a356 CONTRIBUTING.md: fixed horrible grammer
made contributing.md actually readable
2026-07-30 20:55:09 +05:00
Andrey Akhmichinanda1batross ecda80fb9a Documentation: supported-mod-list.md: update. 2026-07-29 02:43:00 +05:00
Владислав СуховandVladimir 9f14c48787 3rdparty: mainui: update 2026-07-27 18:47:53 +04:00
Владислав Суховanda1batross 8b15bc9a96 3rdparty: mainui: update 2026-07-26 18:08:54 +05:00
Andrey Akhmichinanda1batross e6913c9ce2 Documentation: opensource-mods.md: update. 2026-07-26 08:24:34 +05:00
lewa_j b4495238d9 3rdparty: gl4es: update from upstream, with msvc build fix 2026-07-25 17:33:13 +03:00
lewa_j 635b382c1d gl4es: msvc: suppress warning spam from CHECK_SHADER: warning C4098: 'void' function returning a value
Same flag is used in gl4es's CMakeLists
2026-07-25 15:26:25 +03:00
Terence Nooneanda1batross 7fbd461f83 engine: Format code
Ran uncrustify on each file
2026-07-24 14:23:39 +05:00
Terence Nooneanda1batross eb0ff8e631 engine: Implement SDL3 resizing/mode switching
Adds the ability to switch to fullscreen, windowed, and borderless, as
well as changing fullscreen mode.
2026-07-24 14:23:39 +05:00
Terence Nooneanda1batross f50e61403f engine: Fix SDL3 support
Gets SDL3 building again on macOS. The game is able to boot to the main
menu and play with hlsdk-portable and HL assets. Some bugs when changing
video modes.
2026-07-24 14:23:39 +05:00
Alibek Omarov 2cf8c63631 engine: server: fix a typo, we should set pmove frametime before calling server pmove, instead of server global pmove, like GoldSrc
Thanks to @dkenw for drawing attention to this issue.
2026-07-22 17:36:32 +05:00
Alibek Omarov e09773c912 engine: server: add challenge to A2S_GOLDSRC_RULES and A2S_GOLDSRC_PLAYERS 2026-07-22 10:03:59 +05:00
Alibek Omarov 3a15357dc8 engine: server: drop A2A_NETINFO 2026-07-22 10:03:59 +05:00
Sergey DegtyarandAlibek Omarov 2127735456 engine: implement GoldSrc A2S query for NetAPI
As Xash also supports GoldSrc like queries, it's netinfo is dropped.
2026-07-22 10:03:59 +05:00
Alibek Omarov e0ab44213a Documentation: protocol: connectionless: add GoldSrc A2S queries 2026-07-22 10:03:59 +05:00
Buggem's Fedora PCanda1batross f2166a2c9d ref: soft: Try to stop decal->pnext loops from recursing infinitely
Doesn't fix the root cause of the problem, which is the mysterious setting of decal->pnext to decal which doesn't happen in GL, but does act as a blockade and a temporary fix
2026-07-21 15:16:32 +05:00
Alibek Omarov 009855c193 scripts: waifulib: clang_format: don't abort configure when clang-format is too old, just disable the format command 2026-07-19 07:37:01 +05:00
ksagamenganda1batross f0ea3a194a platform: ios: Remake launch dialog using UIAlertController 2026-07-15 15:16:14 +05:00
Alibek Omarov 9f2b8954e9 utils: add new tool xash-clang-format, a wrapper around clang-format that adds our formatting extensions 2026-07-01 22:53:52 +05:00
Alibek Omarov 2166dbde66 3rdparty: mainui: update 2026-06-30 23:25:50 +05:00
Alibek Omarov 4c109a0c6c engine: propagate challenge to client connect message 2026-06-30 23:24:16 +05:00
Alibek Omarov 36c71c2610 engine: fixes found by fuzzing sprite loader: mostly float-to-int conversions and overflows 2026-06-30 22:12:01 +05:00
Alibek Omarov e2d6b7ab28 ref: gl: do not deadname LadyHavoc 2026-06-30 22:12:01 +05:00
Alibek Omarov 8ccb9dea3f engine: add sprite model loading fuzzing, decouple fuzzing from tests 2026-06-30 22:12:01 +05:00
Alibek Omarov 34467bfe9a ref: gl: make R_AddDynamicLights only iterate through actually lit box 2026-06-30 22:12:01 +05:00
Владислав Суховanda1batross b1d9eef896 Documentation: donate: refine contribution info and add PayPal link 2026-06-24 23:48:39 +05:00
Alibek Omarov c2ac632446 engine: client: s/cls.legacymode/cls.net_protocol/g 2026-06-22 18:42:56 +05:00
Alibek Omarov 365c126de6 engine: client: fix uninitlaized variable, treat legacy info response servers as 48 even though it's incorrect 2026-06-22 18:34:55 +05:00
Alibek Omarov 44313e624c engine: client: fix parsing of legacy goldsrc A2S_INFO response format 2026-06-22 17:39:42 +05:00
Alibek Omarov 2f776a6173 engine: add overflow checks to sprite loader 2026-06-22 17:39:42 +05:00
Владислав Суховanda1batross 190fa1bab8 3rdparty: mainui: update 2026-06-22 09:54:57 +05:00
Alibek Omarov 3366ad06d0 wscript: add yy-thunks library to help support the holy cow of windows users 2026-06-21 11:16:03 +05:00
Alibek Omarov 57206b3651 client: parse: fix svc_spawnbaseline entity type delta table determine order 2026-06-21 10:34:33 +05:00
Alibek Omarov d9ecd03b4a client: parse: fix default attenuation value for goldsrc sound packet 2026-06-21 10:12:56 +05:00
Alibek Omarov 2de4d0d364 common: fix usercmd_t::msec type in q_client.h 2026-06-21 09:45:50 +05:00
aueweanda1batross cc3889146c 3rdparty: mainui: update 2026-06-20 08:14:04 +05:00
Alibek Omarov 09f5886751 readme: add note about third party builds 2026-06-17 20:09:15 +05:00
Alibek Omarov fb5b4fed6e filesystem: VFileSystem009: fix DeleteFile 2026-06-16 15:13:30 +05:00
Alibek Omarov 1e31fbcd51 ref: shut up DecalShoot about decals must hit mod_brush
This is an annoying message that's caused by the game code. Decals, without
custom renderer, cannot be rendered on non-brush entities, and everybody knows
that anyway.
2026-06-14 07:22:30 +05:00
Alibek Omarov b2a5f0db5a engine: masterlist: fix addmaster command not allowing third optional argument 2026-06-09 21:47:08 +05:00
Alibek Omarov abd7b5ccdd engine: masterlist: change parsing static server list from by token to by line 2026-06-08 22:17:21 +05:00
Alibek Omarov 8c9cd59c71 engine: http: fix the bug where maxconnections wasn't followed when many files were queued at once, bump it back to 5 concurrent connections 2026-06-07 17:29:41 +05:00
Alibek Omarov c79b29687c engine: http: cache resolve result in httpserver_t 2026-06-07 17:18:28 +05:00
Alibek Omarov 1eb922a0f1 engine: http: also lazy allocate buffer for query/response 2026-06-07 17:17:54 +05:00
Alibek Omarov f6e36994be engine: http: lazy open download files, to avoid wasting too much file descriptors 2026-06-07 17:09:59 +05:00
Alibek Omarov e83ba6509e 3rdparty: mbedtls: make common compat.c for all platforms we want to support 2026-06-07 07:08:24 +05:00
Alibek Omarov 5cfb67940b 3rdparty: mbedtls: add psvita support 2026-06-07 06:39:50 +05:00
Alibek Omarov e31c893852 wscript: enable bcrypt on Windows, add entropy generator that avoids usage of bcrypt for our 32-bit builds, allowing them to run on Windows XP 2026-06-07 06:39:50 +05:00
Alibek Omarov 85e5f032d8 scripts: gha: remove bundled mbedTLS on Switch 2026-06-07 06:39:50 +05:00
Alibek Omarov 92fd51ad99 engine: http: don't allow CRLF in URLs, fix memory leaks 2026-06-07 06:11:39 +05:00
Alibek Omarov 5480055997 engine: http: use thin TLS backend in HTTP client 2026-06-07 05:56:54 +05:00
Alibek Omarov d634c6aad5 engine: http: use separate mempool for HTTP client 2026-06-07 05:56:54 +05:00
Alibek Omarov 034efb3b31 engine: http: add TLS backend using mbedTLS 2026-06-07 05:56:54 +05:00
Alibek Omarov eae45b2e81 engine: wscript: link in mbedtls 2026-06-07 05:56:54 +05:00
Alibek Omarov 567d279007 engine: wscript: drop unfinished work on curl 2026-06-07 05:56:54 +05:00
Alibek Omarov 27f8385bb1 wscript: wire up mbedtls 2026-06-07 05:56:54 +05:00
Alibek Omarov 1cfabd5ec9 3rdparty: mbedtls: initial add 2026-06-07 05:56:54 +05:00
Alibek Omarov ab6672fb8a 3rdparty: xash-extras: update in preparation for TLS integration 2026-06-07 03:46:11 +05:00
Alibek Omarov 2d39a7fa24 engine: fix skewed ping calculation, drop --debug-all-servers 2026-06-07 03:17:45 +05:00
Alibek Omarov 7db12ade3a 3rdparty: mainui: update 2026-06-07 03:16:57 +05:00
Alibek Omarov 61a84f6953 engine: cache negative master server DNS failures longer, remove dead UDP master server addresses 2026-06-07 02:24:30 +05:00
Alibek Omarov 75ffba64c5 engine: http: add support for redirects 2026-06-06 22:55:47 +05:00
Alibek Omarov c134840148 engine: masterlist: add UDP master server deprecation notice, fix static master list address 2026-06-06 19:53:37 +05:00
Alibek Omarov 51d1bfbe08 3rdparty: mainui :update 2026-06-06 03:30:26 +05:00
Alibek Omarov 79ff8332ac 3rdparty: mainui: update 2026-06-06 02:51:41 +05:00
Alibek Omarov f155005bb1 engine: move out MAX_CLIENTS definition 2026-06-06 02:50:30 +05:00
Alibek Omarov a8de8cf5e6 Documentation: protocol: document new static master protocol 2026-06-06 02:47:39 +05:00
Alibek Omarov 74fcab9bfb engine: implement new static master server protocol 2026-06-06 02:47:39 +05:00
Alibek Omarov efad71bcc9 engine: in-memory HTTP downloader 2026-06-06 02:47:39 +05:00
Alibek Omarov c444ab882a engine: client: drop key ms protocol extension 2026-06-06 02:47:39 +05:00
🗣🗣: "ùồầỳ hợp lý quãi chất thế nhờ"🤫🗿🔥🔥anda1batross 8fad3bbad6 public: wrap macro arguments in parentheses 2026-06-05 21:55:59 +05:00
Alibek Omarov 4cd6d25ee6 engine: common: account for header size when sending first file fragment (which contains filename + compressor on goldsrc) 2026-06-05 08:42:46 +05:00
Alibek Omarov 33e47ef5a9 engine: fix engine.log output 2026-06-02 06:44:39 +05:00
Alibek Omarov d19e9606e9 3rdparty: mainui: update 2026-06-02 06:25:52 +05:00
Alibek Omarov fe1827f5e4 engine: common: don't let executing @ prefixed commands and cvars for unprivileged mode 2026-06-02 06:13:59 +05:00
Alibek Omarov 918323fcea engine: upload logo on connect always, add @cl_logoupdate cvar to clearly signal logo changes from DLL side 2026-06-02 06:10:24 +05:00
Alibek Omarov e75256ec9d 3rdparty: mainui: update 2026-06-02 05:59:09 +05:00
Alibek Omarov 47582182e6 engine: server: set flag that we are expecting resource list to come from the client to not apply resource list rate limit 2026-06-02 02:56:19 +05:00
Alibek Omarov 4a2c218cfc engine: common: xrcon: oops, fix build, forgot to stage the change 2026-06-01 21:32:45 +05:00
Alibek Omarov 376817478d engine: platform: sdl2: add expiremntal flag -nosteaminput that would remove set by Steam SDL environment variables and let us use gamepad directly 2026-06-01 18:55:38 +05:00
Alibek Omarov b96dc61e31 engine: common: xrcon: do not print misleading "client disconnected" message on engine shutdown 2026-06-01 18:49:50 +05:00
Alibek Omarov b997d5657b engine: common: xrcon: refactor macros and magic numbers 2026-06-01 18:49:50 +05:00
Alibek Omarov e9f5bca5c4 engine: common: make single shared print buffer with stripped colorcodes
- in xrcon, make delay and timeout macros into cvars
2026-06-01 18:49:50 +05:00
Alibek Omarov b36f107a2e engine: common: xrcon: use uint32_t for message types instead of null terminated small strings 2026-06-01 18:49:50 +05:00
Alibek Omarov a305ffb33f engine: common: xrcon: replace XRCON_STATE with XRCON_PARSER for parser state machine types 2026-06-01 18:49:50 +05:00
Alibek Omarov 1cc1b60b10 engine: common: xrcon: add NUL at the end of print message 2026-06-01 18:49:50 +05:00
Alibek Omarov 648db4a2b3 engine: common: xrcon: fix potential overflow and another recursion case 2026-06-01 18:49:50 +05:00
SNMetamorphandAlibek Omarov 2c0c20dfe6 Documentation: added XRCON protocol description 2026-06-01 18:49:50 +05:00
SNMetamorphandAlibek Omarov 17e167432a engine: common: xrcon: various code fixes 2026-06-01 18:49:50 +05:00
SNMetamorphandAlibek Omarov 97b8ca6b38 engine: common: xrcon: strip color codes before sending message to client 2026-06-01 18:49:50 +05:00
SNMetamorphandAlibek Omarov 6dabc6f2c5 engine: common: initial implementation of XRCON server 2026-06-01 18:49:50 +05:00
SNMetamorphandAlibek Omarov e808038fee engine: common: add function NET_MakeSocketReuseAddr 2026-06-01 18:49:50 +05:00
Владислав Суховanda1batross a60d0d142d engine: add support for legacy 'm' query responses 2026-05-31 03:11:01 +05:00
Alibek Omarov bf5d88d9a4 engine: net_chan: reset file fragment buffers early, right after they are consumed 2026-05-30 03:57:12 +05:00
Alibek Omarov adca77672a engine: client: fix crash when loading a save that references non-existing word 2026-05-30 03:53:16 +05:00
Alibek Omarov ef5295c5ab engine: workaround the misalignment issue when reading textures in BSP 2026-05-30 03:53:16 +05:00
Alibek Omarov 37da317133 filesystem: tests: fix build on Windows 2026-05-27 15:17:20 +05:00
Alibek Omarov c93cb49a9e engine: client: fix typo in COM_RandomLong 2026-05-27 01:06:27 +05:00
Alibek Omarov 4f342fb19a filesystem: tests: reduce boilerplate, add filecopy test 2026-05-27 00:39:07 +05:00
Alibek Omarov 8ee3544507 filesystem: use sendfile for faster FS_FileCopy on Linux 2026-05-27 00:34:49 +05:00
Alibek Omarov d44e6d5db7 android: drop 64-bit x86 build, as no known 64-bit only (i.e. with no 32-bit support) x86 deployments of Android are known 2026-05-26 23:11:23 +05:00
Alibek Omarov 21cc9feca7 engine: client: don't require cookie echo when server didn't negotiate NET_EXT_NETCHAN_COOKIE 2026-05-26 03:10:31 +05:00
Alibek Omarov e87b14468d ref: when entity model is NULL, the entity is player and we're drawing in menu, skip this entity silently
The menu relies on the fact that model is set from player's userinfo, and if it has bogus model, it will
trip on the nullptr model assert
2026-05-26 02:57:47 +05:00
Alibek Omarov e01921dd10 engine: server: bump datagram overflow messages to -dev 2 2026-05-26 02:57:47 +05:00
Alibek Omarov e5c4e49782 engine: client: introduce cookie protocol extension, when client connects to the server, it provides randomized 64-bit value to be prefixed into netchan messages
* Prevent clientuseragent from leaking data.
* Process qport in netchan, cleaning up code
2026-05-26 02:14:58 +05:00
Alibek Omarov d61983a5d2 engine: randomize outgoing_sequence on server side 2026-05-26 02:14:58 +05:00
Alibek Omarov c3f4eb026b engine: only allow net_sequence_window packets, prevent sudden, usually impossible, jumps 2026-05-26 02:14:58 +05:00
SNMetamorphanda1batross fe9b8bcaca engine: enable warning when client or server tries to access non-existent cvar 2026-05-25 13:44:26 +05:00
CzarintaxandGitHub 33cd20b21b engine: server: fix SV_ProcessFile crash from short malformed filename (#2606) 2026-05-25 13:42:03 +05:00
SNMetamorphandVladimir 78a3b958dd engine: client: disable saving testing cvars that potentially could break game 2026-05-24 15:14:15 +04:00
SNMetamorphandVladimir 0e56fa10f9 engine: client: make cvar cl_ticket_generator privileged 2026-05-24 15:14:15 +04:00
SNMetamorphandVladimir b6a67b56b0 engine: client: make cvar cl_steam_broker_addr privileged
(cherry picked from commit e97442f1b04c81ee406779963bd7d58cd586aecf)
2026-05-24 15:14:15 +04:00
Alibek Omarov eb9de1cac8 engine: fix NET_IsReservedAdr checks for IPv6, treat IPv4-mapped-as-IPv6 as IPv4 2026-05-23 21:23:10 +05:00
Alibek Omarov 24abd2deb2 engine: host: improve missing game libraries message so it's easier to understand 2026-05-23 21:23:10 +05:00
Alibek Omarov 996dcc637d engine: tighten file fragment msg by the (possibly) trunctated frag_message 2026-05-23 21:23:10 +05:00
Alibek Omarov 8b89bdca6f engine: validate size of the message before passing it to COM_UnMunge2 2026-05-23 21:23:10 +05:00
Alibek Omarov 3a6e3ba3ca engine: change Xash split packet id to unsigned short, as it never should be negative 2026-05-23 21:23:10 +05:00
Alibek Omarov 42ab099a07 engine: check server address if client received split packet 2026-05-23 21:23:10 +05:00
Alibek Omarov 09f15042fe engine: add target buffer size argument to MSG_ReadBits and MSG_ReadBytes 2026-05-23 21:23:10 +05:00
SNMetamorphanda1batross 344712b990 3rdparty: update extras 2026-05-23 21:09:31 +05:00
SNMetamorphanda1batross 2904c3e88b scripts: gha: set default touch configuration file for PS Vita platform 2026-05-23 21:09:31 +05:00
Alibek Omarov 25ca2ecb12 engine: fix Netchan_Validate units bug allowing oversized fragments 2026-05-23 03:12:23 +05:00
Alibek Omarov f6b28e32e2 engine: fix use-after-free in Netchan_CopyNormalFragments on decompression failure; reject oversized fragmented messages. 2026-05-23 02:53:26 +05:00
Alibek Omarov e118376735 engine: take total size to decompressors in Netchan_CopyNormalFragments, fix underflow when decompressing bzip2 stream 2026-05-23 02:42:28 +05:00
Alibek Omarov 5ef6123f03 engine: append log to the crash log on Android 2026-05-22 18:47:31 +05:00
Владислав Суховanda1batross e4600b5fe0 engine: input: fix PS Vita gyro axis mapping and add gyro debug visualization 2026-05-22 00:53:11 +05:00
Xav101anda1batross 074bd8b2b3 public: add unaligned access handlers for new big endian port 2026-05-21 14:25:33 +05:00
Alibek Omarov fca347dd00 engine: platform: psvita: add Atlas_AllocBlock to the vrtld export list temporarily 2026-05-21 03:07:15 +05:00
SNMetamorphanda1batross 2a284090ef engine: common: add console command "fs_find" 2026-05-21 02:45:27 +05:00
SNMetamorphanda1batross ecd74a0a7f filesystem: add implementation of "fs_find" console command 2026-05-21 02:45:27 +05:00
Alibek Omarov 853a67b0c5 scripts: gha: lock PSVita SDL2 fork to last known good revision 2026-05-21 01:04:43 +05:00
Alibek Omarov 80ec1c83f1 engine: platform: psvita: add dummy Atlas_AllocBlock call 2026-05-21 01:04:12 +05:00
Alibek Omarov 41681229f9 3rdparty: gl4es: update from upstream, add patch for fixing pixelated textures on Adreno 2026-05-21 00:53:51 +05:00
Alibek Omarov 7fce99481f ref: gl: fix crash in gl2_shim caused by MapBufferRange returning NULL 2026-05-21 00:03:36 +05:00
Alibek Omarov 142dc7b87a ref: use vector initializer macros 2026-05-20 23:24:36 +05:00
Alibek Omarov 3e24d5a347 engine: use vector initializer macros 2026-05-20 23:24:36 +05:00
Alibek Omarov 64b1b54f5b ref: use designated initializers where possible 2026-05-20 23:24:36 +05:00
Alibek Omarov 1fed340330 filesystem: use designated initializers where possible 2026-05-20 23:24:36 +05:00
Alibek Omarov 64be4251c8 engine: use designated initializers where possible 2026-05-20 23:24:36 +05:00
Alibek Omarov c5a8160c32 public: add Vec2, Vec3 and Vec4 macros used for initializers 2026-05-20 23:24:36 +05:00
Alibek Omarov 3c1cf81c2d engine: platform: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov c6c1163aa0 engine: common: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov e8845fc404 engine: client: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov d49178d5b6 engine: server: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov e2cf580818 ref: gl: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov d0a98447c4 ref: soft: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov 29a9fcf76c ref: common: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov 37d9791f00 filesystem: refactor variable declarations 2026-05-20 23:24:36 +05:00
Alibek Omarov c5fbc98d16 public: refactor variable declarations 2026-05-20 23:24:36 +05:00
a1batrossandGitHub 4c2302ec6c engine: pass customization file fragments into IsSafeFileToDownload
This function already validates customization filenames.
2026-05-20 01:03:03 +05:00
Владислав Суховanda1batross de585f80fb 3rdparty: mainui: update 2026-05-19 19:38:12 +05:00
Владислав Суховanda1batross af58ef4a2a engine: menu_int: add flags for mipmaps and alpha channel support in image handling 2026-05-19 19:38:12 +05:00
Владислав Суховanda1batross dbe3f42485 engine: update player logo color to RGB format 2026-05-19 19:38:12 +05:00
Alibek Omarov 0053edbe7b scripts: gha: drop signing step from build_android.sh, as it's done on gradle level now 2026-05-18 13:01:22 +05:00
Alibek Omarov 61f3369957 filesystem: refactor large filesystem.c into smaller files 2026-05-18 12:50:08 +05:00
Alibek Omarov 334bebb1fb engine: use memcpy when reading sprite model to avoid unaligned access 2026-05-17 12:34:21 +05:00
Alibek Omarov 463ed05340 android: add auto-updater to the launcher 2026-05-17 12:12:40 +05:00
Alibek Omarov 92bad81d9a engine: client: fix off-by-one 2026-05-17 11:48:20 +05:00
Alibek Omarov 4c667d9d8c engine: client: bound current_position with HISTORY_MASK, in case of something passes invalid values 2026-05-17 11:45:22 +05:00
Alibek Omarov cb04e9cbd5 engine: server: also use constant time string comparison for sv_password 2026-05-17 11:26:53 +05:00
Alibek Omarov c2c781f039 engine: server: harden rcon, use constant time comparison, do not output untrusted data to log 2026-05-17 11:23:55 +05:00
Alibek Omarov dbe1a2742e public: add Q_strcmp_constant_time 2026-05-17 11:23:08 +05:00
Alibek Omarov fe2019ee06 engine: common: add more cases to COM_IsSafeToDownload 2026-05-17 11:20:00 +05:00
Alibek Omarov e5c091c303 engine: client: fix off-by-one error in CL_ParseResource 2026-05-17 11:17:42 +05:00
Alibek Omarov 9d050e7ed3 engine: limit decompressed buffer alloc size to 64MiB 2026-05-17 11:17:23 +05:00
Alibek Omarov be35b3503e engine: limit maximum amount of pending fragbufs 2026-05-17 10:54:51 +05:00
Alibek Omarov 5fad4ae6ca engine: client: mark rcon and connect commands privileged 2026-05-17 10:51:44 +05:00
Alibek Omarov 2290ae0239 public: disable Amiga's double-slash check in CheckNastyPath 2026-05-17 10:42:22 +05:00
Alibek Omarov 9082a47348 engine: validate paths before downloading 2026-05-17 10:41:59 +05:00
Alibek Omarov 5d7ed9d8a7 public: add CheckNastyPath from Darkplaces's VFS so it can be used in engine for path traversal checks 2026-05-16 21:28:51 +05:00
Alibek Omarov 8120669e5b engine: restore bounds check in Delta_FindStructByIndex, as it gets passed arbitrary numbers too 2026-05-16 21:27:51 +05:00
Alibek Omarov fb6c4a224c engine: check for overflow in split packet reassembly 2026-05-16 21:13:47 +05:00
Alibek Omarov 166763a887 engine: common: limit amount of delta encoded fields by 64 in GoldSrc protocol (because this is the maximum it allows anyway) 2026-05-16 21:12:49 +05:00
Alibek Omarov e56cf4e1da engine: client: validate player index and max players 2026-05-16 21:00:50 +05:00
Alibek Omarov fc4b982ecc engine: client: correctly skip message that would overflow temp entity buffer 2026-05-16 20:59:57 +05:00
Alibek Omarov d305292340 engine: zone: in CheckAlloc walk through over both allocation chains, so that we don't read out of bounds if passed pointer is not allocated by zone allocator 2026-05-16 12:56:49 +05:00
Alibek Omarov 9ee6be87d7 engine: host: try to avoid recursive Host_Error 2026-05-16 12:37:08 +05:00
Alibek Omarov 4e4a54ab68 engine: despite byte-swapping code is no-op on little endian, it still fires and can read out of bounds on some models, leading to crash 2026-05-16 12:21:46 +05:00
Alibek Omarov 516554b704 public: update miniz to latest version 2026-05-15 12:36:56 +05:00
Alibek Omarov 7be955c493 gitignore: do not even try adding slop generators garbage 2026-05-15 11:39:45 +05:00
Владислав Суховanda1batross c6fb702fb1 engine: add MenuFactory native object 2026-05-15 08:48:58 +05:00
Alibek Omarov cae1d32c66 3rdparty: gl-wes-v2: update 2026-05-13 11:14:32 +05:00
Alibek Omarov 5e70995989 ref: gl: more maybe unused stuff 2026-05-13 11:13:46 +05:00
Alibek Omarov 50f7f3bb87 engine: server: mark str64 as maybe unused 2026-05-13 11:12:19 +05:00
Alibek Omarov 7c3da8c381 3rdparty: gl-wes-v2: update 2026-05-13 11:11:41 +05:00
Alibek Omarov e38d3511b5 3rdparty: nanogl: update 2026-05-13 11:11:32 +05:00
Alibek Omarov d4fcebb377 3rdparty: MultiEmulator: update 2026-05-13 11:11:22 +05:00
Alibek Omarov 996f0e906b engine: client: drop double free check from dbghulls 2026-05-13 10:53:21 +05:00
Alibek Omarov 0f490a2f16 engine: client: fix warnings, cleanup unused or maybe-uninitialized variables 2026-05-13 10:48:37 +05:00
Alibek Omarov cef6cb58bb ref: gl: fix maybe-uninitialized 2026-05-13 10:47:15 +05:00
Alibek Omarov 47aad1b3a3 ref: soft: cleanup unused variables 2026-05-13 10:46:59 +05:00
Alibek Omarov ff8efebba2 engine: fix more warnings 2026-05-13 10:46:44 +05:00
Alibek Omarov be6571a6a2 3rdparty: library_suffix: update 2026-05-13 10:45:50 +05:00
Alibek Omarov 1d67585df4 3rdparty: mainui: update 2026-05-13 10:45:39 +05:00
Alibek Omarov 10d441f825 public: fix warnings, add guards around some of the macros, remove unused variable 2026-05-13 10:30:35 +05:00
Alibek Omarov 2dc132f817 engine: common: fix up warnings, clean up unused variables 2026-05-13 10:13:52 +05:00
Alibek Omarov e9bdbf2f33 ref: gl: mark maybe unused globals 2026-05-13 10:11:47 +05:00
Alibek Omarov b630a84447 common: xash3d_types: add macro MAYBE_UNUSED 2026-05-13 10:11:21 +05:00
Alibek Omarov dccd076b92 engine: platform: sdl2: cleanup unused variables 2026-05-13 10:09:49 +05:00
Alibek Omarov cb7ea5729a engine: server: cleanup unused variables 2026-05-13 10:09:37 +05:00
Alibek Omarov 9bad17505e filesystem: cleanup unused variables 2026-05-13 10:09:19 +05:00
Alibek Omarov bf990d1040 ref: gl: cleanup unused variables 2026-05-13 10:09:09 +05:00
Alibek Omarov 63e112bf4c engine: client: soundlib: add more broken null files 2026-05-13 09:32:50 +05:00
Alibek Omarov 0aac2e4d32 engine: zone: add small allocation optimization, reducing the size of <255 bytes allocations at the cost of less debug info
Keep it opt-in through a flag at pool alloc time.
Opt-in console related allocations, they are usually small enough strings.
2026-05-13 09:32:50 +05:00
Alibek Omarov 33b3cdb0f5 engine: client: soundlib: catch broken null.wav and replace it with silence 2026-05-10 03:02:24 +05:00
Alibek Omarov 9c4edaed21 engine: client: sound: switch to single-pass mixing, now channels gets upscaled directly to DMA speed, fixing the issue with s_lerping 2026-05-10 02:48:23 +05:00
Alibek Omarov d4205867dd public: simplify COM_Strip and COM_DefaultExtension by reusing extension extraction function. Add moar tests for them 2026-05-10 00:56:44 +05:00
Alibek Omarov 3c07680263 android: pack crash log to ZIP file, put system and intent info alongside it. Properly handle if multple email clients are installed on device (tested with gmail, outlook and k-9). 2026-05-10 00:32:29 +05:00
Alibek Omarov e5d6f66f61 filesystem: strip exec flag and add nowrite flag to archives
pk3dir now disallows executables, which shouldn't be a problem for anybody.
Revised FS_Path command output.
2026-05-09 19:22:10 +05:00
Alibek Omarov a106924c7f filesystem: avoid scanning game directory as executable in FS_FindLibrary on Android, generic refactoring 2026-05-09 16:57:21 +05:00
Alibek Omarov 11ee883c84 android: show build info for mod's downloaded libraries 2026-05-09 16:57:21 +05:00
Alibek Omarov 881f0c5ca7 engine: show the missing library warning message on Android, but only if APK doesn't try to override it, skip client for now 2026-05-09 16:57:21 +05:00
Alibek Omarov ac0c8a2210 android: implement game library downloading 2026-05-09 16:57:21 +05:00
Alibek Omarov dba090e0da android: bundle Let's Encrypt's ISRG Root X1 certificate for EOL devices 2026-05-09 16:57:21 +05:00
Alibek Omarov 262f32b002 engine: platform: android: implement library loading from VFS paths on Android 2026-05-09 16:57:21 +05:00
Zane van Iperenanda1batross 843f6297ed engine: net_ws: fix NET_QueuePacket indentation after previous change 2026-05-09 13:15:17 +05:00
Zane van Iperenanda1batross d1510345f1 engine: net_ws: round-robin IPv4/IPv6 reads
Previously, it would always return on the first one that had activity.
In practice, this meant that if IPv4 starts getting slammed, IPv6 reads
wouldn't happen.
2026-05-09 13:15:17 +05:00
Alibek Omarov 36307bb386 android: handle crash logs created by the engine, keep them for 30 days for current version 2026-05-07 17:58:25 +05:00
Alibek Omarov 52953a7647 engine: platform: posix: drop crash info into crash.log on Android 2026-05-07 15:48:34 +05:00
Alibek Omarov ebeff144f9 Merge remote-tracking branch 'origin/master' 2026-05-07 13:50:55 +05:00
Alibek Omarov c8cc953d48 engine: platform: posix: make crash message a global because the stack could be limited when we hit crash handler 2026-05-07 13:45:39 +05:00
Alibek Omarov d6bf06e997 engine: common: check XASH3D_BASEDIR when opening log file, fixes engine.log creation on Android 2026-05-07 12:23:56 +05:00
Alibek Omarov 568b7abc5f scripts: waifulib: xcompile: set max-page-size to 64k on PSVita to workaround latest toolchain issue 2026-05-07 12:07:25 +05:00
Alibek Omarov 1b7f50d3c6 scripts: waifulib: xcompile: fix build error with newer NDKs caused by incompatibility of legacy STL and Clang 2026-05-07 12:05:26 +05:00
Alibek Omarov c8e1c2673f engine: client: sound: revert singleplayer check for local sounds 2026-05-07 11:57:09 +05:00
Alibek Omarov c2df265de7 engine: operate on a local copy of dspriteframe_t to avoid unaligned access on ARMv7 2026-05-07 11:56:08 +05:00
Alibek Omarov e9e885534a filesystem: dir: hand off file existence check to the OS if path starts with .. or ../ 2026-05-07 10:32:00 +05:00
Alibek Omarov 95cc6c4445 filesystem: small refactoring, remove double nullptr checks 2026-05-07 10:32:00 +05:00
Alibek Omarov 086cb6aab8 engine: move {gamedir}/downloaded directory to {gamedir}_downloads for compatibility
Some mods like Sven-Coop 4.8 stupidly open game files directly and need this to
load downloaded soundcache.
2026-05-07 10:32:00 +05:00
Alibek Omarov e6a44b70e0 engine: client: always load client.dll last to crash on nullptr in mods that fetch cvar pointers early, add comment for anyone who would modify this file 2026-05-05 01:15:16 +05:00
Alibek Omarov fdb59e990e engine: rename Host_IsLocalGame to Host_IsSinglePlayerGame to avoid confusion 2026-05-05 01:04:57 +05:00
Alibek Omarov eb79bc6b40 engine: use Host_IsLocalClient where it should be, as it checks for local games, not specifically singleplayer games 2026-05-05 01:03:03 +05:00
Alibek Omarov e907e9fc95 engine: client: fix check for local game when deciding to enable netchan splitsize extension 2026-05-05 00:38:33 +05:00
SNMetamorphanda1batross fc356c88b3 engine: client: minor fixes in steam broker client side code 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross bc672e5aca Documentation: extensions: updated description of steam broker protocol 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross 2635fd9739 engine: common: make use NET_MakeSocketNonBlocking instead of direct system API functions 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross 653fe51fd4 engine: client: refactor data serializing in steam broker client side logic code 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross 980d9fcaab engine: client: improve logging in steam broker client side logic code 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross 72ef5cffca engine: client: total refactoring of steam broker client side logic code 2026-05-02 10:50:21 +05:00
SNMetamorphanda1batross a707f5933d engine: common: expose network utilities functions needed for broker 2026-05-02 10:50:21 +05:00
Alibek Omarov b9b0ff5769 3rdparty: mainui: update 2026-05-01 20:10:06 +05:00
Marc-Antoine Lortieanda1batross 982a216df4 Fix hlsdk-xash3d references where applicable. 2026-05-01 19:02:13 +05:00
Alibek Omarov 7d87d65a3f engine: server: lift down Host_Error on NULL name in PrecacheModel 2026-04-28 20:05:09 +05:00
Alibek Omarov 6e4e048ef8 ci: thanks for your service, cirrus. F. 2026-04-28 11:25:25 +05:00
Alibek Omarov 5b6b372cfe ref: gl: drop broken minlight/scale cvars for litwater. Keep them for mods. Fix post-merge issues 2026-04-28 11:21:56 +05:00
Alibek Omarov 2f31cf315c ref: gl: add litwater support 2026-04-28 11:12:44 +05:00
Alibek Omarov 910cce56ca Documentation: extensions: document lightmapped water extension 2026-04-28 11:12:11 +05:00
Alibek Omarov 68dba8b4e0 engine: add litwater support 2026-04-28 11:12:11 +05:00
Alibek Omarov dbfeacfecc 3rdparty: vgui_support: update 2026-04-28 09:50:50 +05:00
Alibek Omarov 0bdd4648bc utils: mdldec: explicitly cast chars to bytes in ctype functions 2026-04-28 09:50:33 +05:00
Alibek Omarov ec8059173d public: explicitly cast chars to bytes in ctype functions 2026-04-28 09:50:33 +05:00
Alibek Omarov f91e5a7647 engine: explicitly cast chars to bytes in ctype functions 2026-04-28 09:50:33 +05:00
Alibek Omarov 7942d9b1bc engine: mod_bmodel: refactor unified bmodel loader
* Use offsets into dbspmodel_t struct, get rid of srcmodel global variable.
* Allocate dbspmodel_t when it's required
* Make srclumps const, move Blue-Shift hack into lump loader's flag.
2026-04-26 06:29:04 +05:00
Alibek Omarov 7abf0c819f 3rdparty: update xash-extras and mainui 2026-04-26 05:52:30 +05:00
Alibek Omarov 85eb82a370 Revert "engine: client: show difference between demo time and real time in timedemo result"
This reverts commit 90e25cc623.
2026-04-26 04:26:50 +05:00
Alibek Omarov 90e25cc623 engine: client: show difference between demo time and real time in timedemo result 2026-04-26 04:15:15 +05:00
Alibek Omarov fca4152d5a ref: gl: fix typo in gl_drawrangeelements 2026-04-26 04:13:50 +05:00
Alibek Omarov 2ccef63754 engine: ref_api: change RefGetParm return type to intptr_t, bump RefAPI version 2026-04-26 04:12:52 +05:00
Alibek Omarov 87615784b9 engine: client: fix server list response parsing on BE 2026-04-26 04:12:52 +05:00
Alibek Omarov d3b01d313b ref: gl: do not limit texture units by broken report of shaders extension 2026-04-26 04:12:52 +05:00
Alibek Omarov a3897f402a 3rdparty: mainui: update 2026-04-26 04:12:52 +05:00
Alibek Omarov 21d84ee692 ref: gl: add -glnoerr flag that enables no error context, for possible performance gains 2026-04-26 04:12:52 +05:00
Alibek Omarov e30ce9c150 engine: fix palette and builtin textures on BE 2026-04-26 04:12:52 +05:00
Alibek Omarov 22391eba1b engine: handle swapping sequence files in LoadCacheFile for games with external StudioModelRenderer 2026-04-26 04:12:52 +05:00
Alibek Omarov 800725453a engine: soundlib: pass XASH_BIG_ENDIAN to ov_read in vorbis loader 2026-04-26 04:12:52 +05:00
Alibek Omarov 22ecec095e engine: platform: sdl: request AUDIO_S16SYS to make sound output in native endian 2026-04-26 04:12:52 +05:00
Alibek Omarov 8545ed5ccb engine: mod_studio: implement loading sequence files on BE 2026-04-26 04:12:52 +05:00
Alibek Omarov a4fdf19ad8 engine: client: Fix font loading on BE 2026-04-26 04:12:52 +05:00
Alibek Omarov 75e4a21d7a engine: mod_studio: more studio model swapping 2026-04-26 04:12:52 +05:00
Alibek Omarov 1099344a7d engine: soundlib: swap WAV data 2026-04-26 04:12:52 +05:00
Alibek Omarov ab1eaed0a5 engine: platform: posix: remove Sys_Crash and Sys_CrashDetailsLibbacktrace from the output by matching function name only once 2026-04-26 04:12:52 +05:00
Alibek Omarov 76a01d0855 engine: platform: posix: remove extra newline from libbacktrace output 2026-04-26 04:12:52 +05:00
Alibek Omarov b00679ee30 engine: make Sys_LogFileNo return -1 when log file isn't opened 2026-04-26 04:12:52 +05:00
Alibek Omarov b3bb2fc16f engine: imagelib: add IL_HOST_ENDIAN flag to mark on-disk data that's already in host endianness 2026-04-26 04:12:52 +05:00
Alibek Omarov 86a2ea29e4 wscript: define libbacktrace as libbacktrace_custom, fix DL_ITERATE_PHDR not defined due to failing fallback check
* Changed to libbacktrace_custom to not collide with libbacktrace built as part of compiler's runtime
2026-04-26 04:12:52 +05:00
Alibek Omarov d4f8543556 engine: platform: posix: better libbacktrace error output 2026-04-26 04:12:52 +05:00
Alibek Omarov e850728016 engine: soundlib: fixes for BE 2026-04-26 04:12:52 +05:00
Alibek Omarov 11877f4c96 engine: imagelib: fixes for BE 2026-04-26 04:12:52 +05:00
Denis Drakhniaanda1batross 2ba5030b62 engine: server: fix no response to goldsrc info query 2026-04-24 21:56:22 +05:00
Alibek Omarov 06b14800e1 engine: mod_bmodel: fix bspx swap definition 2026-04-24 08:00:49 +05:00
Alibek Omarov bb7c85fd22 wscript: turn on progress bar by default 2026-04-24 07:31:36 +05:00
Alibek Omarov 37ce62fa6a waf: update to latest wafsrc + progress-bar-enhacnement 2026-04-24 07:31:11 +05:00
Alibek Omarov e1b29e2da3 engine: temporarily disable swapping extended header 2026-04-24 06:58:53 +05:00
Alibek Omarov b60afd73e9 public: swaplib: add comments 2026-04-24 06:58:53 +05:00
Alibek Omarov 84447a5292 public: crclib: add fix for md5 from q3 2026-04-24 06:58:53 +05:00
Alibek Omarov fe4ea4aabf engine: server: fix pfnMessageEnd on BE 2026-04-24 06:58:53 +05:00
Alibek Omarov 878822290c public: crclib: fix CRC32_BlockSequence on BE 2026-04-24 06:58:53 +05:00
Alibek Omarov 04ca5d7cb0 engine: common: use FloatAsUint and UintAsFloat to write and read floats to/from sizebuf_t 2026-04-24 06:58:53 +05:00
Alibek Omarov d46ed40f33 engine: pre-swap studio model before loading on BE 2026-04-24 06:58:53 +05:00
Alibek Omarov 82e031205c engine: pre-swap sprite before loading on BE 2026-04-24 06:58:53 +05:00
Alibek Omarov 6f5f04a29d engine: server: fix testpacket on BE server 2026-04-24 06:58:53 +05:00
Alibek Omarov f9ed578bf1 engine: move CRC32_MapFIle to mod_bmodel, as it's a common function. Use le_struct_swap 2026-04-24 06:58:53 +05:00
Alibek Omarov 86c84c7de7 engine: common: add struct swapping for BSP models
With support for Quake BSP, HL BSP, extended HL BSP and BSPX.
2026-04-24 06:58:53 +05:00
Alibek Omarov 489c1c9dd5 public: add swaplib 2026-04-24 06:58:53 +05:00
Alibek Omarov 1df6a040ec engine: common: fix WriteBits/ReadBits 2026-04-24 06:58:53 +05:00
Alibek Omarov 82c2ca53fb engine: common: fix WriteUBitLong/ReadUBitLong 2026-04-24 06:58:53 +05:00
Alibek Omarov 3ddd1e2448 engine: common: fix LZSS on big endian 2026-04-24 06:58:53 +05:00
Alibek Omarov 371d619685 engine: platform: posix: remove dead ucontext.h include 2026-04-24 06:58:53 +05:00
Владислав Суховanda1batross 480f29e96e engine: common: mod_studio: fix model traversal and crash in Mod_StudioComputeBounds
Mod_StudioComputeBounds incorrectly assumed that all models across all body parts were laid out contiguously in memory. This caused out-of-bounds reads or reading garbage data when loading complex models, leading to crashes.
2026-04-24 01:13:46 +05:00
Zane van Iperenanda1batross 95548053eb engine: common: set cmd_args to "" when tokenising, if we've no arguments
Fixes metamod-fwgs[1] breaking when CMD_ARGS() returns NULL.

[1]: https://github.com/FWGS/metamod-fwgs/blob/eedede40e806e7f3d1604de61ed43404928ea639/metamod/src/commands_meta.cpp#L63
2026-04-22 21:27:27 +05:00
Владислав Суховanda1batross 0daf2c2b4d engine: client: add cvar to enable/disable gamepad gyro 2026-04-22 21:26:34 +05:00
Alibek Omarov e2d5bea327 ref: cleanup unused functions 2026-04-21 23:10:32 +05:00
Alibek Omarov 306a5812a9 engine: server: fix svc_setpause usage in spawn command, fix minor protocol issue when spawnnig particle from pmove 2026-04-20 01:33:54 +05:00
Alibek Omarov a3dba64513 public: move atlas packing code from renderer, add tests 2026-04-20 01:33:54 +05:00
Alibek Omarov 491ba9bc7d 3rdparty: mainui: update 2026-04-19 23:12:55 +05:00
Alibek Omarov 1c462df8a2 common: q_client: include stdint.h and xash3d_types.h 2026-04-19 23:12:44 +05:00
Alibek Omarov ed975976f8 engine: client: add feature to reupload logo if any of logo related cvars were changed 2026-04-19 22:46:51 +05:00
Alibek Omarov bbf8ab378d engine: server: add rate limiting for updating client's resources data too often 2026-04-19 22:30:04 +05:00
Alibek Omarov 5383e36af5 engine: net_chan: fix off-by-one error when trying to decompress packet 2026-04-19 20:50:42 +05:00
Alibek Omarov 897fb98b93 engine: net_chan: fix Netchan_AddBufferToList leaking pointer 2026-04-19 20:43:32 +05:00
Alibek Omarov 96e88adfcd engine: client: try to make R_Blood more accurate 2026-04-19 17:05:26 +05:00
Alibek Omarov 4dde4047f1 engine: make particle texture white, shift 1 pixel down and to the right 2026-04-19 17:04:40 +05:00
Alibek Omarov 905161529f engine: client: ref_common: reorganize R_CreateBuiltinTextures, but also fix a typo without assigned alpha to particle texture 2026-04-19 01:32:40 +05:00
Alibek Omarov 044523434d ref: add R_EntityDynamicLight that calculates lighting for studio and alias models, and also located in libref_common 2026-04-19 01:17:28 +05:00
Alibek Omarov da4c4bb76a ref: remove unused sprite_radius global variable 2026-04-19 00:32:45 +05:00
Alibek Omarov 95b3271d68 engine: client: move input stuff to input subfolder 2026-04-18 22:18:50 +05:00
Alibek Omarov 3361a5d760 engine: client: split OSK into it's own file 2026-04-18 22:18:50 +05:00
Alibek Omarov b725d2ece0 engine: client: moving beds 2026-04-18 22:18:50 +05:00
Alibek Omarov 66bee8b468 engine: client: fix trimmed autocomplete output for keys 2026-04-18 22:18:50 +05:00
Alibek Omarov 5e664dc3e9 engine: client: check for upper bound limit in Key_StringToKeynum 2026-04-18 22:18:50 +05:00
Alibek Omarov bfdfeb3dc0 engine: client: fix Joy_GetHatValueForAxis threshold for forward axis, fix bindings limit 2026-04-18 22:18:50 +05:00
Alibek Omarov 49248f5e14 engine: client: touch fixes, fix division-by-zero in Touch_AspectRatio, GRID_COUNT, fix Touch_RemoveButtonFromList 2026-04-18 22:18:50 +05:00
Владислав Суховanda1batross d03ea4c10a engine: client: in_gyro: fix inverted yaw axis 2026-04-18 00:41:46 +05:00
ksagamenganda1batross 780dbd6183 scripts: gha: fix ios ci builds not including game libs 2026-04-17 19:41:30 +05:00
GLoOoccKanda1batross 50da79f1e0 Update cl_parse_gs.c 2026-04-17 19:40:58 +05:00
Alibek Omarov 62201900cf ref: null: remove unused function 2026-04-16 23:25:32 +05:00
Alibek Omarov ae233ac491 Merge branch 'refapi-15' 2026-04-16 23:19:06 +05:00
Владислав Суховanda1batross dd1cb04cb7 engine: client: sdl: add support for built-in device gyroscope using SDL2 Sensor API (Android/iOS) 2026-04-16 00:15:35 +05:00
Alibek Omarov 74869c8f5d ref: make R_GatherPlayerLight shared between renderers 2026-04-14 22:36:15 +05:00
Alibek Omarov dd712a0df9 engine: update Mod_PointInLeaf signature for RefAPI 2026-04-14 22:36:15 +05:00
Alibek Omarov bfdb62d31e engine: ref_api: complete the RefAPI 15 changelog 2026-04-14 22:36:15 +05:00
Alibek Omarov ae7b9eb28d engine: move creation of default textures to the engnie 2026-04-14 22:36:15 +05:00
Alibek Omarov c63e13c8f4 engine: move handling of AVI textures into the engine 2026-04-14 22:36:15 +05:00
Alibek Omarov d3e1407675 engine: remove unused R_Flush and VGUI_UploadTextureBlock from RefAPI 2026-04-14 22:36:15 +05:00
Alibek Omarov e2e4728c7c engine: remove R_BeamCull from RefAPI 2026-04-14 22:36:15 +05:00
Alibek Omarov dd3583d11a engine: move details textures parser to the engine 2026-04-14 21:18:57 +05:00
Alibek Omarov e6924844da engine: move FillRenderAPI and FillTriAPI to renderers to reduce amount of exports 2026-04-14 21:18:56 +05:00
Alibek Omarov a49db03561 engine: move StudioAPI negotiation to the engine 2026-04-14 21:18:03 +05:00
Alibek Omarov 84b7b5803b ref: soft: remove mistakingly put const on RI.rvp 2026-04-13 23:13:49 +05:00
Alibek Omarov c224d39ba7 ref: soft: replace RI.onlyClientDraw with RF_ONLY_CLIENTDRAW flag in viewpass 2026-04-13 23:13:49 +05:00
Alibek Omarov 9b24b08df1 ref: gl: remove onlyClientDraw, drawOrtho, RI.params with viewpass flag check. RF_DRAW_OVERVIEW and RF_DRAW_CUBEMAP are cannot be set at the same time, so drawOrtho check replaced by RF_DRAW_CUBEMAP only 2026-04-13 23:13:49 +05:00
Alibek Omarov a37b0e58f1 ref: soft: get rid of RI.drawOrtho, it's a debugging/development tool, not suited for software renderer use 2026-04-13 23:13:49 +05:00
Alibek Omarov afca422e35 ref: soft: read ref_viewpass_t flags instead of cached RI.drawWorld 2026-04-13 23:13:49 +05:00
Alibek Omarov 3440ddf443 ref: gl: read ref_viewpass_t flags instead of cached RI.drawWorld 2026-04-13 23:13:49 +05:00
Alibek Omarov 6730ed9555 ref: soft: remove unused isSkyVisible 2026-04-13 23:13:49 +05:00
Alibek Omarov fdd3a44fa0 ref: gl: remove unused isSkyVisible 2026-04-13 23:13:49 +05:00
Alibek Omarov 241c926076 ref: soft: replace RI.{vieworg,viewangles,pvsorigin} by ref_viewpass_t fields 2026-04-13 23:13:49 +05:00
Alibek Omarov 148a9a5a8c ref: gl: replace RI.{vieworg,viewangles,pvsorigin} by ref_viewpass_t fields 2026-04-13 23:13:49 +05:00
Alibek Omarov 513984d7fd ref: soft: save original viewpass and access viewport and fov through it 2026-04-13 23:13:49 +05:00
Alibek Omarov 1009795d5c ref: gl: save original viewpass and access viewport and fov through it 2026-04-13 23:13:49 +05:00
Alibek Omarov e3d2da74db engine: move underwater fov effect handling to the engine 2026-04-13 23:13:49 +05:00
Alibek Omarov ff3a57ae8a ref: gl: drop legacy mirror viewpass code 2026-04-13 23:13:49 +05:00
Alibek Omarov 271a6e2210 ref: soft: drop broken code for all non-viewer viewpasses 2026-04-13 23:13:49 +05:00
Alibek Omarov 0d40357b93 ref: common: wscript: fix psvita build 2026-04-13 13:01:18 +05:00
Alibek Omarov a9dcdd034c ref: soft: fix build 2026-04-13 13:01:18 +05:00
Alibek Omarov 7324ff43fc ref: add GL_ResampleTexture to libref_common 2026-04-13 13:01:18 +05:00
Alibek Omarov d85e7fc2b1 ref: move remaining light functions to libref_common 2026-04-13 13:01:18 +05:00
Alibek Omarov d91ecfa3df ref: gl: refactor R_LightVec 2026-04-13 13:01:18 +05:00
Alibek Omarov b7a3a02aad ref: common: add R_PushDlightsForBmodel 2026-04-13 13:01:18 +05:00
Alibek Omarov 5aca78951c ref: move R_PushDlights and R_MarkLights to ref_common 2026-04-13 13:01:18 +05:00
Alibek Omarov 81abae65b5 ref: move RunLightstyles to ref_common 2026-04-13 13:01:18 +05:00
Alibek Omarov f5f6d9bbe4 engine: move sprite texture loading back to engine, only leave rendering for renderer 2026-04-13 13:01:18 +05:00
Alibek Omarov ef73b55413 ref: common: move malloc and GL_InitRandomTable 2026-04-13 13:01:18 +05:00
Alibek Omarov 8334695522 ref: common: draft new static library, containing shared code for ref_gl and ref_soft 2026-04-13 13:01:18 +05:00
Alibek Omarov d7f416d659 engine: draft new RefAPI 14: remove reserved functions from render api, remove CL_AddCustomBeam 2026-04-13 13:01:18 +05:00
a1batrossandGitHub 5f6577df2e engine: client: don't allow con_fontscale lower than 1
Prevents possible division by zero
2026-04-12 14:50:58 +05:00
Sergey Degtyaranda1batross e87f307ac1 engine: image: fix blue halo around sprays 2026-04-10 15:00:02 +05:00
Владислав Суховanda1batross 7e015a268b engine: client: in_joy: implement per-axis gyroscope deadzone support 2026-04-10 14:59:30 +05:00
TheEVolkanda1batross a679c53111 engine: client: add cvar sv_voice_singleplayer flag FCVAR_SERVER 2026-04-10 14:58:46 +05:00
TheEVolkanda1batross 9e8d248044 engine: client: voice api 2026-04-10 14:58:46 +05:00
Alibek Omarov 055d646225 ref: gl: merge refactoring changes from litwater branch 2026-04-09 11:43:47 +05:00
ksagamenganda1batross a2514b6916 platform: ios: Remove FTP server as latest apple clang broke it 2026-04-09 10:25:18 +05:00
ksagamenganda1batross 0ac5e78040 scripts: ios: Modify script to work with dylib loading changes 2026-04-09 10:25:18 +05:00
ksagamenganda1batross a82221e3df engine: platform: No more lib_ios, use FS_FindLibaray to load dylibs instead 2026-04-09 10:25:18 +05:00
Alibek Omarov bb734456f6 engine: client: avi: use typeof() to declare function pointers to ffmpeg API 2026-04-09 09:52:52 +05:00
Alibek Omarov a219ca7371 ci: upgrade ffmpeg binary to 8.1 2026-04-09 09:20:25 +05:00
OlegandAlibek Omarov c3b5e43a7a engine: client: avi: bump FFMPEG symbols 2026-04-09 09:14:04 +05:00
Alibek Omarov e7597d2e84 Merge branch 'theevolk-feature-soundapi' of github.com:ShadowOfEVolk/xash3d-fwgs 2026-04-08 17:18:03 +05:00
TheEVolk 386ca1b9bb engine: client: make sound api const 2026-04-08 14:27:24 +03:00
TheEVolk da3960c4f0 engine: client: move bitflag definitions to sound_api 2026-04-08 14:15:16 +03:00
TheEVolk cd85762b09 engine: client: fix arm builds 2026-04-08 14:11:44 +03:00
TheEVolk d92b3a730c engine: client: adapt sound api to snd globals 2026-04-08 14:02:10 +03:00
Alibek Omarov ffa53f14e5 engine: platform: sdl2: implement continuous background recalibration for gyroscope 2026-04-08 11:31:01 +05:00
Alibek Omarov b8bd906832 engine: menu_int: fix a typo 2026-04-08 11:19:13 +05:00
Alibek Omarov 1c73d8d6f4 engine: client: add joy_debug, tool that visualizes gamepad input 2026-04-08 11:13:07 +05:00
Alibek Omarov 2c3fdb5eee engine: client: in_joy: clear gyro data after each FinalizeMove, only take data when calibration status is set to calibrated 2026-04-08 10:30:32 +05:00
Alibek Omarov 4bbe52e3b4 engine: client: in_joy: fix engine-level axis rebinding 2026-04-08 10:22:12 +05:00
Alibek Omarov 2d241ed96b engine: platform: sdl2: fix calibraion never ending if it was failed, lower sample count requirements to 50%, fix gyro when using PS5 controller over Bluetooth 2026-04-08 10:22:12 +05:00
Alibek Omarov ba4bce06b1 engine: platform: sdl2: swap pitch and yaw gamepads axis, following the fix in 626a7eb9108376a68c2fd140e1b5942c64ea1e66 2026-04-08 10:22:12 +05:00
Владислав Суховanda1batross f7e933aea1 engine: client: add gyroscope aiming support
refactor: standardize input functions to use (pitch, yaw) parameter order
2026-04-08 10:22:12 +05:00
Alibek Omarov dbcf77c9a9 engine: cleanup, disallow exec for multiplayer non-TFC games 2026-04-08 08:22:01 +05:00
w_sh1tandAlibek Omarov 8a9aa2da6c engine: common: add wildcard support for exec command, add amount of frames to wait in wait command 2026-04-08 08:05:42 +05:00
Alibek Omarov 0e8143aefc ref: gl: remove duplicate line from if-else branches in R_MarkLeaves 2026-04-08 08:05:00 +05:00
TheEVolk 4345e9e6a6 Merge remote-tracking branch 'upstream/master' into theevolk-feature-soundapi 2026-04-07 18:35:39 +03:00
Alibek Omarov e7fa45d5ca ref: gl: fix masked textures with VBO 2026-04-06 11:12:09 +05:00
Alibek Omarov abda0a07c2 ref: gl: cache worldmodel pointer instead of accessing it through gp_cl pointer 2026-04-06 11:07:08 +05:00
Alibek Omarov 9d22827395 ref: gl: reorganize checks in R_CullSurface 2026-04-06 11:04:33 +05:00
Alibek Omarov 7b665b3763 ref: gl: track max height of a dynamic lightmap 2026-04-06 10:04:15 +05:00
Alibek Omarov 58692f397a ref: gl: reorganize R_CheckLightMap to exit early for dlighted surfaces 2026-04-06 09:40:19 +05:00
Alibek Omarov 2253fcc955 ref: gl: skip redundant positions in LM_AllocBlock 2026-04-06 09:05:47 +05:00
Alibek Omarov cbbae0c9bf ref: gl: simplify backface culling checks in frustum class 2026-04-06 08:25:45 +05:00
Alibek Omarov ef513f27ac engine: simplify node recursion functions, do not fetch both children at once if only one is used 2026-04-06 08:16:51 +05:00
Alibek Omarov e8ae48fd3d ref: simplify node recursion functions, do not fetch both children at once if only one is used 2026-04-06 08:16:20 +05:00
Alibek Omarov 434e508186 engine: client: reserve some free space in channel_t and rawchan_t 2026-04-06 07:27:50 +05:00
Alibek Omarov 4a2b3e89b4 engine: client: disable NET_EXT_SPLITSIZE in local game, for slightly better performance 2026-04-06 07:14:06 +05:00
Alibek Omarov 6c3f8c7ec5 engine: mod_bmodel: allow nearest on quake skybox 2026-04-06 06:55:52 +05:00
Alibek Omarov 3fffe061d5 engine: client: switch to dynamically allocating vox words, freeing up 320 Kb of memory 2026-04-06 06:55:27 +05:00
Alibek Omarov 729c985eaf engine: client: consolidate dma, s_listener and bunch of separate sound globals into one snd global struct. Replace bit fields with bit flags in preparation for SoundAPI
Remove s_combine_sounds, it never worked great and was disabled by default.
2026-04-06 06:00:48 +05:00
Alibek Omarov 75fb6c5f34 engine: add Mem_Free2 that takes a pointer to pointer and then sets it to NULL 2026-04-06 05:14:33 +05:00
Alibek Omarov 8bc9b1865a engine: client: allow custom paths in cdaudio.txt 2026-04-05 07:03:46 +05:00
Alibek Omarov d6993c47d6 engine: mod_bmodel: do not try to load visibility if there is none, like for external bmodels 2026-04-05 07:03:46 +05:00
Alibek Omarov b8792e4084 filesystem: set qwrap as falldir for Quake games 2026-04-05 07:03:46 +05:00
Alibek Omarov 2234dd48bc engine: client: soundlib: use unsigned int in GetLittleLong to fix ubsan error 2026-04-05 07:03:46 +05:00
Alibek Omarov c8693e1e89 engine: common: fix char array underflow, on Q_strlen() - 1 2026-04-05 07:03:46 +05:00
Alibek Omarov 3ace4a61d2 ref: gl: fix harmless NULL pointer dereference in alias model loading code 2026-04-05 07:03:46 +05:00
Alibek Omarov bd3f865cf7 engine: mod_bmodel: only look for BSPX lumps if BSPX header was found 2026-04-05 07:03:46 +05:00
Alibek Omarov b68e71abfd engine: net_chan: explicitly convert qboolean to uint before right shift to 31 bits 2026-04-05 07:03:46 +05:00
Alibek Omarov 6179bef160 engine: fix possible buffer overflow when looking for BSPX header 2026-04-05 07:03:46 +05:00
Alibek Omarov 983427ebb3 engine: client: allow coloring fixed font text 2026-04-05 07:03:46 +05:00
Alibek Omarov 1b2ab34745 engine: client: keep TF_NEAREST enabled for console font, if HUD font failed to load 2026-04-05 07:03:46 +05:00
Alibek Omarov 2713f03ec2 filesystem: fix Quake gamedir check if pak0.pak is written in uppercase, omitting caseinsensitive FS emulation as is VFS is not enabled at this stage 2026-04-05 07:03:46 +05:00
Alibek Omarov 238083c174 engine: client: move common server message handlers to CL_ParseCommonMessage and only HL specific ones to CL_ParseCommonHLMessage (previously CL_ParseCommonDLLMessage) 2026-04-05 07:03:46 +05:00
Alibek Omarov 78de3ee6d9 engine: client: initialize cl_textmessage at compile-time 2026-04-05 07:03:46 +05:00
Alibek Omarov 695081e079 3rdparty: library_suffix: update 2026-04-05 07:03:46 +05:00
TheEVolk 2c5e2e1ded engine: client: remove sound_t definition from sound.h 2026-04-04 18:30:14 +03:00
TheEVolk d151c48d1f engine: client: fix api issues 2026-04-04 17:47:54 +03:00
TheEVolk 35998bce81 engine: client: add sound api 2026-04-04 16:08:31 +03:00
Alibek Omarov a10520ca9e engine: host: add message when native game libraries weren't found but libraries for x86 windows, linux or macos were, telling that the mod probably require custom logic code 2026-04-04 17:37:48 +05:00
Alibek Omarov cb4a03ded2 engine: platform: add Platform_LibraryExists and implement it for iOS and generally for everything else with FS_FileExists 2026-04-04 17:37:48 +05:00
Alibek Omarov 31a0d17de5 3rdparty: mainui: update 2026-04-04 17:36:21 +05:00
Alibek Omarov 5f765a35b9 ref: gl: show more detailed Host_Error instead of ASSERT in R_GetTexture 2026-04-04 17:36:05 +05:00
Alibek Omarov 5606346cc1 scripts: waifulib: xcompile: add Android NDK 30 2026-04-04 17:34:31 +05:00
Alibek Omarov 6faee8fd89 scripts: ios: call mkdir -p to not error out if the directory already exists (thanks, @ksagaming) 2026-04-04 17:34:07 +05:00
Alibek Omarov 255c9bcaed 3rdparty: mainui: update 2026-04-03 09:27:33 +05:00
Alibek Omarov 25a3fdbcec 3rdparty: mainui: update 2026-04-03 09:20:28 +05:00
Alibek Omarov 8e450d869b engine: common: add host.default_gamedir containing gamedir passed to us from game launcher 2026-04-03 04:09:25 +05:00
Alibek Omarov e8ef7ad60c engine: server: throw Host_Error when game tries to call precache model with invalid argument, like GoldSrc 2026-04-03 01:43:23 +05:00
Alibek Omarov 216eedcdcd ref: gl: better wording about backface culling goldsrc bug [skip ci] 2026-04-03 01:28:04 +05:00
Alibek Omarov fd55716633 ref: gl: change backface culling only if it wasn't disabled by mod developer beforehand 2026-04-03 01:23:55 +05:00
Alibek Omarov 0b920be381 engine: client: delay freeing up the sound channel when it becomes inaudible 2026-04-03 00:03:52 +05:00
Alibek Omarov e6dfccb6ba engine: reorganize common.h header 2026-04-02 20:45:00 +05:00
Alibek Omarov 3129081050 engine: fix a typo USING_ASAN -> USE_ASAN 2026-04-02 02:16:50 +05:00
Alibek Omarov 00dac928c9 ref: replace checking PARM_QUAKE_COMPATIBLE with direct check of feature flag set 2026-04-02 02:13:27 +05:00
Alibek Omarov 3726256514 engine: simplify IsQuakeCompatible by enforcing QUAKE_COMPATIBLE feature flag when Quake demo starts 2026-04-02 02:11:40 +05:00
Alibek Omarov 5eb43505cb engine: platform: try to fix build on 32-bit arm in debug builds (r7 is used by frame pointer, so we push it into stack before using for a syscall) 2026-04-02 02:02:59 +05:00
Alibek Omarov f7e516b775 ci: run armhf build on arm64 runner too 2026-04-02 02:01:09 +05:00
Alibek Omarov 4edd512902 scripts: gha: enable all renderers on Linux targets 2026-04-01 20:59:48 +05:00
Alibek Omarov acb263368a ci: try to use github arm64 runner 2026-04-01 20:51:22 +05:00
Alibek Omarov 38b3805ad8 engine: client: gamma: fix gamma when compiled with -ffast-math 2026-04-01 20:35:04 +05:00
Alibek Omarov 2ebaa2ad8e engine: wscript: disable engine tests on macOS temporarily 2026-04-01 09:15:09 +05:00
Alibek Omarov 018c52b998 scripts: gha: apple: add -v flag to build stage 2026-04-01 06:36:40 +05:00
Alibek Omarov 99d01e7967 engine: try to fix running tests on macOS 2 2026-04-01 06:29:22 +05:00
Alibek Omarov e5670afc4c common: xash3d_types: undefine ARRAYSIZE before defining our ARRAYSIZE (actually we should stop using ARRAYSIZE instead) 2026-04-01 06:19:06 +05:00
Alibek Omarov 5aba96ce14 engine: try to fix tests on macOS 2026-04-01 06:19:06 +05:00
Alibek Omarov 6b97fc1825 engine: fix tests build on Win32 2026-04-01 06:02:08 +05:00
Alibek Omarov 42cb5fe547 engine: wscript: append SDL2 library path to the client tests LD_LIBRARY_PATH (or it's platform-specific alternative) 2026-04-01 05:40:45 +05:00
Alibek Omarov 6a1718aa07 engine: get rid of --enable-engine-tests, now engine tests run as waf targets, allowing their run on CI seamlessly. 2026-04-01 05:15:31 +05:00
Alibek Omarov f980f40f8e engine: client: add new titles.txt parser, that avoids max messages limit 2026-04-01 04:10:41 +05:00
Alibek Omarov 5506486ed1 README: add note about running unit tests 2026-03-31 23:36:13 +05:00
Alibek Omarov 4a90d2fbe5 contributing: better wording 2026-03-31 23:35:47 +05:00
RevengeRipanda1batross 8767a4d6ba engine: client: avi: remove XASH_FFMPEG_DLOPEN
Is this a mistake? This define effectively forces `--enable-ffmpeg-dlopen` at all times ignoring configuration (which in turn makes build to fail with ffmpeg 8.1).
2026-03-31 16:24:32 +05:00
Xav101anda1batross 34bb2665cf wscript: removed redundant irix linkflags 2026-03-30 11:33:46 +05:00
Xav101anda1batross 1a79a9488d 3rdparty: libbacktrace: wscript: add irix to the unsupported platforms list. This could probably be made to work at some point but we'll disable it just to keep things simple. 2026-03-30 11:33:46 +05:00
Alibek Omarov c91b707b66 engine: client: ignore blank music tracks in "cd loop" command so music could carry over through changelevels 2026-03-28 19:23:59 +05:00
Alibek Omarov a50ea929d6 engine: fix a typo in R_Blood, fix a typo in pt_4x_slowgrav 2026-03-28 18:44:50 +05:00
Alibek Omarov d5b481ac9d ref: gl: fix off-by-one error in GL_PopPolygonOffset 2026-03-28 04:43:14 +05:00
Marc-Antoine Lortieanda1batross 8e69be0542 Documentation: opensource-mods.md: add Heart of Evil mirror. 2026-03-28 01:36:50 +05:00
Marc-Antoine Lortieanda1batross 5296147c6b android: Supplement French Translation 2026-03-28 01:36:18 +05:00
Alibek Omarov 30fa074c8c engine: server: implement time window based challenge generation 2026-03-27 22:17:34 +05:00
Alibek Omarov 02b1d15e42 ref: gl: add gl_polyoffset_bmodels to enable poly offset for drawing brush models, avoiding zfighting 2026-03-27 03:27:20 +05:00
Alibek Omarov 82475c3b58 public: remove tgmath.h include in C++ mode 2026-03-26 15:49:33 +05:00
Alibek Omarov c421f3136d public: reformat BoxOnPlaneSide function 2026-03-26 02:48:13 +05:00
Alibek Omarov 641a3663f5 ref: gl: unlikely but use fast side check for frustum 2026-03-26 02:44:53 +05:00
Alibek Omarov acaede2a0d public: redefine mplane_t, make PlaneIntersect inline, turn BOX_ON_PLANE_SIDE into an inline function instead of a macro 2026-03-26 02:37:59 +05:00
Alibek Omarov d8d1ebf23c engine: cleanup unused functions 2026-03-26 02:24:30 +05:00
Alibek Omarov 926f0ae95d engine: server: get rid of {ALLOC_,MAKE_,}STRING macros, call the underlying functions directly 2026-03-26 02:24:30 +05:00
Alibek Omarov c5d5ce5f43 3rdparty: mainui: update 2026-03-25 23:06:27 +05:00
Alibek Omarov 2fe950b0af engine: server: don't show scary message about missing server library on engine startup in multiplayer capable games 2026-03-25 23:06:27 +05:00
坂柳有栖anda1batross a04bb01841 android: Supplement Simplified Chinese Translation
android: Supplement Simplified Chinese Translation
2026-03-25 16:48:04 +05:00
坂柳有栖anda1batross 2d2de9dc26 android: Supplement Simplified Chinese Translation
Android: values-zh-rCN/strings.xml,Supplement Simplified Chinese Translation
2026-03-25 16:48:04 +05:00
Alibek Omarov 81fc511f0a android: add ability to disable yapb bots from our settings page 2026-03-25 00:51:21 +05:00
Alibek Omarov d85d813d62 android: add a proper exit from storage permission dialog 2026-03-25 00:50:47 +05:00
Alibek Omarov 9f6b571d79 android: check if user tries to open known mod and redirect 2026-03-25 00:49:44 +05:00
Alibek Omarov 292f393f99 android: fix name with XML file with Simplified Chinese translation 2026-03-24 23:16:38 +05:00
Alibek Omarov f523f04ee2 android: build mainui_cpp through CMake 2026-03-24 21:05:56 +05:00
Alibek Omarov 88d8115306 ci: update actions to newer versions 2026-03-24 04:20:11 +05:00
Alibek Omarov 9a050cb67f scripts: gha: fix shellcheck warnings in build_* scripts 2026-03-24 04:07:21 +05:00
Alibek Omarov cf8046ecd9 scripts: gha: fix shellcheck warnings in deps_* scripts 2026-03-24 03:51:54 +05:00
Alibek Omarov 6a292ec68c scripts: gha: android: bump NDK, JDK and commandline tools versions 2026-03-24 03:46:58 +05:00
Alibek Omarov 4679359688 android: update gradle, agp, etc 2026-03-24 03:46:58 +05:00
Andrey Akhmichinanda1batross bca81de210 Documentation: opensource-mods.md: update. 2026-03-23 01:39:21 +05:00
Alibek Omarov ec1a65c18f 3rdparty: mainui: update 2026-03-22 20:13:50 +05:00
Alibek Omarov ed559d9ed7 engine: client: fix off by one error in KeynumTostring 2026-03-22 20:08:01 +05:00
Alibek Omarov 8995a584b9 engine: do not register autocompletion for commands that are not possible in dedicated build 2026-03-22 14:20:59 +05:00
Alibek Omarov 30c81c9f01 engine: use dynamic allocation for required wad list and optional debug info 2026-03-22 14:20:59 +05:00
ksagamenganda1batross 11c7c1b77d scripts: ios: enable decay build in buildallmods.sh 2026-03-19 22:36:51 +05:00
ksagamenganda1batross 93cb146f39 engine: common: Disable changegame menu on iOS 2026-03-19 22:36:51 +05:00
ksagamenganda1batross 59dbe1d01e ios: Add entitlements.plist and codesign the generated ipa with said plist in createipa.sh 2026-03-19 22:36:51 +05:00
ksagamenganda1batross d6dc77d409 engine: common: Change macro for consistency 2026-03-19 22:36:51 +05:00
ksagamenganda1batross f8714a57d3 scripts: ios: Build all mods script and postfixing support in buildhlsdk script 2026-03-19 22:36:51 +05:00
ksagamenganda1batross 9f71255d6f engine: ios: Fixed code for running multiple client libraries bundled in the same ipa 2026-03-19 22:36:51 +05:00
Alibek Omarov d8bab034c2 engine: client: extend the supported key list for international keyboards, small refactoring of old smelly code 2026-03-19 15:41:12 +05:00
Alibek Omarov 9a25768617 ref: soft: cleanup dead, commented out code and global variables 2026-03-17 00:19:27 +05:00
Alibek Omarov e76528d929 ref: make sprite and studio global variables static 2026-03-17 00:19:27 +05:00
Alibek Omarov 00ad05c92a ref: gl: move showtextures implementation to gl_image.c 2026-03-17 00:19:27 +05:00
Alibek Omarov df95baa282 public: minor refactoring, mark some more functions as returns_nonnull 2026-03-17 00:19:27 +05:00
Alibek Omarov f42e2f59b7 filesystem: mark some fs ops const 2026-03-17 00:19:27 +05:00
SNMetamorphanda1batross d8b784482e Documentation: extensions: added description for steam broker protocol 2026-03-16 15:04:02 +05:00
SNMetamorphanda1batross b136f1e078 Documentation: updated information about GoldSrc network protocol support 2026-03-16 15:04:02 +05:00
SNMetamorphanda1batross bd73775a2f engine: client: refactor steam broker internal logic 2026-03-13 02:54:35 +05:00
SNMetamorphanda1batross 1f133ea702 engine: client: add steam broker messages for game init & shutdown events 2026-03-13 02:54:35 +05:00
SNMetamorphanda1batross 8acc7e4f76 engine: client: rename steam broker message sb_terminate to sb_disconnect 2026-03-13 02:54:35 +05:00
Alibek Omarov 00e2e8e502 3rdparty: mainui: update 2026-03-12 03:50:12 +05:00
Alibek Omarov e5013196ac engine: client: reduce amount of glColor4ub calls when rendering text 2026-03-11 10:13:23 +05:00
Alibek Omarov 658a3b0c6a ref: gl: minor refactoring 2026-03-11 10:11:21 +05:00
Alibek Omarov 4e9a2dace0 ref: gl: only check for GL errors if both gl_check_errors and developer mode are enabled 2026-03-11 08:39:58 +05:00
Alibek Omarov f7b389b7cd common: remove particledef.h 2026-03-11 08:39:33 +05:00
Alibek Omarov dac77ec0af engine: client: idenitification: add /etc/machine-id 2026-03-05 06:06:52 +05:00
Alibek Omarov 32d73e62f4 engine: minor refactoring, remove host.apply_game_config as it's unused 2026-03-05 06:06:04 +05:00
Alibek Omarov b353ec463a engine: host: move exec, userconfigd and memstats to it's respective files 2026-03-05 04:44:19 +05:00
Alibek Omarov 36be731893 engine: cmd: make all command buffers size static 2026-03-05 04:42:56 +05:00
Alibek Omarov 0389ef3b04 game_launch: simplify 2026-03-05 02:58:00 +05:00
Alibek Omarov b2886dd2e9 engine: platform: remove support for glibc's backtrace(), as it's unused 2026-03-05 02:56:38 +05:00
Alibek Omarov af5d190bc4 engine: common: mod_bmodel: make texture name array larger so it fits both world name and miptex name 2026-03-04 06:06:00 +05:00
Alibek Omarov 5ca31f0965 engine: client: s_mix: always mix when not in menu, as DSP effects might produce sound even if no channels are active 2026-03-02 15:39:49 +05:00
Alibek Omarov c19a824a42 public: add Q_memfgets, replacement for COM_MemFgets rewritten using crtlib functions. Add a test 2026-03-01 03:04:33 +05:00
Alibek Omarov 53c5a33ffd engine: only switch to console on Host_Error when developer mode is enabled 2026-02-28 20:39:34 +05:00
Alibek Omarov 711d15958c engine: color Host_Error red to make it more visible in the console 2026-02-28 20:39:13 +05:00
Alibek Omarov 99d7c52b4e 3rdparty: mainui: update 2026-02-28 20:27:44 +05:00
Alibek Omarov 342a59a408 engine: client: idenitification: add server IP address to the MD5 hash, not to the ID bloom filter 2026-02-28 04:20:53 +05:00
Alibek Omarov 9302b8904c engine: client: identification: fix a typo 2026-02-28 04:17:34 +05:00
Alibek Omarov bdbf5c0ef2 engine: client: titles: add another edge case test for titles.txt parser 2026-02-28 04:17:34 +05:00
Alibek Omarov 192ed942c4 public: add new features to ParseFileSafe, such as disabling interpreting certain characters as separate tokens, or instead forcing them to be separate tokens 2026-02-28 04:17:34 +05:00
Alibek Omarov 56255f6de0 engine: client: add simple test for titles.txt parser 2026-02-28 01:49:25 +05:00
Alibek Omarov 7ce830ea33 engine: client: vox: fix defaulted word parameters 2026-02-28 00:25:19 +05:00
Alibek Omarov 9a285986c4 public: reimplement COM_TrimSpace, add it to crtlib, add tests for it 2026-02-28 00:05:37 +05:00
Alibek Omarov 62c547570a engine: minor refactoring 2026-02-27 23:00:39 +05:00
Alibek Omarov 88e5013623 ref: gl: vgl_shim: try to fix build on PSVita 2026-02-26 17:22:47 +05:00
Alibek Omarov ea0fed24ec filesystem: remove unneccessary dependency on const.h 2026-02-26 10:29:09 +05:00
Alibek Omarov f863e346f5 engine: reduce dependency on eiface.h 2026-02-26 10:29:09 +05:00
Alibek Omarov 7c527d8886 public: minor refactoring 2026-02-26 10:29:09 +05:00
Alibek Omarov e51f93a5b4 engine: remove unused hltv.h 2026-02-26 10:29:09 +05:00
Alibek Omarov 50147a3d48 common: replace HLSDK pmtrace.h and pm_movevars.h by it's QW counterparts 2026-02-26 10:29:09 +05:00
Alibek Omarov 26acc25018 common: use Quake derived definitions for usercmd_t and dlight_t 2026-02-26 10:29:09 +05:00
Alibek Omarov d8e1597726 common: xash3d_types: add Quake's link_t definition and offsetof macro 2026-02-26 10:29:09 +05:00
Alibek Omarov 2c004e6cb7 3rdparty: mainui: update 2026-02-25 03:20:33 +05:00
Alibek Omarov 9cf9eb91bb common: remove unused mathlib.h 2026-02-25 00:08:17 +05:00
Alibek Omarov fc9ab68837 public: link tests to build_vcs too 2026-02-23 23:25:24 +05:00
Alibek Omarov be6ad74e1b utils: mdldec: fix building with plain makefile 2026-02-23 21:50:52 +05:00
Alibek Omarov 2bdc22fbeb public: exclude build_vcs from libpublic dependencies, add it per project 2026-02-23 21:48:23 +05:00
Alibek Omarov 382b19e458 engine: minor refactoring 2026-02-23 21:46:20 +05:00
Alibek Omarov c63c0ba04b ref: minor refactoring 2026-02-23 21:46:01 +05:00
Alibek Omarov 109579fa92 3rdparty: mainui: update 2026-02-23 18:14:23 +05:00
IntriguingTilesanda1batross 005544d974 engine: client: always set scaling factors 2026-02-21 17:10:37 +05:00
Alibek Omarov 07937f5f6c engine: client: consolidate two remaining functions in s_utils.c into s_main.c 2026-02-21 03:37:36 +05:00
Alibek Omarov 8bdd6bfc5e ref: gl: add link to web archive where the ripple animation algorithm was originally described [ci skip] 2026-02-21 03:11:02 +05:00
Alibek Omarov 8b0d3557f3 game_launch: change Sys_ChangeGame to a stub 2026-02-21 02:21:09 +05:00
Alibek Omarov 436fa98f33 engine: remove the code that calls pfnChangeGame from game_launch, as we never use it anyway 2026-02-21 02:21:09 +05:00
Alibek Omarov 718fbac9be Merge branch 'steam-broker' 2026-02-21 02:00:53 +05:00
Alibek Omarov abaf390dfc engine: client: introduce a new mixer 2026-02-21 01:43:14 +05:00
Alibek Omarov 9205ddc5b4 engine: client: voice: rewrite Voice_IsGoldSrcMode to make it easier to understand and also fix build with Clang 2026-02-21 01:20:34 +05:00
Alibek Omarov 6bcb98e779 public: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty. Remove legacy macros 2026-02-21 01:20:34 +05:00
Alibek Omarov 4722ad6be6 ref: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov baa005ff71 filesystem: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov 76363a555c engine: platform: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov de70e12bbe engine: server: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov eacc35d9e1 engine: replace COM_CheckString and COM_CheckStringEmpty by COM_StringEmptyOrNULL and COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov 3040552580 engine: client: replace COM_CheckString with COM_StringEmptyOrNULL 2026-02-21 01:20:34 +05:00
Alibek Omarov 24aaeb07cb engine: client: replace COM_CheckStringEmpty with COM_StringEmpty 2026-02-21 01:20:34 +05:00
Alibek Omarov ae15886a14 public: add COM_StringEmpty and COM_StringEmptyOrNULL macros (that eventually replace less obvious COM_CheckString and COM_CheckStringEmpty) 2026-02-21 01:20:34 +05:00
Alibek Omarov b2911e6d96 engine: client: add double quotes around key in bind command in config file. Thanks @TheKingFireS for fix 2026-02-20 23:14:27 +05:00
Alibek Omarov 2735add7d0 engine: drop setgl command 2026-02-20 22:08:26 +05:00
Alibek Omarov 0abb667c28 engine: drop XASH_HASHED_VARS define 2026-02-20 22:08:05 +05:00
Alibek Omarov 19dfec5f52 engine: use BaseCmd_FindAll when looking for cvars and cmds simultaneously 2026-02-20 21:56:59 +05:00
Alibek Omarov e0f01ddae7 engine: remove unused ignore_group argument from Cvar_FindVarExt 2026-02-20 21:55:15 +05:00
Alibek Omarov 2f8a0510b8 engine: client: return NULL from LookupBinding on unknown bindings, like GoldSource 2026-02-16 23:59:28 +05:00
Alibek Omarov dbbe75fec6 engine: mod_bmodel: minor refactoring 2026-02-13 12:33:44 +05:00
Alibek Omarov c0b15fb186 ci: disable freebsd-16-0-snap image as it's unsupported by cirrus 2026-02-13 12:15:46 +05:00
Alibek Omarov f802b0eed9 engine: mod_bmodel: fix build w/ MSVC 2026-02-13 12:09:01 +05:00
Alibek Omarov cf9f9b40e7 3rdparty: mainui: update 2026-02-13 11:40:47 +05:00
Alibek Omarov 1b2c00e228 engine: add ability to scan and load BSPX lumps. As an example support RGBLIGHTING and LIGHTINGDIR extensions. 2026-02-13 11:16:12 +05:00
Alibek Omarov 587eabd829 common: bspfile: add basic BSPX definitions 2026-02-13 11:08:35 +05:00
Alibek Omarov 80e0d45c09 3rdparty: mainui: update 2026-02-12 13:30:30 +05:00
Alibek Omarov f034276354 readme: update discord link 2026-02-10 18:19:03 +05:00
Alibek Omarov 306455280a engine: identification: include build.h early so platform definitions are visible when including system headers 2026-02-10 16:13:56 +05:00
Alibek Omarov d9221c8491 scripts: waifulib: remove outdated stuff 2026-02-08 10:14:28 +05:00
Alibek Omarov 249e1404c1 engine: client: identification: add client.h so compiler doesn't complain about missing prototypes for public functions 2026-02-08 06:38:05 +05:00
Alibek Omarov dd55b77543 engine: client: identification: do not salt port as suggested by @snmetamorph 2026-02-08 06:38:05 +05:00
Alibek Omarov c772fb98d1 engine: client: salt xashid with server address 2026-02-08 06:38:05 +05:00
Alibek Omarov 1c1e5c50a9 3rdparty: mainui: update 2026-02-07 14:38:23 +05:00
Alibek Omarov 5cc784f2fa engine: common: fix inverted check in addmaster 2026-02-07 14:38:12 +05:00
Razcoinaanda1batross 983b9611ac avi: add audio context check before sending packet 2026-02-07 07:50:57 +05:00
Alibek Omarov a7f154d05a engine: platform: move SDL hints from android code to main SDL code 2026-02-05 08:45:23 +05:00
Alibek Omarov 0e75428d62 engine: avi: do not playback video if codec context is NULL 2026-02-05 08:26:43 +05:00
Alibek Omarov fa34092ba2 engine: client: make RefAPI's R_GetConfigName optional 2026-02-05 08:17:59 +05:00
Alibek Omarov f01818a3f8 wscript: allow linking with system-wide opus 1.6.1 which has a fix for custom modes 2026-02-05 07:47:18 +05:00
Alibek Omarov 732bc50a3a filesystem: set custom_loader flag even if loading DLLs from archives is unsupported
After all, it's an engine job to figure out whether it wants to load this binary or not.
2026-02-03 17:48:27 +05:00
Владислав Суховanda1batross e9ffe12481 ref: gl: fix opacity of additive sprites and textures in fog 2026-01-31 20:49:47 +05:00
Alibek Omarov cca6f8da2d engine: platform: sdl2: more robust error handling when creating a window and opengl context 2026-01-31 14:13:37 +05:00
Владислав Суховanda1batross d391ef1747 public: crtlib: make COM_FixSlashes remove duplicate slashes 2026-01-30 02:25:44 +05:00
Alibek Omarov 4804586728 engine: let movevars.zmax be encoded in 24 bits 2026-01-30 02:04:07 +05:00
Alibek Omarov d08fd5c855 engine: directly access background state cvar 2026-01-30 00:16:19 +05:00
Alibek Omarov 9cc884dfe6 engine: add function Cvar_DirectFullSet that acts like Cvar_DirectSet and Cvar_FullSet at the same time 2026-01-30 00:16:19 +05:00
Alibek Omarov e767770647 common: set default window mode to windowed on windows
Window, window, window, window!
2026-01-30 00:16:19 +05:00
Alibek Omarov 456ad17d05 engine: platform: sdl2: make fake fullscreen for windowed mode. Simplify the code by first creating window in windowed mode and then switching to fullscreen if requested 2026-01-30 00:16:19 +05:00
Alibek Omarov 5ee21ca6ab engine: platform: sdl2: remove window_x/ypos cvars 2026-01-30 00:16:19 +05:00
Alibek Omarov f706b51d14 3rdparty: mainui: update 2026-01-28 15:24:13 +05:00
Alibek Omarov d8895ae497 engine: do not set actually freed models as to be freed, fixing another models leak. Improve modellist output 2026-01-28 15:23:43 +05:00
Alibek Omarov a807168816 engine: client: send broadcast for 10 more ports forward when scanning servers in LAN 2026-01-27 14:55:08 +05:00
Alibek Omarov a26c56629e engine: client: deactivate menu when on escape if we are going back to game 2026-01-26 02:17:03 +05:00
Alibek Omarov 8ee997b1bc Reapply "engine: client: allow console toggle from menu via keybind"
This reverts commit 27c71194ba.
2026-01-26 02:12:07 +05:00
Alibek Omarov 27c71194ba Revert "engine: client: allow console toggle from menu via keybind"
This reverts commit 9ed76fbb36.
2026-01-26 01:37:26 +05:00
Alibek Omarov c029def67d 3rdparty: MultiEmulator: update 2026-01-24 07:36:35 +05:00
Alibek Omarov 8bb6968ab8 scripts: waifulib: sdl2: add paths support for SDL mingw dev package 2026-01-24 07:32:02 +05:00
Alibek Omarov cc9e3a5a81 engine: misc build fixes for clang with mingw 2026-01-24 07:21:30 +05:00
Alibek Omarov e9cd94eea6 3rdparty: mainui: update 2026-01-24 07:20:22 +05:00
Alibek Omarov 572fd063fc common: port: do not redefine NOMINMAX and alloca if already defined 2026-01-24 07:17:53 +05:00
Alibek Omarov 1052e45928 3rdparty: libbacktrace: wscript: add support for building on Windows 2026-01-24 07:17:11 +05:00
Alibek Omarov df561147ec 3rdparty: libbacktrace: update 2026-01-24 07:16:49 +05:00
Alibek Omarov 9ce570fe28 3rdparty: MultiEmulator: update 2026-01-24 07:16:34 +05:00
Alibek Omarov 20a20c72d4 common: do not override neither _cdecl or _stdcall 2026-01-24 07:09:36 +05:00
Alibek Omarov 7a8837bf2a ref: do not remove permanent decals 2026-01-22 23:40:59 +05:00
Alibek Omarov b83d763a50 3rdparty: mainui: update 2026-01-21 22:23:19 +05:00
Alibek Omarov b2ab748fcb engine: do not reset flNextPrimaryMove in pmove struct, as it's used by modders 2026-01-21 05:10:51 +05:00
Alibek Omarov 56e5a95cb6 engine: platform: sdl2: add command vid_info to dump current SDL window state 2026-01-21 01:58:38 +05:00
Alibek Omarov 214b133e5d engine: fix build 2026-01-20 23:43:28 +05:00
Alibek Omarov f9bbe2a2c4 engine: make host.argv an array of pointers to const data 2026-01-20 22:42:14 +05:00
Alibek Omarov c5f90aabd6 engine: use Sys_GetIntFromCmdLine where possible 2026-01-20 22:30:39 +05:00
Alibek Omarov 77123f710b 3rdparty: mainui: update 2026-01-20 19:27:18 +05:00
Владислав Суховanda1batross 5c5c0ad94d engine: common: prepare support for direct scr writing 2026-01-20 19:26:28 +05:00
Alibek Omarov 5232ccb6e3 engine: server: do not print the port in ban list, it's not used there and causes issues when exported to a config 2026-01-20 00:37:23 +05:00
Alibek Omarov bc387477ce engine: common: fix world submodels were not being purged correctly, leading to a "memory leak" 2026-01-20 00:34:10 +05:00
Alibek Omarov 1c6eb85a12 public: crtlib: modify format of Q_timestamp TIME_FILENAME to make it sortable 2026-01-19 22:33:49 +05:00
Alibek Omarov ed950723cd engine: client: add cl_autorecord cvar, to start recording demo as soon as client spawns on server 2026-01-19 22:30:20 +05:00
Alibek Omarov e06087cb0b engine: client: move svc_restoresound parser into svc_sound parser 2026-01-19 22:07:59 +05:00
Alibek Omarov 8cbc7819a6 engine: common: transform asserts into Host_Error calls in Mod_LoadModel 2026-01-19 22:00:33 +05:00
Alibek Omarov 7c588540d8 engine: common: http: fix incorrect parsing of URLs 2026-01-18 15:33:10 +05:00
Alibek Omarov 0e0763c820 engine: client: steam: drop broker address after terminate 2026-01-17 06:18:07 +05:00
Alibek Omarov e5d3f180dc engine: client: implement steam broker client side 2026-01-17 06:18:07 +05:00
Alibek Omarov 5cb5e76872 engine: add new needload flag specifically for cleaning up unused models and use unreferenced for free slots. 2026-01-17 06:17:46 +05:00
Alibek Omarov 742265c2c4 ref: remove limit on total amount of textures a studio model can contain 2026-01-17 06:17:46 +05:00
Alibek Omarov 4e49cc49f8 engine: common: http: optimistically treat https as http as a temporary hack 2026-01-17 06:17:46 +05:00
Владислав Суховanda1batross 09ca41ea36 engine: server: drop ghost fakeclients before changelevel 2026-01-16 14:27:41 +05:00
Alibek Omarov 896bbe8fc3 engine: server: add Host_Error on unknown pfnWalkMove state
In GoldSrc default branch interpreted as WALKMOVE_NORMAL, and there might be
some mods that expect this.
But Xash never did this, and if Xash-specific games rely on that behavior, we
better know about it.
2026-01-16 14:19:38 +05:00
Alibek Omarov ed85d3028f engine: client: fix division by zero in cl_showfps on first frame 2026-01-15 04:42:36 +05:00
Alibek Omarov 8e33f11dc6 engine: server: replace MAX_INFO_STRING with appropriate sizeof, remove some set but unused variables 2026-01-13 18:09:37 +05:00
Alibek Omarov 4bb547fdc7 engine: platform: sdl: revert disabled NET_WM_BYPASS_COMPOSITOR 2026-01-13 08:35:46 +05:00
Alibek Omarov 8af5ecdb06 mainui: update 2026-01-13 08:27:03 +05:00
Alibek Omarov 5a0517c1b8 engine: server: refactoring, better validation of cl_updaterate and rate values. Allow sv_min/maxupdaterate to be set to 0 for unlimited powah 2026-01-13 08:27:03 +05:00
Alibek Omarov 5ed1bca57f engine: client: allow enabling sv_cheats during demo playback 2026-01-13 08:27:03 +05:00
Alibek Omarov d5892f3794 engine: change sleeptime resolution from 1 microsecond to 100 microseconds, as apparently sleeping for a microsecond isn't enough to lower CPU usage 2026-01-13 08:27:03 +05:00
Alibek Omarov 32aee7ef2f engine: add sv_hibernate_when_empty that cuts down CPU usage on empty servers, similar to the feature in Source 2026-01-13 08:27:03 +05:00
Alibek Omarov 3a5d57603f engine: print unknown command message in dedicated mode and when not on server 2026-01-13 08:27:03 +05:00
Steven Linnanda1batross c865999302 engine: fix window position drift on X11 with window decorations 2026-01-13 06:31:29 +05:00
Steven Linnanda1batross cb69a52d65 engine: fix black fullscreen flash on startup in windowed mode 2026-01-13 06:31:29 +05:00
Steven Linnanda1batross d915ed184c Add 'retry' command for quick reconnection to servers 2026-01-13 06:28:15 +05:00
Alibek Omarov bdc205b994 engine: client: do not grab client updates during intermission, fixes the bug where player was seemingly moving during intermission 2026-01-13 06:26:26 +05:00
Alibek Omarov 46ccc37cae engine: fix undefined pfnTime build error, it has been renamed to Sys_FloatTime 2026-01-13 06:03:34 +05:00
Alibek Omarov d7b96ea8c2 engine: pass arguments on engine restart on nswitch, add forgotten -changegame parameter, simplify code for other platforms 2026-01-13 05:51:19 +05:00
Alibek Omarov de9e28700a engine: client: prevent a crash in case of invalid tempentity message (thanks, @Aynekko!) 2026-01-13 05:51:19 +05:00
Alibek Omarov f5b2c4f7af engine: client: prevent a crash in goldsrc delta entities parser 2026-01-13 05:51:19 +05:00
Alibek Omarov 79f7fba83c engine: client: make both UI and Render API to use same implementation of GetFilesList function 2026-01-13 05:51:19 +05:00
Alibek Omarov cb7f2ad8af engine: replace Sys_DoubleTime with Platform_DoubleTime in internal code, only use Sys_DoubleTime in APIs
As Sys_DoubleTime is marked with GAME_EXPORT attribute that helps us to
maintain compatible binary interface.
2026-01-13 05:51:19 +05:00
lewa_j 5cdb58431a engine: ref: Remove unused declarations, fix comment after rename 2026-01-13 03:41:19 +03:00
lewa_j 543d6d67e6 engine: platform: Make R_Init_Video parameter an enum 2026-01-13 03:25:29 +03:00
lewa_j 72e8a53046 engine: Fix input_completion buffer comparison
Fixes: 4b771701 ("engine: add con_showcompletion feature from FTEQW")
2026-01-13 03:22:19 +03:00
lewa_j deb7b2061a engine: platform: WINDOW_MODE_* enums for vid_fullscreen instead of magic numbers 2026-01-13 02:16:05 +03:00
lewa_janda1batross 8a75104cbc commoon: engine: Fix not including all dependencies for headers. (Just some used in ref) 2026-01-12 13:52:04 +05:00
lewa_j e7f758f380 engine: ref: Fix crash on invalid ref lib 2026-01-12 03:20:58 +03:00
Alibek Omarov a4e5cf8bac engine: client: fix up origin of MOVETYPE_FOLLOW entities immediately after entity update
This fixes an issue when MOVETYPE_FOLLOW entities seem to be "blinking".

Explanation of what's happening is in the comment in the code.
2026-01-09 18:50:29 +05:00
ksagamenganda1batross 0976d96419 crtlib: Force use xash strchrnul implementation on ios 2026-01-05 09:37:20 +05:00
ncuxonaTanda1batross e39f8bf7c4 ref: gl: always use RGTC internal format for ATI2 textures
AMD убрала в новых драйверах поддержку расширения GL_ATI_texture_compression_3dc, из-за чего сломалась загрузка ATI2 текстур. Формат RGTC включен в стандарт OpenGL 3.0, а единственные видеокарты с поддержкой 3DC, но без RGTC - это серия Radeon X1000 (2005г.). Можно было бы только ради Х1000 проверять поддерживаемые расширения и переключаться на 3DC, но без явной необходимости этого делать не хочется.
2026-01-03 08:17:09 +05:00
Steven Linnanda1batross 9ed76fbb36 engine: client: allow console toggle from menu via keybind 2026-01-02 10:31:44 +05:00
Alibek Omarov 4b77170136 engine: add con_showcompletion feature from FTEQW 2025-12-27 13:13:23 +05:00
Alibek Omarov a168719905 engine: force generating vfs.cfg if it doesn't exists 2025-12-27 10:40:24 +05:00
Alibek Omarov c950530e44 engine: common: masterlist: fix reporting wait state 2025-12-24 07:12:43 +05:00
Alibek Omarov 5584e6376c engine: client: voice: shutdown refactoring 2025-12-24 06:51:16 +05:00
Alibek Omarov fcd7e7dcea engine: client: small sound refactoring, try to round volume values 2025-12-24 06:51:04 +05:00
Alibek Omarov 548a49ed93 engine: client: set a volume for VOX sentences playing from listener 2025-12-24 06:49:38 +05:00
Alibek Omarov 68a7689108 engine: client: fix incorrect usage of Mod_TestBmodelLumps return value in Cmd_ListMaps, causing it to crash 2025-12-23 14:05:36 +05:00
NikitaandAlibek Omarov 58996c3d0d ref: gl: use wireframe overlay for bmodel faces as well 2025-12-21 02:32:12 +05:00
Alibek Omarov 41925a1aa7 engine: platform: sdl3: implement audio output using streams 2025-12-18 12:06:48 +05:00
Alibek Omarov c834f7c559 engine: platform: sdl3: add events handler 2025-12-18 11:40:52 +05:00
Alibek Omarov a66262a787 engine: platform: sdl3: add few more vid functions, add REF_WINDOW_TYPE_SDL3 to query specifically for SDL3 window 2025-12-18 10:26:06 +05:00
Alibek Omarov 3b51708160 engine: platform: sdl3: implement window creation, fill out required stubs to make it compile 2025-12-18 10:00:46 +05:00
Alibek Omarov ee6004a88d engine: platform: sdl2: minor refactorings 2025-12-18 09:59:37 +05:00
Alibek Omarov 414da98c21 Documentation: add example GPL copyright header 2025-12-18 09:58:49 +05:00
Alibek Omarov 30ad3556dd engine: small refactorings in sdl2 support, enable messagebox and timer in sdl3 backend back 2025-12-16 05:18:28 +05:00
Alibek Omarov 67a121ef8e engine: ref_api: actually bump API version 2025-12-16 05:15:23 +05:00
Alibek Omarov e7743587a1 mainui: update 2025-12-15 11:42:09 +05:00
Alibek Omarov 1b66367d3d engine: server: add a warning if server DLL couldn't be loaded, refactor calling GetEntityAPI exports 2025-12-14 04:59:24 +03:00
Alibek Omarov bc61516083 engine: client: show an error if user tries to load incompatible or outdated client.dll 2025-12-14 04:43:33 +03:00
Alibek Omarov dae8c6cb9c filesystem: in case of missing/incomplete liblist.gam make c0a0 default start map 2025-12-14 04:41:52 +03:00
Alibek Omarov bed1c669aa ci: update freebsd tasks 2025-12-14 03:52:16 +03:00
Alibek Omarov 785b2881b6 engine: client: fix crash when sound pitch is too high 2025-12-14 03:44:17 +03:00
Alibek Omarov ce08f071b1 engine: platform: sdl2: use permonitor DPI awareness to avoid unneeded window titlebar resize 2025-12-14 02:23:07 +03:00
Alibek Omarov e102857735 engine: platform: sdl2: prefer tga icons on Windows 2025-12-14 02:17:44 +03:00
Alibek Omarov e973c42bfa engine: platform: sdl2: fix stupid bug when window of the size of display gets interpreted as fullscreen window 2025-12-14 02:12:44 +03:00
Alibek Omarov 4a16ca8bc0 engine: platform: sdl2: fix fullscreen mode not fullscreening 2025-12-14 01:01:59 +03:00
Alibek Omarov f9e82170ac engine: platform: sdl2: set window position to undefined when coming back from fullscreen to windowed 2025-12-13 23:36:58 +03:00
Alibek Omarov ad01be8866 engine: platform: sdl2: get maximized state in VID_SaveWindowMode 2025-12-14 00:44:05 +05:00
Alibek Omarov 40c7c5b348 engine: platform: sdl2: disable high dpi support on Windows temporarily 2025-12-14 00:17:01 +05:00
Alibek Omarov 66ea91270b engine: make Image_ComputeSize shared between renderer and imagelib 2025-12-14 00:00:59 +05:00
Alibek Omarov 44fb4fb594 engine: common: imagelib: remove dependency on OpenGL declarations in texture formats 2025-12-13 23:59:40 +05:00
Alibek Omarov 16c849d085 engine: common: imagelib: refactoring 2025-12-13 23:11:48 +05:00
Alibek Omarov e2835a7614 engine: common: imagelib: fix incorrect check for big endian pixel formats 2025-12-13 22:30:03 +05:00
Alibek Omarov 837bf652c5 engine: server: check that save file were successfully opened for writing, show the error otherwise 2025-12-13 00:36:33 +05:00
Alibek Omarov ae5793f258 engine: log the error if file couldn't be opened for writing 2025-12-13 00:36:33 +05:00
ksagamenganda1batross 146244f1f4 scripts: gha: Set hlsdk minimum ios version to 12.0 2025-12-10 16:56:09 +05:00
ksagamenganda1batross fa7a04f535 readme: updated instructions 2025-12-10 16:56:09 +05:00
ksagamenganda1batross db2c2e685d scripts: ios: generate .dSYM files and make zip quiet 2025-12-10 16:56:09 +05:00
ksagamenganda1batross 324b152307 Documentation: change iOS to supported in ports.md 2025-12-10 16:56:09 +05:00
Alibek Omarov 09a68bbebd engine: platform: sdl2: allow DPI scaling on Windows 2025-12-09 19:22:40 +05:00
Alibek Omarov 2b7773d933 engine: platform: sdl2: rework picking suitable resolution when creating or modifying current window 2025-12-09 03:29:16 +05:00
Alibek Omarov aaef9fd91c engine: platform: sdl2: simplify checking if window fits on any display, always grab updated window size 2025-12-08 21:12:40 +05:00
Alibek Omarov 15f37a301f engine: platform: sdl2: let system pick better window position if it doesn't fit anywhere 2025-12-08 21:01:13 +05:00
Alibek Omarov 807b5df17b engine: platform: sdl2: use generic SDL_GetWindowSizeInPixels to get physical window size, if possible 2025-12-08 19:06:29 +05:00
Alibek Omarov 2a3dcecfae engine: platform: sdl2: add a note about useless and broken WarpMouseInWindow on Wayland 2025-12-08 19:05:38 +05:00
Alibek Omarov a858719a4b engine: platform: sdl2: restore scaling mouse position for hi-dpi support 2025-12-08 19:05:13 +05:00
Alibek Omarov c844cf7ec1 engine: platform: sdl2: refactor VID_RestoreScreenResolution to accept window_mode_t instead of reading cvar value 2025-12-08 18:57:31 +05:00
Alibek Omarov a4431b5cfd engine: store scaling factor between physical and logical window size 2025-12-07 15:23:35 +03:00
Alibek Omarov 7e730cf171 common: by default, use borderless fullscreen mode 2025-12-07 15:23:35 +03:00
Alibek Omarov 9569900b9c engine: redefine cvar flags in functions arguments from plain int to uint32_t 2025-12-07 15:23:35 +03:00
Alibek Omarov 5c190567e5 engine: client: add cvars vid_width and vid_height to query physical window size 2025-12-07 15:23:35 +03:00
Max ParryandGitHub 2ef374ff4a engine: imagelib: img_bmp: support for big endian RGB format
Allows software rendering save screenshots
2025-12-06 19:46:25 +11:00
Max ParryandGitHub 2c20734ad3 ref: soft: Fix out of bounds memory access in VID_ScreenShot 2025-12-06 19:41:46 +11:00
TheEVolkanda1batross a4f8fc2205 engine: add clc_bad log packet cmd value 2025-12-02 00:21:36 +05:00
Alibek Omarov 4ed3e539fa engine: client: validate server info message 2025-12-01 13:03:53 +05:00
Alibek Omarov 3bc32d6e1b engine: shift netchan flags bit to the right, as one of the flags is removed 2025-12-01 13:03:53 +05:00
Alibek Omarov e05d6ec27c common: net_api: add a note about reserved bit for deprecated extension 2025-12-01 13:03:53 +05:00
Alibek Omarov cfa8e639f1 engine: drop legacy protocol support 2025-12-01 13:03:53 +05:00
ncuxonaTanda1batross bbe659ebfa ref: gl: fix loading texture arrays 2025-11-30 18:33:57 +05:00
Steven Linnanda1batross bf5821e4ea engine: fix vid_maximized always set to true when switching to windowed mode 2025-11-30 18:11:56 +05:00
Alibek Omarov a1dc006488 scripts: disable software renderer on Android 2025-11-30 02:59:53 +05:00
Alibek Omarov 31c30aeb28 Documentation: move engine/game development guides to development subdirectory 2025-11-30 02:52:00 +05:00
Alibek Omarov 2516ed71d6 Documentation: add tutorial on using Qt Creator 2025-11-30 02:45:46 +05:00
Alibek Omarov acbeb8fd30 wscript: ignore Qt Creator 18.0 config directory in clean command 2025-11-30 02:42:02 +05:00
Alibek Omarov ab5ac3aae8 3rdparty: maintui: another build fix, this time for platforms where C chars are unsigned 2025-11-27 23:58:48 +05:00
Alibek Omarov da133d890f gitmodules: update to our xash3d-maintui fork 2025-11-27 23:42:32 +05:00
ncuxonaTanda1batross 2736d1fd03 dds volume texture fix - gl_image.c 2025-11-27 23:17:18 +08:00
ncuxonaTanda1batross c7f18d7abe dds volume texture fix - img_dds.c 2025-11-27 23:17:18 +08:00
Alibek Omarov d5347a82cb engine: platform: get rid of the mouse pos scaling hack, this is not how highdpi issues should get resolved 2025-11-27 19:34:51 +05:00
Alibek Omarov e32470280d engine: add file size argument to brush model loading functions 2025-11-27 19:26:36 +05:00
Alibek Omarov ceb5cd61e4 ref: gl: enable NPOT textures on GLES3 contexts as per spec 2025-11-27 19:18:27 +05:00
Alibek Omarov 75339193d7 engine: client: remove vid_highdpi cvar, always allow high dpi mode 2025-11-25 15:06:46 +05:00
Alibek Omarov 07da038b4b engine: platform: sdl2: move dpi awareness hint set before SDL_Init, as documentation says it needs to be set before video init 2025-11-23 14:54:15 +05:00
Alibek Omarov a2b597577f engine: platform: sdl2: do not hide X11 hints under any platform macro 2025-11-23 14:50:51 +05:00
Alibek Omarov 9cf2d9fa86 engine: platform: sdl2: set up DPI awawareness on Windows through SDL hint 2025-11-23 14:50:12 +05:00
Alibek Omarov d45ced5c66 engine: platform: sdl2: when closest video mode isn't found, revert to desktop video mode 2025-11-23 12:50:54 +05:00
Alibek Omarov 6aadb4ceea engine: initialize default video mode in refState global, as we don't support reloading engine without reinitializing globals anyway 2025-11-23 11:54:33 +05:00
Alibek Omarov c956c65e33 ref: gl: don't misleadingly tell about enabled vsync on engine startup before configs are parsed 2025-11-23 11:45:47 +05:00
Alibek Omarov 86dfbc3e34 common: make bspfile.h use stdint types, reformat the file 2025-11-22 13:40:11 +05:00
Alibek Omarov 3fc59104f3 engine: make FS_CopyImage argument const 2025-11-22 13:11:41 +05:00
Alibek Omarov aae59ac281 engine: client: remove unused temppaintbuffer array 2025-11-22 13:11:18 +05:00
Alibek Omarov e8a2047d4c engine: client: use utility function to copy an image before quantization 2025-11-22 13:11:00 +05:00
Alibek Omarov 56972a811c readme: better wording [skip ci] 2025-11-19 14:47:47 +05:00
Alibek Omarov 27086bfb97 engine: set r_wadtextures and r_allow_wad3_luma as latched cvars, as those require reloading textures and thus the game 2025-11-18 15:38:25 +05:00
Alibek Omarov 93dfcc344b engine: implement loading luma in half-life 2025-11-18 15:35:20 +05:00
Alibek Omarov c2448c8881 engine: imagelib: allow specifiying index for empty pixels when processing luma texture 2025-11-18 15:35:20 +05:00
Alibek Omarov 26df99ae41 utils: xar: fix build 2025-11-18 15:35:20 +05:00
Marc-Antoine Lortieanda1batross 45cff25bbc readme: fix hlsdk-portable link 2025-11-18 08:48:27 +08:00
Alibek Omarov 5556668fc3 wscript: add option to disable rpath usage 2025-11-17 13:01:06 +05:00
Xav101anda1batross 1b28d183fc wscript: rework link flags on IRIX to handle GL and SDL linking correctly 2025-11-17 03:08:38 +08:00
Xav101anda1batross 15bbe9892e public: mathlib: add parenthesis to fix ambiguous order of operations 2025-11-17 03:08:38 +08:00
Xav101anda1batross 7236094421 platform: add missing include 2025-11-17 03:08:38 +08:00
Xav101anda1batross c85c6f80e0 platform: fix type in formatter string 2025-11-17 03:08:38 +08:00
Alibek Omarov dd7811e5bc filesystem: wscript: do not link library_suffix on PSVita 2025-11-16 18:46:08 +05:00
veygaxanda1batross 28c118a4e6 engine: zone: free poolchain on every iteration of Memory_Init
free poolchain when calling Memory_Init multiple times.

Fixes: memory leak when running run-fuzzer-Image_LoadBMP
Signed-off-by: veygax <veyga@veygax.dev>
2025-11-16 01:17:05 +08:00
49b0619c9a readme: update README.md for android build instruction (#2120)
* readme: update README.md for android build instruction

* Update Android build instructions in README

Corrected instructions for running in Android Studio and added a new section for building on Android.

---------

Co-authored-by: a1batross <a1ba.omarov@gmail.com>
2025-11-15 10:06:21 +05:00
veygaxanda1batross 0c3c6345e9 engine: imagelib: fix pixel iteration bounds checking on 1-bit BMPs
move 1-bit BMP bounds checking to the beginning of a loop to prevent a second iteration

Fixes: [GHSA-3p7j-2339-g5mm](https://github.com/FWGS/xash3d-fwgs/security/advisories/GHSA-3p7j-2339-g5mm)
Signed-off-by: veygax <veyga@veygax.dev>
2025-11-15 12:50:33 +08:00
Alibek Omarov 747baa1e16 engine: client: additionally look for loading images with bmp and png extensions 2025-11-13 22:01:55 +05:00
Alibek Omarov 2e5d2c1dcc 3rdparty: library_suffix: update 2025-11-12 20:28:04 +05:00
Alibek Omarov 300edb3318 engine: remember last resolved master server address for about a minute 2025-11-12 20:04:55 +05:00
Alibek Omarov 0dfeea5213 Migrate to library-suffix library 2025-11-11 06:59:41 +05:00
Alibek Omarov d9150734c9 3rdparty: add library_suffix subproject 2025-11-11 06:59:41 +05:00
Alibek Omarov 65514b73fd common: render_api: explicitly include stdint.h as we use intptr_t in the API 2025-11-11 06:22:43 +05:00
Alibek Omarov d366e04682 engine: client: voice: fix typo, sequence must be incremented after it's written to the buffer 2025-11-09 02:55:58 +05:00
ksagamenganda1batross 5151f9559b scripts: ios: Fix built hlsdk not working on older ios 2025-11-08 06:50:07 +08:00
Alibek Omarov 62c56b877f 3rdparty: mainui: update 2025-11-07 04:08:06 +05:00
Alibek Omarov 420a907776 wscript: silently ignore exception if --no-undefined is not in the linkflags list on darwin 2025-11-07 04:05:19 +05:00
Alibek Omarov 184e976c5d engine: call appropriate model loader on big endian 2025-11-06 23:37:27 +05:00
Alibek Omarov 6154e54661 wscript: fix a typo in -Wl,-undefined,error 2025-11-06 23:36:50 +05:00
Alibek Omarov 73950e867f filesystem: initial set of fixes for big endian 2025-11-06 23:26:12 +05:00
Alibek Omarov 822aa00bd6 wscript: replace --no-undefined with -undefined error for Darwin for compatibility with older linkers (tested on 10.4) 2025-11-06 21:51:09 +05:00
Alibek Omarov 681808ca3d 3rdparty: mainui: update 2025-11-06 20:06:52 +05:00
Alibek Omarov a0b40fc2da engine: common: explicitly cast function offset into size_t, even though it's signed ptrdiff, saverestore offset mistakingly used unsigned numbers 2025-11-06 20:06:51 +05:00
Alibek Omarov 955c5570d8 engine: client: voice: increment sequence before it's passed into LittleShort macro 2025-11-06 20:06:51 +05:00
Alibek Omarov 2094c72c95 engine: client: soundlib: use correct printf specifier for ptrdiff 2025-11-06 20:06:51 +05:00
Alibek Omarov 0795fe92fe public: build: allow older __ppc__ macro defined by GCC 4.0 (even though I probably won't support GCC 4.0) 2025-11-06 20:06:51 +05:00
Alibek Omarov 9ce131e6be engine: client: fix a typo 2025-11-06 23:06:33 +08:00
Alibek Omarov 08b718995c engine: client: restore reduced resend time for bandwidth test 2025-11-06 23:06:33 +08:00
Alibek Omarov 4900955fc1 engine: client: set cl_dlmax to FRAGMENT_DEFAULT_SIZE when connecting to an old server or server that test disabled 2025-11-06 23:06:33 +08:00
Alibek Omarov 9d00e52c42 engine: server: require challenge for bandwidth test 2025-11-06 23:06:33 +08:00
Alibek Omarov 6c2bad610f engine: client: request test packet only after we got challenge from server 2025-11-06 23:06:33 +08:00
Alibek Omarov 27c6004191 ci: disable freebsd-15 build due to bug with missing bzip2.pc 2025-11-05 09:13:45 +05:00
Alibek Omarov 500d385e6b ci: use macos-15-intel for x86 engine builds 2025-11-05 09:10:12 +05:00
Alibek Omarov 5739946330 engine: server: limit bandwidth test to max 1400 bytes 2025-11-03 19:28:59 +05:00
Alibek Omarov 8a94256558 public: fix build with C++ 2025-11-03 19:28:59 +05:00
ksagamenganda1batross a66774d65f ci: ios: Minor change 2025-11-03 04:36:59 +08:00
ksagamenganda1batross a9f159bae5 ci: ios: Implement suggestions and use hlsdk mobile_hacks 2025-11-03 04:36:59 +08:00
ksagamenganda1batross a6108b7930 ci: Add iOS builds 2025-11-03 04:36:59 +08:00
Alibek Omarov 43066656bd 3rdparty: restore submodules hash after last merge 2025-11-01 18:33:42 +05:00
ksagameng2andGitHub a9bf700da4 Restore iOS build support (#2352)
* initial commit

* initial commit

* add port files

* ios: Changes to allow creating app bundle without xcode projects

* ios: Added mic perms request

* ios: Very basic app bundle creation script

* ios: Fix -log parameter

* ios: Sdk no longer hardcoded and option to compile for simulator

* general: Update gitignore

* ios: Enable game mode for the app

* ios: Compile instructions and updated ipa creation script

* ios: Code cleanup

* ios: Remove dylibs

* general: Remove extra submodules

* ios: Remove dylibs again

* ios: Implement suggested changes

* ios: Fix building as dylib instead of binary

* ios: Scripts for building mods

* ios: Move 'ios' contents to engine/platform/ios/bundle and modify scripts

* ios: Update createipa.sh to use waf install

* ios: Clean script and updated README

* general: Fix spelling mistake and outdated instructions

* ios: Clean up in xcompile.py

* ios: Fix createipa.sh generating an invalid ipa

* ios: Temporary fix for launch dialog textfield colors in dark mode
2025-11-01 18:32:00 +05:00
Sergey Degtyaranda1batross ee7dce68b8 engine: client: streamline samples handling 2025-11-01 21:24:49 +08:00
Alibek Omarov a14cc82d46 engine: add buffer size argument to RefAPI's Mod_ProcessRenderData, bump RefAPI version 2025-10-31 15:58:05 +05:00
Alibek Omarov b3dc772cd2 engine: add file size argument to sprite model loader 2025-10-31 15:56:31 +05:00
Alibek Omarov 9bb9575c6d ci: update freebsd dependencies package list 2025-10-31 12:31:07 +05:00
Alibek Omarov 359cc9b1e7 security: add a security policy 2025-10-30 17:43:01 +05:00
Alibek Omarov 6a9f61e69f engine: soundlib: ignore TXXX tags that's size exceeds 255 (sizeof( string ) - 1) bytes to account for null terminator
Thanks @veygax for the report!
2025-10-30 17:31:11 +05:00
Alibek Omarov 21ea83027e engine: imagelib: fix buffer overflow when the amount of colors in palette reported by BMP header are higher than 256
Thanks to @veygax for report!
2025-10-30 17:30:02 +05:00
Alibek Omarov f22a50b680 3rdparty: update maintui and mainui 2025-10-24 14:30:59 +05:00
Alibek Omarov 7217c7f1b2 engine: client: deprecate and remove all code associated with linear/cubic upsampling 2025-10-23 14:56:50 +05:00
Alibek Omarov cfb8e0882a Revert "engine: client: fixed blueish outline on sprays converted to WAD3"
This reverts commit a5f7314ec9.
2025-10-20 07:47:58 +05:00
Alibek Omarov f1fde32c29 Drop legacy AuroraOS code 2025-10-19 07:39:47 +05:00
Alibek Omarov c6a5c64448 engine: client: touch: implement rotation support 2025-10-19 05:35:28 +03:00
Alibek Omarov b8f0a89846 engine: client: validate vid_rotate cvar value and save current rotation to ref global 2025-10-19 06:27:10 +05:00
Alibek Omarov 684f7fb75e ref: gl: implement rotation for 3D 2025-10-19 06:26:28 +05:00
Alibek Omarov 4dabb5d1f9 ref: gl: implement rotation for 2D 2025-10-19 06:25:43 +05:00
Alibek Omarov ea2c864265 engine: server: don't pass uninitialized pointers to the server DLL in SetupVisibility function 2025-10-17 14:54:52 +05:00
Alibek Omarov 7315865d34 engine: client: include null byte in synthetised HudText messages, to match real HudText messages sent from server 2025-10-17 14:07:48 +05:00
Alibek Omarov 6d987d083e android: delete .nomedia if it's a directory 2025-10-17 15:58:59 +08:00
Alibek Omarov 6e9edcdd50 android: try to automatically create .nomedia file in directory where games are located 2025-10-17 15:58:59 +08:00
Alibek Omarov 7a02110a42 ref: gl: fix out of bounds access
On GPUs where GL_ARB_shading_language_100 isn't available (i.e. all mobile GPUs
I believe) this function would return total amount of texture units available.

But ref_gl only tracks and uses MAX_TEXTURE_UNITS texture units, causing memory
corruption in functions that doesn't check the limit.
2025-10-17 09:19:23 +05:00
Alibek Omarov 9330e44817 filesystem: fix missing newline in anonymous file creation error string. Turn it into a warning, because it's not fatal 2025-10-17 09:08:50 +05:00
Alibek Omarov 5d7cb90bea ref: gl: use our own matrix functions to create 2D projection and modelview matrices 2025-10-17 09:08:50 +05:00
Alibek Omarov a7b466e4a9 scripts: gha: try to update vitaGL 2025-10-16 08:12:13 +08:00
Alibek Omarov 4c7e37d5fd engine: few more cases of missing newline in Cbuf_AddText that I forgot to include in previous commit 2025-10-16 04:57:04 +05:00
Alibek Omarov d8dcfc0ab3 engine: add \n to all Cbuf_AddText calls 2025-10-16 04:36:38 +05:00
Alibek Omarov fb56873352 engine: client: increase lower cl_dlmax bound to 512 for goldsrc protocol 2025-10-16 01:21:30 +05:00
Alibek Omarov 8c4ef5200c engine: client: drop unknown interpolation hack, that might've caused hiccups when prediction fails 2025-10-16 01:21:30 +05:00
SNMetamorphanda1batross a5f7314ec9 engine: client: fixed blueish outline on sprays converted to WAD3 2025-10-12 20:58:56 +08:00
Alibek Omarov 4f444ee6ea engine: client: for goldsrc status messages, always mark them of goldsrc protocol 2025-10-12 04:14:37 +05:00
Alibek Omarov 651d6a4529 engine: client: remove useless messages in console about scanned servers 2025-10-12 04:12:43 +05:00
lewa_j 851b3d6d70 utils: mdldec: move XASH_WIN32 check after it is defined in build.h 2025-10-11 20:38:06 +03:00
lewa_j 5c0cc771bc engine: win32: fix msvc warning "'LPSTR' differs in levels of indirection from 'string (*)'" with GetConsoleTitleA 2025-10-11 20:22:37 +03:00
lewa_j acebb5b0cf engine: client: fix msvc warning "incompatible types - from 'STARTUPINFO *' to 'LPSTARTUPINFOW'" 2025-10-11 20:22:34 +03:00
lewa_j 5f707e37b1 utils: xar: Fix windows build with -Werror=implicit-function-declaration 2025-10-11 20:22:29 +03:00
Alibek Omarov af585fec08 utils: mdldec: fix build with implicit function declaration on MSVC 2025-10-11 21:23:49 +05:00
lewa_janda1batross 37e9ac453b win32: engine: common: client: filesystem: Fix windows build with -Werror=implicit-function-declaration 2025-10-12 00:21:00 +08:00
lewa_janda1batross 7bb630db2a wscript: -Werror=implicit-function-declaration analog for msvc 2025-10-12 00:21:00 +08:00
Alibek Omarov 0e22e8aa76 wscript: disable declaration-after-statement, we don't need it anymore 2025-10-11 20:58:48 +05:00
Alibek Omarov 492a1cda18 engine: client: treat A button on gamepad the same as Enter in On Screen Keyboard 2025-10-11 06:04:40 +05:00
Alibek Omarov 01a1c2f496 engine: client: add ability to build engine without touch input support 2025-10-11 05:58:14 +05:00
Alibek Omarov cf23005ff2 engine: client: remove comments of touch init/shutdown function call that seem to be some indescribable legacy 2025-10-11 05:52:19 +05:00
Alibek Omarov 5ff640b142 engine: client: manually mark entity and model index validation branches are unlikely 2025-10-11 05:48:42 +05:00
Alibek Omarov 6c3ae914fa common: add PSP platform definitions 2025-10-11 05:45:03 +05:00
Alibek Omarov 654d7013c6 public: add PSP definitions 2025-10-09 22:32:30 +05:00
Alibek Omarov 4d300e9d30 scripts: waifulib: xcompile: add PSP compiling tools 2025-10-09 22:32:30 +05:00
SNMetamorphanda1batross 51a9524465 engine: client: fixed incorrect xashid generation on windows platform 2025-10-10 01:29:57 +08:00
Alibek Omarov 6817df534b engine: console: don't try to process input while printing messages to console, this only was needed in OG Xash where it directly called Win32 APIs 2025-10-09 19:27:29 +05:00
Alibek Omarov 1c8e51c9f9 common: port: always include unistd.h for POSIX systems 2025-10-08 05:28:16 +05:00
Alibek Omarov 8d7ee70e7d engine: platform: android: include dlfcn.h for Android's LoadLibrary implementation 2025-10-08 05:27:53 +05:00
Alibek Omarov 0c08f113ea engine: platform: sdl2: add vrtld.h include for GL_GetProcAddress implementation 2025-10-08 05:24:59 +05:00
Alibek Omarov 8022c4826f engine: platform: sdl2: remove legacy eglGetProcAddress hack for old SDL2 versions 2025-10-08 05:24:16 +05:00
Alibek Omarov 0efe65a5bc utils: mdldec: define local mkdir macro 2025-10-08 05:19:19 +05:00
Alibek Omarov ccbb3a2841 engine: fix format error when building tests on 64-bit platforms 2025-10-08 05:08:48 +05:00
Alibek Omarov 3d132e0e83 common: port: move filesystem related macros to filesystem module, try to include less globally for faster builds 2025-10-08 05:03:29 +05:00
Alibek Omarov 0a5a081a9d engine: client: touch: forcefully disable edit mode when setclientonly was called 2025-10-08 05:02:08 +05:00
Alibek Omarov d16ef9bf2a common: xash3d_types: refactoring 2025-10-08 05:02:08 +05:00
Alibek Omarov 748c35d5ef Remove _inline macro, as it's nonstandard way to define inline functions. 2025-10-08 03:53:37 +05:00
Alibek Omarov a1d3b7d65f Remove STDINT_H macro, use stdint.h directly. Compilers and platforms that do not have this header shall provide them on their own. 2025-10-08 03:53:37 +05:00
Alibek Omarov 1834bd6076 Documentation: protocol: fix groups, regenerate toc 2025-10-05 10:20:30 +05:00
Alibek Omarov abde9d30c6 Documentation: protocol: add Table of Contents to connectionless protocol documentation 2025-10-05 10:09:30 +05:00
Alibek Omarov 64adb3e3d7 engine: rename MS_SCAN_REQUEST to A2M_SCAN_REQUEST 2025-10-05 10:04:18 +05:00
Alibek Omarov b4e83ca7fd Documentation: document connectionless messages 2025-10-05 10:03:55 +05:00
Alibek Omarov 3efbe205ac engine: define server-to-master requests in protocol.h 2025-10-05 09:28:11 +05:00
Alibek Omarov 55a86e1df3 engine: server: tell master server if server protected with password 2025-10-05 09:26:41 +05:00
Alibek Omarov 712c1e2f95 engine: fix send state of master servers being cleared twice 2025-10-04 00:14:58 +05:00
Alibek Omarov 6d7bfc37f6 engine: allow loading xashcomm.lst from base directory 2025-10-03 22:45:50 +05:00
Alibek Omarov 8e7a2abec5 scripts: waifulib: compiler_optimizations: always lower case build type 2025-10-03 22:05:47 +05:00
Alibek Omarov cc5f95d1ca engine: support querying legacy goldsrc master servers
* General refactoring, hide out of band messages under cl_log_outofband cvar, similar to sv_log_outofband.
2025-10-03 21:54:59 +05:00
SNMetamorphanda1batross 62a49d234f engine: client: improved compatibility with GoldSrc-based clients behavior (thanks @Garey27) 2025-10-03 21:34:03 +08:00
Alibek Omarov 8b55d01f78 filesystem: fix missing const qualifier on FS_WriteGameInfo 2025-10-03 17:41:34 +08:00
Alibek Omarov 1d7690f280 engine: client: remove unused cbtrim and samplefrac fields from voxword_t 2025-10-03 00:04:04 +05:00
Alibek Omarov 4ef23543ae filesystem: make current set GameInfo const 2025-10-02 22:42:51 +05:00
Alibek Omarov a366f99d7d engine: client: do not modify internal_vgui_support field as game info must be immutable once loaded 2025-10-02 22:42:20 +05:00
Alibek Omarov 8c2c920076 engine: client: fill screen with black before rendering video 2025-10-02 22:41:27 +05:00
Alibek Omarov 338636092f 3rdparty: mainui: update 2025-10-02 19:40:31 +05:00
Alibek Omarov e8d8d90b39 engine: ref_api: fix typo in the comment (thanks @lewa_j) 2025-10-02 19:21:39 +05:00
Alibek Omarov cb7094bb2d engine: move setjmp for exit-in-main to the beginning of Host_Main function 2025-10-02 18:42:09 +05:00
Alibek Omarov d9567ff3f9 engine: cleanup unused glw_state fields, as they only used in GL renderer 2025-10-02 18:07:39 +05:00
Alibek Omarov 3d0533ad84 wscript: fix a typo in -Wuninitialized (thanks @lewa_j) 2025-10-02 18:03:20 +05:00
Alibek Omarov 153b04abc3 engine: move crash handler initialization after console, so error messages could be seen in console, but move log creation before console, so log catches more messages 2025-10-02 05:40:58 +08:00
Alibek Omarov 25bfbd3a6b 3rdparty: libbacktrace: wscript: fix config defines not being set 2025-10-02 05:16:59 +08:00
Alibek Omarov 5015c90fd0 engine: platform: posix: try to be more safe in crash handler, no need to fflush stderr, no need to call Msg if we already writing to log file directly, preserve replaced signal actions 2025-10-02 03:49:31 +08:00
Alibek Omarov e830472010 engine: move update page checks from platform-specific ShellExecute implementation to gameui call (platform_update_page isn't fully used yet, might get on Android some time later) 2025-10-02 03:16:07 +08:00
Alibek Omarov 04f807ef2f engine: platform: android: tell JVM that we don't need these strings anymore, it wouldn't hurt 2025-10-02 03:15:19 +08:00
Alibek Omarov 55d50e2815 filesystem: explicitly tell JVM that we're done with some objects 2025-10-02 02:42:32 +08:00
Alibek Omarov 7266c5469a ci: upgrade to latest SDL2 release 2025-10-01 17:22:06 +08:00
Alibek Omarov 47d181aa92 scripts: gha: always build tarball with engine even if AppImage port is available 2025-10-01 14:53:27 +08:00
Alibek Omarov dce3d9d517 3rdparty: mainui: update 2025-09-29 04:38:36 +05:00
Alibek Omarov e5a5804ff5 3rdparty: mainui: update 2025-09-29 03:19:49 +05:00
Alibek Omarov 821e5d7bd7 engine: client: avi: fix build with ffmpeg with disabled dynamic linking 2025-09-29 03:19:38 +05:00
Alibek Omarov 52978df139 engine: platform: posix: replace Sys_FindExecutable by standard library execvp 2025-09-29 00:35:28 +05:00
Alibek Omarov 9aab12fc27 engine: remove global no async resolve switch, platforms that do not support it shall add stubs to engine/platform 2025-09-29 00:12:37 +05:00
Alibek Omarov e83ab95279 engine: gethostbyname() is deprecated, remove it and always prefer getaddrinfo 2025-09-29 00:09:56 +05:00
Alibek Omarov 7c0045a3b7 engine: show -noavi and -nointro options help everywhere, as we now have crossplatform video playback 2025-09-29 00:07:21 +05:00
Alibek Omarov 1f88e0465d engine: make Host_ExitInMain used everywhere, as we depend on sjlj functions on all platforms anyway 2025-09-29 00:06:41 +05:00
Alibek Omarov cee1e74872 engine: drop dllemu glue, as it won't build with current engine anyway and not supported by it's author :( 2025-09-29 00:01:59 +05:00
Alibek Omarov 1f124bad9d engine: client: remove archive flag from cl_trace_* message that was added by mistake 2025-09-28 23:00:35 +05:00
Alibek Omarov 71cec3c069 engine: activate fakelag when both cheats and dev-mode are enabled 2025-09-28 22:50:51 +05:00
Alibek Omarov 69204aec07 engine: client: synchronize sv_cheats state with the server 2025-09-28 22:32:41 +05:00
Alibek Omarov 8b65cd73fc engine: server: advertise sv_cheats state during connect 2025-09-28 22:15:26 +05:00
Alibek Omarov 7ba0818b83 engine: client: change r_pvs_radius default value to 0.1 for more accurate pvs culling and free performance 2025-09-28 18:32:53 +05:00
Alibek Omarov cb81303ded engine: replace hardcoded pvs radius value by a r_pvs_radius cvar 2025-09-28 18:31:03 +05:00
Alibek Omarov 1b1cff1cae engine: server: allow sending logs to remote server without log on to match GoldSrc behavior 2025-09-25 16:29:32 +05:00
Alibek Omarov 53bf302868 3rdparty: mainui: update 2025-09-25 15:41:47 +05:00
Alibek Omarov ef70530226 scripts: waifulib: compiler_optimizations: automatically enable xtheadvector extension on C910 (like T-Head TH1520) 2025-09-25 11:07:49 +08:00
lewa_j d073218df0 3rdparty: mainui: update 2025-09-22 13:31:27 +03:00
Alibek Omarov 40ce6c0069 3rdparty: maintui: update 2025-09-22 09:25:54 +05:00
Alibek Omarov 3c4c6e5a1c 3rdparty: mainui: update 2025-09-22 09:25:33 +05:00
Alibek Omarov 2e852e4398 scripts: flatpak: better message for missing GL32 extension 2025-09-21 01:25:14 +05:00
Alibek Omarov 04dee4e94d scripts: flatpak: add more guardrails just in case if 32-bit runtime missing 2025-09-21 00:18:43 +05:00
Alibek Omarov 96557c2ca6 engine: server: clarify sv_fps cvar usage 2025-09-19 15:56:58 +05:00
Alibek Omarov bf32c49a39 engine: server: disable sv_fps cvar on dedicated, users shall use sys_ticrate 2025-09-19 15:56:58 +05:00
Alibek Omarov 9becba3bc0 android: automatically load default libraries for known gamedirs, supported by mobile_hacks branch 2025-09-19 09:24:08 +05:00
Alibek Omarov c177be0dd8 engine: move our HTTP client to http subfolder, prepare for curl integration 2025-09-19 09:15:17 +05:00
Alibek Omarov a5ff9b1c84 gha: don't forget to checkout before calling release script from the repo 2025-09-19 07:25:02 +05:00
Alibek Omarov fe9e68ed24 scripts: flatpak: bump freedesktop sdk to 25.08 2025-09-18 10:15:33 +05:00
Alibek Omarov 2106260238 scripts: gha: set make_release.sh to be executable 2025-09-18 10:10:50 +05:00
Alibek Omarov eed1d26191 engine: client: avi: be more verbose about incompatible ffmpeg libs versions in build-time 2025-09-17 12:47:09 +05:00
Alibek Omarov 6115ef0821 gha: move release commands into it's own script 2025-09-17 12:46:35 +05:00
Marc-Antoine Lortieanda1batross a63db5f31d Add backslash before apostrophes. 2025-09-16 04:34:54 +05:00
Marc-Antoine Lortieanda1batross 2553bd7f37 Android: Add French translation. 2025-09-16 04:34:54 +05:00
Alibek Omarov 2da0db4a31 engine: client: refactor connection to the server, always send bandwidth test and challenge from single function 2025-09-15 13:03:22 +05:00
Drive Kinghtanda1batross 5fc104c6a4 android: add Chinese translation 2025-09-12 16:27:24 +05:00
Alibek Omarov 39066bf82b 3rdparty: mainui: update 2025-09-11 08:06:11 +05:00
Alibek Omarov 03192be245 engine: server: actually register new cvars =/ 2025-09-10 17:52:37 +05:00
Alibek Omarov b59ba5a127 engine: server: make automatic ban of players stuck in connect loop optional and make ban time configurable 2025-09-09 14:55:22 +05:00
LekKitandGitHub c399611fc7 Merge branch 'master' into master 2025-09-09 09:45:06 +03:00
Sergey Degtyaranda1batross ccc44f3c5f engine: voice: fix voice loopback bit 2025-09-09 01:19:27 +05:00
Alibek Omarov b2f4d84272 engine: client: give server a bit more time to reply to bandwidth test 2025-09-08 21:19:53 +05:00
Alibek Omarov 97b8fa74a7 3rdparty: mainui: update 2025-09-07 23:29:16 +05:00
Alibek Omarov c679037085 ref: gl: fix -Wformat error on 64-bit platforms 2025-09-07 01:56:54 +05:00
Alibek Omarov 793de9ec3e engine: move clc_strings definition to net_buffer, alongside svc_strings 2025-09-06 04:58:34 +05:00
Alibek Omarov ccff8191dd engine: server: increase sv_connect_timeout to 60 by request 2025-09-06 04:50:34 +05:00
Alibek Omarov d039a08b4e ref: gl: fix up data types. Engine TMU type is int, rather than GLint, and texture indices are technically unsigned int only (and they aren't GLenum) 2025-09-06 01:57:36 +05:00
Alibek Omarov c0e8827cd5 ref: gl: refactoring, use bitset macros, use static for global objects 2025-09-06 01:57:36 +05:00
Alibek Omarov 11f976d9e9 ref: gl: simplify r_speeds, get rid of R_Speeds_Printf in favor using Q_snprintf directly 2025-09-06 01:31:53 +05:00
Alibek Omarov 7c83aafbf5 ref: gl: fix incorrect usage of GL_Bind in R_ShowTextures (it accepts engine's texture id, not opengl texture name) 2025-09-06 01:26:43 +05:00
Alibek Omarov 699e178f62 ref: gl: remove excessive ASSERT macro, use Assert everywhere 2025-09-06 00:41:48 +05:00
Alibek Omarov 598d756af1 engine: platform: sdl2: hide SDL log messages under -dev 2, as they're often misleading for everybody except engine developers 2025-09-05 18:20:12 +05:00
Alibek Omarov c2e2686b6a engine: voice: send disabled voice status when raw chan is exhausted, also send enabled status only when we have something to play
And other minor refactorings.
2025-09-03 04:20:22 +05:00
Alibek Omarov 9df2b8f1fb engine: server: refactor SV_ParseVoiceData 2025-09-03 03:52:44 +05:00
Alibek Omarov 1ba45bde13 engine: server: fix voice block inverted logic, instead of checking the player's we're sending listeners list, check current player 2025-09-03 03:51:15 +05:00
Alibek Omarov 5106ebae58 engine: voice: fix local player server ack'ed message 2025-09-03 03:40:15 +05:00
Alibek Omarov 6b6bf7e458 Revert "engine: voice: unconditionally notify client.dll about talking player if we received the data"
This reverts commit 9fda7a15cb.
2025-09-03 03:30:24 +05:00
Alibek Omarov 2daaa94666 engine: voice: fix voice loopback on GoldSrc proto 2025-09-03 03:07:36 +05:00
Alibek Omarov b129ed8f76 engine: voice: fix another off-by-one error, to fix server's ack status of local player talking 2025-09-03 03:01:49 +05:00
Alibek Omarov 9fda7a15cb engine: voice: unconditionally notify client.dll about talking player if we received the data 2025-09-03 02:23:54 +05:00
Alibek Omarov e38dc29411 3rdparty: mainui: update 2025-09-02 22:30:57 +05:00
Alibek Omarov 7e3dc39cdd engine: similar to other config saving functions, print when vfs.cfg is being saved 2025-09-01 01:46:27 +05:00
Alibek Omarov 9c6589fa03 engine: introduce vfs.cfg to properly control user set addon folders
vfs.cfg executed before game directory is mounted, this way we can know which
folders must be mounted before engine initialization.

This commit also removes buggy hot reload of the addon folders.
2025-09-01 01:42:37 +05:00
Alibek Omarov 5e53ccab55 waf: update to latest waifu 2025-08-31 12:30:25 +05:00
Alibek Omarov 42b0a9a13d scripts: gha: copy SDL library with all symlinks to it 2025-08-30 21:46:39 +05:00
Alibek Omarov b504876646 3rdparty: maintui: update 2025-08-30 21:24:48 +05:00
Alibek Omarov a0a0d58be5 engine: client: unify quality options between Xash and GoldSrc protocol (lowering overall bitrate for Xash servers, which might help overcome default rate limitations) 2025-08-30 19:32:50 +05:00
Alibek Omarov 03571f831e 3rdparty: vgui_support: update 2025-08-30 19:32:50 +05:00
Alibek Omarov 83fe4d6c59 ref: gl: mark gl_frustum_t pointer as const in frustum culling functions 2025-08-30 19:32:50 +05:00
Davidanda1batross a83c483616 ndroid: add Spanish translation by @MBM711 2025-08-27 21:44:51 +05:00
Alibek Omarov 4c0931cc89 engine: fix loading mods on Linux that have Intel architecture suffix, like ag_i386.so 2025-08-27 16:12:21 +05:00
Alibek Omarov e52c46ec5e engine: imagelib: rename mips variable to mipmaps, to avoid clash with some MIPS compilers
While here, reduce some variables scope.
2025-08-25 11:37:14 +05:00
Alibek Omarov dd967ffa75 3rdparty: update mainui_cpp and maintui 2025-08-25 11:32:03 +05:00
Владислав Суховanda1batross 6474e07472 android: update russian strings 2025-08-22 21:39:53 +05:00
Владислав Суховanda1batross dc1e39264b Documentation: donate: add new donation info 2025-08-22 13:36:35 +05:00
Alibek Omarov 74b196d2c3 ref: gl: do not apply multisampling when drawing 2D 2025-08-17 23:43:53 +05:00
Andrey Akhmichinanda1batross 4f9eb9f229 Documentation: opensource-mods.md: add Crack-Life. 2025-08-17 22:25:12 +05:00
Menino DavidandGitHub 31c5ed69a7 android: update Brazilian Portuguese translation 2025-08-17 22:25:02 +05:00
Andrey Akhmichinanda1batross 6e00e6c34c Documentation: supported-mod-list.md: add Crack-Life. 2025-08-17 22:23:16 +05:00
Eoin O'NeillandGitHub 9df725f1e9 readme: use SDL3 with sdl2-compat on Fedora/RedHat
SDL2 is no longer available directly on Fedora as of Fedora 42.
I believe this should also be true on RedHat EL but I'd like feedback
there.
2025-08-16 14:42:45 +05:00
Bohdan Shulyaranda1batross f0720026fc engine: client: touch: don't reset state if clientonly didn't change 2025-08-13 20:51:10 +05:00
Alibek Omarov 6b4a16b337 engine: client: do not cause assertion when using voice chat when sound is disabled or failed to initialize 2025-08-13 19:32:33 +05:00
Alibek Omarov f12ef07c02 engine: whereami: add support for GNU/Hurd 2025-08-13 17:02:22 +05:00
Alibek Omarov 59d771c4e4 public: add definitions for GNU/Hurd 2025-08-13 16:45:53 +05:00
Bohdan Shulyaranda1batross e716290523 android: add runtime permissions for older android versions 2025-08-13 15:43:18 +05:00
Alibek Omarov 3ca168b329 android: set requestLegacyExternalStorage specifically for Android 10 which didn't had MANAGE_EXTERNAL_STORAGE yet 2025-08-12 13:43:02 +05:00
Alibek Omarov 4f45df2293 engine: imagelib: add missing argument name, so it compilers with old C standards compliant compilers 2025-08-11 20:50:03 +05:00
Alibek Omarov af0d77caf7 filesystem: android: more verbosity when mounting assets on Android fails 2025-08-11 18:49:26 +05:00
Alibek Omarov 3a6862f278 engine: when specifying server dll name with an @ (give that feature a name please), actually look for it in server dlls folder 2025-08-11 18:44:12 +05:00
Alibek Omarov 2ad482ee2f engine: platform: android: add some verbosity when successfully loading libraries on Android (hidden under -dev 2) 2025-08-11 18:36:44 +05:00
Alibek Omarov be0d31f408 engine: imagelib: try to use FS_Search to bruteforce through supported image formats 2025-08-08 18:14:46 +05:00
Alibek Omarov 7c8e2a598f android: restore su.xash.engine.MOD action intent filter 2025-08-08 17:49:30 +05:00
Alibek Omarov 820a001ced engine: move prepending lib prefix on Android earlier, when the path is constructed 2025-08-08 17:03:56 +05:00
Alibek Omarov a5b68c5ed9 public: remove unused global 2025-08-08 17:01:35 +05:00
Alibek Omarov f37738f6f8 android: set useLegacyPackaging to true, disable noCompress 2025-08-08 16:16:35 +05:00
Alibek Omarov 4cc009ac3e engine: always prepend lib on Android, as it's part of library naming scheme now 2025-08-08 16:16:05 +05:00
Alibek Omarov 5100125fef Documentation: extensions: library-naming: add a note about distributing Android game libraries 2025-08-08 16:13:48 +05:00
Alibek Omarov 1c0d145874 filesystem: restore lib prefix on Android, otherwise Android won't unpack the libraries 2025-08-08 16:00:03 +05:00
Alibek Omarov 0e48f57247 3rdparty: mainui: update 2025-08-05 19:04:33 +05:00
Alibek Omarov f9ec8f0b85 wscript: disable {gcc,msvc}deps with wafcache enabled 2025-08-05 19:03:53 +05:00
Alibek Omarov a4614a00e9 engine: move android logging category from debug to info 2025-08-05 19:03:53 +05:00
Bohdan Shulyaranda1batross 0ba45d343e host: common: switch host_writeconfig to direct function call 2025-08-05 01:31:21 +05:00
Bohdan Shulyaranda1batross 2c26601bee engine: common: add a host_writeconfig console command 2025-08-05 01:31:21 +05:00
Alibek Omarov 10ada3c141 Revert "scripts: gha: temporarily switch hlsdk-portable branch to android_library_naming for testing"
This reverts commit c1c0c2761d.
2025-08-04 10:39:04 +05:00
Alibek Omarov 4912e84d46 android: enable x86 and x86_64 abis back 2025-08-04 10:38:59 +05:00
Alibek Omarov 81c7ef20eb filesystem: android: use commit date as android assets file time 2025-08-04 10:25:42 +05:00
Alibek Omarov ac22de84bf public: remove Q_buildnum generated from __DATE__ macro, as we rely only on Git now 2025-08-04 10:25:42 +05:00
Alibek Omarov 70f6480a5f engine: add a shortcut for loading custom DLLs that follow library naming scheme (like bots) 2025-08-03 19:01:56 +05:00
Alibek Omarov 95bfb7cdf2 scripts: build-ninja: add support for installing libraries with cmake, compared to yanking them out of build directory
Set up hlsdk-portable to install in APK style directory (omitting game and game library directories from path).
Minor refactoring.
2025-08-03 19:01:56 +05:00
Alibek Omarov b22186b2f1 engine: platform: android: strip library path when loading libraries from APK 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross 70e53f547b android: add some simple run instructions 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross 8047f8177b android: add some simple docs 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross 95bf2f03ad android: bump deps 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross ca6de641a1 android: experimental ninja build 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross bb811310d2 android: fix weird acra build error 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross cd881c079b android: don't generate x86 libraries for now 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross 2319d4caf9 android: bump gradle 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross ac412fc15e android: add a (not working yet) basedir option 2025-08-03 19:01:56 +05:00
Bohdan Shulyaranda1batross 4f7a216191 android: update codebase to use java File API 2025-08-03 19:01:56 +05:00
Velaronanda1batross d87cdd7ff8 android: reformat codebase 2025-08-03 19:01:56 +05:00
Velaronanda1batross 2c53cc7e70 android: upgrade buildsystem 2025-08-03 19:01:56 +05:00
Velaronanda1batross b7bb81fbe7 android: remove DocumentsProvider 2025-08-03 19:01:56 +05:00
Velaronanda1batross a767540a2b android: remove currently unused or invalid resources 2025-08-03 19:01:56 +05:00
Alibek Omarov f1251e8767 engine: platform: android: do not automatically prepend lib prefix 2025-08-03 19:01:56 +05:00
Alibek Omarov c1c0c2761d scripts: gha: temporarily switch hlsdk-portable branch to android_library_naming for testing 2025-08-03 19:01:56 +05:00
Alibek Omarov c69a87fa89 filesystem: wscript: strip lib prefix on Android 2025-08-03 19:01:56 +05:00
Alibek Omarov bf7f952d0e defaults: disable INTERNAL_GAMELIBS for Android 2025-08-03 19:01:56 +05:00
Alibek Omarov 6aecc45ce1 engine: platform: include errno.h globally, it's defined by the C standard, so should be available everywhere 2025-08-03 10:27:36 +05:00
Alibek Omarov bfc10a732a engine: register forgotten ui_language cvar, so changing language actually works (thanks @Alivebyte on GitHub\!) 2025-08-03 10:23:31 +05:00
Alibek Omarov 67d1536127 public: rename rsqrt to Q_rsqrt due to weird collision with tgmath.h macro
It was reported on Discord with no additional information attached. But I guess
it might be better to prefix our math- and crtlib functions in general.
2025-08-03 10:20:52 +05:00
Alibek Omarov 56db9f73d8 engine: platform: ignore nanosleep EINTR error, otherwise sleeptime will never use nanosleep again 2025-08-03 10:18:29 +05:00
lewa_janda1batross 250d425b34 engine: platform: sdl2: use -egl to force EGL on windows, same as on other platforms 2025-08-03 08:21:14 +05:00
lewa_janda1batross 99140fc7df engine: platform: sdl2: Allow SDL to use wgl to create gles context, if it can 2025-08-03 08:21:14 +05:00
Alibek Omarov 2557d5acaa 3rdparty: opus: limit assembly to SSE and SSE2
Otherwise whole engine builds with SSE4.1 and AVX support with LTO enabled. =/
2025-08-03 04:34:46 +05:00
lewa_j b14a1b664f engine: platform: sdl2: Fix uninitialized read introduces in 7fda58561f 2025-08-02 17:59:26 +03:00
Alibek Omarov 56361b52e7 3rdparty: opus: enable platform optimized code (x86 SSE/AVX with runtime detection and NEON on ARM)
Along that enable hardening and check for C99 lrintf (probably can do the same in the engine at some point).
2025-08-02 12:27:26 +05:00
Alibek Omarov da1b9ad80d scripts: waifulib: xcompile: enable cross compilation automatically if CROSS_COMPILE environment variable is set 2025-07-31 03:17:39 +05:00
Alibek Omarov aec1213319 scripts: waifulib: xcompile: fix NDK 28 minimal API version 2025-07-31 03:17:39 +05:00
Alibek Omarov cb4540a877 engine: platform: android: call SDL_OpenURL only if XASH_SDL was defined during build. Remove version check, as Android always builds with latest SDL version. 2025-07-30 23:33:08 +05:00
Alibek Omarov 613768c3f9 wscript: add experimental option to enable wafcache [skip ci] 2025-07-30 21:07:45 +05:00
Alibek Omarov 234a16d611 scripts: waifulib: xcompile: add support for kbuild-style CROSS_COMPILE environment variable [skip ci] 2025-07-30 21:06:32 +05:00
Alibek Omarov e468371394 3rdparty: libbacktrace: similarly, use C compiler for multicheck tests, as this is a C project 2025-07-29 21:42:40 +05:00
Alibek Omarov 671157ee20 public: wscript: set compiler for tests using compiler key instead of directly setting up features, otherwise it won't add uselib 2025-07-29 21:42:02 +05:00
Alibek Omarov 4398de1dab public: wscript: explicitly set language for libc tests in multicheck, as Waf chooses C++ by default
Compiling tgmath.h test with C++ compiler causes misdetection on PSVita which has broken tgmath.h support.
2025-07-29 20:41:59 +05:00
Alibek Omarov dc09cf0c39 public: fix incorrect logic where libc extension defines were exported without an actual check 2025-07-29 11:31:45 +05:00
Alibek Omarov f4854dbcde public: wscript: parallelize libc extension checks for faster reconfigure 2025-07-29 08:57:57 +05:00
Alibek Omarov 25e206f5ae engine: platform: posix: remove old crashhandler as libbacktrace supports much more targets, remove duplicated code around execinfo and libbacktrace-based crashhandlers
Update copyright headers.
2025-07-29 08:14:06 +05:00
Andrey Akhmichinanda1batross b3d3a15c3d utils: mdldec: bump version to 1.2.1. 2025-07-27 22:02:59 +05:00
Andrey Akhmichinanda1batross 92faa25670 utils: mdldec: add support for absolute paths on *nix. 2025-07-27 22:02:59 +05:00
lewa_janda1batross 3eed2769d5 ref: wscript: gl4es fix typo 2025-07-27 16:27:55 +05:00
lewa_janda1batross 6302553ee4 ref: update nanogl and wes submodules 2025-07-27 16:27:55 +05:00
lewa_janda1batross ae2808dff7 ref: gles3compat: Fix crashes on stubs under windows, probably due to signature missmatch 2025-07-27 16:27:55 +05:00
lewa_janda1batross af69df15e1 ref: Fix gl4es build under windows. Static gl functions declared with APIENTRY even without mangling. 2025-07-27 16:27:55 +05:00
lewa_janda1batross 98e4aae6bb ref: wscript: Fix gl4es invalid build flags under msvc 2025-07-27 16:27:55 +05:00
Sergey Degtyaranda1batross 3e921c829f engine: client: fix CL_DrawCenterPrint aligment for cyrillic text 2025-07-26 19:57:23 +05:00
Sergey DegtyarandAlibek Omarov e994cc0c8b engine: client: adjust SPRAY_ALPHA_THRESHOLD 2025-07-25 02:32:40 +05:00
Alibek Omarov cd26b1f279 engine: imagelib: img_quant: reduce used colors from 256 to 255, so last color in palette can be reserved for custom usage (like transparency in player decals) 2025-07-25 01:39:59 +05:00
Alibek Omarov 24f05e3fc5 engine: client: refactor spray logo, get rid of unneeded bmp checks 2025-07-25 01:34:46 +05:00
Alibek Omarov 2bdeb05153 engine: client: oops, fix including non-existent file 2025-07-25 00:24:45 +05:00
Alibek Omarov de4b635b19 engine: client: move cl_spray.c only external function declaration to client.h, move other definitions to cl_spray.c 2025-07-24 23:59:15 +05:00
SNMetamorphandAlibek Omarov ab744a8baf engine: client: fixed critical bugs in GoldSrc spray generating code, removed useless hacks 2025-07-24 20:49:05 +05:00
SNMetamorphandAlibek Omarov 0aca03d343 engine: client: refactored GoldSrc sprays code, removed magic numbers 2025-07-24 20:49:05 +05:00
Alibek Omarov eeca965b5d 3rdparty: update libbacktrace and mainui submodules 2025-07-18 19:00:39 +05:00
Alibek Omarov eb27dc639e Documentation: remove public server rules and recommendation (it might be back after reworking it) 2025-07-18 19:00:39 +05:00
Bohdan ShulyarandAlibek Omarov af5c6d1196 donate: update url 2025-07-18 03:47:09 +05:00
Sergey DegtyarandAlibek Omarov 0cce014c01 engine: client: fix spray support for 24-bit BMP (save as miptex, not decal) 2025-07-17 02:20:36 +05:00
Sergey DegtyarandAlibek Omarov 6111df486e engine: client: GoldSrc spray support 2025-07-16 23:54:56 +05:00
Sergey DegtyarandAlibek Omarov 7dc88f9417 filesystem: common: move wad structures to wadfile.h 2025-07-16 23:54:56 +05:00
Sergey DegtyarandAlibek Omarov e36486b73a engine: imagelib: handling wad extension to save and load image properly 2025-07-16 23:54:56 +05:00
Sergey DegtyarandAlibek Omarov 000304ddde engine: net_chan: added bz2 compression for file fragments 2025-07-16 23:54:56 +05:00
Alibek Omarov 4c9b69af5f engine: mod_bmodel: allow firstclipnode index to be negative, as maps compiled with it rely on this trick by encoding whole hull as empty contents 2025-07-16 23:42:49 +05:00
SNMetamorphandAlibek Omarov 599b1b48ec engine: voice: added wrapper for players voice status array to avoid mess with off-by-one errors 2025-07-15 18:54:01 +05:00
Alibek Omarov 4e23012950 ci: disable build for e2k-8c for now (probably will compile natively on e2k-4c instead) 2025-07-13 04:43:34 +05:00
Alibek Omarov 6e69e1d67b scripts: gha: build engine for Linux and Windows with FFmpeg linked in runtime by default, thus allowing for smaller distribution size for game developers 2025-07-13 04:39:44 +05:00
Alibek Omarov 7564e3c61f engine: client: add support for building with FFmpeg linked in runtime 2025-07-13 04:39:44 +05:00
Alibek Omarov 0543b861ca ci: upgrade win32-i386 build runner to windows-2022 (which probably will break XP support... or it might not) 2025-07-09 19:31:12 +05:00
Alibek Omarov 0d403a7117 engine: client: console: make con history remember modifications to old lines 2025-07-09 19:23:17 +05:00
Alibek Omarov 928ce9d754 engine: client: console: simplify history handling by defining a separate type for console lines saved in history
Thus we don't need to save linewidth for them anymore.
2025-07-09 19:22:29 +05:00
Alibek Omarov 6cc3bed60a engine: client: console: fix uninitialized variable 2025-07-09 19:04:59 +05:00
Alibek Omarov 40dfd2e711 engine: client: voice: fix off by one errors (as suggested by @SNMetamorph) 2025-07-09 18:29:36 +05:00
Alibek Omarov c554eef3b9 engine: client: add ability to disable prepending [Xash3D] tag to the nickname when connecting to GoldSrc servers 2025-07-09 17:44:13 +05:00
Alibek Omarov dc0648e812 engine: net_http: validate file size against reported by server, when downloading chunked files 2025-07-09 17:35:25 +05:00
Alibek Omarov 3d762802ab Merge remote-tracking branch 'pwd491/gsvoice' 2025-07-09 16:43:14 +05:00
Sergey Degtyar 21b0516724 engine: client: move voice reset to Voice_Shutdown 2025-07-03 16:25:24 +03:00
Sergey Degtyar cca1732245 engine: client: refactored voice.c
- reformatted code.
- changed function declarations to static.
- ensured consistent use of defined constants for buffer sizes.
2025-07-03 13:50:57 +03:00
Sergey Degtyar fddf0200db engine: client: replaced hardcoded buffer sizes with defined constants for voice data 2025-07-03 13:36:25 +03:00
Sergey Degtyar 6bb7bcd378 engine: client: GoldSrc voice chat support
- Added support for GoldSrc voice mode, including initialization and shutdown functions.
- Implemented data size verification for the GoldSrc voice package.
- Creation and processing of voice packets, CRC verification of data integrity.
- Added a Steam ID field to the client_static_t structure
- Automatic gain control has been introduced for voice samples.
- The voice status structure has been updated.
- Refactored voice data handling for better type consistency and maintainability.
- Fixed ISO C90 compliance issues for better portability.
- Fixed decoder index usage.
2025-07-01 16:09:09 +03:00
Sergey Degtyar f37bbec78e engine: sound: voice buffer isolation and correct MP3 volume handling 2025-06-26 06:57:50 +03:00
Sergey Degtyar 50a8f23b43 engine: sdl: always reset device descriptors on shutdown 2025-06-26 06:57:37 +03:00
Marc-Antoine LortieandAlibek Omarov f9fc26239b Update reimplementations and ports links. 2025-06-24 21:41:39 +03:00
Marc-Antoine LortieandAlibek Omarov 9f797ef705 Fix repository spelling. 2025-06-24 21:40:40 +03:00
Alibek Omarov a7671a8ac1 3rdparty: update UI submodules 2025-06-19 16:43:08 +05:00
Alibek Omarov c807faf5b9 engine: client: rename queryserver to ui_queryserver (so q<tab> will always result in quit command, by users request) 2025-06-19 16:43:08 +05:00
Alibek Omarov 45dd15b064 wscript: remove unused --enable-emscripten 2025-06-19 15:48:50 +05:00
Alibek Omarov 7e50026100 engine: server: fix restoring player view entity after save restore (fixes trigger_camera usage) 2025-06-19 15:22:54 +05:00
Alibek Omarov 05a258a5b4 engine: client: respect intro videos aspect ratio 2025-06-19 14:29:34 +05:00
Alibek Omarov 902fa52cbd Revert "scripts: gha: fix ffmpeg build flavor (the one we're using for now don't have minimal flavor)"
This reverts commit 2267b2e4e6.
2025-06-16 06:24:39 +05:00
Alibek Omarov cc528d407d Revert "scripts: gha: use full ffmpeg builds, as ours are not finalized yet"
This reverts commit 7f5e62d03a.
2025-06-16 06:24:35 +05:00
Alibek Omarov 2267b2e4e6 scripts: gha: fix ffmpeg build flavor (the one we're using for now don't have minimal flavor) 2025-06-16 06:21:17 +05:00
Alibek Omarov 7f5e62d03a scripts: gha: use full ffmpeg builds, as ours are not finalized yet 2025-06-15 16:01:23 +05:00
Alibek Omarov e3bfdf4127 engine: wscript: remove duplicated --enable-ffmpeg option 2025-06-15 14:25:28 +05:00
Alibek Omarov bf186b8178 github: set correct flatpak github action version 2025-06-15 13:18:34 +05:00
Alibek Omarov 907e02da8d Merge ffmpeg support 2025-06-15 13:15:17 +05:00
yohimikandAlibek Omarov 2234f91c38 ref: gl: add stubs for WebGL 2025-06-15 13:01:13 +05:00
Alibek Omarov 582fe9a2fc common: defaults: Emscripten doesn't use INTERNAL_GAMELIBS anymore 2025-06-15 13:01:13 +05:00
Alibek Omarov fa92a5fa0c engine: common: disable colored stdout for Emscripten 2025-06-15 13:01:13 +05:00
Alibek Omarov 342aa56144 engine: wscript: increase default memory size for Emscripten port, include game files from rodir folder in source tree root 2025-06-15 13:01:13 +05:00
Alibek Omarov e9440a8612 filesystem: fix folder exists check in RoDir 2025-06-15 13:01:13 +05:00
Alibek Omarov 3e396bb55a engine: host: allow console if DEFAULT_DEV is set to larger than 0 value 2025-06-15 13:01:13 +05:00
Alibek Omarov 72b8182af0 public: comment out XASH_JS define to avoid arch misdetection on modern Emscripten versions 2025-06-15 13:01:13 +05:00
Alibek Omarov 6022865cae engine: filesystem_engine: set default root directory on Emscripten 2025-06-15 13:01:13 +05:00
Alibek Omarov 1559b1b331 engine: system: exit from Emscripten with force_exit call 2025-06-15 13:01:13 +05:00
Alibek Omarov 5db150e565 engine: launcher: get rid of Emscripten load library hacks, mount IDBFS into /rwdir 2025-06-15 13:01:13 +05:00
Alibek Omarov e823ba050a engine: whereami: add stub for Emscripten 2025-06-15 13:01:13 +05:00
Alibek Omarov 6f545f178e engine: host: move main loop contents into separate function 2025-06-15 13:01:13 +05:00
Alibek Omarov b598daf049 engine: wscript: disable default install for Emscripten, we need to rename main program into index.html and also install additional outputs 2025-06-15 12:51:57 +05:00
Alibek Omarov 3f5ca210a0 common: port: set .wasm as libraries extension on Emscripten 2025-06-15 12:51:57 +05:00
Alibek Omarov f1e665b5b3 engine: wscript: disable async ns resolve for Emscripten for now 2025-06-15 12:51:57 +05:00
Alibek Omarov eb84efd260 wscript: set Emscripten defaults 2025-06-15 12:51:57 +05:00
Alibek Omarov 90884a2d09 scripts: waifulib: sdl2: use Emscripten's SDL port 2025-06-15 12:51:57 +05:00
Alibek Omarov 69e38c963d engine: platform: remove Emscripten-specific library loading, it's not needed anymore 2025-06-15 12:51:57 +05:00
Alibek Omarov d7f4b21db7 3rdparty: mainui: update 2025-06-15 12:51:57 +05:00
Alibek Omarov 6aa281bc59 public: define Emscripten as POSIX-compatible 2025-06-15 12:51:57 +05:00
Alibek Omarov e22dadc36f scripts: waifulib: add tool for building with Emscripten's Clang wrapper 2025-06-15 12:51:57 +05:00
Alibek Omarov 1bf5909023 wscript: don't forget to recurse into ref/gl with only gles3compat enabled 2025-06-15 09:13:39 +05:00
Andrey AkhmichinandAlibek Omarov ba71f114d9 Documentation: opensource-mods.md: add "Master Sword". 2025-06-15 07:12:45 +03:00
Alibek Omarov c90d110096 engine: platform: sdl2: assign K_AUX32 and K_AUX31 to volume buttons to match old engine behavior on Android 2025-06-07 11:21:32 +05:00
Alibek Omarov 05edde050d engine: always remap clipnodes for bsp30ext 2025-05-27 22:54:06 +03:00
Alibek Omarov 1c29490889 Reapply "engine: disable clipnodes remapping for non-extended formats and QBSP2"
This reverts commit 2e748c4aea.
2025-05-27 22:44:53 +03:00
Alibek Omarov 210f51d38c ci: use flatpak github action fork again because I forgot that github has weird limitations 2025-05-27 22:38:13 +03:00
Alibek Omarov 2e748c4aea Revert "engine: disable clipnodes remapping for non-extended formats and QBSP2"
This reverts commit f2ecdad5bb.
2025-05-27 22:23:44 +03:00
Alibek Omarov 375ff6296b ci: try to upgrade flatpak action 2025-05-27 22:21:23 +03:00
Alibek Omarov 026435865a wscript: cleanup defaults, now that we don't need to specify most options from here 2025-05-27 21:54:22 +03:00
Alibek Omarov 216e680965 wscript: detect threading ability by platform
On client, it's handled by SDL{2,3}. On server we rely on pthreads (and some platforms don't have pthreads).
2025-05-27 21:40:07 +03:00
Alibek Omarov 3fe77ec86c wscript: remove msdev.py generator (Visual Studio project still can be generated using msvs.py) 2025-05-27 20:59:47 +03:00
Alibek Omarov a88fea6ab3 wscript: remove cmake.py generator 2025-05-27 20:57:47 +03:00
Alibek Omarov 78ef00a269 wscript: remove hacky logic determening valid target when crosscompiling to 32-bit x86 2025-05-27 20:50:08 +03:00
Alibek Omarov f9a9aedea5 engine: set fps_override to 0 by default, it's still experimental and breaks multiplayer
Was probably set to 1 by mistake.
2025-05-26 20:10:45 +05:00
Alibek Omarov 53e59c2e73 ref: load sprites textures with texgamma applied (like GoldSrc) 2025-05-26 19:09:28 +05:00
Alibek Omarov fc3b8ae45d engine: imagelib: allow installing texgamma processed palette before loading sprites 2025-05-26 19:09:28 +05:00
Alibek Omarov 911b83a9d8 engine: imagelib: load studio model textures with texgamma applied (like GoldSrc) 2025-05-26 19:09:28 +05:00
Alibek Omarov 5276e46dc0 contributing: add a note about usage of LLM-based tools [skip ci] 2025-05-26 03:28:58 +05:00
Alibek Omarov 9fbd47bb4c engine: server: move unexpected master server query packets and failed challenges to more verbose loglevel 2025-05-25 21:05:37 +05:00
Alibek Omarov b8ead38573 engine: server: prevent flood about unreliable datagram overflow on frozen players 2025-05-25 20:37:06 +05:00
Alibek Omarov 6a318d5000 engine: server: check for master servers addresses in connectionless packet handler, and it it matches, only reply to M2S messages 2025-05-25 20:29:16 +05:00
Alibek Omarov 71040c7ed5 engine: net_http: fix missing newline 2025-05-25 19:21:23 +05:00
Alibek Omarov c3531b6499 engine: expect that base_cmd is consistent, as for many years no cases of broken basecmd were found 2025-05-25 16:48:31 +05:00
Alibek Omarov 9c6f12f31c engine: make command argc/argv functions inline 2025-05-25 16:47:45 +05:00
Alibek Omarov 913d0eb693 engine: add command to make other commands or variables privileged 2025-05-25 16:33:11 +05:00
Alibek Omarov 7bff848592 engine: base_cmd: simplify FindAll 2025-05-25 16:33:11 +05:00
Alibek Omarov 72485da491 engine: client: make demo recording and demo removing command privileged 2025-05-25 03:22:19 +05:00
Alibek Omarov 694472f4c1 engine: platform: allow querying window type through R_GetWindowHandle 2025-05-24 22:03:43 +05:00
TheEVolkandAlibek Omarov 735f4e2bcb ref_api: make handle as argument and use type request input 2025-05-24 20:47:28 +05:00
TheEVolkandAlibek Omarov 9ebeb520fa engine: platform: refactor R_GetWindowHandle to return a struct instead of a pointer 2025-05-24 20:47:28 +05:00
TheEVolkandAlibek Omarov dd52840a97 ref_api: update REF_API_VERSION to 10 and document R_GetWindowHandle addition 2025-05-24 20:47:28 +05:00
TheEVolkandAlibek Omarov 4ce03662d9 ref_api: R_GetWindowHandle method 2025-05-24 20:47:28 +05:00
Andrey AkhmichinandAlibek Omarov 20320d8dfa Documentation: not-supported-mod-list-and-reasons-why.md: update. 2025-05-24 20:45:28 +05:00
Alibek Omarov f2ecdad5bb engine: disable clipnodes remapping for non-extended formats and QBSP2 2025-05-24 20:43:44 +05:00
Alibek Omarov 298842be32 engine: fix clipnodes limit check based on BSP version 2025-05-24 17:43:01 +05:00
Alibek Omarov 15544cde26 engine: common: fix typo in aguirRe nickname [skip ci] 2025-05-21 17:43:05 +05:00
Alibek Omarov a4ad537e59 engine: server: minor refactoring 2025-05-20 20:24:42 +05:00
Alibek Omarov 7ba48e00bc 3rdparty: libbacktrace: sort entries in config.h to keep it the same between reconfigurations
Multicheck parallel nature caused config.h entries to be sorted randomly and
libbacktrace recompiled on every occasion.
2025-05-20 15:25:39 +05:00
Alibek Omarov bb620d1265 engine: client: set cl_upmax to 508 by default 2025-05-20 14:35:29 +05:00
SNMetamorphandAlibek Omarov 32e6f37c7e engine: server: fixed incorrect printing of IPv6 address in "status" command 2025-05-12 14:11:09 +03:00
Alibek Omarov 8f95535390 engine: server: fix a typo that prevented "status" command from executing by spawned player 2025-05-12 11:37:11 +03:00
Alibek Omarov b2444f2480 engine: restore SDL2 include path 2025-05-11 18:01:17 +03:00
Alibek Omarov 37d6d75e69 engine: platform: sdl3: add system and input SDL3 platform implementation 2025-05-11 17:35:13 +03:00
Alibek Omarov 97bdd9dba0 engine: port occasional SDL2 calls to SDL3, no platform yet 2025-05-11 16:18:10 +03:00
Alibek Omarov ffc8bf30d7 engine: platform: make most input platform functions optional, patch fbdev/evdev to compile 2025-05-11 16:14:36 +03:00
Alibek Omarov 8209a8a681 engine: platform: move mouse grab enabling and querying functions to SDL platform code 2025-05-11 16:09:57 +03:00
Alibek Omarov 34beb9666b engine: soundlib: drop SDL-based resampler 2025-05-11 15:27:50 +03:00
Alibek Omarov 6ccafbe297 engine: platform: move Host_Minimize_f into platform code 2025-05-11 15:24:52 +03:00
Andrey AkhmichinandAlibek Omarov a479099804 utils: mdldec: write all GoldSource-compatible motion-types with "-m" option. 2025-05-11 03:40:57 +03:00
Alibek Omarov 94791d3cb6 engine: allow downloading files that have multiple dots in filename. Also disallow everything that has nonprintable characters. 2025-05-06 21:16:06 +03:00
Alibek Omarov 6555562e78 engine: common: fix building tests 2025-05-06 21:15:28 +03:00
Alibek Omarov de790d6f59 Revert "engine: server: increased sv_connect_timeout to a half a minute"
This reverts commit 3fca1bb4d5.
2025-05-06 20:22:20 +03:00
Alibek Omarov cff0df60a9 engine: server: also bump timeouts for connected clients during changelevel in server activation 2025-05-06 20:19:17 +03:00
Alibek Omarov c8b8e19ed3 engine: server: fix time out on change level 2025-05-06 20:11:41 +03:00
Alibek Omarov 2106556dec engine: server: limit status and build info commands only to spawned clients 2025-05-06 19:50:51 +03:00
Alibek Omarov 7221bd6049 engine: server: small refactoring 2025-05-06 19:50:26 +03:00
Alibek Omarov ded38020d3 engine: server: add new client state cs_spawning, to ensure that client cannot spawn before it has an entity 2025-05-06 19:37:54 +03:00
Alibek Omarov c6251174df engine: server: don't let unspawned player execute ent tools commands or send voice data 2025-05-06 19:02:32 +03:00
Alibek Omarov 177c132969 engine: common: fix incorrect argument name, which also fixes build with compilers that enforce C23 2025-05-06 19:00:18 +03:00
Alibek Omarov 3fca1bb4d5 engine: server: increased sv_connect_timeout to a half a minute 2025-05-06 16:28:29 +03:00
Alibek Omarov 321e28c810 scripts: waifulib: sdl2: fix SDL3 sanity test 2025-05-05 18:51:01 +03:00
Alibek Omarov 7fda58561f engine: platform: sdl2: remove SDL1.2 code, as it's now moved into it's own separate directory 2025-05-05 05:56:23 +03:00
Alibek Omarov 0cbb62b329 engine: platform: try to restore SDL1.2 support (only ref_soft is tested, ref_gl doesn't work) 2025-05-05 05:44:31 +03:00
Alibek Omarov aa2e5eb3cc engine: platform: move SDL2 support code into sdl2 subdirectory. Change XASH_SDL macro value from 12 to 1 for SDL1.2 2025-05-05 05:15:10 +03:00
Alibek Omarov 3d26ba1ed8 engine: client: always pass a valid pointer to usercmd_t in ref_params_t to prevent crassh when client.dll reads them during demo playback 2025-05-05 03:40:18 +03:00
Alibek Omarov 47c4844024 engine: platform: sdl: enable building with SDL as old as 2.0.8, it should satisfy everybody masturbating to old software 2025-04-30 17:45:05 +03:00
Alibek Omarov d457d7d093 filesystem: archive mounting refactoring 2025-04-28 22:28:30 +03:00
VladimirandGitHub 43364ec2e9 defaults: enable touch for psvita & nswitch (#2143) 2025-04-27 14:39:58 +03:00
Alibek Omarov 14127c26f5 scripts: gha: don't put dedicated binary in full client tarballs 2025-04-24 23:41:26 +03:00
Alibek Omarov 291f24a611 scripts: cirrus: build dedicated server alongside full client for slightly faster builds 2025-04-24 23:33:59 +03:00
Alibek Omarov 1abb16638f scripts: gha: build dedicated server alongside full client for slightly faster builds 2025-04-24 23:33:59 +03:00
Alibek Omarov 3e41e389c5 engine: lib_common: do not take generic GNU/Linux rules for library naming on Android 2025-04-24 21:53:03 +03:00
Alibek Omarov 5aca143eba engine: disable Android-specific library loader under Termux 2025-04-24 21:46:43 +03:00
Alibek Omarov 60fa855d47 filesystem: wscript: strip lib prefix on Termux too 2025-04-24 21:42:20 +03:00
Alibek Omarov 22661fd446 public: define XASH_TERMUX if __TERMUX__ is defined. Do not enable XASH_MOBILE_PLATFORM for it 2025-04-24 21:40:35 +03:00
Alibek Omarov 61d8d5e12b wscript: detect if we're compiling from Termux 2025-04-24 21:39:46 +03:00
Alibek Omarov a7f3c04baa engine: platform: android: hide SDL calls under XASH_SDL macro 2025-04-24 21:39:46 +03:00
Alibek Omarov 296e642f09 wscript: look for libm when compiling for Android on Android device itself (e.g. Termux) 2025-04-24 20:52:55 +03:00
Alibek Omarov 75eb1f1e8b filesystem: android: make failing to find JNI env non-fatal 2025-04-24 20:52:18 +03:00
Alibek Omarov 8f4a45baaa engine: platform: win32: set IMAGEHLP_LINE64 structure size as required in dbghelp docs on MSDN 2025-04-21 20:33:30 +03:00
Alibek Omarov 18aac5fd3d readme: update 2025-04-21 20:12:55 +03:00
Alibek Omarov ca6ca8450b engine: platform: sdl: load .ico file with wide function allowing for icons to be loaded from non-latin game directory 2025-04-21 20:09:39 +03:00
Alibek Omarov 6ecaea3102 engine: system: convert Windows username to utf8 2025-04-21 19:56:49 +03:00
Alibek Omarov fa47ca0d2d engine: system: make a copy of pw_name just in case 2025-04-21 19:56:23 +03:00
Alibek Omarov 8ce3b4ac93 engine: client: identification: use wide CreateProcess call, ensure that process terminated and it's handles are closed 2025-04-21 19:38:10 +03:00
Alibek Omarov a7ba705277 engine: platform: win32: make output similar to libbacktrace-based crashhandler, general improvements and refactoring 2025-04-21 18:54:39 +03:00
Alibek Omarov 85a4d296f5 Documentation: not-supported-mod-list-and-reasons-why: clarify that we don't know why Arrange Mod doesn't work on Xash yet [skip ci] 2025-04-21 17:06:11 +03:00
Andrey AkhmichinandGitHub 4dd8d89459 Documentation: not-supported-mod-list-and-reasons-why.md: update [skip ci] 2025-04-21 17:04:19 +03:00
Alibek Omarov c564cc96c7 engine: get rid of host.crashed field, as it's a complete duplicate of host.status 2025-04-21 16:59:44 +03:00
Alibek Omarov 0e54200f34 engine: platform: win32: move saving minidumps before showing stacktrace messagebox 2025-04-21 16:58:43 +03:00
Alibek Omarov fa75c33390 engine: platform: win32: do not set parent window for stacktrace print window 2025-04-21 16:57:27 +03:00
Alibek Omarov 36cb3b2d89 engine: fix incompatible int size when casting pointer to int 2025-04-21 15:54:32 +03:00
Andrey AkhmichinandAlibek Omarov 2f3b03d27a Documentation: opensource-mods.md: add "Counter-Life". 2025-04-20 10:23:53 +03:00
SNMetamorphandAlibek Omarov f0deac206b Documentation: added initial revision of touch controls configuring guide
Thanks to VladislavKZ and archer for helping with information gathering.
2025-04-18 17:24:44 +03:00
Alibek Omarov 5d0e473cf1 3rdparty: maintui: update 2025-04-16 14:52:46 +03:00
Alibek Omarov 2174fe6d21 ci: update to ubuntu-22.04 2025-04-15 21:04:48 +03:00
Alibek Omarov 5d1e207337 3rdparty: maintui: update 2025-04-15 21:00:38 +03:00
Alibek Omarov 87c209f1f9 engine: server: drop clients that do not continue connecting after smaller timeout 2025-04-15 20:54:27 +03:00
SNMetamorphandAlibek Omarov ed5ea002d7 Documentation: donate: updated details, changed layout 2025-04-15 18:07:59 +03:00
Alibek Omarov 149593fea5 engine: server: hide Cmd_ForwardToServer call under XASH_DEDICATED just in case, fixes build with debug 2025-04-11 00:34:10 +03:00
Alibek Omarov 8c0f1d65ba 3rdparty: maintui: update 2025-04-10 23:56:55 +03:00
Alibek Omarov bbf6f1c7b8 scripts: gha: fix generating sources.list on different ubuntu version 2025-04-10 23:37:36 +03:00
Alibek Omarov 3b61e0bbd6 ci: thanks github, ubuntu-latest isn't actually latest 2025-04-10 23:07:39 +03:00
Alibek Omarov 8d2986bc74 3rdparty: maintui: update 2025-04-10 23:02:48 +03:00
Alibek Omarov 27a8adad22 ci: compile risc-v port on ubuntu-latest for newer compilers 2025-04-10 22:48:41 +03:00
Alibek Omarov 64e774377b scripts: gha: fix ppc64el rust target 2025-04-10 22:48:17 +03:00
Alibek Omarov 8ff469d466 3rdparty: maintui: update 2025-04-10 22:26:13 +03:00
Alibek Omarov a20e961892 scripts: gha: install i686-pc-windows-msvc rust target for cross-compiling 32-bit maintui 2025-04-10 22:02:13 +03:00
Alibek Omarov 8ba30a1c09 scripts: gha: add Rust target for crosscompiling 2025-04-10 20:01:03 +03:00
Alibek Omarov d570d6d6da scripts: gha: enable building maintui on supported platforms (win32, linux and apple) 2025-04-10 19:21:09 +03:00
Alibek Omarov 882b573e70 wscript: build maintui alongside mainui_cpp, so both could be used and shipped 2025-04-10 19:21:09 +03:00
Andrey AkhmichinandAlibek Omarov 54657c149b utils: mdldec: use separate options for sequences and textures. 2025-04-10 14:57:11 +05:00
Alibek Omarov 9054b11ebd engine: client: let loading custom menu dll with -menulib command line switch 2025-04-09 17:35:36 +03:00
Alibek Omarov 71d31330f9 filesystem: dir: fix possible null dereference 2025-04-05 14:03:24 +05:00
SNMetamorphandAlibek Omarov ea29699633 scripts: gha: psvita: pinned cmake version to 3.28.3 2025-04-05 12:45:45 +05:00
Andrey AkhmichinandAlibek Omarov ccb8d611c6 public: add getopt implementation from NetBSD libc. 2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov f4d98c056e utils: mdldec: handle unknown options. 2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov 779adcd838 utils: mdldec: bump version to 1.2. 2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov 16e2ce0aeb utils: mdldec: avoid brackets. 2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov 7bfcd4cef0 utils: mdldec: add options to:
- disable log output.
 - use separate directories for smd and texture files.
 - avoid to write paranoia 2 motion types.
 - ignore filesize checks.
 - enable UV coords shifting.
 - show decompiler version.
 - show help.
2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov c298635728 utils: mdldec: Makefile: update. 2025-04-02 12:07:41 +03:00
Andrey AkhmichinandAlibek Omarov 92e976952e utils: mdldec: fix UV coords shifting yet again. 2025-04-02 12:07:41 +03:00
Denis DrakhniaandAlibek Omarov a85bd0c864 maintui: first blood 2025-04-01 14:46:27 +03:00
Alibek Omarov 0a5f175431 mainui: update 2025-03-31 19:18:39 +03:00
Alibek Omarov da6402ccc2 common: xash3d_types: disable PFN_RETURNS_NONNULL attribute for MCST lcc 2025-03-31 19:14:22 +03:00
Alibek Omarov 9d1b03d119 scripts: gha: build for e2k-8c on GitHub Actions machines 2025-03-31 19:07:47 +03:00
Alibek Omarov 6cf0d7a871 scripts: gha: linux: fix enabling stb_truetype in mainui_cpp 2025-03-31 18:20:23 +03:00
SNMetamorphandAlibek Omarov d5a6a7ae60 scripts: gha: made voice chat enabled by default for PS Vita platform 2025-03-30 20:24:38 +03:00
SNMetamorphandAlibek Omarov 185374f99f engine: platform: psvita: explicitly exported symbol rintf
This is required for cs16client port for PS Vita.
2025-03-30 20:24:38 +03:00
SNMetamorphandAlibek Omarov b9072e4642 Documentation: slightly updated PS Vita port installation instructions 2025-03-30 20:24:38 +03:00
yumirakandAlibek Omarov 06e5895d7a engine: client: fix TE_BLOODSPRITE behaviour to GoldSrc 2025-03-26 22:00:10 +03:00
Alibek Omarov ac5be8156b Revert "wscript: force -Wuninitialized to error"
This reverts commit e615ff0e7f.
2025-03-25 19:10:13 +03:00
Alibek Omarov 8c12a8baed mainui: update 2025-03-25 19:02:00 +03:00
Alibek Omarov e615ff0e7f wscript: force -Wuninitialized to error 2025-03-25 17:11:51 +03:00
Alibek Omarov 2e8fa60e96 engine: client: don't allow downscaling HUD when using hud_scale's fixed resolution mode 2025-03-25 17:07:05 +03:00
Alibek Omarov a8ba9124dd engine: server: fix -Wmaybe-uninitialized 2025-03-25 17:07:05 +03:00
Alibek Omarov f6e8a68b22 engine: imagelib: img_png: fix -Wmaybe-uninitialized 2025-03-25 17:07:05 +03:00
Alibek Omarov 706cc16a86 ref: fix -Wmaybe-uninitialized 2025-03-25 17:06:59 +03:00
Alibek Omarov a9fd508e47 engine: common: fix reading maybe uninitialized crt_tm variable 2025-03-25 17:04:35 +03:00
Alibek Omarov 90bd72d481 ref: gl: disable blend after we're done drawing sprite "lightmap"
Fixes translucent brush model on renderfx2.bsp (https://twhl.info/vault/view/6933)
which so happened to draw after agrunt sprite, that has "lightmap" enabled
2025-03-25 00:52:11 +03:00
Alibek Omarov a2a3978de7 engine: server: fix erasing physinfo on client connect, when it was already set by game logic on save restore
Fixes issue when player loses long-jump in Half-Life on save load or level transition.
2025-03-24 23:22:19 +03:00
Andrey AkhmichinandAlibek Omarov ea70989fd2 utils: mdldec: Fix resource names validity checks. 2025-03-24 01:24:31 +03:00
Andrey AkhmichinandAlibek Omarov 091228bcb3 Documentation: supported-mod-list.md: update. 2025-03-24 01:24:25 +03:00
Alibek Omarov 9c49253388 filesystem: allow symlinks when using listdirectory with dirs_only = true
Should fix special setups when game directories are actually symlinks
2025-03-20 20:31:44 +03:00
Alibek Omarov eea804a4bf engine: server: improve server op status command output 2025-03-20 05:47:24 +03:00
Alibek Omarov ecbfdb82f4 engine: server: add requested server command status. Only expose client input devices for now, as everything else might be considered sensitive information 2025-03-20 05:46:49 +03:00
Alibek Omarov a1950ec7b0 engine: server: tiny refactoring, make SV_CalcPing pointer to client const 2025-03-20 05:44:23 +03:00
Alibek Omarov 6b56e13b60 engine: make local ipv4 address private to net_ws, acquire local addresses with GetLocalAddress function 2025-03-20 05:39:02 +03:00
Alibek Omarov d93bee0cbc engine: minor refactoring, rename ref_state_t fields to snake case, rename readable names to shorter (no pun intended) long names 2025-03-20 03:11:17 +03:00
Alibek Omarov 5009db6aac engine: client: make renderer loading failure less scary for the user 2025-03-20 03:06:05 +03:00
Alibek Omarov c389736c2f android: do not crash on Browse button if activity wasn't found 2025-03-20 02:44:37 +03:00
Alibek Omarov 66bdca63ee ref: gl: upload skybox texture object with >= 5800 name only with GL compatibility context, it's not needed on GLES 2025-03-17 08:32:06 +03:00
SNMetamorphandAlibek Omarov d3f455649e engine: client: implemented xashid for PS Vita platform 2025-03-16 21:34:32 +03:00
SNMetamorphandAlibek Omarov 17ff80d85d engine: platform: psvita: implemented function for getting PSID 2025-03-16 21:34:32 +03:00
SNMetamorphandAlibek Omarov 407d0aa291 engine: wscript: enabled linking library SceLibKernel_stub on PS Vita 2025-03-16 21:34:32 +03:00
Alibek Omarov d13429a287 game_launch: explicitly call wide or ascii Win32 API function calls 2025-03-16 20:41:57 +03:00
Alibek Omarov a84204fc75 engine: partial fix to explicitly call ascii or wide Win32 API function calls 2025-03-16 20:41:57 +03:00
SNMetamorphandAlibek Omarov 292ace2d26 engine: client: fixed SQB in CL_ParseEvent & CL_ParseReliableEvent 2025-03-16 20:31:14 +03:00
Alibek Omarov 68a1fbdc2b engine: platform: win32: use widechar versions of LoadLibrary, which fixes loading engine if path contains non-latin characters 2025-03-16 03:16:02 +03:00
Alibek Omarov d68f29737a public: crtlib: use Q_rint instead of round in Q_pretifymem, so we don't have to link libm when we don't need it 2025-03-16 01:01:13 +03:00
Alibek Omarov a34edbd8e8 wscript: ok, let's disable format-nonliteral for now 2025-03-15 20:01:47 +03:00
Alibek Omarov 71e2d4ecd4 engine: client: fix another case of format-nonliteral 2025-03-15 19:52:24 +03:00
Alibek Omarov 25656b532a engine: platform: posix: fix a typo 2025-03-15 19:52:00 +03:00
Alibek Omarov 1a791e8556 engine: soundlib: get rid of useless formatstring, which is always the same for all types 2025-03-15 19:36:34 +03:00
Alibek Omarov ccd31c6b27 engine: imagelib: get rid of useless formatstring, which is always the same for all types 2025-03-15 19:29:11 +03:00
Alibek Omarov 6aeedf201c ref: gl: update dlight texture in case if BLOCK_SIZE changes between maps (going from QBSP to BSP2 or toggling r_large_lightmaps cvar) 2025-03-15 19:23:49 +03:00
Alibek Omarov c9f8bdfcb0 ref: gl: allow updating texture with NULL data by calling TexImage instead of TexSubImage 2025-03-15 19:20:36 +03:00
Alibek Omarov 3cf4901ad2 engine: fix another case of format-nonliteral 2025-03-15 18:23:38 +03:00
Alibek Omarov 92de3ebc58 wscript: disable format-nonliteral for Clang, it's buggy there 2025-03-15 14:20:11 +03:00
Alibek Omarov 7aa9f23590 public: crtlib: fix Q_pretifymem so it compiles with -Wformat-nonliteral 2025-03-15 14:19:47 +03:00
Alibek Omarov 3d999269eb engine: net_ws: make net6_local global static, as it's not used outside of this translation unit 2025-03-15 01:24:59 +03:00
Alibek Omarov 1e8e4825fa engine: fix remaining -Wformat=2 and force it to -Werror 2025-03-15 01:24:59 +03:00
Alibek Omarov 91bc372811 mainui: update 2025-03-15 01:24:59 +03:00
Alibek Omarov f9df96d70e engine: server: fix server strings deduplication on 64-bit systems 2025-03-15 01:24:59 +03:00
Alibek Omarov 8af0e2c8b4 readme: add missing system dependencies on Linux systems [skip ci] 2025-03-08 02:42:28 +03:00
Alibek Omarov a5191d8948 engine: client: console: simplify Field_DrawInputLine, try to make it safer 2025-03-08 02:35:32 +03:00
Alibek Omarov b2d8239829 engine: common: net_http: fix decompression for compressed but not chunked files 2025-03-06 19:10:48 +03:00
Alibek Omarov 34322f025b engine: client: limit ticket generator choices to revemu2013 only 2025-03-06 12:35:32 +03:00
Alibek Omarov 3e6b434733 mainui: update 2025-03-05 22:36:41 +03:00
Alibek Omarov 8359cbe76c scripts: waifulib: add flag --enable-limited-debuginfo which enables -gline-tables-only on GCC and Clang compilers
This saves ~30mb of APK size on Android.
2025-03-05 02:19:39 +03:00
Alibek Omarov 0e90e6285e engine: host: use #if instead of #ifdef when checking for extended hl25 structs compile option 2025-03-03 22:59:44 +03:00
Alibek Omarov 2f5840f650 engine: host: add a cvar that indicates whether engine was built with --enable-hl25-extended-structs or not 2025-03-03 22:53:20 +03:00
Alibek Omarov 3b51a554dd mainui: update 2025-03-02 20:20:54 +03:00
Alibek Omarov 5f0880d4a2 engine: client: lower the bandwidth test fragment sizes to 1400 and less, as using 64k, 32k and more is unreliable 2025-03-02 20:20:40 +03:00
Bohdan ShulyarandAlibek Omarov 884a3c66ac client: touch: fix minor typo that prevented editing touch buttons commands 2025-03-02 20:19:58 +03:00
Alibek Omarov c76752cc5f engine: server: validate uuid in protinfo, it's an md5 string 2025-03-01 22:45:01 +03:00
Alibek Omarov fc2888e107 engine: server: fix incorrect ID string generation, hashedcdkey is already an MD5 string 2025-03-01 22:27:22 +03:00
Alibek Omarov 674b4c1506 engine: server: reorder sv_client_t struct for better memory efficiency, remove unused fields 2025-03-01 22:07:05 +03:00
Alibek Omarov cddd50f1e9 engine: server: completely erase sv_client_t on client connect, so we always start from scratch for every user 2025-03-01 22:07:05 +03:00
Alibek Omarov 6c9d5bc1fb engine: server: cleanup penalties and warns for new players 2025-03-01 16:03:39 +03:00
Alibek Omarov ec23860238 gitmodules: use github mirrors instead of xiph.org's git
It's not really a good idea to hammer upstream git servers with cloning same
data over and over. Besides, it's down right now.
2025-03-01 15:28:55 +03:00
Alibek Omarov 14a2e34b7e mainui: update 2025-03-01 15:21:20 +03:00
Alibek Omarov 29c8818557 engine: server: do not continue processing command if the player was kicked during it (for example, by speedhack prevention) 2025-03-01 14:58:15 +03:00
Andrey AkhmichinandAlibek Omarov 7222830b28 Documentation: supported-mod-list.md: a little remark. 2025-02-28 23:56:28 +03:00
Alibek Omarov 9b0ad7daf0 engine: common: register forgotten net_clockwindow cvar 2025-02-28 22:44:44 +03:00
Alibek Omarov 73729827f4 engine: platform: win32: add forgotten SDL.h include 2025-02-28 21:55:26 +03:00
Alibek Omarov 97fa395a3b engine: platform: win32: fix build by restoring previous win32 header inclusion order 2025-02-28 21:44:22 +03:00
Alibek Omarov 1cef8ea7af Revert "ref: gl: check OES NPOT texture extension in BigGL mode"
This breaks mipmaps on PSVita

This reverts commit 54b0cf9991.
2025-02-28 17:08:27 +03:00
Alibek Omarov eda4e95607 engine: client: draw version at bottom right in menu, regardless if dev_overview or net_graph are enabled (those only used in-game) 2025-02-28 15:11:24 +03:00
Alibek Omarov a5f0ca38f1 engine: remove inclusion of SDL headers globally, helps to cleanup code before SDL3 migration 2025-02-28 13:14:47 +03:00
Alibek Omarov bbbd7711c1 engine: platform: cleanup remnants of disabling vsync while loading mechanism for linux fbdev and dos ports 2025-02-28 12:33:30 +03:00
Alibek Omarov 38e922557d engine: platform: sdl: remove disabling vsync while we're not in game, as this is something users have been complaining a lot
It's not a big deal if level loading will take a few milliseconds more.
2025-02-28 08:27:38 +03:00
Alibek Omarov 4dec1785ed engine: client: touch: fix inverted file extension check 2025-02-28 06:44:21 +03:00
Alibek Omarov 9f77b7dc46 scripts: waifulib: enable HLSDK -mtune only on GCC and Clang, and not on Android 2025-02-26 17:11:10 +03:00
Alibek Omarov 5061a29f86 scripts: waifulib: enable asynchronous-unwind-tables for better stacktraces 2025-02-26 17:10:30 +03:00
Alibek Omarov cb5dffd554 engine: server: don't bother printing about unsupported connectionless packets if sv_log_outofband is set to 0 2025-02-26 17:06:33 +03:00
Alibek Omarov 4eaa8ab40f android: bump minimum CMake version, so disabling unneeded features in SDL actually works 2025-02-26 14:21:58 +03:00
Alibek Omarov 2a82d265d6 scripts: waifulib: xcompile: add support for Android NDK r27 as well 2025-02-26 12:40:22 +03:00
Alibek Omarov f2392b5709 scripts: waifulib: xcompile: add support for building on Windows. Drop using shortcut target clang symlinks, as those don't work on Windows at all (they are wrapped into batch files, which can't be invoked like exes) 2025-02-26 12:40:22 +03:00
Alibek Omarov 5620e7ab4c android: fixup CMAKE_LIBRARY_OUTPUT_DIRECTORY on Win32, merge stdout and stderr for waf output 2025-02-26 12:40:22 +03:00
Alibek Omarov a76236ac5a scripts: waifulib: xcompile: add support for NDK 28, remove setting up custom PREFIX to not mess up installation path 2025-02-26 12:40:22 +03:00
Alibek Omarov d1c5862bab android: bump NDK version to 28 2025-02-26 12:40:22 +03:00
Alibek Omarov 81400d0b01 android: use xcompile.py's support for Android NDK, fix tabs 2025-02-26 12:40:22 +03:00
Alibek Omarov a129f13e25 android: enable verbose output for CMake running from Gradle 2025-02-26 12:40:22 +03:00
Alibek Omarov ec8b4c0a84 android: rework how engine is built, instead of generating CMakeLists, just use included in CMake ExternalProject feature 2025-02-26 12:40:22 +03:00
Alibek Omarov f1f726822c engine: client: restore cl_cmdrate default value at 30. It wasn't an intentional change. 2025-02-25 19:52:48 +03:00
Alibek Omarov 8982d55392 engine: client: set default rate value to 25000
3500 is barely playable these days. Those who have worse than usual internet
connection, should set appropriate value themselves.
2025-02-25 17:36:43 +03:00
Alibek Omarov f499286a87 engine: platform: sdl: don't call SDL_GL_SetSwapInterval each frame while we're not in game 2025-02-25 11:52:03 +03:00
Alibek Omarov a3aaa87147 ref: gl: enable polygon offset for fullbright textures when rendering them in separate from VBO pass 2025-02-25 11:49:31 +03:00
Alibek Omarov 15a6971aca engine: platform: posix: strip path from filename in backtrace 2025-02-25 11:46:57 +03:00
Alibek Omarov b1eb3390e3 engine: server: let server dll to register it's own showtriggers cvar 2025-02-24 06:41:11 +03:00
Alibek Omarov 74ad504377 engine: client: console: do not let color strings contribute to line length in console 2025-02-24 03:55:13 +03:00
Alibek Omarov 8a0c2577ed engine: platform: sdl: exclude fake game controller found on Android emulator 2025-02-24 03:42:03 +03:00
Alibek Omarov a060d7aefd wscript: disable large file for 32-bit Android 2025-02-23 16:07:51 +03:00
Alibek Omarov ccf342f4fe engine: client: fix inconsistent mouse state caused by mis-use of touch_emulate by cs16-client 2025-02-23 07:13:39 +03:00
Alibek Omarov 8b9a40ff1f engine: client: completely refactor touch code, protect button color, improve config output 2025-02-23 07:00:20 +03:00
Alibek Omarov 425cc61c4c engine: client: handle K_ESCAPE in Key_Console, remove special case for it in Key_Event 2025-02-23 06:47:44 +03:00
Alibek Omarov fe1fd5b024 engine: client: make color array of DrawString functions const 2025-02-23 06:46:22 +03:00
Alibek Omarov 0c8da36a0b filesystem: disallow path traversal in FS_Delete and FS_Rename 2025-02-23 03:13:46 +03:00
Alibek Omarov 2c5030ab45 engine: client: do not save touch_emulate cvar 2025-02-23 02:04:33 +03:00
Alibek Omarov 9decba873b engine: platform: sdl: try to save and restore mouse position during showing or hiding cursor 2025-02-23 02:04:03 +03:00
Alibek Omarov bda4c45504 engine: client: simplify CL_EDICT_NUM and it's sister, non throwing error, function CL_GetEntityByIndex 2025-02-23 01:51:05 +03:00
Alibek Omarov f7aa8a0c90 ci: bump SDL2 to 2.32.0. This is the last major upgrade to SDL2 dependency, we should migrate to SDL3 (with sdl2-compat for GoldSrc mods) after that 2025-02-22 18:48:41 +03:00
Alibek Omarov 4c15cceb32 engine: client: deprecate custom id, it is not used meaningfully by anyone 2025-02-20 15:41:17 +03:00
Alibek Omarov 3e4c5beb25 ref: fix another typo made after R_StudioCalcBones refactor 2025-02-18 19:22:06 +03:00
Alibek Omarov f84d865f4a engine: client: fix crash if server sends new movevars before entities were created
Nothing bad will happen if we skip wave height for world entity for now, but
we might need to handle this situation somehow in the future.
2025-02-17 13:02:21 +03:00
SNMetamorphandAlibek Omarov 2465782a3e engine: platform: sys_win: fixed compiling error 2025-02-15 13:45:22 +03:00
Alibek Omarov 7ba2209124 engine: platform: sdl: set requested timer delay in units of 100ns according to the documentation 2025-02-15 13:08:05 +03:00
Alibek Omarov af6b434b71 engine: platform: win32: implement nanosleep using waitable timers with high precision 2025-02-15 11:57:41 +03:00
Alibek Omarov 052ea6a8bd engine: platform: introduce for Platform_NanoSleep, to be used for better sleeping in between frames for lowering CPU usage 2025-02-15 10:11:17 +03:00
Alibek Omarov 448dc720ed engine: server: immediately exit from SV_GetChallenge on unknown type addresses 2025-02-15 09:31:20 +03:00
Alibek Omarov 75b15696f8 engine: zone: ensure memheader_t size is always expected 2025-02-15 09:31:20 +03:00
Andrey AkhmichinandAlibek Omarov 7fb113f610 Documentation: opensource-mods.md: add "Delta Particles". 2025-02-15 08:02:44 +03:00
Andrey AkhmichinandAlibek Omarov 0497e00ad2 Documentation: supported-mod-list.md: update. 2025-02-15 08:02:35 +03:00
Alibek Omarov 9c50288bbb engine: server: rewrite challenge generator to something more simple: salted MD5 of an IP address
The idea was taken from ReHLDS project.
2025-02-15 08:01:44 +03:00
Alibek Omarov c5d4af802c engine: server: even if user set non-integer value for cl_updaterate, clamp it to sv_minupdaterate 2025-02-15 08:01:44 +03:00
Alibek Omarov 340a8b5e0c engine: server: fixes for userinfo change ratelimiting
* Add pentalty earlier
* Increase disallowed timewindow according to penality multiplier
* Allow first change even if it falls into ignore timewindow
2025-02-15 08:01:44 +03:00
Alibek Omarov bc1b86c19c engine: server: refactor SV_ConnectClient, simplify LAN IP check 2025-02-15 08:01:44 +03:00
Alibek Omarov b605cf603e common: xash3d_types: make it more compatible for inclusion in SDK 2025-02-15 08:01:44 +03:00
xiaodoandAlibek Omarov fdc2ed8093 engine: server: pfnClientCommand and pfnQueryClientCvarValue should execute on unspawned player 2025-02-14 20:52:45 +03:00
xiaodoandAlibek Omarov a27375d1f5 engine: server: cmds: fix kick command incorrect argc 2025-02-14 20:52:45 +03:00
Alibek Omarov 0e2abf9040 engine: platform: always create zeroed buffer for audio 2025-02-14 05:20:40 +03:00
Alibek Omarov 89430400d9 engine: sys_con: only allow names that start with either alphabetic or numerical character for a log file 2025-02-14 01:51:50 +03:00
Alibek Omarov f1a9d408bf engine: sys_con: check if the next argument after -log starts with minus and ignore it if it does 2025-02-14 00:50:01 +03:00
Alibek Omarov 6529692244 engine: disable timestamps in log file by default, allow changing log file name with -log argument 2025-02-14 00:28:00 +03:00
Alibek Omarov 51d11f8e86 engine: platform: win32: remove unused log variables and checks from Win32 console, sys_con does the job 2025-02-14 00:28:00 +03:00
Alibek Omarov c5397191e5 engine: client: touch: limit usage of touch_set_stroke and touch_setclientonly only for privileged mode 2025-02-13 20:55:49 +03:00
Alibek Omarov 44426709f7 engine: platform: posix: skip first stack frame when printing stack trace with libbacktrace 2025-02-13 20:43:32 +03:00
Alibek Omarov 2d8f747e84 wscript: disable using system-wide libbacktrace, as it might not support features we need 2025-02-13 19:21:07 +03:00
Alibek Omarov 0dd5a60410 3rdparty: gl4es: update submodule 2025-02-13 02:32:28 +03:00
Alibek Omarov eec8129be4 3rdparty: extras: update submodule 2025-02-13 02:31:30 +03:00
Alibek Omarov 934c5e018d readme: clarify that chat is for russian speaking people [ci skip] 2025-02-12 18:08:10 +03:00
Alibek Omarov d658d8cc78 readme: remove builds.sr.ht status, add Telegram chat link, remove stable build link (it's very outdated and not recommended to use) [skip ci] 2025-02-12 17:58:51 +03:00
Alibek Omarov ca9a3f0491 engine: server: fix out of bounds write in SV_FindTouchedLeafs 2025-02-11 21:15:54 +03:00
Alibek Omarov 1510cb458f public: fix another typo 2025-02-11 21:12:50 +03:00
Andrey AkhmichinandAlibek Omarov 30cabb8107 Documentation: supported-mod-list.md: fix branch name. 2025-02-11 21:10:59 +03:00
Alibek Omarov 64ee956618 engine: fix a typo 2025-02-11 20:06:15 +03:00
Alibek Omarov 39659644bf public: merge calc bone quaternion and position into single function
Expect that only adj and output quaternion can be NULL.
2025-02-11 18:57:08 +03:00
Alibek Omarov eb09af0b08 ref: gl: avoid generating GL_INVALID_OPERATION if gl_vbo_dlightmode is set to 0 2025-02-11 18:57:08 +03:00
Andrey AkhmichinandAlibek Omarov 91a4ace12c Documentation: supported-mod-list.md: update. 2025-02-11 16:28:40 +03:00
Alibek Omarov 2ad2e46b30 mainui: update 2025-02-10 13:18:59 +03:00
Alibek Omarov 627444279f Revert "common: cvar: make auto descriptions private to cvar subsystem, use them when Cvar_Get is called with NULL description"
This reverts commit ade560c601.
2025-02-10 12:49:05 +03:00
Alibek Omarov 3550bdb30d 3rdparty: mainui: update 2025-02-09 23:14:24 +03:00
Alibek Omarov c201b895eb common: netadr: force cast uint16_t type to netadrtype_t
So it compiles in C++
2025-02-09 23:13:29 +03:00
Alibek Omarov 72f1ac3780 wscript: ensure system-wide libbacktrace supports threads 2025-02-09 18:29:02 +03:00
Alibek Omarov d7dc3192de 3rdparty: libbacktrace: fix applying uselib 2025-02-09 18:25:40 +03:00
Alibek Omarov 43ea65fffc ci: upgrade freebsd tasks. 2025-02-09 17:41:01 +03:00
Alibek Omarov a72d921c12 wscript: add system-wide libbacktrace detection 2025-02-09 17:41:01 +03:00
Alibek Omarov 99b7d71824 wscript: set DEST_SIZEOF_VOID_P with allow 64bit flag 2025-02-09 17:16:17 +03:00
Alibek Omarov 67c73bdcbe engine: server: remove impulse 204, it's not used anywhere
Thanks @tyabus for reminding me about this feature.
2025-02-09 17:16:05 +03:00
Alibek Omarov 8b1dbcf166 ci: remove extra 20s of wait before removing current release and downloading artifacts 2025-02-09 17:02:31 +03:00
Alibek Omarov 5f60095dc4 scripts: flatpak: disable separate debuginfo 2025-02-09 16:54:51 +03:00
Alibek Omarov c7282b488b 3rdparty: libbacktrace: disable linking zlib, lzma and zstd for now, figure this out later 2025-02-09 16:49:43 +03:00
Alibek Omarov afa829d996 3rdparty: libbacktrace: don't define POSIX_SOURCE, it breaks build on Mac 2025-02-09 16:41:26 +03:00
Alibek Omarov c06ea8d915 engine: platform: posix: add printing backtrace to stderr and logfile for libbacktrace backend 2025-02-09 16:41:26 +03:00
Alibek Omarov bf344282ec android: explicitly set Waf output directory so it doesn't mess with current configuration and places generated files where CMake expects them to be 2025-02-09 16:20:38 +03:00
Alibek Omarov 21f62910ac engine: platform: posix: fix build when glibc execinfo.h is not available, but libbacktrace is still used 2025-02-09 16:20:38 +03:00
Alibek OmarovandGitHub 54552d93ef Documentation: goldsrc-protocol-support: I am not going to support Dproto 2025-02-09 16:18:21 +03:00
Alibek Omarov 97455e7fd4 engine: platform: sdl: fix build after last PR 2025-02-09 15:56:16 +03:00
Alibek Omarov 6087d43043 3rdparty: libbacktrace: properly disable it on win32, nswitch and psvita 2025-02-09 15:55:12 +03:00
Alibek Omarov c1a96d3ff1 engine: platform: posix: fix build 2025-02-09 15:51:25 +03:00
Alibek Omarov e27d20dfa3 android: enable debug symbols for native libraries 2025-02-09 15:49:28 +03:00
Alibek Omarov 890e12ec76 engine: platform: posix: flush stdout/stderr before everything, include build branch 2025-02-09 15:45:44 +03:00
Alibek Omarov 774d2ac28a engine: platform: posix: add libbacktrace support for crash handler 2025-02-09 15:42:28 +03:00
Alibek Omarov 960d724828 3rdparty: libbacktrace: add submodule 2025-02-09 15:40:07 +03:00
Alibek Omarov 32aa1f91bf engine: pass argv0 to crash handler setup, which is required for libbacktrace integration
Fix indentation in crash_posix.c
2025-02-09 15:36:49 +03:00
Alibek Omarov bd3634c815 wscript: add sanity test for opusfile because some distros don't ship 32-bit binary 2025-02-09 15:34:30 +03:00
OlegandAlibek Omarov eda0ac92cc engine: platform: sdl: change behavior when window position is not set 2025-02-09 08:54:31 +03:00
OlegandAlibek Omarov 546903ea05 engine: platform: sdl: write windows position changes even in fullscreen 2025-02-09 08:54:31 +03:00
OlegandAlibek Omarov 4975001795 engine: platform: sdl: enumerate video modes for display where window located is instead of display zero 2025-02-09 08:54:31 +03:00
OlegandAlibek Omarov a078ad1f51 engine: platform: sdl: fix windows save position for multiple monitors 2025-02-09 08:54:31 +03:00
OlegandAlibek Omarov 8307f671d4 engine: platform: sdl: let platform decide where to put our fullscreen window 2025-02-09 08:54:31 +03:00
Alibek Omarov 241fab02b1 ref: gl: don't try to free luma and detail texture of water texture, as these fields used by r_ripple 2025-02-08 16:57:20 +03:00
Alibek Omarov 1bfee70477 engine: con_utils: add autocompletion for cvar commands like set, reset and toggle 2025-02-08 16:45:52 +03:00
Alibek Omarov eb51d17cd2 engine: server: enable sv_zmax clamping back to avoid overflowing zmax value encoded in delta 2025-02-08 16:38:11 +03:00
Alibek Omarov b5cb0b9f10 ref: gl: add r_dlight_virtual_radius. It potentially fixes ugly dlight cut off on largely scaled textures (or at least allows to tune it)
It also adds a fix found in JoeQuake (which traces back to FitzQuake, in which
it is attributed to LadyHavoc, Darkplaces author) to exactly calculate whether
the light hits the surface, so we don't wrongly enable lighting on a surface by
an increased radius.
2025-02-07 23:07:08 +03:00
Alibek Omarov a955d1e957 ref: gl: make GL_BuildPolygonFromSurface static, remove one global variable usage (which is unused anyway) 2025-02-07 22:55:38 +03:00
Alibek Omarov 2b2c967e85 engine: add ms3.mentality.rip master server 2025-02-07 19:32:37 +03:00
Alibek Omarov c48d93e3ce public: use last Git commit date (committer date, to be exact) as more predictable source for build num 2025-02-07 17:51:10 +03:00
Alibek Omarov 8f257cc331 public: add parsing build date from ISO-8601 alike format 2025-02-07 17:47:23 +03:00
Alibek Omarov 151e7fe37b public: crtlib: check for empty buffer in Q_vsnprintf 2025-02-06 21:19:10 +03:00
Alibek Omarov add02dc6f9 engine: fix potential UB in netadr_t 2025-02-06 20:54:18 +03:00
Alibek Omarov d4c34abd6e engine: enable writing log even if console hasn't been enabled at the engine startup (it might be enabled later, it might also contain crash data) 2025-02-06 20:03:07 +03:00
Alibek Omarov 1d81e611f0 scripts: gha: use N+1 job count when building PSVita dependencies 2025-02-06 00:32:42 +03:00
Alibek Omarov 6a0038e26a ref: gl: always set texture env mode to GL_MODULATE in TriAPI's RenderMode call
Not sure if this is correct, but it's generally a good idea to restore it to an
expected value.
2025-02-06 00:30:32 +03:00
Alibek Omarov 1d99f65e86 filesystem: when shutting down, clean up gameinfo pointers and total games count 2025-02-05 21:14:08 +03:00
Alibek Omarov 5e524bca60 engine: client: enable half-texel hack for nearest filtering too, if the scaling factor isn't an integer 2025-02-05 20:16:16 +03:00
Alibek Omarov cf3e56e275 engine: client: add alternative mode for hud_scale, where it scales HUD down to selected resolution with preserving aspect ratio 2025-02-05 19:47:59 +03:00
Alibek Omarov ade560c601 common: cvar: make auto descriptions private to cvar subsystem, use them when Cvar_Get is called with NULL description
It allows us to not lose engine-side description when client or gameui registers cvar with the same name. In case of
menu it's the only way to get cvar pointer.
2025-02-05 19:11:16 +03:00
Alibek Omarov 62e3ba2126 engine: add cvars to control mounting additional directories
Use existing ui_language cvar for mounting localization folders.
2025-02-05 18:54:28 +03:00
Alibek Omarov 674a4e5883 filesystem: add ability to mount HD, LV, addon and language folders by engine request 2025-02-05 18:24:36 +03:00
Alibek Omarov f911210b81 public: simplify ctype.h is* functions wrappers for null-terminated strings, add Q_isalpha 2025-02-05 18:21:18 +03:00
Alibek Omarov 14eb07653c engine: client: fix incorrect format in error message in CL_SetLightStyle 2025-02-05 17:41:01 +03:00
Alibek Omarov 54b0cf9991 ref: gl: check OES NPOT texture extension in BigGL mode 2025-02-05 14:00:44 +03:00
Alibek Omarov 3ebcb08a97 ref: gl: add cvar r_large_lightmaps to enable larger lightmap sizes, opt-in, yields better performance with VBO renderer 2025-02-05 13:02:37 +03:00
Alibek Omarov 23940f8590 readme: remove fontconfig from dependencies list, we aren't using it anymore [skip ci] 2025-02-04 21:00:42 +03:00
Alibek Omarov 687fb0123f engine: implement basic gamepad gyroscope calibration
Called on game controller becoming active or by user request.
Exposes current calibration state by read-only console variable.
2025-02-03 13:14:51 +03:00
Alibek Omarov 6c91fdb0cd ref: gl: gl2_shim: fix int vs GLuint 2025-02-02 20:57:37 +03:00
Alibek Omarov 4832232fd6 ci: attempt to fix flatpak upload 2025-02-02 20:31:51 +03:00
Alibek Omarov 185bce0489 engine: common: remove unused D_ enum used for MsgDev in old engine. Make sure all enums and structs here are not anonymous 2025-02-02 20:26:07 +03:00
Alibek Omarov f460aa63b0 engine: platform: posix: don't forget to print backtrace to stderr too 2025-02-02 19:20:54 +03:00
Alibek Omarov 22f8b6f9c3 engine: platform: enable crash handler for macOS 2025-02-02 18:30:41 +03:00
Alibek Omarov 0cb034afc2 engine: wscript: improve execinfo and GNU backtrace() check 2025-02-02 18:18:26 +03:00
Alibek Omarov d0464ef602 engine: platform: posix: use glibc-based backtrace implementation for crash handling, if execinfo.h can be found 2025-02-02 18:06:18 +03:00
Alibek Omarov c3ebb84b97 ci: bump SDL2 to 2.30.12 2025-02-02 08:14:24 +03:00
Alibek Omarov 11742efbc3 engine: fix player move on dedicated servers 2025-02-02 08:08:15 +03:00
Alibek Omarov 95af635ab4 engine: client: add command replaybufferdat to aid in debugging protocol errors by parsing buffer.dat 2025-02-02 05:22:46 +03:00
Alibek Omarov 1abec80191 engine: client: set codepage to 0 if con_charset value is unknown 2025-02-02 02:34:08 +03:00
Alibek Omarov 93ebddfba3 public: utflib: simplify Q_EncodeUTF8 2025-02-02 02:31:56 +03:00
Alibek Omarov 5378494199 wscript: enable main() function for Android port, which was forgotten after last refactoring 2025-02-01 18:26:20 +03:00
Alibek Omarov 1b44d7733e engine: platform: add improved Platform_Vibrate2 function, that allows to control vibration strength 2025-02-01 18:08:53 +03:00
Alibek Omarov 694c630b44 engine: zone: don't error when trying to free NULL pointer, like standard C free() and C++ delete 2025-02-01 17:51:02 +03:00
Alibek Omarov 7df1d4b9e2 engine: platform: sdl: remove useless for us game controller events 2025-01-31 19:48:33 +03:00
Alibek Omarov b16037eabf engine: drop raw SDL joystick API, always use GameController instead. Implement actually working rumble, ensure we're freeing up all resources related to gamepads 2025-01-31 17:50:19 +03:00
Alibek Omarov bff7299f9b gha: publish binaries even if flatpak fails 2025-01-31 10:37:41 +03:00
Alibek Omarov de196b1c58 common: xash3d_types: avoid defining true and false in C23 2025-01-31 10:36:27 +03:00
Alibek Omarov a0eec8b85d scripts: waifulib: add special_install_path for platform-specific executable formats that create post link stage (was nro_install_path) 2025-01-31 10:25:02 +03:00
Alibek Omarov c7e8ea2ffa scripts: gha: linux: build smaller SDL2 (without 2D renderer) for Linux as well 2025-01-31 10:02:19 +03:00
Alibek Omarov 1c1cf3d646 scripts: waifulib: psvita: make sce_sys truly optional in apply_vpk 2025-01-31 10:02:19 +03:00
Alibek Omarov 9759b80b78 scripts: waifulib: psvita: set default title id and app name to just test 2025-01-31 09:10:39 +03:00
Alibek Omarov 94b2c0b443 scripts: gha: build render-less SDL2 for PSVita 2025-01-31 09:10:09 +03:00
Alibek Omarov ff8d17a5a8 scripts: waifulib: psvita: add missing cprogram attributes 2025-01-31 09:04:40 +03:00
Alibek Omarov aa23196a55 scripts: waifulib: support vpk and nro pass for pure C programs, just in case 2025-01-30 20:51:01 +03:00
Alibek Omarov 83b488c37e wscript: let building client and dedicated server in the same configuration 2025-01-30 20:23:12 +03:00
Alibek Omarov 77abf621d7 ref: gl: make GL_Support and GL_MaxTextureUnits functions inlined 2025-01-30 19:02:53 +03:00
Alibek Omarov f9d4ac2771 ref: gl: fix ugly seam at the skybox, thanks Spoike for help 2025-01-30 18:53:31 +03:00
Alibek Omarov f076d84975 engine: platform: android: move dlsym-weak hack from C++ to C 2025-01-30 18:07:35 +03:00
Alibek Omarov faf0b32a94 ref: gl: fix massive frame drop caused by ripples code rendering same texture multiple times in the frame 2025-01-29 20:15:21 +03:00
Alibek Omarov feb80e5997 engine: platform: sdl: read gamecontrollerdb.txt from extras.pk3 2025-01-29 13:43:10 +03:00
Alibek Omarov 004af02e99 engine: avi: comment out debug messages 2025-01-29 11:13:29 +03:00
Alibek Omarov 8ad56eb085 Merge branch 'master' into avi 2025-01-29 11:12:38 +03:00
Alibek Omarov 578a77518f engine: client: fix clearing keyboard buttons caused by typical brain fart 2025-01-29 10:04:47 +03:00
Alibek Omarov 2457ecf226 filesystem: fix recursive basedir possible cyclic dependency when default game directory uses a basedir that's base directory is undefined
That could happen when default game directory depends on base directory that don't have gameinfo.txt.
Because all game directories with liblist.gam automatically have dependency on default game directory, it causes cyclic dependency.
2025-01-29 09:49:29 +03:00
Alibek Omarov 8cd99885f1 filesystem: clean added status for game folders when purging search paths 2025-01-29 09:46:18 +03:00
Alibek Omarov 684e229ac8 engine: client: get rid of absolutely useless bitfields 2025-01-26 23:34:04 +03:00
SNMetamorphandAlibek Omarov c0f1d8c647 engine: model: fixed incorrect check in Mod_LoadModel 2025-01-26 23:27:18 +03:00
SNMetamorphandAlibek Omarov c3b8696957 engine: platform: win32: disable initializing console in case of regular game startup 2025-01-26 23:02:24 +03:00
Tom KiddandAlibek Omarov 3ca413dbab Fixed path calc for extras on Mac 2025-01-26 22:25:08 +03:00
Alibek Omarov 92dc04ff3c engine: client: minor change, add forgotten newline in CL_DeltaEntityGS Host_Error call 2025-01-25 17:51:48 +03:00
Alibek Omarov ad6db91285 engine: move xashid stuff onto client 2025-01-25 17:51:48 +03:00
David DeGrawandAlibek Omarov 90a0f74087 undo change to mod link 2025-01-25 08:23:04 +03:00
David DeGrawandAlibek Omarov 4f7f5288a1 more nits 2025-01-25 08:23:04 +03:00
David DeGrawandAlibek Omarov c23b4bfe61 nits 2025-01-25 08:23:04 +03:00
David DeGrawandAlibek Omarov 4780f70ea2 Improve mod installation instructions
Also improved uplink setup and used a better source for mod files.
2025-01-25 08:23:04 +03:00
NightFoxandAlibek Omarov 98a04c7764 FIx Matrix*x4_LoadIdentity (xash3d_mathlib.h) 2025-01-25 08:21:21 +03:00
Alibek Omarov 7da9772143 engine: check for macOS bundle in SDL_GetBasePath, and fallback to SDL_GetPrefPath for our directory 2025-01-23 22:58:19 +03:00
Alibek Omarov 32def35408 engine: avi: remove stub file 2025-01-23 18:56:44 +03:00
Alibek Omarov 952ccb1247 engine: avi: very dumb pause 2025-01-23 18:55:48 +03:00
Alibek Omarov 6f0fb594e7 Merge branch 'master' 2025-01-23 18:42:00 +03:00
Alibek Omarov f0b29bac1b engine: client: add cl_trace_consistency used to print which resources server wants to check 2025-01-23 13:57:17 +03:00
Alibek Omarov 7b5ff606bd 3rdparty: extras: enable compression of extras.pk3 2025-01-23 13:08:53 +03:00
Alibek Omarov 3e22ee64ae scripts: waifulib: zip: add support for passing compression level on Python 3.7. Exclude PNG files from compression 2025-01-23 13:08:21 +03:00
Alibek Omarov c86c45503f engine: replace few more Xash3D strings by XASH_ENGINE_NAME macro 2025-01-23 10:33:22 +03:00
Alibek Omarov ef75a4c28d engine: rename pref path on Mac to Xash3D FWGS by allowing for custom branding through XASH_ENGINE_NAME macro 2025-01-23 10:24:55 +03:00
Alibek Omarov bccd3f2271 engine: pass launcher's default game directory all the way down to Platform_Init, so we mount correct extras.pk3 on Mac 2025-01-23 10:22:53 +03:00
Tom KiddandAlibek Omarov 7bbc3e8238 Made modifications for Mac App Bundle
- Looks for game data in SDL pref path (Application Support)
- Sets XASH3D_EXTRAS_PAK1 to SDL base path (Resources dir in App Bundle
- Added option to force search for SDL dylib via pkgconfig on Darwin instead of Framework (option for Mac Source Ports build process)
2025-01-23 10:15:47 +03:00
Alibek Omarov c34e0c66d9 engine: add fuzzing target for Mod_LoadModel 2025-01-23 10:12:32 +03:00
Alibek Omarov e5d80878b8 scripts: waifulib: add asan-only build type 2025-01-23 10:11:56 +03:00
Alibek Omarov 1e075d25b7 engine: make LZSS compression optional for 49 protocol, disable it for local clients (singleplayer) 2025-01-22 21:18:19 +03:00
Alibek Omarov d29e53481d engine: client: remove unused S_StreamAviSamples 2025-01-22 20:01:11 +03:00
Alibek Omarov d23a2fd2df engine: client: stub AVI_StreamSound RenderAPI call, it is not used in ffmpeg-based video playback code 2025-01-22 20:00:50 +03:00
Alibek Omarov f6f15cc204 engine: mod_studio: validate studio self-reported length before loading model 2025-01-22 20:00:13 +03:00
Alibek Omarov 4f2249ed8e ref: support loading sprites with truncated palette 2025-01-22 19:24:00 +03:00
Alibek Omarov 9f322df498 engine: imagelib: handle loading truncated palette files, by filling remaining bytes with zeros 2025-01-22 19:21:51 +03:00
Alibek Omarov b554d7e215 ref: properly handle unloading sprites that aren't loaded completely 2025-01-22 19:20:20 +03:00
Alibek Omarov 719093c10b ref: properly return false to the engine if renderer refuses to load the model for some reason 2025-01-22 19:13:23 +03:00
Alibek Omarov c2da140ccc engine: model: do not crash if renderer refused to load this model 2025-01-22 19:12:43 +03:00
Alibek Omarov 375998dffb Cleanup xash3d_types.h from engine-specific macros and types 2025-01-22 15:10:18 +03:00
Alibek Omarov 787444f63d engine: simplify sound fx allocation 2025-01-22 14:46:40 +03:00
Alibek Omarov 0c50076ff0 engine: zone: ensure poolcount is zero on Memory_Init 2025-01-22 13:49:51 +03:00
Alibek Omarov 8ce01c38c7 engine: http: ensure we don't write broken decompressed files 2025-01-22 13:49:24 +03:00
Alibek Omarov cac6206984 engine: client: allocate everything related to sounds in the sound pool 2025-01-22 13:49:02 +03:00
Alibek Omarov a5c88bdda9 engine: touch: allow smoother migration from old engine touch configs by stripping .tga extension 2025-01-22 13:40:47 +03:00
Alibek Omarov fc017286a6 engine: base_cmd: slightly faster search based on assumption that list is always ordered 2025-01-22 05:41:52 +03:00
Alibek Omarov 20d4e3e719 engine: fix flexible array member usage in case of null terminated strings
(woops)
2025-01-22 05:41:52 +03:00
Alibek Omarov 4eaa32fc10 engine: whereami: sync with upstream 2025-01-21 20:03:20 +03:00
Alibek Omarov b7c025b167 filesystem: android: request buffer for Android asset LoadFile implementation
Might be better than asking for random access and then only reading forward.
2025-01-21 19:50:14 +03:00
Alibek Omarov f29c588e0f filesystem: take code from DarkPlaces to properly read compressed files 2025-01-21 18:47:42 +03:00
Alibek Omarov 2065ef143a engine: server: fix ent_create under PrimeXT 2025-01-21 16:09:56 +03:00
Alibek Omarov a5c02c85f0 filesystem: wad: get rid of sentinel value at the end of wad_types array 2025-01-21 15:26:06 +03:00
Alibek Omarov 9a8761f1d8 engine: client: remove unused NetAPI_ValueForKey function 2025-01-21 15:17:03 +03:00
Alibek Omarov 273990d292 engine: cmd: store command description in flexible array member 2025-01-21 15:06:08 +03:00
Alibek Omarov 0e27d8717c ref: remove servercount from texture struct, Xash don't use it (and it's also harmful anyway) 2025-01-21 14:36:42 +03:00
Alibek Omarov 8a9b209db0 engine: zone: optimize memory usage a bit by compressing memheader_t better while keeping it efficient
It saves about 40 kilobytes of memory.
2025-01-21 14:04:33 +03:00
Alibek Omarov 232d1f8583 engine: make separate mempools for cmds, cvars and basecmd 2025-01-21 11:26:35 +03:00
Alibek Omarov 6cfa5877a4 engine: base_cmd: decrease base cmd hash size 2025-01-21 11:25:33 +03:00
Alibek Omarov 154df00f94 filesystem: don't create full path to rwdir, as cwd is always equal to rwdir
Fixes updating gameinfo.txt.
2025-01-20 19:53:04 +03:00
Alibek Omarov c5649c94d5 engine: client: fix delta entity packet flush on GoldSrc protocol
Implement counting playerbytes for more accurate net_graph, even if we're
skipping this delta frame.
2025-01-20 19:38:44 +03:00
Alibek Omarov a1da10fe38 filesystem: set default values for quick/autosave aged count 2025-01-20 16:06:57 +03:00
Andrey AkhmichinandAlibek Omarov 17a71ffc96 ci: upgrade freebsd tasks. 2025-01-19 04:36:07 +03:00
Andrey AkhmichinandAlibek Omarov 4609fbc0c5 Documentation: supported-mod-list.md: update links. 2025-01-19 04:35:17 +03:00
Andrey AkhmichinandAlibek Omarov d278d3bdd7 engine: common: fix clang build. 2025-01-19 04:33:06 +03:00
Alibek Omarov 7811b60292 engine: common: fix build for apple and freebsd-15 2025-01-18 10:40:12 +03:00
Alibek Omarov 870fad5606 public: tests: remove Q_colorstr tests 2025-01-18 10:36:11 +03:00
Alibek Omarov 3e93aa459d engine: net_buffer: turn bit write and read masks into predefined arrays, so we don't have to call InitMasks
In future, net_buffer might get moved to libpublic.

Also, get rid of 32-th bit write mask, it's only get used when we're trying to
write zero bits value which is nonsense.
2025-01-18 09:54:11 +03:00
Alibek Omarov 626c5e44f6 engine: client: use existing engine functions for some client API functions 2025-01-18 09:44:21 +03:00
Alibek Omarov c906aa0106 ref: gl: make DrawGLPoly and R_TextureAnimation private to brush rendering code 2025-01-18 08:39:31 +03:00
Alibek Omarov 0a41b70e44 ref: gl: store ripple texture in texture's fb_texturenum as it's only used for water and water don't have luma 2025-01-18 08:38:43 +03:00
Alibek Omarov ea338adc46 ref: gl: make GL_FrustumSetPlanme private to the frustum implementation 2025-01-18 08:34:25 +03:00
Alibek Omarov 5fa777578b ref: gl: fix detail texture leak, fix texture leak when texture have default texture set (in which case it still might have other textures set) 2025-01-18 08:33:20 +03:00
Alibek Omarov 5b9db5940b engine: mod_bmodel: don't try to load luma/fullbright texture for water, as no renderers support it anyway, and instead we will use that field for rippletexture 2025-01-18 08:30:59 +03:00
Alibek Omarov 4b1b3aa13c public: remove Q_colorstr, as it's completely useless and checking for color string is easy actually 2025-01-18 08:29:36 +03:00
Alibek Omarov 2d51d23d89 engine: client: don't send commands until ca_active on Xash protocol 2025-01-17 15:06:59 +03:00
Alibek Omarov b5b6dad39c engine: fix a typo in scroll lock (missing L) 2025-01-15 23:49:13 +03:00
Alibek Omarov a5619e9960 engine: take keydefs header from Quake-2 source code (client/keys.h) 2025-01-15 23:47:55 +03:00
Alibek Omarov a75666a3cd engine: common: fix dedicated build by defining SV_GetMaxClients before CL_GetMaxClients stub (that redirects to it)
Also remove CL_Shutdown from dedicated stub lists.
2025-01-14 13:10:02 +03:00
Alibek Omarov 49426721d8 engine: use zero initializers instead of memset 2025-01-14 12:11:27 +03:00
Alibek Omarov 04125284a3 engine: dedicated: make some stubs inlined 2025-01-14 12:10:31 +03:00
Alibek Omarov 1d4f7b2f94 engine: server: slight refactoring, make SV_ModelHandle inlined, move PlayerIsFrozen to sv_client, fix packet loss data type 2025-01-14 12:09:23 +03:00
Alibek Omarov 38c82a3f76 engine: don't bother calculating crc32 for local clients for better performance (thanks @tyabus for the idea) 2025-01-14 11:55:28 +03:00
Alibek Omarov 785632a437 filesystem: minor refactoring in MD5_HashFile, use initializer instead of memset, limit buffer variable scope 2025-01-14 11:36:13 +03:00
Alibek Omarov 4be75af214 engine: client: always write buffer.dat so we will be able to request it from users. Append protocol number to it 2025-01-14 11:31:10 +03:00
Alibek Omarov dcdca01e86 ref: gl: declare VBO globals static 2025-01-14 11:30:35 +03:00
Alibek Omarov 201d9c8f80 public: split VCS info to separate file for slightly better compilation speeds 2025-01-13 20:02:59 +03:00
Alibek Omarov 69341e36a3 public: expose commit and branch as global variables instead of functions 2025-01-13 20:02:59 +03:00
Alibek Omarov 3532a77643 public: move git commit and branch private to libpublic 2025-01-13 20:02:59 +03:00
Alibek Omarov 35dc072b26 filesystem: on Android, assume all paths are case-sensitive because doing Linux-specific ioctl check crashes FUSE driver and kills our app 2025-01-13 13:56:15 +03:00
Alibek Omarov f92a3695b3 filesystem: fix fd leak in Platform_GetDirectoryCaseSensitivity 2025-01-13 13:54:42 +03:00
Alibek Omarov a7b776f3b9 Revert "wscript: disable /showIncludes based msvcdeps for now, it causes issues with non-English locales"
Add option --enable-msvcdeps that we only enable on CI.

This reverts commit e58007aab3.
2025-01-10 21:48:43 +03:00
Alibek Omarov f2fb668c9e android: now run exit() from Java side, as the next engine run is expected to be clean 2025-01-09 21:29:01 +03:00
Alibek Omarov 90e493fa3a engine: common: add Host_ExitInMain function that will force engine return from Host_Main() function, essentially making engine gracefully exit on Android
In future, this might be used everywhere, so users would be able to add custom
cleanup in some advanced game_launch implementation, on any platform.
2025-01-09 20:31:26 +03:00
Alibek Omarov 692bcc4073 engine: client: cl_tent: rewrite fizz effect, fix incorrect positoning along the way 2025-01-09 19:23:40 +03:00
Alibek Omarov 823642b10d readme: add link to ipa-reader.com for Xash word pronounciation [skip ci] 2025-01-09 17:13:56 +03:00
Alibek Omarov 07189ca2f5 engine: client: remove spammy message about not precached model on client side
Recently, mods (Brutal Half-Life v3 and MMod) started to call this function
every frame as a hacky way to detect presence of some model on the level. I
don't know why they do that, but users (who co-incidentally run engine with
-dev) has been complaining about console spam.

This is why we can't have things.
2025-01-09 17:10:54 +03:00
Alibek Omarov 0d55441830 engine: properly pass shutdown reason down to close log, helps to finally get rid of global finalmsg 2025-01-09 08:04:18 +03:00
Alibek Omarov 98ff33d9e2 engine: mod_bmodel: rewrite .lit file loader using normal stream io functions 2025-01-09 08:02:39 +03:00
Alibek Omarov baa8fbaaec engine: mod_bmodel: fix misleading debug message telling about monochrome lighting when .lit file is used 2025-01-09 08:02:39 +03:00
Alibek Omarov a0b46da04b engine: consolidate all box clipnodes used in studio models, pmove and server in a single place 2025-01-09 08:02:39 +03:00
Alibek Omarov e70ba7ad64 engine: now, remove SUPPORT_BSP2_FORMAT macro, only prevent ref_soft from loading such maps 2025-01-09 08:02:39 +03:00
Alibek Omarov 8a41be9d47 engine: server: finally, make a union for large leaf indices in edict_t so we can run bsp2 maps without recompiling 2025-01-09 08:02:39 +03:00
Alibek Omarov 47aff9e30b engine: hack mnode_t struct so we can have 24-bit face and children indices to support BSP2 format in runtime 2025-01-09 08:02:39 +03:00
Alibek Omarov ced8744ac9 engine: split edge struct into two with 16-bit indicies and 32-bit indicies to support BSP2 format in runtime 2025-01-08 14:46:07 +03:00
Alibek Omarov 734c07ddab engine: split clipnodes struct into two with 16-bit indicies and 32-bit indicies to support BSP2 format in runtime 2025-01-08 14:46:07 +03:00
Alibek Omarov ceb603488a engine: platform: sdl: set up our custom log output function to catch all SDL errors in engine log file 2025-01-08 10:10:45 +03:00
Alibek Omarov 80bac157eb Update SDL to 2.30.11, use GitHub links for SDL, as it might be faster on Actions virtual machines 2025-01-08 09:42:53 +03:00
Alibek Omarov b45581c630 Documentation: gameinfo: add a note about liblist.gam and gameinfo.txt changes 2025-01-08 01:22:23 +03:00
Alibek Omarov d4fe3d6f8a filesystem: wscript: check d_type field in struct dirent, as this is an extension and some supported ports (like psvita) don't have it 2025-01-08 01:22:23 +03:00
Alibek Omarov 1907485895 filesystem: re-enable folder check for array returned by listdirectory with dirs_only set to true
According to glibc manual, not all filesystems support it and some might return DT_UNKNOWN.
2025-01-08 01:22:23 +03:00
Alibek Omarov cfebb3e1d6 filesystem: massively rework how scanning game directories work
* No more conversion from liblist.gam to gameinfo.txt. We are using liblist.gam directly now.
  gameinfo.txt being native format to Xash3D not only remains, it takes priority over liblist.gam.
* Quake game directories now don't receive autogenerated gameinfo.txt.
* Empty directories don't get gameinfo.txt either, finally making it easier to support HD addon folders.
* If user still wishes to generate gameinfo.txt, there is now command fs_make_gameinfo that creates
  gameinfo.txt for currently running game.
* No more creating empty folders for RoDir. They are now created on demand.
2025-01-08 01:22:23 +03:00
Alibek Omarov f9a0057c28 wscript: fix bsp2 build bruh 2025-01-08 01:22:23 +03:00
Alibek Omarov ceb2b0c5e4 filesystem: add utility function FS_CheckForQuakePak that parses Quake PAK file and looks for specific files in it's root
Used to properly detect Quake game dirs.
2025-01-08 01:22:23 +03:00
Alibek Omarov 83b5edea88 engine: platform: sdl: clear key states on losing window focus 2025-01-06 16:38:16 +03:00
Alibek Omarov 9d2a85f11f engine: client: clear mouse state along with everything else in Key_ClearStates 2025-01-06 16:38:16 +03:00
Alibek Omarov 93d3df81ee engine: client: small refactoring and better explanation for char input handler for menus that don't query our extended API 2025-01-06 16:00:11 +03:00
Alibek Omarov 2a7f13151a engine: cmd: when command is already defined and has the same function pointer, show it as warning 2025-01-06 13:51:25 +03:00
Alibek Omarov 0c4f6ae61d engine: client: like GoldSrc, use cancelselect command for escape key. It is handled in client.dll and allows mods to override Esc key behavior 2025-01-06 13:51:25 +03:00
Andrey AkhmichinandAlibek Omarov b7150c3208 Documentation: opensource-mods.md: add "Earth Special Forces". 2025-01-02 05:35:33 +03:00
Alibek Omarov d6ebff81e2 engine: client: vgui: track textures upload to avoid issues in buggy mods (that are probably will never get fixed) 2024-12-30 07:28:33 +03:00
Alibek Omarov ce4148f351 engine: client: vgui: deprecate VGUI_CreateTexture and VGUI_UploadTextureBlock functions, as they never used by vgui_support module
* vgui_support used them in old engine for font cache, but we don't have that anymore.
2024-12-30 07:16:30 +03:00
Alibek Omarov 08c2632c14 engine: platform: nswitch: export _Unwind_GetIPInfo as required by cs16-client 2024-12-29 09:11:21 +03:00
Alibek Omarov 03eac904c1 public: make COM_FixSlashes inlined 2024-12-29 09:05:15 +03:00
Alibek Omarov 62f3354f4e mainui: update 2024-12-29 08:06:58 +03:00
Alibek Omarov d5b6eff0c0 game_launch: fix --disable-menu-changegame by request 2024-12-29 08:06:50 +03:00
Alibek Omarov c9ee844a24 scripts: gha: bundle SDL2 pdb file for better stacktraces on Windows 2024-12-29 02:08:05 +03:00
Alibek Omarov 687c9b004f engine: platform: sdl: set directsound as default audio driver on Windows, due to incompatibilities with mods 2024-12-29 02:01:23 +03:00
Alibek Omarov 14e79f04ac engine: prevent extra malloc in exec by checking if cfg already contains newline at EOL and appending it to cbuf if required 2024-12-28 16:03:49 +03:00
Alibek Omarov 5d6cf48687 engine: client: fix lightstyle timings on GoldSrc protocol, share the parser with Quake protocol handler 2024-12-28 01:40:59 +03:00
Alibek Omarov 88949a9ee6 engine: launcher: drop support for changing games from within internal launcher for platforms that do not have execv equivalent 2024-12-27 18:45:31 +03:00
Alibek Omarov 2d1e76199b engine: host: always print Host_Error text to log, even if console hasn't been enabled 2024-12-27 18:37:25 +03:00
Alibek Omarov a5d78ecfd7 engine: be more verbose on why the engine is going to be shut down 2024-12-27 18:30:46 +03:00
Alibek Omarov 3576e474e6 engine: get rid of SendKeyEvents function, it only listened for WM_QUIT on Windows and we don't use that with SDL 2024-12-27 18:30:01 +03:00
Alibek Omarov d50927f21f ref: gl: make r_ripple work with non-square non-pot textures, fix holes caused by unexpected transparency 2024-12-26 06:31:53 +03:00
Alibek Omarov c6e3146290 ref: gl: fix broken water texture when it was discarded by R_UploadRipples 2024-12-26 03:49:12 +03:00
Alibek Omarov 9811988cce engine: server: set mapname globals field before making first call into DLL, as some mods tend to read it too early 2024-12-26 02:50:30 +03:00
Alibek Omarov 48bdd4238e engine: always include reason to server shutdown 2024-12-26 02:13:13 +03:00
Alibek Omarov fd2b7e9197 engine: client: declare music command as overridable as the same command exists in HLU SDK 2024-12-26 01:16:48 +03:00
Alibek Omarov 0e42e5b9e3 engine: command: introduce new type of commands that can be overriden by a mod DLL for better compatibility 2024-12-26 01:15:32 +03:00
Alibek Omarov 65750f0cf3 engine: server: hack save fields that use types unsupported by Half-Life Unified SDK through array types 2024-12-26 00:36:28 +03:00
Alibek Omarov 6469b0a5f5 engine: common: shut up warn-unused-result on log write functions, only fetch system time for system logs when necessary 2024-12-24 11:27:34 +03:00
Alibek Omarov 4f98187e9a engine: move select-based stdin input function to platform/posix 2024-12-24 11:13:05 +03:00
Alibek Omarov 74c19a1557 engine: client: leave SDL2 client.dll detection for Windows only 2024-12-24 10:46:39 +03:00
Alibek Omarov cfebee6ea8 engine: split crashhandler to win32 and posix versions 2024-12-24 10:37:49 +03:00
Alibek Omarov bd0d6644e0 engine: move Sys_SendKeyEvents to platform/win32 2024-12-24 09:59:47 +03:00
Alibek Omarov f41450127a Documentation: add note about pkg-config when compiling for Windows under Wine 2024-12-24 09:59:09 +03:00
Alibek Omarov 70897af362 public: add dll helpers to simplify basic interaction with exported functions lists 2024-12-23 04:43:15 +03:00
Alibek Omarov f1d7101ad8 engine: client: get rid of NULL sentinels at the end of arrays 2024-12-22 07:43:26 +03:00
Alibek Omarov ac9d960eef engine: common: get rid of NULL sentinels at the end of arrays 2024-12-22 07:22:10 +03:00
Alibek Omarov 0c471aecb1 engine: common: imagelib: get rid of NULL sentinels at the end of arrays 2024-12-22 07:21:06 +03:00
Alibek Omarov 72d0d70587 engine: server: get rid of NULL sentinels at the end of arrays 2024-12-22 07:12:32 +03:00
Alibek Omarov bec526a77e utils: xar: fix xar build 2024-12-22 07:11:53 +03:00
Alibek Omarov 4d1119391a ref: gl: get rid of NULL sentinels at the end of arrays 2024-12-22 07:11:28 +03:00
Alibek Omarov 1dd622fcbb engine: client: keys: refactoring, remove NULL sentinels, make keys structs and few more functions private to keys.c file 2024-12-21 15:22:48 +03:00
Alibek Omarov af4b64983a engine: fix a typo in Cmd_AddFilteredCommand flags passed to Cmd_AddCommandEx. Make them return Cmd_AddCommandEx value 2024-12-21 15:01:04 +03:00
Alibek Omarov e751092555 engine: common: cmd: consider filtered buffer privileged when we're running local singleplayer game 2024-12-20 05:48:33 +03:00
Alibek Omarov ce06b1d3d7 engine: client: allow CL_GetLocalPlayer to return NULL rather than halting whole server 2024-12-20 05:47:46 +03:00
Alibek Omarov a834f4996f engine: move client adding functions to their appropriate subsystems and make them static. Make in-engine functions inlined. 2024-12-20 05:47:46 +03:00
Alibek Omarov fdcf267fe3 engine: client: fix usermessage being removed because of case-sensitivity (message names are case-insensitive when transferred from server to client) 2024-12-20 03:05:14 +03:00
Alibek Omarov 7f2ebd1b5e engine: server: add command sv_list_messages to print all registered user messages 2024-12-20 02:37:38 +03:00
Alibek Omarov 68b2d9f269 engine: server: fix possible message number inconsistency if server requested it twice 2024-12-20 02:37:01 +03:00
Alibek Omarov 3f1eed9f59 engine: client: remove svc_goldsrc_* definitions for message that semantics matches Xash3D 49 protocol and instead use it's definitions 2024-12-20 01:51:24 +03:00
Alibek Omarov 0637dbaab1 engine: client: refactor and simplify CL_RegisterUserMessage 2024-12-20 01:51:24 +03:00
Alibek Omarov 85388e97c1 engine: client: add command cl_list_messages to print all registered user messages 2024-12-20 01:51:24 +03:00
Alibek Omarov de961eb45e engine: client: use new extension for creating temporary files for demoheader 2024-12-19 07:10:02 +03:00
Alibek Omarov 3d60770b84 filesystem: add flag to open files in a RAM
On Linux, it uses memfd_create syscall that can be found on Linux 3.17 and
higher. By default memfds are executable, so we set MFD_NOEXEC_SEAL flag to
prevent execution at creation time.
2024-12-19 04:22:25 +03:00
Alibek Omarov 93c5853356 engine: server: merge SV_FindBestBaseline for normal entities and static entities into single function 2024-12-18 06:57:43 +03:00
Alibek Omarov 98e587285b engine: client: allocate static entities only when server sends static entity packet 2024-12-18 06:57:43 +03:00
Alibek Omarov 2aa13c8347 public: xash3d_mathlib: include string.h with memset definition 2024-12-17 21:58:42 +03:00
Alibek Omarov 53344771fd public: xash3d_mathlib: get rid of matrix identity global macros 2024-12-17 21:01:51 +03:00
Alibek Omarov 2373743920 public: mention FSF in copyright header, as some of the libc extensions callbacks were derived from glibc [skip ci] 2024-12-17 20:41:55 +03:00
Alibek Omarov 90a3497afe public: improve Q_strncat fallback implementation 2024-12-17 20:40:19 +03:00
Alibek Omarov 339aebb08c public: add Q_strnlen with fallback to memchr 2024-12-17 20:03:09 +03:00
Alibek Omarov b4afe390d6 public: slight refactoring 2024-12-17 19:57:27 +03:00
Alibek Omarov ca0c5f929a engine: slight refactoring of lightstyle handling functions 2024-12-17 17:04:26 +03:00
Alibek Omarov 48cc526c7e engine: client: fix possible svc_pings misparse by reading until null bit is encountered 2024-12-15 18:22:40 +03:00
Alibek Omarov 8b4b0479c8 ci: enable ffmpeg by default for Windows and Linux x86 targets 2024-12-13 03:04:32 +03:00
Alibek Omarov c8bf7e5630 engine: avi: get rid of stubs file, temporarily put these stubs into avi_ffmpeg.c 2024-12-13 03:04:32 +03:00
Alibek Omarov 4987080e1e engine: client: remove unused S_RawSamples wrapper function 2024-12-13 03:04:32 +03:00
Alibek Omarov 1d78e400ff engine: sound: increase MAX_RAW_SAMPLES to 16384 to fit an audio track coming from the movies 2024-12-13 03:04:32 +03:00
Alibek Omarov 2d1a885954 common: render_api: use movie_state_s in AVI functions for easier type checking 2024-12-13 03:04:32 +03:00
Alibek Omarov 43ba2e747b engine: avi: mention SDL3 and FTEQW developers which ffmpeg integrations in their projects helped me to understand the ffmpeg API 2024-12-13 03:04:32 +03:00
Alibek Omarov eefb823ee2 engine: client: remove legacy movie audio track streaming functions 2024-12-13 03:04:32 +03:00
Alibek Omarov a3c33e0fa9 engine: client: sound: make S_RawSampleStereo public to other parts of engine 2024-12-13 03:04:32 +03:00
Alibek Omarov 16fe6b1b1a engine: client: avi: remove VFW-based player 2024-12-13 03:04:32 +03:00
Alibek Omarov 4275829bd5 engine: client: partially rework how AVI playback works in Xash. Add ffmpeg-based player.
This intentionally will not build without --enable-ffmpeg for now.

We add new functions to the RenderAPI called AVI_Think and AVI_SetParm. Game
developer is supposed to call AVI_Think each frame and set video playback
parameters through AVI_SetParm function.

What's tested:
* Intro cinematics.
* Looping videos.
* Playing back an hour long video.
* API extension (PrimeXT's avi branch at https://github.com/a1batross/PrimeXT).

What's broken:
* There is no way to seek a video file, only rewind to the start.
2024-12-13 03:04:32 +03:00
Alibek Omarov 1884f0a3ce engine: client: avi: add new macro XASH_AVI and corresponding backend select macros (AVI_NULL and AVI_FFMPEG) 2024-12-09 00:27:40 +03:00
Alibek Omarov 3d30dc8d02 mainui: update 2024-12-08 01:58:39 +03:00
Alibek Omarov 75adb2e686 engine: server: for entities physics code directly use cvar values rather than movevars. Leave movevars to player movement only 2024-12-08 01:39:24 +03:00
Alibek Omarov 45787a87b3 android: try to enable poly-opt and lto optimizations for release builds 2024-12-05 22:33:22 +03:00
Alibek Omarov 0a85734ae7 engine: server: avoid useless copying in SV_GetClientIDString for bots or local clients 2024-12-05 19:49:51 +03:00
Alibek Omarov b28c1186b2 filesystem: fix loading dlls by full path as required by metamod-r 2024-12-05 19:20:13 +03:00
Alibek Omarov 5007f8488c engine: host: add simple usage help for -bugcomp flag 2024-12-05 18:29:54 +03:00
Alibek Omarov f7062498c2 engine: turn old pfnGetGameDir behavior into a bugcomp flag get_game_dir_full
This function is kinda nasty, some mods (like old RCBot builds) expect a slash,
some newer mods (like Sandbot) doesn't. To preserve compatibility with both old
and new mods, just add it as bug compatibility flag.
2024-12-05 18:14:15 +03:00
Alibek Omarov 964744d330 engine: client: fix broken build due to incorrect constant being used 2024-12-05 14:20:43 +03:00
Alibek Omarov f5d635b67b engine: client: allow VOX words use other formats than WAV 2024-12-05 12:41:56 +03:00
Alibek Omarov d0112a98b5 engine: client: improve error reporting in VOX_LoadSound, allow longer result paths, fix possible buffer overflow 2024-12-05 12:41:56 +03:00
Alibek Omarov 614b9113ad engine: platform: as an exception, allow calling direct platform-specific implementations of Platform_Sleep to make them inlined 2024-12-04 18:37:55 +03:00
Alibek Omarov e14cd758ad engine: turn Platform_Sleep into an inline function that directly calls platform-specific delay functions 2024-12-04 18:32:03 +03:00
Alibek Omarov de1361d99d android: don't show unfinished downloads. Set progress to 1.0f when done 2024-12-04 17:08:55 +03:00
Alibek Omarov e731775f70 android: cleanup unused imports 2024-12-04 16:27:53 +03:00
Alibek Omarov 342d61b283 engine: platform: sdl: always call SDL_Quit in Platform_Shutdown 2024-12-04 16:14:56 +03:00
Alibek Omarov b030cdb4e3 engine: client: add NULL check to prevent crash if in_graph key doesn't exist in client.dll 2024-12-03 21:56:06 +03:00
Alibek Omarov 18a973d4f2 engine: server: always set sv_background to zero on server shutdown rather than on server dll unload 2024-12-03 21:02:37 +03:00
Alibek Omarov 51fa7d2611 wscript: strip lib prefix from new opus and vorbis targets, don't link them in dedicated 2024-12-02 21:59:11 +03:00
Alibek Omarov 6b6d3b3770 3rdparty: opusfile: wscript: hack building on Android with API level lower than 24
In API level 21 **and** _FILE_OFFSET_BITS == 64 we don't get fseeko/ftello functions.
To avoid increasing API level, just set _FILE_OFFSET_BITS to some bogus value.
Undefining it doesn't work as opusfile sets it to 64 automatically.
2024-12-02 21:28:36 +03:00
Alibek Omarov fd5e3fbbb9 android: configure waf with bundled deps to not look for system libs, as Android doesn't have any 2024-12-02 21:10:10 +03:00
Alibek Omarov 6247bbc629 3rdparty: libogg: wscript: remove useless defines 2024-12-02 21:10:00 +03:00
Alibek Omarov 0181e640c9 3rdparty: wscript: set explicit names for correct dependency calc of generated files
This helps avoid issue when the bzip2 or libogg are compiled before header is
generated for them.
In theory, we shouldn't do that, but I guess dependency calculation through
include directives doesn't work when the file doesn't exist.
2024-12-02 21:07:30 +03:00
Alibek Omarov 26230596ba 3rdparty: bzip2: wscript: bring back generating bz_version.h.in now that cmake.py has subst support 2024-12-02 21:07:12 +03:00
Alibek Omarov 884e052d98 scripts: waifulib: cmake: replicate Waf behavior and always add build directories to the include path.
Also, set cmake minimum required version to 3.5 only to shut up deprecation notice.
2024-12-02 21:06:07 +03:00
Alibek Omarov 5516180ed8 scripts: waifulib: cmake: add limited subst feature support 2024-12-02 21:05:59 +03:00
Alibek Omarov 6d00aef398 engine: move soundlib onto client, only leave snd_utils with some functions that's engine core or server are dependent on 2024-12-02 21:05:41 +03:00
Alibek Omarov 2d52dae69c engine: common: soundlib: reformat everything using uncrustify 2024-12-02 21:05:34 +03:00
Alibek Omarov eb64ffcec9 uncrustify: sync with fakk2-sdk and make some fixes on star ptr alignments 2024-12-02 21:05:28 +03:00
Alibek Omarov 7eba5a994d wscript: specifically look for opus 1.4, as 1.5 have broken custom modes
Link to GitHub issue: https://github.com/xiph/opus/issues/374
2024-12-02 21:05:08 +03:00
Alibek Omarov c39d2e243a wscript: look for system provided vorbis and opus dependencies
In some configuration, like Flatpak, on dev machines or when packaging for *nix
we can safely link with system libraries.
2024-12-02 21:04:28 +03:00
SNMetamorphandAlibek Omarov 3661af921e readme: added mention of Ogg Vorbis & Ogg Opus formats support 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 4581755f9b 3rdparty: libogg: added generating of config_types.h 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 593b0f295a engine: soundlib: added proper errors reporting for Ogg Opus sound routines 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 7c23b6473c engine: soundlib: added proper errors reporting to Ogg Vorbis sound routines 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 960a3a1483 engine: soundlib: minor codestyle and headers-related fixes 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 485d4324f8 3rdparty: libvorbis & libvorbisfile combined into one wscript 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 881788c0c9 3rdparty: libogg & opusfile wscript fixes 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 73cf55b958 wscript: link sound format related libraries in XASH_DEDICATED build mode 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov b7c2c476a8 engine: soundlib: implemented sound looping feature for Ogg Vorbis 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov fa152bef20 engine: soundlib: implemented sound looping feature for Ogg Opus 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 770054daaf engine: soundlib: implemented Ogg Opus sounds streaming 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 2ad5066271 engine: soundlib: different Ogg sound formats split to separate files 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 99acd64203 engine: soundlib: implemented Ogg Vorbis sounds streaming 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 86154f81aa engine: soundlib: allowed resampling sounds with rate >44kHz 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov e982b7911f engine: soundlib: implemented Ogg Opus sounds playback 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 4e138ee795 engine: wscript: link libopusfile dependency 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 8e5d0a6425 3rdparty: opusfile: added wscript for libopusfile 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 33901afa57 3rdparty: added libopusfile submodule 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 8fce7dc78e engine: soundlib: initially implemented Ogg Vorbis sounds playback 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov d618b817ca engine: wscript: link libvorbisfile dependency 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 914be8dbd7 3rdparty: vorbis: added wscript for libvorbisfile 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 9e67a90b25 3rdparty: vorbis: added wscript for libvorbis 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 44e67c987b 3rdparty: added Vorbis submodule 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 3c6c90c1e7 3rdparty: libogg: added wscript for libogg 2024-12-02 20:36:33 +03:00
SNMetamorphandAlibek Omarov 3e8bd16d2b 3rdparty: added libogg submodule 2024-12-02 20:36:33 +03:00
Alibek Omarov fb964b8686 mainui: update 2024-12-01 11:34:44 +03:00
Alibek Omarov 38ef16b08b engine: server: do not unload server library on win327 2024-12-01 11:21:02 +03:00
Alibek Omarov 1f5c97964b engine: return full path in server's pfnGetGameDir, if possible 2024-11-30 09:28:30 +03:00
Alibek Omarov 4798cd6d1e filesystem: add new export to get fs_rootdir path 2024-11-30 09:28:30 +03:00
Alibek Omarov df4194ca57 engine: net_chan: check BZ2 functions return value and log if it's not BZ_OK 2024-11-28 19:27:13 +03:00
Alibek Omarov 888599677e engine: net_chan: fix size of outgoing BZ2 compressed packets 2024-11-28 18:50:55 +03:00
Alibek Omarov 22da42b121 3rdparty: mainui: update 2024-11-27 16:59:18 +03:00
Alibek Omarov 5ad8bc3ba4 3rdparty: update submodules 2024-11-27 16:40:14 +03:00
Alibek Omarov 0154ffa060 wscript: try to automatically set console subsystem flag depending on target features
Remove subsystem flag from shlibs and stlibs, it's only required for executables.
2024-11-27 15:43:13 +03:00
Alibek Omarov cb3f5a74a8 wscript: don't check for cmake twice 2024-11-27 15:08:42 +03:00
Alibek Omarov b3c7dbe3e4 wscript: don't install import libraries 2024-11-27 15:08:28 +03:00
Alibek Omarov 6b24b263ab engine: host: expose new -clientport settings. Realign options 2024-11-25 02:53:28 +03:00
Alibek Omarov 75b69fbf85 engine: net_ws: allow setting custom client port 2024-11-25 02:51:40 +03:00
Alibek Omarov 23b410ccb0 engine: mod_bmodel: optimize loading wad textures by directly loading it from the archive through new filesystem functions 2024-11-23 15:04:05 +03:00
Alibek Omarov bf6a9cb0e7 engine: client: make R_GetTextureParms inlined 2024-11-23 15:02:13 +03:00
Alibek Omarov 689e29bc42 engine: client: only load paused icon when requested 2024-11-23 15:01:50 +03:00
Alibek Omarov b316af13d6 engine: client: only load tile image when requested 2024-11-23 15:01:50 +03:00
Alibek Omarov e7f939c87b engine: always add .wad extension to wadlist names to simplify how it's being used 2024-11-23 14:01:09 +03:00
Alibek Omarov b94446161e filesystem: add functions to directly look up into archives 2024-11-23 13:56:53 +03:00
Alibek Omarov 567cf44111 filesystem: wad: remove unused variable in FS_FindFile_WAD 2024-11-23 13:56:25 +03:00
SNMetamorphandAlibek Omarov 9244bdc7db ref: gl: added gl_fog cvar for better GoldSrc compatibility 2024-11-21 23:11:53 +03:00
Alibek Omarov 0db2597d1e engine: platform: psvita: try to explicitly export strtok() function 2024-11-21 05:31:43 +03:00
Alibek Omarov 744d5d1141 ci: include proguard mapping files archive 2024-11-20 17:05:46 +03:00
Alibek Omarov 778315da5f android: let's implement proguard rules for SDL2 2024-11-20 17:05:46 +03:00
Alibek Omarov 1acda22ad4 android: CMakeLists: try to build smaller SDL2 2024-11-20 12:55:26 +03:00
Alibek Omarov 4cb1f69475 android: remove unrelated readme file 2024-11-20 12:42:56 +03:00
Alibek Omarov f1806cbf2e android: add SDL classes and some engine methods to proguard rules file 2024-11-20 12:41:38 +03:00
Alibek Omarov a4beb7d493 android: remove fastlane, as we don't really need it anymore 2024-11-20 12:05:58 +03:00
Alibek Omarov 880ae0fe7c android: change default arguments to -console -log, as -dev enables cheats which may be undesired for users 2024-11-20 10:36:53 +03:00
Alibek Omarov cd3cc7e696 android: FileCopyWorker: implement simple progress tracking 2024-11-20 10:36:24 +03:00
Alibek Omarov 9e9a9847fc android: fix xash-extras assets path 2024-11-20 08:49:42 +03:00
Alibek Omarov cb5f5baa2b Revert "wscript: as an experiment, add -pipe flag for better compilation speeds"
This reverts commit 6bfa5ce600.
2024-11-20 08:13:02 +03:00
Alibek Omarov edef41fb71 ci: android: fix deploying APK to artifacts 2024-11-20 08:08:35 +03:00
Alibek Omarov 6bfa5ce600 wscript: as an experiment, add -pipe flag for better compilation speeds 2024-11-20 08:08:16 +03:00
Alibek Omarov d1f70bfe2c scripts: waifulib: cmake: filter out -MMD compiler flag from generated CMake flags 2024-11-20 07:53:12 +03:00
Alibek Omarov a56f512dc3 ci: fix signing Android APK 2024-11-20 07:43:17 +03:00
Alibek Omarov 7c88fd0a17 ci: android: fix SDL unpacking once again 2024-11-20 07:33:06 +03:00
Alibek Omarov bec23c6d57 ci: don't run Gradle Daemon to not waste time 2024-11-20 07:31:54 +03:00
Alibek Omarov 81197b1aa4 android: bump NDK to r27c 2024-11-20 07:29:36 +03:00
Alibek Omarov 8205e22465 ci: android: fix SDL unpack, don't waste time installing NDK, gradle will do it 2024-11-20 07:29:21 +03:00
Alibek Omarov 8407af17f4 android: don't add verbose flags to waf, fix SDL path on CI 2024-11-20 07:23:40 +03:00
Alibek Omarov 22fef6fa36 android: add forgotten CMakeLists.txt 2024-11-20 07:15:50 +03:00
Alibek Omarov 88f91d3959 ci: download SDL release tarball for Android 2024-11-20 07:04:47 +03:00
Alibek Omarov b63abe1cf2 android: use correct build flavor 2024-11-20 06:56:58 +03:00
Alibek Omarov cd3dc78d4d Include android project into the sources 2024-11-20 06:32:16 +03:00
Alibek Omarov ddf5a01dfc 3rdparty: MultiEmulator: update 2024-11-20 06:32:16 +03:00
Alibek Omarov 10e8790311 filesystem: VFileSystem009: fix missing override keyword on a virtual method 2024-11-20 06:32:16 +03:00
Alibek Omarov f04a26901c Add 'android/' from commit 'add509bf9ebaa488e2afe2cdc158a0e6725cd654'
git-subtree-dir: android
git-subtree-mainline: b9f4f1eba4
git-subtree-split: add509bf9e
2024-11-20 05:31:39 +03:00
Alibek Omarov b9f4f1eba4 engine: client: fix engine features masking for 48 and 49 protocol 2024-11-20 04:16:44 +03:00
Alibek Omarov 8b0d49f036 ci: update SDL2 to 2.30.9 2024-11-18 20:03:34 +03:00
Alibek Omarov e94a2c900f ci: use macos-13, as macos-12 is deprecated by GitHub 2024-11-18 19:55:32 +03:00
Alibek Omarov bfb84a7ac4 ci: rework Linux build scripts, allow crosscompiling with whatever is included in Ubuntu 20.04 (which is used on GitHub Actions now) repositories 2024-11-18 19:55:32 +03:00
Alibek Omarov fa272d9d93 public: add optional feature for COM_ParseFileSafe to ignore shell like hash symbol prefixed comments 2024-11-18 14:14:49 +03:00
Alibek Omarov 87f0217588 engine: client: add cl_showcmd, yet another debugging aid to print current usercmd state 2024-11-18 10:42:39 +03:00
Alibek Omarov c4f71f1a44 engine: client: remove unncesseray int <-> qboolean branch in CL_GetMessage 2024-11-18 10:42:39 +03:00
Alibek Omarov af332eb8ac engine: client: validate dem_usercmd size before reading it into the buffer 2024-11-18 10:42:39 +03:00
Alibek Omarov ac6dc2c2d3 engine: platform: directly call __NR_gettid syscall for compatibility with older systems 2024-11-18 10:42:39 +03:00
Alibek Omarov a29b6772b9 engine: mod_bmodel: fix wadlist, wad file names don't have an extension there 2024-11-18 04:53:48 +03:00
Alibek Omarov 3691f02359 public: crtlib: make Q_strchrnul return non-const pointer, like strchr 2024-11-17 13:56:31 +03:00
Alibek Omarov 622d88eeba engine: client: only check active tempentities when detaching player following tents 2024-11-17 13:38:14 +03:00
Alibek Omarov 56c19c4f5a engine: client: make some simple functions, like querying entity by index, getting local player, inline 2024-11-17 13:37:32 +03:00
Alibek Omarov c5471fe6fd engine: server: make SV_IsPlayerIndex and SV_HavePassword inline 2024-11-17 13:36:40 +03:00
Alibek Omarov 046b1da8a8 ref: fix some possible off by one errors 2024-11-17 13:26:03 +03:00
Alibek Omarov 8fd5a5af96 filesystem: simplify ambient number bound check 2024-11-17 13:04:44 +03:00
Alibek Omarov 229f1560b0 engine: fix some possible off by one errors 2024-11-17 13:04:20 +03:00
Alibek Omarov 8f7f311f60 engine: mod_bmodel: simplify wadlist parser 2024-11-17 06:28:02 +03:00
Alibek Omarov 721c8043f1 public: optimize COM_FileExtension 2024-11-17 06:20:52 +03:00
Alibek Omarov 31a86d8af2 engine: use new Q_splitstr to work with single character delimited strings 2024-11-17 05:35:36 +03:00
Alibek Omarov ac7617990a public: add Q_splitstr function 2024-11-17 05:34:29 +03:00
Alibek Omarov 0813d2c7ce engine: mod_bmodel: merge Mod_LoadColoredLightmap and Mod_LoadDeluxemap into a single function 2024-11-17 04:59:52 +03:00
Alibek Omarov 0ceb0d9e11 engine: provide compatible replacement for CompareFileTime function 2024-11-17 04:33:13 +03:00
Alibek Omarov 30db748dcb engine: net_http: don't consider EISCONN an error, just proceed to next step 2024-11-17 03:13:39 +03:00
Alibek Omarov 399d549d0c engine: net_ws: request Winsock 2 2024-11-17 03:13:39 +03:00
Alibek Omarov 77fb2d0eb2 engine: net_ws: fix misleading error when comparing IPv6 addresses 2024-11-15 16:41:42 +03:00
Alibek Omarov ea88bb88b2 engine: add secondary master server 2024-11-15 15:25:40 +03:00
Alibek Omarov 190e4a5e8a engine: client: don't kill entity's beams if this entity number was never used on client
Fixes issue when beam was sent over to client before it's start point entity
(due to PVS, for example)
2024-11-15 08:07:21 +03:00
Alibek Omarov 823dc3d46f engine: net_http: don't consider EALREADY on connect() an error 2024-11-14 22:55:27 +03:00
Alibek Omarov 779cb2f721 engine: server: use calloc in SV_AllocString, allocate strings at stringspool preventing memory leaks. Fix strings deduplication on 64-bits. 2024-11-13 23:36:53 +03:00
Alibek Omarov 88c42d50f2 engine: server: always allocate svgame.stringspool, it's used to track temp string allocations like in SV_CopyString
Potentially fixes memory leakage on 64-bit when game uses instanced baselines or consistency lists
2024-11-13 23:35:45 +03:00
Alibek Omarov a749bb8ef1 engine: server: reset str64 statistics on server deactivate 2024-11-13 23:32:05 +03:00
Alibek Omarov 723cd8e26c engine: server: adjust 64-bit string pool size depending on max_edicts value (65k for each 1024 edicts) 2024-11-13 23:30:54 +03:00
Alibek Omarov a6592e7776 public: add test to check that pair Q_buildos and Q_buildarch return expected (for this build) data 2024-11-12 21:24:48 +03:00
Alibek Omarov 4342689e73 engine: net_http: fix build with dedicated server 2024-11-12 14:46:06 +03:00
Alibek OmarovandGitHub 8a2a7d1180 engine: rework how HTTP finite-machine works, use function pointers instead of enum. Preliminary chunked transfer and compression support. (#1862) 2024-11-11 10:30:15 +03:00
VladimirandGitHub 199e226758 Documentation updates and additions (#1875)
* Documentation: actualize and prettify entity tools instructions

* Documentation: added article about NAT bypass feature

* Documentation: updated GoldSrc protocol support article
2024-11-11 10:29:24 +03:00
Alibek Omarov 16ed6cbdcb engine: mark some functions as never returning nullptr 2024-11-07 16:11:58 +03:00
Alibek Omarov b51d1a4e2e public: mark some functions as never returning nullptr 2024-11-07 16:11:40 +03:00
Alibek Omarov 534adc9630 common: xash3d_types: add returns nonnull attribute 2024-11-07 15:46:10 +03:00
Alibek Omarov d15949d2e8 Rename _format to FORMAT_CHECK 2024-11-07 14:24:07 +03:00
Alibek Omarov 43609bc77c mainui: update 2024-11-07 14:12:21 +03:00
Alibek Omarov 3917e096ea engine: client: the most important change since forever, move downloading message a bit to the right so it looks better on 640x480 2024-11-07 14:12:10 +03:00
Alibek Omarov d1a571201b engine: client: s_mix: attempt to fix S_InterpolateCubic2x buffer overflow 2024-11-07 14:12:10 +03:00
Alibek Omarov 8a8cdd2927 engine: client: another possible null pointer dereference 2024-11-07 14:12:10 +03:00
Alibek Omarov 3ef4acecb5 Documentation: ports: clarify support for some merged but not tested ports. Add Dreamcast port repository by @maximqaxd 2024-11-07 11:23:21 +03:00
Alibek Omarov e8c1fc958f mainui: update 2024-11-07 10:18:16 +03:00
Alibek Omarov 08bc4ccec4 3rdparty: opus: wscript: implement looking for C99 VLA or alloca 2024-11-07 10:15:19 +03:00
Alibek Omarov 6ae62e3bb1 engine: platform: posix: include sys/filio.h to have FIONBIO declaration for networking code 2024-11-07 07:42:07 +03:00
Alibek Omarov 397f2f208a engine: wscript: link libsocket on Solaris 2024-11-07 07:41:37 +03:00
Alibek Omarov 8bebf698ef ref: fix out of bound access when the entity is marked as player but has invalid number
It's possible when client.dll passes a self allocated entity and wants to draw
it as player but doesn't initialize or set the entity number correctly.
2024-11-07 07:18:14 +03:00
Alibek Omarov 6a2a2c33ee engine: client: don't go out of bounds if studio model don't have any sequences
Fixes models/null.mdl in Master Sword Rebirth. It's technically a valid model, though
completely useless for renderer.
2024-11-07 07:13:20 +03:00
Alibek Omarov 0adda483c5 public: add definitions for Solaris 2024-11-07 07:12:30 +03:00
Alibek Omarov d8eb918cea filesystem: rename IVFileSystem009 to IFileSystem to avoid UBsan errors when debugging a mod that calls this interface using original headers 2024-11-06 19:46:22 +03:00
Alibek Omarov 96b95db7c8 filesystem: compile with rtti, but still disable exceptions 2024-11-06 19:46:22 +03:00
Alibek Omarov b1915106b0 vgui_support: update 2024-11-06 19:46:22 +03:00
Alibek Omarov 0d2a8488ae engine: client: replace illegal for infostring characters in server info got from TSource Engine Query 2024-11-06 19:46:22 +03:00
Alibek Omarov a52c8aa291 ref: soft: as an experiment, reformat ref_soft as it's easier to notice config inaccuracies 2024-11-06 02:41:38 +03:00
Alibek Omarov fbbafb45a3 Add uncrustify config file [skip ci] 2024-11-06 02:40:26 +03:00
Alibek Omarov 659adca473 ref: soft: remove dead, commented out code 2024-11-06 02:17:06 +03:00
Alibek Omarov 38e8a581b6 engine: server: fix possible NULL dereference 2024-11-06 01:39:46 +03:00
Alibek Omarov 06e476e8c8 engine: reorder mstudiocache_t fields for better memory efficiency 2024-11-06 01:39:46 +03:00
Alibek Omarov f529f06ea1 engine: use designated initializers to define BSP lumps. Reorder mlumpinfo_t for better memory efficiency 2024-11-06 01:39:46 +03:00
Alibek Omarov 159ded433d ref: gl: don't touch polygon offset when not drawing debug hulls as it breaks decals with VBO
Also correctly restore polygon offset state so decals gets drawn even with VBO
2024-11-06 01:39:46 +03:00
Alibek Omarov c3b6422ad0 engine: common: add lzss fixes by nillerusr 2024-11-06 01:39:46 +03:00
Alibek Omarov 41b78c26ef engine: client: s_vox: fix incorrect check in VOX_FreeWord 2024-11-06 01:39:46 +03:00
Alibek Omarov ca93c5b666 engine: client: touch: use FillRGBA to draw edit grid 2024-11-06 01:39:46 +03:00
Alibek Omarov 80f8b778a9 engine: client: cl_tent: more accurate R_FizzEffect 2024-11-06 01:39:46 +03:00
Alibek Omarov 8c5db5f980 engine: client: turn some asserts in texture remap code into proper nullptr checks 2024-11-06 01:39:46 +03:00
Alibek Omarov 3756361cfe engine: client: fix possible NULL dereference when setting up bbox for non-solid visent that somehow doesn't have a model 2024-11-06 01:39:46 +03:00
Alibek Omarov 5f3e167799 engine: client: prevent possible null dereference with malformed consistency info packet 2024-11-06 01:39:45 +03:00
Alibek Omarov b7ed779f71 public: mathlib: fix incorrect usage of DotProductAbs, it will give the integer result, while float is expected 2024-11-06 01:39:45 +03:00
Alibek Omarov fa6f564c12 engine: client: allow extended amount of commands to be sent for newer GoldSrc server. Also refactoring 2024-11-06 01:39:45 +03:00
Alibek Omarov ad457f717b engine: client: no sense to check for position history pointers for NULL in CL_FindInterpolationUpdates, as they never are 2024-11-06 01:39:45 +03:00
Alibek Omarov f95ce7f52d engine: client: cl_font: fix possible NULL dereference 2024-11-06 01:39:45 +03:00
Alibek Omarov ec73f23e4a engine: client: rewrite R_RocketTrail for accuracy and fix potential uninitialized vectors 2024-11-05 17:43:09 +03:00
Alibek Omarov 2972d7c309 wscript: disable enum-float-conversion on clang 2024-11-03 04:24:54 +03:00
Alibek Omarov 4d003bc13f ref: remove Mod_LoadMapSprite from RefAPI 2024-11-03 02:59:44 +03:00
Alibek Omarov 4cb11861e4 engine: client: reimplement Mod_LoadMapSprite on engine side 2024-11-03 02:58:31 +03:00
Alibek Omarov addd50467e engine: remove FillRGBABlend from RefAPI. FillRGBA now accepts rendermode parameter 2024-11-03 02:24:36 +03:00
Alibek Omarov 6cd2dbf178 engine: remove R_DrawTileClear from RefAPI 2024-11-03 02:21:38 +03:00
Alibek Omarov f079e63737 engine: client: reimplement R_DrawTileClear on engine-side 2024-11-03 02:19:49 +03:00
Alibek Omarov d807041aa5 engine: client: register sound cvars even if audio was disabled 2024-11-03 01:20:30 +03:00
Alibek Omarov 6153d7f168 engine: make CL_RunLightStyles accept lightstyles array pointer as an argument. Make necessary changes in renderers. 2024-11-03 01:20:30 +03:00
Alibek Omarov e37feece4d engine: finally remove GetLightStyle, GetDynamicLight and GetEntityLight from RefAPI 2024-11-03 01:20:30 +03:00
Alibek Omarov 6cf11cb6cf ref: soft: migrate to new way to get lightstyles and dlights 2024-11-03 01:20:30 +03:00
Alibek Omarov bb4e64ea58 ref: gl: migrate to new way to get lightstyles and dlights 2024-11-03 01:20:30 +03:00
Alibek Omarov 9ed55776a9 engine: add PARM_GET_*_PTR for lightstyles and dlights arrays 2024-11-03 01:20:30 +03:00
Alibek Omarov b45bc9af67 engine: remove gamma functions from RefAPI 2024-11-03 01:20:30 +03:00
Alibek Omarov 2227e487c0 engine: client: explicitly set rendermode for R_ShowTree 2024-11-03 01:20:30 +03:00
Alibek Omarov 1f49ce599f engine: client: fix out of bound read in gamma table access functions 2024-11-03 01:20:30 +03:00
Alibek Omarov 8af995cc28 engine: introduce REF_GET_*_PTR for gamma tables 2024-11-03 01:20:30 +03:00
Alibek Omarov b39d660189 ref: refactor R_BuildLightMap 2024-11-03 01:20:30 +03:00
Alibek Omarov 9608da5bf9 engine: move debug hulls rendering from renderer, implement through TriAPI
Bump RefAPI version to 9.
2024-11-02 22:57:26 +03:00
Alibek Omarov d3adcf3185 ref: soft: fix misplaced lightmaps 2024-11-02 04:09:04 +03:00
Alibek Omarov 40c051fb6b ref: refactor R_AddDynamicLights 2024-11-02 04:08:40 +03:00
Alibek Omarov 015f1ba8c0 ref: gl: small optimization for brush model rendering passes, track the first and last texture id of a special surface (fullbrights, alpha chains, details..) 2024-11-02 03:24:54 +03:00
Alibek Omarov c3de4a5c3b ref: gl: add fullbright textures to the list with VBO renderer 2024-11-02 02:18:43 +03:00
Alibek Omarov 09210e4316 wscript: add option to build with extended msurface_t from HL25 2024-11-02 02:16:59 +03:00
Alibek Omarov 93b382f174 wscript: move SUPPORT_BSP2_FORMAT definition to the main wscript file. Manually define REF_DLL in the build task 2024-11-02 01:57:33 +03:00
Alibek Omarov 42cf51c6aa wscript: don't look for amd64_x86 MSVC crosscompiler when using msvc-wine 2024-11-02 01:55:35 +03:00
Alibek Omarov f7bc258c2f ref: gl: reduce copypasted branch at LM_UploadBlock 2024-11-01 19:06:09 +03:00
Alibek Omarov 9e1908fc6f engine: client: rewrite stupid comma separated single-line operations into more sane code 2024-10-30 22:01:41 +03:00
Alibek Omarov 6bdb3f6ea1 engine: don't save fps_override value as it's an experimental feature 2024-10-30 19:26:37 +03:00
Alibek Omarov 2fe94bceb6 engine: limit framerate during connection to GoldSrc servers to exactly 31 FPS, like GoldSrc 2024-10-30 19:25:48 +03:00
Alibek Omarov 371639f0dc engine: introduce fps_override to unlock the 200 FPS limit in multiplayer games to 1000 2024-10-30 18:28:55 +03:00
Alibek Omarov f88d424ecd engine: client: don't make useless comparison, cl_cmdrate is always clamped between 10 and 100. 2024-10-30 18:16:47 +03:00
Alibek Omarov c2ca80c889 engine: client: don't immediately send client packet after receiveing server packet or full update
It doesn't seem to be useful for anything. Instead, it completely breaks cl_cmdrate behavior, constantly
spamming server with move commands
2024-10-30 18:11:48 +03:00
Alibek Omarov 0313e19674 filesystem: strip upper directory access from FS_FindFile when FS_AllowDirectPath is set to true
Detailed explanation is available in the code comments.
2024-10-29 16:13:31 +03:00
Alibek Omarov 281d4359d0 Upgrade Freedesktop SDK to 24.08 2024-10-29 16:13:31 +03:00
Alibek Omarov 7b02c37fa7 engine: add generated by version line to the config and help.txt files
Remove an attempt to copyright generated files came from the original Xash3D.
2024-10-29 16:13:31 +03:00
Alibek Omarov 2ea0b0d60c engine: client: fix fire field additive transparency from 80 to 180 (thanks @autisoid!) 2024-10-28 20:13:52 +03:00
Alibek Omarov d879e028cf engine: soundlib: snd_wav: fix clang warning 2024-10-28 15:32:25 +03:00
Alibek Omarov 3e7e81e078 engine: platform: android: sprinkle it with more const modifiers 2024-10-28 14:32:57 +03:00
Max ParryandGitHub cc53d59532 gha: adds SDL2 to OSX builds (resolves #1791) (#1855)
* updated build_apple.sh to copy over SDL2 from the Frameworks folder that it was installed in by dep_apple.sh
2024-10-28 12:58:46 +03:00
Alibek Omarov 319dea1f7d mainui: update 2024-10-28 12:22:10 +03:00
Alibek Omarov 48047c05b7 extras: update 2024-10-28 12:22:10 +03:00
Alibek Omarov 85b0273911 engine: client: check resource nIndex before writing it to the precache arrays 2024-10-28 12:22:10 +03:00
Alibek Omarov eb72b6baee ref: gl: fix r_shadows and gl_vbo registration order. It must be registered before reading renderer config 2024-10-28 02:10:24 +03:00
Alibek Omarov 422addcbb6 public: make Q_atoi_hex public, check for 0x prefix 2024-10-28 02:09:05 +03:00
Alibek Omarov 4a58be2aa0 ref: gl: deregister timerefresh command in renderer, as it's renderer-specific 2024-10-28 01:59:39 +03:00
Alibek Omarov 562b54839c engine: client: console: fix printing multiline messages with CRLF, like HTTP headers 2024-10-28 01:58:47 +03:00
Alibek Omarov 639eaa9416 engine: split HTTP client into a separate file 2024-10-27 17:07:35 +03:00
Alibek Omarov 6c6cb65b30 mainui: update 2024-10-27 14:33:27 +03:00
Alibek Omarov 8ea8437e19 3rdparty: opus: downgrade to 1.4.0 2024-10-27 14:32:43 +03:00
Alibek Omarov 2656eb1aeb engine: fix A2S_GOLDSRC_INFO, it must always include Source Engine Query and a null terminator 2024-10-26 20:24:31 +03:00
Alibek Omarov fa1e92b127 engine: request file from server if HTTP locations failed 2024-10-26 20:24:31 +03:00
Alibek Omarov cff8ee13e6 engine: rcon refactoring. Use sizebuf_t to concatenate commands. Only call redirect when we're executing command. 2024-10-26 19:37:30 +03:00
Alibek Omarov 3956e3863e engine: make Netchan_TransmitBits accept const data 2024-10-26 19:19:37 +03:00
Alibek Omarov 9600218757 engine: client: send tempdecal.wad to GoldSrc servers 2024-10-26 19:16:59 +03:00
Alibek Omarov 2db7cb0d64 engine: client: when validating, we're supposed to send move and delta commands 2024-10-26 19:12:52 +03:00
Alibek Omarov 267a70d621 engine: common: don't print svc/clc_nop with net_recv/send_debug 2024-10-26 05:18:09 +03:00
Alibek Omarov 667bedab82 engine: client: allow reading upper directories for clc_fileconsistency. Initialize md5 digest, add note about servers relying on uninitialized md5 value in some cases. 2024-10-26 05:17:24 +03:00
Alibek Omarov 49990a0859 mainui: update 2024-10-26 05:15:55 +03:00
Alibek Omarov f7c4cd9398 engine: client: allow case-insensitive goldsrc proto argument in connect and queryserver commands 2024-10-26 05:15:46 +03:00
Alibek Omarov cd4f4d5ad4 engine: common: fix hpkextract command 2024-10-26 05:15:09 +03:00
Alibek Omarov fe429fe213 engine: common: net_ws: fix HTTP request when server have custom port and/or doesn't have slash at the end of URL. Set Accept: */* just in case. 2024-10-26 05:14:51 +03:00
Alibek Omarov 0a24ca3fe2 engine: client: fix svc_updateuserinfo for inactive player on GoldSrc servers 2024-10-26 05:13:22 +03:00
Alibek Omarov 8c93a0d247 engine: client: allow playing back demos recorded on GoldSrc servers 2024-10-26 05:12:11 +03:00
Alibek Omarov 5c75dda864 mainui: update 2024-10-26 02:42:30 +03:00
Alibek Omarov 55bdded6a4 engine: add pfnIsCvarReadOnly to mainui API 2024-10-25 05:09:02 +03:00
Alibek Omarov 25b2c0f7e3 ref: gl: use FCVAR_GLCONFIG on VBO and detail textures cvars, so it always gets saved to opengl.cfg 2024-10-24 23:31:16 +03:00
Alibek Omarov ed522852cf mainui: update 2024-10-24 23:30:23 +03:00
Alibek Omarov 224e42d345 engine: platform: android: make dlsym-weak C++ again (because of struct soinfo definition). Reformat linker.h file as well. 2024-10-24 17:54:09 +03:00
Alibek Omarov 128a1f59a9 engine: cleanup XASH_64BIT usage. Always use it from build.h 2024-10-24 16:39:09 +03:00
Alibek Omarov 40ffde0439 3rdparty: opus: update to 1.5.2 2024-10-24 15:51:41 +03:00
Alibek Omarov ec5578a437 ref: gl: vgl_shim: remove -fno-PIC to properly link it with shared library 2024-10-24 15:47:06 +03:00
Alibek Omarov 1cf40a2d17 engine: wscript: remove useless globs 2024-10-24 15:46:33 +03:00
Alibek Omarov 958ea0ac1d scripts: gha: temporarily enable verbose build output for PSVita 2024-10-24 02:05:47 +03:00
Alibek Omarov a9fdae28b2 engine: platform: android: reformat dlsym-weak and make it C only 2024-10-24 02:04:52 +03:00
Alibek Omarov 3d9eb869b0 ci: fix netbsd bzip2 package name 2024-10-24 00:57:18 +03:00
Alibek Omarov 8162c6d42f scripts: waifulib: xshlib: prepend xshlib so it's always first 2024-10-24 00:46:43 +03:00
Alibek Omarov 48a9f17222 filesystem: only export GetFSAPI, CreateInterface is useless with static linking (and should be implemented differently) 2024-10-24 00:40:47 +03:00
Alibek Omarov e381d04094 ref: simplify wscripts, remove gl2_shim unused wscript, fix non-existent export in exports.txt 2024-10-24 00:40:12 +03:00
Alibek Omarov 0e79326571 waf: upgrade to latest, fix for api changes 2024-10-24 00:37:05 +03:00
Alibek Omarov f7eb8cd913 engine: wscript: ensure we always add needed features when mixing C and C++ objects. Simplify bld call for all platforms 2024-10-23 23:22:23 +03:00
Alibek Omarov a15c1f99b2 wscript: remove useless features 2024-10-23 23:20:47 +03:00
Alibek Omarov ba2191172d ci: add bzip2 for sourcehut CI 2024-10-23 20:25:26 +03:00
Alibek Omarov 6ab2c9dbbf engine: client: fix out of bounds access with some ticket generators
* Update MultiEmulator submodule
2024-10-22 02:13:36 +03:00
Alibek Omarov 7da460d4b1 public: bump miniz to latest release 2024-10-21 21:22:50 +03:00
Alibek Omarov ffe7b1f4a1 3rdparty: MultiEmulator: move it to submodule 2024-10-21 14:08:16 +03:00
Alibek Omarov 6a1f502d25 3rdparty: MultiEmulator: remove unused code 2024-10-21 06:30:53 +03:00
Alibek Omarov 434359ea01 3rdparty: update mainui and extras 2024-10-21 06:19:11 +03:00
Alibek Omarov ae2ad6ddf2 3rdparty: add MultiEmulator by 2010kohtep
* patched to be portable, turned into a static library
* integrated to the engine
2024-10-21 06:19:11 +03:00
Alibek Omarov ec11683dc5 engine: client: minor fix, reference cl_allowdownload cvar actual name 2024-10-21 04:49:25 +03:00
Alibek Omarov 47318b0c14 engine: server: minor fix, use __func__ instead of the function name in debug message 2024-10-21 02:32:07 +03:00
Alibek Omarov 60d6214ad7 engine: client: implement parsing GoldSrc server query response for mainui_cpp 2024-10-21 02:31:45 +03:00
Alibek Omarov a3e26a21a7 engine: common: net_chan: as we expect pfnBlockSize to be always set, use it to determine if netchan was initialized or not 2024-10-21 02:30:49 +03:00
Alibek Omarov d0f3a6f74b engine: client: add command queryserver for mainui to query a specific address. Make server querying commands restricted 2024-10-20 02:22:09 +03:00
Alibek Omarov fee236a050 engine: common: net_ws: make NET_IsLocalAddress inline 2024-10-19 14:08:27 +03:00
Alibek Omarov e3e4bcc015 engine: global refactoring of connectionless packets, now they can be customized from single protocol.h header 2024-10-19 14:05:00 +03:00
Alibek Omarov 2d546ccbf7 engine: implement CL_MsgInfo for dedicated server 2024-10-18 03:13:43 +03:00
Alibek Omarov b41804bb5b mainui: update 2024-10-17 14:56:38 +03:00
Alibek Omarov 47a04df189 wscript: try to fix Windows XP compatibility on 32-bit binaries 2024-10-17 14:56:10 +03:00
Alibek Omarov 2efedaf46c pm_shared: mark PM_TraceSurface call in PMove API as Xash3D specific 2024-10-17 03:36:29 +03:00
Alibek Omarov 49e43c830b engine: client: fix formatting error in CL_ParseExtraInfo 2024-10-16 22:29:21 +03:00
Alibek Omarov 763e101208 ref: preserve aspect ratio when saving level and save shots 2024-10-16 21:35:52 +03:00
Alibek Omarov e39a62b1fd mainui: update 2024-10-16 08:33:44 +03:00
Alibek Omarov da76abda75 engine: even more refactorings to avoid global cls.legacymode usage, now with GoldSrc server autodetection 2024-10-16 07:31:27 +03:00
Alibek Omarov 829d7d0a7e engine: client: CL_SendConnectPacket refactoring 2024-10-16 07:02:23 +03:00
Alibek Omarov 9f6372b305 engine: client: implement GoldSrc fragment size limits 2024-10-16 07:00:10 +03:00
Alibek Omarov 12edd782c6 engine: common: net_chan: always rely on pfnBlockSize being non-null 2024-10-16 06:59:33 +03:00
Alibek Omarov 0b59fa9416 engine: swap Cvar_VariableInteger and simple integer checks for performance 2024-10-16 06:57:46 +03:00
Alibek Omarov cc0f12ed26 engine: client: add stubs for richpresence commands added in HL25 2024-10-16 05:57:32 +03:00
Alibek Omarov f42553d0e1 readme: install 32-bit deps on Ubuntu with aptitude, as it's less prone to fuck up entire system (remove random packages, bootloader, etc...) [skip ci] 2024-10-16 00:32:23 +03:00
Alibek Omarov e7564420c9 engine: fix some ubsan warnings (alignment, integer limits...) 2024-10-16 00:32:22 +03:00
Alibek Omarov e81a0ded11 engine: client: fix sendres message for GoldSrc protocol 2024-10-16 00:32:22 +03:00
Владислав СуховandAlibek Omarov add509bf9e android: apply themed icon on Android 13+ 2024-08-01 15:08:42 +03:00
dependabot[bot]andAlibek Omarov e4bc767644 build(deps): bump rexml from 3.2.5 to 3.3.2
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.5 to 3.3.2.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.5...v3.3.2)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-25 10:33:11 +03:00
Владислав СуховandAlibek Omarov 97ab977f58 android: fix a string not fitting on some DPIs 2024-07-24 13:49:45 +03:00
DavidandAlibek Omarov 058aca0ce3 Fix strings.xml ptbr 2024-07-23 19:25:34 +03:00
Владислав СуховandAlibek Omarov 8ab693f3fe android: added russian strings 2024-07-23 17:55:51 +03:00
Alibek Omarov 71b2232995 Remove non-translatable strings from values-pt-rBR 2024-07-17 02:29:19 +03:00
DavidandAlibek Omarov a2d9730c60 Update strings.xml to Portuguese brazilian 2024-07-17 02:29:19 +03:00
Alibek Omarov 4de1241713 Update HLSDK and Xash3D submodules 2024-07-09 19:53:44 +03:00
Alibek Omarov 55d78b0197 AndroidManifest: use launchMode=singleTask, so our activity gets pushed at the top of the stack. Besides, launching engine again with another engine launched in background just crashes it 2024-07-09 16:30:26 +03:00
Alibek Omarov c3c277f03b AndroidManifest: disable unneeded configChanges, we don't care about RTL settings in-game or locale changes. Add touchscreen just in case (old port uses it somehow?) 2024-07-09 16:29:21 +03:00
Alibek Omarov ccb687e552 xash3d-fwgs: update submodule 2024-07-08 22:25:39 +03:00
Alibek Omarov 075dbbd08b hlsdk-portable: update submodule 2024-07-08 22:24:30 +03:00
Alibek Omarov 24266c64ef SDL: update submodule 2024-07-08 22:23:57 +03:00
Alibek Omarov f19430447a gradle: upgrade gradle and android plugin 2024-07-08 22:21:26 +03:00
Bohdan Shulyar 67df4861ce add back mittorn's exit zone 2024-02-16 12:52:03 +02:00
Velaron 4ad3e52407 Fix build again 2024-02-10 00:53:46 +02:00
Velaron b5b2e322c2 Fix build 2024-02-08 23:50:09 +02:00
Velaron 2e39432e04 Support hd background 2023-11-23 15:03:08 +02:00
Velaron 75e0eb8f7d android: move to gradle 2023-10-26 14:25:18 +03:00
LekKitandGitHub 8fb8ee7e22 ref: soft: implement r_fullbright 2022-09-25 08:37:34 +00:00
Alibek Omarov 4d7309b77d gitignore: add build dirs 2021-12-08 18:04:34 +03:00
Alibek Omarov 384cc8541e compile.sh: use clang bundled in NDK 2021-12-08 18:04:34 +03:00
Alibek Omarov 63bd4faa22 Update submodules 2021-12-08 18:04:34 +03:00
Bohdan Shulyaranda1batross acba3e8c7b android: proper escaping in gen-version.sh 2021-10-09 21:21:01 +03:00
Alibek Omarov a4ec54551a android: fix ampersand, lt, gt in version generator script 2021-07-03 22:45:29 +03:00
VelaronandAlibek Omarov #SupportRMS 155e766276 android: update signature check 2021-04-04 21:56:15 +03:00
VelaronandAlibek Omarov #SupportRMS 59ef64c821 android: update certificate check 2021-04-04 21:56:15 +03:00
Alibek Omarov 9feaee3e28 android: bump API level to 29 (Android 10) to support allowAudioRecording manifest property. Could be also done with reflection but I don't want do reflection 2020-11-27 21:58:11 +03:00
nillerusrandAlibek Omarov 5fd30876ab fix max_aspect 2020-10-29 21:35:26 +03:00
abasgamesandAlibek Omarov 8d1288373d Audio capture 2020-09-30 21:39:50 +03:00
Alibek Omarov f487cf0763 Revert "waf/android: add dex output to aapt input"
This reverts commit c2840ce608.
2020-08-23 19:07:22 +03:00
Alibek Omarov bea0f46d31 android: don't pause on foldables 2020-08-23 19:04:24 +03:00
Francisco MedinaandAlibek Omarov a55282f2c8 l10n: Spanish: Translated using Weblate
Currently translated at 84.0% (58 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/es/
2020-07-22 15:26:38 +03:00
Francisco MedinaandAlibek Omarov 09764c65ae l10n: Spanish: Added translation using Weblate 2020-07-22 15:26:38 +03:00
AlperenandAlibek Omarov 6f29e2ea12 l10n: Turkish: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/tr/
2020-07-22 15:26:38 +03:00
Alibek Omarov 2ed18ddded readme: add simple readme 2020-07-11 16:19:08 +03:00
mittorn 9f45a1e8cb XashService: fix crash on api26 2020-07-10 09:16:11 +07:00
mittorn 2e5fcd45bd XashActivity: enable navbar menu key 2020-07-10 06:54:32 +07:00
mittorn 2c8cf356f9 XashActivity: fix white navbar background 2020-07-10 06:53:31 +07:00
mittorn 8b6243d872 fwgslib: fix immersive mode check 2020-07-10 06:52:57 +07:00
mittorn 8082d2092f XashService: Icon does not exist before 23 2020-07-08 01:47:31 +07:00
mittorn c2840ce608 waf/android: add dex output to aapt input 2020-07-08 01:46:19 +07:00
mittorn addd2f76ef resources: copy mipmaps to drawable, ensure mipmap used on 19+ and xml icon on 26+ when possible 2020-07-08 01:03:18 +07:00
mittorn d6c715c5c3 XashService: re-enable api21 notification code 2020-07-08 00:59:57 +07:00
mittorn 1e84082d81 AndroidManifest: fix exit button receiver name 2020-07-08 00:59:12 +07:00
mittorn 8602bd4e9e Refactor XashActivity, fix crash in XashService, add compat wrappers 2020-07-07 07:28:43 +07:00
mittorn ac0e9b633d mipmap does not work on 4.2- 2020-07-07 07:26:25 +07:00
mittorn d683f32a34 platform28 allows implicit cast Object to NotificationManager??? 2020-07-07 07:22:32 +07:00
mittorn b92b13158b waf/android: prefer aapt, aapt2 has compatibility issues 2020-07-07 07:21:01 +07:00
Serkan CıkandAlibek Omarov dea0c2ce43 l10n: Italian: Translated using Weblate
Currently translated at 86.9% (60 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/it/
2020-06-06 00:10:16 +03:00
Adam FullbusterandAlibek Omarov 0ec21fa424 l10n: Italian: Translated using Weblate
Currently translated at 69.5% (48 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/it/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov 0258055c1d l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
AnonymousandAlibek Omarov 9280d47766 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov 63d6c2f1fd l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
AnonymousandAlibek Omarov ad3ca3b304 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov 1564dc4e8e l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
AnonymousandAlibek Omarov 7dbaf87cd4 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov 5b0aed5035 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
AnonymousandAlibek Omarov 72f3fc9578 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov 00a0959e45 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Bohdan ShulyarandAlibek Omarov f587f6ecd6 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
AnonymousandAlibek Omarov 2906ab7cd5 l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-06-06 00:10:16 +03:00
Emanuele ScherilloandAlibek Omarov 2b30141bcc l10n: Italian: Added translation using Weblate 2020-06-06 00:10:16 +03:00
МаксимandAlibek Omarov 7bcce219ed l10n: Ukrainian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/uk/
2020-05-25 21:14:30 +03:00
Serkan CıkandAlibek Omarov 5a7ea67a0e l10n: Turkish: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/tr/
2020-05-25 21:14:30 +03:00
Allysson Samuel Amorim Vaz CunhaandAlibek Omarov c04631dad5 l10n: Portuguese (Brazil): Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/pt_BR/
2020-05-25 21:14:30 +03:00
Serkan CıkandAlibek Omarov aca292da94 l10n: Turkish: Added translation using Weblate 2020-05-25 21:14:30 +03:00
МаксимandAlibek Omarov f1b4b01029 l10n: Ukrainian: Added translation using Weblate 2020-05-25 21:14:30 +03:00
Allysson Samuel Amorim Vaz CunhaandAlibek Omarov 5d737987bb l10n: Portuguese (Brazil): Added translation using Weblate 2020-05-25 21:14:30 +03:00
a1batross f84dafb7fe l10n: Russian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/ru/
2020-05-06 02:39:28 +03:00
a1batross dc6397e607 l10n: English: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS Android/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/en/
2020-05-06 02:37:35 +03:00
a1batross a1f8416336 l10n: Russian: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS Android/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/ru/
2020-05-06 02:37:35 +03:00
a1batross 02f1a92a1b l10n: English: Translated using Weblate
Currently translated at 100.0% (69 of 69 strings)

Translation: Xash3D FWGS Android/Android translations
Translate-URL: https://l10n.mentality.rip/projects/xash3d-fwgs-android/android-translations/en/
2020-05-06 02:37:35 +03:00
Alibek Omarov d5d3c6868e XashActivity: revert 59411a2 2019-12-23 05:48:30 +03:00
Alibek Omarov b9028879fb XashService: refactor notification creating, add notification channels on Oreo, use native notification layout on >=21 2019-12-23 05:33:40 +03:00
Alibek Omarov 59411a214a XashActivity: refactor resizing code 2019-12-23 02:33:50 +03:00
Alibek Omarov b69649c50e android: wscript: make Java code compatible with old Android devices 2019-12-04 01:16:34 +03:00
Alibek Omarov dc13474729 android: use ImageView instead of drawableLeft 2019-12-04 01:15:20 +03:00
Alibek Omarov 7674964cc8 android: add forgotten permission, application options, bump version, rename ic_launcher_round to ic_launcher to make Android 7.x happy 2019-12-04 00:55:17 +03:00
Alibek Omarov a8f3701e92 android: implement better way to get JNI libraries directory 2019-12-03 03:46:14 +03:00
Alibek Omarov ad3157e940 submodules: update 2019-12-03 03:11:51 +03:00
Alibek Omarov 332f81553a android: revert to Java EGL management 2019-12-02 02:16:08 +03:00
Alibek Omarov c22c227108 android: add adaptive icons for 26. Fix references to icons. 2019-12-01 16:20:06 +03:00
Alibek Omarov e72b89a88b android: move icons to appropriate folder 2019-12-01 01:28:41 +03:00
Alibek Omarov 3369cca3e6 android: increase target API to Pie(GP requirements), implement requesting permissions 2019-11-29 19:42:48 +03:00
Alibek Omarov 906e6ece0b compile.sh: use host clang by default, enable aarch64 2019-11-29 17:04:04 +03:00
Alibek Omarov 4179464de1 submodules: update 2019-11-29 17:03:26 +03:00
Alibek Omarov fe0661fde9 android: rename package for new engine 2019-11-28 23:06:56 +03:00
Alibek Omarov 76cd263c83 compile.sh: enable strip 2019-11-07 08:47:48 +03:00
Alibek Omarov fa4c023961 compile.sh: allow to override API version 2019-11-07 07:08:06 +03:00
Alibek Omarov e18d0976ef compile.sh: enable polly on host toolchain, as NDK doesn't have it... 2019-10-11 09:11:12 +03:00
Alibek Omarov ae23528e04 compile.sh: fix checking variables, enable poly-opt for SDK and engine on release builds 2019-10-11 08:53:03 +03:00
Alibek Omarov bee36ae6a8 waf: upgrade to latest waifu revision 2019-10-11 08:52:19 +03:00
Alibek Omarov 397dbcad51 submodules: update to latest revision 2019-10-11 08:51:53 +03:00
Alibek Omarov 4eb42bf73a compile.sh: spew config.log on error 2019-10-09 02:59:16 +03:00
Alibek Omarov eb830889f9 compile.sh: allow TOOLCHAIN to be overriden 2019-10-09 01:51:14 +03:00
Alibek Omarov 98ba50c974 compile.sh: allow ARCHS to be overriden 2019-10-09 01:49:56 +03:00
Alibek Omarov a692857fe8 compile.sh: use shared certificate by default even on release builds 2019-10-07 05:54:56 +03:00
Alibek Omarov 4fa711bfd3 compile.sh: fix build type selection 2019-10-07 05:35:45 +03:00
Alibek Omarov 8d9d9fd682 android: sign debug builds with debug key 2019-09-27 05:33:12 +03:00
Alibek Omarov 949c9e278b waifulib: android: refactoring, add support for apksigner 2019-09-27 05:32:52 +03:00
Alibek Omarov 74babbfe01 submodules: update 2019-09-21 03:54:00 +03:00
Alibek Omarov e260228e90 submodules: update 2019-09-20 18:50:51 +03:00
Alibek Omarov a0d0aac9da Update submodules 2019-09-11 20:44:46 +03:00
Alibek Omarov 6755c8ef7f waf: move to waifu 2019-09-10 14:46:52 +03:00
Alibek Omarov b7d97bc21b compile.sh: enable building native code 2019-09-10 11:27:21 +06:00
Alibek Omarov 24a56795aa compile.sh: add termux support, disable native building temporarily 2019-08-28 01:18:26 +03:00
Alibek Omarov 2fd2d749dc android: wscript: enable android opt, set jni(commented out, as I can't test it now) 2019-08-28 01:17:39 +03:00
Alibek Omarov 84e158da79 waflib: android: apkjni packaging is optional now(activated by passing 'jni'), add aapt1 preliminary support 2019-08-28 01:16:34 +03:00
Alibek Omarov 31edf71985 submodules: update 2019-08-23 12:31:03 +03:00
Alibek Omarov 4f25b03c9c compile: check for symlinked source 2019-07-29 08:39:40 +03:00
Alibek Omarov 3da70aa4f7 compile: remove hardfp from defaults, remove static library hack, don't sign if USER isn't me :) 2019-07-29 08:06:16 +03:00
mittorn 74dd990f2f waflib: android: fix wrong --release for dx 2019-05-19 18:50:39 +07:00
Alibek Omarov 1aab248fa4 waflib: android: python 3 fix 2019-05-19 14:48:33 +03:00
Alibek Omarov 8582c505e9 XashActivity: remove java EGL code 2019-05-12 02:59:59 +03:00
Alibek Omarov 57cb127d73 waflib: android: use static version checks instead of try-catch, define which version has introduced d8 2019-05-11 18:58:22 +03:00
Alibek Omarov af9a759e9a waflib: android: build-tools 27 support 2019-05-10 03:14:42 +03:00
Alibek Omarov c7b1f28590 compile.sh: exit if waf has failed 2019-05-10 03:13:57 +03:00
Alibek Omarov 37c84ad909 compile.sh: add extras.pak generation(TODO: move to waf?) 2019-05-06 20:18:38 +03:00
Alibek Omarov face262d32 engine: update 2019-05-06 19:26:54 +03:00
Alibek Omarov c9716b87be waflib: android: implement appending native libraries, make dependency graph cleaner 2019-05-06 19:24:41 +03:00
Alibek Omarov 5ec762b69c compile.sh: add build types 2019-05-06 19:12:39 +03:00
Alibek Omarov 688fc87f48 XashActivity: remove gpgs_support 2019-05-06 19:12:25 +03:00
Alibek Omarov 0aaf624cd7 compile.sh: build also HLSDK. Add check if sources are symlinked, which is really handy in development 2019-05-06 04:24:42 +03:00
Alibek Omarov 64403a5cd8 submodules: add 2019-05-06 04:23:59 +03:00
Alibek Omarov 5efac59e8f android.mk: completely remove it, as we use waf everywhere now, add simple buildscript 2019-05-01 19:05:15 +03:00
Alibek Omarov 2eae8a02e5 nanogl: remove submodule, now it's direct dependency of engine 2019-04-27 12:09:59 +03:00
Alibek Omarov 0cfc3966c5 gpgs_support: drop Google Play Games services support, it wasn't used anyway by any game. We need another interface, probably intent-based. 2019-04-27 12:09:27 +03:00
Alibek Omarov a56fe98dc5 waflib: android: cleanup 2019-04-25 04:37:28 +03:00
Alibek Omarov 586a03d431 gitignore: extend even more 2019-04-25 04:24:15 +03:00
Alibek Omarov c175a1b949 waf: add android.py plugin that helps build APK file 2019-04-25 04:23:30 +03:00
Alibek Omarov 3937520d3e gitignore: add *.pyc 2019-04-25 04:22:08 +03:00
Alibek Omarov 4309604eca waf: deploy waf build system 2019-04-25 04:21:38 +03:00
Alibek Omarov 4360676f96 scripts: move scripts to android folder 2019-04-25 02:28:36 +03:00
Alibek Omarov 6ad205a619 fwgslib: certcheck: remove BuildConfig.java dependency 2019-04-15 23:55:59 +03:00
Alibek Omarov 24632c0e69 android: move all sources to android folder, remove ant build system 2019-04-15 23:52:47 +03:00
Night Owl 6d2d7a9d6d Fix broken link. Update version string. 2018-10-09 10:43:54 +05:00
a1batross 7e76089b76 Bump to 0.19.3 2018-09-28 18:54:07 +03:00
Night Owl 73cbe46ecb Fix typo. Add a missing newline character. 2018-09-28 18:11:44 +05:00
Alibek Omarov 385c557a60 Add privacy policy link on our website 2018-09-25 17:40:58 +03:00
mittornandGitHub 6058828a33 Decrease mMinHeight for cstrike to make minimal resolutions availiable 2018-07-25 00:24:47 +00:00
Alibek Omarov cd11dd138e Update engine 2018-07-14 21:20:32 +03:00
mittorn 5b93c0651e Update extras again 2018-07-14 17:47:37 +07:00
Alibek Omarov 63026564c2 Update pak version. Update engine submodule 2018-07-14 01:24:05 +03:00
Alibek Omarov f415ac379d An update is scheduled for 14th of July 2018-07-14 00:04:01 +03:00
Alibek Omarov 7b62f5af21 Update submodules 2018-07-14 00:00:39 +03:00
mittorn bfef1cf301 Fix vibrator check 2018-06-06 01:37:58 +07:00
Night OwlandAlibek Omarov 0f02f3472e Update README.md. 2018-05-24 22:56:46 +03:00
mittorn 2f8ab7174b Add android.max_aspect tag 2018-05-15 19:54:53 +07:00
mittorn 1b5e416988 Remove some magic numbers 2018-05-12 03:02:37 +07:00
mittorn 03105e096d Code clean, improve resolution selection 2018-05-12 02:56:17 +07:00
mittorn 3d19551172 Update submodules 2018-04-07 13:59:25 +07:00
mittorn 811de8d4e7 Fix possible page overflow 2018-04-07 13:53:14 +07:00
mittorn 0d1d899d7c Refactoring, fix theme 2018-04-07 13:52:57 +07:00
mittorn 72e3313c30 Remove gkitchy adjustViewBounds, add landscape hack 2018-04-07 13:52:38 +07:00
Alibek Omarov b48d965111 Fix gamepads, move gamepad motion event source check before mouse 2018-04-07 03:48:37 +03:00
Alibek Omarov 08d2309986 Add FExactBitSet for checking bitmasks, but exact 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov cc0bf4bc43 Fix constants in switch cases 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov fbb5301075 Smooth page return 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov 47433059b5 Fix animation speed 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov 5aaa34dc7e Make title adaptive 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov f68aa134a1 Use adaptive text size 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov 8577f3bd79 Implement PagedView 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov 8e441e2b96 Fix layout sizes 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov 2b0a4f552b Workaround strange getExternalFilesDir freeze 2018-04-07 03:48:37 +03:00
mittornandAlibek Omarov aa3af3bf67 Fix html content and localization 2018-04-07 03:47:03 +03:00
mittornandAlibek Omarov 31573ccbeb Simple tutorial (without fragments, ViewPagers and vertical layout) 2018-04-07 03:47:03 +03:00
Alibek Omarov 9c086c503a Fix NPE in GetExternalFilesDir. Correct return value in gamepad code 2018-04-01 18:29:57 +03:00
Alibek Omarov 27b2fb55c2 Update submodules 2018-04-01 02:00:22 +03:00
Alibek Omarov 69081da566 Bump versionCode to 1096, as release is scheduled for 1 April 2018-03-23 22:20:08 +03:00
Alibek Omarov 2d04a3faa9 Fallback to external files dir, if writedir invalid(empty) 2018-03-23 22:20:08 +03:00
Alibek Omarov 300e65e200 Suggest converting to rodir, if write test has failed 2018-03-23 22:20:08 +03:00
Alibek OmarovandGitHub 09a88e4cbc Merge pull request #163 from VladAndroidGamer/patch-3
Русский Readme
2018-03-22 01:03:40 +03:00
Владислав СуховandGitHub ffa411b874 Russian Readme file 2018-03-21 14:47:56 +06:00
Владислав СуховandGitHub cc25bb91bd Русский Readme 2018-03-21 14:44:20 +06:00
Alibek Omarov a3e10ef9ac Update buildscript 2018-03-21 02:19:43 +03:00
Alibek Omarov 1c1cab6e30 Use monochrome special icon for status bar service. Add RoDir settings to the launcher. 2018-03-21 02:18:47 +03:00
Alibek Omarov 88873cad9d Fix untranslated button Finish 2018-03-14 00:27:31 +03:00
Alibek OmarovandGitHub 48fe23b483 Merge pull request #162 from VladAndroidGamer/patch-2
Update pages.xml
2018-03-08 11:42:22 +03:00
Владислав СуховandGitHub 76f3b31eb4 Update pages.xml
Исправлены опечатки
2018-03-08 09:19:12 +06:00
Alibek Omarov ea4929c7e7 Enable tutorial view by default 2018-03-01 23:51:34 +03:00
Alibek Omarov 00d5b652c1 Fix build 2018-03-01 23:45:29 +03:00
Alibek Omarov df311e861d Russian translation of tutorial 2018-03-01 23:38:53 +03:00
Alibek Omarov e7a6988811 Update pages.xml 2018-03-01 23:28:39 +03:00
Alibek Omarov 9c72a2ed05 All translation other than English and Russian was temporarily disabled, because they do not represent exact translation of English text anymore(missing translations, translation errors) 2018-03-01 22:14:52 +03:00
Alibek Omarov ea085ae8d7 Update Russian translation 2018-03-01 22:12:34 +03:00
Alibek Omarov 4cf28bb6b8 Fix English strings 2018-03-01 22:11:55 +03:00
Alibek Omarov 4e58654c10 Remove hardcoded strings to proper translation 2018-03-01 21:50:13 +03:00
Alibek Omarov 57847a7dd3 Now all tutorial textures have same size. Add tutorial texture for fifth page 2018-03-01 20:50:46 +03:00
Alibek Omarov a1af4dba99 Update engine 2018-02-15 19:24:55 +03:00
Alibek Omarov 96432c6ca9 Common sign key for all testing builds 2018-02-15 19:14:16 +03:00
Alibek Omarov 268f4a8ec2 Update submodules 2018-02-04 17:54:22 +03:00
Alibek Omarov a80e3e3022 Fix wrong directory name in buildscript 2018-02-04 17:53:52 +03:00
Alibek Omarov 8e517beff8 Revise gamepad buttons IDs, fix wrong 2018-02-04 17:52:22 +03:00
Alibek Omarov 108dc1243f Add --no-undefined globally to Application.mk 2018-02-04 17:34:26 +03:00
Alibek Omarov 3b3d82e097 Fix tutorial back string 2018-02-04 17:10:56 +03:00
Alibek Omarov 94bdf0238a Twice decrease margins for notification 2018-02-04 17:08:07 +03:00
Alibek Omarov 41fc8e1672 Add build script from cs16client 2018-02-04 17:00:41 +03:00
Alibek Omarov 4d7018bfde Update russian translation. Get rid of untranslated strings in layouts. Remove build.sh script. 2018-02-04 17:00:16 +03:00
Alibek Omarov 0637008eec Set more proportional margins for notifications 2018-02-04 13:36:22 +03:00
Alibek Omarov c658fe782d Reformat XashService.java 2018-02-04 13:32:57 +03:00
Alibek Omarov 94ec3df282 Update test AndroidManifest. Set version string to 0.19.1. 2018-02-04 12:54:14 +03:00
Alibek Omarov 90fa1c1fef Add graphics for page0 and page3, remove HTML tags from pages.xml. 2018-02-04 01:46:38 +03:00
Alibek Omarov 78e36a2eab Add @msayan's tutorial-view library, add support-v4 as dependency, add paged tutorial(WIP) 2018-01-30 23:19:07 +03:00
Alibek Omarov 88df5e4631 Update strings: set version to 0.19.1, add @nekonomicon to credits, add @msayan to credits for tutorial-view library, add Finish string 2018-01-30 23:16:18 +03:00
Alibek Omarov 124bedcc59 Fix tutorial pages 2018-01-30 21:37:15 +03:00
Alibek Omarov 92423c8108 Rename drawable files, fix build 2018-01-29 02:15:32 +03:00
Alibek Omarov d7389e4511 Remove unneeded SUPPORT_WEBP=false from travis.yml, as we don't use SDL and SDL_image. Update travis-deploy.sh from engine repo 2018-01-29 01:58:52 +03:00
Alibek Omarov b923b3d6b6 Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2018-01-29 01:14:15 +03:00
Alibek Omarov b7b468ba14 Add pictures for first two tutorial pages 2018-01-29 01:13:55 +03:00
mittorn 20f95b2104 Fix detecting mouse as touchscreen, add PointerIcon support 2018-01-24 04:11:13 +07:00
mittorn c5900d761f Update submodule 2018-01-24 00:10:57 +07:00
Alibek Omarov a09abe4bcf Rewrite pages.xml for English 2018-01-12 14:18:54 +03:00
Alibek Omarov 85641c3e1d ShellExecute extension to open update page 2018-01-08 19:42:09 +03:00
Alibek Omarov 57ce27dfe7 Don't read symlink while checking game lib directory. It's non-portable. 2018-01-01 20:18:17 +03:00
Alibek Omarov 2eb6fbbc42 Don't start service, if we are closing for some reason 2018-01-01 20:17:24 +03:00
Alibek Omarov (a1batross) 37a4c921a6 Update nanogl 2017-11-20 04:22:14 +03:00
Alibek Omarov (a1batross) 6432a9f68d Android part of FWGS/xash3d@a3a1dab commit [skip ci] 2017-11-20 03:41:56 +03:00
Alibek Omarov (a1batross) 25608759e5 Implement ShellExecute for Android(java part) 2017-11-01 17:27:08 +03:00
Alibek Omarov (a1batross) 0213d3be89 Disable cert checking for ant debug builds 2017-11-01 17:26:41 +03:00
mittorn 8ec0283c06 Add WIP firstrun text (need rewrite) 2017-10-20 10:10:26 +07:00
mittorn bd17310bad Update submodules 2017-10-20 10:09:35 +07:00
mittorn 67a296d304 Add firstrun dialog (WIP) 2017-10-02 04:14:26 +07:00
mittorn 2f4f36d407 Fix build 2017-10-01 23:52:23 +07:00
Alibek Omarov (a1batross) 828ede1e3a Add resolution change warning red text, add result resolution preview, make resolution custom fields appear in one line, make first use of FWGSLib, fix possible crash while activity is closed before engine thread was created 2017-09-30 02:29:55 +03:00
Alibek Omarov (a1batross) 1c02cfb443 Introduce FWGSLib: an utility library that contains userful shortcuts and hides Android and Java design flaws 2017-09-30 02:25:36 +03:00
Alibek Omarov (a1batross) 5885a6ccd4 Restrict too lower values to prevent possible client bugs 2017-09-28 23:40:33 +03:00
Alibek Omarov (a1batross) be71073e93 Hide resolution settings, when resolution changing is not enabled. Fix crashes, when scale, width or height textboxes are filled with invalid data 2017-09-28 23:33:18 +03:00
Alibek Omarov (a1batross) dcd92e8a57 Port fix for batch text removing from SDL2, fix twice text input on some T9/Swype-like keyboards 2017-09-28 21:57:40 +03:00
Alibek Omarov (a1batross) a1e8f0e1df Grey-out select folder while loading 2017-09-28 21:01:46 +03:00
Alibek Omarov (a1batross) d23797a244 Reformat XashActivity.java 2017-09-28 20:54:10 +03:00
Alibek Omarov (a1batross) 0c5d9a8146 Remove org.json submodule, as this is a part of public Android SDK 2017-09-28 16:57:30 +03:00
Alibek Omarov (a1batross) 51b53e0f2c Fix default build(test.version=0) 2017-09-28 16:57:30 +03:00
mittorn 691fbe8615 Fix missing : 2017-09-24 10:49:08 +00:00
mittorn c25ebc4adc Use git credentials 2017-09-24 10:21:49 +00:00
mittorn b8b44ff3e3 travis: Set android platform to 19 2017-09-24 06:58:38 +07:00
mittorn 16c91c4046 Install ant via apt 2017-09-24 06:48:25 +07:00
mittorn 8dbe38ebfe Add ant install to travis script 2017-09-24 06:37:00 +07:00
mittorn a62975fe1f Add Ok button to about dialog 2017-09-24 06:28:01 +07:00
mittorn 00ff0ced07 Implement screen resolution changing 2017-09-24 06:26:51 +07:00
mittorn b0099a2c5d Update submodules 2017-09-24 03:21:47 +07:00
mittorn f0bd91fba7 Update nanogl 2017-08-17 20:45:08 +00:00
mittorn 2168912095 Fix outdated submodules 2017-07-23 15:15:46 +07:00
mittorn efc472cf84 Hack legacy style to make more similar to modern 2017-07-23 04:01:21 +07:00
mittorn 1018169842 Make force-quit after engine wait timeout 2017-07-22 13:51:07 +07:00
mittorn 06359502e1 Add wait timeouts 2017-07-22 13:49:07 +07:00
EXLandAlibek Omarov 0949e89c11 PR #143 improvements
Drop bad NullPointerException catching code
2017-06-24 18:19:54 +04:00
Alibek OmarovandGitHub c1da6335e4 Merge pull request #143 from EXL/fix_fpicker_crash
Fix crash in FPicker on Android OS >= 7.0
2017-06-23 08:31:06 +04:00
EXL 4e07206c98 Fix crash in FPicker on Android OS >= 7.0
Drop always 'false' condition
2017-06-23 09:58:36 +07:00
mittornandGitHub 426b088e16 Remove unuseful control key hack
It breaks ctrl-space on android 7+ and crashes on 2.3-
2017-06-22 02:20:33 +06:00
mittorn 0e3b544534 Update nanogl 2017-06-19 07:10:16 +00:00
mittorn 45b51451ab Update nanogl and engine 2017-06-18 20:22:42 +00:00
mittorn 9313824a5f Update engine 2017-04-30 12:06:44 +06:00
mittorn 6f5e809507 GDBSafe mode that disables some dangerous operations 2017-04-25 23:52:09 +00:00
mittorn 7c44e6451a Disable MouseMove debug message 2017-04-25 21:55:30 +00:00
mittorn 27ca283446 Fix false-detecting mouse 2017-04-05 22:03:19 +00:00
Alibek Omarov (a1batross) 4647feaf35 Update gitignore 2017-04-01 11:52:59 +03:00
Alibek Omarov (a1batross) 67c8527e2b Revert some submodules 2017-04-01 11:51:18 +03:00
Alibek Omarov (a1batross) 3b6365a048 Remove OPEN_DOCUMENT_TREE request, because it's still does not gives permission to use fopen() call. So, forbid unwritable SD cards at all. 2017-04-01 00:52:13 +03:00
Alibek Omarov (a1batross) d216265519 Merge. 2017-04-01 00:19:08 +03:00
Alibek Omarov (a1batross) ba38146726 Bump version. Update submodules 2017-04-01 00:06:18 +03:00
mittorn 17ce269513 Restore pointer action checks 2017-03-31 18:34:08 +00:00
mittorn 8fcb6ca128 Fix compatibility again 2017-03-30 23:32:27 +00:00
mittorn 58cd129055 Update engine 2017-03-30 23:14:56 +00:00
mittorn 236586eed5 Fix build 2017-03-30 21:39:08 +00:00
mittorn f51e6ab1e2 Proper mouse handling on nvidia devices 2017-03-30 19:58:11 +00:00
mittorn fbcf7758bf Mouse support (nvidia extension) 2017-03-30 00:25:51 +00:00
mittorn 99454bac95 Update projects 2017-03-29 20:01:18 +00:00
mittorn a4745e06fc Android id support 2017-03-28 23:32:39 +00:00
mittorn 9613276658 Disable gnustl_static when not needed 2017-03-28 22:47:19 +00:00
mittorn b3777bd7c0 Fix compatibility problems, add setTitle, setIcon 2017-03-26 22:11:27 +00:00
mittorn fa43690519 Update deploy script again 2017-03-25 20:58:20 +00:00
mittorn aaba1b6db9 Update deploy script 2017-03-24 22:28:49 +00:00
mittorn 5368a7f56b Xash3D background service (prevend unload) 2017-03-24 22:03:00 +00:00
Mars873andAlibek Omarov 6d9056c74c update translation (#132) 2017-03-15 00:46:04 +03:00
Alibek Omarov (a1batross) ea60581142 Try to implement write permission checking and requesting permissions on newer Android devices 2017-03-07 00:00:32 +03:00
Alibek Omarov (a1batross) 139972e5c8 Try to check write permissions before engine launch 2017-03-06 00:01:39 +03:00
Alibek Omarov (a1batross) 24dd05dd36 gpgs_support: fix build 2017-03-05 21:23:22 +03:00
Alibek Omarov (a1batross) b028a18d16 Remove jnisetenv library, restore old engine initialization. New library: gpgs_support, which initialized Google Play Games in Google Play builds. (In opensource builds does nothing) 2017-03-04 17:13:47 +03:00
Alibek Omarov (a1batross) e2faa06de2 Finally implement all onPause, onStop and onDestroy, move JoystickHandler to JoystickHandler.java 2017-03-04 16:02:54 +03:00
Alibek Omarov (a1batross) 3b5e5462b4 XashActivity: Better use onPause for saving configs only, as this method is unkillable. onStop will just stop engine. 2017-03-04 00:56:51 +03:00
Alibek Omarov (a1batross) 323e314714 XashActivity: implement proper engine thread quit 2017-03-04 00:21:29 +03:00
Alibek Omarov (a1batross) 7867a53895 XashActivity: fix initialization 2017-03-03 00:00:04 +03:00
Alibek Omarov (a1batross) 2e2fca08a3 setenv: fix attributes 2017-03-02 23:00:56 +03:00
Alibek Omarov (a1batross) 770c72d0c5 setenv: forgotten include 2017-03-02 22:46:56 +03:00
Alibek Omarov (a1batross) 66eacf4839 Move setenv from engine to split library to allow lazy engine library loading 2017-03-02 22:29:30 +03:00
Alibek Omarov (a1batross) af63c6fd5b XashActivity: fix return value 2017-03-02 21:37:32 +03:00
Alibek Omarov (a1batross) 9c9f98623a Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2017-03-02 21:34:03 +03:00
Alibek Omarov (a1batross) 4bfd57037b XashActivity: move loadLibrary call after setting up all envvars. 2017-03-02 21:33:27 +03:00
Alibek OmarovandGitHub 58deff4184 Merge pull request #124 from AICgmo/patch-3
Korean
2017-02-16 11:17:49 +03:00
AICgmoandGitHub ec8393eccb Update strings.xml 2017-02-16 14:13:56 +09:00
a1batross dd1607f261 Fix crash if MotionEvent.getDevice() will return NULL in joystick backend. Add a checks to InitGL, just in case 2016-12-07 00:25:09 +03:00
AICgmoandGitHub 4138aaf19f Korean
Korean Edit
2016-11-29 17:13:46 +09:00
mittorn de21d49463 Update upload script again 2016-11-25 11:26:49 +00:00
mittorn b58214bc26 Fix typo 2016-11-25 11:12:47 +06:00
mittorn a95b345e33 Make curl silent 2016-11-25 11:01:08 +06:00
mittorn 9d94f5973b exit 0 in deploy script 2016-11-25 11:01:08 +06:00
mittornandGitHub ceba3e90c6 Fix not showing .. when folder name too short 2016-11-25 11:12:31 +07:00
mittorn a38603ebe1 Add github deploy script 2016-11-25 00:59:09 +06:00
mittorn a9bb69cd32 Fix scripts again 2016-11-25 00:52:21 +06:00
mittorn 1a0700aafe Update submodules 2016-11-25 00:36:30 +06:00
mittorn 690275a0de Fix scripts 2016-11-24 20:08:03 +00:00
mittorn b98df4df07 Update nanogl submodule 2016-11-24 19:46:17 +00:00
mittorn fa91f6d279 ant needs property value 2016-11-24 13:31:15 +00:00
mittorn 3a4d5beabd AAPT has written by monkeys! 2016-11-24 13:14:47 +00:00
mittorn ed66e84f71 Try fix stupid aapt 2016-11-24 13:05:59 +00:00
mittorn d97cd43174 Try move condition to target block 2016-11-24 12:53:22 +00:00
mittorn fae4e066e9 Ant is completely uneuseful without third-party libraries 2016-11-24 12:33:10 +00:00
mittorn 9c3ed99de2 Add if task def 2016-11-24 12:25:25 +00:00
mittorn b0a4b00eb0 Conditional test version 2016-11-24 12:06:03 +00:00
mittornandGitHub bf245a5439 Update travis-upload.sh 2016-11-24 14:21:13 +06:00
mittornandGitHub ac3d861df7 Update travis-upload.sh 2016-11-24 14:57:36 +07:00
mittorn 2e9b4bf07c Try new upload script 2016-11-24 12:36:00 +06:00
mittornandGitHub f3ec856995 Update build.xml 2016-11-23 14:22:11 +06:00
mittorn 4aa0439be4 Re-enable full build 2016-11-22 02:12:05 +06:00
mittorn 41ba97d426 Fix gen-config 2016-11-22 02:01:10 +06:00
mittorn e759bf819a Ant travis test build 2016-11-22 01:34:50 +06:00
a1batross e45165a958 Fix background of FPicker 2016-09-13 22:29:53 +03:00
a1batross f7a298e8b7 Fix shorcut activity style 2016-09-13 22:26:39 +03:00
a1batross 3fb08631c4 Disable autoupdater in Google Play edition 2016-09-13 21:34:30 +03:00
a1batross 54166f6be4 Fix gen-config & gen-version scripts 2016-09-13 21:34:11 +03:00
a1batross abf3e99896 Update gitignore. Move android-support-v4 to unused directory. It's used only in google play builds 2016-09-13 21:27:59 +03:00
a1batross da3c921ea8 Fix build.sh 2016-09-13 21:08:39 +03:00
a1batross 19bae91be1 REmove pregenerated XashConfig, choose Legacy theme if sdk < 21 2016-09-13 21:06:41 +03:00
a1batross 58f8f87e61 Bump to 0.18.1. Really. 2016-09-13 20:42:30 +03:00
mittorn 4209dd9529 Update engine 2016-09-13 00:00:46 +00:00
mittorn a207140613 Update repos 2016-09-12 00:58:28 +00:00
mittorn 34b12cdf8c Update branches 2016-09-11 08:38:16 +00:00
mittorn 7bdc2664d4 Bump pak version 2016-09-10 20:45:34 +00:00
mittorn 8de7adae11 Bump version 2016-09-10 20:44:41 +00:00
mittorn 006c301564 Config generator 2016-09-10 20:25:17 +00:00
a1batross e917d13ce3 Add XashConfig(look TODO), replace checks in XashActivity 2016-09-06 20:42:07 +03:00
a1batross f8f8e5c743 Match versionCode to engine's build number 2016-09-06 20:14:32 +03:00
a1batross 6f16759f6c Fix ignored gamepad button when event is not have gamepad or joystick source. 2016-09-06 20:14:11 +03:00
a1batross 05ff89f1a3 Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2016-09-04 00:17:29 +03:00
AlexeyandAlibek Omarov 6e3365a412 Fix pixelformat bit sizes (#111) 2016-08-23 17:32:43 +06:00
Alibek OmarovandGitHub 1e8888b2a4 [skip ci] Fix build status readme link 2016-08-23 17:29:16 +06:00
mittorn a5a6dfb0df Fix enter key in some keyboards 2016-08-13 20:31:00 +00:00
a1batross c9febff75f Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2016-08-14 00:01:55 +06:00
mittorn a5a51792dc Update hlsdk 2016-08-13 17:02:48 +00:00
a1batross df1dbbdd09 Update submodules 2016-08-13 16:12:51 +06:00
mittorn 8d26578c33 Update test build script 2016-08-12 21:40:08 +00:00
mittorn 27c1257d97 Update branches 2016-08-12 21:28:05 +00:00
a1batross da85d25a02 Update engine branch(again) 2016-08-13 00:37:07 +06:00
a1batross 667d410b9f Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2016-08-13 00:19:37 +06:00
mittorn d00b27d447 Update branches 2016-08-12 19:36:50 +00:00
a1batross 5784a2116f Remove SDL2 from README 2016-08-13 00:19:18 +06:00
a1batross 016be4ab0f Resigning our public release isn't good ;) 2016-08-13 00:12:19 +06:00
a1batross 3cda974475 Fix build 2016-08-12 23:23:12 +06:00
mittorn 78f8a7279a Update engine 2016-08-12 16:11:40 +00:00
a1batross f1813fed8a Merge branch 'master' of https://github.com/FWGS/xash3d-android-project 2016-08-12 22:08:07 +06:00
a1batross adae21a549 New icons. Add xxxhdpi(192x192) icon. 2016-08-12 22:07:23 +06:00
mittorn 456e391c75 Update engine 2016-08-12 14:32:06 +00:00
mittorn ebba9effb7 Refactor key events, send lost dpad events as keyboard 2016-08-12 14:30:42 +00:00
mittorn 12e6b7a9ab Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project 2016-08-12 13:16:55 +00:00
mittorn 172d3f9e88 Fix strings in resources 2016-08-12 08:23:10 +00:00
mittorn e471a9d586 Remove SDL folder 2016-08-11 20:41:26 +00:00
mittorn 9a78494be9 Disable steam from AndroidManifest 2016-08-11 20:38:00 +00:00
mittorn 438d574714 Disable steam again 2016-08-11 20:35:33 +00:00
mittorn dff2f20dbb Update branches 2016-08-11 20:25:05 +00:00
mittorn 1e3e1c574d Update build script 2016-08-11 20:18:08 +00:00
mittorn b2d221e3df Update omp blacklist 2016-08-11 19:57:44 +00:00
a1batross e8d0a3a5b6 Update submodules: engine, json and xash-extras 2016-08-11 23:35:41 +06:00
a1batross 6a3541f6d9 Invert look axes 2016-08-11 23:34:40 +06:00
mittorn 98898f852e Merge branch 'omp' 2016-08-11 07:44:30 +00:00
mittorn 5a2b0b1514 Remove SDL from gen-version.sh 2016-08-11 07:31:29 +00:00
a1batross e76774ebe3 Update submodules 2016-08-11 12:29:43 +06:00
mittorn 2e11e1cd30 Ignore other configuration changes 2016-08-09 12:01:47 +00:00
mittorn 77e209f5ed Prevent crash on hardware keyboard connect 2016-08-09 11:28:22 +00:00
mittorn 2c73f5a0fa Prevent launch while extras in unpacking 2016-08-09 10:52:32 +00:00
mittorn d35d54afa4 Fix keyboard/resize in immersive mode 2016-08-09 10:50:52 +00:00
a1batross 2e42e30f1c Update engine. Increase versionCode, so Google Play don't complain about updating Xash3D everytime. 2016-08-07 22:23:23 +06:00
mittorn 6f5ccd4239 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project into remove-sdl 2016-08-05 17:43:55 +00:00
mittorn f44451e0f1 Fix compatibility 2016-08-05 17:43:46 +00:00
a1batross 4fc4454a74 [skip ci] Just disable XASH_SDL in debug buildscript 2016-08-05 19:53:14 +06:00
a1batross 100f89b0e7 Update engine 2016-08-05 19:48:06 +06:00
a1batross 2916a1020e Merge 'remove-sdl' branch into 'master' 2016-08-05 19:43:56 +06:00
a1batross 3192fd851d Update engine 2016-08-05 19:33:19 +06:00
a1batross ce2e4767ad Swap yaw and pitch axes again 2016-08-05 19:31:42 +06:00
a1batross 8133cd9d01 Implement Immediate Mode(sticky) on 4.4 or higher 2016-08-05 19:17:12 +06:00
a1batross e75f120cf7 Rework FPicker to use AsyncTask. Also change spaces to tabs. 2016-08-05 19:16:01 +06:00
a1batross 774ee7cf38 Update engine version. Update URLs in submodules 2016-08-05 15:22:27 +06:00
a1batross f6f2aede91 Remove SDL2 submodule 2016-08-05 15:10:56 +06:00
mittorn 063dc599b9 Fallback to key event on gamepads 2016-08-01 19:11:37 +00:00
mittorn 0a35d46131 Forgot initialize handler 2016-08-01 16:08:41 +00:00
mittorn ad5147a53f Joystick compatibility mode 2016-08-01 11:27:51 +00:00
mittorn c02a3167ca Update submodules 2016-08-01 09:51:14 +00:00
mittorn 7dde5b83b1 Allow unaligned access 2016-08-01 09:42:30 +00:00
mittorn 7a10caf3df Fix build 2016-08-01 09:40:56 +00:00
mittorn 7db489df98 Bump versions 2016-08-01 09:28:06 +00:00
a1batross d2b0860577 Swap pitch and yaw in joystick constants 2016-07-31 21:06:41 +06:00
a1batross 0af71adf39 Fix build, fix awful merge, add joystick backend 2016-07-28 00:12:01 +06:00
a1batross 4697cda8b0 Android joystick backend 2016-07-26 22:39:54 +06:00
a1batross df0a0f2a64 Update autoupdater link 2016-07-26 18:01:17 +06:00
a1batross 106b193511 Autoupdater: add a checkbox for checking beta versions also 2016-07-26 17:54:29 +06:00
a1batross 1195c1b96b Merge autoupdate to remove-sdl 2016-07-26 17:07:01 +06:00
a1batross e48b54d461 Merge branch 'remove-sdl' of https://github.com/SDLash3D/xash3d-android-project into remove-sdl 2016-07-26 16:56:57 +06:00
a1batross 1c4c10e97e SDLash3D->Flying With Gauss 2016-07-22 19:38:49 +06:00
mittorn c4d3e4af20 New test icons 2016-07-02 22:50:31 +00:00
mittorn d19f81fef1 Add switch for resize on keyboard 2016-07-02 22:31:25 +00:00
mittorn e55c292c81 Update engine 2016-07-02 22:30:01 +00:00
mittorn 249bbf991a Update engine 2016-06-27 11:01:00 +00:00
mittorn a7a1a2457c Update engine 2016-06-26 11:15:37 +00:00
mittorn cc211aa82e Update branch 2016-06-13 20:09:45 +00:00
mittorn 530d68e43a Update branches 2016-06-12 20:44:39 +00:00
a1batross 276afa836b Merge branch 'remove-sdl' of https://github.com/SDLash3D/xash3d-android-project into remove-sdl 2016-06-11 20:06:40 +03:00
mittorn 1fde2ba0dd Update layout 2016-05-31 12:23:09 +00:00
mittorn c52453ea1a Volume buttons 2016-05-31 09:03:38 +00:00
mittorn cd1c47245a Update engine 2016-05-27 00:18:02 +00:00
a1batross 4ccca49099 Update all translations: update russian translation, remove untranslatable strings 2016-05-21 20:13:48 +03:00
a1batross 38ec856198 Fix new version checking 2016-05-21 20:13:18 +03:00
a1batross 9b2c616baa Add autoupdate checker 2016-05-20 23:46:35 +03:00
a1batross e5c3122ba7 Lower android API 2016-05-20 23:46:11 +03:00
a1batross 64b30c4bd6 Fix warnings 2016-05-20 22:32:59 +03:00
a1batross 2ddcaf37b4 Add org.json package 2016-05-20 14:01:28 +03:00
a1batross 072781f21f Merge branch 'travis-new-path' into remove-sdl 2016-05-20 13:20:07 +03:00
mittorn 379266732e Merge remote-tracking branch 'origin/travis-new-path' into remove-sdl 2016-05-16 22:26:53 +00:00
mittorn 1333895aa6 Update engine 2016-05-16 22:24:23 +00:00
mittorn fa1d58020b Update engine 2016-05-15 09:25:43 +00:00
Alibek Omarov f1aa3d2832 Merge pull request #102 from DeicPro/master
Fix links on About dialog
2016-05-14 01:37:28 +03:00
mittorn dab20204ce Update branches 2016-05-13 22:29:13 +00:00
a1batross 87a536ffc0 Adjust upload script 2016-05-14 01:19:07 +03:00
a1batross 77327d2c21 Fix script 2016-05-14 00:50:27 +03:00
a1batross 491d537384 Seems gen-version.sh generates invalid XML when commit message have characters like less- or greater-than signs 2016-05-14 00:43:37 +03:00
a1batross 8a599ee8e9 Forgot 'sh' >___< 2016-05-14 00:28:02 +03:00
a1batross 6f27a141a5 Mistype in script name >_< 2016-05-14 00:25:23 +03:00
a1batross 12115e1dd1 Rework Travis autobuilds 2016-05-14 00:10:39 +03:00
Deic 9e515756af remove useless arg 2016-05-13 22:51:21 +02:00
Deic e5268bcf3f fix TextView on dialog
Links work now.
2016-05-13 22:49:45 +02:00
Deic 0c16521ff4 Merge pull request #1 from SDLash3D/master
merge
2016-05-13 22:42:18 +02:00
a1batross 9575c9a9b5 Fix build for Brazil Portuguese 2016-05-13 20:06:30 +03:00
mittorn ff81e98bc2 Update branches 2016-05-13 14:56:35 +00:00
mittorn b708774bcd Update branches 2016-05-12 22:43:28 +00:00
mittorn 7bcaa0db87 Disable EGL initialization, called from native now 2016-05-12 22:42:15 +00:00
Matheus Naldi f4538c2eec Added translation for Brazilian Portuguese 2016-05-12 11:13:37 -03:00
mittorn 19c8340b5c Add default icon 2016-05-09 19:51:27 +00:00
mittorn 0735d551ff Implement messagebox and enable resize 2016-05-09 15:05:28 +00:00
mittorn 57f3f03236 Refactor code 2016-05-09 14:03:50 +00:00
mittorn 848b1f8ae6 Keyboard and vibration support 2016-05-08 22:57:35 +00:00
mittorn aba773d1c0 Pixel format selection spinner 2016-05-08 08:57:07 +00:00
mittorn 3903f06abb Update branches 2016-05-08 08:12:05 +00:00
mittorn e365040659 Fix screen orientation 2016-05-08 07:59:53 +00:00
mittorn 0211b8720f Update branches, enable openSLES 2016-05-07 22:37:15 +00:00
mittorn 2c8b1ee753 Improve EGL restore 2016-05-07 20:14:09 +00:00
aaa95945andAlibek Omarov 71f1aa6a2d Create strings.xml (#99)
* Create strings.xml

Translate to Chinese!

* Update strings.xml
2016-05-07 19:07:59 +03:00
DeicandAlibek Omarov 3736938bea Create strings.xml (#100)
Spanish language added.
2016-05-07 11:40:46 +03:00
mittorn 69b11fcf38 Implement EGL restore 2016-05-06 22:20:34 +00:00
Alibek Omarov fe5b7dc7cf Update README.md 2016-05-07 01:50:36 +04:00
mittorn 5b0ee9679c Fix fullscreen 2016-05-06 16:49:42 +00:00
mittorn 441beea431 Fix install 2016-05-06 16:48:21 +00:00
mittorn 46a9d3fac6 Update travis 2016-05-06 15:12:19 +00:00
mittorn aeee1419a2 Fix and rework launch 2016-05-06 14:58:09 +00:00
mittorn 126433c42c Android 1.5 support 2016-05-06 08:58:01 +00:00
mittorn 11a29ac213 Touch action filter, add keyboard code 2016-05-05 20:01:43 +00:00
mittorn e33ceda57a Update touch code 2016-05-04 21:34:15 +00:00
mittorn cd81aa82ea Improve launch, fix touch 2016-05-04 21:02:09 +00:00
mittorn 76cac2a352 Restore build without sdl (only graphics output supported) 2016-05-03 22:24:07 +00:00
mittorn 285c11522d Update branches 2016-05-02 21:37:39 +00:00
mittorn bc1d9fed7f Fix NullPointerExveption 2016-05-01 13:05:28 +00:00
mittorn 80a1f6c4c8 Autodetect legacy/material 2016-05-01 12:53:36 +00:00
Solexid 156171d77a Update AndroidManifest.xml 2016-05-01 11:37:36 +03:00
Solexid cc21b87045 Update project.properties 2016-05-01 11:05:12 +03:00
Solexid 19de6ce5ff Update AndroidManifest.xml 2016-05-01 11:02:23 +03:00
Solexid 4f1bc7d68a Icon for folder 2016-05-01 10:43:34 +03:00
Solexid 5ef65c1d5b Update FPicker.java 2016-05-01 10:42:14 +03:00
Solexid 9a98aeb958 Update activity_fpicker.xml 2016-05-01 03:37:23 +03:00
Solexid 6ebca5c330 Fix missing string. 2016-05-01 03:25:20 +03:00
Solexid 0cffe3afe9 Added button to launcher 2016-05-01 03:18:32 +03:00
Solexid 726eab44d9 Fpicker classes 2016-05-01 03:15:27 +03:00
Solexid 45bf7fa453 Added folderpicker layout files 2016-05-01 03:13:28 +03:00
LeoandAlibek Omarov 4195f90e0f Added Persian (Farsi) langauge (#93)
* Create strings.xml

* Added Persian (Farsi) Language

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml
2016-04-29 22:47:04 +03:00
Solexid 8065092976 Illegal call fix 2016-04-29 22:01:59 +03:00
Solexid 631c9c46c0 Import miss 2016-04-29 21:43:56 +03:00
Solexid 4560bd68a0 Strings update 2016-04-29 21:32:26 +03:00
Solexid a7993ad1c3 Added some java code for tabwork 2016-04-29 21:29:56 +03:00
Solexid a0b0c6154f First step.Edited layout. 2016-04-29 21:22:34 +03:00
mittorn a78c93a65a Remove cl_tent.c from omp list 2016-04-24 21:46:13 +00:00
mittorn 8459c0e644 Update branches 2016-04-23 21:31:36 +00:00
mittorn 7986e1631a Update branches 2016-04-22 19:22:27 +00:00
mittorn d1e8dce81a Experimental opm support 2016-04-22 19:02:06 +00:00
THE-SwankandAlibek Omarov 94b33a11bb Language support: 'Ukrainian' (#86) 2016-04-20 00:09:22 +03:00
Benjamin StürmerandAlibek Omarov 8c3772a9bf Language support: 'German' (#85) 2016-04-19 20:39:35 +03:00
fuzunandAlibek Omarov 34ee7c1d0f Language fixes (#78) 2016-04-16 21:26:01 +03:00
Alibek Omarov 870c58490b Merge pull request #77 from fuzun/LangSupport
Language support: 'Turkish'
2016-04-16 13:14:33 +03:00
fuzun 880f085b24 Language support: 'Turkish'
Turkish language support.
2016-04-15 21:37:18 +03:00
mittorn 42bbdc2f3c Enable steamcmd in test manifest 2016-04-14 20:53:03 +00:00
mittorn bb58bdeec9 enable steamcmd, fix steam mobile 2016-04-14 18:00:44 +06:00
mittorn 230c07cc98 Update branches 2016-04-07 17:27:54 +00:00
mittorn b5950a2972 Fix SDL cflags 2016-04-07 17:25:37 +00:00
a1batross b09068e655 Bump pak version and apk version 2016-04-02 19:37:09 +03:00
a1batross c8432f81bb Update submodules 2016-04-02 19:30:03 +03:00
a1batross 2131dc7cfd Update PAK version 2016-03-31 18:25:47 +03:00
a1batross 52deb81710 Check for undefined reference in case 2016-03-31 17:48:04 +03:00
a1batross 5d1f77d324 Temporarily disable Steam support 2016-03-31 17:29:54 +03:00
a1batross 5b117fe69a Update engine 2016-03-31 16:34:17 +03:00
a1batross 14ba7328af Update submodules 2016-03-31 16:08:34 +03:00
mittorn 5a073557ad Update engine, use gravgun temporary 2016-03-27 12:58:05 +00:00
mittorn 0554a17f67 Update engine 2016-03-19 19:36:28 +00:00
mittorn 6edbd62ba1 Update engine 2016-03-15 16:26:34 +00:00
mittorn 2f5536c7b4 Prepare to 0.17-beta.2 2016-03-08 18:35:11 +00:00
mittorn 5b8d6c114c Update 2016-03-06 20:36:44 +00:00
mittorn e18fcc1e15 Update hlsdk 2016-03-05 21:37:52 +00:00
mittorn 5aa12da666 Update engine 2016-03-05 21:35:52 +00:00
mittorn 498a1f4ac9 Update gen-version script 2016-03-02 08:06:16 +00:00
mittorn e5a8d1c2c9 Update engine and client 2016-03-01 20:20:56 +00:00
mittorn 3d5374a452 Update engine 2016-03-01 07:20:49 +00:00
mittorn 7d77d01552 Revert code-clean branch 2016-02-29 20:33:10 +00:00
mittorn 2d47dcef2c Update engine 2016-02-29 20:28:25 +00:00
mittorn 4cdc7b93dd Switch to new hlsdk 2016-02-29 20:12:50 +00:00
mittorn 3794611567 Change OnDestroy behaviour 2016-02-28 21:12:07 +00:00
mittorn 8fa32c733c Fix typo 2016-02-28 21:11:40 +00:00
mittorn 19e710f22c Update test manifest 2016-02-28 21:01:15 +00:00
mittorn 3ef85a5863 Update repos 2016-02-28 20:34:14 +00:00
Mittorn 9a4468477d [steamcmd]Update layout, refactor code, fix minor bugs 2016-02-26 20:18:20 +00:00
Mittorn 0978b30e34 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project into steamcmd-wip 2016-02-26 18:04:54 +00:00
Mittorn c6d419594a Add sikentKillAll, rename preload library 2016-02-26 18:03:44 +00:00
Mittorn 3112adc305 Forgot layout 2016-02-26 08:48:41 +00:00
Mittorn b0f7475962 WIP steam downloader 2016-02-26 00:05:04 +00:00
a1batross 1ef511f476 Remove untranslatable marks from some strings, add korean translation from #61 2016-02-25 19:05:14 +03:00
mittorn cbd1905d69 Disable exiting onDestroy as android may kill process while saving config 2016-02-14 19:41:42 +00:00
mittorn 86ac642258 Update engine 2016-02-08 20:22:51 +00:00
mittorn 2f9968742a Update engine 2016-02-06 13:50:12 +00:00
mittorn f2a22f4017 Update engine 2016-02-06 12:48:00 +00:00
mittorn 963f53a6a4 Update engine to tesing branch 2016-02-04 20:09:12 +00:00
mittorn bab2279029 Update engine 2016-01-31 11:18:53 +00:00
mittorn ddfc6ee3cf Bump to 0.17 2016-01-30 21:24:52 +00:00
mittorn 67b7d97557 Update engine, extras 2016-01-30 16:26:37 +00:00
mittorn 2d5682958d Update engine 2016-01-30 15:38:13 +00:00
mittorn 8ce7db0ff0 Update submodule 2016-01-22 11:33:12 +00:00
mittorn d58289ca78 Update submodule 2016-01-22 11:00:53 +00:00
mittorn 6a296232bc Fix makepak on travis, add tegra2 and armv5 builds 2016-01-22 09:09:43 +00:00
mittorn 2f11dd22ec thumb mode 2016-01-22 09:08:49 +00:00
mittorn 28702daccc Try fix gamepad keys 2016-01-22 08:28:38 +00:00
mittorn eb1305dbd8 Update engine 2016-01-21 19:52:24 +00:00
mittorn f70a1d626e Update submodules 2016-01-20 13:03:37 +00:00
mittorn ee0d139844 Update engine 2016-01-19 20:21:16 +00:00
mittorn 9279cedba4 Update scripts 2016-01-18 17:07:52 +00:00
mittorn c6533d40f9 Update gen-version.sh 2016-01-18 16:48:37 +00:00
mittorn 4cf64fb370 Update .travis.yml 2016-01-18 16:45:24 +00:00
mittorn 19fc0b3a36 Fix wrong repo uri 2016-01-18 16:41:57 +00:00
mittorn aa327eae4b Update manifest 2016-01-18 16:41:12 +00:00
mittorn 53c109cda0 Update submodules 2016-01-18 16:36:41 +00:00
mittorn 7bb46ec007 Update xash-extras 2016-01-18 16:09:48 +00:00
a1batross dafb85eca9 Update about dialog 2016-01-16 14:58:49 +03:00
a1batross d513081356 Remove MobileTouchControls submodule 2016-01-16 14:17:30 +03:00
a1batross 1972cd8d5f Merge beloko-drop branch 2016-01-16 13:20:59 +03:00
mittorn b09bc7d82f Add vibration permission to test manifest 2015-12-30 02:56:06 +06:00
a1batrossandmittorn 6306424102 Fix crash 2015-12-30 02:55:19 +06:00
a1batrossandmittorn fd4695bfbe Add vibration support and swap next/prev weapon
Conflicts:
	assets/next_weap.png
	assets/prev_weap.png
	src/org/libsdl/app/SDLActivity.java
2015-12-30 02:53:07 +06:00
mittorn 38ab0d7325 Drop unneeded resources 2015-12-30 01:09:22 +06:00
mittorn 91cc1af64c Update java part. InstallReceiver, env, verbump 2015-12-30 00:58:35 +06:00
mittorn 34c0b256f6 Update pak version 2015-12-22 01:29:30 +06:00
mittorn d2f80c14f9 Add xash-extras submodule 2015-12-22 01:28:15 +06:00
mittorn 3b74455dcb Shortcuts improvements 2015-12-20 18:52:09 +06:00
mittorn 073e43a5a4 Skip .git in pak 2015-12-20 17:39:19 +06:00
mittorn bee8f590a3 Add pak utils 2015-12-20 17:19:32 +06:00
mittorn cd89009d6b Initial beloko drop-out, add extras envs 2015-12-20 16:39:56 +06:00
mittorn 44279c195f PAK support 2015-12-18 02:34:09 +06:00
a1batross 39c4cfdf81 Fix crash 2015-12-09 00:45:19 +03:00
a1batross 7dfb65760d Add vibration support and swap next/prev weapon 2015-12-06 13:06:26 +03:00
a1batross aa3e0b7416 Bump to version 0.16.1 2015-11-10 23:17:34 +03:00
a1batross 35cd2cbd63 Update submodules, use hlsdk-client now 2015-11-10 21:16:22 +03:00
Alibek Omarov 6331313d67 Merge pull request #47 from SDLash3D/temp
Launcher and shortcut improvements
2015-11-10 21:13:22 +03:00
mittorn f8a0acd776 Improvements in launcher and shortcuts 2015-11-08 01:09:57 +06:00
a1batrossandmittorn 0e3e1d8af9 Remove unused line 2015-10-13 03:44:23 +07:00
a1batrossandmittorn 56c06d7c01 Update buildscripts and manifest(set debuggable to false) 2015-10-13 03:43:51 +07:00
a1batross 293805c657 Remove unused line 2015-10-10 22:37:58 +03:00
a1batross 19b2fb76f7 Update buildscripts and manifest(set debuggable to false) 2015-10-10 22:37:09 +03:00
a1batross 561c0d8264 Update submodules, again 2015-10-10 22:34:31 +03:00
a1batross 6c1f867b55 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project 2015-10-06 21:53:31 +03:00
a1batross 99ff4934c6 Update modules 2015-10-06 21:53:20 +03:00
Alibek Omarov abf0f9df5e Merge pull request #40 from SDLash3D/temp
Update android project
2015-10-06 21:50:41 +03:00
Alibek Omarov 4322764fe2 Update .travis.yml 2015-10-04 12:24:31 +03:00
a1batross ef278d80a2 0.16 is coming 2015-10-03 23:47:45 +03:00
a1batross c613a1368d Update submodules 2015-10-03 23:47:14 +03:00
mittorn 30ba1d301b Android project version bump 2015-09-30 02:53:08 +07:00
mittorn 26e6eef233 Update version info, disable buggy fullscreen on 2.3 2015-09-23 00:44:39 +07:00
mittorn 19b5ac81a3 Add volume keys switch, fix recent bugs 2015-09-10 08:30:17 +07:00
a1batross 5bda511154 It's a minimal API when there is no errors in AndroidManifest. Also, with this it works on Android 2.3 2015-09-08 21:27:55 +03:00
mittorn 1f330cb1a8 Revert recent changes, do not unpack assets, disable path check 2015-09-08 00:59:55 +07:00
a1batross 1e2d82ee5d Update xash3d submodule 2015-09-06 14:50:44 +03:00
a1batross e8d98a5d71 Move project to git-submodules 2015-09-06 12:45:59 +03:00
mittorn f0fd46bb60 Change controls assets path, add path checks 2015-09-06 06:08:53 +07:00
mittorn 556a814f7c Disable wheapon wheel, enable mouse buttons 2015-09-06 05:15:06 +07:00
mittorn 98d60887b2 Fix icons in TouchControlsEditing 2015-09-05 02:14:52 +07:00
mittorn 82c24fc4cb Move controls assets and settings to gamedir/controls 2015-09-05 01:51:13 +07:00
mittorn d1252c9a91 Check game.ico after icon.png 2015-09-04 21:06:00 +07:00
mittorn 2b65b71538 Allow start ShortcutActivity from launcher 2015-09-04 20:55:37 +07:00
mittorn b4ead9c0ac try icon.png first 2015-09-04 19:38:05 +07:00
mittorn 1b894336fc Implement icon loading 2015-09-03 03:52:21 +07:00
mittorn bf0a8bf50a Add scroll to see all launcher activity context 2015-09-03 03:51:26 +07:00
Alibek Omarov fb70702f02 Merge pull request #20 from mittorn/master
Global config
2015-08-28 17:30:28 +03:00
mittorn 7b28ad7e28 Fix layout in holo 2015-08-27 02:27:14 +07:00
mittorn d720e327c9 Global config 2015-08-27 01:46:46 +07:00
Alibek Omarov b0140727cc Merge pull request #17 from SDLash3D/improve_build
Improve build
2015-08-24 00:55:00 +06:00
mittorn 29aec91121 Fix layout 2015-08-24 00:02:59 +07:00
mittorn dba7d531e8 Fix yandex upload paths 2015-08-24 00:02:07 +07:00
mittorn 65f6fe58b7 Build three architectures 2015-08-22 07:53:18 +07:00
mittorn 2d9d05f00e Fix spaces, add time to yandex 2015-08-20 15:59:11 +07:00
mittorn d7c89d1d9b Fir trailing spaces in version info, add date 2015-08-20 14:30:16 +07:00
mittorn a22678fc46 Yet another try 2015-08-20 13:53:47 +07:00
mittorn 1dda4a0468 Another try 2015-08-20 13:38:55 +07:00
mittorn 38f4a7c144 Fix version information in holo theme 2015-08-20 13:13:01 +07:00
mittorn a04843e766 Add git versions to about dialog 2015-08-20 12:28:00 +07:00
mittorn 09be317894 Upload to transfer.sh and disable non-arm build 2015-08-20 01:34:33 +07:00
mittorn 80621be0b1 Add overrides for NDK's setup.mk 2015-08-20 01:22:32 +07:00
mittorn 432432adc1 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project 2015-08-19 23:15:54 +07:00
mittorn c2d7ae230c Handle all key events as keyboard 2015-08-19 22:09:14 +07:00
a1batross 6af532e3b3 Add about page, refactor LauncherActivity, remove unused strings and translations 2015-08-16 22:52:54 +06:00
mittorn f0275dcc92 New intent filter 2015-08-15 04:38:05 +07:00
mittorn b634582701 Some cosmetical changes 2015-08-13 01:43:09 +07:00
mittorn 545f14a8b6 Update Application.mk 2015-08-12 23:07:07 +07:00
a1batross 7dbe0f8c89 Use short hashsum 2015-08-11 22:33:24 +06:00
a1batross 01b11823c2 Add sending builded APK to YaDisk 2015-08-11 22:20:53 +06:00
a1batross 15cb862bc2 Update travis.yml 2015-08-11 21:37:38 +06:00
a1batross e60adf229e Fix typo 2015-08-11 21:22:39 +06:00
a1batross ed3a634474 Fix in git clone command 2015-08-11 21:11:30 +06:00
a1batross fb5efe3001 Buildlog limit exceeeded 4Mb. Make it more quiet 2015-08-11 21:06:12 +06:00
a1batross c73257d155 Another try make it build 2015-08-11 20:54:22 +06:00
a1batross fd4c08fe76 Yet Another Update .travis.yml 2015-08-11 20:45:37 +06:00
a1batross 6285b271b8 Update travis.yml 2015-08-11 20:34:25 +06:00
a1batross e840082cb1 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project 2015-08-11 20:00:39 +06:00
a1batross 8b92060588 Fix travis build 2015-08-11 20:00:23 +06:00
Alibek Omarov cb07de4364 Update README.md 2015-08-11 19:56:50 +06:00
a1batross 253997f228 Silent NDK unpacking 2015-08-11 19:53:03 +06:00
a1batross 2680c60215 Add Travis badge 2015-08-11 19:47:06 +06:00
a1batross 2a465e2ee6 Add Travis CI support 2015-08-11 19:44:12 +06:00
Alibek Omarov 837c384e86 Merge pull request #14 from mittorn/android-test-0.15pre
Android test 0.15pre
2015-08-11 18:11:44 +06:00
mittorn 5b30cf5bc2 Add test build files 2015-07-26 23:26:07 +07:00
mittorn e87ac3da81 Fix layout 2015-07-26 01:58:21 +06:00
mittorn b20e90ea24 Add shortcut activity and library mods support 2015-07-26 01:30:00 +06:00
mittorn fa72090ea1 Use shared prefs and setenv 2015-07-24 06:56:03 +06:00
mittorn 56670e9015 Update layout 2015-07-24 03:58:04 +06:00
Alibek Omarov beb1dd4838 Merge pull request #6 from SDLash3D/sdl_macro
Sdl macro
2015-06-17 17:03:20 +06:00
mittorn 71a667effe Enable XASH_SDL by default 2015-06-16 22:45:30 +07:00
mittorn 7896fc7ea7 Add x86 optimisations and switch arm ABI to hard-float 2015-06-16 22:06:19 +07:00
mittorn 4c554937a0 Enable optimisations 2015-06-12 18:23:50 +07:00
mittorn ec977e1307 Enable touch controls 2015-06-12 16:42:36 +07:00
mittorn 94f416ec20 Enable resize and get arguments in XashActivity 2015-06-12 14:32:47 +07:00
mittorn f65e60703f New activity based on SDLActivity 2015-06-11 14:30:34 +07:00
Alibek Omarov b47b51e804 Update README.md 2015-05-31 14:59:25 +06:00
Alibek Omarov 06a0f792ff Update README.md 2015-05-31 14:58:37 +06:00
Alibek Omarov 9051f59c57 v0.14.1 2015-05-26 21:51:28 +06:00
Alibek Omarov e3333ab578 Fix installing on some devices 2015-05-26 21:51:08 +06:00
Alibek Omarov 2a3e142b7f Update version number to 0.14 2015-05-26 17:37:40 +06:00
Alibek Omarov 9fd3917216 Touch controls icon pack by @Nicknekit 2015-05-26 00:25:07 +06:00
Alibek Omarov 017797a668 Launcher (command line arguments) 2015-05-26 00:11:50 +06:00
mittorn c9e93071c2 Add command line, fix typo, fix build with sdk13 2015-05-25 02:52:29 +07:00
mittorn 08f1b882c8 Merge branch 'master' of https://github.com/SDLash3D/xash3d-android-project 2015-05-25 00:25:47 +07:00
mittorn 39176afce4 Rework Makefiles, enable optimisations, fix links 2015-05-25 00:20:18 +07:00
Alibek Omarov e6eba27bf5 Disable accelerometer 2015-05-24 14:26:44 +06:00
Alibek Omarov fe836000cf Delete not needed file, now it compiles 2015-05-23 19:57:00 +06:00
Alibek Omarov 7615914e86 CRLF to LF on all files 2015-05-22 20:59:49 +06:00
Alibek Omarov 58295431a0 Merge pull request #2 from emileb/master
Touch screen additions
2015-05-22 20:41:01 +06:00
Emile Belanger 23f4f980ee Fixed backspace? 2015-05-20 18:00:28 +01:00
Emile Belanger 0bcc0db03f Fixes 2015-05-20 14:42:43 +01:00
Emile Belanger 6418df976c test 2015-05-19 17:56:53 +01:00
Emile Belanger de3442951d Now uses touchcontrols for all input, no SDL 2015-05-19 17:54:29 +01:00
Emile Belanger c9c7c268d0 Added Touchscreen control by Emile Belanger 2015-05-19 10:42:14 +01:00
Alibek Omarov 69974c6bf9 Merge pull request #1 from mittorn/master
Remove gamepad hack from SDLActivity
2015-04-30 14:56:44 +06:00
mittorn ca61f79c07 Fix space with hardware keyboard 2015-04-30 02:46:17 +07:00
mittorn 2621404695 Clean keyboard code 2015-04-28 22:29:01 +00:00
mittorn 0e99d0f280 Merge pull request #1 from SDLash3D/master
Fix freeze after unlock
2015-04-26 19:30:25 +00:00
Alibek Omarov a20e57ba59 Fix freeze after unlock 2015-04-26 21:04:15 +06:00
Alibek Omarov fe39a90089 Parallel Make; set -gdwarf-3 for gdb 2015-04-17 20:17:05 +06:00
Alibek Omarov 3f42c7f914 Change version to 0.12 2015-04-17 20:16:02 +06:00
Alibek Omarov 68fb5fc4bc Disable not needed dependency: SDL_image 2015-04-17 20:15:44 +06:00
Alibek Omarov f2dbcd9532 Change icon 2015-04-17 20:14:06 +06:00
Alibek Omarov acbd370168 Add README 2015-04-04 22:27:09 +06:00
Alibek Omarov 6501b40644 First blood 2015-04-04 22:20:20 +06:00
683 changed files with 74450 additions and 58517 deletions
+1
View File
@@ -5,6 +5,7 @@ packages:
- freetype-dev - freetype-dev
- fontconfig-dev - fontconfig-dev
- opus-dev - opus-dev
- bzip2-dev
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
+1
View File
@@ -7,6 +7,7 @@ packages:
- libfreetype-dev - libfreetype-dev
- libfontconfig-dev - libfontconfig-dev
- libopus-dev - libopus-dev
- libbz2-dev
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
+1
View File
@@ -6,6 +6,7 @@ packages:
- libfreetype-dev - libfreetype-dev
- libfontconfig-dev - libfontconfig-dev
- libopus-dev - libopus-dev
- libbz2-dev
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
+1
View File
@@ -6,6 +6,7 @@ packages:
- print/freetype2 - print/freetype2
- x11-fonts/fontconfig - x11-fonts/fontconfig
- audio/opus - audio/opus
- archivers/bzip2
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
+1
View File
@@ -6,6 +6,7 @@ packages:
- fontconfig - fontconfig
- libopus - libopus
- pkgconf - pkgconf
- bzip2
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
+1
View File
@@ -3,6 +3,7 @@ packages:
- python3 - python3
- sdl2 - sdl2
- opus - opus
- bzip2
sources: sources:
- https://git.sr.ht/~a1batross/xash3d-fwgs - https://git.sr.ht/~a1batross/xash3d-fwgs
tasks: tasks:
-23
View File
@@ -1,23 +0,0 @@
task:
name: freebsd-14-amd64
freebsd_instance:
image_family: freebsd-14-0
setup_script:
- pkg update
- pkg install -y pkgconf git sdl2 python fontconfig opus
- git submodule update --init --recursive
test_script:
- ./scripts/cirrus/build_freebsd.sh dedicated
- ./scripts/cirrus/build_freebsd.sh full
task:
name: freebsd-15-amd64
freebsd_instance:
image_family: freebsd-15-0-snap
setup_script:
- pkg update
- pkg install -y pkgconf git sdl2 python fontconfig opus
- git submodule update --init --recursive
test_script:
- ./scripts/cirrus/build_freebsd.sh dedicated
- ./scripts/cirrus/build_freebsd.sh full
+113
View File
@@ -0,0 +1,113 @@
Language: Cpp
Standard: c++17
UseTab: ForContinuationAndIndentation
TabWidth: 4
IndentWidth: 4
ContinuationIndentWidth: 4
IndentCaseLabels: false
IndentPPDirectives: None
NamespaceIndentation: None
AccessModifierOffset: -4
IndentAccessModifiers: false
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
BeforeWhile: true
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
MaxEmptyLinesToKeep: 2
KeepEmptyLinesAtTheStartOfBlocks: false
KeepEmptyLinesAtEOF: false
SeparateDefinitionBlocks: Always
InsertNewlineAtEOF: true
LineEnding: LF
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
BinPackArguments: true
BinPackParameters: true
AlwaysBreakAfterReturnType: None
AlwaysBreakAfterDefinitionReturnType: None
AllowShortFunctionsOnASingleLine: None
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
BreakBeforeBinaryOperators: All
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
PointerAlignment: Right
DerivePointerAlignment: false
ReferenceAlignment: Pointer
SpaceAroundPointerQualifiers: Default
SpacesInParens: Custom
SpacesInParensOptions:
ExceptDoubleParentheses: true
InCStyleCasts: false
InConditionalStatements: true
InEmptyParentheses: false
Other: true
# XashCollapseParens: true
SpaceBeforeParens: Never
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesInAngles: Never
SpacesInContainerLiterals: false
SpacesInSquareBrackets: false
Cpp11BracedListStyle: false
SpacesBeforeTrailingComments: 1
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
AlignAfterOpenBracket: DontAlign
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
AlignConsecutiveMacros:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
ColumnLimit: 0
ReflowComments: false
SortIncludes: Never
SortUsingDeclarations: false
InsertBraces: false
RemoveBracesLLVM: false
FixNamespaceComments: false
+42 -41
View File
@@ -15,19 +15,34 @@ jobs:
include: include:
# Linux build specifically want oldest Ubuntu as possible # Linux build specifically want oldest Ubuntu as possible
# to be crossdistribution compatible, otherwise use ubuntu-latest # to be crossdistribution compatible, otherwise use ubuntu-latest
- os: ubuntu-20.04 - os: ubuntu-22.04
targetos: linux targetos: linux
targetarch: amd64 targetarch: amd64
- os: ubuntu-20.04 - os: ubuntu-22.04
targetos: linux targetos: linux
targetarch: i386 targetarch: i386
# - os: ubuntu-aarch64-20.04 - os: ubuntu-22.04-arm
targetos: linux
targetarch: arm64
- os: ubuntu-22.04-arm
targetos: linux
targetarch: armhf
- os: ubuntu-24.04 # riscv64 would benefit from having latest compilers
targetos: linux
targetarch: riscv64
cross: true
- os: ubuntu-22.04
targetos: linux
targetarch: ppc64el
cross: true
# - os: ubuntu-latest
# targetos: linux # targetos: linux
# targetarch: aarch64 # targetarch: e2k-8c
- os: ubuntu-20.04 # cross: true
- os: ubuntu-latest
targetos: android targetos: android
targetarch: multiarch targetarch: multiarch
# - os: ubuntu-20.04 # - os: ubuntu-22.04
# targetos: motomagx # targetos: motomagx
# targetarch: armv6 # targetarch: armv6
@@ -40,21 +55,28 @@ jobs:
- os: windows-latest - os: windows-latest
targetos: win32 targetos: win32
targetarch: amd64 targetarch: amd64
- os: windows-2019 # always use the oldest possible for 32-bit because of older compilers, and better support of certain legacy OSes - os: windows-2022 # always use the oldest possible for 32-bit because of older compilers, and better support of certain legacy OSes
targetos: win32 targetos: win32
targetarch: i386 targetarch: i386
- os: macos-14 # in GitHub documentation, it's an ARM64 machine - os: macos-14 # arm64 as per github documentation
targetos: apple targetos: apple
targetarch: arm64 targetarch: arm64
- os: macos-12 # in GitHub documentation, it's an x86 machine - os: macos-latest
targetos: ios
targetarch: arm64
- os: macos-15-intel
targetos: apple targetos: apple
targetarch: amd64 targetarch: amd64
env: env:
SDL_VERSION: 2.30.3 SDL_VERSION: 2.32.10
FFMPEG_VERSION: 8.1
YY_THUNKS_VERSION: v1.2.1
GH_CPU_ARCH: ${{ matrix.targetarch }} GH_CPU_ARCH: ${{ matrix.targetarch }}
GH_CPU_OS: ${{ matrix.targetos }}
GH_CROSSCOMPILING: ${{ matrix.cross }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Install dependencies - name: Install dependencies
@@ -64,26 +86,27 @@ jobs:
FWGS_PFX_PASSWORD: ${{ secrets.FWGS_PFX_PASSWORD }} FWGS_PFX_PASSWORD: ${{ secrets.FWGS_PFX_PASSWORD }}
run: bash scripts/gha/build_${{ matrix.targetos }}.sh run: bash scripts/gha/build_${{ matrix.targetos }}.sh
- name: Upload engine (artifacts) - name: Upload engine (artifacts)
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7
with: with:
name: artifact-${{ matrix.targetos }}-${{ matrix.targetarch }} name: artifact-${{ matrix.targetos }}-${{ matrix.targetarch }}
path: artifacts/* path: artifacts/*
flatpak: flatpak:
runs-on: ubuntu-latest runs-on: ubuntu-latest
continue-on-error: true
strategy: strategy:
matrix: matrix:
include: include:
- app: su.xash.Engine.Compat.i386 - app: su.xash.Engine.Compat.i386
container: container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-23.08 image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
options: --privileged options: --privileged
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
- name: Build flatpak (Compat.i386) - name: Build flatpak (Compat.i386)
uses: FWGS/flatpak-github-actions/flatpak-builder@v6.3 uses: FWGS/flatpak-github-actions/flatpak-builder@v6.5
with: with:
bundle: ${{ matrix.app }}.flatpak bundle: ${{ matrix.app }}.flatpak
manifest-path: scripts/flatpak/${{ matrix.app }}.yml manifest-path: scripts/flatpak/${{ matrix.app }}.yml
@@ -93,32 +116,10 @@ jobs:
needs: [build, flatpak] needs: [build, flatpak]
if: ${{ github.event_name == 'push' }} if: ${{ github.event_name == 'push' }}
steps: steps:
- name: Checkout
uses: actions/checkout@v6
- name: Remove old release, fetch artifacts, repackage binaries and upload new release - name: Remove old release, fetch artifacts, repackage binaries and upload new release
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_TAG: ${{ github.ref_name == 'master' && 'continuous' || format('continuous-{0}', github.ref_name) }} BASE_BUILDNUM_DATE: "2015-04-01"
run: | run: bash scripts/gha/make_release.sh "Xash3D FWGS" "${{ github.ref_name }}"
gh release delete "$RELEASE_TAG" \
--yes \
--cleanup-tag \
--repo "$GITHUB_REPOSITORY" || true
sleep 20s
gh run download "$GITHUB_RUN_ID" \
--dir artifacts/ \
--repo "$GITHUB_REPOSITORY"
pushd artifacts/
echo "Found artifacts:"
ls
for i in $(find -mindepth 1 -maxdepth 1 -type d); do
mv "$i"/* .
rm -rf "$i"
done
echo "Repackaged artifacts:"
ls -R
popd
sleep 20s
gh release create "$RELEASE_TAG" artifacts/* \
--title "Xash3D FWGS Continuous ${{ github.ref_name }} Build" \
--target $GITHUB_SHA \
--repo "$GITHUB_REPOSITORY" \
--prerelease
+32
View File
@@ -318,6 +318,12 @@ build-*
*.includes *.includes
*.files *.files
# ios
ios/cl_dlls/*
ios/dlls/*
ios/*.framework
scripts/ios/mod-build
# Waf # Waf
build_current build_current
*waf-*/ *waf-*/
@@ -339,6 +345,32 @@ __pycache__
.history/* .history/*
.cache/* .cache/*
enc_temp_folder/ enc_temp_folder/
Taskfile.yml
# KDevelop4 # KDevelop4
*.kdev4 *.kdev4
# ccls langauge server
.ccls-*
# JetBrains
.idea/
cmake-build-*
# some Android-specific build stuff
3rdparty/SDL
3rdparty/hlsdk-portable
!scripts/build-ninja.py
# slop
CLAUDE.md
AGENTS.md
GEMINI.md
.claude/
.gemini/
.cursor*
.windsurf*
.aider*
.continue/
.codeium/
.github/copilot-instructions.md
+24
View File
@@ -22,3 +22,27 @@
[submodule "3rdparty/bzip2/bzip2"] [submodule "3rdparty/bzip2/bzip2"]
path = 3rdparty/bzip2/bzip2 path = 3rdparty/bzip2/bzip2
url = https://gitlab.com/bzip2/bzip2 url = https://gitlab.com/bzip2/bzip2
[submodule "3rdparty/MultiEmulator"]
path = 3rdparty/MultiEmulator
url = https://github.com/FWGS/MultiEmulator
[submodule "3rdparty/libogg/libogg"]
path = 3rdparty/libogg/libogg
url = https://github.com/xiph/ogg.git
[submodule "3rdparty/vorbis/vorbis-src"]
path = 3rdparty/vorbis/vorbis-src
url = https://github.com/xiph/vorbis.git
[submodule "3rdparty/opusfile/opusfile"]
path = 3rdparty/opusfile/opusfile
url = https://github.com/xiph/opusfile.git
[submodule "3rdparty/libbacktrace/libbacktrace"]
path = 3rdparty/libbacktrace/libbacktrace
url = https://github.com/ianlancetaylor/libbacktrace
[submodule "3rdparty/maintui"]
path = 3rdparty/maintui
url = https://github.com/FWGS/xash3d-maintui.git
[submodule "3rdparty/library_suffix"]
path = 3rdparty/library_suffix
url = https://github.com/FWGS/library-suffix.git
[submodule "3rdparty/mbedtls/mbedtls"]
path = 3rdparty/mbedtls/mbedtls
url = https://github.com/FWGS/mbedtls-releases.git
Vendored Submodule
+1
Submodule 3rdparty/MultiEmulator added at e369abc23c
-21
View File
@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2017-2018 Alexander Belkin
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.
-25
View File
@@ -1,25 +0,0 @@
# MultiEmulator
**MultiEmulator** - project for GoldSource Engine, which provides ability to generate tickets with a specific SteamID key, using all available emulators for this engine.
Ticket is processed by the game server of Half-Life 1 and modifications using **DProto** or **ReUnion** modules. If the server does not have these modules, then MultiEmulator won't work.
# Ticket generators
Currently available ticket generators:
* OldRevEmu
* AVSMP
* Setti
* SteamEmu
* RevEmu
* SC2009
* RevEmu2013
Currently under development generators:
* SmartSteamEmu (SSE3)
# How to use?
Each file in the **MultiEmulator\Source\Emulators** folder contains a **Generate** function that writes a ticket to the **pDest** argument for the emulator of the same name as a header file. As a result of the function, the size of the written ticket is returned. If the generator can set an arbitrary SteamID, the function will have the **nSteamID** argument, in which the required SteamID is specified.
# Examples
As an example, the DLL was developed that searches InitiateGameConnection method in ISteamUser interface, which generates Steam ticket, and inserts in its place own generator, which creates RevEmu2013 ticket with SteamID equal to 3333333. You can find this project in **Example** folder, you just need to compile it and perform DLL injection in hl.exe process with any known injection method.
-37
View File
@@ -1,37 +0,0 @@
#ifndef MULTI_EMULATOR_H
#define MULTI_EMULATOR_H
#if defined( __GNUC__ )
#if defined( __i386__ )
#define ME_EXPORT __attribute__(( visibility( "default" ), force_align_arg_pointer ))
#else
#define ME_EXPORT __attribute__(( visibility ( "default" )))
#endif
#else
#if defined( _MSC_VER )
#define ME_EXPORT __declspec( dllexport )
#else
#define ME_EXPORT
#endif
#endif
#include <string.h>
#if __cplusplus
extern "C"
{
#endif
int ME_EXPORT GenerateRevEmu2013( void *pDest, int nSteamID );
int ME_EXPORT GenerateSC2009( void *pDest, int nSteamID );
int ME_EXPORT GenerateOldRevEmu( void *pDest, int nSteamID );
int ME_EXPORT GenerateSteamEmu( void *pDest, int nSteamID );
int ME_EXPORT GenerateRevEmu( void *pDest, int nSteamID );
int ME_EXPORT GenerateSetti( void *pDest );
int ME_EXPORT GenerateAVSMP( void *pDest, int nSteamID, int bUniverse );
#if __cplusplus
}
#endif
#endif // MULTI_EMULATOR_H
-13
View File
@@ -1,13 +0,0 @@
#include "multi_emulator.h"
/* bUniverse param is "y" value in "STEAM_x:y:z" */
int GenerateAVSMP(void *pDest, int nSteamID, int bUniverse)
{
auto pTicket = (int *)pDest;
pTicket[0] = 0x14; // +0, header
pTicket[3] = (nSteamID << 1) | (bUniverse ? 1 : 0); // +12, SteamId, Low part
pTicket[4] = 0x01100001; // +16, SteamId, High part
return 28;
}
File diff suppressed because it is too large Load Diff
-187
View File
@@ -1,187 +0,0 @@
#ifndef __RIJNDAEL_H__
#define __RIJNDAEL_H__
#include <exception>
#include <stdexcept>
#include <cstring>
#include <string>
using namespace std;
//Rijndael (pronounced Reindaal) is a block cipher, designed by Joan Daemen and Vincent Rijmen as a candidate algorithm for the AES.
//The cipher has a variable block length and key length. The authors currently specify how to use keys with a length
//of 128, 192, or 256 bits to encrypt blocks with al length of 128, 192 or 256 bits (all nine combinations of
//key length and block length are possible). Both block length and key length can be extended very easily to
// multiples of 32 bits.
//Rijndael can be implemented very efficiently on a wide range of processors and in hardware.
//This implementation is based on the Java Implementation used with the Cryptix toolkit found at:
//http://www.esat.kuleuven.ac.be/~rijmen/rijndael/rijndael.zip
//Java code authors: Raif S. Naffah, Paulo S. L. M. Barreto
//This Implementation was tested against KAT test published by the authors of the method and the
//results were identical.
class CRijndael
{
public:
//Operation Modes
//The Electronic Code Book (ECB), Cipher Block Chaining (CBC) and Cipher Feedback Block (CFB) modes
//are implemented.
//In ECB mode if the same block is encrypted twice with the same key, the resulting
//ciphertext blocks are the same.
//In CBC Mode a ciphertext block is obtained by first xoring the
//plaintext block with the previous ciphertext block, and encrypting the resulting value.
//In CFB mode a ciphertext block is obtained by encrypting the previous ciphertext block
//and xoring the resulting value with the plaintext.
enum { ECB = 0, CBC = 1, CFB = 2 };
private:
enum { DEFAULT_BLOCK_SIZE = 16 };
enum { MAX_BLOCK_SIZE = 32, MAX_ROUNDS = 14, MAX_KC = 8, MAX_BC = 8 };
//Auxiliary Functions
//Multiply two elements of GF(2^m)
static int Mul(int a, int b)
{
return (a != 0 && b != 0) ? sm_alog[(sm_log[a & 0xFF] + sm_log[b & 0xFF]) % 255] : 0;
}
//Convenience method used in generating Transposition Boxes
static int Mul4(int a, char b[])
{
if (a == 0)
return 0;
a = sm_log[a & 0xFF];
int a0 = (b[0] != 0) ? sm_alog[(a + sm_log[b[0] & 0xFF]) % 255] & 0xFF : 0;
int a1 = (b[1] != 0) ? sm_alog[(a + sm_log[b[1] & 0xFF]) % 255] & 0xFF : 0;
int a2 = (b[2] != 0) ? sm_alog[(a + sm_log[b[2] & 0xFF]) % 255] & 0xFF : 0;
int a3 = (b[3] != 0) ? sm_alog[(a + sm_log[b[3] & 0xFF]) % 255] & 0xFF : 0;
return a0 << 24 | a1 << 16 | a2 << 8 | a3;
}
public:
//CONSTRUCTOR
CRijndael();
//DESTRUCTOR
virtual ~CRijndael();
//Expand a user-supplied key material into a session key.
// key - The 128/192/256-bit user-key to use.
// chain - initial chain block for CBC and CFB modes.
// keylength - 16, 24 or 32 bytes
// blockSize - The block size in bytes of this Rijndael (16, 24 or 32 bytes).
void MakeKey(char const* key, char const* chain, int keylength = DEFAULT_BLOCK_SIZE, int blockSize = DEFAULT_BLOCK_SIZE);
private:
//Auxiliary Function
void Xor(char* buff, char const* chain)
{
if (false == m_bKeyInit)
throw runtime_error(sm_szErrorMsg1);
for (int i = 0; i<m_blockSize; i++)
*(buff++) ^= *(chain++);
}
//Convenience method to encrypt exactly one block of plaintext, assuming
//Rijndael's default block size (128-bit).
// in - The plaintext
// result - The ciphertext generated from a plaintext using the key
void DefEncryptBlock(char const* in, char* result);
//Convenience method to decrypt exactly one block of plaintext, assuming
//Rijndael's default block size (128-bit).
// in - The ciphertext.
// result - The plaintext generated from a ciphertext using the session key.
void DefDecryptBlock(char const* in, char* result);
public:
//Encrypt exactly one block of plaintext.
// in - The plaintext.
// result - The ciphertext generated from a plaintext using the key.
void EncryptBlock(char const* in, char* result);
//Decrypt exactly one block of ciphertext.
// in - The ciphertext.
// result - The plaintext generated from a ciphertext using the session key.
void DecryptBlock(char const* in, char* result);
void Encrypt(char const* in, char* result, size_t n, int iMode = ECB);
void Decrypt(char const* in, char* result, size_t n, int iMode = ECB);
//Get Key Length
int GetKeyLength()
{
if (false == m_bKeyInit)
throw runtime_error(sm_szErrorMsg1);
return m_keylength;
}
//Block Size
int GetBlockSize()
{
if (false == m_bKeyInit)
throw runtime_error(sm_szErrorMsg1);
return m_blockSize;
}
//Number of Rounds
int GetRounds()
{
if (false == m_bKeyInit)
throw runtime_error(sm_szErrorMsg1);
return m_iROUNDS;
}
void ResetChain()
{
memcpy(m_chain, m_chain0, m_blockSize);
}
public:
//Null chain
static char const* sm_chain0;
private:
static const int sm_alog[256];
static const int sm_log[256];
static const char sm_S[256];
static const char sm_Si[256];
static const int sm_T1[256];
static const int sm_T2[256];
static const int sm_T3[256];
static const int sm_T4[256];
static const int sm_T5[256];
static const int sm_T6[256];
static const int sm_T7[256];
static const int sm_T8[256];
static const int sm_U1[256];
static const int sm_U2[256];
static const int sm_U3[256];
static const int sm_U4[256];
static const char sm_rcon[30];
static const int sm_shifts[3][4][2];
//Error Messages
static char const* sm_szErrorMsg1;
static char const* sm_szErrorMsg2;
//Key Initialization Flag
bool m_bKeyInit;
//Encryption (m_Ke) round key
int m_Ke[MAX_ROUNDS + 1][MAX_BC];
//Decryption (m_Kd) round key
int m_Kd[MAX_ROUNDS + 1][MAX_BC];
//Key Length
int m_keylength;
//Block Size
int m_blockSize;
//Number of Rounds
int m_iROUNDS;
//Chain Block
char m_chain0[MAX_BLOCK_SIZE];
char m_chain[MAX_BLOCK_SIZE];
//Auxiliary private use buffers
int tk[MAX_KC];
int a[MAX_BC];
int t[MAX_BC];
};
#endif // __RIJNDAEL_H__
-128
View File
@@ -1,128 +0,0 @@
//DoubleBuffering.cpp Source File
#include "DoubleBuffering.h"
#include <cassert>
#include <exception>
#include <string.h>
using namespace std;
CDoubleBuffering::CDoubleBuffering(ifstream& in, char* pcBuff, int iSize, int iDataLen) : m_rin(in),
m_iDataLen(iDataLen), m_bEOF(false), m_iSize(iSize), m_iSize2(iSize >> 1), m_pcBuff(pcBuff)
{
//m_iSize should be even
if(m_iSize%2 != 0)
throw runtime_error("CDoubleBuffering: m_iSize should be Even Number!");
//Check file
if(!in.is_open() || in.bad())
throw runtime_error("CDoubleBuffering: Referenced File not Opened or in Bad State!");
//Check construction data
if(m_iDataLen<1 || m_iSize2<m_iDataLen)
throw runtime_error("CDoubleBuffering: Illegal Construction Data!");
in.read(m_pcBuff, m_iSize2);
m_iEnd = m_rin.gcount();
m_iCurPos = 0;
m_iBuf = 0;
}
int CDoubleBuffering::GetData(char* pszDataBuf, int iDataLen)
{
if(-1 == iDataLen)
iDataLen = m_iDataLen;
if(iDataLen<1 || m_iSize2<iDataLen)
throw runtime_error("CDoubleBuffering::GetData(): Illegal iDataLen!");
if(true == m_bEOF)
return 0;
//Estimate the next position
int iCurPos = m_iCurPos + iDataLen;
if(0 == m_iBuf) //First Buffer
{
if(iCurPos >= m_iEnd)
{
//Read the next buffer
if(m_rin.eof())
{
m_bEOF = true;
//Take everything remained
int iRead = m_iEnd-m_iCurPos;
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);
return iRead;
}
else
{
m_rin.read(m_pcBuff+m_iEnd, m_iSize2);
m_iEnd += m_rin.gcount();
if(iCurPos > m_iEnd) //Still greater, then EOF attained
{
assert(m_rin.eof());
m_bEOF = true;
//Take everything remained
int iRead = m_iEnd-m_iCurPos;
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);
return iRead;
}
else
{
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);
m_iCurPos = iCurPos;
assert(m_iCurPos >= m_iSize2);
m_iBuf = 1;
return iDataLen;
}
}
}
else
{
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);
m_iCurPos = iCurPos;
return iDataLen;
}
}
else //1 == m_iBuf, Second Buffer
{
if(iCurPos >= m_iEnd)
{
//Read the next buffer
if(m_rin.eof())
{
m_bEOF = true;
//Take everything remained
int iRead = m_iEnd-m_iCurPos;
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);
return iRead;
}
else
{
m_rin.read(m_pcBuff, m_iSize2);
m_iEnd = m_rin.gcount();
iCurPos %= m_iSize;
if(iCurPos > m_iEnd) //Still greater, then EOF attained
{
assert(m_rin.eof());
m_bEOF = true;
//Take everything remained
int iRead = m_iSize-m_iCurPos;
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);
memcpy(pszDataBuf+iRead, m_pcBuff, m_iEnd);
return iRead + m_iEnd;
}
else
{
int iRead = m_iSize-m_iCurPos;
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iRead);
memcpy(pszDataBuf+iRead, m_pcBuff, iDataLen-iRead);
m_iCurPos = iCurPos;
assert(m_iCurPos < m_iSize2);
m_iBuf = 0;
return iDataLen;
}
}
}
else
{
memcpy(pszDataBuf, m_pcBuff+m_iCurPos, iDataLen);
m_iCurPos = iCurPos;
return iDataLen;
}
}
}
-40
View File
@@ -1,40 +0,0 @@
//DoubleBuffering.h Header File
#ifndef __DOUBLEBUFFERING_H__
#define __DOUBLEBUFFERING_H__
//Typical DISCLAIMER:
//The code in this project is Copyright (C) 2003 by George Anescu. You have the right to
//use and distribute the code in any way you see fit as long as this paragraph is included
//with the distribution. No warranties or claims are made as to the validity of the
//information and code contained herein, so use it at your own risk.
#include <fstream>
using namespace std;
class CDoubleBuffering
{
public:
//Constructor
CDoubleBuffering(ifstream& in, char* pcBuff, int iSize, int iDataLen);
//Get Next Data Buffer
int GetData(char* pszDataBuf, int iDataLen=-1);
private:
ifstream& m_rin;
int m_iSize;
int m_iSize2; //m_iSize/2
int m_iDataLen;
//Current Position
int m_iCurPos;
//End Position
int m_iEnd;
//Which Buffer
int m_iBuf;
char* m_pcBuff;
//EOF attained
bool m_bEOF;
};
#endif //__DOUBLEBUFFERING_H__
-38
View File
@@ -1,38 +0,0 @@
//MessageDigest.cpp
#include "MessageDigest.h"
#include "DoubleBuffering.h"
#include <exception>
#include <fstream>
#include <strstream>
using namespace std;
//Digesting a Full File
void IMessageDigest::DigestFile(string const& rostrFileIn, char* pcDigest)
{
//Is the User's responsability to ensure that pcDigest is appropriately allocated
//Open Input File
ifstream in(rostrFileIn.c_str(), ios::binary);
if(!in)
{
ostrstream ostr;
ostr << "FileDigest ERROR: in IMessageDigest::DigestFile(): Cannot open File " << rostrFileIn << "!" << ends;
string ostrMsg = ostr.str();
ostr.freeze(false);
throw runtime_error(ostrMsg);
}
//Resetting first
Reset();
//Reading from file
char szLargeBuff[BUFF_LEN+1] = {0};
char szBuff[DATA_LEN+1] = {0};
CDoubleBuffering oDoubleBuffering(in, szLargeBuff, BUFF_LEN, DATA_LEN);
int iRead;
while((iRead=oDoubleBuffering.GetData(szBuff)) > 0)
AddData(szBuff, iRead);
in.close();
//Final Step
FinalDigest(pcDigest);
}
-47
View File
@@ -1,47 +0,0 @@
//MessageDigest.h
#ifndef __MESSAGEDIGEST_H__
#define __MESSAGEDIGEST_H__
#include <string>
using namespace std;
//Typical DISCLAIMER:
//The code in this project is Copyright (C) 2003 by George Anescu. You have the right to
//use and distribute the code in any way you see fit as long as this paragraph is included
//with the distribution. No warranties or claims are made as to the validity of the
//information and code contained herein, so use it at your own risk.
//General Message Digest Interface
class IMessageDigest
{
public:
//CONSTRUCTOR
IMessageDigest() : m_bAddData(false) {}
//DESTRUCTOR
virtual ~IMessageDigest() {}
//Update context to reflect the concatenation of another buffer of bytes
virtual void AddData(char const* pcData, int iDataLength) = 0;
//Final wrapup - pad to BLOCKSIZE-byte boundary with the bit pattern
//10000...(64-bit count of bits processed, MSB-first)
virtual void FinalDigest(char* pcDigest) = 0;
//Reset current operation in order to prepare for a new one
virtual void Reset() = 0;
//Digesting a Full File
void DigestFile(string const& rostrFileIn, char* pcDigest);
protected:
enum { BLOCKSIZE=64 };
//Control Flag
bool m_bAddData;
//The core of the MessageDigest algorithm, this alters an existing MessageDigest hash to
//reflect the addition of 64 bytes of new data
virtual void Transform() = 0;
private:
enum { DATA_LEN=384, BUFF_LEN=1024 };
};
#endif // __MESSAGEDIGEST_H__
-13
View File
@@ -1,13 +0,0 @@
#include "multi_emulator.h"
int GenerateOldRevEmu(void* pDest, int nSteamID)
{
auto pTicket = (int*)pDest;
auto pbTicket = (unsigned char*)pDest;
pTicket[0] = 0xFFFF; // +0, header
pTicket[1] = (nSteamID ^ 0xC9710266) << 1; // +4, SteamId
*(short *)&pbTicket[8] = 0; // +8, unknown, in original emulator must be 0
return 10;
}
-27
View File
@@ -1,27 +0,0 @@
#include "multi_emulator.h"
#include "StrUtils.h"
#include "RevSpoofer.h"
int GenerateRevEmu(void *pDest, int nSteamID)
{
char szhwid[64];
CreateRandomString(szhwid, 16);
if (!RevSpoofer::Spoof(szhwid, nSteamID))
return 0;
auto pTicket = (int *)pDest;
auto revHash = RevSpoofer::Hash(szhwid);
pTicket[0] = 'J'; // +0, header
pTicket[1] = revHash; // +4, hash of string at +24 offset
pTicket[2] = 'r' << 16 | 'e' << 8 | 'v';// +8, magic number
pTicket[3] = 0; // +12, unknown number, must always be 0
pTicket[4] = revHash << 1; // +16, SteamId, Low part
pTicket[5] = 0x01100001; // +20, SteamId, High part
strcpy((char *)&pTicket[6], szhwid); // +24, string for hash
return 152;
}
-55
View File
@@ -1,55 +0,0 @@
#include "multi_emulator.h"
#include "StrUtils.h"
#include "RevSpoofer.h"
#include "CRijndael.h"
#include "SHA.h"
#include <time.h>
int GenerateRevEmu2013(void *pDest, int nSteamID)
{
char szhwid[64];
CreateRandomString(szhwid, 32);
if (!RevSpoofer::Spoof(szhwid, nSteamID))
return 0;
auto pTicket = (int *)pDest;
auto pbTicket = (unsigned char *)pDest;
auto revHash = RevSpoofer::Hash(szhwid);
pTicket[0] = 'S'; // +0
pTicket[1] = revHash; // +4
pTicket[2] = 'r' << 16 | 'e' << 8 | 'v';;// +8
pTicket[3] = 0; // +12
pTicket[4] = revHash << 1; // +16
pTicket[5] = 0x01100001; // +20
pTicket[6] = (int)time(0) + 90123; // +24
pbTicket[27] = ~(pbTicket[27] + pbTicket[24]);
pTicket[7] = ~(int)time(0); // +28
pTicket[8] = revHash * 2 >> 3; // +32
pTicket[9] = 0; // +36
static const char c_szAESKeyRand[] = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
char szAESHashRand[32];
auto AESRand = CRijndael();
AESRand.MakeKey(c_szAESKeyRand, CRijndael::sm_chain0, 32, 32);
AESRand.EncryptBlock(szhwid, szAESHashRand);
memcpy(&pbTicket[40], szAESHashRand, 32);
static const char c_szAESKeyRev[] = "_YOU_SERIOUSLY_NEED_TO_GET_LAID_";
char AESHashRev[32];
auto AESRev = CRijndael();
AESRev.MakeKey(c_szAESKeyRev, CRijndael::sm_chain0, 32, 32);
AESRev.EncryptBlock(c_szAESKeyRand, AESHashRev);
memcpy(&pbTicket[72], AESHashRev, 32);
char szSHAHash[32];
auto sha = CSHA(CSHA::SHA256);
sha.AddData(szhwid, 32);
sha.FinalDigest(szSHAHash);
memcpy(&pbTicket[104], szSHAHash, 32);
return 194;
}
-96
View File
@@ -1,96 +0,0 @@
#include "RevSpoofer.h"
#include <string.h>
#define astrlen(x) sizeof(x) - 1
static char s_szDictionary[] = { "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" };
static int iInputLen;
static unsigned int uTreasure;
bool ScanLast3(char *pszInput, unsigned int uPrevHash)
{
unsigned int h1, h2, h3, hh;
for (int i1 = 0; i1 < astrlen(s_szDictionary); i1++)
{
h1 = uPrevHash ^ ((uPrevHash >> 2) + (uPrevHash << 5) + s_szDictionary[i1]);
hh = h1 ^ ((h1 >> 2) + (h1 << 5));
hh = hh ^ ((hh >> 2) + (hh << 5));
if ((hh ^ uTreasure) >> (8 + 5 + 3))
continue;
for (int i2 = 0; i2 < astrlen(s_szDictionary); i2++)
{
h2 = h1 ^ ((h1 >> 2) + (h1 << 5) + s_szDictionary[i2]);
hh = h2 ^ ((h2 >> 2) + (h2 << 5));
if ((hh ^ uTreasure) >> (8 + 3))
continue;
for (int i3 = 0; i3 < astrlen(s_szDictionary); i3++)
{
h3 = h2 ^ ((h2 >> 2) + (h2 << 5) + s_szDictionary[i3]);
if (h3 == uTreasure)
{
pszInput[iInputLen - 3] = s_szDictionary[i1];
pszInput[iInputLen - 2] = s_szDictionary[i2];
pszInput[iInputLen - 1] = s_szDictionary[i3];
return true;
}
}
}
}
return false;
}
bool ScanNext(char* pszInput, int uIndex, unsigned int uPrevHash)
{
bool res;
for (int i = 0; i < astrlen(s_szDictionary); i++)
{
auto h = uPrevHash ^ ((uPrevHash >> 2) + (uPrevHash << 5) + s_szDictionary[i]);
if (uIndex + 1 < iInputLen - 3)
res = ScanNext(pszInput, uIndex + 1, h);
else
res = ScanLast3(pszInput, h);
if (res)
{
pszInput[uIndex] = s_szDictionary[i];
return true;
}
}
return false;
}
namespace RevSpoofer
{
bool Spoof(char *pszDest, int uSID)
{
uTreasure = uSID;
iInputLen = strlen(pszDest);
auto i = iInputLen - 7;
i = (i < 0) ? 0 : i;
pszDest[i] = '\0';
auto h = Hash(pszDest);
return ScanNext(pszDest, i, h);
}
unsigned int Hash(char *pszString)
{
int i = 0;
unsigned int nHash = 0x4E67C6A7;
int c = pszString[i++];
while (c)
{
nHash = nHash ^ ((nHash >> 2) + (nHash << 5) + c);
c = pszString[i++];
}
return nHash;
}
}
-7
View File
@@ -1,7 +0,0 @@
#pragma once
namespace RevSpoofer
{
bool Spoof(char *pszDest, int uSID);
unsigned int Hash(char *pszString);
}
-52
View File
@@ -1,52 +0,0 @@
#include "multi_emulator.h"
#include "StrUtils.h"
#include "RevSpoofer.h"
#include "CRijndael.h"
#include "SHA.h"
int GenerateSC2009(void* pDest, int nSteamID)
{
char hwid[64];
CreateRandomString(hwid, 32);
if (!RevSpoofer::Spoof(hwid, nSteamID))
return 0;
auto pTicket = (int*)pDest;
auto pbTicket = (unsigned char*)pDest;
auto revHash = RevSpoofer::Hash(hwid);
pTicket[0] = 'S'; // +0
pTicket[1] = revHash; // +4
pTicket[2] = 'r' << 16 | 'e' << 8 | 'v';;// +8
pTicket[3] = 0; // +12
pTicket[4] = revHash << 1; // +16
pTicket[5] = 0x01100001; // +20
/* Encrypt HWID with AESKeyRand key and save it in the ticket. */
static const char AESKeyRand[] = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
char AESHashRand[32];
auto AESRand = CRijndael();
AESRand.MakeKey(AESKeyRand, CRijndael::sm_chain0, 32, 32);
AESRand.EncryptBlock(hwid, AESHashRand);
memcpy(&pbTicket[24], AESHashRand, 32);
/* Encrypt AESKeyRand with AESKeyRev key and save it in the ticket.
* AESKeyRev key is identical to the key in dproto/reunion. */
static const char AESKeyRev[] = "_YOU_SERIOUSLY_NEED_TO_GET_LAID_";
char AESHashRev[32];
auto AESRev = CRijndael();
AESRev.MakeKey(AESKeyRev, CRijndael::sm_chain0, 32, 32);
AESRev.EncryptBlock(AESKeyRand, AESHashRev);
memcpy(&pbTicket[56], AESHashRev, 32);
/* Perform HWID hashing and save hash to the ticket. */
char SHAHash[32];
auto sha = CSHA(CSHA::SHA256);
sha.AddData(hwid, 32);
sha.FinalDigest(SHAHash);
memcpy(&pbTicket[88], SHAHash, 32);
return 178;
}
-734
View File
@@ -1,734 +0,0 @@
//SHA.cpp
#include "SHA.h"
#include <exception>
#include <strstream>
#include <string.h>
using namespace std;
const unsigned int CSHA::sm_K160[4] =
{
0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6
};
const unsigned int CSHA::sm_H160[SHA160LENGTH] =
{
0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0
};
const unsigned int CSHA::sm_K256[64] =
{
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
};
const unsigned int CSHA::sm_H256[SHA256LENGTH] =
{
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
};
const SUI64 CSHA::sm_H384[SHA512LENGTH] =
{
{0xcbbb9d5d, 0xc1059ed8},
{0x629a292a, 0x367cd507},
{0x9159015a, 0x3070dd17},
{0x152fecd8, 0xf70e5939},
{0x67332667, 0xffc00b31},
{0x8eb44a87, 0x68581511},
{0xdb0c2e0d, 0x64f98fa7},
{0x47b5481d, 0xbefa4fa4}
};
const SUI64 CSHA::sm_K512[80] =
{
{0x428a2f98, 0xd728ae22}, {0x71374491, 0x23ef65cd},
{0xb5c0fbcf, 0xec4d3b2f}, {0xe9b5dba5, 0x8189dbbc},
{0x3956c25b, 0xf348b538}, {0x59f111f1, 0xb605d019},
{0x923f82a4, 0xaf194f9b}, {0xab1c5ed5, 0xda6d8118},
{0xd807aa98, 0xa3030242}, {0x12835b01, 0x45706fbe},
{0x243185be, 0x4ee4b28c}, {0x550c7dc3, 0xd5ffb4e2},
{0x72be5d74, 0xf27b896f}, {0x80deb1fe, 0x3b1696b1},
{0x9bdc06a7, 0x25c71235}, {0xc19bf174, 0xcf692694},
{0xe49b69c1, 0x9ef14ad2}, {0xefbe4786, 0x384f25e3},
{0x0fc19dc6, 0x8b8cd5b5}, {0x240ca1cc, 0x77ac9c65},
{0x2de92c6f, 0x592b0275}, {0x4a7484aa, 0x6ea6e483},
{0x5cb0a9dc, 0xbd41fbd4}, {0x76f988da, 0x831153b5},
{0x983e5152, 0xee66dfab}, {0xa831c66d, 0x2db43210},
{0xb00327c8, 0x98fb213f}, {0xbf597fc7, 0xbeef0ee4},
{0xc6e00bf3, 0x3da88fc2}, {0xd5a79147, 0x930aa725},
{0x06ca6351, 0xe003826f}, {0x14292967, 0x0a0e6e70},
{0x27b70a85, 0x46d22ffc}, {0x2e1b2138, 0x5c26c926},
{0x4d2c6dfc, 0x5ac42aed}, {0x53380d13, 0x9d95b3df},
{0x650a7354, 0x8baf63de}, {0x766a0abb, 0x3c77b2a8},
{0x81c2c92e, 0x47edaee6}, {0x92722c85, 0x1482353b},
{0xa2bfe8a1, 0x4cf10364}, {0xa81a664b, 0xbc423001},
{0xc24b8b70, 0xd0f89791}, {0xc76c51a3, 0x0654be30},
{0xd192e819, 0xd6ef5218}, {0xd6990624, 0x5565a910},
{0xf40e3585, 0x5771202a}, {0x106aa070, 0x32bbd1b8},
{0x19a4c116, 0xb8d2d0c8}, {0x1e376c08, 0x5141ab53},
{0x2748774c, 0xdf8eeb99}, {0x34b0bcb5, 0xe19b48a8},
{0x391c0cb3, 0xc5c95a63}, {0x4ed8aa4a, 0xe3418acb},
{0x5b9cca4f, 0x7763e373}, {0x682e6ff3, 0xd6b2b8a3},
{0x748f82ee, 0x5defb2fc}, {0x78a5636f, 0x43172f60},
{0x84c87814, 0xa1f0ab72}, {0x8cc70208, 0x1a6439ec},
{0x90befffa, 0x23631e28}, {0xa4506ceb, 0xde82bde9},
{0xbef9a3f7, 0xb2c67915}, {0xc67178f2, 0xe372532b},
{0xca273ece, 0xea26619c}, {0xd186b8c7, 0x21c0c207},
{0xeada7dd6, 0xcde0eb1e}, {0xf57d4f7f, 0xee6ed178},
{0x06f067aa, 0x72176fba}, {0x0a637dc5, 0xa2c898a6},
{0x113f9804, 0xbef90dae}, {0x1b710b35, 0x131c471b},
{0x28db77f5, 0x23047d84}, {0x32caab7b, 0x40c72493},
{0x3c9ebe0a, 0x15c9bebc}, {0x431d67c4, 0x9c100d4c},
{0x4cc5d4be, 0xcb3e42b6}, {0x597f299c, 0xfc657e2a},
{0x5fcb6fab, 0x3ad6faec}, {0x6c44198c, 0x4a475817}
};
const SUI64 CSHA::sm_H512[SHA512LENGTH] =
{
{0x6a09e667, 0xf3bcc908},
{0xbb67ae85, 0x84caa73b},
{0x3c6ef372, 0xfe94f82b},
{0xa54ff53a, 0x5f1d36f1},
{0x510e527f, 0xade682d1},
{0x9b05688c, 0x2b3e6c1f},
{0x1f83d9ab, 0xfb41bd6b},
{0x5be0cd19, 0x137e2179}
};
//CONSTRUCTOR
CSHA::CSHA(int iMethod)
{
//Check the method
switch(iMethod)
{
case SHA160:
{
for(int i=0; i<SHA160LENGTH; i++)
m_auiBuf[i] = sm_H160[i];
m_auiBits[0] = 0;
m_auiBits[1] = 0;
}
break;
case SHA256:
{
for(int i=0; i<SHA256LENGTH; i++)
m_auiBuf[i] = sm_H256[i];
m_auiBits[0] = 0;
m_auiBits[1] = 0;
}
break;
case SHA384:
{
for(int i=0; i<SHA512LENGTH; i++)
m_aoui64Buf[i] = sm_H384[i];
m_aoui64Bits[0].m_uiLeft = 0;
m_aoui64Bits[0].m_uiRight = 0;
m_aoui64Bits[1].m_uiLeft = 0;
m_aoui64Bits[1].m_uiRight = 0;
}
break;
case SHA512:
{
for(int i=0; i<SHA512LENGTH; i++)
m_aoui64Buf[i] = sm_H512[i];
m_aoui64Bits[0].m_uiLeft = 0;
m_aoui64Bits[0].m_uiRight = 0;
m_aoui64Bits[1].m_uiLeft = 0;
m_aoui64Bits[1].m_uiRight = 0;
}
break;
default:
{
ostrstream ostr;
ostr << "FileDigest ERROR: in CSHA() Constructor, Illegal Method " << iMethod << "!" << ends;
string ostrMsg = ostr.str();
ostr.freeze(false);
throw runtime_error(ostrMsg);
}
}
m_iMethod = iMethod;
}
//Update context to reflect the concatenation of another buffer of bytes.
void CSHA::AddData(char const* pcData, int iDataLength)
{
if(iDataLength < 0)
throw runtime_error(string("FileDigest ERROR: in CSHA::AddData(), Data Length should be >= 0!"));
unsigned int uiT;
switch(m_iMethod)
{
case SHA160:
case SHA256:
{
//Update bitcount
uiT = m_auiBits[0];
if((m_auiBits[0] = uiT + ((unsigned int)iDataLength << 3)) < uiT)
m_auiBits[1]++; //Carry from low to high
m_auiBits[1] += iDataLength >> 29;
uiT = (uiT >> 3) & (BLOCKSIZE-1); //Bytes already
//Handle any leading odd-sized chunks
if(uiT != 0)
{
unsigned char* puc = (unsigned char*)m_aucIn + uiT;
uiT = BLOCKSIZE - uiT;
if(iDataLength < uiT)
{
memcpy(puc, pcData, iDataLength);
return;
}
memcpy(puc, pcData, uiT);
Transform();
pcData += uiT;
iDataLength -= uiT;
}
//Process data in 64-byte chunks
while(iDataLength >= BLOCKSIZE)
{
memcpy(m_aucIn, pcData, BLOCKSIZE);
Transform();
pcData += BLOCKSIZE;
iDataLength -= BLOCKSIZE;
}
//Handle any remaining bytes of data
memcpy(m_aucIn, pcData, iDataLength);
}
break;
case SHA384:
case SHA512:
{
uiT = m_aoui64Bits[0].m_uiRight;
unsigned int uiU = m_aoui64Bits[0].m_uiLeft;
if((m_aoui64Bits[0].m_uiRight = uiT + ((unsigned int)iDataLength << 3)) < uiT)
m_aoui64Bits[0].m_uiLeft++; //Carry from low to high
unsigned int uiV = m_aoui64Bits[1].m_uiRight;
if((m_aoui64Bits[0].m_uiLeft += iDataLength >> 29) < uiU)
m_aoui64Bits[1].m_uiRight++;
if(m_aoui64Bits[1].m_uiRight < uiV)
m_aoui64Bits[1].m_uiLeft++;
uiT = (uiT >> 3) & (BLOCKSIZE2-1); //Bytes already
//Handle any leading odd-sized chunks
if(uiT != 0)
{
unsigned char* puc = (unsigned char*)m_aucIn + uiT;
uiT = BLOCKSIZE2 - uiT;
if(iDataLength < uiT)
{
memcpy(puc, pcData, iDataLength);
return;
}
memcpy(puc, pcData, uiT);
Transform();
pcData += uiT;
iDataLength -= uiT;
}
//Process data in 64-byte chunks
while(iDataLength >= BLOCKSIZE2)
{
memcpy(m_aucIn, pcData, BLOCKSIZE2);
Transform();
pcData += BLOCKSIZE2;
iDataLength -= BLOCKSIZE2;
}
//Handle any remaining bytes of data
memcpy(m_aucIn, pcData, iDataLength);
}
break;
}
//Set the flag
m_bAddData = true;
}
//Final wrapup - pad to 64-byte boundary with the bit pattern
//1 0*(64-bit count of bits processed, MSB-first)
void CSHA::FinalDigest(char* pcDigest)
{
//Is the User's responsability to ensure that pcDigest is properly allocated 20, 32,
//48 or 64 bytes, depending on the method
if(false == m_bAddData)
throw runtime_error(string("FileDigest ERROR: in CSHA::FinalDigest(), No data Added before call!"));
switch(m_iMethod)
{
case SHA160:
case SHA256:
{
unsigned int uiCount;
unsigned char *puc;
//Compute number of bytes mod 64
uiCount = (m_auiBits[0] >> 3) & (BLOCKSIZE-1);
//Set the first char of padding to 0x80. This is safe since there is
//always at least one byte free
puc = m_aucIn + uiCount;
*puc++ = 0x80;
//Bytes of padding needed to make 64 bytes
uiCount = BLOCKSIZE - uiCount - 1;
//Pad out to 56 mod 64
if(uiCount < 8)
{
//Two lots of padding: Pad the first block to 64 bytes
memset(puc, 0, uiCount);
Transform();
//Now fill the next block with 56 bytes
memset(m_aucIn, 0, BLOCKSIZE-8);
}
else
{
//Pad block to 56 bytes
memset(puc, 0, uiCount - 8);
}
//Append length in bits and transform
Word2Bytes(m_auiBits[1], &m_aucIn[BLOCKSIZE-8]);
Word2Bytes(m_auiBits[0], &m_aucIn[BLOCKSIZE-4]);
Transform();
switch(m_iMethod)
{
case SHA160:
{
for(int i=0; i<SHA160LENGTH; i++,pcDigest+=4)
Word2Bytes(m_auiBuf[i], reinterpret_cast<unsigned char*>(pcDigest));
}
break;
case SHA256:
{
for(int i=0; i<SHA256LENGTH; i++,pcDigest+=4)
Word2Bytes(m_auiBuf[i], reinterpret_cast<unsigned char*>(pcDigest));
}
break;
}
}
break;
case SHA384:
case SHA512:
{
unsigned char *puc;
//Compute number of bytes mod 128
unsigned int uiCount = (m_aoui64Bits[0].m_uiRight >> 3) & (BLOCKSIZE2-1);
//Set the first char of padding to 0x80. This is safe since there is
//always at least one byte free
puc = m_aucIn + uiCount;
*puc++ = 0x80;
//Bytes of padding needed to make 128 bytes
uiCount = BLOCKSIZE2 - uiCount - 1;
//Pad out to 112 mod 128
if(uiCount < 16)
{
//Two lots of padding: Pad the first block to 128 bytes
memset(puc, 0, uiCount);
Transform();
//Now fill the next block with 112 bytes
memset(m_aucIn, 0, BLOCKSIZE2-16);
}
else
{
//Pad block to 112 bytes
memset(puc, 0, uiCount - 16);
}
//Append length in bits and transform
Word2Bytes(m_aoui64Bits[1], &m_aucIn[BLOCKSIZE2-16]);
Word2Bytes(m_aoui64Bits[0], &m_aucIn[BLOCKSIZE2-8]);
Transform();
switch(m_iMethod)
{
case SHA384:
{
for(int i=0; i<SHA384LENGTH; i++,pcDigest+=8)
Word2Bytes(m_aoui64Buf[i], reinterpret_cast<unsigned char*>(pcDigest));
}
break;
case SHA512:
{
for(int i=0; i<SHA512LENGTH; i++,pcDigest+=8)
Word2Bytes(m_aoui64Buf[i], reinterpret_cast<unsigned char*>(pcDigest));
}
break;
}
}
break;
}
//Reinitialize
Reset();
}
//Reset current operation in order to prepare a new one
void CSHA::Reset()
{
//Reinitialize
switch(m_iMethod)
{
case SHA160:
{
for(int i=0; i<SHA160LENGTH; i++)
m_auiBuf[i] = sm_H160[i];
m_auiBits[0] = 0;
m_auiBits[1] = 0;
}
break;
case SHA256:
{
for(int i=0; i<SHA256LENGTH; i++)
m_auiBuf[i] = sm_H256[i];
m_auiBits[0] = 0;
m_auiBits[1] = 0;
}
break;
case SHA384:
{
for(int i=0; i<SHA512LENGTH; i++)
m_aoui64Buf[i] = sm_H384[i];
m_aoui64Bits[0].m_uiLeft = 0;
m_aoui64Bits[0].m_uiRight = 0;
m_aoui64Bits[1].m_uiLeft = 0;
m_aoui64Bits[1].m_uiRight = 0;
}
break;
case SHA512:
{
for(int i=0; i<SHA512LENGTH; i++)
m_aoui64Buf[i] = sm_H512[i];
m_aoui64Bits[0].m_uiLeft = 0;
m_aoui64Bits[0].m_uiRight = 0;
m_aoui64Bits[1].m_uiLeft = 0;
m_aoui64Bits[1].m_uiRight = 0;
}
}
//Reset the flag
m_bAddData = false;
}
//The core of the SHA algorithm, this alters an existing SHA hash to
//reflect the addition of 16 longwords of new data.
void CSHA::Transform()
{
switch(m_iMethod)
{
case SHA160:
{
//Expansion of m_aucIn
unsigned char* pucIn = m_aucIn;
unsigned int auiW[80];
int i;
for(i=0; i<16; i++,pucIn+=4)
Bytes2Word(pucIn, auiW[i]);
for(i=16; i<80; i++)
auiW[i] = CircularShift(1, auiW[i-3]^auiW[i-8]^auiW[i-14]^auiW[i-16]);
unsigned int temp;
unsigned int A, B, C, D, E;
A = m_auiBuf[0];
B = m_auiBuf[1];
C = m_auiBuf[2];
D = m_auiBuf[3];
E = m_auiBuf[4];
for(i=0; i<20; i++)
{
temp = CircularShift(5, A) + ((B & C) | ((~B) & D)) + E + auiW[i] + sm_K160[0];
E = D;
D = C;
C = CircularShift(30, B);
B = A;
A = temp;
}
for(i=20; i<40; i++)
{
temp = CircularShift(5, A) + (B ^ C ^ D) + E + auiW[i] + sm_K160[1];
E = D;
D = C;
C = CircularShift(30, B);
B = A;
A = temp;
}
for(i=40; i<60; i++)
{
temp = CircularShift(5, A) + ((B & C) | (B & D) | (C & D)) + E + auiW[i] + sm_K160[2];
E = D;
D = C;
C = CircularShift(30, B);
B = A;
A = temp;
}
for(i=60; i<80; i++)
{
temp = CircularShift(5, A) + (B ^ C ^ D) + E + auiW[i] + sm_K160[3];
E = D;
D = C;
C = CircularShift(30, B);
B = A;
A = temp;
}
m_auiBuf[0] += A;
m_auiBuf[1] += B;
m_auiBuf[2] += C;
m_auiBuf[3] += D;
m_auiBuf[4] += E;
}
break;
case SHA256:
{
//Expansion of m_aucIn
unsigned char* pucIn = m_aucIn;
unsigned int auiW[64];
int i;
for(i=0; i<16; i++,pucIn+=4)
Bytes2Word(pucIn, auiW[i]);
for(i=16; i<64; i++)
auiW[i] = sig1(auiW[i-2]) + auiW[i-7] + sig0(auiW[i-15]) + auiW[i-16];
//OR
//for(i=0; i<48; i++)
// auiW[i+16] = sig1(auiW[i+14]) + auiW[i+9] + sig0(auiW[i+1]) + auiW[i];
unsigned int a, b, c, d, e, f, g, h, t;
a = m_auiBuf[0];
b = m_auiBuf[1];
c = m_auiBuf[2];
d = m_auiBuf[3];
e = m_auiBuf[4];
f = m_auiBuf[5];
g = m_auiBuf[6];
h = m_auiBuf[7];
t = h + SIG1(e) + CH(e, f, g) + sm_K256[0] + auiW[0]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[1] + auiW[1]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[2] + auiW[2]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[3] + auiW[3]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[4] + auiW[4]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[5] + auiW[5]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[6] + auiW[6]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[7] + auiW[7]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[8] + auiW[8]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[9] + auiW[9]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[10] + auiW[10]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[11] + auiW[11]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[12] + auiW[12]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[13] + auiW[13]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[14] + auiW[14]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[15] + auiW[15]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[16] + auiW[16]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[17] + auiW[17]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[18] + auiW[18]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[19] + auiW[19]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[20] + auiW[20]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[21] + auiW[21]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[22] + auiW[22]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[23] + auiW[23]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[24] + auiW[24]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[25] + auiW[25]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[26] + auiW[26]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[27] + auiW[27]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[28] + auiW[28]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[29] + auiW[29]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[30] + auiW[30]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[31] + auiW[31]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[32] + auiW[32]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[33] + auiW[33]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[34] + auiW[34]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[35] + auiW[35]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[36] + auiW[36]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[37] + auiW[37]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[38] + auiW[38]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[39] + auiW[39]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[40] + auiW[40]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[41] + auiW[41]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[42] + auiW[42]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[43] + auiW[43]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[44] + auiW[44]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[45] + auiW[45]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[46] + auiW[46]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[47] + auiW[47]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[48] + auiW[48]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[49] + auiW[49]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[50] + auiW[50]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[51] + auiW[51]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[52] + auiW[52]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[53] + auiW[53]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[54] + auiW[54]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[55] + auiW[55]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K256[56] + auiW[56]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K256[57] + auiW[57]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K256[58] + auiW[58]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K256[59] + auiW[59]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K256[60] + auiW[60]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K256[61] + auiW[61]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K256[62] + auiW[62]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K256[63] + auiW[63]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
//OR
/*
unsigned int a, b, c, d, e, f, g, h, t1, t2;
a = m_auiBuf[0];
b = m_auiBuf[1];
c = m_auiBuf[2];
d = m_auiBuf[3];
e = m_auiBuf[4];
f = m_auiBuf[5];
g = m_auiBuf[6];
h = m_auiBuf[7];
//
for(i=0; i<64; i++)
{
t1 = h + SIG1(e) + CH(e, f, g) + sm_K256[i] + auiW[i];
t2 = SIG0(a) + MAJ(a, b, c);
h = g;
g = f;
f = e;
e = d+t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
*/
m_auiBuf[0] += a;
m_auiBuf[1] += b;
m_auiBuf[2] += c;
m_auiBuf[3] += d;
m_auiBuf[4] += e;
m_auiBuf[5] += f;
m_auiBuf[6] += g;
m_auiBuf[7] += h;
}
break;
case SHA384:
case SHA512:
{
//Expansion of m_aucIn
unsigned char* pucIn = m_aucIn;
SUI64 aoui64W[80];
int i;
for(i=0; i<16; i++,pucIn+=8)
Bytes2Word(pucIn, aoui64W[i]);
for(i=16; i<80; i++)
aoui64W[i] = sig1(aoui64W[i-2]) + aoui64W[i-7] + sig0(aoui64W[i-15]) + aoui64W[i-16];
SUI64 a, b, c, d, e, f, g, h, t;
a = m_aoui64Buf[0];
b = m_aoui64Buf[1];
c = m_aoui64Buf[2];
d = m_aoui64Buf[3];
e = m_aoui64Buf[4];
f = m_aoui64Buf[5];
g = m_aoui64Buf[6];
h = m_aoui64Buf[7];
t = h + SIG1(e) + CH(e, f, g) + sm_K512[0] + aoui64W[0]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[1] + aoui64W[1]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[2] + aoui64W[2]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[3] + aoui64W[3]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[4] + aoui64W[4]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[5] + aoui64W[5]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[6] + aoui64W[6]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[7] + aoui64W[7]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[8] + aoui64W[8]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[9] + aoui64W[9]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[10] + aoui64W[10]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[11] + aoui64W[11]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[12] + aoui64W[12]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[13] + aoui64W[13]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[14] + aoui64W[14]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[15] + aoui64W[15]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[16] + aoui64W[16]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[17] + aoui64W[17]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[18] + aoui64W[18]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[19] + aoui64W[19]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[20] + aoui64W[20]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[21] + aoui64W[21]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[22] + aoui64W[22]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[23] + aoui64W[23]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[24] + aoui64W[24]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[25] + aoui64W[25]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[26] + aoui64W[26]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[27] + aoui64W[27]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[28] + aoui64W[28]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[29] + aoui64W[29]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[30] + aoui64W[30]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[31] + aoui64W[31]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[32] + aoui64W[32]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[33] + aoui64W[33]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[34] + aoui64W[34]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[35] + aoui64W[35]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[36] + aoui64W[36]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[37] + aoui64W[37]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[38] + aoui64W[38]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[39] + aoui64W[39]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[40] + aoui64W[40]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[41] + aoui64W[41]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[42] + aoui64W[42]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[43] + aoui64W[43]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[44] + aoui64W[44]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[45] + aoui64W[45]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[46] + aoui64W[46]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[47] + aoui64W[47]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[48] + aoui64W[48]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[49] + aoui64W[49]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[50] + aoui64W[50]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[51] + aoui64W[51]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[52] + aoui64W[52]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[53] + aoui64W[53]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[54] + aoui64W[54]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[55] + aoui64W[55]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[56] + aoui64W[56]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[57] + aoui64W[57]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[58] + aoui64W[58]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[59] + aoui64W[59]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[60] + aoui64W[60]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[61] + aoui64W[61]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[62] + aoui64W[62]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[63] + aoui64W[63]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[64] + aoui64W[64]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[65] + aoui64W[65]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[66] + aoui64W[66]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[67] + aoui64W[67]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[68] + aoui64W[68]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[69] + aoui64W[69]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[70] + aoui64W[70]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[71] + aoui64W[71]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
t = h + SIG1(e) + CH(e, f, g) + sm_K512[72] + aoui64W[72]; h = t + SIG0(a) + MAJ(a, b, c); d += t;
t = g + SIG1(d) + CH(d, e, f) + sm_K512[73] + aoui64W[73]; g = t + SIG0(h) + MAJ(h, a, b); c += t;
t = f + SIG1(c) + CH(c, d, e) + sm_K512[74] + aoui64W[74]; f = t + SIG0(g) + MAJ(g, h, a); b += t;
t = e + SIG1(b) + CH(b, c, d) + sm_K512[75] + aoui64W[75]; e = t + SIG0(f) + MAJ(f, g, h); a += t;
t = d + SIG1(a) + CH(a, b, c) + sm_K512[76] + aoui64W[76]; d = t + SIG0(e) + MAJ(e, f, g); h += t;
t = c + SIG1(h) + CH(h, a, b) + sm_K512[77] + aoui64W[77]; c = t + SIG0(d) + MAJ(d, e, f); g += t;
t = b + SIG1(g) + CH(g, h, a) + sm_K512[78] + aoui64W[78]; b = t + SIG0(c) + MAJ(c, d, e); f += t;
t = a + SIG1(f) + CH(f, g, h) + sm_K512[79] + aoui64W[79]; a = t + SIG0(b) + MAJ(b, c, d); e += t;
//
m_aoui64Buf[0] += a;
m_aoui64Buf[1] += b;
m_aoui64Buf[2] += c;
m_aoui64Buf[3] += d;
m_aoui64Buf[4] += e;
m_aoui64Buf[5] += f;
m_aoui64Buf[6] += g;
m_aoui64Buf[7] += h;
}
break;
}
}
-379
View File
@@ -1,379 +0,0 @@
//SHA.h
#ifndef __SHA_H__
#define __SHA_H__
#include "MessageDigest.h"
//Typical DISCLAIMER:
//The code in this project is Copyright (C) 2003 by George Anescu. You have the right to
//use and distribute the code in any way you see fit as long as this paragraph is included
//with the distribution. No warranties or claims are made as to the validity of the
//information and code contained herein, so use it at your own risk.
//Structure for representing an Unsigned Integer on 64 bits
struct SUI64
{
//Data
unsigned int m_uiLeft;
unsigned int m_uiRight;
//Operators
SUI64& operator++()
{
unsigned int uiTemp = m_uiRight;
m_uiRight++;
if(m_uiRight < uiTemp)
m_uiLeft++;
return *this;
}
SUI64& operator--()
{
unsigned int uiTemp = m_uiRight;
m_uiRight--;
if(m_uiRight > uiTemp)
m_uiLeft--;
return *this;
}
SUI64& operator+=(SUI64 const& roUI64)
{
m_uiRight += roUI64.m_uiRight;
if(m_uiRight < roUI64.m_uiRight)
m_uiLeft++;
m_uiLeft += roUI64.m_uiLeft;
return *this;
}
SUI64& operator|=(SUI64 const& roUI64)
{
m_uiRight |= roUI64.m_uiRight;
m_uiLeft |= roUI64.m_uiLeft;
return *this;
}
SUI64& operator&=(SUI64 const& roUI64)
{
m_uiRight &= roUI64.m_uiRight;
m_uiLeft &= roUI64.m_uiLeft;
return *this;
}
SUI64& operator^=(SUI64 const& roUI64)
{
m_uiRight ^= roUI64.m_uiRight;
m_uiLeft ^= roUI64.m_uiLeft;
return *this;
}
SUI64& operator<<=(unsigned int uiBits)
{
if(uiBits < 32)
{
(m_uiLeft <<= uiBits) |= (m_uiRight >> (32-uiBits));
m_uiRight <<= uiBits;
}
else
{
m_uiLeft = m_uiRight << (uiBits-32);
m_uiRight = 0;
}
return *this;
}
SUI64& operator>>=(unsigned int uiBits)
{
if(uiBits < 32)
{
(m_uiRight >>= uiBits) |= (m_uiLeft << (32-uiBits));
m_uiLeft >>= uiBits;
}
else
{
m_uiRight = m_uiLeft >> (uiBits-32);
m_uiLeft = 0;
}
return *this;
}
bool operator>(SUI64 const& roUI64) const
{
if(m_uiLeft == roUI64.m_uiLeft)
return m_uiRight > roUI64.m_uiRight;
else
return m_uiLeft > roUI64.m_uiLeft;
}
bool operator<(SUI64 const& roUI64) const
{
if(m_uiLeft == roUI64.m_uiLeft)
return m_uiRight < roUI64.m_uiRight;
else
return m_uiLeft < roUI64.m_uiLeft;
}
};
inline SUI64 operator+(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
SUI64 temp = roUI64_1;
temp += roUI64_2;
return temp;
}
inline SUI64 operator|(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
SUI64 temp = roUI64_1;
temp |= roUI64_2;
return temp;
}
inline SUI64 operator&(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
SUI64 temp = roUI64_1;
temp &= roUI64_2;
return temp;
}
inline SUI64 operator^(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
SUI64 temp = roUI64_1;
temp ^= roUI64_2;
return temp;
}
inline SUI64 operator<<(SUI64 const& roUI64, unsigned int uiBits)
{
SUI64 temp = roUI64;
temp <<= uiBits;
return temp;
}
inline SUI64 operator>>(SUI64 const& roUI64, unsigned int uiBits)
{
SUI64 temp = roUI64;
temp >>= uiBits;
return temp;
}
inline bool operator>(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
return roUI64_1.operator>(roUI64_2);
}
inline bool operator<(SUI64 const& roUI64_1, SUI64 const& roUI64_2)
{
return roUI64_1.operator<(roUI64_2);
}
//SHA Message Digest algorithm
//SHA160 TEST VALUES:
//1)"abc"
//"A9993E364706816ABA3E25717850C26C9CD0D89D"
//
//2)"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
//"84983E441C3BD26EBAAE4AA1F95129E5E54670F1"
//
//3)1,000,000 repetitions of "a".
//"34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"
//
//SHA256 TEST VALUES:
//1)One-Block Message "abc"
//"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
//
//2)"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
//"248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"
//
//3)Multi-Block Message "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
//"CF5B16A778AF8380036CE59E7B0492370B249B11E8F07A51AFAC45037AFEE9D1"
//
//4)Long Message "a" 1,000,000 times
//"cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0"
//
//SHA384 TEST VALUES:
//1)One-Block Message "abc"
//"cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7"
//
//2)Multi-Block Message "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
//"09330C33F71147E83D192FC782CD1B4753111B173B3B05D22FA08086E3B0F712FCC7C71A557E2DB966C3E9FA91746039"
//
//3)Long Message "a" 1,000,000 times
//"9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985"
//
//SHA512 TEST VALUES:
//1)One-Block Message "abc"
//"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a8
//36ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"
//
//2)"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
//"8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4
//331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909"
//
//3)""
//"CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0
//FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E"
//
//4)Long Message "a" 1,000,000 times
//"E718483D0CE769644E2E42C7BC15B4638E1F98B13B2044285632A803AFA973EBDE0FF244877EA60A
//4CB0432CE577C31BEB009C5C2C49AA2E4EADB217AD8CC09B"
class CSHA : public IMessageDigest
{
public:
enum { SHA160=0, SHA256=1, SHA384=2, SHA512=3 };
//CONSTRUCTOR
CSHA(int iMethod=SHA160);
//Update context to reflect the concatenation of another buffer of bytes.
void AddData(char const* pcData, int iDataLength);
//Final wrapup - pad to 64-byte boundary with the bit pattern
//1 0*(64-bit count of bits processed, MSB-first)
void FinalDigest(char* pcDigest);
//Reset current operation in order to prepare a new one
void Reset();
private:
//Transformation Function
void Transform();
//The Method
int m_iMethod;
enum { BLOCKSIZE2 = BLOCKSIZE<<1 };
//For 32 bits Integers
enum { SHA160LENGTH=5, SHA256LENGTH=8 };
//Context Variables
unsigned int m_auiBuf[SHA256LENGTH]; //Maximum for SHA256
unsigned int m_auiBits[2];
unsigned char m_aucIn[BLOCKSIZE2]; //128 bytes for SHA384, SHA512
//Internal auxiliary static functions
static unsigned int CircularShift(unsigned int uiBits, unsigned int uiWord);
static unsigned int CH(unsigned int x, unsigned int y, unsigned int z);
static unsigned int MAJ(unsigned int x, unsigned int y, unsigned int z);
static unsigned int SIG0(unsigned int x);
static unsigned int SIG1(unsigned int x);
static unsigned int sig0(unsigned int x);
static unsigned int sig1(unsigned int x);
static void Bytes2Word(unsigned char const* pcBytes, unsigned int& ruiWord);
static void Word2Bytes(unsigned int const& ruiWord, unsigned char* pcBytes);
static const unsigned int sm_K160[4];
static const unsigned int sm_H160[SHA160LENGTH];
static const unsigned int sm_K256[64];
static const unsigned int sm_H256[SHA256LENGTH];
//For 64 bits Integers
enum { SHA384LENGTH=6, SHA512LENGTH=8 };
//Context Variables
SUI64 m_aoui64Buf[SHA512LENGTH]; //Maximum for SHA512
SUI64 m_aoui64Bits[2];
//Internal auxiliary static functions
static SUI64 CircularShift(unsigned int uiBits, SUI64 const& roui64Word);
static SUI64 CH(SUI64 const& x, SUI64 const& y, SUI64 const& z);
static SUI64 MAJ(SUI64 const& x, SUI64 const& y, SUI64 const& z);
static SUI64 SIG0(SUI64 const& x);
static SUI64 SIG1(SUI64 const& x);
static SUI64 sig0(SUI64 const& x);
static SUI64 sig1(SUI64 const& x);
static void Bytes2Word(unsigned char const* pcBytes, SUI64& ruiWord);
static void Word2Bytes(SUI64 const& ruiWord, unsigned char* pcBytes);
static const SUI64 sm_H384[SHA512LENGTH]; //Dim is as 512
static const SUI64 sm_K512[80];
static const SUI64 sm_H512[SHA512LENGTH];
};
inline unsigned int CSHA::CircularShift(unsigned int uiBits, unsigned int uiWord)
{
return (uiWord << uiBits) | (uiWord >> (32-uiBits));
}
inline unsigned int CSHA::CH(unsigned int x, unsigned int y, unsigned int z)
{
return ((x&(y^z))^z);
}
inline unsigned int CSHA::MAJ(unsigned int x, unsigned int y, unsigned int z)
{
return (((x|y)&z)|(x&y));
}
inline unsigned int CSHA::SIG0(unsigned int x)
{
return ((x >> 2)|(x << 30)) ^ ((x >> 13)|(x << 19)) ^ ((x >> 22)|(x << 10));
}
inline unsigned int CSHA::SIG1(unsigned int x)
{
return ((x >> 6)|(x << 26)) ^ ((x >> 11)|(x << 21)) ^ ((x >> 25)|(x << 7));
}
inline unsigned int CSHA::sig0(unsigned int x)
{
return ((x >> 7)|(x << 25)) ^ ((x >> 18)|(x << 14)) ^ (x >> 3);
}
inline unsigned int CSHA::sig1(unsigned int x)
{
return ((x >> 17)|(x << 15)) ^ ((x >> 19)|(x << 13)) ^ (x >> 10);
}
inline void CSHA::Bytes2Word(unsigned char const* pcBytes, unsigned int& ruiWord)
{
ruiWord = (unsigned int)*(pcBytes+3) | (unsigned int)(*(pcBytes+2)<<8) |
(unsigned int)(*(pcBytes+1)<<16) | (unsigned int)(*pcBytes<<24);
}
inline void CSHA::Word2Bytes(unsigned int const& ruiWord, unsigned char* pcBytes)
{
pcBytes += 3;
*pcBytes = ruiWord & 0xff;
*--pcBytes = (ruiWord>>8) & 0xff;
*--pcBytes = (ruiWord>>16) & 0xff;
*--pcBytes = (ruiWord>>24) & 0xff;
}
inline SUI64 CSHA::CircularShift(unsigned int uiBits, SUI64 const& roui64Word)
{
return (roui64Word << uiBits) | (roui64Word >> (64-uiBits));
}
inline SUI64 CSHA::CH(SUI64 const& x, SUI64 const& y, SUI64 const& z)
{
return ((x&(y^z))^z);
}
inline SUI64 CSHA::MAJ(SUI64 const& x, SUI64 const& y, SUI64 const& z)
{
return (((x|y)&z)|(x&y));
}
inline SUI64 CSHA::SIG0(SUI64 const& x)
{
return ((x >> 28)|(x << 36)) ^ ((x >> 34)|(x << 30)) ^ ((x >> 39)|(x << 25));
}
inline SUI64 CSHA::SIG1(SUI64 const& x)
{
return ((x >> 14)|(x << 50)) ^ ((x >> 18)|(x << 46)) ^ ((x >> 41)|(x << 23));
}
inline SUI64 CSHA::sig0(SUI64 const& x)
{
return ((x >> 1)|(x << 63)) ^ ((x >> 8)|(x << 56)) ^ (x >> 7);
}
inline SUI64 CSHA::sig1(SUI64 const& x)
{
return ((x >> 19)|(x << 45)) ^ ((x >> 61)|(x << 3)) ^ (x >> 6);
}
inline void CSHA::Bytes2Word(unsigned char const* pcBytes, SUI64& ruiWord)
{
Bytes2Word(pcBytes+4, ruiWord.m_uiRight);
Bytes2Word(pcBytes, ruiWord.m_uiLeft);
}
inline void CSHA::Word2Bytes(SUI64 const& ruiWord, unsigned char* pcBytes)
{
Word2Bytes(ruiWord.m_uiRight, pcBytes+4);
Word2Bytes(ruiWord.m_uiLeft, pcBytes);
}
#endif // __SHA_H__
-13
View File
@@ -1,13 +0,0 @@
#include "multi_emulator.h"
int GenerateSetti(void *pDest)
{
auto pTicket = (int *)pDest;
pTicket[0] = 0xD4CA7F7B;
pTicket[1] = 0xC7DB6023;
pTicket[2] = 0x6D6A2E1F;
pTicket[5] = 0xB4C43105;
return 768;
}
-18
View File
@@ -1,18 +0,0 @@
#include "multi_emulator.h"
int GenerateSteamEmu(void *pDest, int nSteamID)
{
auto pTicket = (int *)pDest;
pTicket[20] = -1; // +80, dproto/reunion wants this value to be -1, but if this value
// does not match -1, then instead of SteamID in [21] cell
// client IP address that xored with 0x25730981 number should
// be used. But dproto/reunion will just skip ticket validation
// in that case.
pTicket[21] = nSteamID; // +84, SteamId, low part. Actually, this is just system volume serial
// number, which comes from GetVolumeInformationA() function. If
// function failed (returned 0), then instead of volume serial number
// 777 number will be written to the ticket.
return 768;
}
-12
View File
@@ -1,12 +0,0 @@
#include "StrUtils.h"
#include <stdlib.h>
void CreateRandomString(char *pszDest, int nLength)
{
static const char c_szAlphaNum[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < nLength; ++i)
pszDest[i] = c_szAlphaNum[rand() % (sizeof(c_szAlphaNum) - 1)];
pszDest[nLength] = '\0';
}
-3
View File
@@ -1,3 +0,0 @@
#pragma once
void CreateRandomString(char *pszDest, int nLength);
-24
View File
@@ -1,24 +0,0 @@
#! /usr/bin/env python
# encoding: utf-8
# mittorn, 2018
from waflib import Logs
import os
top = '.'
def options(opt):
return
def configure(conf):
return
def build(bld):
bld.stlib(
source = bld.path.ant_glob(['src/*.cpp']),
target = 'MultiEmulator',
features = 'cxx',
includes = ['include/', 'src/'],
export_includes = ['include/'],
subsystem = bld.env.MSVC_SUBSYSTEM
)
-1
View File
@@ -1 +0,0 @@
#define BZ_VERSION "1.1.0-fwgs"
+4 -11
View File
@@ -14,21 +14,14 @@ def configure(conf):
conf.define('BZ_UNIX', 1) conf.define('BZ_UNIX', 1)
def build(bld): def build(bld):
# bld( bld(features = 'subst', source = 'bzip2/bz_version.h.in', target = 'bzip2/bz_version.h', BZ_VERSION='1.1.0-fwgs', name = 'bz_version')
# features = 'subst',
# source = 'bzip2/bz_version.h.in',
# target = 'bz_version.h',
# BZ_VERSION='1.1.0-fwgs'
# )
bz_sources = ['bzip2/blocksort.c', 'bzip2/huffman.c', 'bzip2/crctable.c', 'bzip2/randtable.c', 'bzip2/compress.c', 'bzip2/decompress.c', 'bzip2/bzlib.c'] bz_sources = ['bzip2/blocksort.c', 'bzip2/huffman.c', 'bzip2/crctable.c', 'bzip2/randtable.c', 'bzip2/compress.c', 'bzip2/decompress.c', 'bzip2/bzlib.c']
bld.stlib( bld.stlib(
source = bz_sources, source = bz_sources,
target = 'bzip2', target = 'bzip2',
# use = 'bz_version.h', use = 'bz_version',
features = 'c', includes = 'bzip2/',
includes = ['.', 'bzip2/'], export_includes = 'bzip2/'
subsystem = bld.env.MSVC_SUBSYSTEM,
export_includes = ['bzip2/']
) )
+1 -2
View File
@@ -23,7 +23,6 @@ def build(bld):
bld(features='zip', bld(features='zip',
name = 'extras.pk3', name = 'extras.pk3',
files = srcdir.ant_glob('**/*'), files = srcdir.ant_glob('**/*', excl=['scripts/**']),
relative_to = srcdir, relative_to = srcdir,
compresslevel = 0,
install_path = install_path) install_path = install_path)
+6 -4
View File
@@ -13,12 +13,14 @@ def configure(conf):
def build(bld): def build(bld):
gl4es_srcdir = bld.path.find_node('gl4es/src') gl4es_srcdir = bld.path.find_node('gl4es/src')
cflags = []
if bld.env.COMPILER_CC != 'msvc':
cflags += ['-w', '-fvisibility=hidden', '-std=gnu99']
else:
cflags += ['-wd4098']
bld.stlib(source = gl4es_srcdir.ant_glob(['gl/*.c', 'gl/*/*.c', 'glx/hardext.c']), bld.stlib(source = gl4es_srcdir.ant_glob(['gl/*.c', 'gl/*/*.c', 'glx/hardext.c']),
target = 'gl4es', target = 'gl4es',
features = 'c',
includes = ['gl4es/src', 'gl4es/src/gl', 'gl4es/src/glx', 'gl4es/include'], includes = ['gl4es/src', 'gl4es/src/gl', 'gl4es/src/glx', 'gl4es/include'],
defines = ['NOX11', 'NO_GBM', 'NO_INIT_CONSTRUCTOR', 'DEFAULT_ES=2', 'NOEGL', 'NO_LOADER', 'STATICLIB'], defines = ['NOX11', 'NO_GBM', 'NO_INIT_CONSTRUCTOR', 'DEFAULT_ES=2', 'NOEGL', 'NO_LOADER', 'STATICLIB'],
cflags = ['-w', '-fvisibility=hidden', '-std=gnu99'], cflags = cflags,
subsystem = bld.env.MSVC_SUBSYSTEM,
export_includes = '.') export_includes = '.')
+195
View File
@@ -0,0 +1,195 @@
#! /usr/bin/env python
# encoding: utf-8
from waflib import TaskGen
from waflib.Tools.c_config import DEFKEYS
FRAGMENT_ATOMIC='''int i;
int main(void) {
__atomic_load_n(&i, __ATOMIC_ACQUIRE);
__atomic_store_n(&i, 1, __ATOMIC_RELEASE);
return 0;
}'''
FRAGMENT_SYNC='''int i;
int main (void) {
__sync_bool_compare_and_swap (&i, i, i);
__sync_lock_test_and_set (&i, 1);
__sync_lock_release (&i);
return 0;
}'''
FRAGMENT_GETPAGESIZE='''#include <unistd.h>
int main(void) { return getpagesize(); }'''
FRAGMENT_GETEXECNAME='''#include <stdlib.h>
int main(void) { return getexecname() != 0; }'''
FRAGMENT_STRNLEN='''#include <string.h>
int main(int argc, char **argv) { return (int)strnlen(argv[0], 10); }'''
FRAGMENT_DL_ITERATE_PHDR='''#include <%s>
int main(void) { return dl_iterate_phdr(0, 0); }'''
FRAGMENT_FCNTL='''#include <fcntl.h>
int main(void) { return fcntl(0, 0, 0); }'''
FRAGMENT_GETIPINFO='''#include "unwind.h"
struct _Unwind_Context *context;
int ip_before_insn = 0;
int main(void) { return _Unwind_GetIPInfo(context, &ip_before_insn); }'''
FRAGMENT_LOADQUERY='''#include <sys/ldr.h>
#include <sys/debug.h>
int main(void) { return loadquery(0, 0, 0); }'''
FRAGMENT_KERN_PROC='''#include <sys/sysctl.h>
#if !defined(%s) || !defined(KERN_PROC_PATHNAME)
#error
#endif
int main(void) { return 0; }'''
FRAGMENT_LSTAT='''#include <sys/stat.h>
struct stat st;
int main(int argc, char **argv) { return lstat(argv[0], &st); }'''
FRAGMENT_READLINK='''#include <unistd.h>
char buf[100];
int main(int argc, char **argv) { return readlink(argv[0], buf, sizeof(buf)); }'''
def options(opt):
pass
def configure(conf):
# add unsupported platforms here
if conf.env.DEST_OS in ['nswitch', 'psvita', 'dos', 'irix']:
conf.env.DISABLE_LIBBACKTRACE = True
return
# win32 has it's own dbghelp-based backtrace, that's why we ship PDBs
if conf.env.COMPILER_CC == 'msvc':
conf.env.DISABLE_LIBBACKTRACE = True
return
if not conf.path.find_dir('libbacktrace') or not conf.path.find_dir('libbacktrace/config'):
conf.fatal('Can\'t find libbacktrace submodule. Run `git submodule update --init --recursive`.')
return
conf.define('BACKTRACE_ELF_SIZE', 64 if conf.env.DEST_SIZEOF_VOID_P == 8 else 32)
conf.define('BACKTRACE_XCOFF_SIZE', 64 if conf.env.DEST_SIZEOF_VOID_P == 8 else 32)
conf.define('_ALL_SOURCE', 1)
conf.define('_GNU_SOURCE', 1)
conf.define('_POSIX_PTHREAD_SEMANTICS', 1)
conf.define('_TANDEM_SOURCE', 1)
conf.define('__EXTENSIONS__', 1)
conf.define('_DARWIN_USE_64_BIT_INODE', 1)
conf.define('_LARGE_FILES', 1)
conf.check_large_file(compiler='c', execute=False, mandatory=False) # sets _FILE_OFFSET_BITS
conf.env.CFLAGS_EXTRAFLAGS = conf.filter_cflags(['-funwind-tables', '-g'], [])
if conf.filter_cflags(['-frandom-seed=test'], []):
conf.env.HAVE_FRANDOM_SEED = True
def check_header(hdr):
return {'header_name':hdr, 'msg':'... %s header' % hdr, 'mandatory':False, 'id':hdr, 'compiler': 'c'}
def check_frag(frag, msg, define, **kw):
return dict({'fragment': frag, 'msg':'... %s' % msg, 'mandatory': False, 'define_name': define, 'compiler': 'c'}, **kw)
conf.multicheck(
check_header('dlfcn.h'),
check_header('inttypes.h'),
check_header('link.h'),
check_header('sys/link.h'),
check_header('mach-o/dyld.h'),
check_header('memory.h'),
check_header('stdint.h'),
check_header('stdlib.h'),
check_header('strings.h'),
check_header('string.h'),
check_header('sys/ldr.h'),
check_header('sys/mman.h'),
check_header('sys/stat.h'),
check_header('sys/types.h'),
check_header('tlhelp32.h'),
check_header('unistd.h'),
check_header('windows.h'),
check_frag(FRAGMENT_ATOMIC, '__atomic extensions', 'HAVE_ATOMIC_FUNCTIONS'),
check_frag(FRAGMENT_SYNC, ' __sync extensions', 'HAVE_SYNC_FUNCTIONS'),
check_frag(FRAGMENT_GETPAGESIZE, ' getpagesize function', 'HAVE_DECL_GETPAGESIZE'),
check_frag(FRAGMENT_STRNLEN, ' strnlen function', 'HAVE_DECL_STRNLEN'),
check_frag(FRAGMENT_DL_ITERATE_PHDR % 'link.h', ' dl_iterate_phdr function in link.h', 'HAVE_DL_ITERATE_PHDR_LINK_H', after_tests=['link.h']),
check_frag(FRAGMENT_DL_ITERATE_PHDR % 'sys/link.h', ' dl_iterate_phdr function in sys/link.h', 'HAVE_DL_ITERATE_PHDR_SYS_LINK_H', after_tests=['sys/link.h']),
check_frag(FRAGMENT_FCNTL, 'fnctl function', 'HAVE_FCNTL'),
check_frag(FRAGMENT_GETEXECNAME, 'getexecname function','HAVE_GETEXECNAME'),
check_frag(FRAGMENT_GETIPINFO, '_Unwind_GetIPInfo function', 'HAVE_GETIPINFO'),
check_frag(FRAGMENT_KERN_PROC % 'KERN_PROC', 'KERN_PROC and KERN_PROC_PATHNAME defines', 'HAVE_KERN_PROC'),
check_frag(FRAGMENT_KERN_PROC % 'KERN_PROC_ARGS', 'KERN_PROC_ARGS and KERN_PROC_PATHNAME defines', 'HAVE_KERN_PROC_ARGS'),
check_frag(FRAGMENT_LOADQUERY, 'loadquery function', 'HAVE_LOADQUERY'),
check_frag(FRAGMENT_LSTAT, 'lstat function', 'HAVE_LSTAT'),
check_frag(FRAGMENT_READLINK, 'readlink function', 'HAVE_READLINK'),
# {'lib':'lzma', 'define_name':'HAVE_LIBLZMA', 'uselib_store':'lzma', 'msg':'... lzma library', 'mandatory':False},
# {'lib':'z', 'define_name':'HAVE_ZLIB', 'uselib_store':'z', 'msg':'... zlib library', 'mandatory':False},
# {'lib':'zstd', 'define_name':'HAVE_ZSTD', 'uselib_store':'zstd', 'msg':'... zstd library', 'mandatory':False},
msg='Checking for in parallel'
)
if conf.is_defined('HAVE_DL_ITERATE_PHDR_LINK_H') or conf.is_defined('HAVE_DL_ITERATE_PHDR_SYS_LINK_H'):
conf.define('HAVE_DL_ITERATE_PHDR', 1)
conf.env[DEFKEYS].sort()
conf.write_config_header()
conf.define('BACKTRACE_SUPPORTED', 1)
conf.define('BACKTRACE_USES_MALLOC', 0)
conf.define('BACKTRACE_SUPPORTS_THREADS', 1)
conf.define('BACKTRACE_SUPPORTS_DATA', conf.env.DEST_BINFMT in ['elf', 'mac-o'])
conf.write_config_header('backtrace-supported.h')
@TaskGen.feature('frandomseed')
@TaskGen.after_method('propagate_uselib_vars')
def process_frandom_seed(ctx):
tasks = getattr(ctx, 'compiled_tasks', [])
for task in tasks:
out = task.outputs[0]
task.env.CFLAGS = list(task.env.CFLAGS) # need a copy
task.env.CFLAGS += ['-frandom-seed=%s' % out.path_from(out.ctx.bldnode)]
def build(bld):
if bld.env.DISABLE_LIBBACKTRACE:
return
sources = ['atomic.c', 'dwarf.c', 'fileline.c', 'posix.c', 'print.c', 'sort.c', 'state.c', 'backtrace.c', 'simple.c']
if bld.env.DEST_OS == 'win32':
sources += ['read.c', 'alloc.c']
else:
# we specifically only want mmap-based allocators because calling malloc is not safe from signal handlers
sources += ['mmap.c', 'mmapio.c']
if bld.env.DEST_BINFMT == 'pe':
sources += ['pecoff.c']
elif bld.env.DEST_BINFMT == 'mac-o':
sources += ['macho.c']
elif bld.env.DEST_BINFMT == 'elf':
sources += ['elf.c']
else:
sources += ['unknown.c']
task = bld.stlib(
source = ['libbacktrace/' + i for i in sources],
# while we're using upstream libbacktrace, sometimes compiler picks up it's own version that isn't built with required options
target = 'backtrace_custom',
features = 'frandomseed' if bld.env.HAVE_FRANDOM_SEED else '',
use = 'EXTRAFLAGS lzma z zstd',
includes = '. libbacktrace/',
export_defines = 'HAVE_LIBBACKTRACE=1',
export_includes = 'libbacktrace/'
)
Vendored Submodule
+1
Submodule 3rdparty/libogg/libogg added at 7cf42ea17a
+50
View File
@@ -0,0 +1,50 @@
#! /usr/bin/env python
# encoding: utf-8
def options(opt):
pass
def configure(conf):
if not conf.path.find_dir('libogg') or not conf.path.find_dir('libogg/src'):
conf.fatal('Can\'t find libogg submodule. Run `git submodule update --init --recursive`.')
return
conf.env.INCLUDE_INTTYPES_H = 0
conf.env.INCLUDE_SYS_TYPES_H = 0
conf.env.INCLUDE_STDINT_H = 0
if conf.check_cc(header_name='inttypes.h', mandatory = False):
conf.env.INCLUDE_INTTYPES_H = 1
elif conf.check_cc(header_name='sys/types.h', mandatory = False):
conf.env.INCLUDE_SYS_TYPES_H = 1
elif conf.check_cc(header_name='stdint.h', mandatory = False):
conf.env.INCLUDE_STDINT_H = 1
def build(bld):
sources = bld.path.ant_glob([
'libogg/src/*.c'
])
bld(
features = 'subst',
name = 'libogg_config_types',
source = 'libogg/include/ogg/config_types.h.in',
target = 'libogg/include/ogg/config_types.h',
INCLUDE_INTTYPES_H = bld.env.INCLUDE_INTTYPES_H,
INCLUDE_SYS_TYPES_H = bld.env.INCLUDE_SYS_TYPES_H,
INCLUDE_STDINT_H = bld.env.INCLUDE_STDINT_H,
SIZE16 = 'int16_t',
USIZE16 = 'uint16_t',
SIZE32 = 'int32_t',
USIZE32 = 'uint32_t',
SIZE64 = 'int64_t',
USIZE64 = 'uint64_t'
)
bld.stlib(
source = sources,
target = 'ogg',
use = 'libogg_config_types',
includes = 'libogg/include/',
export_includes = 'libogg/include/'
)
Vendored Submodule
+1
Submodule 3rdparty/library_suffix added at e9fc14307b
Vendored Submodule
+1
Submodule 3rdparty/maintui added at e5f143ee33
+107
View File
@@ -0,0 +1,107 @@
/*
compat.c - mbedTLS platform overrides for targets upstream doesn't cover
Copyright (C) 2026 Xash3D FWGS contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
/*
WinXP: legacy CryptGenRandom via advapi32
Source: ttps://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
PSVita: sceKernelGetRandomNumber from psp2/kernel/rng.h (64-byte cap).
Source: https://github.com/vitasdk/vita-headers/blob/master/include/psp2/kernel/rng.h
NSwitch: randomGet from libnx.
Source: https://github.com/switchbrew/libnx/blob/master/nx/include/switch/kernel/random.h
*/
#include "mbedtls/platform.h"
#include "psa/crypto.h"
#if defined( MBEDTLS_PLATFORM_MS_TIME_ALT )
mbedtls_ms_time_t mbedtls_ms_time( void )
{
extern double Platform_DoubleTime( void );
return (mbedtls_ms_time_t)( Platform_DoubleTime() * 1000.0 );
}
#endif /* MBEDTLS_PLATFORM_MS_TIME_ALT */
#if defined( MBEDTLS_PSA_DRIVER_GET_ENTROPY )
#if defined( _WIN32 ) && !defined( _WIN64 )
#include <windows.h>
#include <wincrypt.h>
int mbedtls_platform_get_entropy( psa_driver_get_entropy_flags_t flags, size_t *estimate_bits, unsigned char *output, size_t output_size )
{
if( flags != 0 )
return PSA_ERROR_NOT_SUPPORTED;
HCRYPTPROV prov;
if( !CryptAcquireContextW( &prov, NULL, NULL, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT | CRYPT_SILENT ))
return PSA_ERROR_INSUFFICIENT_ENTROPY;
if( !CryptGenRandom( prov, (DWORD)output_size, output ))
{
CryptReleaseContext( prov, 0 );
return PSA_ERROR_INSUFFICIENT_ENTROPY;
}
CryptReleaseContext( prov, 0 );
*estimate_bits = 8 * output_size;
return 0;
}
#elif defined( __vita__ )
#include <psp2/kernel/rng.h>
int mbedtls_platform_get_entropy( psa_driver_get_entropy_flags_t flags, size_t *estimate_bits, unsigned char *output, size_t output_size )
{
if( flags != 0 )
return PSA_ERROR_NOT_SUPPORTED;
size_t total = 0;
while( total < output_size )
{
size_t chunk = output_size - total;
if( chunk > 64 )
chunk = 64;
if( sceKernelGetRandomNumber( output + total, chunk ) != 0 )
return PSA_ERROR_INSUFFICIENT_ENTROPY;
total += chunk;
}
*estimate_bits = 8 * output_size;
return 0;
}
#elif defined( __SWITCH__ )
#include <switch.h>
int mbedtls_platform_get_entropy( psa_driver_get_entropy_flags_t flags, size_t *estimate_bits, unsigned char *output, size_t output_size )
{
if( flags != 0 )
return PSA_ERROR_NOT_SUPPORTED;
randomGet( output, output_size );
*estimate_bits = 8 * output_size;
return 0;
}
#else
#error "MBEDTLS_PSA_DRIVER_GET_ENTROPY enabled but no platform impl in compat.c"
#endif
#endif /* MBEDTLS_PSA_DRIVER_GET_ENTROPY */
Vendored Submodule
+1
+67
View File
@@ -0,0 +1,67 @@
#! /usr/bin/env python
# encoding: utf-8
def options(opt):
grp = opt.add_option_group('mbedTLS options')
grp.add_option('--disable-mbedtls', action='store_false', dest='MBEDTLS', default=True,
help='disable bundled mbedTLS and built-in HTTPS support [default: enabled]')
def configure(conf):
conf.env.MBEDTLS = conf.options.MBEDTLS
if not conf.env.MBEDTLS:
return
if not conf.path.find_dir('mbedtls') or not conf.path.find_dir('mbedtls/library'):
conf.fatal('Can\'t find mbedtls submodule. Run `git submodule update --init --recursive`.')
if not conf.path.find_dir('mbedtls/tf-psa-crypto/core'):
conf.fatal('mbedTLS nested submodule tf-psa-crypto is missing. Run `git submodule update --init --recursive`.')
def build(bld):
if not bld.env.MBEDTLS:
return
sources = bld.path.ant_glob([
'mbedtls/library/*.c',
'mbedtls/tf-psa-crypto/core/*.c',
'mbedtls/tf-psa-crypto/extras/*.c',
'mbedtls/tf-psa-crypto/platform/*.c',
'mbedtls/tf-psa-crypto/utilities/*.c',
'mbedtls/tf-psa-crypto/drivers/builtin/src/*.c',
])
sources += ['compat.c']
defines = [
'MBEDTLS_USER_CONFIG_FILE="xash_mbedtls_config.h"',
'TF_PSA_CRYPTO_USER_CONFIG_FILE="xash_psa_config.h"',
]
includes = [
'.',
'mbedtls/include',
'mbedtls/library',
'mbedtls/tf-psa-crypto/include',
'mbedtls/tf-psa-crypto/drivers/builtin/include',
'mbedtls/tf-psa-crypto/core',
'mbedtls/tf-psa-crypto/drivers/builtin/src',
'mbedtls/tf-psa-crypto/utilities',
'mbedtls/tf-psa-crypto/extras',
'mbedtls/tf-psa-crypto/platform',
'mbedtls/tf-psa-crypto/dispatch',
]
bld.stlib(
source = sources,
target = 'mbedtls',
features = 'c',
includes = includes,
defines = defines,
export_defines = ['XASH_MBEDTLS'],
export_includes = [
'.',
'mbedtls/include',
'mbedtls/tf-psa-crypto/include',
'mbedtls/tf-psa-crypto/drivers/builtin/include',
]
)
+36
View File
@@ -0,0 +1,36 @@
#ifndef XASH_MBEDTLS_CONFIG_H
#define XASH_MBEDTLS_CONFIG_H
#undef MBEDTLS_NET_C
#undef MBEDTLS_PKCS7_C
#undef MBEDTLS_TIMING_C
#undef MBEDTLS_SSL_SRV_C
#undef MBEDTLS_SSL_PROTO_DTLS
#undef MBEDTLS_SSL_DTLS_ANTI_REPLAY
#undef MBEDTLS_SSL_DTLS_CONNECTION_ID
#undef MBEDTLS_SSL_DTLS_HELLO_VERIFY
#undef MBEDTLS_SSL_DTLS_SRTP
#undef MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
#undef MBEDTLS_SSL_COOKIE_C
#undef MBEDTLS_SSL_CACHE_C
#undef MBEDTLS_SSL_TICKET_C
#undef MBEDTLS_SSL_SESSION_TICKETS
#undef MBEDTLS_SSL_RENEGOTIATION
#undef MBEDTLS_SSL_CONTEXT_SERIALIZATION
#undef MBEDTLS_SSL_KEYING_MATERIAL_EXPORT
#undef MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
#undef MBEDTLS_SSL_ALL_ALERT_MESSAGES
#undef MBEDTLS_SSL_ALPN
#undef MBEDTLS_SSL_ENCRYPT_THEN_MAC
#undef MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
#undef MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
#undef MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_ENABLED
#undef MBEDTLS_SSL_TLS1_3_KEY_EXCHANGE_MODE_PSK_EPHEMERAL_ENABLED
#undef MBEDTLS_X509_CREATE_C
#undef MBEDTLS_X509_CRT_WRITE_C
#undef MBEDTLS_X509_CSR_PARSE_C
#undef MBEDTLS_X509_CSR_WRITE_C
#undef MBEDTLS_X509_CRL_PARSE_C
#undef MBEDTLS_VERSION_FEATURES
#endif /* XASH_MBEDTLS_CONFIG_H */
+82
View File
@@ -0,0 +1,82 @@
#ifndef XASH_PSA_CONFIG_H
#define XASH_PSA_CONFIG_H
#if (defined( _WIN32 ) && !defined( _WIN64 )) || defined( __vita__ ) || defined( __SWITCH__ )
/* WinXP, PSVita and NSwitch use entropy paths upstream doesn't cover.
compat.c provides mbedtls_platform_get_entropy() for all three. */
#undef MBEDTLS_PSA_BUILTIN_GET_ENTROPY
#define MBEDTLS_PSA_DRIVER_GET_ENTROPY
#endif
#if defined( __vita__ ) || defined( __SWITCH__ )
/* Upstream has no Vita/NSW support; compat.c fills in */
#define MBEDTLS_PLATFORM_MS_TIME_ALT
#endif
#undef MBEDTLS_FS_IO
#undef MBEDTLS_PSA_ITS_FILE_C
#undef MBEDTLS_PSA_CRYPTO_STORAGE_C
#undef MBEDTLS_SELF_TEST
#undef MBEDTLS_HMAC_DRBG_C
#undef MBEDTLS_LMS_C
#undef MBEDTLS_NIST_KW_C
#undef MBEDTLS_PKCS5_C
#undef PSA_WANT_ALG_CCM
#undef PSA_WANT_ALG_CCM_STAR_NO_TAG
#undef PSA_WANT_ALG_CBC_NO_PADDING
#undef PSA_WANT_ALG_CBC_PKCS7
#undef PSA_WANT_ALG_CFB
#undef PSA_WANT_ALG_CMAC
#undef PSA_WANT_ALG_CTR
#undef PSA_WANT_ALG_ECB_NO_PADDING
#undef PSA_WANT_ALG_OFB
#undef PSA_WANT_ALG_STREAM_CIPHER
#undef PSA_WANT_ALG_JPAKE
#undef PSA_WANT_ALG_TLS12_ECJPAKE_TO_PMS
#undef PSA_WANT_ALG_TLS12_PSK_TO_MS
#undef PSA_WANT_ALG_FFDH
#undef PSA_WANT_ALG_PBKDF2_HMAC
#undef PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128
#undef PSA_WANT_KEY_TYPE_PASSWORD
#undef PSA_WANT_KEY_TYPE_PASSWORD_HASH
#undef PSA_WANT_ALG_SHA3_224
#undef PSA_WANT_ALG_SHA3_256
#undef PSA_WANT_ALG_SHA3_384
#undef PSA_WANT_ALG_SHA3_512
#undef PSA_WANT_ALG_SHAKE128
#undef PSA_WANT_ALG_SHAKE256
#undef PSA_WANT_ALG_SHA_224
#undef PSA_WANT_ALG_SHA_1
#undef PSA_WANT_ALG_MD5
#undef PSA_WANT_ALG_RIPEMD160
#undef PSA_WANT_KEY_TYPE_ARIA
#undef PSA_WANT_KEY_TYPE_CAMELLIA
#undef PSA_WANT_ECC_BRAINPOOL_P_R1_256
#undef PSA_WANT_ECC_BRAINPOOL_P_R1_384
#undef PSA_WANT_ECC_BRAINPOOL_P_R1_512
#undef PSA_WANT_ECC_SECP_K1_256
#undef PSA_WANT_ECC_MONTGOMERY_448
#undef PSA_WANT_ECC_SECP_R1_521
#undef PSA_WANT_DH_RFC7919_2048
#undef PSA_WANT_DH_RFC7919_3072
#undef PSA_WANT_DH_RFC7919_4096
#undef PSA_WANT_DH_RFC7919_6144
#undef PSA_WANT_DH_RFC7919_8192
#undef PSA_WANT_KEY_TYPE_DH_KEY_PAIR_BASIC
#undef PSA_WANT_KEY_TYPE_DH_KEY_PAIR_EXPORT
#undef PSA_WANT_KEY_TYPE_DH_KEY_PAIR_GENERATE
#undef PSA_WANT_KEY_TYPE_DH_KEY_PAIR_IMPORT
#undef PSA_WANT_KEY_TYPE_DH_PUBLIC_KEY
#undef PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
#undef PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
#undef PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT
#undef PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE
#undef PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT
#undef MBEDTLS_PEM_WRITE_C
#undef MBEDTLS_PK_WRITE_C
#undef MBEDTLS_PK_PARSE_EC_COMPRESSED
#undef MBEDTLS_PK_PARSE_EC_EXTENDED
#undef MBEDTLS_ASN1_WRITE_C
#endif /* XASH_PSA_CONFIG_H */
+103 -3
View File
@@ -3,6 +3,37 @@
import os import os
FRAGMENT_VLA='''int main (int argc, char **argv) {
char a[argc];
a[sizeof( a ) - 1] = 0;
int N;
return a[0];
}'''
FRAGMENT_ALLOCA_H='''#include <alloca.h>
int main (void) {
int foo=10;
int * array = alloca(foo);
}'''
FRAGMENT_STDLIB_H='''#include <malloc.h>
#include <stdlib.h>
int main (void) {
int foo=10;
int * array = alloca(foo);
}'''
FRAGMENT_LRINT='''#include <math.h>
#include <stdlib.h>
int main (int argc, char **argv) {
return lrint%s((%s)atof(argv[1]));
}'''
# assuming MSVC always enables NEON
FRAGMENT_NEON='''#if !defined __ARM_NEON__ && !defined _MSC_VER
#error
#endif'''
def options(opt): def options(opt):
pass pass
@@ -11,6 +42,61 @@ def configure(conf):
conf.fatal('Can\'t find opus submodule. Run `git submodule update --init --recursive`.') conf.fatal('Can\'t find opus submodule. Run `git submodule update --init --recursive`.')
return return
if conf.check_cc(fragment=FRAGMENT_LRINT % ('', 'double'), msg = 'Checking for C99 lrint', use = 'M', mandatory = False):
conf.define('HAVE_LRINT', 1)
if conf.check_cc(fragment=FRAGMENT_LRINT % ('f', 'float'), msg = 'Checking for C99 lrintf', use = 'M', mandatory = False):
conf.define('HAVE_LRINTF', 1)
# Check for C99 variable-size arrays, or alloca() as fallback
if conf.check_cc(fragment=FRAGMENT_VLA, msg = 'Checking for C99 VLA support', mandatory = False):
conf.define('VAR_ARRAYS', 1)
elif conf.check_cc(fragment=FRAGMENT_ALLOCA_H, msg = 'Checking for alloca in alloca.h header', mandatory = False):
conf.define('USE_ALLOCA', 1)
conf.define('HAVE_ALLOCA_H', 1)
elif conf.check_cc(fragment=FRAGMENT_STDLIB_H, msg = 'Checking for alloca.h in stdlib.h', mandatory = False):
conf.define('USE_ALLOCA', 1)
if conf.env.DEST_CPU in ['thumb', 'arm']:
if conf.check(header_name='arm_neon.h', mandatory = False):
if conf.check(fragment=FRAGMENT_NEON, msg = 'Checking if compiler enabled NEON', mandatory = False):
conf.env.HAVE_NEON = True
conf.define('OPUS_ARM_MAY_HAVE_NEON_INTR', 1)
conf.define('OPUS_ARM_PRESUME_NEON', 1)
elif conf.env.DEST_CPU.startswith('x86'):
if conf.check(header_name='xmmintrin.h', mandatory = False):
if conf.env.COMPILER_CC != 'msvc':
conf.env.CFLAGS += ['-msse']
conf.define('OPUS_X86_MAY_HAVE_SSE', 1)
if conf.env.DEST_SIZEOF_VOID_P > 4:
conf.define('OPUS_X86_PRESUME_SSE', 1)
if conf.check(header_name='emmintrin.h', mandatory = False):
if conf.env.COMPILER_CC != 'msvc':
conf.env.CFLAGS += ['-msse2']
conf.define('OPUS_X86_MAY_HAVE_SSE2', 1)
if conf.env.DEST_SIZEOF_VOID_P > 4:
conf.define('OPUS_X86_PRESUME_SSE2', 1)
# on x86_64 we enable both SSE and SSE2, so RTCD can be disabled (it's actually doesn't even build with RTCD enabled)
if conf.env.DEST_SIZEOF_VOID_P == 4:
if conf.check(header_name='cpuid.h', mandatory=False):
conf.define('CPU_INFO_BY_C', 1)
else:
conf.define('CPU_INFO_BY_ASM', 1)
conf.define('OPUS_HAVE_RTCD', 1)
# if conf.check(header_name='smmintrin.h', mandatory = False):
# if conf.env.COMPILER_CC != 'msvc':
# conf.env.CFLAGS += ['-msse4.1']
# conf.define('OPUS_X86_MAY_HAVE_SSE4_1', 1)
# if conf.check(header_name='immintrin.h', mandatory = False):
# if conf.env.COMPILER_CC != 'msvc':
# conf.env.CFLAGS += ['-mavx']
# conf.define('OPUS_X86_MAY_HAVE_AVX', 1)
# TODO: ARM/x86 intrinsics detection # TODO: ARM/x86 intrinsics detection
# TODO: maybe call autotools/cmake/meson instead? # TODO: maybe call autotools/cmake/meson instead?
@@ -26,8 +112,23 @@ def build(bld):
'opus/src/opus_compare.c', 'opus/src/opus_compare.c',
'opus/celt/opus_custom_demo.c' 'opus/celt/opus_custom_demo.c'
]) ])
includes = ['opus/include/', 'opus/celt/', 'opus/silk/', 'opus/silk/float/']
defines = ['USE_ALLOCA', 'OPUS_BUILD', 'FLOAT_APPROX', 'PACKAGE_VERSION="1.3.1"', 'CUSTOM_MODES'] includes = ['opus', 'opus/include/', 'opus/celt/', 'opus/silk/', 'opus/silk/float/']
if bld.env.DEST_CPU in ['thumb', 'arm']:
if bld.env.HAVE_NEON:
sources += bld.path.ant_glob(['opus/silk/arm/*.c', 'opus/celt/arm/*.c'])
includes += ['opus/silk/arm', 'opus/celt/arm']
elif bld.env.DEST_CPU.startswith('x86'):
sources += ['opus/silk/x86/x86_silk_map.c',
'opus/celt/x86/pitch_sse.c',
'opus/celt/x86/pitch_sse2.c',
'opus/celt/x86/vq_sse2.c',
'opus/celt/x86/x86_celt_map.c',
'opus/celt/x86/x86cpu.c']
includes += ['opus/silk/x86', 'opus/celt/x86']
defines = ['OPUS_BUILD', 'FLOAT_APPROX', 'PACKAGE_VERSION="1.4.0"', 'CUSTOM_MODES', 'ENABLE_HARDENING']
bld.stlib( bld.stlib(
source = sources, source = sources,
@@ -35,6 +136,5 @@ def build(bld):
features = 'c', features = 'c',
includes = includes, includes = includes,
defines = defines, defines = defines,
subsystem = bld.env.MSVC_SUBSYSTEM,
export_includes = ['opus/include/'] export_includes = ['opus/include/']
) )
Vendored Submodule
+1
+37
View File
@@ -0,0 +1,37 @@
#! /usr/bin/env python
# encoding: utf-8
def options(opt):
pass
def configure(conf):
if not conf.path.find_dir('opusfile') or not conf.path.find_dir('opusfile/src'):
conf.fatal('Can\'t find opusfile submodule. Run `git submodule update --init --recursive`.')
return
if conf.env.COMPILER_CC == 'msvc':
conf.define('_CRT_SECURE_NO_WARNINGS', 1)
conf.define('_CRT_SECURE_NO_DEPRECATE', 1)
conf.define('_CRT_NONSTDC_NO_DEPRECATE', 1)
if conf.env.DEST_OS == 'android':
# HACKHACK: set it to 32 here because opusfile can't be built on Android SDK < 24
# with _FILE_OFFSET_BITS 64 (which it sets automatically in src/internal.h)
# we are not (????) relying on this part of the API, so it should be harmless
conf.define('_FILE_OFFSET_BITS', 32)
def build(bld):
sources = [
'opusfile/src/info.c',
'opusfile/src/internal.c',
'opusfile/src/opusfile.c',
'opusfile/src/stream.c'
]
bld.stlib(
source = sources,
target = 'opusfile',
includes = 'opusfile/include/',
use = 'ogg opus',
export_includes = 'opusfile/include/'
)
Vendored Submodule
+1
+71
View File
@@ -0,0 +1,71 @@
#! /usr/bin/env python
# encoding: utf-8
FRAGMENT_MEMORY_H='''#include <memory.h>
int main (void) {
return 0;
}'''
FRAGMENT_ALLOCA_H='''#include <alloca.h>
int main (void) {
int foo=10;
int * array = alloca(foo);
}'''
def options(opt):
pass
def configure(conf):
if not conf.path.find_dir('vorbis-src') or not conf.path.find_dir('vorbis-src/lib'):
conf.fatal('Can\'t find Vorbis submodule. Run `git submodule update --init --recursive`.')
return
if conf.check_cc(fragment=FRAGMENT_MEMORY_H, msg = 'Checking for memory.h header', mandatory = False):
conf.define('USE_MEMORY_H', 1)
conf.check_cc(fragment=FRAGMENT_ALLOCA_H, msg = 'Checking for alloca in alloca.h header', mandatory = False)
if conf.env.COMPILER_CC == 'msvc':
conf.define('_CRT_SECURE_NO_WARNINGS', 1)
conf.define('_CRT_SECURE_NO_DEPRECATE', 1)
conf.define('_CRT_NONSTDC_NO_DEPRECATE', 1)
def build(bld):
libvorbis_sources = [
'vorbis-src/lib/mdct.c',
'vorbis-src/lib/smallft.c',
'vorbis-src/lib/block.c',
'vorbis-src/lib/envelope.c',
'vorbis-src/lib/window.c',
'vorbis-src/lib/lsp.c',
'vorbis-src/lib/lpc.c',
'vorbis-src/lib/analysis.c',
'vorbis-src/lib/synthesis.c',
'vorbis-src/lib/psy.c',
'vorbis-src/lib/info.c',
'vorbis-src/lib/floor1.c',
'vorbis-src/lib/floor0.c',
'vorbis-src/lib/res0.c',
'vorbis-src/lib/mapping0.c',
'vorbis-src/lib/registry.c',
'vorbis-src/lib/codebook.c',
'vorbis-src/lib/sharedbook.c',
'vorbis-src/lib/lookup.c',
'vorbis-src/lib/bitrate.c'
]
bld.stlib(
source = libvorbis_sources,
target = 'vorbis',
includes = 'vorbis-src/include/',
use = 'ogg',
export_includes = 'vorbis-src/include/'
)
bld.stlib(
source = 'vorbis-src/lib/vorbisfile.c',
target = 'vorbisfile',
includes = 'vorbis-src/include/',
use = 'vorbis',
export_includes = 'vorbis-src/include/'
)
+59
View File
@@ -0,0 +1,59 @@
#! /usr/bin/env python
# encoding: utf-8
import hashlib
from waflib import Task, TaskGen, Logs
OBJ_NAME = 'YY_Thunks_for_WinXP.obj'
OBJ_SHA256 = '51a13c4b667c82181d357e274a50308a273be63f5f85ae958465774857721573'
DLL_LINKFLAGS = ['-ENTRY:DllMainCRTStartupForYY_Thunks', '-alternatename:_YY_ThunksOriginalDllMainCRTStartup@12=__DllMainCRTStartup@12']
class copy_yy_thunks(Task.Task):
color = 'CYAN'
def run(self):
return self.outputs[0].write(self.inputs[0].read('rb'), 'wb')
@TaskGen.feature('yy_thunks')
def add_yy_thunks_obj(self):
src = self.path.find_node(OBJ_NAME)
out = self.path.find_or_declare(OBJ_NAME)
self.compiled_tasks = [self.create_task('copy_yy_thunks', src, out)]
@TaskGen.feature('cshlib', 'cxxshlib')
@TaskGen.after_method('process_use')
def apply_yy_thunks_dll(self):
if 'yy_thunks' not in self.to_list(getattr(self, 'use', [])):
return
try:
self.bld.get_tgen_by_name('yy_thunks')
except Exception:
return
self.env.append_value('LINKFLAGS', DLL_LINKFLAGS)
def options(opt):
pass
def configure(conf):
if conf.env.DEST_OS != 'win32' or conf.env.COMPILER_CC != 'msvc':
return
if conf.env.MSVC_TARGETS[0] not in ['amd64_x86', 'x86']:
return
obj = conf.path.find_node(OBJ_NAME)
if not obj:
Logs.warn('YY-Thunks: %s not found, XP compatibility disabled' % OBJ_NAME)
return
with open(obj.abspath(), 'rb') as f:
digest = hashlib.sha256(f.read()).hexdigest()
if digest != OBJ_SHA256:
conf.fatal('%s checksum mismatch: expected %s, got %s' % (OBJ_NAME, OBJ_SHA256, digest))
conf.env.YY_THUNKS = True
def build(bld):
if bld.env.YY_THUNKS:
bld(name='yy_thunks', features='yy_thunks')
+28 -20
View File
@@ -1,47 +1,55 @@
## If you are reporting bugs ## If you are reporting bugs
1. Check you are using latest version. You can build latest Xash3D FWGS for yourself, look to README.md. 1. Check that you are using the latest version. To build the latest Xash3D FWGS, look at README.md.
2. Check open issues is your bug is already reported and closed issues if it reported and fixed. Don't send bug if it's already reported. 2. Check the open issues to make sure your bug is not already reported and closed issues if it reported and fixed. Don't send a bug if it's already been reported.
3. Re-run engine with `-dev 2 -log` arguments, reproduce bug and post engine.log which can be found in your working directory. 3. Re-run engine with `-dev 2 -log` arguments, then reproduce the bug and post `engine.log` which can be found in your working directory.
3. Describe steps to reproduce bug. 3. Describe the steps to reproduce the bug.
4. Describe which OS and architecture you are using. 4. Describe which OS and architecture you are using.
6. Attach screenshot if it will help clarify the situation. 6. Attach a screenshot if it will help clarify the situation.
## If you are contributing code ## If you are contributing code
### Which branch? ### Which branch?
* We recommend using `master` branch. * We recommend using the `master` branch.
### Third-party libraries ### Third-party libraries
* Philosophy of any Xash Project by Uncle Mike: don't be bloated. We follow it too. * The philosophy of any Xash Project by Uncle Mike: don't be bloated. We follow it too.
* Adding new library is allowed only if there is a REAL reason to use it. It's will be nice, if you will leave a possibility to remove new dependency at build-time. * Adding new libraries are allowed only if there is a REAL reason to use it. It will be nice, if you leave a possibility to remove the new dependency at build-time.
* Adding new dependencies for Waf Build System is not welcomed. * Adding new dependencies for the Waf Build System is not welcomed.
### Portability level ### Portability level
* Xash3D have it's own crt library. It's recommended to use it. It most cases it's just a wrappers around standart C library. * Xash3D has it's own crt library. It's recommended to use it. In most cases it's just a wrapper around the standard C library.
* If your feature need platform-specific code, move it to `engine/platform` and try to implement to every supported OS and every supported compiler or at least leave a stubs. * If your feature needs platform-specific code, move it to `engine/platform` and try to implement every supported OS and every supported compiler or at least leave a stub.
* You must put it under appopriate macro. It's a rule: Xash3D FWGS must compile everywhere. For list of platforms we support, refer to public/build.h file. * You must put it under the appropriate macro. It's a rule: Xash3D FWGS must compile everywhere. For list of platforms we support, refer to `public/build.h`.
### Code style ### Code style
* This project uses mixed Quake's and HLSDK's C/C++ code style convention. * This project uses a mix of Quake's and HLSDK's C/C++ code style convention.
* In short: * In short:
* Use spaces in parenthesis. * Use spaces in parenthesis, but not when two parentheses are consecutive.
* Only tabs for indentation. * Use only tabs for indentation.
* Any brace must have it's own line. * Any brace must have it's own line.
* Short blocks, if statements and loops on single line are allowed. * Use short blocks, if statements and loops on single line are allowed.
* Prefer generic utilities from libpublic over rolling your own.
* Avoid magic numbers. * Avoid magic numbers.
* While macros are powerful, it's better to avoid overusing them. * While macros are powerful, it's better to avoid overusing them.
* If you unsure, try to mimic code style from anywhere else of engine source code. * If you are unsure, try to mimic the code style from anywhere else in the engine source code.
* **ANY** commit message should start from declaring a tags, in format: * **ANY** commit message should start from declaring tags, in the format:
`tag: added some bugs` `tag: added some bugs`
`tag: subtag: fixed some features` `tag: subtag: fixed some features`
Tags can be any: subsystem, simple feature name or even just a filename, without extension. The tags can be a:
Just keep them always same, it helps keep history clean and commit messages short. * subsystem
* simple feature name or even just a filename, without the extension.
Just always keep them the same because it helps keep the commit history clean and messages short.
## LLM-based tools usage.
While we wouldn't recommend using any LLM-based (also misleadingly called AI) tools, we understand that they are here to stay.
Whether you're reporting a bug or contributing to the code, you will take complete authorship and responsibility over the provided content, and the same rules will apply to you as for everybody else, so validate the bug report or the patch it before sending it.
+2 -1
View File
@@ -13,5 +13,6 @@ When `-bugcomp` is specified with argument, it interpreted as flags separated wi
| Flag | Description | Games that require this flag | | Flag | Description | Games that require this flag |
| ------- | ----------- | ---------------------------- | | ------- | ----------- | ---------------------------- |
| `peoei` | Reverts `pfnPEntityOfEntIndex` behavior to GoldSrc, where it returns NULL for last player due to incorrect player index comparison | * Counter-Strike: Condition Zero - Deleted Scenes | | `peoei` | Reverts `pfnPEntityOfEntIndex` behavior to GoldSrc, where it returns NULL for last player due to incorrect player index comparison | * Counter-Strike: Condition Zero - Deleted Scenes |
| `gsmrf` | Rewrites message at the moment when Game DLL attempts to write an internal engine message, usually specific to GoldSrc protocol. Right now only supports `svc_spawnstaticsound`, more messages added by request. | * MetaMod/AMXModX based mods | | `gsmrf` | Rewrites message at the moment when Game DLL attempts to write an internal engine message, usually specific to GoldSrc protocol.<br>Right now only supports `svc_spawnstaticsound`, more messages added by request. | * MetaMod/AMXModX based mods |
| `sp_attn_none` | Makes sounds with attenuation zero spatialized, i.e. have a stereo effect. | Possibly, every game that was made for GoldSrc. | | `sp_attn_none` | Makes sounds with attenuation zero spatialized, i.e. have a stereo effect. | Possibly, every game that was made for GoldSrc. |
| `get_game_dir_full` | Makes server return full path in server's `pfnGetGameDir` API function | Mods targetting engine before HL 1.1.1.1, according to MetaMod [documentation](http://metamod.org/engine_notes.html#GetGameDir) |
@@ -5,5 +5,10 @@ This can be useful to test engine in Wine without using virtual machines or dual
0. Clone and install https://github.com/mstorsjo/msvc-wine (you can skip CMake part) 0. Clone and install https://github.com/mstorsjo/msvc-wine (you can skip CMake part)
1. Set environment variable MSVC_WINE_PATH to the path to installed MSVC toolchain 1. Set environment variable MSVC_WINE_PATH to the path to installed MSVC toolchain
2. Pre-load wine: `wineserver -k; wineserver -p; wine64 wineboot` 2. Pre-load wine: `wineserver -k; wineserver -p; wine64 wineboot`
3. Run `./waf configure -T <build-type> --enable-wine-msvc --sdl2=../SDL2_VC`. Configuration step will take more time than usual. 3. Run `PKGCONFIG=/bin/false ./waf configure -T <build-type> --enable-wine-msvc --sdl2=../SDL2_VC`. Configuration step will take more time than usual.
4. .. other typical steps to build from console ... 4. .. other typical steps to build from console ...
> [!NOTE]
> Notice the usage of PKGCONFIG=/bin/false here. We're disabling pkg-config so we don't accidentally pull
> system-wide dependencies and force building them from source. In future builds we might set custom
> directory to pull dependencies from, like ffmpeg...
@@ -22,7 +22,7 @@ The other yet unsupported configuration is the big endian.
2) Open `public/build.h` file. Add appropriate checks for your operating system and/or CPU architecture. It shouldn't be hard. 2) Open `public/build.h` file. Add appropriate checks for your operating system and/or CPU architecture. It shouldn't be hard.
Also, you'll need to build [Half-Life SDK](https://github.com/FWGS/hlsdk-xash3d/). It has same `public/build.h` so reflect changes into it. Note that to be compatible with HLSDK proprietary license, it's relicensed as public domain under [Unlicense](https://unlicense.org). Also, you'll need to build [Half-Life SDK](https://github.com/FWGS/hlsdk-portable/). It has same `public/build.h` so reflect changes into it. Note that to be compatible with HLSDK proprietary license, it's relicensed as public domain under [Unlicense](https://unlicense.org).
We have a library naming scheme that allows us and game creators to distribute binaries for different platforms in one archive. Read `Documentation/extensions/library-naming.md` for more information. We have a library naming scheme that allows us and game creators to distribute binaries for different platforms in one archive. Read `Documentation/extensions/library-naming.md` for more information.
@@ -0,0 +1,103 @@
## Setting up Xash3D FWGS in Qt Creator
### Intro
Most versions of Qt Creator support using `compile_commands.json` as a project
file and Waf supports generating this file in a compliant format. In this
tutorial we will leverage that features.
The tutorial is written using Qt Creator 18.0, but I urge you to use whatever
latest Qt Creator version is available, as it's often has important bug fixes.
### Step 1. Configure the build.
`compile_commands.json` file, as it can be guessed from it's name, contains
every command used to invoke compiler during build. As the build process
depends on the build configuration, we have to configure it first. I'm not
going to get into details here, as basics of compiling Xash3D FWGS already
explained in `README.md`, located in repository root.
Save the configure step command somewhere, as it's going to be used later.
### Step 2. Generate `compile_commands.json` file.
Usually, this file is located in `build` directory after a successful build.
However, it's also possible to generate it manually by running follow command:
On *nix systems:
```
$ ./waf clangdb
```
Or on Windows:
```
> waf.bat clangdb
```
### Step 3. Load the project in Qt Creator.
To do this, you need to be sure that `Compilation Databases` plugin is enabled.
As it's considered experimental, it probably needs to be enabled manually. It
can be done in `Help` -> `About Plugins...`. Locate it in `Build Systems`
category, put the checkbox and press `OK`. The IDE will ask for restart, so do
this.
After IDE has been restarted, you can use `File` -> `Open File or Project...`.
Navigate to Xash3D FWGS directory, then to `build` directory and select
`compile_commands.json` file. If everything is done correctly, IDE will ask to
set up the project. Press `Configure Project` button, as most options there are
usually unapplicable to us.
Next IDE will show project tree, however you might not see any files. This is
happens as Qt Creator "thinks" our project root located in `build` directory.
Thankfully it provides a way to override this. To fix it, click with right
mouse button on the root of project tree (it's usually called something like
`build [master]`) and select `Change Root Directory`. In opened window choose
Xash3D FWGS repository root and press `OK`.
### Step 4. Tell IDE how to build this project.
Open `Projects` on the left menu and choose `Build Settings` tab. You should
see an empty configuration for build and clean steps. Press on `Add Build Step`
button and choose `Custom Process Step`.
In created step you should see `Command`, `Arguments` and `Working Directory`.
For the command, choose the Python executable. For arguments, use configure
command for Waf from the first step. Working directory is usually set by IDE
to `%{buildDir}`. You need to select the upper directory, where the `waf` is
located. To save some time, it can be specified as `%{buildDir}/../`.
Add another custom step, fill it with the same command and working directory.
For arguments use `waf build`.
Below you should see `Clean steps`. Create a clean step the same way, fill the
arguments and working directory as usual, for arguments use `waf clean`.
### Step 5. Tell IDE how to copy built binaries.
Now select `Deploy Settings` tab. Press `Add Deploy Step` -> `Custom Process
Step`. Again, same command and working directory. In arguments field type:
`waf install --destdir="<here put where Xash binaries should be copied to>"`.
### Step 6. Finally, set up Qt Creator to run the engine.
Select the `Run Settings` tab. Below you might see familiar text fields:
`Executable`, `Command line arguments` and `Working directory`.
For working directory click on `Browse...` button and select the folder where
Xash3D executable will be copied to, from previous step.
For executable type `./xash3d` if you're on *nix or `xash3d.exe` if you're on
Windows. The command line arguments are the same you use to run the engine. Can
be empty as well, but I personally use `-dev 2 -log` for extra verbosity.
### Outro
At this moment, you should be able to press `Run` button, wait until build
finishes and see running Xash3D FWGS. On Windows to use the debugger you might
need the `CDB` debugger and appropriate `qtcreatorcdbext` binary for debugging
32-bit applications and a separate for 64-bit, but that's left as an exercise
for the reader and a potential improvement for this document.
+26 -15
View File
@@ -2,23 +2,34 @@
On this page you can find links where you can support each developer individually, who has provided public sponsorship information. On this page you can find links where you can support each developer individually, who has provided public sponsorship information.
### [a1batross](https://github.com/a1batross) ## [a1batross](https://github.com/a1batross)
* Initial Xash3D SDL2/Linux port author, Xash3D FWGS engine maintainer, creator of non-commercial Flying With Gauss organization. Initial Xash3D SDL2/Linux port author, Xash3D FWGS engine maintainer, creator of non-commercial Flying With Gauss organization.
* Boosty page: https://boosty.to/a1ba
### [nekonomicon](https://github.com/nekonomicon) * [Boosty page](https://boosty.to/a1ba)
* [hlsdk-portable](https://github.com/FWGS/hlsdk-portable), [mdldec](../utils/mdldec), [opensource-mods.md](opensource-mods.md) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=nekonomicon) (*BSD/clang port, PNG support, etc). ## [nekonomicon](https://github.com/nekonomicon)
* Boosty page: https://boosty.to/nekonomicon
### [Velaron](https://github.com/Velaron) [hlsdk-portable](https://github.com/FWGS/hlsdk-portable), [mdldec](../utils/mdldec), [opensource-mods.md](opensource-mods.md) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=nekonomicon) (*BSD/clang port, PNG support, etc).
* [cs16-client](https://github.com/Velaron/cs16-client) & [tf15-client](https://github.com/Velaron/tf15-client) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=Velaron) (Android port, voice chat, etc).
* BuyMeACoffee page: https://www.buymeacoffee.com/velaron
### [SNMetamorph](https://github.com/SNMetamorph) * [Boosty page](https://boosty.to/nekonomicon)
* [PrimeXT](https://github.com/SNMetamorph/PrimeXT) & [GoldSrc Monitor](https://github.com/SNMetamorph/goldsrc-monitor) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=SNMetamorph) (Windows port, voice chat, etc).
* BTC: `16GAzK3qei5AwBW7sggXp3yNcFHBtdpxXj` ## [Velaron](https://github.com/Velaron)
* ETH (ERC20): `0xb580eeca9756e3881f9d6d026e28db28eb72a383`
* USDT (ERC20): `0xb580eeca9756e3881f9d6d026e28db28eb72a383` [cs16-client](https://github.com/Velaron/cs16-client) & [tf15-client](https://github.com/Velaron/tf15-client) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=Velaron) (Android port, voice chat, etc).
* USDC (ERC20): `0xb580eeca9756e3881f9d6d026e28db28eb72a383`
* [Boosty page](https://boosty.to/velaron)
## [SNMetamorph](https://github.com/SNMetamorph)
[PrimeXT](https://github.com/SNMetamorph/PrimeXT) & [GoldSrc Monitor](https://github.com/SNMetamorph/goldsrc-monitor) maintainer and Xash3D FWGS [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=SNMetamorph) (Windows port, voice chat, etc).
* [Boosty page](https://boosty.to/snmetamorph)
* [Other donation methods](https://snmetamorph.github.io/donate)
## [$_Vladislav](https://github.com/Vladislav4KZ)
[YaPB Project](https://github.com/yapb) member and [contributor](https://github.com/yapb/yapb/commits?author=Vladislav4KZ) ([Docs](https://github.com/yapb/docs), [Nav Graphs](https://github.com/yapb/graph), [RU translation](https://github.com/yapb/yapb/blob/master/cfg/addons/yapb/conf/lang/ru_lang.cfg)), Xash3D FWGS [tester](https://github.com/FWGS/xash3d-fwgs/issues?q=is%3Aissue%20state%3Aopen%20author%3AVladislav4KZ) and [contributor](https://github.com/FWGS/xash3d-fwgs/commits?author=Vladislav4KZ) (gyro-aim support, scr-parser, etc.), [CS16Client](https://github.com/Velaron/cs16-client) [contributor](https://github.com/Velaron/cs16-client/commits?author=Vladislav4KZ).
* [Boosty page](https://boosty.to/rasstaman1337)
* [PayPal link](https://paypal.me/rasstaman1337)
-150
View File
@@ -1,150 +0,0 @@
# There are few new commands availiable in xash3d fork:
## Commands:
### ent_create
Create entity with specified classname and key/values
`ent_create <classname> <key> <value> <key> <value> ...`
for example:
`ent_create monster_zombie targetname zomb1`
after creating entity, ent_last_xxx cvars are set to new entity and ent_last_cb called, look at ent_getvars description
### ent_fire
Make some actions on entity
`ent_fire <pattern> <command> <args>`
Availiavle commands:
* Set fields (Only set entity field, does not call any functions):
* health
* gravity
* movetype
* solid
* rendermode
* rendercolor (vector)
* renderfx
* renderamt
* hullmin (vector)
* hullmax (vector)
* Actions
* rename: set entity targetname
* settarget: set entity target (only targetnames)
* setmodel: set entity model (does not update)
* set: set key/value by server library
* See game FGD to get list.
* command takes two arguments
* touch: touch entity by current player.
* use: use entity by current player.
* movehere: place entity in player fov.
* drop2floor: place entity to nearest floor surface
* moveup: move entity to 25 units up
* moveup (value): move by y axis relatively to specified value
* Flags (Set/clear specified flag bit, arg is bit number):
* setflag
* clearflag
* setspawnflag
* clearspawnflag
### ent_info
Print information about entity by identificator
`ent_info <identificator>`
### ent_getvars
Set client cvars containing entity information (useful for [[Scripting]]) and call ent_last_cb
`ent_getvars <identificator>`
These cvars are set:
```
ent_last_name
ent_last_num
ent_last_inst
ent_last_origin
ent_last_class
```
### ent_list
Print short information about antities, filtered by pattern
`ent_list <pattern>`
## Syntax description
### \<identificator\>
* !cross: entity under aim
* Instance code: !\<number\>_\<seria\l>
* set by ent_getvars command
* Entity index
* targetname pattern
### \<pattern\>
Pattern is like identificator, but may filter many entities by classname
### (vector)
used by ent_fire command. vector means three float values, entered without quotes
### key/value
All entities parameters may be set by specifiing key and value strings.
Originally, this mechanizm is used in map/bsp format, but it can be used in enttools too.
Keys and values are passed to server library and processed by entity keyvalue function, setting edict and entity owns parameters.
If value contains spaces, it must be put in quotes:
`ent_fire !cross set origin "0 0 0"`
## Using with scripting
ent_create and ent_getvars commands are setting cvars on client
It can be used with ent_last_cb alias that is executed after setting cvars.
Simple example:
```
ent_create weapon_c4
alias ent_last_cb "ent_fire \$ent_last_inst use"
```
Use weapon_c4 after creating it.
Note that you cannot use many dfferent callbacks at the same time.
You can set entity name by by pattern and create special script, contatning all callbacks.
Example:
example.cfg
```
alias ent_last_cb exec entity_cb.cfg
ent create \<class\> targetname my_ent1_$name
ent_create \<class\> targetname my_ent2_$name
```
entity_cb.cfg
```
if $ent_last_name == my_ent1_$name
:(ent1 actions)
if $ent_last_name == my_ent2_$name
:(ent2 actions)
```
Note that scripting cannot be blocking. You cannot wait for server answer and continue. But you can use small scripts, connected with ent_last_cb command. The best usage is user interaction. You can add touch buttons to screen or call user command menu actions by callbacks.
## Server side
To enable entity tools on server, set sv_enttools_enable to 1
To change maximum number of entities, touched by ent_fire, change sv_enttools_maxfire to required number.
To enable actions on players, set sv_enttools_players to 1.
To enable entity tools for player by nickname, set sv_enttools_godplayer to nickname. Useful to temporary enable from rcon.
To prevent crash on some actions, set host_mapdesign_fatal to 0
+16
View File
@@ -0,0 +1,16 @@
# Addon folders in Xash3D FWGS
Xash3D FWGS supports both GoldSource-style addon folders and has few own. Each directory can have it's own archives that will be mounted with lower priority than directory itself.
Below is the mounts map, in order of precedence from least important to most important.
|--------------------|------|
| Directory | Note |
|--------------------|------|
| `$game/downloaded` | Always added. Used to store server downloads.|
| `$game` | This is the game directory. |
| `$game/custom` | Always added. Used for user modifications content. |
| `$game_hd` | Added with `fs_mount_hd` set to non-zero value. Used for high definition content, similar to GoldSrc.. |
| `$game_addon` | Added with `fs_mount_addon` set to non-zero value. Used for user modifications content, similar to GoldSrc. |
| `$game_lv` | Added with `fs_mount_lv` set to non-zero value. Used for low-violence content, similar to GoldSrc. |
| `$game_$language` | Added with `fs_mount_l10n` set to non-zero value. Language is controlled with `ui_language` cvar or `-language` command line switch. Used for localization content, similar to GoldSrc. |
+152
View File
@@ -0,0 +1,152 @@
# Entity tools
For some features described below, you need to enable [console scripting](https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/extensions/console-scripting.md) with command `cmd_scripting 1` in console.
To get more information about it, check another according page related to console scripting.
## Commands description
### ent_create
Create entity with specified classname and key/values.
`ent_create <classname> <key> <value> <key> <value> ...`
For example:
`ent_create monster_zombie targetname zomb1`
After creating entity, ent_last_xxx cvars are set to new entity and ent_last_cb called, look at ent_getvars description.
### ent_fire
Makes some actions on entity.
`ent_fire <pattern> <command> <args>`
#### Available commands:
Set fields (only set entity field, does not call any functions)
* health
* gravity
* movetype
* solid
* rendermode
* rendercolor (vector)
* renderfx
* renderamt
* hullmin (vector)
* hullmax (vector)
Actions
* rename: set entity targetname
* settarget: set entity target (only targetnames)
* setmodel: set entity model (does not update)
* set: set key/value by server library
* See game FGD to get list.
* command takes two arguments
* touch: touch entity by current player.
* use: use entity by current player.
* movehere: place entity in player fov.
* drop2floor: place entity to nearest floor surface
* moveup: move entity to 25 units up
* moveup (value): move by y axis relatively to specified value
Flags (set/clear specified flag bit, arg is bit number):
* setflag
* clearflag
* setspawnflag
* clearspawnflag
### ent_info
Print information about entity by identificator.
`ent_info <identificator>`
### ent_getvars
Set client cvars containing entity information (useful for [scripting](extensions/console-scripting.md)) and then calls ent_last_cb.
`ent_getvars <identificator>`
These cvars are set:
```
ent_last_name
ent_last_num
ent_last_inst
ent_last_origin
ent_last_class
```
### ent_list
Print short information about antities, filtered by pattern.
`ent_list <pattern>`
## Syntax description
#### \<identificator\>
* !cross: entity under aim
* !\<number\>_\<serial\>: instance code
* Set by ent_getvars command
* Entity index
* Targetname pattern
#### \<pattern\>
Pattern is like identificator, but may filter many entities by classname.
#### (vector)
Used by ent_fire command. vector means three float values, entered without quotes.
#### key/value
All entities parameters may be set by specifiing key and value strings.
Originally, this mechanizm is used in map/bsp format, but it can be used in enttools too.
Keys and values are passed to server library and processed by entity keyvalue function, setting edict and entity owns parameters.
If value contains spaces, it must be put in quotes:
`ent_fire !cross set origin "0 0 0"`
## Using with scripting
ent_create and ent_getvars commands are setting cvars on client
It can be used with ent_last_cb alias that is executed after setting cvars.
Simple example:
```
ent_create weapon_c4
alias ent_last_cb "ent_fire \$ent_last_inst use"
```
Use weapon_c4 after creating it.
Note that you cannot use many different callbacks at the same time.
You can set entity name by by pattern and create special script, contatning all callbacks.
Example:
> example.cfg
```
alias ent_last_cb exec entity_cb.cfg
ent create \<class\> targetname my_ent1_$name
ent_create \<class\> targetname my_ent2_$name
```
> entity_cb.cfg
```
if $ent_last_name == my_ent1_$name
:(ent1 actions)
if $ent_last_name == my_ent2_$name
:(ent2 actions)
```
Note that scripting cannot be blocking. You cannot wait for server answer and continue. But you can use small scripts, connected with ent_last_cb command. The best usage is user interaction. You can add touch buttons to screen or call user command menu actions by callbacks.
## Server side configuration
To enable entity tools on server, set sv_enttools_enable to 1
To change maximum number of entities, touched by ent_fire, change sv_enttools_maxfire to required number.
@@ -42,3 +42,6 @@ Issue #3: Some mods (like The Specialists, Tyrian, ...) already apply suffixes _
Resolution: On x86 on **Win/Lin/Mac**, don't change anything. Otherwise, strip the _i?86 part and follow the usual scheme. Resolution: On x86 on **Win/Lin/Mac**, don't change anything. Otherwise, strip the _i?86 part and follow the usual scheme.
See discussion: https://github.com/FWGS/xash3d-fwgs/issues/39 See discussion: https://github.com/FWGS/xash3d-fwgs/issues/39
Issue #4: When distributing game libraries on Android inside an APK, they couldn't be loaded.
Resolution: Enable `useLegacyPackaging` option in build.gradle, when distributing games in APK. Always force game libraries to have `lib` prefix on Android, regardless if they are packaged in APK or not..
+19
View File
@@ -0,0 +1,19 @@
## Lightmapped water
Xash3D FWGS supports lightmapped water, as an extension. It adds three new cvars and new worldspawn key values.
### For level designers:
If you're a level designer and intend to make your level to have lightmapped water, you can put these keyvalues to worldspawn entity description (always first entity in entities list):
| Key | Value | Description |
| ---------------------- | ------- | ----------- |
| `_litwater` | integer | Set to any non-zero value to enable lightmapped water. Overrides `gl_litwater_force` cvar value. |
| `_litwater_minlight` | integer | Minimal lightmap value water surface will receive. Helps to avoid too dark areas when water isn't properly lit. If not set, defaults to zero. |
| `_litwater_scale` | float | Scales up lightmap value for water surfaces. If not set, defaults to 1.0. |
### For players:
Some of the maps already have computed lightmap for water surfaces and sometimes water has been properly lit but the support hasn't been declared by the level designer.
As a player, you can enable it in `Video options` menu or through console with `gl_litwater_force` cvar. There are also `gl_litwater_minlight` and `gl_litwater_scale` cvars that function similar to keys above. The default values has been set to `192` and `1.25` respectively to slightly avoid issues with maps that wasn't intended to have lightmapped water.
@@ -16,6 +16,7 @@ Only these objects are guaranteed to be available on all targets.
|-------------|-----------| |-------------|-----------|
| `VFileSystem009` | Provides C++ interface to filesystem, binary-compatible with Valve's VFileSystem009. | | `VFileSystem009` | Provides C++ interface to filesystem, binary-compatible with Valve's VFileSystem009. |
| `XashFileSystemXXX` | Provides C interface to filesystem. This interface is unstable and not recommended for generic use, outside of engine internals. For more info about current version look into `filesystem.h`. | | `XashFileSystemXXX` | Provides C interface to filesystem. This interface is unstable and not recommended for generic use, outside of engine internals. For more info about current version look into `filesystem.h`. |
| `MenuFactory` | Returns a `CreateInterface` function pointer (`pfnCreateInterface_t`) for the currently loaded menu library. |
#### Android-specific objects #### Android-specific objects
+139
View File
@@ -0,0 +1,139 @@
# Steam API Broker Protocol Specification
## Overview
Due to proprietary nature of Steamworks SDK, it cannot be run on same amount
of platforms supported by Xash3D FWGS, neither we can link library directly due to
GNU GPLv3 license.
However, here comes the broker, by running it (in trusted
network, preferrably) on a machine that has Steam client installed, the
engine can communicate with it, acquiring needed information to log-in into
Steam protected multiplayer servers.
## Key Characteristics
Broker uses a simple TCP-based binary protocol with the following properties:
- Single active session per connection: once a session is activated, the broker will reject all other TCP connections until the session is terminated.
- All messages follow a consistent structure with a header, length, and payload: this is called a "frame".
- Stateful interactions: commands affect the session state, and certain commands are only valid in specific states.
- Numeric parameters are encoded in little-endian format for compatibility with majority of platforms.
---
## Frame Format
All communication uses a fixed frame structure:
| Field | Size | Type | Description |
|-------|------|------|-------------|
| Header | 4 bytes | ASCII | Frame start signature |
| Length | 2 bytes | uint16_t (LE) | Size of payload in bytes |
| Payload | N bytes | Binary | Command string or response data |
**Notes**:
- Header must be exactly `SBRK` (`53 42 52 4B` in hexadecimal form)
- Maximum frame size: soft limit is 4096 bytes, hard limit is 65535 bytes (due to uint16_t usage)
---
## Session Lifecycle
```
┌──────────────┐
│ IDLE │ ← Initial state, accepts new TCP connections
└──────────────┘
│ sb_gamedir
┌──────────────┐
│ ACTIVE │ ← Session established, rejecting all of other TCP connections
└──────────────┘
│ sb_connect
┌──────────────┐
│ ACTIVE │ ← Client getting auth ticket to connect to game server
└──────────────┘
│ sb_disconnect
┌──────────────┐
│ ... │ ← Client announcing disconnect from game server, could connect somewhere again
└──────────────┘
┌──────────────┐
│ ACTIVE │ ← Client shutting down game, terminating broker to reset Steam client state
└──────────────┘
│ sb_terminate
┌──────────────┐
│ RESTARTING │
└──────────────┘
```
---
## Commands
All commands listed below are meant to be sent from client to broker as payload of a frame. The broker will parse the command string and respond accordingly.
### Session activation
Activates the session and signaling game startup.
**Format**: `sb_gamedir <gamedir>`
**Response**: None
---
### Authentication ticket request
Requests authentication ticket for a game server.
**Precondition**: Session must be active
**Format**: `sb_connect <ip:port> <server_steamid> <secure> <challenge>`
**Parameters**:
| Name | Description |
|------|------------------|
| `<ip:port>` | Game server address (e.g., `127.0.0.1:27015`) |
| `<server_steamid>` | Server SteamID |
| `<secure>` | 0 = insecure, 1 = secure |
| `<challenge>` | Random value for reply prevention |
**Response Format**:
| Field | Size | Type | Description |
|-------|------|------|-------------|
| Header | 11 bytes | string | `"sb_connect\n"` |
| Challenge | 4 bytes | int32_t (LE) | Echo of challenge from request |
| SteamID | 8 bytes | uint64_t (LE) | Client SteamID from configuration |
| Size | 4 bytes | uint32_t (LE) | Length of ticket in bytes |
| Ticket | N bytes | - | Authentication ticket data |
---
### Server disconnection announcement
Notifies broker of disconnection from game server.
**Precondition**: Session must be active
**Format**: `sb_disconnect <ip:port> <challenge>`
**Response**: None
---
### Session termination
Signaling game shutdown to broker and resetting Steam client state.
**Format**: `sb_terminate`
**Response**: None
---
+181
View File
@@ -0,0 +1,181 @@
# XRCON Protocol Specification
## Overview
XRCON is a TCP-based remote console protocol implemented as a server within the engine. It provides an alternative to the legacy RCON (which operates over UDP as out-of-band packets). XRCON uses a framed binary protocol over a single persistent TCP connection, accepting at most one client at a time.
Key characteristics:
- Based on TCP (stream-oriented, reliable)
- Default port is 27000
- Maximum only one concurrent client
- Binary framed protocol with a 12-byte header + variable-length payload
## Configuration
The XRCON server is controlled by two configuration variables, both restricted to privileged users:
| Variable | Default | Description |
|---|---|---|
| `xrcon_enable` | `0` (disabled) | Master switch; when enabled, the server starts listening for connections |
| `xrcon_address` | `127.0.0.1:27000` | Bind address and port; supports both IPv4 and IPv6. Changing this at runtime triggers a XRCON server restart (stop + rebind) |
By default, XRCON binds only to localhost (`127.0.0.1`), providing a degree of access control. The server will not start listening until explicitly enabled.
## Frame Format
All XRCON messages are encapsulated in a framed binary format. Each frame consists of a fixed 12-byte header followed by a variable-length payload.
### Header (12 bytes)
| Offset | Size | Field | Description |
|---|---|---|---|
| 0 | 4 | Type | 4-character message type string (null-terminated, occupies 5 bytes in the structure but the 5th byte is padding) |
| 4 | 4 | Version | Protocol version (32-bit unsigned integer, network byte order) |
| 8 | 2 | Length | Total frame length in bytes, including the header (16-bit unsigned integer, network byte order) |
| 10 | 2 | Handle | Handle or sequence number (16-bit unsigned integer, network byte order; currently always zero) |
### Protocol Version
The current protocol version is `0x000000D4` (212 decimal). The server also accepts `0x00D40000` for compatibility with certain third-party clients (e.g., CS2RemoteConsole).
### Maximum Frame Size
- Maximum payload per frame: 4096 bytes
- Maximum total packet size (header + payload): approximately 4136 bytes
- Receive buffer size: 4096 + 64 bytes
- Transmit buffer size: 16384 bytes (4 × maximum frame size)
### Byte Order
Multi-byte integer fields (version, length, handle) are transmitted in **network byte order** (big-endian).
## Message Types
| Type | Direction | Description |
|---|---|---|
| `CMND` | Client → Server | Execute a console command |
| `PRNT` | Server → Client | Console output / print message |
| `CHAN` | Server → Client | Channel list (channel metadata) |
| `AINF` | Server → Client | Application / server info |
| `ADON` | Server → Client | Additional info / server name |
### CMND — Client Command
**Direction**: Client → Server
Sent by the client to execute a console command on the server.
| Section | Size | Description |
|---|---|---|
| Header | 12 bytes | Type = `"CMND"`, version, length, handle |
| Payload | Variable | Raw command string (null-terminated) |
The command string is injected into the engine's command buffer for execution. There is **no authentication** — any connected client may execute arbitrary commands.
### PRNT — Server Print
**Direction**: Server → Client
Sent by the server to stream console output to the connected client.
| Section | Size | Description |
|---|---|---|
| Header | 12 bytes | Type = `"PRNT"`, version, length, handle |
| Channel ID | 4 bytes | Channel identifier (unsigned 32-bit integer; always 0 for "Console") |
| Padding | 20 bytes | Reserved (5 × 32-bit unsigned integers, all zero) |
| Red | 1 byte | Red color component (always 255) |
| Green | 1 byte | Green color component (always 255) |
| Blue | 1 byte | Blue color component (always 255) |
| Alpha | 1 byte | Alpha / opacity component (always 255) |
| Text | Variable | The console output text (up to 4096 bytes) |
### CHAN — Channel List
**Direction**: Server → Client
Sent by the server during the initial handshake (and potentially later) to describe the available console output channels.
| Section | Size | Description |
|---|---|---|
| Header | 12 bytes | Type = `"CHAN"`, version, length, handle |
| Channel Count | 2 bytes | Number of channel records (unsigned 16-bit integer; always 1) |
Each channel record (58 bytes):
| Field | Size | Description |
|---|---|---|
| Channel ID | 4 bytes | Unique channel identifier (unsigned 32-bit integer; always 0) |
| Unknown 1 | 4 bytes | Reserved (unsigned 32-bit integer; always 0) |
| Unknown 2 | 4 bytes | Reserved (unsigned 32-bit integer; always 0) |
| Default Verbosity | 4 bytes | Default verbosity level (unsigned 32-bit integer; always 5) |
| Current Verbosity | 4 bytes | Current verbosity level (unsigned 32-bit integer; always 5) |
| Red | 1 byte | Red color component for the channel (always 255) |
| Green | 1 byte | Green color component (always 255) |
| Blue | 1 byte | Blue color component (always 255) |
| Alpha | 1 byte | Alpha component (always 255) |
| Name | 34 bytes | Channel name string, null-padded (always `"Console"`) |
Total payload size for this frame: 2 + 58 = 60 bytes.
### AINF — Application Info
**Direction**: Server → Client
Sent by the server immediately after a client connects, before `ADON` and `CHAN`.
| Section | Size | Description |
|---|---|---|
| Header | 12 bytes | Type = `"AINF"`, version, length, handle |
| Payload | 77 bytes | All zeros (placeholder / reserved for structured application information) |
This packet currently serves as a placeholder and contains no meaningful data. It may be extended in future versions to carry structured metadata about the server application.
### ADON — Additional Info
**Direction**: Server → Client
Sent by the server immediately after `AINF` during the connection handshake.
| Section | Size | Description |
|---|---|---|
| Header | 12 bytes | Type = `"ADON"`, version, length, handle |
| Unknown | 2 bytes | Reserved (unsigned 16-bit integer; always 0) |
| Name Length | 2 bytes | Length of the name string (unsigned 16-bit integer) |
| Name | Variable | Server name / identifier string (e.g., `"HLDS"`) |
This packet carries the server application name, which is a short string identifying the server type (e.g., `"HLDS"` for Half-Life Dedicated Server).
## Security
XRCON has **no built-in authentication or encryption**. There is no password validation or transport-layer security. Any client that can establish a TCP connection to the XRCON port has full command execution access to the engine console.
The only security measures are:
1. **Default localhost binding**: The server binds to `127.0.0.1` by default, accepting connections only from the local machine.
2. **Disabled by default**: The `xrcon_enable` variable defaults to `0`, so the server does not listen unless explicitly enabled.
3. **Privileged variables**: Both configuration variables are restricted to privileged users and cannot be modified through unprivileged console commands or external access.
## Comparison with Legacy RCON
| Feature | XRCON | Legacy RCON |
|---|---|---|
| Transport | TCP (stream) | UDP (datagram, out-of-band) |
| Port | Configurable, default 27000 | Game port (default 27015) |
| Framing | Binary frame header | Plain text over UDP |
| Authentication | None | Password-based |
| Max clients | 1 | Multiple |
| Interaction format | Full console access | Request-response only for submitted command |
| Supported environments | Client and server | Server only |
+3
View File
@@ -85,6 +85,9 @@ These strings are specific to Xash3D FWGS.
As Xash3D accidentally supports GoldSrc games, it also supports parsing liblist.gam.\ As Xash3D accidentally supports GoldSrc games, it also supports parsing liblist.gam.\
Xash3D will use this file if gameinfo.txt is absent, or if its modification timestamp is older than liblist.gam. Xash3D will use this file if gameinfo.txt is absent, or if its modification timestamp is older than liblist.gam.
> [!NOTE]
> Starting from January 2025, Xash3D FWGS doesn't automatically generate gameinfo.txt from liblist.gam. The key conversion table still remains but if you wish to use gameinfo.txt instead of liblist.gam, you can execute `fs_make_gameinfo` in console.
For game creators who plan supporting only Xash3D, using this file is not recommended. For game creators who plan supporting only Xash3D, using this file is not recommended.
The table below defines conversion rules from liblist.gam to gameinfo.txt. Some keys' interpretation does differ from `gameinfo.txt`, in this case a note will be left. If `liblist.gam` key isn't present in this table, it's ignored. The table below defines conversion rules from liblist.gam to gameinfo.txt. Some keys' interpretation does differ from `gameinfo.txt`, in this case a note will be left. If `liblist.gam` key isn't present in this table, it's ignored.
+10 -6
View File
@@ -1,14 +1,18 @@
# Support for GoldSrc network protocol # Support for GoldSrc network protocol
This feature is still work-in-progress, but for now it's available for all users, and we appreciate any bug-reports and contributions around it.
For connecting to GoldSrc-based servers, use this command: For connecting to GoldSrc-based servers, use this command:
``` ```
connect ip:port gs connect ip:port gs
``` ```
But keep in mind, there are requirement for server to be able to accept connections from Xash3D-based clients: it should accept HLTV connections. You need to use [Steam API broker](https://github.com/FWGS/steam-broker) and have purchased Half-Life 1 on your Steam account to be able to join GoldSrc servers.
Without this requirement, you will just get "Steam validation rejected" error on connecting.
That is because proper authorization with Steam API is not implemented in engine yet (but we have plans on it). Broker will run on your PC and will be responsible for communicating with Steam client and obtaining auth tickets.
Also, make sure to set that broker as current ticket generator using console or edit `config.cfg` file manually:
```
cl_ticket_generator steam
```
In case of ReHLDS with Reunion plugin, by default it rejects HLTV clients. But connections from HLTV can be easily enabled in `reunion.cfg` file. If you want to join GoldSrc servers from other device (Android/iOS or console), make sure to set proper broker IP address with `cl_steam_broker_addr` console variable. Default value assumed that broker is running on the same device as game client.
By the way, we encountered that some GoldSrc-based servers are recognizing Xash3D clients as "fake clients" and banning/kicking them. Maybe this problem will be
solved along with better compatibility with GoldSrc behavior, but may be not - we don't know logic behind this fake client checks.
+15
View File
@@ -0,0 +1,15 @@
/*
filename.ext - do not include this file, only copy the header
Copyright (C) 2015-2025 Xash3D FWGS contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

+32
View File
@@ -0,0 +1,32 @@
# NAT bypass feature in Xash3D FWGS
Since IPv6 not as widespread as we would like, NAT (Network Address Translation) still being actively used by many internet service providers in an attempts to
mitigate IPv4 addresses exhaustion. In short, they uses one IPv4 address and doing some tricks with ports to represent many other users behind this address.
But this leads to a problem for users: they cannot accept direct
incoming connections anymore. This means that if you are behind provider's NAT and will try to setup Xash3D FWGS server - nobody will be able to connect to it,
and the server will not show up in servers public list.
## Is it possible to avoid this problem?
In most cases, it is possible to bypass NAT with UDP hole punching, and Xash3D FWGS uses this method too. But this method is not 100% guaranteed to work - it depends
on NAT configurations on both server and client side, and there is no way to control it.
First of all, server should not be behind symmetric NAT. You can check your NAT type on [this page](https://www.checkmynat.com/).
If you get "Symmetric NAT" result in this test, that means you cannot setup publicly available server with internet connection that you are using.
Here is more detailed scheme of different NAT types compatibility, it explains are users with different NAT types can connect to each other or not.
Client NAT type on rows, server NAT type on columns:
| *NAT Type* | Full Cone | Restricted Cone | Port Restricted Cone | Symmetric |
| -------------------- | --------- | --------------- | -------------------- | --------- |
| Full Cone | ✔️ | ✔️ | ✔️ | ✔️ |
| Restricted Cone | ✔️ | ✔️ | ✔️ | ✔️ |
| Port Restricted Cone | ✔️ | ✔️ | ✔️ | ❌ |
| Symmetric | ✔️ | ✔️ | ❌ | ❌ |
## How to use NAT bypass feature?
If you are starting server within the game, you need to enable option "*Use NAT Bypass instead of direct mode*" in bottom left corner of screen.
If you are starting dedicated server, you should add console variable `sv_nat 1` to server.cfg file, or add `+sv_nat 1` to server startup parameters.
If you need to connect to server behind NAT, there is separate tab named *NAT* for such servers in server browser. Note that it is useless to add NAT server to favorites,
or somehow trying manually to store it, because it has changing address and port.
@@ -2,10 +2,19 @@
|Name |Version |Why not working |What was made for that |Name |Version |Why not working |What was made for that
|---- |------- |--------------- |---------------------- |---- |------- |--------------- |----------------------
|Blue Shift |The latest steam release |Uses vgui2 library which xash3d does not support |Recreated source code here: https://github.com/FWGS/hlsdk-xash3d/tree/bshift |Area 51 |Update 1 |Uses outdated BSP31 map format and custom HLFX SDK libraries. |You can try [this tool](https://hlfx.ru/forum/showthread.php?threadid=5250) to convert maps but there no warranty if it works.
|Counter Strike |1.6(The latest steam release) |Uses vgui2 library which xash3d does not support |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface |Arrange Mod: Rebirth |v150 |No idea yet. |
|Counter Strike: Condition Zero |The latest steam release |Uses vgui2 library which xash3d does not support |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface |Blue Shift |The latest steam release |Uses vgui2 library which xash3d does not support. |Recreated source code here: https://github.com/FWGS/hlsdk-portable/tree/bshift.
|Counter Strike: Condition Zero - Deleted scenes |The latest steam release |Uses vgui2 library which xash3d does not support |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface |Counter Strike |Beta 6.5- |Uses an old WON HL 1.0.0.16- interface. |
|Day of Defeat |The latest steam release |Uses vgui2 library which xash3d does not support |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface | |1.4 |Has encrypted blob instead of normal client.dll. |You can try [this tool](https://aluigi.altervista.org/papers/hldlldec.zip) to decrypt client.dll but there no warranty if it works.
|Sven-Coop |5.0+ |Uses custom GoldSrc engine | | |1.5 |Has encrypted blob instead of normal client.dll. |Decrypted blob here: https://csm.dev/threads/cs-1-5-client-dll-decrypted-patched-for-usage.38845.
| |1.6(The latest steam release) |Uses vgui2 library which xash3d does not support. |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface. Recreated Client Source Code here: https://github.com/Velaron/cs16-client.
|Counter Strike: Condition Zero |The latest steam release |Uses vgui2 library which xash3d does not support. |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface. Recreated Client Source Code here: https://github.com/Velaron/cs16-client.
|Counter Strike: Condition Zero - Deleted scenes |The latest steam release |Uses vgui2 library which xash3d does not support. Uses new sequences code on engine-side that was never used in any other mods before. |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface.
|Day of Defeat |The latest steam release |Uses vgui2 library which xash3d does not support. |Some work on vgui2 support was made here: https://github.com/FWGS/xash3d/tree/vinterface.
|Half-Life: Extended |Day One demo |Uses many hooks to GoldSource engine and version check. |Just wait new version or use more old version.
|Icon of Hell |Beta 0.99 |Uses outdated BSP31 map format and paranoia 2 libraries. |You can try [this tool](https://hlfx.ru/forum/showthread.php?threadid=5250) to convert maps and use Paranoia 2: The Savior 1.51 libraries but there no warranty if it works.
|Paranoia 2: The Savior |All builds older 1.51 |Uses an old renderer interface and engine features. |
|Rebellion |1.0 |Uses an old WON HL 1.0.0.16- interface. |Recreated source code here: https://github.com/FWGS/hlsdk-portable/tree/rebellion.
|Sven-Coop |5.0+ |Uses custom GoldSrc engine. |
|Time Shadows |Beta 0.1 |Uses Direct3D renderer. |
+121 -17
View File
@@ -16,6 +16,9 @@ Mirrored on github - https://github.com/JoelTroch/am_src_rebirth
## Battle Grounds ## Battle Grounds
Mirrored on github - https://github.com/nekonomicon/BattleGrounds Mirrored on github - https://github.com/nekonomicon/BattleGrounds
## Brain Bread
Official github repository - https://github.com/IronOak-Studios/BrainBread
## Bubblemod ## Bubblemod
Download page on official site(WM snapshot) - [http://www.bubblemod.org/dl_default.php](https://web.archive.org/web/20130717133158/http://www.bubblemod.org/dl_default.php) Download page on official site(WM snapshot) - [http://www.bubblemod.org/dl_default.php](https://web.archive.org/web/20130717133158/http://www.bubblemod.org/dl_default.php)
@@ -32,29 +35,50 @@ Version 1.9 mirrored on github - https://github.com/solidi/hl-mods/tree/master/c
## Cold Ice Ressurection ## Cold Ice Ressurection
Mirrored on github - https://github.com/solidi/hl-mods/tree/master/cir Mirrored on github - https://github.com/solidi/hl-mods/tree/master/cir
## Counter-Life
Available on ModDB - https://www.moddb.com/mods/counter-life/downloads/cl-version-1-source-code
## Crack-Life Anniversary Campaign
Available on ModDB - https://www.moddb.com/mods/crack-life/downloads/crack-life-anniversary-campaign-sdk
## Cthulhu ## Cthulhu
Uploaded to github by Oleg Cherkasky - https://github.com/gunrunners-paradise/Cthulhu-HLmod-SDK Uploaded to github by Oleg Cherkasky - https://github.com/gunrunners-paradise/Cthulhu-HLmod-SDK
## Deathmatch Classic ## Deathmatch Classic
Available in Valve's Half-Life repository - https://github.com/ValveSoftware/halflife/tree/master/dmc Available in Valve's Half-Life repository - https://github.com/ValveSoftware/halflife/tree/master/dmc
## Delta Particles
Available on ModDB - https://www.moddb.com/mods/half-life-delta/downloads/delta-particles-full-sources-maps-and-c-code
## Earth Special Forces
Alpha 2.0 - https://www.gamers-desire.de/details/2830
## ESHQ ## ESHQ
Official github repository - https://github.com/adslbarxatov/xash3d-for-ESHQ Official github repository - https://github.com/adslbarxatov/xash3d-for-ESHQ
## Feline
Available on ModDB - https://www.moddb.com/mods/feline-10/downloads/feline-sdk
## Flat-Life ## Flat-Life
Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/Half-Life_2D_(Flat-Life) Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/Half-Life_2D_(Flat-Life)
## Gang Wars ## Gang Wars
Mirrored on github - https://github.com/nekonomicon/gw1.45src Mirrored on github - https://github.com/nekonomicon/gw1.45src
## Go-mod ## Go-Mod
Versions 2.0 and 3.0, available in mod archives on ModDB - https://www.moddb.com/mods/go-mod/downloads Versions 2.0 and 3.0, available in mod archives on ModDB - https://www.moddb.com/mods/go-mod/downloads
Version 3.0, mirrored on github - https://github.com/nekonomicon/Go-mod30 Version 3.0, mirrored on github - https://github.com/nekonomicon/Go-mod30
## Go-Mod: Reborn
Official github repository - https://github.com/LambdaLuke87/Go-Mod-Reborn-Lite-Build
## GT mod ## GT mod
Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/GT_mod_(Polnie_ishodniki) Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/GT_mod_(Polnie_ishodniki)
## Half-Force
Available on ModDB - https://www.moddb.com/mods/half-force/downloads/half-force-v20-sdk
## Half-Life: Advanced Deathmatch ## Half-Life: Advanced Deathmatch
Mirrored on github - https://github.com/solidi/hl-mods/tree/master/hla Mirrored on github - https://github.com/solidi/hl-mods/tree/master/hla
@@ -67,9 +91,21 @@ Available on ModDB - https://www.moddb.com/mods/half-life-echoes
## Half-Life: Expanded Arsenal ## Half-Life: Expanded Arsenal
Available on ModDB - https://www.moddb.com/mods/half-life-expanded-arsenal Available on ModDB - https://www.moddb.com/mods/half-life-expanded-arsenal
## Half-Life: Featureful
Branch **featureful** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful
## Half-Life: Field Intensity
Branch **field_intensity_1.7** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/field_intensity_1.7
## Half-Life: Gravgun mod ## Half-Life: Gravgun mod
Branch **gravgun** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/gravgun Branch **gravgun** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/gravgun
## Half-Life: Induction
Version 1.4: Branch **induction** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/induction
## Half-Life: Insecure
Version 1.5 is available on ModDB - https://www.moddb.com/mods/half-life-insecure/downloads/half-life-insecure-map-tools-and-source-code-ver-15
## Half-Life: Invasion ## Half-Life: Invasion
Official github repository - https://github.com/jlecorre/hlinvasion Official github repository - https://github.com/jlecorre/hlinvasion
@@ -79,6 +115,13 @@ Mirrored on github - https://github.com/solidi/hl-mods/tree/master/pong
## Half-Life: Quest Mode ## Half-Life: Quest Mode
Available on cs-mapping.com.ua - https://old.cs-mapping.com.ua/forum/showthread.php?t=38030 Available on cs-mapping.com.ua - https://old.cs-mapping.com.ua/forum/showthread.php?t=38030
## Half-Life: Sum
Original Version: Branch **sum_orig** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/sum_orig
Version 2022: Branch **sum_2022** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/sum_2022
Current Version: Branch **sum** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/sum
## Half-Life: Top-Down ## Half-Life: Top-Down
Official gitlab repository - https://gitlab.com/Sockman/hltopdown Official gitlab repository - https://gitlab.com/Sockman/hltopdown
@@ -88,6 +131,12 @@ Official github repository - https://github.com/Fograin/hl-subsmod-ex
## Half-Life: Rally ## Half-Life: Rally
Official gitlab repository - https://gitlab.com/hlrally/src Official gitlab repository - https://gitlab.com/hlrally/src
## Half-Life: Reprocessing
Official github repository - https://github.com/EgorYak/ReprocessingSourceCode
## Half-Life: RXT
Available on ModDB - https://www.moddb.com/mods/half-life-rxt/downloads/rxt-source-code-v57
## Half-Life: Weapon Edition ## Half-Life: Weapon Edition
Available on ModDB - https://www.moddb.com/mods/half-life-weapon-edition/downloads/half-life-weapon-edition-1508-alpha-open-src Available on ModDB - https://www.moddb.com/mods/half-life-weapon-edition/downloads/half-life-weapon-edition-1508-alpha-open-src
@@ -109,15 +158,28 @@ Official github repository - https://github.com/HeathGames/half_rats_parasomnia_
## Half-Screwed ## Half-Screwed
Official github repository - https://github.com/desukuran/half-screwed Official github repository - https://github.com/desukuran/half-screwed
## Halo: GoldSource
Available on ModDB - https://www.moddb.com/mods/halo-goldsrc/downloads/halo-gold-source-summer-2025-release-v10-sdk
## Headcrab Frenzy ## Headcrab Frenzy
Version 1.3 on ModDB - https://www.moddb.com/mods/headcrab-frenzy/downloads/headcrab-frenzy-13-beta-source-code Version 1.3 on ModDB - https://www.moddb.com/mods/headcrab-frenzy/downloads/headcrab-frenzy-13-beta-source-code
## Heart of Evil ## Heart of Evil
Mirrored on github - https://github.com/nekonomicon/HeartOfEvil Mirrored on github - https://github.com/nekonomicon/HeartOfEvil
Mirrored on github (Includes maps and models source files) - https://github.com/malortie/heart-of-evil-source-files
## Ingram Chillin' Mod ## Ingram Chillin' Mod
Official SourceForge repository - https://sourceforge.net/projects/icm-hl/ Official SourceForge repository - https://sourceforge.net/projects/icm-hl/
## Intense Force
Branch **intense_force** in halflife-featureful - https://github.com/FreeSlave/halflife-featureful/tree/intense_force
## Master Sword
Official github repository of Master Sword Classic - https://github.com/BerntA/MasterSwordClassic
Official github repository of Master Sword Rebirth - https://github.com/MSRevive/MasterSwordRebirth
## MechMod ## MechMod
Official github repository - https://github.com/vermagav/mechmod Official github repository - https://github.com/vermagav/mechmod
@@ -141,6 +203,9 @@ Prealpha, mirrored on github - https://github.com/a1batross/Paranoia2_ancient
Version 1.51, mirrored on github - https://github.com/a1batross/Paranoia2_original Version 1.51, mirrored on github - https://github.com/a1batross/Paranoia2_original
## Public Enemy
Official github repository - https://github.com/IronOak-Studios/Public-Enemy
## Raven City ## Raven City
*Unfinished mod* *Unfinished mod*
@@ -152,6 +217,9 @@ Available in Valve's Half-Life repository - https://github.com/ValveSoftware/hal
## Spirit of Half-Life ## Spirit of Half-Life
[Logic&Trick's](https://github.com/LogicAndTrick) mirror - https://files.logic-and-trick.com/#/Half-Life/Mods/Spirit%20of%20Half-Life [Logic&Trick's](https://github.com/LogicAndTrick) mirror - https://files.logic-and-trick.com/#/Half-Life/Mods/Spirit%20of%20Half-Life
## The Last Bullet
Official github repository - https://github.com/GT-Project-Cat/The-Last-Bullet-Updated-Code
## The Wastes ## The Wastes
Version 1.5: mirrored on code.idtech.space - https://code.idtech.space/vera/halflife-thewastes-sdk Version 1.5: mirrored on code.idtech.space - https://code.idtech.space/vera/halflife-thewastes-sdk
@@ -172,6 +240,22 @@ Mirrored on code.idtech.space - https://code.idtech.space/vera/halflife-wastelan
## Wizard Wars ## Wizard Wars
Download page on official site - http://www.thothie.com/ww/ Download page on official site - http://www.thothie.com/ww/
## Wrong Door
Available on ModDB - https://www.moddb.com/mods/wrong-door/downloads/wrong-door-sdk
## XDM
*This mod is opensource but access to source code is always rebus*
How to get sources of version 3.0.4.3:
Download SFX-archive from ModDB - https://www.moddb.com/mods/xdm/downloads/xdm3043
Extract it.
Open client.dll in HEX-editor and patch header - change `Win!` to `Rar!`
Extract it using unrar - password `iamtheone`
## XashXT ## XashXT
Mirrored on github - https://github.com/a1batross/XashXT_original Mirrored on github - https://github.com/a1batross/XashXT_original
@@ -180,6 +264,12 @@ Mirrored on github - https://github.com/a1batross/XashXT_original
[Logic&Trick's](https://github.com/LogicAndTrick) mirror - https://files.logic-and-trick.com/#/Half-Life/Mods/Spirit%20of%20Half-Life [Logic&Trick's](https://github.com/LogicAndTrick) mirror - https://files.logic-and-trick.com/#/Half-Life/Mods/Spirit%20of%20Half-Life
## Yet another PS2 Half-Life port
Official github repository - https://github.com/supadupaplex/ya-ps2hl-dll
## Zombie Panic!
Official github repository - https://github.com/Monochrome-Inc/ZombiePanic-HL
## Zombie-X ## Zombie-X
Available in mod archive on ModDB - https://www.moddb.com/mods/zombie-x-10-final/downloads/zombie-x-10-dle-beta6-last-version Available in mod archive on ModDB - https://www.moddb.com/mods/zombie-x-10-final/downloads/zombie-x-10-dle-beta6-last-version
@@ -196,7 +286,7 @@ Branch **redempt** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tr
OpenAG by YaLTeR - https://github.com/YaLTeR/OpenAG OpenAG by YaLTeR - https://github.com/YaLTeR/OpenAG
## Afraid of Monsters ## Afraid of Monsters
malortie's recreation - https://github.com/malortie/hl-aom malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-aom
Branch **aom** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aom Branch **aom** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aom
@@ -204,17 +294,17 @@ Branch **aom** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/a
Reverse-engineered code: branch **aomdc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aomdc Reverse-engineered code: branch **aomdc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aomdc
## Azure Sheep ## Azure Sheep
malortie's recreation - https://github.com/malortie/hl-asheep malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-asheep
Reverse-engineered code: branch **asheep** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/asheep Reverse-engineered code: branch **asheep** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/asheep
## Big Lolly ## Big Lolly
malortie's recreation - https://github.com/malortie/hl-biglolly malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-biglolly
Branch **biglolly** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/biglolly Branch **biglolly** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/biglolly
## Black Ops ## Black Ops
malortie's recreation - https://github.com/malortie/hl-blackops malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-blackops
Branch **blackops** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/blackops Branch **blackops** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/blackops
@@ -237,13 +327,16 @@ Reverse-engineered code of server part by s1lentq - https://github.com/s1lentq/R
## Counter Strike Online ## Counter Strike Online
CSO-like Xash3D-based mod, CSMoE - https://github.com/MoeMod/CSMoE CSO-like Xash3D-based mod, CSMoE - https://github.com/MoeMod/CSMoE
## Crack-Life
Reverse-engineered code: branch **cracklife** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/cracklife
## Crack-Life: Campaign Mode ## Crack-Life: Campaign Mode
Recreation by lostgamer aka nillerusr - https://github.com/LostGamerHL/crack_life Recreation by lostgamer aka nillerusr - https://github.com/LostGamerHL/crack_life
Reverse-engineered code: branch **clcampaign** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/clcampaign Reverse-engineered code: branch **clcampaign** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/clcampaign
## Escape from the Darkness ## Escape from the Darkness
malortie's recreation - https://github.com/malortie/hl-eftd malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-eftd
Reverse-engineered code: branch **eftd** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/eftd Reverse-engineered code: branch **eftd** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/eftd
@@ -258,7 +351,7 @@ Unkle Mike's recreation - https://hlfx.ru/forum/showthread.php?s=&threadid=5253
Reverse-engineered code: branch **bshift** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/bshift Reverse-engineered code: branch **bshift** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/bshift
## Half-Life: Induction ## Half-Life: Induction
Branch **induction** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/induction Version 1.0-1.2: Branch **induction_1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/induction_1.2
## Half-Life: Opposing Force ## Half-Life: Opposing Force
Recreation by lostgamer aka nillerusr - https://github.com/LostGamerHL/hlsdk-xash3d Recreation by lostgamer aka nillerusr - https://github.com/LostGamerHL/hlsdk-xash3d
@@ -274,7 +367,7 @@ Reverse-engineered code: branch **rebellion** in hlsdk-portable - https://github
Branch **hl_urbicide** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/hl_urbicide Branch **hl_urbicide** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/hl_urbicide
## Half-Life: Visitors ## Half-Life: Visitors
malortie's recreation - https://github.com/malortie/hl-visitors malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-visitors
Reverse-engineered code: branch **visitors** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/visitors Reverse-engineered code: branch **visitors** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/visitors
@@ -282,17 +375,17 @@ Reverse-engineered code: branch **visitors** in hlsdk-portable - https://github.
Branch **half-secret** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/half-secret Branch **half-secret** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/half-secret
## Night at the Office ## Night at the Office
malortie's recreation - https://github.com/malortie/hl-nato malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-nato
Branch **noffice** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/noffice Branch **noffice** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/noffice
## Poke 646 ## Poke 646
malortie's recreation - https://github.com/malortie/hl-poke646 malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-poke646
Reverse-engineered code: branch **poke646** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/poke646 Reverse-engineered code: branch **poke646** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/poke646
## Poke 646: Vendetta ## Poke 646: Vendetta
malortie's recreation - https://github.com/malortie/hl-poke646-vendetta malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-poke646-vendetta
Reverse-engineered code: branch **poke646_vendetta** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/poke646_vendetta Reverse-engineered code: branch **poke646_vendetta** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/poke646_vendetta
@@ -309,19 +402,19 @@ Branch **sewer_beta** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable
Reverse-engineered code by Velaron - https://github.com/Velaron/tf15-client Reverse-engineered code by Velaron - https://github.com/Velaron/tf15-client
## The Gate ## The Gate
malortie's recreation - https://github.com/malortie/hl-thegate malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-thegate
Reverse-engineered code: branch **thegate** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/thegate Reverse-engineered code: branch **thegate** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/thegate
## They Hunger ## They Hunger
malortie's recreation - https://github.com/malortie/hl-theyhunger malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-theyhunger
Reverse-engineered code: branch **theyhunger** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/theyhunger Reverse-engineered code: branch **theyhunger** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/theyhunger
They Hunger: Tactical - https://www.moddb.com/mods/they-hunger-tactical/downloads/tht-source-code-documentation They Hunger: Tactical - https://www.moddb.com/mods/they-hunger-tactical/downloads/tht-source-code-documentation
## Times of Troubles ## Times of Troubles
malortie's recreation - https://github.com/malortie/hl-tot malortie's recreation - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-tot
Branch **tot** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/tot Branch **tot** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/tot
@@ -332,6 +425,9 @@ Branch **aghl** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/
## Bubblemod ## Bubblemod
Branch **bubblemod** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/bubblemod Branch **bubblemod** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/bubblemod
## Counter-Life
Branch **counter-life** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/counter-life
## Deathmatch Classic ## Deathmatch Classic
Deathmatch Classic: Adrenaline Gamer Edition - https://github.com/martinwebrant/agmod/tree/master/src/dmc Deathmatch Classic: Adrenaline Gamer Edition - https://github.com/martinwebrant/agmod/tree/master/src/dmc
@@ -339,11 +435,17 @@ Deathmatch Quaked - https://www.moddb.com/games/deathmatch-classic/downloads/dmq
Branch **dmc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/dmc Branch **dmc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/dmc
## Delta Particles
Branch **delta_particles** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/delta_particles
## Half-Life: Echoes ## Half-Life: Echoes
Branch **echoes** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/echoes Branch **echoes** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/echoes
## Half-Life: Insecure
Branch **insecure** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/insecure
## Half-Life: Invasion ## Half-Life: Invasion
Port to HLSDK 2.4 by malortie - https://github.com/malortie/hl-invasion Port to HLSDK 2.4 by malortie - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-invasion
Port to Linux by fmoraw - https://github.com/fmoraw/hlinvasion Port to Linux by fmoraw - https://github.com/fmoraw/hlinvasion
@@ -362,7 +464,7 @@ Port to Linux - https://github.com/fmoraw/NS
Version 1.2: branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2 Version 1.2: branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2
## Swiss Cheese Halloween 2002 ## Swiss Cheese Halloween 2002
Just more playable version by malortie - https://github.com/malortie/hl-shall Just more playable version by malortie - https://github.com/HL1-Mods-Reimplementations-and-Ports/hl-shall
Branch **halloween** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/halloween Branch **halloween** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/halloween
@@ -375,6 +477,8 @@ Branch **dmc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/d
## Xen-Warrior ## Xen-Warrior
Branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2 Branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2
## Yet another PS2 Half-Life port
Branch **ps2hl** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/ps2hl
## Zombie-X ## Zombie-X
Branch **zombie-x** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/zombie-x Branch **zombie-x** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/zombie-x
+18 -13
View File
@@ -1,15 +1,15 @@
Xash3D FWGS is intended to be easily ported to specific platform, however main issue is maintaining such ports. Xash3D FWGS is intended to be easily portable for various platforms, however main issue is maintaining such ports.
This page is about merged ports to main source tree and responsible for it developers. This page is about merged ports to main source tree and responsible for it developers.
For porting guidelines, look engine-porting-guide.md. For porting guidelines, read engine-porting-guide.md.
Status: Status:
* **Supported**: active, was confirmed to be fully functional. * **Supported**: active, confirmed to be fully functional, gets built on CI.
* **Orphaned**: some work was done but not finished or actively tested due to lack of human resources.
* **In progress**: active, under development. * **In progress**: active, under development.
* **Old Engine**: port was for old engine fork * **Old Engine**: port was for old engine fork.
* **Not maintained**: lack of human resources * **Deprecated**: not supported anymore.
* **Deprecated**: not supported anymore
Table is sorted by status and platform. Table is sorted by status and platform.
@@ -17,17 +17,22 @@ Table is sorted by status and platform.
| -------- | ------ | ---------- | ---- | -------- | ------ | ---------- | ----
| Android | Supported | @Velaron | | Android | Supported | @Velaron |
| *BSD | Supported | @nekonomicon | | *BSD | Supported | @nekonomicon |
| DOS4GW | Supported | @mittorn |
| GNU/Linux | Supported | @a1batross, @mittorn | | GNU/Linux | Supported | @a1batross, @mittorn |
| Haiku | Supported | not maintained | Was added by #478 and #483
| macOS | Supported | @sofakng | | macOS | Supported | @sofakng |
| MotoMAGX | Supported | @a1batross |
| PSVita | Supported | @fgsfdsfgs | | PSVita | Supported | @fgsfdsfgs |
| Switch | Supported | @fgsfdsfgs | | Switch | Supported | @fgsfdsfgs |
| Windows | Supported | @a1batross, @SNMetamorph | | Windows | Supported | @a1batross, @SNMetamorph |
| iOS | Supported | @ksagameng2 |
| DOS4GW | Orphaned | N/A | Haven't been confirmed to work for a very long time
| Haiku | Orphaned | N/A | Was added by #478 and #483
| IRIX | Orphaned | N/A | Undone, compiles but requires big endian port
| MotoMAGX | Orphaned | N/A | Should work but the compiler used for this platform is very unstable and easy to crash (it's GCC 3.4)
| SerenityOS | Orphaned | N/A | Works but not throughly tested
| Solaris | Orphaned | N/A | Works but not throughly tested
| WebAssembly System Interface | Orphaned | N/A | Undone, WASI is missing a lot of APIs we want to use
| Dreamcast | In progress | @maximqaxd | [GitHub Repository](https://github.com/maximqaxd/xash3d-fwgs_dc/)
| PSP | In progress | @Crow_bar, @Velaron | [GitHub Repository](https://github.com/Crow-bar/xash3d-fwgs) | PSP | In progress | @Crow_bar, @Velaron | [GitHub Repository](https://github.com/Crow-bar/xash3d-fwgs)
| Wii | In progress | Collaborative effort | [GitHub Repository](https://github.com/saucesaft/xash3d-wii) | Wii | In progress | Collaborative effort | [GitHub Repository](https://github.com/saucesaft/xash3d-wii)
| Emscripten | Old Engine | not maintained | | Emscripten | Old Engine | N/A |
| 3DS | Old Engine fork | not maintained | [GitHub Repository](https://github.com/masterfeizz/Xash3DS) | 3DS | Old Engine fork | N/A | [GitHub Repository](https://github.com/masterfeizz/Xash3DS)
| Oculus Quest | Old Engine fork | @DrBeef | [GitHub Repository](https://github.com/DrBeef/Lambda1VR) | Oculus Quest | Old Engine fork | N/A | [GitHub Repository](https://github.com/DrBeef/Lambda1VR)
| iOS | Deprecated | not maintained | See GitHub issue #61
+11
View File
@@ -0,0 +1,11 @@
# Xash3D FWGS protocol support
Xash3D FWGS currently supports four network protocols:
* Version 49, introduced in Xash3D in around 2018.
* Version 48, used in Xash3D FWGS 0.19 and earlier. Deprecated and to be removed in the future.
* GoldSrc version 48, used in current GoldSource version.
* Quake version 15, only used for demo playback for Quake Wrapper mod.
On the server side, we only support Xash3D 49 protocol, but bugcomp `gsmrf` mode can convert GoldSrc 48 messages into Xash3D 49 on the fly, for some mods that directly write engine internal messages.
In the following documents we will only cover version 49, as everything else is either not Xash3D specific or deprecated.
+366
View File
@@ -0,0 +1,366 @@
# Xash3D 49 connectionless protocol
Connectionless protocol defines four common message sources and destinations, they can be:
* `S` for Server
* `C` for Client
* `M` for Master
* `A` for Anything else
All connectionless packets have `\xff\xff\xff\xff` (32-bit integer set to all ones) in it's header. Let's go through each of possible direction in this document.
<!--TOC-->
- [Any](#any)
- [Any to Any](#any-to-any)
- [`A2A_PING` and `A2A_GOLDSRC_PING`](#a2a_ping-and-a2a_goldsrc_ping)
- [`A2A_ACK` and `A2A_GOLDSRC_ACK`](#a2a_ack-and-a2a_goldsrc_ack)
- [Deprecated queries](#deprecated-queries)
- [`A2A_NETINFO`](#a2a_netinfo)
- [`A2A_INFO`](#a2a_info)
- [Any to Client](#any-to-client)
- [`A2C_PRINT` and `A2C_GOLDSRC_PRINT`](#a2c_print-and-a2c_goldsrc_print)
- [Any to Server and Server to Any](#any-to-server-and-server-to-any)
- [GoldSrc server queries](#goldsrc-server-queries)
- [`A2S_GOLDSRC_INFO`](#a2s_goldsrc_info)
- [`A2S_GOLDSRC_PLAYERS`](#a2s_goldsrc_players)
- [`A2S_GOLDSRC_RULES`](#a2s_goldsrc_rules)
- [Any to Master](#any-to-master)
- [`S2M_SCAN_REQUEST`](#s2m_scan_request)
- [Master to Any](#master-to-any)
- [`M2A_SERVERSLIST`](#m2a_serverslist)
- [Master and game server](#master-and-game-server)
- [Server to Master](#server-to-master)
- [`S2M_HEARTBEAT`](#s2m_heartbeat)
- [`S2M_SHUTDOWN`](#s2m_shutdown)
- [`S2M_INFO`](#s2m_info)
- [Master to Server](#master-to-server)
- [`M2S_CHALLENGE`](#m2s_challenge)
- [`M2S_NAT_CONNECT`](#m2s_nat_connect)
- [Client and game server](#client-and-game-server)
- [Client to Server](#client-to-server)
- [`C2S_BANDWIDTHTEST`](#c2s_bandwidthtest)
- [`C2S_GETCHALLENGE`](#c2s_getchallenge)
- [`C2S_CONNECT`](#c2s_connect)
- [Server to Client](#server-to-client)
- [`S2C_BANDWIDTHTEST`](#s2c_bandwidthtest)
- [`S2C_CHALLENGE`](#s2c_challenge)
- [`S2C_CONNECTION`](#s2c_connection)
- [`S2C_ERRORMSG`](#s2c_errormsg)
- [`S2C_REJECT`](#s2c_reject)
<!--TOC-->
## Any
### Any to Any
#### `A2A_PING` and `A2A_GOLDSRC_PING`
Simple ping message.
* Request, in ASCII: `ping` or `i` in GoldSrc format
* Response is always `A2A_ACK` or `A2A_GOLDSRC_ACK`
#### `A2A_ACK` and `A2A_GOLDSRC_ACK`
Simple ack message.
* Request, in ASCII: `ack` or `j` in GoldSrc format
* Response: none
#### Deprecated queries
These text-based Xash protocol queries are deprecated in favor of [GoldSrc server queries](#goldsrc-server-queries), which Xash3D FWGS servers implement as well. New implementations must not send them. The server still responds to `A2A_INFO` for compatibility with older clients, `A2A_NETINFO` is not handled anymore.
##### `A2A_NETINFO`
Used to implement Half-Life's NetAPI.
* Request message, in ASCII: `netinfo <version> <context> <request_id>`
- `version` must be 49, as text.
- `context` can be any 32-bit signed integer value, encoded as text.
- `request_id` see `common/net_api.h`
* Response message, in ASCII: `netinfo <context> <request_id> <response>`
- `context` same as in request.
- `request_id` same as in request.
- `response` is server's response, depending on request type. Always encoded as Quake info string.
Possible requests and response formats:
* Request ID `1` will make server respond with empty response string.
* Request ID `2` makes server respond with all server game rule cvars where the key is cvar name and the value is cvar value. One additional key `rules` with total amount of cvars is added.
* Request ID `3` makes server respond with players list, where:
- `p<id>name` is set to player's name
- `p<id>frags` is set to player's kill count
- `p<id>time` is set to player's total play time
- `players` is total player's list.
- Alternatively, it can respond with `neterror` set to `forbidden` if server does not wish to expose it's player list.
* Request ID `4` makes server to respond with common game details:
- `hostname` is server's name
- `gamedir` is game directory name
- `current` is total player count
- `max` is max players limit
- `map` is server's current level
* On any other server will respond with `neterror` set to `undefined`
* If protocol version doesn't match, server responds with `neterror` set to `protocol`
##### `A2A_INFO`
Used to request server's details.
* Request message, in ASCII: `info <version>`
- `version` must be 49, as text
* Response message, in ASCII: `info\n<response>`
- `response` is Quake info string, otherwise it's an error message.
* Response info string format:
- `p` is set to protocol version (FWGS extension)
- `map` is server's current level
- `dm` set to 1 if current game mode is deathmatch otherwise 0
- `team` set to 1 if current game mode includes teamplay otherwise 0
- `coop` set to 1 if current game mode is cooperative otherwise 0
- `numcl` is total player count
- `maxcl` is max players limit
- `gamedir` is game directory name
- `password` set to 1 if server is protected with password otherwise 0
- `host` is server's name
### Any to Client
#### `A2C_PRINT` and `A2C_GOLDSRC_PRINT`
Simple print message.
* Header: `\xff\xff\xff\xff`
* Request, in ASCII: `print <message>` or `l<message>` in GoldSrc format.
* Response: none
### Any to Server and Server to Any
#### GoldSrc server queries
These match Source Engine Query messages used in GoldSrc and Source engine and implemented for compatibility with existing server browsers and monitoring tools. The client uses them to query GoldSrc servers in the server browser, and as text-based Xash protocol queries are [deprecated](#deprecated-queries), it will use them to query Xash servers as well. Read documentation for them on VDC: https://developer.valvesoftware.com/wiki/Server_queries
Unlike other connectionless messages these are binary: integers are little-endian, floats are 32-bit IEEE 754 and strings are null-terminated.
`A2S_GOLDSRC_PLAYERS` and `A2S_GOLDSRC_RULES` requests carry a 32-bit challenge, `A2S_GOLDSRC_INFO` may have one appended after the query string. When no challenge is known yet, `\xff\xff\xff\xff` is sent in it's place. The server may answer with a challenge instead of the data: byte `A` (`0x41`) followed by a 32-bit challenge value, 9 bytes total with the header. The request is then repeated with the received challenge. Don't confuse this message with textual `S2C_GOLDSRC_CHALLENGE` used during connection, they only share the first byte.
Responses that don't fit into a single packet (usually rules) come from GoldSrc servers split into fragments. Such packets start with `\xfe\xff\xff\xff` instead of `\xff\xff\xff\xff`, followed by a 32-bit sequence number, same in all fragments of one response, and a byte with total fragment count in the lower 4 bits and this fragment's index in the upper 4 bits. Fragment payloads concatenated in index order form a normal `\xff\xff\xff\xff` message. Xash servers never split query responses and send them as single datagrams.
#### `A2S_GOLDSRC_INFO`
Used to request server's details.
* Request: `TSource Engine Query\0`, optionally followed by a 32-bit challenge. Xash servers ignore it.
* Response: byte `I` (`S2A_GOLDSRC_INFO`), followed by:
- byte: protocol version, 48 on GoldSrc, 49 on Xash3D FWGS
- string: server's name
- string: server's current level
- string: game directory name
- string: game description
- int16: Steam AppID, always 0 on Xash servers
- byte: total player count, bots included
- byte: max players limit
- byte: bot count
- byte: server type, `d` for dedicated or `l` for listen server
- byte: server's operating system, `w` for Windows, `l` for Linux, `m` for macOS
- byte: set to 1 if server is protected with password otherwise 0
- byte: set to 1 if server is VAC secured, Xash servers put the `secure` value from gameinfo here
- string: server's version
Same as the Source engine response format but without the extra data flag and its fields.
Legacy GoldSrc servers respond with the obsolete `m` format (`S2A_GOLDSRC_LEGACY_INFO`) instead, see VDC for its layout. Xash servers never send it but the client understands it and assumes protocol 48.
#### `A2S_GOLDSRC_PLAYERS`
Used to request server's player list.
* Request: byte `U` (`0x55`), then a 32-bit challenge.
* Response: byte `D` (`S2A_GOLDSRC_PLAYERS`), followed by a byte with total player count, then for each player:
- byte: player's index. Xash servers send sequential indexes starting from 0, GoldSrc servers always send 0 here.
- string: player's name
- int32: player's kill count
- float: time in seconds the player is connected, -1.0 for bots on Xash servers
Xash server doesn't respond at all if the player list is empty, the server is protected with password or exposing the player list is disabled with `sv_expose_player_list` cvar.
#### `A2S_GOLDSRC_RULES`
Used to request server's game rules.
* Request: byte `V` (`0x56`), then a 32-bit challenge.
* Response: byte `E` (`S2A_GOLDSRC_RULES`), followed by an int16 with total rule count, then rule name and rule value strings for each.
Only server cvars (`FCVAR_SERVER`) are sent. Values of protected cvars (`FCVAR_PROTECTED`) are replaced with `1` if the value is set otherwise `0`. If there are no cvars to expose, server doesn't respond at all.
### Any to Master
#### `S2M_SCAN_REQUEST`
* Request: `1<region><IP:Port>\0<info>`
- Format of this message is loosely based on https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol
- `info` however adds few additional fields:
- `clver` set to engine's version
- `nat` set to 1 to filter only servers behind NAT and tell master to notify servers about scan
- `commit` set to engine's build commit hash
- `branch` set to engine's build branch
- `os` set to which operating system engine has been built
- `arch` set to which CPU architecture engine has been built
- `buildnum` set to engine's build number
- `key` set to random 32-bit value formatted as hex, used to validate master responses
* Response: `M2A_SERVERSLIST`
### Master to Any
#### `M2A_SERVERSLIST`
* Request: `f\xff<key><reserved><IP:Port>...`
- `key` is random 32-bit value set in `S2M_SCAN_REQUEST`
- `reserved` is single reserved 8-bit byte
- Following is list of IP addresses in binary form: 6-bytes for IPv4 address + port and 18-bytes for IPv6 address + port
- If port is 0, it means the end of list, otherwise it's the last IP used for pagination (not implemented in Xash3D)
* Response: client doesn't make response to master server but might request `A2S_GOLDSRC_INFO` from servers
## Master and game server
### Server to Master
#### `S2M_HEARTBEAT`
Used to update game server information on the master server.
* Request: `q\xff<heartbeat challenge>`
- `heartbeat challenge` is random 32-bit value, used to prevent faked/forged source IP addresses.
* Response: `M2S_CHALLENGE`
#### `S2M_SHUTDOWN`
Used to notify master server about server shutdown, but due to security reasons must be ignored by any master implementation.
* Request: `\x62\x0a`
* Response: none
#### `S2M_INFO`
Game server info response on `M2S_CHALLENGE`.
* Request: `0\n<info>`
- `info` is Quake info string containing server information passed to master server. It contains following fields:
- `protocol` is always 49
- `challenge` is master challenge
- `players` is total player count, without bots
- `max` is max players limits
- `bots` is total bot count
- `gamedir` is set to game directory
- `map` is server's current level
- `type` set to `d` for dedicated or `l` for listen server
- `password` set to `1` if server protected with password set otherwise `0`
- `os` always `w`
- `secure` always `0`
- `lan` always `0`
- `version` engine version
- `region` always `255`
- `product` same as `gamedir`
- `nat` set to `1` if server is behind NAT
* Response: none
### Master to Server
#### `M2S_CHALLENGE`
Master's respoonse on game server's heartbeat message.
* Request: `s<master challenge><heartbeat challenge>`
- `master challenge` contains 32-bit value, used in server response to prevent faked/forged source IP addresses.
- `heartbat challenge` cotnains 32-bit value, used in heartbeat request to prevent faked/forged source IP addresses.
* Response: `S2M_INFO`.
#### `M2S_NAT_CONNECT`
Master server's message with client IP address and port, used in NAT punching.
* Request: `c <IP:Port>`
* Response: `S2C_INFO` to a specified client address.
## Client and game server
### Client to Server
#### `C2S_BANDWIDTHTEST`
Used to figure out network MTU. The message is optional and server might choose to not implement it or respond with challenge.
* Request, in ASCII: `bandwidth <version> <max_size>`
- `version` must be 49, as text.
- `max_size` is requested maximum packet size.
* Possible responses:
- `S2C_BANDWIDTHTEST`
- `S2C_CHALLENGE`
- `A2A_PRINT` followed by `S2C_REJECT`
- `S2C_ERRORMSG` (as FWGS extension) followed by `A2A_PRINT` and `S2C_REJECT`.
#### `C2S_GETCHALLENGE`
Used to validate client's address to prevent faked/forged source IP addresses.
* Header: `\xff\xff\xff\xff`
* Request, in ASCII: `getchallenge steam`
- `steam` argument is optional and can be ignored by the server, as it's only kept for compatibility with similar GoldSrc 48 message.
* Possible responses:
- `S2C_CHALLENGE`
#### `C2S_CONNECT`
Used to build a connection with the server.
* Header: `\xff\xff\xff\xff`
* Request, in ASCII: `connect <version> <challenge> "<protinfo>" "<userinfo>"`
- `version` must be 49, as text.
- `challenge` must be challenge value, as text.
- `protinfo` is a Quake info string, containing protocol extensions and other connection information.
- `uuid` is this client's unique ID (FWGS extension) hasheed with MD5.
- `qport` is random integer value from 1 to 65535, unique for this engine run.
- `ext` is an integer value OR'ed with requested protocol extensions. Currently only extension is `NET_EXT_SPLITSIZE` with the value of `1`, which tells server to split messages based on `cl_dlmax` value from `userinfo`.
- `userinfo` contains initial user info, encoded as Quake info string.
* Possible responses:
- `A2A_PRINT` followed by `S2C_REJECT`
- `S2C_ERRORMSG` (as FWGS extension) followed by `A2A_PRINT` and `S2C_REJECT`.
- `S2C_CONNECTION`
### Server to Client
#### `S2C_BANDWIDTHTEST`
* Request: `testpacket<crc><blob>`
- `crc` is 32-bit CRC of `blob`
- `blob` random data
* There is no required response to this message
Total message size doesn't exceed request max size.
#### `S2C_CHALLENGE`
* Request, in ASCII: `challenge <value>`
- `value` is challenge value that client must include in it's response
* Response: `C2S_CONNECT`
#### `S2C_CONNECTION`
* Request, in ASCII: `client_connect <protinfo>`
- `protinfo` is an optional Quake info string, contains following optional fields:
- `ext` is an integer value OR'ed with allowed protocol extension. Bit fields match requested in `ext` field in `C2S_CONNECT`
- `cheats` set to 1 if server allows cheats otherwise 0
* Response: there is no out of band from the client but client will proceed to building netchan and switch client-server interaction to it.
#### `S2C_ERRORMSG`
Show client error message. Doesn't mean connection reject, only used for UI.
* Request, in ASCII: `errormsg <message>`
- `message` contains error message
* Response: none
#### `S2C_REJECT`
Client has been rejected in connection.
* Request, in ASCII: `disconnect`
* Response: client can cope, get depressed or mentally tell server to fuck off.
+3
View File
@@ -0,0 +1,3 @@
# Xash3D 49 netchan protocol
TBD...
@@ -0,0 +1,72 @@
# Static HTTP server list
Replacement for the UDP `S2M_SCAN_REQUEST` / `M2A_SERVERSLIST` exchange
described in [02-connectionless.md](02-connectionless.md). Read-only HTTP,
no NAT punching, no filtering or pagination in the request.
## URL
`xashcomm.lst` carries a base URL per source:
```
masterstatic http://master.example.org/server-list
```
The engine appends `/v1/servers/<gamedir>` and `GET`s the result. For
`gamedir = valve`:
```
GET http://master.example.org/server-list/v1/servers/valve
```
Trailing slashes on the base URL are stripped. Multiple `masterstatic`
lines are allowed; results are merged.
The request is bare: no body, no auth, no cookies, no compressed encodings.
Only the standard `User-Agent` is set. `POST` / `PUT` / `DELETE` are not
used; servers register out of band.
## Response
UTF-8 text, parsed line by line. Each line is tokenized with
`COM_ParseFileSafe` (whitespace separates, `//` and `#` start line
comments, `"..."` quotes a token). Blank lines and comment-only lines
are ignored. One directive per line:
* `ip <address>` — Xash3D server (protocol 49).
* `gs <address>` — GoldSrc server (protocol 48).
`<address>` is parsed by `NET_StringToAdr` (`1.2.3.4:27015`,
`[2001:db8::1]:27015`, hostnames). Port defaults to `27015`. Lines
starting with an unknown directive are skipped entirely, so new keywords
with any number of operands can be added without breaking older clients.
`Content-Type` is not inspected, `text/plain; charset=utf-8` expected.
### Example
```
# diffusion servers
ip 192.0.2.10:27015
ip [2001:db8::1]:27015
gs 198.51.100.5:27015
```
A file with zero records is valid and represents an empty list.
### Versioning
The `/v1/` segment is fixed in this revision. A future protocol revision
adds a sibling `/v2/...` resource without breaking older clients.
## Client behaviour
Each `ip` / `gs` record from the response triggers a probe to the listed
address, identical to a server discovered through the UDP master. DNS
errors, non-200 responses, and malformed bodies are reported to the
console.
## Server behaviour
Any static HTTP server works. A typical setup is a periodic job that
probes a set of known addresses and writes `v1/servers/<gamedir>`.
+4 -1
View File
@@ -2,11 +2,14 @@
### Prerequisites ### Prerequisites
1. Make sure your PSVita is [set up to run homebrew applications](https://vita.hacks.guide/). 1. Make sure your PSVita is [set up to run homebrew applications](https://vita.hacks.guide/).
2. Install [kubridge](https://github.com/TheOfficialFloW/kubridge/releases/) by copying `kubridge.suprx` to your taiHEN plugins folder (usually `ux0:/tai`) and add it to your `config.txt`, for example: 2. Install [kubridge](https://github.com/TheOfficialFloW/kubridge/releases/). It is recommended to use kubridge version `0.1`, because other versions aren't tested, we don't know are they suitable or not.
Worth to notice, we got reports that automatic plugins management app EasyPlugin have issues with installing kubridge plugin, so it's better to install it manually: by copying `kubridge.suprx` to your taiHEN plugins folder (usually `ux0:/tai`, but could be `ur0:/tai`) and add it to your `config.txt`, for example:
``` ```
*KERNEL *KERNEL
ux0:tai/kubridge.skprx ux0:tai/kubridge.skprx
``` ```
3. Install `libshacccg.suprx` by following [this guide](https://cimmerian.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx). 3. Install `libshacccg.suprx` by following [this guide](https://cimmerian.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx).
### Installation ### Installation
@@ -1,15 +0,0 @@
As online community is growing, we don't want to keep bad or invalid servers on the Internet Games list. It's a common rules for all Xash3D server owners who are using default master server.
1. Breaking master server or clients is prohibited in any way. If you found a serious bug, contact us at contact 'at' fwgs.ru or post an issue at GitHub.
2. Changing settings, exploiting vulnerabilities of clients is prohibited in any way. If you found a serious bug, contact us at contact 'at' fwgs.ru or post an issue at GitHub.
2. Agressive advertisement and spam on other servers is prohibited in any way.
3. If your server is require downloading custom content, it should be available for everyone. Recommended way to deliver custom content is FastDL.
4. It's recommended to keep your server is up-to-date. You may use our public Debian/Ubuntu/Arch Linux [repository](https://github.com/FWGS/xash3d/wiki/How-to-set-up-a-Xash3D-Dedicated-Server-on-Debian-or-Ubuntu) to simplify updating process.
Just follow these rules to not get banned on our master server. Good luck, have fun!

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