Full Code of w23/xash3d-fwgs for AI

vulkan 700218fbc8b8 cached
1012 files
8.0 MB
2.1M tokens
7954 symbols
1 requests
Download .txt
Showing preview only (8,534K chars total). Download the full file or copy to clipboard to get everything.
Repository: w23/xash3d-fwgs
Branch: vulkan
Commit: 700218fbc8b8
Files: 1012
Total size: 8.0 MB

Directory structure:
gitextract_lutwbsjd/

├── .cirrus.yml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── crash-report.md
│   │   └── visual-glitches-report.md
│   └── workflows/
│       └── c-cpp.yml
├── .gitignore
├── .gitmodules
├── 3rdparty/
│   ├── bzip2/
│   │   └── wscript
│   ├── extras/
│   │   └── wscript
│   ├── gl4es/
│   │   └── wscript
│   ├── libbacktrace/
│   │   └── wscript
│   ├── libogg/
│   │   └── wscript
│   ├── opus/
│   │   └── wscript
│   ├── opusfile/
│   │   └── wscript
│   └── vorbis/
│       └── wscript
├── CONTRIBUTING.md
├── Documentation/
│   ├── bug-compatibility.md
│   ├── cross-compiling-for-windows-with-wine.md
│   ├── debugging-using-minidumps.md
│   ├── donate.md
│   ├── engine-porting-guide.md
│   ├── environment-variables.md
│   ├── extensions/
│   │   ├── addon-folders.md
│   │   ├── console-scripting.md
│   │   ├── entity-tools.md
│   │   ├── expanded-common-structures.md
│   │   ├── input-interface-ru.md
│   │   ├── input-interface.md
│   │   ├── library-naming.md
│   │   ├── mp3-loops.md
│   │   ├── native-object.md
│   │   └── sounds.lst.md
│   ├── gameinfo.md
│   ├── goldsrc-protocol-support.md
│   ├── hd-textures.md
│   ├── mod-porting-guide.md
│   ├── musl.md
│   ├── nat-bypass-usage.md
│   ├── not-supported-mod-list-and-reasons-why.md
│   ├── opensource-mods.md
│   ├── ports.md
│   ├── psvita.md
│   ├── supported-mod-list.md
│   └── touch-controls.md
├── README.md
├── android/
│   ├── .gitignore
│   ├── app/
│   │   ├── build.gradle.kts
│   │   ├── proguard-rules.pro
│   │   ├── run-python
│   │   ├── run-python.bat
│   │   └── src/
│   │       ├── asan/
│   │       │   ├── res/
│   │       │   │   └── values/
│   │       │   │       └── strings.xml
│   │       │   └── resources/
│   │       │       └── lib/
│   │       │           ├── arm64-v8a/
│   │       │           │   └── wrap.sh
│   │       │           ├── armeabi-v7a/
│   │       │           │   └── wrap.sh
│   │       │           └── x86_64/
│   │       │               └── wrap.sh
│   │       ├── continuous/
│   │       │   └── res/
│   │       │       └── values/
│   │       │           └── strings.xml
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           ├── java/
│   │           │   └── su/
│   │           │       └── xash/
│   │           │           └── engine/
│   │           │               ├── DedicatedActivity.kt
│   │           │               ├── DedicatedService.kt
│   │           │               ├── MainActivity.kt
│   │           │               ├── MainApplication.kt
│   │           │               ├── XashActivity.java
│   │           │               ├── adapters/
│   │           │               │   └── GameAdapter.kt
│   │           │               ├── model/
│   │           │               │   ├── BackgroundBitmap.kt
│   │           │               │   └── Game.kt
│   │           │               ├── ui/
│   │           │               │   ├── library/
│   │           │               │   │   ├── LibraryFragment.kt
│   │           │               │   │   └── LibraryViewModel.kt
│   │           │               │   └── settings/
│   │           │               │       ├── AppSettingsFragment.kt
│   │           │               │       ├── AppSettingsPreferenceFragment.kt
│   │           │               │       ├── GameSettingsFragment.kt
│   │           │               │       └── GameSettingsPreferenceFragment.kt
│   │           │               └── util/
│   │           │                   ├── AndroidBug5497Workaround.java
│   │           │                   └── TGAReader.java
│   │           └── res/
│   │               ├── drawable/
│   │               │   ├── ic_baseline_add_24.xml
│   │               │   ├── ic_baseline_delete_24.xml
│   │               │   ├── ic_baseline_folder_open_24.xml
│   │               │   ├── ic_baseline_play_arrow_24.xml
│   │               │   ├── ic_baseline_settings_24.xml
│   │               │   └── ic_baseline_terminal_24.xml
│   │               ├── layout/
│   │               │   ├── activity_main.xml
│   │               │   ├── card_game.xml
│   │               │   ├── edit_text_preference.xml
│   │               │   ├── fragment_app_settings.xml
│   │               │   ├── fragment_game_settings.xml
│   │               │   ├── fragment_library.xml
│   │               │   ├── list_preference.xml
│   │               │   └── switch_preference.xml
│   │               ├── menu/
│   │               │   ├── menu_game_settings.xml
│   │               │   └── menu_library.xml
│   │               ├── mipmap-anydpi-v26/
│   │               │   ├── ic_launcher.xml
│   │               │   ├── ic_launcher_foreground.xml
│   │               │   ├── ic_launcher_monochrome.xml
│   │               │   └── ic_launcher_round.xml
│   │               ├── navigation/
│   │               │   └── nav_graph.xml
│   │               ├── values/
│   │               │   ├── colors.xml
│   │               │   ├── ic_launcher_background.xml
│   │               │   ├── strings.xml
│   │               │   ├── styles.xml
│   │               │   └── themes.xml
│   │               ├── values-es/
│   │               │   └── strings.xml
│   │               ├── values-pt-rBR/
│   │               │   └── strings.xml
│   │               ├── values-ru/
│   │               │   └── strings.xml
│   │               └── xml/
│   │                   ├── app_preferences.xml
│   │                   └── game_preferences.xml
│   ├── build.gradle.kts
│   ├── debug.keystore
│   ├── gradle/
│   │   ├── libs.versions.toml
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   └── settings.gradle.kts
├── common/
│   ├── backends.h
│   ├── beamdef.h
│   ├── bspfile.h
│   ├── cl_entity.h
│   ├── com_image.h
│   ├── com_model.h
│   ├── con_nprint.h
│   ├── const.h
│   ├── cvardef.h
│   ├── defaults.h
│   ├── demo_api.h
│   ├── dlight.h
│   ├── enginefeatures.h
│   ├── entity_state.h
│   ├── entity_types.h
│   ├── event_api.h
│   ├── event_args.h
│   ├── event_flags.h
│   ├── gameinfo.h
│   ├── hltv.h
│   ├── ivoicetweak.h
│   ├── kbutton.h
│   ├── lightstyle.h
│   ├── mathlib.h
│   ├── net_api.h
│   ├── netadr.h
│   ├── particledef.h
│   ├── pmtrace.h
│   ├── port.h
│   ├── qfont.h
│   ├── r_efx.h
│   ├── r_studioint.h
│   ├── ref_device.h
│   ├── ref_params.h
│   ├── render_api.h
│   ├── screenfade.h
│   ├── studio_event.h
│   ├── synctype.h
│   ├── triangleapi.h
│   ├── usercmd.h
│   ├── wadfile.h
│   ├── weaponinfo.h
│   ├── wrect.h
│   └── xash3d_types.h
├── engine/
│   ├── alias.h
│   ├── anorms.h
│   ├── cdll_exp.h
│   ├── cdll_int.h
│   ├── client/
│   │   ├── avi/
│   │   │   ├── avi.h
│   │   │   ├── avi_ffmpeg.c
│   │   │   └── avi_ffmpeg.h
│   │   ├── cl_cmds.c
│   │   ├── cl_custom.c
│   │   ├── cl_debug.c
│   │   ├── cl_demo.c
│   │   ├── cl_efrag.c
│   │   ├── cl_efx.c
│   │   ├── cl_events.c
│   │   ├── cl_font.c
│   │   ├── cl_frame.c
│   │   ├── cl_game.c
│   │   ├── cl_gameui.c
│   │   ├── cl_main.c
│   │   ├── cl_mobile.c
│   │   ├── cl_netgraph.c
│   │   ├── cl_parse.c
│   │   ├── cl_parse_48.c
│   │   ├── cl_parse_gs.c
│   │   ├── cl_pmove.c
│   │   ├── cl_qparse.c
│   │   ├── cl_remap.c
│   │   ├── cl_render.c
│   │   ├── cl_scrn.c
│   │   ├── cl_securedstub.c
│   │   ├── cl_spray.c
│   │   ├── cl_tent.c
│   │   ├── cl_tent.h
│   │   ├── cl_video.c
│   │   ├── cl_view.c
│   │   ├── client.h
│   │   ├── console.c
│   │   ├── gamma.c
│   │   ├── identification.c
│   │   ├── in_joy.c
│   │   ├── in_touch.c
│   │   ├── input.c
│   │   ├── input.h
│   │   ├── keys.c
│   │   ├── mod_dbghulls.c
│   │   ├── ref_common.c
│   │   ├── ref_common.h
│   │   ├── s_dsp.c
│   │   ├── s_load.c
│   │   ├── s_main.c
│   │   ├── s_mix.c
│   │   ├── s_mouth.c
│   │   ├── s_stream.c
│   │   ├── s_utils.c
│   │   ├── s_vox.c
│   │   ├── sound.h
│   │   ├── soundlib/
│   │   │   ├── libmpg/
│   │   │   │   ├── dct36.c
│   │   │   │   ├── dct64.c
│   │   │   │   ├── fmt123.h
│   │   │   │   ├── format.c
│   │   │   │   ├── frame.c
│   │   │   │   ├── frame.h
│   │   │   │   ├── getbits.h
│   │   │   │   ├── huffman.h
│   │   │   │   ├── index.c
│   │   │   │   ├── index.h
│   │   │   │   ├── layer3.c
│   │   │   │   ├── libmpg.c
│   │   │   │   ├── libmpg.dsp
│   │   │   │   ├── libmpg.h
│   │   │   │   ├── mpeghead.h
│   │   │   │   ├── mpg123.c
│   │   │   │   ├── mpg123.h
│   │   │   │   ├── parse.c
│   │   │   │   ├── reader.c
│   │   │   │   ├── reader.h
│   │   │   │   ├── sample.h
│   │   │   │   ├── synth.c
│   │   │   │   ├── synth.h
│   │   │   │   └── tabinit.c
│   │   │   ├── ogg_filestream.c
│   │   │   ├── ogg_filestream.h
│   │   │   ├── snd_main.c
│   │   │   ├── snd_mp3.c
│   │   │   ├── snd_ogg_opus.c
│   │   │   ├── snd_ogg_vorbis.c
│   │   │   └── snd_wav.c
│   │   ├── titles.c
│   │   ├── vgui/
│   │   │   ├── vgui_draw.c
│   │   │   └── vgui_draw.h
│   │   ├── vid_common.c
│   │   ├── vid_common.h
│   │   ├── voice.c
│   │   ├── voice.h
│   │   └── vox.h
│   ├── common/
│   │   ├── base_cmd.c
│   │   ├── base_cmd.h
│   │   ├── cfgscript.c
│   │   ├── cmd.c
│   │   ├── com_strings.h
│   │   ├── common.c
│   │   ├── common.h
│   │   ├── con_utils.c
│   │   ├── custom.c
│   │   ├── cvar.c
│   │   ├── cvar.h
│   │   ├── dedicated.c
│   │   ├── filesystem_engine.c
│   │   ├── host.c
│   │   ├── host_state.c
│   │   ├── hpak.c
│   │   ├── hpak.h
│   │   ├── imagelib/
│   │   │   ├── imagelib.h
│   │   │   ├── img_bmp.c
│   │   │   ├── img_bmp.h
│   │   │   ├── img_dds.c
│   │   │   ├── img_dds.h
│   │   │   ├── img_ktx2.c
│   │   │   ├── img_ktx2.h
│   │   │   ├── img_main.c
│   │   │   ├── img_png.c
│   │   │   ├── img_png.h
│   │   │   ├── img_quant.c
│   │   │   ├── img_tga.c
│   │   │   ├── img_tga.h
│   │   │   ├── img_utils.c
│   │   │   └── img_wad.c
│   │   ├── infostring.c
│   │   ├── ipv6text.c
│   │   ├── ipv6text.h
│   │   ├── launcher.c
│   │   ├── lib_common.c
│   │   ├── library.h
│   │   ├── masterlist.c
│   │   ├── mod_alias.c
│   │   ├── mod_bmodel.c
│   │   ├── mod_local.h
│   │   ├── mod_sprite.c
│   │   ├── mod_studio.c
│   │   ├── model.c
│   │   ├── munge.c
│   │   ├── net_buffer.c
│   │   ├── net_buffer.h
│   │   ├── net_chan.c
│   │   ├── net_encode.c
│   │   ├── net_encode.h
│   │   ├── net_http.c
│   │   ├── net_ws.c
│   │   ├── net_ws.h
│   │   ├── net_ws_private.h
│   │   ├── netchan.h
│   │   ├── pm_local.h
│   │   ├── pm_surface.c
│   │   ├── pm_trace.c
│   │   ├── protocol.h
│   │   ├── soundlib/
│   │   │   ├── snd_utils.c
│   │   │   └── soundlib.h
│   │   ├── sounds.c
│   │   ├── sys_con.c
│   │   ├── system.c
│   │   ├── system.h
│   │   ├── tests.h
│   │   ├── whereami.c
│   │   ├── whereami.h
│   │   ├── world.c
│   │   ├── world.h
│   │   └── zone.c
│   ├── cursor_type.h
│   ├── custom.h
│   ├── customentity.h
│   ├── edict.h
│   ├── eiface.h
│   ├── key_modifiers.h
│   ├── keydefs.h
│   ├── menu_int.h
│   ├── mobility_int.h
│   ├── physint.h
│   ├── platform/
│   │   ├── android/
│   │   │   ├── android.c
│   │   │   ├── dlsym-weak.c
│   │   │   ├── dlsym-weak.h
│   │   │   ├── lib_android.c
│   │   │   ├── lib_android.h
│   │   │   └── linker.h
│   │   ├── apple/
│   │   │   ├── lib_ios.c
│   │   │   └── lib_ios.h
│   │   ├── dos/
│   │   │   ├── in_dos.c
│   │   │   ├── ld.sh
│   │   │   ├── objcopy.sh
│   │   │   ├── sys_dos.c
│   │   │   └── vid_dos.c
│   │   ├── irix/
│   │   │   ├── dladdr.c
│   │   │   ├── dladdr.h
│   │   │   └── xash-exec
│   │   ├── linux/
│   │   │   ├── in_evdev.c
│   │   │   ├── s_alsa.c
│   │   │   ├── sys_linux.c
│   │   │   └── vid_fbdev.c
│   │   ├── misc/
│   │   │   ├── kmalloc.c
│   │   │   ├── lib_static.c
│   │   │   ├── sbrk.c
│   │   │   └── swap.h
│   │   ├── nswitch/
│   │   │   ├── sys_nswitch.c
│   │   │   └── xash3d-fwgs.nacp
│   │   ├── platform.h
│   │   ├── posix/
│   │   │   ├── con_posix.c
│   │   │   ├── crash.h
│   │   │   ├── crash_glibc.c
│   │   │   ├── crash_libbacktrace.c
│   │   │   ├── crash_posix.c
│   │   │   ├── lib_posix.c
│   │   │   ├── net.h
│   │   │   └── sys_posix.c
│   │   ├── psvita/
│   │   │   ├── in_psvita.c
│   │   │   ├── net_psvita.h
│   │   │   ├── sce_sys/
│   │   │   │   └── livearea/
│   │   │   │       └── contents/
│   │   │   │           └── template.xml
│   │   │   └── sys_psvita.c
│   │   ├── sdl1/
│   │   │   ├── host_sdl1.c
│   │   │   ├── in_sdl1.c
│   │   │   ├── platform_sdl1.h
│   │   │   ├── s_sdl1.c
│   │   │   ├── sys_sdl1.c
│   │   │   └── vid_sdl1.c
│   │   ├── sdl2/
│   │   │   ├── host_sdl2.c
│   │   │   ├── in_sdl2.c
│   │   │   ├── joy_sdl2.c
│   │   │   ├── platform_sdl2.h
│   │   │   ├── s_sdl2.c
│   │   │   ├── sys_sdl2.c
│   │   │   └── vid_sdl2.c
│   │   ├── sdl3/
│   │   │   ├── in_sdl3.c
│   │   │   ├── platform_sdl3.h
│   │   │   └── sys_sdl3.c
│   │   ├── stub/
│   │   │   ├── net_stub.h
│   │   │   └── s_stub.c
│   │   └── win32/
│   │       ├── con_win.c
│   │       ├── crash_win.c
│   │       ├── lib_custom_win.c
│   │       ├── lib_win.c
│   │       ├── lib_win.h
│   │       ├── net.h
│   │       └── sys_win.c
│   ├── progdefs.h
│   ├── ref_api.h
│   ├── ref_vulkan.h
│   ├── server/
│   │   ├── server.h
│   │   ├── sv_client.c
│   │   ├── sv_cmds.c
│   │   ├── sv_custom.c
│   │   ├── sv_filter.c
│   │   ├── sv_frame.c
│   │   ├── sv_game.c
│   │   ├── sv_init.c
│   │   ├── sv_log.c
│   │   ├── sv_main.c
│   │   ├── sv_move.c
│   │   ├── sv_phys.c
│   │   ├── sv_pmove.c
│   │   ├── sv_query.c
│   │   ├── sv_save.c
│   │   └── sv_world.c
│   ├── shake.h
│   ├── sprite.h
│   ├── studio.h
│   ├── vgui_api.h
│   ├── warpsin.h
│   └── wscript
├── filesystem/
│   ├── VFileSystem009.cpp
│   ├── VFileSystem009.h
│   ├── android.c
│   ├── dir.c
│   ├── exports.txt
│   ├── filesystem.c
│   ├── filesystem.h
│   ├── filesystem_internal.h
│   ├── fscallback.h
│   ├── pak.c
│   ├── tests/
│   │   ├── caseinsensitive.c
│   │   ├── interface.cpp
│   │   └── no-init.c
│   ├── wad.c
│   ├── wscript
│   └── zip.c
├── game_launch/
│   ├── game.cpp
│   ├── game.rc
│   └── wscript
├── pm_shared/
│   ├── pm_defs.h
│   ├── pm_info.h
│   └── pm_movevars.h
├── public/
│   ├── build.c
│   ├── build.h
│   ├── build_vcs.c
│   ├── buildenums.h
│   ├── crclib.c
│   ├── crclib.h
│   ├── crtlib.c
│   ├── crtlib.h
│   ├── dllhelpers.c
│   ├── getopt.c
│   ├── getopt.h
│   ├── ktx2.h
│   ├── matrixlib.c
│   ├── miniz.c
│   ├── miniz.h
│   ├── pstdint.h
│   ├── tests/
│   │   ├── test_atoi.c
│   │   ├── test_build.c
│   │   ├── test_efp.c
│   │   ├── test_filebase.c
│   │   ├── test_fileext.c
│   │   ├── test_parsefile.c
│   │   ├── test_strings.c
│   │   └── test_validate_target.c
│   ├── utflib.c
│   ├── utflib.h
│   ├── wscript
│   ├── xash3d_mathlib.c
│   └── xash3d_mathlib.h
├── ref/
│   ├── gl/
│   │   ├── exports.txt
│   │   ├── gl2_shim/
│   │   │   ├── fragment.glsl.inc
│   │   │   ├── gl2_shim.c
│   │   │   ├── gl2_shim.h
│   │   │   └── vertex.glsl.inc
│   │   ├── gl_alias.c
│   │   ├── gl_backend.c
│   │   ├── gl_beams.c
│   │   ├── gl_context.c
│   │   ├── gl_cull.c
│   │   ├── gl_decals.c
│   │   ├── gl_draw.c
│   │   ├── gl_export.h
│   │   ├── gl_frustum.c
│   │   ├── gl_frustum.h
│   │   ├── gl_image.c
│   │   ├── gl_local.h
│   │   ├── gl_opengl.c
│   │   ├── gl_rlight.c
│   │   ├── gl_rmain.c
│   │   ├── gl_rmath.c
│   │   ├── gl_rmisc.c
│   │   ├── gl_rpart.c
│   │   ├── gl_rsurf.c
│   │   ├── gl_sprite.c
│   │   ├── gl_studio.c
│   │   ├── gl_triapi.c
│   │   ├── gl_warp.c
│   │   ├── vgl_shim/
│   │   │   ├── vgl_shaders/
│   │   │   │   ├── fragment.cg.inc
│   │   │   │   └── vertex.cg.inc
│   │   │   ├── vgl_shim.c
│   │   │   ├── vgl_shim.h
│   │   │   └── wscript
│   │   └── wscript
│   ├── null/
│   │   ├── r_context.c
│   │   └── wscript
│   ├── soft/
│   │   ├── adivtab.h
│   │   ├── r_aclip.c
│   │   ├── r_beams.c
│   │   ├── r_bsp.c
│   │   ├── r_context.c
│   │   ├── r_decals.c
│   │   ├── r_draw.c
│   │   ├── r_edge.c
│   │   ├── r_glblit.c
│   │   ├── r_image.c
│   │   ├── r_light.c
│   │   ├── r_local.h
│   │   ├── r_main.c
│   │   ├── r_math.c
│   │   ├── r_misc.c
│   │   ├── r_part.c
│   │   ├── r_polyse.c
│   │   ├── r_rast.c
│   │   ├── r_scan.c
│   │   ├── r_sprite.c
│   │   ├── r_studio.c
│   │   ├── r_surf.c
│   │   ├── r_trialias.c
│   │   ├── r_triapi.c
│   │   └── wscript
│   └── vk/
│       ├── NOTES.md
│       ├── TODO.md
│       ├── camera.c
│       ├── camera.h
│       ├── common_geometry.c
│       ├── data/
│       │   ├── bshift/
│       │   │   ├── luchiki/
│       │   │   │   └── maps/
│       │   │   │       ├── ba_canal1.patch
│       │   │   │       ├── ba_canal2.patch
│       │   │   │       ├── ba_elevator.patch
│       │   │   │       ├── ba_security1.patch
│       │   │   │       ├── ba_security2.patch
│       │   │   │       ├── ba_tram2.patch
│       │   │   │       └── ba_yard5a.patch
│       │   │   └── maps/
│       │   │       ├── ba_canal1.rad
│       │   │       ├── ba_canal1b.rad
│       │   │       ├── ba_elevator.rad
│       │   │       ├── ba_hazard1.rad
│       │   │       ├── ba_hazard2.rad
│       │   │       ├── ba_hazard3.rad
│       │   │       ├── ba_hazard4.rad
│       │   │       ├── ba_hazard5.rad
│       │   │       ├── ba_hazard6.rad
│       │   │       ├── ba_power1.rad
│       │   │       ├── ba_power2.rad
│       │   │       ├── ba_security2.rad
│       │   │       ├── ba_teleport1.rad
│       │   │       ├── ba_teleport2.rad
│       │   │       ├── ba_yard1.rad
│       │   │       ├── ba_yard2.rad
│       │   │       ├── ba_yard3.rad
│       │   │       ├── ba_yard3a.rad
│       │   │       ├── ba_yard3b.rad
│       │   │       ├── ba_yard4.rad
│       │   │       ├── ba_yard4a.rad
│       │   │       ├── ba_yard5.rad
│       │   │       ├── ba_yard5a.rad
│       │   │       └── lights.rad
│       │   ├── cstrike/
│       │   │   ├── luchiki/
│       │   │   │   └── maps/
│       │   │   │       └── de_dust2.patch
│       │   │   └── maps/
│       │   │       ├── cs_747.rad
│       │   │       ├── cs_assault.rad
│       │   │       ├── cs_delta_assault.rad
│       │   │       ├── cs_italy.rad
│       │   │       └── fy_pool_day.rad
│       │   └── valve/
│       │       ├── luchiki/
│       │       │   └── maps/
│       │       │       ├── c0a0.patch
│       │       │       ├── c0a0a.patch
│       │       │       ├── c0a0b.patch
│       │       │       ├── c0a0c.patch
│       │       │       ├── c0a0d.patch
│       │       │       ├── c0a0e.patch
│       │       │       ├── c1a0.patch
│       │       │       ├── c1a0a.patch
│       │       │       ├── c1a0b.patch
│       │       │       ├── c1a0c.patch
│       │       │       ├── c1a0d.patch
│       │       │       ├── c1a0e.patch
│       │       │       ├── c1a1.patch
│       │       │       ├── c1a1a.patch
│       │       │       ├── c1a1b.patch
│       │       │       ├── c1a1c.patch
│       │       │       ├── c1a1d.patch
│       │       │       ├── c1a1f.patch
│       │       │       ├── c1a2.patch
│       │       │       ├── c1a2a.patch
│       │       │       ├── c1a2b.patch
│       │       │       ├── c1a2c.patch
│       │       │       ├── c1a2d.patch
│       │       │       ├── c1a3.patch
│       │       │       ├── c1a3a.patch
│       │       │       ├── c1a3b-dayone.patch
│       │       │       ├── c1a3b.patch
│       │       │       ├── c1a3c-dayone.patch
│       │       │       ├── c1a3d.patch
│       │       │       ├── c1a4d.patch
│       │       │       ├── c1a4e.patch
│       │       │       ├── c1a4f.patch
│       │       │       ├── c1a4g.patch
│       │       │       ├── c1a4k.patch
│       │       │       ├── c2a1.patch
│       │       │       ├── c2a1b.patch
│       │       │       ├── c2a2h.patch
│       │       │       ├── c2a3.patch
│       │       │       ├── c2a3a.patch
│       │       │       ├── c2a3b.patch
│       │       │       ├── c2a3d.patch
│       │       │       ├── c2a3e.patch
│       │       │       ├── c2a4a.patch
│       │       │       ├── c2a4e.patch
│       │       │       ├── c2a4f.patch
│       │       │       ├── c2a4g.patch
│       │       │       ├── c2a5.patch
│       │       │       ├── c2a5c.patch
│       │       │       ├── c2a5e.patch
│       │       │       ├── c2a5f.patch
│       │       │       ├── c3a1.patch
│       │       │       ├── c3a1a.patch
│       │       │       ├── c3a2.patch
│       │       │       ├── c3a2d.patch
│       │       │       ├── c3a2e.patch
│       │       │       ├── c4a1a.patch
│       │       │       ├── c5a1.patch
│       │       │       ├── hldemo1.patch
│       │       │       ├── hldemo2.patch
│       │       │       └── t0a0.patch
│       │       └── maps/
│       │           ├── README.txt
│       │           ├── boot_camp.rad
│       │           ├── c0a0.rad
│       │           ├── c0a0a.rad
│       │           ├── c0a0b.rad
│       │           ├── c0a0c.rad
│       │           ├── c0a0d.rad
│       │           ├── c0a0e.rad
│       │           ├── c1a0.rad
│       │           ├── c1a0a.rad
│       │           ├── c1a0b.rad
│       │           ├── c1a0c.rad
│       │           ├── c1a0d.rad
│       │           ├── c1a0e.rad
│       │           ├── c1a1.rad
│       │           ├── c1a1a.rad
│       │           ├── c1a1b.rad
│       │           ├── c1a1c.rad
│       │           ├── c1a1d.rad
│       │           ├── c1a1f.rad
│       │           ├── c1a2.rad
│       │           ├── c1a2a.rad
│       │           ├── c1a2b.rad
│       │           ├── c1a2c.rad
│       │           ├── c1a2d.rad
│       │           ├── c1a3.rad
│       │           ├── c1a3a.rad
│       │           ├── c1a3b.rad
│       │           ├── c1a3c.rad
│       │           ├── c1a3d.rad
│       │           ├── c1a4.rad
│       │           ├── c1a4b.rad
│       │           ├── c1a4d.rad
│       │           ├── c1a4e.rad
│       │           ├── c1a4f.rad
│       │           ├── c1a4g.rad
│       │           ├── c1a4i.rad
│       │           ├── c1a4j.rad
│       │           ├── c1a4k.rad
│       │           ├── c2a1.rad
│       │           ├── c2a1a.rad
│       │           ├── c2a1b.rad
│       │           ├── c2a2.rad
│       │           ├── c2a2a.rad
│       │           ├── c2a2b1.rad
│       │           ├── c2a2b2.rad
│       │           ├── c2a2c.rad
│       │           ├── c2a2d.rad
│       │           ├── c2a2e.rad
│       │           ├── c2a2f.rad
│       │           ├── c2a2g.rad
│       │           ├── c2a2h.rad
│       │           ├── c2a3.rad
│       │           ├── c2a3a.rad
│       │           ├── c2a3b.rad
│       │           ├── c2a3c.rad
│       │           ├── c2a3d.rad
│       │           ├── c2a3e.rad
│       │           ├── c2a4a.rad
│       │           ├── c2a4b.rad
│       │           ├── c2a4c.rad
│       │           ├── c2a4d.rad
│       │           ├── c2a4e.rad
│       │           ├── c2a4f.rad
│       │           ├── c2a4g.rad
│       │           ├── c2a5.rad
│       │           ├── c2a5a.rad
│       │           ├── c2a5d.rad
│       │           ├── c2a5e.rad
│       │           ├── c2a5f.rad
│       │           ├── c2a5x.rad
│       │           ├── c3a1.rad
│       │           ├── c3a1a.rad
│       │           ├── c3a1b.rad
│       │           ├── c3a2.rad
│       │           ├── c3a2a.rad
│       │           ├── c3a2b.rad
│       │           ├── c3a2c.rad
│       │           ├── c3a2d.rad
│       │           ├── c3a2e.rad
│       │           ├── c3a2f.rad
│       │           ├── c4a1b.rad
│       │           ├── c4a1c.rad
│       │           ├── c4a1d.rad
│       │           ├── c4a1e.rad
│       │           ├── c4a1f.rad
│       │           ├── c4a2.rad
│       │           ├── c4a2a.rad
│       │           ├── c4a2b.rad
│       │           ├── c4a3.rad
│       │           ├── c5a1.rad
│       │           ├── cornell.rad
│       │           ├── crossfire.rad
│       │           ├── datacore.rad
│       │           ├── doublecross.rad
│       │           ├── frenzy.rad
│       │           ├── gasworks.rad
│       │           ├── hldemo1.rad
│       │           ├── hldemo2.rad
│       │           ├── lambda_bunker.rad
│       │           ├── lights.rad
│       │           ├── rapidcore.rad
│       │           ├── rustmill.rad
│       │           ├── snark_pit.rad
│       │           ├── stalkyard.rad
│       │           ├── subtransit.rad
│       │           ├── t0a0.rad
│       │           ├── t0a0a.rad
│       │           ├── t0a0b.rad
│       │           ├── t0a0b1.rad
│       │           ├── t0a0b2.rad
│       │           ├── t0a0c.rad
│       │           ├── t0a0d.rad
│       │           ├── team9.rad
│       │           ├── thehill.rad
│       │           ├── undertow.rad
│       │           └── xen_dm.rad
│       ├── dumbspter.c
│       ├── infotool.c
│       ├── r_block.c
│       ├── r_block.h
│       ├── r_decals.c
│       ├── r_decals.h
│       ├── r_speeds.c
│       ├── r_speeds.h
│       ├── r_textures.c
│       ├── r_textures.h
│       ├── ray_materials.md
│       ├── rlight.c
│       ├── rt_kusochki.c
│       ├── rt_kusochki.h
│       ├── sebastian.py
│       ├── shaders/
│       │   ├── 2d.frag
│       │   ├── 2d.vert
│       │   ├── additive.rahit
│       │   ├── alphamask.rahit
│       │   ├── atrous.glsl
│       │   ├── bluenoise.glsl
│       │   ├── bounce.comp
│       │   ├── brdf.glsl
│       │   ├── brdf.h
│       │   ├── brush.frag
│       │   ├── brush.vert
│       │   ├── color_spaces.glsl
│       │   ├── debug.glsl
│       │   ├── denoiser.comp
│       │   ├── denoiser_config.glsl
│       │   ├── denoiser_utils.glsl
│       │   ├── diffuse_gi_sh_atrous.glsl
│       │   ├── diffuse_gi_sh_denoise_init.comp
│       │   ├── diffuse_gi_sh_denoise_pass_1.comp
│       │   ├── diffuse_gi_sh_denoise_pass_2.comp
│       │   ├── diffuse_gi_sh_denoise_pass_3.comp
│       │   ├── diffuse_gi_sh_denoise_pass_4.comp
│       │   ├── diffuse_gi_sh_denoise_pass_5.comp
│       │   ├── diffuse_gi_sh_denoise_save.comp
│       │   ├── empty.rmiss
│       │   ├── indirect_diffuse_atrous1.comp
│       │   ├── light.glsl
│       │   ├── light_common.glsl
│       │   ├── light_polygon.glsl
│       │   ├── noise.glsl
│       │   ├── peters2021-sampling/
│       │   │   ├── math_constants.glsl
│       │   │   ├── polygon_clipping.glsl
│       │   │   └── polygon_sampling.glsl
│       │   ├── ray_common.glsl
│       │   ├── ray_common_alphatest.rahit
│       │   ├── ray_interop.h
│       │   ├── ray_kusochki.glsl
│       │   ├── ray_light_direct.glsl
│       │   ├── ray_light_direct_point.comp
│       │   ├── ray_light_direct_poly.comp
│       │   ├── ray_primary.comp
│       │   ├── ray_primary.rchit
│       │   ├── ray_primary.rgen
│       │   ├── ray_primary.rmiss
│       │   ├── ray_primary_common.glsl
│       │   ├── ray_primary_hit.glsl
│       │   ├── ray_shadow.rchit
│       │   ├── ray_shadow.rmiss
│       │   ├── ray_shadow_interface.glsl
│       │   ├── rt.json
│       │   ├── rt_geometry.glsl
│       │   ├── sky.frag
│       │   ├── sky.vert
│       │   ├── skybox.glsl
│       │   ├── spatial_reconstruction.glsl
│       │   ├── spatial_reconstruction_pass1.comp
│       │   ├── spatial_reconstruction_pass2.comp
│       │   ├── spherical_harmonics.glsl
│       │   ├── trace_decals.glsl
│       │   ├── trace_simple_blending.glsl
│       │   └── utils.glsl
│       ├── spirv.py
│       ├── std/
│       │   ├── alolcator.c
│       │   ├── alolcator.h
│       │   ├── arrays.c
│       │   ├── arrays.h
│       │   ├── bitarray.c
│       │   ├── bitarray.h
│       │   ├── debugbreak.h
│       │   ├── flipping.c
│       │   ├── flipping.h
│       │   ├── pcg.h
│       │   ├── profiler.c
│       │   ├── profiler.h
│       │   ├── stringview.c
│       │   ├── stringview.h
│       │   ├── unordered_roadmap.c
│       │   └── unordered_roadmap.h
│       ├── tests/
│       │   └── unordered_roadmap.c
│       ├── vk_beams.c
│       ├── vk_beams.h
│       ├── vk_brush.c
│       ├── vk_brush.h
│       ├── vk_common.h
│       ├── vk_const.h
│       ├── vk_core.c
│       ├── vk_core.h
│       ├── vk_cvar.c
│       ├── vk_cvar.h
│       ├── vk_entity_data.c
│       ├── vk_entity_data.h
│       ├── vk_framectl.c
│       ├── vk_framectl.h
│       ├── vk_geometry.c
│       ├── vk_geometry.h
│       ├── vk_light.c
│       ├── vk_light.h
│       ├── vk_lightmap.c
│       ├── vk_lightmap.h
│       ├── vk_logs.c
│       ├── vk_logs.h
│       ├── vk_mapents.c
│       ├── vk_mapents.h
│       ├── vk_materials.c
│       ├── vk_materials.h
│       ├── vk_math.c
│       ├── vk_math.h
│       ├── vk_overlay.c
│       ├── vk_overlay.h
│       ├── vk_ray_accel.h
│       ├── vk_ray_internal.h
│       ├── vk_ray_model.c
│       ├── vk_render.c
│       ├── vk_render.h
│       ├── vk_renderstate.c
│       ├── vk_renderstate.h
│       ├── vk_rmain.c
│       ├── vk_rpart.c
│       ├── vk_rpart.h
│       ├── vk_rtx.c
│       ├── vk_rtx.h
│       ├── vk_scene.c
│       ├── vk_scene.h
│       ├── vk_speeds.c
│       ├── vk_speeds.h
│       ├── vk_sprite.c
│       ├── vk_sprite.h
│       ├── vk_studio.c
│       ├── vk_studio.h
│       ├── vk_studio_model.c
│       ├── vk_studio_model.h
│       ├── vk_textures.c
│       ├── vk_textures.h
│       ├── vk_triapi.c
│       ├── vk_triapi.h
│       ├── vulkan/
│       │   ├── VBarrier.c
│       │   ├── VBarrier.h
│       │   ├── VBuffer.c
│       │   ├── VBuffer.h
│       │   ├── VCombuf.c
│       │   ├── VCombuf.h
│       │   ├── VCommandPool.c
│       │   ├── VCommandPool.h
│       │   ├── VDescriptor.c
│       │   ├── VDescriptor.h
│       │   ├── VDevice.c
│       │   ├── VDevice.h
│       │   ├── VDevmem.c
│       │   ├── VDevmem.h
│       │   ├── VImage.c
│       │   ├── VImage.h
│       │   ├── VImageExtra.h
│       │   ├── VMeatpipe.c
│       │   ├── VMeatpipe.h
│       │   ├── VMisc.c
│       │   ├── VNvAftermath.c
│       │   ├── VNvAftermath.h
│       │   ├── VPass.c
│       │   ├── VPass.h
│       │   ├── VPerfQuery.c
│       │   ├── VPerfQuery.h
│       │   ├── VPipeline.c
│       │   ├── VPipeline.h
│       │   ├── VRayAccel.c
│       │   ├── VResource.c
│       │   ├── VResource.h
│       │   ├── VStaging.c
│       │   ├── VStaging.h
│       │   ├── VSwapchain.c
│       │   └── VSwapchain.h
│       └── wscript
├── scripts/
│   ├── build-ninja.py
│   ├── cirrus/
│   │   └── build_freebsd.sh
│   ├── configure-ninja.py
│   ├── flatpak/
│   │   ├── run.sh
│   │   ├── su.xash.Engine.Compat.i386.desktop
│   │   └── su.xash.Engine.Compat.i386.yml
│   ├── gha/
│   │   ├── build_android.sh
│   │   ├── build_apple.sh
│   │   ├── build_linux-e2k.sh
│   │   ├── build_linux.sh
│   │   ├── build_motomagx.sh
│   │   ├── build_nswitch.sh
│   │   ├── build_nswitch_docker.sh
│   │   ├── build_psvita.sh
│   │   ├── build_win32.sh
│   │   ├── deps_android.sh
│   │   ├── deps_apple.sh
│   │   ├── deps_linux-e2k.sh
│   │   ├── deps_linux.sh
│   │   ├── deps_motomagx.sh
│   │   ├── deps_nswitch.sh
│   │   ├── deps_psvita.sh
│   │   ├── deps_win32.sh
│   │   └── linux/
│   │       ├── AppRun
│   │       └── xash3d-fwgs.desktop
│   ├── lib-e2k.sh
│   ├── lib.sh
│   ├── makepak.py
│   ├── sailfish/
│   │   ├── build.sh
│   │   ├── deploy.sh
│   │   ├── harbour-xash3d-fwgs.desktop
│   │   ├── harbour-xash3d-fwgs.spec
│   │   └── run.sh
│   ├── waifulib/
│   │   ├── c_emscripten.py
│   │   ├── compiler_optimizations.py
│   │   ├── glslc.py
│   │   ├── ninja.py
│   │   ├── ninja_syntax.py
│   │   ├── nswitch.py
│   │   ├── owcc.py
│   │   ├── psp.py
│   │   ├── psvita.py
│   │   ├── sdl2.py
│   │   ├── sebastian.py
│   │   ├── vgui.py
│   │   ├── xcompile.py
│   │   ├── xshlib.py
│   │   └── zip.py
│   └── xashds@.service
├── uncrustify.cfg
├── utils/
│   ├── mdldec/
│   │   ├── mdldec.c
│   │   ├── mdldec.h
│   │   ├── qc.c
│   │   ├── qc.h
│   │   ├── res/
│   │   │   └── activities.txt
│   │   ├── settings.h
│   │   ├── smd.c
│   │   ├── smd.h
│   │   ├── texture.c
│   │   ├── texture.h
│   │   ├── utils.c
│   │   ├── utils.h
│   │   ├── version.h
│   │   └── wscript
│   ├── run-fuzzer/
│   │   ├── run-fuzzer.c
│   │   └── wscript
│   └── xar/
│       ├── wscript
│       └── xar.c
├── waf
├── waf.bat
└── wscript

================================================
FILE CONTENTS
================================================

================================================
FILE: .cirrus.yml
================================================
task:
  name: freebsd-14-amd64
  freebsd_instance:
    image_family: freebsd-14-2
  setup_script:
    - pkg update
    - pkg install -y pkgconf git sdl2 python fontconfig libvorbis opusfile bzip2 libbacktrace
    - git submodule update --init --recursive
  test_script:
    - ./scripts/cirrus/build_freebsd.sh

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 libvorbis opusfile bzip2 libbacktrace
    - git submodule update --init --recursive
  test_script:
    - ./scripts/cirrus/build_freebsd.sh


================================================
FILE: .editorconfig
================================================
# this file is just a suggestion, you might follow it, you might not
root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on

[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]

# Visual C++ Formatting settings
cpp_indent_braces = false
cpp_indent_multi_line_relative_to = innermost_parenthesis
cpp_indent_within_parentheses = indent
cpp_indent_preserve_within_parentheses = true
cpp_indent_case_contents = true
cpp_indent_case_labels = false
cpp_indent_case_contents_when_block = false
cpp_indent_lambda_braces_when_parameter = true
cpp_indent_goto_labels = one_left
cpp_indent_preprocessor = leftmost_column
cpp_indent_access_specifiers = false
cpp_indent_namespace_contents = true
cpp_indent_preserve_comments = false
cpp_new_line_before_open_brace_namespace = new_line
cpp_new_line_before_open_brace_type = new_line
cpp_new_line_before_open_brace_function = new_line
cpp_new_line_before_open_brace_block = new_line
cpp_new_line_before_open_brace_lambda = new_line
cpp_new_line_scope_braces_on_separate_lines = true
cpp_new_line_close_brace_same_line_empty_type = false
cpp_new_line_close_brace_same_line_empty_function = false
cpp_new_line_before_catch = true
cpp_new_line_before_else = true
cpp_new_line_before_while_in_do_while = false
cpp_space_before_function_open_parenthesis = remove
cpp_space_within_parameter_list_parentheses = true
cpp_space_between_empty_parameter_list_parentheses = true
cpp_space_after_keywords_in_control_flow_statements = false
cpp_space_within_control_flow_statement_parentheses = true
cpp_space_before_lambda_open_parenthesis = false
cpp_space_within_cast_parentheses = false
cpp_space_after_cast_close_parenthesis = false
cpp_space_within_expression_parentheses = true
cpp_space_before_block_open_brace = true
cpp_space_between_empty_braces = true
cpp_space_before_initializer_list_open_brace = false
cpp_space_within_initializer_list_braces = true
cpp_space_preserve_in_initializer_list = true
cpp_space_before_open_square_bracket = false
cpp_space_within_square_brackets = false
cpp_space_before_empty_square_brackets = false
cpp_space_between_empty_square_brackets = false
cpp_space_group_square_brackets = true
cpp_space_within_lambda_brackets = false
cpp_space_between_empty_lambda_brackets = false
cpp_space_before_comma = false
cpp_space_after_comma = true
cpp_space_remove_around_member_operators = true
cpp_space_before_inheritance_colon = true
cpp_space_before_constructor_colon = true
cpp_space_remove_before_semicolon = true
cpp_space_after_semicolon = true
cpp_space_remove_around_unary_operator = true
cpp_space_around_binary_operator = insert
cpp_space_around_assignment_operator = insert
cpp_space_pointer_reference_alignment = right
cpp_space_around_ternary_operator = insert
cpp_use_unreal_engine_macro_formatting = true
cpp_wrap_preserve_blocks = one_liners

# IDEA settings
ij_c_add_brief_tag = false
ij_c_add_getter_prefix = true
ij_c_add_setter_prefix = true
ij_c_align_dictionary_pair_values = false
ij_c_align_group_field_declarations = false
ij_c_align_init_list_in_columns = true
ij_c_align_multiline_array_initializer_expression = false
ij_c_align_multiline_assignment = false
ij_c_align_multiline_binary_operation = false
ij_c_align_multiline_chained_methods = false
ij_c_align_multiline_for = true
ij_c_align_multiline_ternary_operation = false
ij_c_array_initializer_comma_on_next_line = false
ij_c_array_initializer_new_line_after_left_brace = false
ij_c_array_initializer_right_brace_on_new_line = false
ij_c_array_initializer_wrap = off
ij_c_assignment_wrap = off
ij_c_binary_operation_sign_on_next_line = false
ij_c_binary_operation_wrap = off
ij_c_blank_lines_after_class_header = 0
ij_c_blank_lines_after_imports = 1
ij_c_blank_lines_around_class = 1
ij_c_blank_lines_around_field = 0
ij_c_blank_lines_around_field_in_interface = 0
ij_c_blank_lines_around_method = 1
ij_c_blank_lines_around_method_in_interface = 1
ij_c_blank_lines_around_namespace = 0
ij_c_blank_lines_around_properties_in_declaration = 0
ij_c_blank_lines_around_properties_in_interface = 0
ij_c_blank_lines_before_imports = 1
ij_c_blank_lines_before_method_body = 0
ij_c_block_brace_placement = next_line
ij_c_block_brace_style = next_line
ij_c_block_comment_at_first_column = true
ij_c_catch_on_new_line = false
ij_c_class_brace_style = next_line
ij_c_class_constructor_init_list_align_multiline = true
ij_c_class_constructor_init_list_comma_on_next_line = false
ij_c_class_constructor_init_list_new_line_after_colon = never
ij_c_class_constructor_init_list_new_line_before_colon = if_long
ij_c_class_constructor_init_list_wrap = normal
ij_c_copy_is_deep = false
ij_c_create_interface_for_categories = true
ij_c_declare_generated_methods = true
ij_c_description_include_member_names = true
ij_c_discharged_short_ternary_operator = false
ij_c_do_not_add_breaks = false
ij_c_do_while_brace_force = never
ij_c_else_on_new_line = false
ij_c_enum_constants_comma_on_next_line = false
ij_c_enum_constants_wrap = off
ij_c_for_brace_force = never
ij_c_for_statement_new_line_after_left_paren = false
ij_c_for_statement_right_paren_on_new_line = false
ij_c_for_statement_wrap = off
ij_c_function_brace_placement = next_line
ij_c_function_call_arguments_align_multiline = true
ij_c_function_call_arguments_align_multiline_pars = false
ij_c_function_call_arguments_comma_on_next_line = false
ij_c_function_call_arguments_new_line_after_lpar = false
ij_c_function_call_arguments_new_line_before_rpar = false
ij_c_function_call_arguments_wrap = normal
ij_c_function_non_top_after_return_type_wrap = normal
ij_c_function_parameters_align_multiline = true
ij_c_function_parameters_align_multiline_pars = false
ij_c_function_parameters_comma_on_next_line = false
ij_c_function_parameters_new_line_after_lpar = false
ij_c_function_parameters_new_line_before_rpar = false
ij_c_function_parameters_wrap = normal
ij_c_function_top_after_return_type_wrap = normal
ij_c_generate_additional_eq_operators = true
ij_c_generate_additional_rel_operators = true
ij_c_generate_class_constructor = true
ij_c_generate_comparison_operators_use_std_tie = false
ij_c_generate_instance_variables_for_properties = ask
ij_c_generate_operators_as_members = true
ij_c_header_guard_style_pattern = ${PROJECT_NAME}_${FILE_NAME}_${EXT}
ij_c_if_brace_force = never
ij_c_in_line_short_ternary_operator = true
ij_c_indent_block_comment = true
ij_c_indent_c_struct_members = 4
ij_c_indent_case_from_switch = true
ij_c_indent_class_members = 4
ij_c_indent_directive_as_code = false
ij_c_indent_implementation_members = 0
ij_c_indent_inside_code_block = 4
ij_c_indent_interface_members = 0
ij_c_indent_interface_members_except_ivars_block = false
ij_c_indent_namespace_members = 4
ij_c_indent_preprocessor_directive = 0
ij_c_indent_visibility_keywords = 0
ij_c_insert_override = true
ij_c_insert_virtual_with_override = false
ij_c_introduce_auto_consts = false
ij_c_introduce_auto_vars = false
ij_c_introduce_const_params = false
ij_c_introduce_const_vars = false
ij_c_introduce_constexpr_consts = false
ij_c_introduce_generate_property = false
ij_c_introduce_generate_synthesize = true
ij_c_introduce_globals_to_header = true
ij_c_introduce_prop_to_private_category = false
ij_c_introduce_static_consts = true
ij_c_introduce_use_ns_types = false
ij_c_ivars_prefix = _
ij_c_ivars_suffix =
ij_c_keep_blank_lines_before_end = 2
ij_c_keep_blank_lines_before_right_brace = 2
ij_c_keep_blank_lines_in_code = 2
ij_c_keep_blank_lines_in_declarations = 2
ij_c_keep_case_expressions_in_one_line = false
ij_c_keep_control_statement_in_one_line = false
ij_c_keep_directive_at_first_column = true
ij_c_keep_first_column_comment = false
ij_c_keep_line_breaks = true
ij_c_keep_nested_namespaces_in_one_line = false
ij_c_keep_simple_blocks_in_one_line = false
ij_c_keep_simple_methods_in_one_line = false
ij_c_keep_structures_in_one_line = false
ij_c_lambda_capture_list_align_multiline = false
ij_c_lambda_capture_list_align_multiline_bracket = false
ij_c_lambda_capture_list_comma_on_next_line = false
ij_c_lambda_capture_list_new_line_after_lbracket = false
ij_c_lambda_capture_list_new_line_before_rbracket = false
ij_c_lambda_capture_list_wrap = off
ij_c_line_comment_add_space = false
ij_c_line_comment_at_first_column = true
ij_c_method_brace_placement = end_of_line
ij_c_method_call_arguments_align_by_colons = true
ij_c_method_call_arguments_align_multiline = false
ij_c_method_call_arguments_special_dictionary_pairs_treatment = true
ij_c_method_call_arguments_wrap = off
ij_c_method_call_chain_wrap = off
ij_c_method_parameters_align_by_colons = true
ij_c_method_parameters_align_multiline = false
ij_c_method_parameters_wrap = off
ij_c_namespace_brace_placement = next_line
ij_c_parentheses_expression_new_line_after_left_paren = false
ij_c_parentheses_expression_right_paren_on_new_line = false
ij_c_place_assignment_sign_on_next_line = false
ij_c_property_nonatomic = true
ij_c_put_ivars_to_implementation = true
ij_c_refactor_compatibility_aliases_and_classes = true
ij_c_refactor_properties_and_ivars = true
ij_c_release_style = ivar
ij_c_retain_object_parameters_in_constructor = true
ij_c_semicolon_after_method_signature = false
ij_c_shift_operation_align_multiline = true
ij_c_shift_operation_wrap = normal
ij_c_show_non_virtual_functions = false
ij_c_space_after_colon = true
ij_c_space_after_colon_in_foreach = true
ij_c_space_after_colon_in_selector = false
ij_c_space_after_comma = true
ij_c_space_after_cup_in_blocks = false
ij_c_space_after_dictionary_literal_colon = true
ij_c_space_after_for_semicolon = true
ij_c_space_after_init_list_colon = true
ij_c_space_after_method_parameter_type_parentheses = false
ij_c_space_after_method_return_type_parentheses = false
ij_c_space_after_pointer_in_declaration = false
ij_c_space_after_quest = true
ij_c_space_after_reference_in_declaration = false
ij_c_space_after_reference_in_rvalue = false
ij_c_space_after_structures_rbrace = true
ij_c_space_after_superclass_colon = true
ij_c_space_after_type_cast = false
ij_c_space_after_visibility_sign_in_method_declaration = true
ij_c_space_before_autorelease_pool_lbrace = true
ij_c_space_before_catch_keyword = true
ij_c_space_before_catch_left_brace = true
ij_c_space_before_catch_parentheses = false
ij_c_space_before_category_parentheses = true
ij_c_space_before_chained_send_message = true
ij_c_space_before_class_left_brace = true
ij_c_space_before_colon = true
ij_c_space_before_colon_in_foreach = true
ij_c_space_before_comma = false
ij_c_space_before_dictionary_literal_colon = true
ij_c_space_before_do_left_brace = true
ij_c_space_before_else_keyword = true
ij_c_space_before_else_left_brace = true
ij_c_space_before_export_lbrace = true
ij_c_space_before_for_left_brace = true
ij_c_space_before_for_parentheses = false
ij_c_space_before_for_semicolon = false
ij_c_space_before_if_left_brace = true
ij_c_space_before_if_parentheses = false
ij_c_space_before_init_list = false
ij_c_space_before_init_list_colon = true
ij_c_space_before_method_call_parentheses = false
ij_c_space_before_method_left_brace = true
ij_c_space_before_method_parentheses = false
ij_c_space_before_namespace_lbrace = true
ij_c_space_before_pointer_in_declaration = true
ij_c_space_before_property_attributes_parentheses = false
ij_c_space_before_protocols_brackets = true
ij_c_space_before_quest = true
ij_c_space_before_reference_in_declaration = true
ij_c_space_before_superclass_colon = true
ij_c_space_before_switch_left_brace = true
ij_c_space_before_switch_parentheses = false
ij_c_space_before_template_call_lt = false
ij_c_space_before_template_declaration_lt = true
ij_c_space_before_try_left_brace = true
ij_c_space_before_while_keyword = true
ij_c_space_before_while_left_brace = true
ij_c_space_before_while_parentheses = false
ij_c_space_between_adjacent_brackets = false
ij_c_space_between_operator_and_punctuator = false
ij_c_space_within_empty_array_initializer_braces = true
ij_c_spaces_around_additive_operators = true
ij_c_spaces_around_assignment_operators = true
ij_c_spaces_around_bitwise_operators = true
ij_c_spaces_around_equality_operators = true
ij_c_spaces_around_lambda_arrow = true
ij_c_spaces_around_logical_operators = true
ij_c_spaces_around_multiplicative_operators = true
ij_c_spaces_around_pm_operators = false
ij_c_spaces_around_relational_operators = true
ij_c_spaces_around_shift_operators = true
ij_c_spaces_around_unary_operator = false
ij_c_spaces_within_array_initializer_braces = true
ij_c_spaces_within_braces = false
ij_c_spaces_within_brackets = false
ij_c_spaces_within_cast_parentheses = false
ij_c_spaces_within_catch_parentheses = true
ij_c_spaces_within_category_parentheses = false
ij_c_spaces_within_empty_braces = false
ij_c_spaces_within_empty_function_call_parentheses = true
ij_c_spaces_within_empty_function_declaration_parentheses = true
ij_c_spaces_within_empty_lambda_capture_list_bracket = false
ij_c_spaces_within_empty_template_call_ltgt = false
ij_c_spaces_within_empty_template_declaration_ltgt = false
ij_c_spaces_within_for_parentheses = true
ij_c_spaces_within_function_call_parentheses = true
ij_c_spaces_within_function_declaration_parentheses = true
ij_c_spaces_within_if_parentheses = true
ij_c_spaces_within_lambda_capture_list_bracket = false
ij_c_spaces_within_method_parameter_type_parentheses = false
ij_c_spaces_within_method_return_type_parentheses = false
ij_c_spaces_within_parentheses = true
ij_c_spaces_within_property_attributes_parentheses = false
ij_c_spaces_within_protocols_brackets = false
ij_c_spaces_within_send_message_brackets = false
ij_c_spaces_within_structured_binding_list_bracket = false
ij_c_spaces_within_switch_parentheses = true
ij_c_spaces_within_template_call_ltgt = false
ij_c_spaces_within_template_declaration_ltgt = false
ij_c_spaces_within_template_double_gt = false
ij_c_spaces_within_while_parentheses = true
ij_c_special_else_if_treatment = true
ij_c_structured_binding_list_align_multiline = false
ij_c_structured_binding_list_align_multiline_bracket = false
ij_c_structured_binding_list_comma_on_next_line = false
ij_c_structured_binding_list_new_line_after_lbracket = false
ij_c_structured_binding_list_new_line_before_rbracket = false
ij_c_structured_binding_list_wrap = off
ij_c_superclass_list_after_colon = never
ij_c_superclass_list_align_multiline = true
ij_c_superclass_list_before_colon = if_long
ij_c_superclass_list_comma_on_next_line = false
ij_c_superclass_list_wrap = on_every_item
ij_c_tag_prefix_of_block_comment = at
ij_c_tag_prefix_of_line_comment = back_slash
ij_c_template_call_arguments_align_multiline = false
ij_c_template_call_arguments_align_multiline_pars = false
ij_c_template_call_arguments_comma_on_next_line = false
ij_c_template_call_arguments_new_line_after_lt = false
ij_c_template_call_arguments_new_line_before_gt = false
ij_c_template_call_arguments_wrap = off
ij_c_template_declaration_function_body_indent = false
ij_c_template_declaration_function_wrap = split_into_lines
ij_c_template_declaration_struct_body_indent = false
ij_c_template_declaration_struct_wrap = split_into_lines
ij_c_template_parameters_align_multiline = false
ij_c_template_parameters_align_multiline_pars = false
ij_c_template_parameters_comma_on_next_line = false
ij_c_template_parameters_new_line_after_lt = false
ij_c_template_parameters_new_line_before_gt = false
ij_c_template_parameters_wrap = off
ij_c_ternary_operation_signs_on_next_line = false
ij_c_ternary_operation_wrap = off
ij_c_type_qualifiers_placement = before
ij_c_use_modern_casts = true
ij_c_use_setters_in_constructor = true
ij_c_while_brace_force = never
ij_c_while_on_new_line = false
ij_c_wrap_property_declaration = off


================================================
FILE: .gitattributes
================================================
*.c	text eol=lf diff=cpp
*.h	text eol=lf diff=cpp
wscript text eol=lf diff=python


================================================
FILE: .github/FUNDING.yml
================================================
custom: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/donate.md


================================================
FILE: .github/ISSUE_TEMPLATE/crash-report.md
================================================
---
name: Crash report
about: The renderer crashed. Let us know
title: ''
labels: bug, crash
assignees: ''

---

Note that this is only for Vulkan/Ray tracing renderer. Prior to submitting anything here make sure that the game does not crash with native GL renderer (`-ref gl`).

**To Reproduce**
1. Map name or attached save file
2. Actions to perform (e.g. go to that room and do this; screenshots appreciated)

**Artifacts**
E.g. attach last few lines of logs (it may be an assert that's informative).

**Moar context:**
 - Commit hash of the build
 - OS
 - GPU vendor and model
 - Driver version


================================================
FILE: .github/ISSUE_TEMPLATE/visual-glitches-report.md
================================================
---
name: Visual glitches report
about: Something doesn't look right
title: ''
labels: bug, ray tracing, visual bug
assignees: ''

---

Note that:
- this is only for Vulkan/Ray tracing renderer. Prior to submitting anything here make sure that the game looks correct with native GL renderer (`-ref gl`).
- the renderer is WIP so there are way too many known visual bugs. Make sure to search issues first for it is very likely that we already know about it.
- Traditional rasterizer is not being actively maintained, so visual glitches in that won't be addressed for a while (unless they stall rt renderer progress).

**To reproduce**
1. Map name or attached save file
2. Steps to do (e.g. go to a specific room and perform some action)

**Screenshots**
1. The thing that looks wrong
2. How it's supposed to look, e.g.:
  - screenshot from the same angle made using vanilla GL renderer
  - screenshot from a production ready PBR/RT renderer of a similar scene with similar materials and lighting parameters.

**Moar context**
- Commit hash
- OS
- GPU vendor and model
- Driver version


================================================
FILE: .github/workflows/c-cpp.yml
================================================
name: Build & Deploy Engine
on:
  push:
    paths-ignore:
      - '**.md'
      - 'ref/vk/data/**'
  pull_request:
    paths-ignore:
      - '**.md'
      - 'ref/vk/data/**'
jobs:
#  cleanup:
#    runs-on: self-hosted
#    steps:
#    - name: Cleanup
#      run: rm -rf .* || true
  build:
    runs-on: ${{ matrix.os }}
    continue-on-error: true
    strategy:
      fail-fast: false
      matrix:
        include:
          # FIXME Linux build specifically want oldest Ubuntu as possible
          # to be crossdistribution compatible, otherwise use ubuntu-latest
          - os: ubuntu-22.04
            targetos: linux
            targetarch: amd64
          - os: ubuntu-22.04
            targetos: linux
            targetarch: i386
          - os: ubuntu-22.04
            targetos: linux
            targetarch: arm64
            cross: true
          - os: ubuntu-22.04
            targetos: linux
            targetarch: armhf
            cross: true
# FIXME currently vulkan build fails for these, as Vulkan SDK is not easily available.
#          - 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-aarch64-22.04
#            targetos: linux
#            targetarch: aarch64
#          - os: ubuntu-latest
#            targetos: linux
#            targetarch: e2k-8c
#            cross: true

# FIXME Enable Vulkan for Android too
#          - os: ubuntu-latest
#            targetos: android
#            targetarch: multiarch

#          - os: ubuntu-22.04
#            targetos: motomagx
#            targetarch: armv6
#          - os: ubuntu-20.04
#            targetos: nswitch
#            targetarch: arm64
#          - os: ubuntu-20.04
#            targetos: psvita
#            targetarch: armv7hf
          - os: windows-latest
            targetos: win32
            targetarch: amd64
          - os: windows-2022 # always use the oldest possible for 32-bit because of older compilers, and better support of certain legacy OSes
            targetos: win32
            targetarch: i386

# FIXME Vulkan doesn't care about these for now
#          - os: macos-14 # arm64 as per github documentation
#            targetos: apple
#            targetarch: arm64
#          - os: macos-13 # x86 as per github documentation (will they fix it before they deprecate this version?..)
#            targetos: apple
#            targetarch: amd64
    env:
      SDL_VERSION: 2.32.8
      FFMPEG_VERSION: 7.1
      VULKAN_SDK_VERSION: 1.4.321.1
      GH_CPU_ARCH: ${{ matrix.targetarch }}
      GH_CPU_OS: ${{ matrix.targetos }}
      GH_CROSSCOMPILING: ${{ matrix.cross }}
    steps:
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive
    - name: Install dependencies
      run: bash scripts/gha/deps_${{ matrix.targetos }}.sh
    - name: Install Vulkan SDK
      uses: jakoch/install-vulkan-sdk-action@v1
      with:
        vulkan_version: ${{ env.VULKAN_SDK_VERSION }}
        install_runtime: false
        cache: true
        stripdown: true
    - name: Build engine
      env:
        FWGS_PFX_PASSWORD: ${{ secrets.FWGS_PFX_PASSWORD }}
      run: bash scripts/gha/build_${{ matrix.targetos }}.sh
    - name: Upload engine (artifacts)
      uses: actions/upload-artifact@v4
      with:
        name: artifact-${{ matrix.targetos }}-${{ matrix.targetarch }}
        path: artifacts/*
  flatpak:
    runs-on: ubuntu-latest
    continue-on-error: true
    strategy:
      matrix:
        include:
          - app: su.xash.Engine.Compat.i386
    container:
      image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-24.08
      options: --privileged
    steps:
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive
    - name: Build flatpak (Compat.i386)
      uses: FWGS/flatpak-github-actions/flatpak-builder@v6.5
      with:
        bundle: ${{ matrix.app }}.flatpak
        manifest-path: scripts/flatpak/${{ matrix.app }}.yml
        cache: false
  release:
    name: "Upload releases"
    runs-on: ubuntu-latest
    needs: [build, flatpak]
    if: ${{ github.event_name == 'push' }}
    steps:
    - name: Remove old release, fetch artifacts, repackage binaries and upload new release
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        RELEASE_TAG: ${{ github.ref_name == 'master' && 'continuous' || format('continuous-{0}', github.ref_name) }}
      run: |
        gh release delete "$RELEASE_TAG" \
          --yes \
          --cleanup-tag \
          --repo "$GITHUB_REPOSITORY" || true
        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


================================================
FILE: .gitignore
================================================
# Binaries
*.o
*.so
*.a
*.framework

# Other
*.save
prefix/

# Qt Creator for some reason creates *.user.$version files, so exclude it too
*.user*
*~

### Xcode ###
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.xcuserstate


### OSX ###
.DS_Store
.AppleDouble
.LSOverride


# Thumbnails
._*

# Files that might appear on external disk
.Spotlight-V100
.Trashes

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### CMake ###
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
install_manifest.txt
CMakeLists.txt*
CMakeScripts
Testing
compile_commands.json
_deps
# makedepend
Makefile.dep
*.bak
ALL_BUILD.*
INSTALL.*
ZERO_CHECK.*
CMakeLists.txt

# Visual Studio
*.obj
*.dll
*.exp
*.lib
*.suo
*.sdf
Debug/
Release/
ipch/
*.opensdf
# Use CMake for generating projects
*.vcxproj.filters
*.vcxproj
*.sln

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# DNX
project.lock.json
artifacts/

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config

# Windows Azure Build Output
csx/
*.build.csdef

# Windows Store app package directory
AppPackages/

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# Node.js Tools for Visual Studio
.ntvs_analysis.dat

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# PVS Studio for Linux output
*.cl.cfg

# Kate
*.kate-swp
*.swp

# QtCreator
build-*

# Android
*.apk
*.config
*.creator
*.includes
*.files

# Waf
build_current
*waf-*/
*waf3-*/
.lock-waf*
*.lastbuildstate
*.unsuccessfulbuild
__pycache__
*.pyc
.waf*

# MSVC projects
*.vcproj
*.sln
*.vcxproj

# vim/cscope/coc/clangd
compile_commands.json
cscope.out
core

# Visual Studio Code
.vscode/*
*.code-workspace
.history/*
.cache/*
enc_temp_folder/

# KDevelop4
*.kdev4

# ccls langauge server
.ccls-*

# JetBrains
.idea/
cmake-build-*

# some Android-specific build stuff
3rdparty/SDL
3rdparty/hlsdk-portable
!scripts/build-ninja.py


================================================
FILE: .gitmodules
================================================
[submodule "mainui"]
	path = 3rdparty/mainui
	url = https://github.com/FWGS/mainui_cpp
[submodule "ref_gl/nanogl"]
	path = 3rdparty/nanogl
	url = https://github.com/FWGS/nanogl
[submodule "ref_gl/gl-wes-v2"]
	path = 3rdparty/gl-wes-v2
	url = https://github.com/FWGS/gl-wes-v2
[submodule "ref_gl/gl4es"]
	path = 3rdparty/gl4es/gl4es
	url = https://github.com/ptitSeb/gl4es
[submodule "vgui_support"]
	path = 3rdparty/vgui_support
	url = https://github.com/FWGS/vgui_support
[submodule "opus"]
	path = 3rdparty/opus/opus
	url = https://github.com/xiph/opus
[submodule "3rdparty/xash-extras"]
	path = 3rdparty/extras/xash-extras
	url = https://github.com/FWGS/xash-extras
[submodule "3rdparty/bzip2/bzip2"]
	path = 3rdparty/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/numas13/xash3d-maintui.git


================================================
FILE: 3rdparty/bzip2/wscript
================================================
#! /usr/bin/env python
# encoding: utf-8

def options(opt):
	pass

def configure(conf):
	conf.define('_GNU_SOURCE', 1)
	conf.define('BZ_NO_STDIO', 1)

	if conf.env.DEST_OS == 'win32':
		conf.define('BZ_LCCWIN32', 1)
	else:
		conf.define('BZ_UNIX', 1)

def build(bld):
	bld(features = 'subst', source = 'bzip2/bz_version.h.in', target = 'bzip2/bz_version.h', BZ_VERSION='1.1.0-fwgs', name = 'bz_version')

	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(
		source = bz_sources,
		target = 'bzip2',
		use = 'bz_version',
		includes = 'bzip2/',
		export_includes = 'bzip2/'
	)


================================================
FILE: 3rdparty/extras/wscript
================================================
#! /usr/bin/env python
# encoding: utf-8

import os

def options(opt):
	pass

def configure(conf):
	if not conf.path.find_dir('xash-extras'):
		conf.fatal('Can\'t find xash-extras submodule.')
		return

	conf.load('zip')

def build(bld):
	srcdir = bld.path.find_dir('xash-extras')

	if bld.env.DEST_OS in ['android']:
		install_path = bld.env.PREFIX
	else:
		install_path = os.path.join(bld.env.SHAREDIR, bld.env.GAMEDIR)

	bld(features='zip',
		name = 'extras.pk3',
		files = srcdir.ant_glob('**/*'),
		relative_to = srcdir,
		install_path = install_path)


================================================
FILE: 3rdparty/gl4es/wscript
================================================
#! /usr/bin/env python
# encoding: utf-8

import os

def options(opt):
	pass

def configure(conf):
	if not conf.path.find_dir('gl4es') or not conf.path.find_dir('gl4es/src'):
		conf.fatal('Can\'t find gl4es submodule. Run `git submodule update --init --recursive`.')
		return

def build(bld):
	gl4es_srcdir = bld.path.find_node('gl4es/src')
	cflags = []
	if bld.env.COMPILER_CC != 'msvc':
		cflags += ['-w', '-fvisibility=hidden', '-std=gnu99']
	bld.stlib(source   = gl4es_srcdir.ant_glob(['gl/*.c', 'gl/*/*.c', 'glx/hardext.c']),
		target   = 'gl4es',
		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'],
		cflags   = cflags,
		export_includes = '.')


================================================
FILE: 3rdparty/libbacktrace/wscript
================================================
#! /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']:
		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, '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', 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', 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'
	)

	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

	# we specifically only want mmap-based allocators because calling malloc is not safe from signal handlers
	sources = ['atomic.c', 'dwarf.c', 'fileline.c', 'posix.c', 'print.c', 'sort.c', 'state.c', 'backtrace.c', 'simple.c', '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],
		target = 'backtrace',
		features = 'frandomseed' if bld.env.HAVE_FRANDOM_SEED else '',
		use = 'EXTRAFLAGS lzma z zstd',
		includes = '. libbacktrace/',
		export_defines = 'HAVE_LIBBACKTRACE=1',
		export_includes = 'libbacktrace/'
	)



================================================
FILE: 3rdparty/libogg/wscript
================================================
#! /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/'
	)


================================================
FILE: 3rdparty/opus/wscript
================================================
#! /usr/bin/env python
# encoding: utf-8

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):
	pass

def configure(conf):
	if not conf.path.find_dir('opus') or not conf.path.find_dir('opus/src'):
		conf.fatal('Can\'t find opus submodule. Run `git submodule update --init --recursive`.')
		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: maybe call autotools/cmake/meson instead?

def build(bld):
	sources = bld.path.ant_glob([
		'opus/src/*.c',
		'opus/celt/*.c',
		'opus/silk/*.c',
		'opus/silk/float/*.c'
	], excl = [
		'opus/src/repacketizer_demo.c',
		'opus/src/opus_demo.c',
		'opus/src/opus_compare.c',
		'opus/celt/opus_custom_demo.c'
	])

	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(
		source = sources,
		target = 'opus',
		features = 'c',
		includes = includes,
		defines = defines,
		export_includes = ['opus/include/']
	)


================================================
FILE: 3rdparty/opusfile/wscript
================================================
#! /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/'
	)


================================================
FILE: 3rdparty/vorbis/wscript
================================================
#! /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/'
	)


================================================
FILE: CONTRIBUTING.md
================================================
# Specific instructions for this fork

## Introduction
1. This fork's only concern is the `ref_vk` Vulkan/RT renderer. Engine and other renderers issues and functionality are absolutely out of scope, unless directly and specifically related to `ref_vk`.
2. Primary focus is Ray Tracing with PBR materials. "Traditional" (triangle rasterization) mode is low proirity and has quite a few known issues and deficiencies.
3. The primary development branch is `vulkan`, it should contain the latest working and stable code. Other branches (including `master`) are not supported.
4. Check out the upstream xash3d-fwgs CONTRIBUTING.md too.

## Reporting issues
1. Precondition: you're supposed to know how to build and run stuff manually. It is not ready to be used by non-developers.
2. This is a very actively developing project. There are lots of known issues. Search them first.
3. Run with `-dev 2 -log -vkdebug -vkvalidate -vkverboselogs` and provide `engine.log`.
4. Specify detailed steps to reproduce. A savefile might be helpful too.
5. Although it is deducible from the log, provide the following information explicitly: map, location, OS, GPU, driver version.
6. Attach a screenshot if possible (i.e. if it is not a crash at init time)

## Contributing code
We are very glad to hear that you want to help. And there are certainly quite a few issues that could be worked on in parallel.
The renderer code is being mostly written as a for-fun-only hobby project by a single person who has neither mental capacity nor time to make and maintain a comprehensive documentation or development structure.
Making it a collaboration effort with multiple active participants would require a completely different approach to development, communication, and progress tracking. We might or might not be able to get there eventually.

That said, we are still happy to hear that you'd like to help. Your involvement might be instrumental to reorganize and allow more collaborators.

Strongly suggested checklist for contributing anything, **before you start writing any code that you'd like to land here**:
1. Find an existing issue (e.g. with `good first issue` label), or suggest your own.
2. Let us know that you'd want to work on it, e.g. by leaving a comment on it. **Why:** any given issue might be stale, no longer relevant, being actively worked on as part of something else, or conflicting with some other approach being deliberated.
3. Work with us on a design review for the issue. **Why:** this is live C codebase, it is rather fragile and is constantly changing. There are no good practices or stable building blocks. It is also a bit idiosyncratic in places. We just know more context about where are we going to, and where we might be heading. You might also get into surprising conflicts with things that we're working on. There are unfortunately no stable scaffolding or guardrails that would allow for easy independent collaboration yet. Working on a design review means that we'll suggest a compatible way of doing things, and will schedule our work to minimize conflicts with yours.
4. Open a draft PR as early as possible, even if it is not ready yet. That way we can coordinate effort, suggest things and anwer any questions.

## Code and PR
1. Do not worry that much about code style. Be reasonable, try to either imitate the surrounding code (which has no strict style yet), or follow upstream recommendations listed below under `Code style` section.
2. Try to limit your changes, e.g. don't re-format lines which are not crucial to your change.
3. Ping us in the PR if you're not hearing any feedback for a couple of days. I'm usually way too busy *with life* to be on the internets all the time, but a little nudge might be able to allocate some attention.


---------------------------------------------
# UPSTREAM XASH3D-FWGS CONTRIBUTING.md FOLLOWS
---------------------------------------------

## If you are reporting bugs

1. Check you are using latest version. You can build latest Xash3D FWGS for yourself, look to 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.
3. Re-run engine with `-dev 2 -log` arguments, reproduce bug and post engine.log which can be found in your working directory.
3. Describe steps to reproduce bug.
4. Describe which OS and architecture you are using.
6. Attach screenshot if it will help clarify the situation.

## If you are contributing code

### Which branch?

* We recommend using `master` branch.

### Third-party libraries

* 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 dependencies for Waf Build System is not welcomed.

### 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.
* 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.
* 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.

### Code style

* This project uses mixed Quake's and HLSDK's C/C++ code style convention. 
* In short:
  * Use spaces in parenthesis.
  * Only tabs for indentation.
  * Any brace must have it's own line.
  * Short blocks, if statements and loops on single line are allowed.
  * Avoid magic numbers.
  * 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.
* **ANY** commit message should start from declaring a tags, in format:
  
  `tag: added some bugs`
  
  `tag: subtag: fixed some features`
  
  Tags can be any: subsystem, simple feature name or even just a filename, without extension.
  Just keep them always same, it helps keep history clean and commit 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 bug or contributing the code, you take complete authorship and responsibility over provided content and the same rules will apply to you as for everybody else, so validate the bug report or the patch before sending it.


================================================
FILE: Documentation/bug-compatibility.md
================================================
# Bug-compatibility in Xash3D FWGS

Xash3D FWGS has special mode for games that rely on original engine bugs. In this mode, we emulate the behaviour of selected functions that may help running mods relying on engine bugs, but enabling them by default may break majority of other games.

At this time, we only have implemented GoldSrc bug-compatibility. It can be enabled with `-bugcomp` command line switch.

When `-bugcomp` is specified without argument, it enables everything. This behavior might be changed or removed in future versions.

When `-bugcomp` is specified with argument, it interpreted as flags separated with `+`. This way it's possible to combine multiple levels of bug-compatibility.

## GoldSrc bug-compatibility

| 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 |
| `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. |
| `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) |


================================================
FILE: Documentation/cross-compiling-for-windows-with-wine.md
================================================
# Cross-compiling for Windows with Wine

This can be useful to test engine in Wine without using virtual machines or dual-booting to Windows.

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
2. Pre-load wine: `wineserver -k; wineserver -p; wine64 wineboot`
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 ...

> [!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...


================================================
FILE: Documentation/debugging-using-minidumps.md
================================================
# Debugging your mod using minidump files (Windows only)
Minidump files is awesome instrument for debugging your mod after it's being released, or for catch specific crashes which are presented only in one specific configuration, but doesn't happens in other configurations or even on developer machine. It contains a lot of information useful for debugging, and therefore it size is not so small: around hundreds or even thousands of megabytes. But this is not a problem, since minidump files compresses very effectively using common algorithms.
There are short algorithm, explaining how to use this debugging instrument:

1. User starts your mod with `-minidumps` startup parameter
2. Finally, crash happened on user's machine, and minidump file being written. This file has `.mdmp` extension and located in same folder, where mod folder located
3. User packs this minidump file to .zip/.7z archive, and somehow sends it to developer
4. Developer just opens minidump file in Visual Studio, then a virtual debugging session is opened and now reasons of crash is pretty easy to detect: you can see call stack, local function variables and global variables, information about exception and a lot of other information

You can find more information about minidumps in this [awesome article](https://learn.microsoft.com/en-us/windows/win32/dxtecharts/crash-dump-analysis?source=recommendations#writing-a-minidump).


================================================
FILE: Documentation/donate.md
================================================
# Developers donation page

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)

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)

[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).

* [Boosty page](https://boosty.to/nekonomicon)

## [Velaron](https://github.com/Velaron)

[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).

* [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, [Xash3D FWGS](https://github.com/FWGS/xash3d-fwgs) tester,
editor of the [Official YaPB Documentation](https://github.com/yapb/docs) (in English and Russian), curator of the [YaPB Graph Database](https://github.com/yapb/graph) and author of [YaPB Waypoint/Graph Pack](https://gamebanana.com/mods/40087).

Also does the Russian localization of text, images (gfx/shell), as well as additional menu buttons in English used in Xash3D FWGS for various mods.

* [Boosty page](https://boosty.to/rasstaman1337)

================================================
FILE: Documentation/engine-porting-guide.md
================================================
## Abstract

Before start, I would recommend you to compile and run engine for already supported and well-spread platform, such as GNU/Linux or Windows. Hack it, get familiar with engine.

One beauties of Xash3D FWGS Engine is it modularity, so game logic, UI and renderers are located in platform-independent libraries. Every library is loaded at run time and may or may be not optional.  For example, if your platform doesn't have OpenGL of any kind, you can skip it and use our software renderer! Of course, there is no real reason to run game engine, if you don't have game logic of any kind, so the minimal build of Xash3D FWGS is headless dedicated server.

Historically, Xash3D Engine was even more modular(see github.com/a1batross/Xash3D_ancient), but we thought that to fulfill our crossplatform needs we will keep all platform-specific stuff in the engine itself and libraries must import or expose platform-independent APIs.

Ok, get to the point!

## Porting guidelines

It will not be a complete tutorial as covering everything in one article is probably just impossible. Instead, I will give you hints on how engine can be ported, how to get your port to upstreamed and how you should maintain your port.

0) Get to know your platform. Maybe I asked for this lately, but you MUST KNOW YOUR PLATFORM, i.e. what's this capable of.

The one of unsupported configurations at this time is when platform can't load dynamic libraries(`*.so` or DLLs). We can't help you as supporting full-static ports are violating the GPL license in various ways.

The other yet unsupported configuration is the big endian.

1) Setup toolchain. For dirty port, you can write Makefile for yourself, engine is written that way, so **it doesn't relies** on any generated data or any special processing. But I recommend you to use Waf anyway, it's better integrated to engine and self-documentable. Also, I will cover only our Waf build options.

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).

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.

In short, you need to call your platform in unique way. For engine side it's done in `engine/common/build.c` file in engine source code, for HLSDK side it's done in `cmake/LibraryNaming.cmake` and `scripts/waifulib/library-naming.py` files in HLSDK source code.

You can use [predef project wiki](https://sourceforge.net/p/predef/wiki/Home/) for reference.

2) Look at the `engine/platform` directory. We usually try to have all platform-specific stuff inside this folder.

* Functions that must be available on your platform are declared in `platform.h` header. Most of them aren't used in headless dedicated build, but I will cover that later.

* The POSIX-compliant(for *nix operating systems) goes into `posix` subdirectory.

* The SDL-specific code goes into `sdl` subdirectory. Note that even I said before that platform-specific code is in `platform` directory, SDL obviously isn't a __platform__, so you can met checks for XASH_SDL inside whole engine, usually in input.

* Custom SWAP implementation for *nix-based systems is in `swap` subdirectory. It's used when hardware may not have enough memory and you can't add swap memory. I will cover that later
It relies on a fact that systems with paged memory will load pages into RAM and move unused to mmap()-ed by custom swap area.
That allowed to run game engine on music player with MIPS CPU, Linux without SWAP support and

* Other folders as `win32`, `android`, `linux` and so on are self-descriptive.

3) As proof of concept, you can try to test that network features and dynamic library loading are implemented correctly. Build a dedicated server with XASH_DEDICATED or `--dedicated` passed  to `waf configure`.

Start a server and try to connect to it from PC. If everything is fine, then you can move to next step.

If you get out of memory issues, you can try Low Memory Mode, it's enabled with `--low-memory-mode=N` passed to `waf configure` where N is 1 or 2. Low Memory Mode 1 means that we will NOT break a network compatibility. 2 is deeper and doesn't guarantee protocol compatibility and available multiplayer. Of course, with Low Memory Mode 2 you can't test your port dedicated server.

If you got anything compiling, it's nice time to make a commit. Commit your changes into git and push them somewhere(GitHub, GitLab or what you prefer), so you will not lose them accidentally.

4) Here is most interesting, building the client part.

There are three possible situations for you, by increasing difficulty.

1. Do you have SDL2 for your platform? If yes, go ahead and compile engine with client part enabled.

2. Do you have SDL1.2 for your platform? If yes, try to compile it, but SDL1.2 support is very limited and not tested well.

3. You don't have SDL and you can't port it for some reason by yourself or SDL port just don't stable for your platform? Then you need to implement an engine backend.

How to implement engine backend? Well, we have a backends system that was introduced in Old Engine. It's simply two files: backends.h and defaults.h in `common` folder in repository root. You will need to add a macros for your backends in `backends.h` and define a logic in `defaults.h`. We have already have some, check them out, as they may be handy for you.

Once you did it, go back to `platform` directory and open `platform.h` headers. Create new subdirectory in `platform` folder and start implementing missing platform-specific backends one by one. I can't explain this as for obvious reasons it's too specific. You can use macros you defined before in `build.h` to check that you're compiling for your platform and `backends.h` macros to check if platform-specific backend must be enabled.

As you finished, compile engine, fix errors and commit your changes and push to repository.

Remember, if something doesn't work and you can't figure out why, you can join our Discord server at discord.me/fwgs. Ping me (@a1batross) or other engine developer and attach link to your repository, so we can discuss and help you in porting.


================================================
FILE: Documentation/environment-variables.md
================================================
## Environment variables

#### Xash3D FWGS

The engine respects these environment variables:

| Variable              | Type       | Description |
| --------------------- | ---------- | ----------- |
| `XASH3D_GAME`         | _string_   | Overrides default game directory. Ignored if `-game` command line argument is set |
| `XASH3D_BASEDIR`      | _string_   | Sets path to base (root) directory, instead of current working directory |
| `XASH3D_RODIR`        | _string_   | Sets path to read-only base (root) directory. Ignored if `-rodir` command line argument is set |
| `XASH3D_EXTRAS_PAK1`  | _string_   | Archive file from specified path will be added to virtual filesystem search path in the lowest possible priority |
| `XASH3D_EXTRAS_PAK2`  | _string_   | Similar to `XASH3D_EXTRAS_PAK1` but next to it in priority list |

Environment variables NOT listed in the table above are used internally, and aren't considered as stable interface.

#### mdldec

| Variable              | Type       | Description |
| --------------------- | ---------- | ----------- |
| `MDLDEC_ACT_PATH`     | _string_   | If set, will read activities list from this path |


================================================
FILE: Documentation/extensions/addon-folders.md
================================================
# 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. |


================================================
FILE: Documentation/extensions/console-scripting.md
================================================
## Console variables

Console variables (or CVars) are present in all quake-based games.

By default, it is settings, created by engine, server or client libraries.

But you can use `set` command to define variables even if they are not created by the engine.

For example, you can set cvar before it is registered in code.

`set defaultmap crossfire`

This works even in server.cfg before server cvars initialization and the engine will reuse its value on cvar creation

## Aliases

An alias allows to define new commands.

`alias wnext "invnext;wait;wait;+attack;wait;-attack"`

You can hook any command by adding an alias to it and unaliasing it, when you want to use original command.

```
alias invnext1 "unalias invnext;wnext;alias invnext invnext1"
alias invnext invnext1
```

## Scripting extensions

This is an extensions of Xash3D FWGS(merged to original Xash3D since build 3887), that can be enabled by cmd_scripting cvar.

Enabling scripting: `cmd_scripting 1`

This is an archive cvar and it will be saved.

### CVar substitution

You can substitute cvar value to any command by adding \$ symbol:

`echo $sv_cheats`

### Condition checking

Allows checking cvar values.

```
if <value1> <operator> <value2>
:<action1>
:if <value3>
::<action2>
:<action3>
else
:<action4>
```

* Values are any string or numeric values (for example, substituted cvars).
* Operator is = (or ==), \!=, \<, \>, \<=, \>=. == is same to =.
* If single value specified, condition is true when value is non-zero

Example:

```
if $sv_cheats == 1
:echo Cheats enabled, adding cheat menu
:exec cheatmenu.cfg
else
:echo Please enable cheats to use this!
```


================================================
FILE: Documentation/extensions/entity-tools.md
================================================
# 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.


================================================
FILE: Documentation/extensions/expanded-common-structures.md
================================================
# Expanded structures that used by engine and mods
To make porting and developing mods on 64-bit platforms less painful, we decided to expand size of several structures.
This information important in case you are using codebase like XashXT, Paranoia 2: Savior and want to compile your mod for platform with 64-bit pointer size: you should replace old definitions with new ones, otherwise your mod will not work with Xash3D FWGS (typically, it's just crashing when starting map).
| Structure name | Locates in file | Original size on 64-bit | Current size on 64-bit |
|----------------|-----------------|-------------------------|------------------------|
|`mfaceinfo_t` | `common/com_model.h` | 176 bytes |  304 bytes |
|`decal_s` | `common/com_model.h` | 72 bytes |  88 bytes |
|`mextrasurf_t` | `common/com_model.h` | 376 bytes |  504 bytes |


================================================
FILE: Documentation/extensions/input-interface-ru.md
================================================
## Цель

На текущий момент клиенты имеют некоторые части платформозависимого кода внутри себя. Это плохо, т.к. мы не можем использовать одинаковые функции (если не перепишем почти половину кода SDL) на разных платформах.

## Клиентская часть

* Клиент будет иметь возможность полностью реализовать touch-ввод. Отрисовка может быть произведена через HUD.
* Клиент получит простые события движения и обзора от движка

### Клиентская реализация

#### Клиент будет экспортировать некоторые функции движку (опционально):

* `int IN_ClientTouchEvent ( int fingerID, float x, float y, float dx, float dy );`

Вернёт 1 если касание активно, иначе 0.

* `void IN_ClientMoveEvent ( float forwardmove, float sidemove );`

Клиент будет накапливать значения величин для команд движения перед созданием команд и очищать их при CreateMove.

* `void IN_ClientLookEvent ( float relyaw, float relpitch );`

Клиент будет вращать камерой когда нужно, прямо как в реализации мыши

## Движковая часть

* Движок будет управлять событиями платформы и вызывать клиентские функции
* Движок реализует стандартную систему взгляда и движения если её нет в клиенте

### Движковая реализация

#### События касания

Перед вызовом ClientMove движок обязан получить события о касании.

Если из клиента экспортирована функция IN_ClientTouchEvent, событие будет отправлено клиенту.

Иначе, движок будет рисовать свой touch-интерфейс.

#### Другие события

Интерфейс прикосновений и код джойстика в движке будут генерировать следующие два типа событий:
* События движения (функция IN_ClientMoveEvent)
* События просмотра (функция IN_ClientLookEvent)

Если клиент экспортирует эти функции, события будут отправляться клиенту перед CreateMove
Иначе события просмотра будут происходить перед CreateMove, но после MoveEvent. Они будут применены к генерируемым командам


================================================
FILE: Documentation/extensions/input-interface.md
================================================
## Purpose

Clients have different platform-depended input code now.
It is bad because we cannot use same functions (if we won't rewrite almost half of SDL) on different platforms.

## Client part

* Client will have ability to fully implement touch input. Drawing may be done by HUD.
* Client will receive basic motion and look events from engine

### Client implementation

#### Client will optionally export some functions to Engine:
* `int IN_ClientTouchEvent ( int fingerID, float x, float y, float dx, float dy );`

Return 1 if touch is active, 0 otherwise.

* `void IN_ClientMoveEvent ( float forwardmove, float sidemove );`

Client wil accumulate move values before creating commands and flush it on CreateMove.

* `void IN_ClientLookEvent ( float relyaw, float relpitch );`

Client will rotate camera when needed as in mouse implementation

## Engine part

* Engine will handle platform events and call client functions.
* Engine will implement fallback look and movement system when client interface not present

### Engine implementation

#### Touch events

Before calling ClientMove engine must get touch events.

If client exported IN_ClientTouchEvent, event will be sent to client.

Otherwise engine will draw own touch interface.

#### Other events

Engine touch interface and joystick support code will generate two types of events:
* Move events (IN_ClientMoveEvent function)
* Look events (IN_ClientLookEvent function)

If client exported these functions, events will be sent to client before CreateMove
Otherwise Look Event will be processed before CreateMove, but MoveEvent after. It will be applied to generated command


================================================
FILE: Documentation/extensions/library-naming.md
================================================
I propose a new library naming scheme, which will allow to distribute mods and games in single archive to different operating systems and CPUs:

Legend:
* $os -- Q_buildos() return value, in lower case.
* $arch -- Q_buildarch() return value, in lower case.
* $ext -- OS-specific extension: dll, so, dylib, etc.

The scheme will be:

1. Client library:
* ```client.$ext``` for **Win/Lin/Mac** with **x86**.
* ```client_$arch.$ext``` for **Win/Lin/Mac** with **NON-x86**.
* ```client_$os_$arch.$ext``` for everything else.

2. Menu library:
* ```menu.$ext``` for **Win/Lin/Mac** with **x86**.
* ```menu_$arch.$ext``` for **Win/Lin/Mac** with **NON-x86**.
* ```menu_$os_$arch.$ext``` for everything else.

3. Server library:
* On  **Win/Lin/Mac** with **x86**, it **MUST** use the raw gamedll name for corresponding OS field from `gameinfo.txt`.
* On **Win/Lin/Mac** with **NON-x86**, it **MUST** use the raw gamedll name for corresponding OS field from `gameinfo.txt`, but append ```_$arch``` before file extension. Like: ```hl_amd64.so``` or ```cs_e2k.so```.
* On everything else, it must use gamedll name from ```gamedll_linux``` field, but append ```_$os_$arch``` before file extension. Like: ```hl_haiku_amd64.so``` or ```cs_freebsd_armhf.so```.
Why ```gamedll_linux``` and not ```gamedll```? Because it looks more logic that way, most operating systems are *nix-like and share code with Linux, rather than Windows.

4. Refresh library: not needed, as RefAPI is not stable and it's not intended to distribute with mods.

For any libraries distributed **with** engine, naming scheme should be used more convenient for OS port.

Issue #0. Inconsistency between ABI and Q_buildarch.\
Resolution: Change Q_buildarch return value to use Debian-styled architectures list: https://www.debian.org/ports/, which includes a special naming for big/little-endian and hard/soft-float ARM.

Issue #1: Build-system integration.\
Resolution: implemented as [LibraryNaming.cmake](https://github.com/FWGS/hlsdk-portable/blob/master/cmake/LibraryNaming.cmake) and [library_naming.py](https://github.com/FWGS/hlsdk-portable/blob/master/scripts/waifulib/library_naming.py) extensions, see 

Issue #2(related to #0): Which ARM flavours we actually need to handle?\
Resolution: Little-endian only, as there is no known big-endian ARM platforms in the wild.
Architecture is coded this way:
* ```armvxy```, where `x` is ARM instruction set level and `y` is hard-float ABI presence: `hf` where hard float ABI used, otherwise `l`.

Issue #3: Some mods (like The Specialists, Tyrian, ...) already apply suffixes _i386, _i686 to the gamedll path:\
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

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..


================================================
FILE: Documentation/extensions/mp3-loops.md
================================================
## Looping MP3 extension

It is now possible to loop MP3 file in Xash3D FWGS by adding a custom text tag with `LOOP_START` or `LOOPSTART` in description and time point (in raw samples) in value.

### Example with foobar2000
1. Open Foobar2000
2. Add your .mp3 file to playlist
3. Right click to newly added file and select Properties
4. In Metadata tab, at the bottom of the table, select "+add new"
5. In newly added line replace `input field name` with `LOOP_START` (without any symbols).
6. Press Tab and enter loop time point in raw samples. For example, `0` will replay sound file from beginning to end indefinitely.

### Possible alternatives
1. Classic WAV files looping. HQ WAV files can take too much disk space, and recommended software supporting cue points is paid, outdated and can't run on modern systems. (Although there is alternative that's proven to work with idTech-based engines called LoopAuditioneer.)
2. Vorbis looping through comment. Engine doesn't support Vorbis but this extension was highly inspired by this hack.

### Known bugs and limitations
1. At this time using MP3 as SFX requires complete decoding. This can cause noticeable stutters, so keep MP3 file length in mind.
2. We deliberately only support modern ID3v2.3 and ID3v2.4 tags. Using ID3v1 is not possible.





================================================
FILE: Documentation/extensions/native-object.md
================================================
# GetNativeObject API

To be able to use platform-specific features or get optional engine interfaces, we've added a simple call to MobilityAPI on client DLL and PhysicsAPI for server DLL and extended MenuAPI for menu DLL.

It's defined like this:

```
void *pfnGetNativeObject( const char *name );
```

#### Cross-platform objects

Only these objects are guaranteed to be available on all targets.

| Object name | Interface |
|-------------|-----------|
| `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`. |

#### Android-specific objects

| Object name | Interface |
|-------------|-----------|
| `JNIEnv`    | Allows interfacing with Java Native Interface. |
| `ActivityClass` | Returns JNI object for engine Android activity class. |


================================================
FILE: Documentation/extensions/sounds.lst.md
================================================
# sounds.lst.md

Using sounds.lst located in scripts folder, modder can override some of the hardcoded sounds in temp entities and server physics.

File format:
```
<group name>
{
	<path1>
	<path2>
	<path3>
}

<group2 name> <path with %d> <min number> <max number>
```

* Sounds can use any supported sound format (WAV or MP3).
* The path must be relative to the sounds/ folder in the game or base directory root, addon folder, or archive root.
* Groups can be empty or omitted from the file to load no sound.
* Groups can either list a set of files or specify a format string and a range.
* Anything after // will be considered a comment and ignored.
* Behavior is undefined if the group was listed multiple times.

Currently supported groups are:
|Group name|Usage|
|----------|-----|
|`BouncePlayerShell`|Used for BOUNCE_SHELL tempentity hitsound|
|`BounceWeaponShell`|Used for BOUCNE_SHOTSHELL tempentity hitsound|
|`BounceConcrete`|Used for BOUNCE_CONCRETE tempentity hitsound|
|`BounceGlass`|Used for BOUCNE_GLASS|
|`BounceMetal`|Used for BOUNCE_METAL|
|`BounceFlesh`|Used for BOUNCE_FLESH|
|`BounceWood`|Used for BOUNCE_WOOD|
|`Ricochet`|Used for BOUNCE_SHRAP and ricochet tempentities|
|`Explode`|Used for tempentity explosions|
|`EntityWaterEnter`|Used for entity entering water|
|`EntityWaterExit`|Used for entity exiting water|
|`PlayerWaterEnter`|Used for player entering water|
|`PlayerWaterExit`|Used for player exiting water|

## Example

This example is based on defaults sounds used in Half-Life:

```
BouncePlayerShell "player/pl_shell%d.wav" 1 3
BounceWeaponShell "weapons/sshell%d.wav" 1 3
BounceConcrete "debris/concrete%d.wav" 1 3
BounceGlass "debris/glass%d.wav" 1 4
BounceMetal "debris/metal%d.wav" 1 6
BounceFlesh "debris/flesh%d.wav" 1 7
BounceWood "debris/wood%d.wav" 1 4
Ricochet "weapons/ric%d.wav" 1 5
Explode "weapons/explode%d.wav" 3 5
EntityWaterEnter "player/pl_wade%d.wav" 1 4
EntityWaterExit "player/pl_wade%d.wav" 1 4
PlayerWaterEnter
{
	"player/pl_wade1.wav"
}
PlayerWaterExit
{
	"player/pl_wade2.wav"
}
```


================================================
FILE: Documentation/gameinfo.md
================================================
# Game definition and information file

gameinfo.txt is an essential part of any Xash3D based game. It allows basic customization for games creators, like setting game title, DLL paths, etc.

This document defines gameinfo.txt syntax, supported keys and liblist.gam conversion rules for the latest version of the engine. Note for engine developers, keep this document in sync with an implementation.

## gameinfo.txt syntax

* gameinfo.txt is a simple list of keys and values, separated by newline.
* You can add single line comments using double slashes (//).
* Keys can accept integer, float, string or boolean values.
* Boolean keys use 0 as false and 1 as true value.
* To have spaces in string values, you must enclose them in double quotes. Then, to have double quotes, you must escape it with backslash, and to have a backslash you need to use double backslashes.

The example:
```
// this is a comment :)
// this is another comment
some_integer_key 123

this_is_float_key 13.37 // optional comment

enable_feature 1 // boolean, 1 to enable, 0 to disable

example_string_key string_value
example_spaces "string with spaces"
example_title "Fate\\Stay Night" // engine will parse it as Fate\Stay Night
```

## gameinfo.txt keys

This is a list of all gameinfo.txt keys supported by the engine. Be aware that the engine will silently skip all unrecognized keys.

| Key              | Type       | Default value   | Description |
| ---------------- | ---------- | --------------- | ----------- |
| `ambient0`       | string     | Empty string    | Automatic ambient sound |
| `ambient1`       | string     | Empty string    | Automatic ambient sound |
| `ambient2`       | string     | Empty string    | Automatic ambient sound |
| `ambient3`       | string     | Empty string    | Automatic ambient sound |
| `basedir`        | string     | `valve`         | Game base directory, used to share assets between games |
| `date`           | string     | Empty string    | Game release date. Unused. |
| `dllpath`        | string     | `cl_dlls`       | Game DLL path. Engine will search custom DLLs (client or menu, for example) in this directory, except `gamedll`, see below. |
| `fallback_dir`   | string     | Empty string    | Additional game base directory |
| `gamedir`        | string     | Current gamedir | Game directory, ignored in FWGS, as game directory is defined by the game directory name |
| `gamedll`        | string     | `dlls/hl.dll`   | Game server DLL for 32-bit x86 Windows (see LibraryNaming.md for details) |
| `gamemode`       | string     | Empty string    | Game type. When set to `singleplayer_only` or `multiplayer_only` marks the game as SP or MP only respectively, hiding the option in game UI. Omitting this key or using custom values mark the game as both MP and SP compatible. |
| `icon`           | string     | `game.ico`      | Game icon. Engine will automatically append .ico and may automatically switch to .tga icon as well |
| `max_beams`      | integer    | 128             | Beams limit, 64 min, 512 max |
| `max_edicts`     | integer    | 900             | Entities limit, 600 min, 8192 max (protocol limit). In FWGS, minimum is 64. |
| `max_particles`  | integer    | 4096            | Particles limit, 1024 min, 131072 max |
| `max_tempents`   | integer    | 500             | Temporary entities limit. 300 min, 2048 max |
| `mp_entity`      | string     | `info_player_deathmatch` | Entity used to mark maps as multiplayer |
| `mp_filter`      | string     | Empty string    | When set, used to filter multiplayer maps instead of `mp_entity`.<br>If the map name starts with the same characters as this filter, it's considered a multiplayer map |
| `nomodels`       | boolean    | 0               | When set to 1, disallows changing player model in UI |
| `noskills`       | boolean    | 0               | When set to 1, disallows selection of game difficulty |
| `secure`         | boolean    | 0               | When set to 1, original Unkle Mike's engine will completely disable developer mode. FWGS ignores but preserves this value for compatibility. |
| `size`           | integer    | 0               | Game directory size in bytes, used in Change Game dialog only |
| `startmap`       | string     | `c0a0`          | The name of the map used in new game |
| `sp_entity`      | string     | `info_player_start` | Entity used to mark map as single player. Used in map validation |
| `title`          | string     | `New Game`      | Game title, used in window title, default server name, etc. |
| `trainmap`       | string     | `t0a0`          | The name of the training map (Hazard Course) |
| `type`           | string     | Empty string    | Game type, used in Change Game UI. |
| `url_info`       | string     | Empty string    | Game homepage URL, used in Change Game UI |
| `url_update`     | string     | Empty string    | Game updates URL, used in Settings UI |
| `version`        | float      | 1.0             | Game version, used in Change Game dialog and in server info |

## FWGS-specific gameinfo.txt keys

These strings are specific to Xash3D FWGS.

| Key                     | Type       | Default value            | Description |
| ----------------------- | ---------- | ------------------------ | ----------- |
| `animated_title`        | boolean    | 0                        | Use animated title in main menu (WON Half-Life logo.avi imitation from Half-Life 25-th anniversary update)
| `autosave_aged_count`   | integer    | 2                        | Auto saves limit used in saves rotation |
| `gamedll_linux`         | string     | Generated from `gamedll` | Game server DLL for 32-bit x86 Linux (see LibraryNaming.md for details) |
| `gamedll_osx`           | string     | Generated from `gamedll` | Game server DLL for 32-bit x86 macOS (see LibraryNaming.md for details) |
| `hd_background`         | boolean    | 0                        | Use HD background for main menu (Half-Life 25-th anniversary update) |
| `internal_vgui_support` | boolean    | 0                        | Only for programmers! Required to be set as 1 for PrimeXT!<br>When set to 1, the engine will not load vgui_support DLL, as VGUI support is done (or intentionally ignored) on the game side. |
| `render_picbutton_text` | boolean    | 0                        | When set to 1, the UI will not use prerendered `btns_main.bmp` and dynamically render them instead |
| `quicksave_aged_count`  | integer    | 2                        | Quick saves limit used in saves rotation |
| `demomap`               | string     | Empty string             | The name of the demo chapter map (Half-Life Uplink) |

## Note on GoldSrc liblist.gam support

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.

> [!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.

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.

| `liblist.gam` key | `gameinfo.txt` key | Note |
| ----------------- | ------------------ | ---- |
| `animated_title`  | `animated_title`   |      |
| `edicts`          | `max_edicts`       |      |
| `fallback_dir`    | `fallback_dir`     |      |
| `game`            | `title`            |      |
| `gamedir`         | `gamedir`          |      |
| `gamedll`         | `gamedll`          |      |
| `gamedll_linux`   | `gamedll_linux`    |      |
| `gamedll_osx`     | `gamedll_osx`      |      |
| `hd_background`   | `hd_background`    |      |
| `icon`            | `icon`             |      |
| `mpentity`        | `mp_entity`        |      |
| `mpfilter`        | `mp_filter`        |      |
| `nomodels`        | `nomodels`         |      |
| `secure`          | `secure`           | In GoldSrc it's used to mark the multiplayer game as anti-cheat enabled.<br>Original Xash3D misinterprets its value for disallowing console and developer mode.<br>FWGS ignores this key but preserves for compatibility. |
| `startmap`        | `startmap`         |      |
| `size`            | `size`             |      |
| `trainingmap`     | `trainmap`         |      |
| `trainmap`        | `trainmap`         |      |
| `type`            | `type` & `gamemode`| In `liblist.gam` this key works as both `type` and `gamemode`.<br>If value is `singleplayer_only` or `multiplayer_only` the game is marked as SP or MP only, and `gameinfo.txt` type set to `Single` or `Multiplayer`.<br>Any custom value will mark the game as both SP and MP compatible, and type is set to whatever custom value. |
| `url_dl`          | `url_update`       |      |
| `url_info`        | `url_info`         |      |
| `version`         | `version`          |      |




================================================
FILE: Documentation/goldsrc-protocol-support.md
================================================
# 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:
```
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 use Reunion.
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).

Also, 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.


================================================
FILE: Documentation/hd-textures.md
================================================
### HD (external) textures support

Xash3D supports loading texture replacements in TGA format for almost all types of models in the game, except alias models at this time.

Textures are expected to be located at:
* `modfolder/materials/<mapname>` - for a specific map
* `modfolder/materials/common` - common for all maps
* `modfolder/materials/decals` - for decals
* `modfolder/materials/models/<model>` - for models (texture name must match the internal texture name in the model)

Support for high-resolution textures is enabled setting `host_allow_materials` cvar to `1` or in the menu, in "Video options" section.

#### Xash3D FWGS additions

In addition to paths above, Xash3D FWGS checks following paths:

* `modfolder/materials/sprites/<sprite>` - for sprites, except HUD sprites

Also, to check which texture replacements are loaded successfully, failed or weren't found, a mod developer can set `host_allow_materials` cvar value to `2`. The engine will spew log at any developer level in the following format:

```
Looking for <replacement> replacement... <status code> (<path relative to mod directory>)
```

Status codes:
* `OK` - texture replacement file was found and loaded into GPU memory successfully
* `FAIL` - texture file was found but hasn't been parsed or loaded successfully. Refer to engine log for more details.
* `MISS` - texture file wasn't found

Example:
```
Looking for maps/bounce.bsp:!waterblue tex replacement...OK (materials/common/!waterblue.tga)
Looking for maps/bounce.bsp:!waterblue_luma tex replacement...MISS (not found)
Looking for {shot2 decal replacement...MISS (materials/decals/{shot2.tga)
Looking for {shot4 decal replacement...MISS (materials/decals/{shot4.tga)
Looking for {shot3 decal replacement...MISS (materials/decals/{shot3.tga)
Looking for models/gman tex replacement...FAIL (materials/models/gman/GMan_Case1.tga)
Looking for models/gman tex replacement...FAIL (materials/models/gman/inside_1.tga)
```



================================================
FILE: Documentation/mod-porting-guide.md
================================================
# Self-made port
## Compatibility with RISC architectures
### Unaligned access
Unaligned access on **i386** causes only performance penalty, but on **RISC** it can cause unstable work.

For HLSDK at least you need such patches in util.cpp:
 - https://github.com/FWGS/halflife/commit/7bfefe86e35d67867ae7af830ac1fc38f2908360
 - https://github.com/FWGS/hlsdk-portable/commit/617d75545f2ecb9b2d46cc30728dc37c9eb6d35e

### Signed chars
`char` type defined as **signed** for **x86** and as **unsigned** for **arm**.

And sometimes such difference can break logic.

As a solution you can use `signed char` type in code directly or use `-fsigned-char` option for gcc/clang compilers.

For HLSDK at least you need such [fix](https://github.com/FWGS/hlsdk-portable/commit/1ca34fcb4381682bd517612b530db22a1354a795) in nodes.cpp/.h.

## Compatibility with 64bit architectures
You need list of patches for Studio Model Render, MAKE_STRING macro and nodes:
 - https://github.com/FWGS/hlsdk-portable/commit/d287ed446332e615ab5fb25ca81b99fa14d18a73
 - https://github.com/FWGS/hlsdk-portable/commit/3bce17e3a04f8af10a927a07ceb8ab0f09152ec4
 - https://github.com/FWGS/hlsdk-portable/commit/9ebfc981773ec4c7a89ffe52d9c249e1fbef9634
 - https://github.com/FWGS/hlsdk-portable/commit/00833188dab87ef5746286479ba5aeb9d83b4a0c
 - https://github.com/FWGS/hlsdk-portable/commit/4661b5c1a5245b27a5532745c11e44b5540e4172
 - https://github.com/FWGS/hlsdk-portable/commit/2b61380146b1d58a8c465f0e312c061b12bda115
 - https://github.com/FWGS/hlsdk-portable/commit/8ef6cb2427ee16a763103bd3f315f38e2f01cfe2

## Mobility API
Xash3D FWGS has special extended interface in `mobility_int.h` which adds some new features like vibration on mobile platforms.

## Porting server-side code
Original valve's server code was compatible with linux and gcc 2.x.

Newer gcc versions have restriction which breaks build.

Now, to make it building with gcc 4.x+ or clang, you need to do following:
* Go to cbase.h and redefine macros as following
```
#define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (&a)
#define SetTouch( a ) m_pfnTouch = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (&a)
#define SetUse( a ) m_pfnUse = static_cast <void (CBaseEntity::*)( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )> (&a)
#define SetBlocked( a ) m_pfnBlocked = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (&a)
#define ResetThink( ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (NULL)
#define ResetTouch( ) m_pfnTouch = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (NULL)
#define ResetUse( ) m_pfnUse = static_cast <void (CBaseEntity::*)( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )> (NULL)
#define ResetBlocked( ) m_pfnBlocked = static_cast <void (CBaseEntity::*)(CBaseEntity *)> (NULL)
...
#define SetMoveDone( a ) m_pfnCallWhenMoveDone = static_cast <void (CBaseToggle::*)(void)> (&a)
```
* Replace all SetThink(NULL), SetTouch(NULL), setUse(NULL) and SetBlocked(NULL) by ResetThink(), ResetTouch(), ResetUse() and ResetBlocked()
* Sometimes you may need to add #include <ctype.h> if functions tolower or isspace are missing

## Porting client-side code

* Redefine all DLLEXPORT defines as empty field (Place it under _WIN32 macro if you want to keep windows compatibility).
* Remove hud_servers.cpp and Servers_Init/Servers_Shutdown from hud.cpp.
* Fix CAPS filenames in includes (like STDIO.H, replace by stdio.h).
* Replace broken macros as DECLARE_MESSAGE, DECLARE_COMMAND by fixed examples from our hlsdk-portable port (cl_util.h).
* Add ctype.h where is needed (tolower, isspace functions).
* Add string.h where is needed (memcpy, strcpy, etc).
* Use in_defs.h from hlsdk-portable.
* Add input_xash3d.cpp from hlsdk-portable project to fix input.

Now your client should be able to build and work correctly.

# Porting mod to hlsdk-portable
Look at changes which was made.

If there are not too much changes (for example, only some weapons was added), add these changes in hlsdk-portable.

You can use diff with original HLSDK and apply it as patch to hlsdk-portable.

```
NOTE: Many an old mods was made on HLSDK 2.0-2.1 and some rare mods on HLSDK 1.0.
So you need to have different versions of HLSDK to make diffs.
Plus different Spirit of Half-Life versions if mod was made on it.
Also, weapons in old HLSDK versions does not use client weapon prediction system and you may be need to port standart half-life weapons to server side.
```
Files must have same line endings (use dos2unix on all files).

We recommend to enable ignoring space changes in diff.

Move all new files to separate directories.

# Possible replacements for non-portable external dependencies
1. If mod uses **fmod.dll** or **base.dll** to play mp3/ogg on client-side or to precache sounds on server-side, you can replace it with:
	- [pfnPrimeMusicStream](https://github.com/FWGS/hlsdk-portable/blob/master/engine/cdll_int.h#L293=) engine callback;
	- [miniaudio](https://github.com/mackron/miniaudio);
	- [phonon](https://community.kde.org/Phonon).

2. If mod uses **OpenGL**, porting code to Xash3D render interface is recommended.

3. If mod uses **cg.dll**, you can try to port code to [NVFX](https://github.com/tlorach/nvFX).

4. If mod uses detours, comment code or try to find replacement somehow by yourself.

# Additional recommendations
1. If mod uses STL, you can replace it with [MiniUTL](https://github.com/FWGS/MiniUTL).
2. Avoid to use dynamic casts to make small size binaries.
3. Avoid to use exceptions to make small size binaries.
 
# Writing build scripts

Use wscript/CMakeLists.txt files from hlsdk-portable as build scripts example.

Get .c and .cpp file lists from Visual Studio project.

Add missing include dirs.



================================================
FILE: Documentation/musl.md
================================================
# Xash3D FWGS on `musl`

Xash3D FWGS works on `musl` out of the box. However, the engine doesn't try to differentiate glibc and musl anymore. If you see error similar to:

```
Host_InitError: can't initialize cl_dlls/client.so: Error relocating valve/cl_dlls/client.so: __sprintf_chk: symbol not found
```

... or you know that the game you're running is linked against glibc, you can try using `libgcompat`, like this:

```
$ LD_PRELOAD=/lib/libgcompat.so.0 ./xash3d ...
```

It will automatically add the missing symbols that glibc binaries usually need. In the future we might automatically link engine against `libgcompat` for better compatibility with prebuilt or closed-source games, if there will be any use for this.


================================================
FILE: Documentation/nat-bypass-usage.md
================================================
# 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.


================================================
FILE: Documentation/not-supported-mod-list-and-reasons-why.md
================================================
# Not supported mods and reasons why

|Name							|Version			|Why not working						|What was made for that
|----							|-------			|---------------						|----------------------
|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.
|Arrange Mod: Rebirth					|v150				|No idea yet.							|
|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.
|Counter Strike						|Beta 6.5-			|Uses an old WON HL 1.0.0.16- interface.			|
|							|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.
|							|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-xash3d/tree/rebellion.
|Sven-Coop						|5.0+				|Uses custom GoldSrc engine.					|
|Time Shadows						|Beta 0.1			|Uses Direct3D renderer.					|


================================================
FILE: Documentation/opensource-mods.md
================================================
Source code of this mods is available for modders and porters in public access.

# Original Work
## Absolute Zero
Official gitlab repository - https://gitlab.com/Cobalt-57/half-life-absolute-zero/

## Adrenaline Gamer
Official github repository by Martin \"Bullet\" Webrant - https://github.com/martinwebrant/agmod

## Arrangement
Mirrored on github - https://github.com/JoelTroch/am_src_30jan2011

## Arrangemode: Rebirth
Mirrored on github - https://github.com/JoelTroch/am_src_rebirth

## Battle Grounds
Mirrored on github - https://github.com/nekonomicon/BattleGrounds

## 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)

Mirrored on github - https://github.com/HLSources/BubbleMod

## Chicken Fortress
Official github repository - https://github.com/CKFDevPowered/CKF3Alpha

## Cold Ice
Version 1.9 is available on ModDB - https://www.moddb.com/mods/cold-ice/downloads/cold-ice-sdk

Version 1.9 mirrored on github - https://github.com/solidi/hl-mods/tree/master/ci

## Cold Ice Ressurection
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

## Cthulhu
Uploaded to github by Oleg Cherkasky - https://github.com/gunrunners-paradise/Cthulhu-HLmod-SDK

## Deathmatch Classic
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
Official github repository - https://github.com/adslbarxatov/xash3d-for-ESHQ

## Flat-Life
Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/Half-Life_2D_(Flat-Life)

## Gang Wars
Mirrored on github - https://github.com/nekonomicon/gw1.45src

## Go-mod
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

## GT mod
Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/GT_mod_(Polnie_ishodniki)

## Half-Life: Advanced Deathmatch
Mirrored on github - https://github.com/solidi/hl-mods/tree/master/hla

## Half-Life: Decay
Mirrored on github(PC Port) - https://github.com/hoaxer/Half-Life-Decay

## Half-Life: Echoes
Available on ModDB - https://www.moddb.com/mods/half-life-echoes

## Half-Life: Expanded Arsenal
Available on ModDB - https://www.moddb.com/mods/half-life-expanded-arsenal

## Half-Life: Gravgun mod
Branch **gravgun** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/gravgun

## Half-Life: Invasion
Official github repository - https://github.com/jlecorre/hlinvasion

## Half-Life: Pong
Mirrored on github - https://github.com/solidi/hl-mods/tree/master/pong

## Half-Life: Quest Mode
Available on cs-mapping.com.ua - https://old.cs-mapping.com.ua/forum/showthread.php?t=38030

## Half-Life: Top-Down
Official gitlab repository - https://gitlab.com/Sockman/hltopdown

## Half-Life: Update
Official github repository - https://github.com/Fograin/hl-subsmod-ex

## Half-Life: Rally
Official gitlab repository - https://gitlab.com/hlrally/src

## 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

## Half-Life: Year of the Dragon
Available on ModDB - https://www.moddb.com/mods/year-of-the-dragon

## Half-Nuked
Available on ModDB - https://www.moddb.com/mods/half-nuked/downloads/half-nuked-src

## Half-Payne
Official github repository - https://github.com/suXinjke/HalfPayne

## Half-Quake
Official github repository - https://github.com/muddasheep/hqtrilogy

## Half-Rats: Parasomnia
Official github repository - https://github.com/HeathGames/half_rats_parasomnia_src

## Half-Screwed
Official github repository - https://github.com/desukuran/half-screwed

## Headcrab Frenzy
Version 1.3 on ModDB - https://www.moddb.com/mods/headcrab-frenzy/downloads/headcrab-frenzy-13-beta-source-code

## Heart of Evil
Mirrored on github - https://github.com/nekonomicon/HeartOfEvil

## Ingram Chillin' Mod
Official SourceForge repository - https://sourceforge.net/projects/icm-hl/

## 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
Official github repository - https://github.com/vermagav/mechmod

## Mortal Combat Forever
Available on GamerLab - http://gamer-lab.com/eng/code_mods_goldsrc/Mortal_Combat_Forever_(Polnie_ishodniki)

## Natural Selection
Official github repository - https://github.com/unknownworlds/NS

## Overturn
Available in mod archive on ModDB - https://www.moddb.com/mods/overturn

## Oz Deathmatch
Mirrored on github - https://github.com/nekonomicon/OZDM

## Paranoia
Available on ModDB - https://www.moddb.com/mods/paranoia/downloads/paranoia-toolkit

## Paranoia 2: The Savior
Prealpha, mirrored on github - https://github.com/a1batross/Paranoia2_ancient

Version 1.51, mirrored on github - https://github.com/a1batross/Paranoia2_original

## Raven City
*Unfinished mod*

Was found on HLFX - http://hlfx.ru/forum/showthread.php?s=2c892dfc52f72be52a89c3f52a397cd0&threadid=1819&postid=44674#post44674

## Ricochet
Available in Valve's Half-Life repository - https://github.com/ValveSoftware/halflife/tree/master/ricochet

## 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

## The Wastes
Version 1.5: mirrored on code.idtech.space - https://code.idtech.space/vera/halflife-thewastes-sdk

## Threewave CTF
*Unfinished mod by Valve Software*

Available in Valve's Half-Life repository with Deathmatch Classic sources - https://github.com/ValveSoftware/halflife/tree/master/dmc

## Trinity Render
Available on ModDB - https://www.moddb.com/mods/half-life-episode-two/downloads/trinity-rendering-engine-v308f

## Tyrian: Ground Assault
Available on ModDB - https://www.moddb.com/mods/tyriangroundassault/downloads/tyrianga-v1-0-src

## Wasteland
Mirrored on code.idtech.space - https://code.idtech.space/vera/halflife-wasteland-sdk

## Wizard Wars
Download page on official site - http://www.thothie.com/ww/

## XashXT
Mirrored on github - https://github.com/a1batross/XashXT_original

## Xen-Warrior
*Source code is a part of Spirit of Half-Life 1.0-1.2 under XENWARRIOR macro*

[Logic&Trick's](https://github.com/LogicAndTrick) mirror - https://files.logic-and-trick.com/#/Half-Life/Mods/Spirit%20of%20Half-Life

## 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

## ZXC
Available on ModDB - https://www.moddb.com/mods/zxc-mod-133/downloads/zxc-mod-136-final

Mirrored on github - https://github.com/ZXCmod/ZXCmod

# Reimplementation
## Absolute Redemption
Branch **redempt** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/redempt

## Adrenaline Gamer
OpenAG by YaLTeR - https://github.com/YaLTeR/OpenAG

## Afraid of Monsters
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

## Afraid of Monsters: Director's cut
Reverse-engineered code: branch **aomdc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aomdc

## Azure Sheep
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

## Big Lolly
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

## Black Ops
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

## Bloody Pizza: Vendetta
Branch **caseclosed** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/caseclosed

## Case Closed
Branch **caseclosed** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/caseclosed

## Cleaner's Adventures
Branch **CAd** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/CAd

## Counter Strike
Reverse-engineered code of client part by a1batross - https://github.com/Velaron/cs16-client

Reverse-engineered code of server part by nagist - https://github.com/nagist/cs16nd

Reverse-engineered code of server part by s1lentq - https://github.com/s1lentq/ReGameDLL_CS

## Counter Strike Online
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
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

## Escape from the Darkness
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

## Half-Life: Black Guard
*This mod uses dlls from Cleaner's Adventures*

Branch **CAd** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/CAd

## Half-Life: Blue Shift
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

## Half-Life: Induction
Branch **induction** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/induction

## Half-Life: Opposing Force
Recreation by lostgamer aka nillerusr - https://github.com/LostGamerHL/hlsdk-xash3d

Reverse-engineered code: clean branch **opfor** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/opfor

Spirit of Half Life: Opposing-Force Edition - https://github.com/Hammermaps-DEV/SOHL-V1.9-Opposing-Force-Edition

## Half-Life: Rebellion
Reverse-engineered code: branch **rebellion** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/rebellion

## Half-Life: Urbicide
Branch **hl_urbicide** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/hl_urbicide

## Half-Life: 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

## Half-Secret
Branch **half-secret** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/half-secret

## Night at the Office
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

## Poke 646
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

## Poke 646: 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

## Residual Life
Reverse-engineered code: branch **residual_point** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/residual_point

## Residual Point
Reverse-engineered code: branch **residual_point** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/residual_point

## Sewer Beta
Branch **sewer_beta** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sewer_beta

## Team Fortress Classic
Reverse-engineered code by Velaron - https://github.com/Velaron/tf15-client

## The Gate
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

## They Hunger
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

They Hunger: Tactical - https://www.moddb.com/mods/they-hunger-tactical/downloads/tht-source-code-documentation

## Times of Troubles
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

# Derived work
## Adrenaline Gamer
Branch **aghl** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/aghl

## Bubblemod
Branch **bubblemod** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/bubblemod

## Deathmatch Classic
Deathmatch Classic: Adrenaline Gamer Edition - https://github.com/martinwebrant/agmod/tree/master/src/dmc

Deathmatch Quaked - https://www.moddb.com/games/deathmatch-classic/downloads/dmq2

Branch **dmc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/dmc

## Half-Life: Echoes
Branch **echoes** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/echoes

## Half-Life: 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

Branch **invasion** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/invasion

## Half-Life: Top-Down
Branch **hltopdown** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/hltopdown

## Half-Screwed
Branch **half-screwed** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/half-screwed

## Natural Selection
Port to Linux - https://github.com/fmoraw/NS

## Spirit of Half-Life
Version 1.2: branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2

## Swiss Cheese Halloween 2002
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

## The Wastes
Version 1.5: Port to Linux - https://git.mentality.rip/a1batross/halflife-thewastes-sdk

## Threewave CTF
Branch **dmc** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/dmc

## Xen-Warrior
Branch **sohl1.2** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/sohl1.2

## Zombie-X
Branch **zombie-x** in hlsdk-portable - https://github.com/FWGS/hlsdk-portable/tree/zombie-x



================================================
FILE: Documentation/ports.md
================================================
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.

For porting guidelines, read engine-porting-guide.md.

Status: 
* **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.
* **Old Engine**: port was for old engine fork.
* **Deprecated**: not supported anymore.

Table is sorted by status and platform.

| Platform        | Status                     | Maintainer               | Note
| --------        | ------                     | ----------               | ----
| Android         | Supported                  | @Velaron                 |
| *BSD            | Supported                  | @nekonomicon             |
| GNU/Linux       | Supported                  | @a1batross, @mittorn     |
| macOS           | Supported                  | @sofakng                 | 
| PSVita          | Supported                  | @fgsfdsfgs               |
| Switch          | Supported                  | @fgsfdsfgs               |
| Windows         | Supported                  | @a1batross, @SNMetamorph |
| 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)
| Wii             | In progress                | Collaborative effort     | [GitHub Repository](https://github.com/saucesaft/xash3d-wii)
| Emscripten      | Old Engine                 | N/A                      | 
| 3DS             | Old Engine fork            | N/A                      | [GitHub Repository](https://github.com/masterfeizz/Xash3DS)
| Oculus Quest    | Old Engine fork            | N/A                      | [GitHub Repository](https://github.com/DrBeef/Lambda1VR)
| iOS             | Deprecated                 | N/A                      | See GitHub issue #61


================================================
FILE: Documentation/psvita.md
================================================
## PlayStation Vita port

### Prerequisites
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/). 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
   ux0:tai/kubridge.skprx
   ```

3. Install `libshacccg.suprx` by following [this guide](https://cimmerian.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx).

### Installation
1. If you have an old vitaXash3D install, remove it.
2. Get `xash3d-fwgs-psvita.7z` from the latest [automatic build](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous).
3. Install `xash.vpk` from the 7z archive onto your PSVita.
4. Copy the `data` directory from the 7z archive to the root of your PSVita's SD card.
5. Copy the valve folder and any other mod folders from your Half-Life install to `ux0:/data/xash3d/` (you can use other mountpoints instead of `ux0`). **Do not overwrite anything.**

### Build instructions
1. Install [VitaSDK](https://vitasdk.org/).
2. Build and install [vitaGL](https://github.com/Rinnegatamante/vitaGL):
    ```
    git clone https://github.com/Rinnegatamante/vitaGL.git
    make -C vitaGL NO_TEX_COMBINER=1 HAVE_UNFLIPPED_FBOS=1 HAVE_PTHREAD=1 SINGLE_THREADED_GC=1 MATH_SPEEDHACK=1 DRAW_SPEEDHACK=1 HAVE_CUSTOM_HEAP=1 -j2 install
    ```
3. Build and install [vita-rtld](https://github.com/fgsfdsfgs/vita-rtld):
    ```
    git clone https://github.com/fgsfdsfgs/vita-rtld.git && cd vita-rtld
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make -j2 install
    ```
4. Build and install [this SDL2 fork](https://github.com/Northfear/SDL) with vitaGL integration:
    ```
    git clone https://github.com/Northfear/SDL.git && cd SDL
    mkdir build && cd build
    cmake -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DVIDEO_VITA_VGL=ON ..
    make -j2 install
    ```
5. Use `waf`:
    ```
    ./waf configure -T release --psvita
    ./waf build
    ```
6. Copy all the resulting `.so` files into a single folder:
    ```
    ./waf install --destdir=xash3d
    ```
7. `xash.vpk` is located in `build/engine/`.


================================================
FILE: Documentation/supported-mod-list.md
================================================
- [List of mods which work on Linux and other non-Windows platforms without troubles](#list-of-mods-which-work-on-linux-and-other-non-windows-platforms-without-troubles)
   - [List of Half-life-based mods](#list-of-half-life-based-mods)
        - [The big singleplayer mods and mappacks](#the-big-singleplayer-mods-and-mappacks)
        - [Unfinished singleplayer mods and mappacks](#unfinished-singleplayer-mods-and-mappacks)
        - [Just mappacks](#just-mappacks)
        - [Singleplayer mods or mappacks with a little incompatibilities](#singleplayer-mods-or-mappacks-with-a-little-incompatibilities)
        - [Singleplayer mods which has custom gamedll with minor changes and fully playable with vanilla Half-Life libraries](#singleplayer-mods-which-has-custom-gamedll-with-minor-changes-and-fully-playable-with-vanilla-half-life-libraries)
        - [Singleplayer mods with one map or single maps](#singleplayer-mods-with-one-map-or-single-maps)
   - [List of mappacks for Half-Life: Blue Shift](#list-of-mappacks-for-half-life-blue-shift)
   - [List of Cleaner's Adventures-based mods](#list-of-cleaners-adventures-based-mods)
   - [List of mods which based on Spirit of Half-Life](#list-of-mods-which-based-on-spirit-of-half-life)
        - [Mods which based on vanilla Spirit of Half-Life 1.2 or older](#mods-which-based-on-vanilla-spirit-of-half-life-12-or-olderfully-playable-with-sohl-12-libraries)
        - [Mods which based on modified Spirit of Half-Life 1.2 or older](#mods-which-based-on-modified-spirit-of-half-life-12-or-olderpartially-playable-with-sohl-12-libraries-or-not-playable-at-all)
        - [Mods which based on Spirit of Half-Life 1.4/1.5/1.8](#mods-which-based-on-spirit-of-half-life-141518fully-playable-with-sohl-18-libraries-partially-playable-with-sohl-12-libraries-or-not-playable-at-all)
        - [Mods which based on Spirit of Half-Life 1.3/1.6/1.7/1.9](#mods-which-based-on-spirit-of-half-life-13161719fully-playable-with-sohl-19-libraries-partially-playable-with-sohl-12-libraries-or-not-playable-at-all)
   - [List of Opposing Force-based mods](#list-of-opposing-force-based-mods)
        - [The big singleplayer mods or mappacks](#the-big-singleplayer-mods-or-mappacks)
        - [Unfinished mods](#unfinished-mods)
        - [Singleplayer mods with one map or single maps](#singleplayer-mods-with-one-map-or-single-maps-1)
   - [List of XashXT-based mods](#list-of-xashxt-based-mods)
   - [List of They Hunger-based mods](#list-of-they-hunger-based-mods)
        - [The big singleplayers mods](#the-big-singleplayers-mods)
        - [Single maps](#single-maps)
   - [List of supported mods from mobile_hacks branch of HLSDK Portable by FWGS](#list-of-supported-mods-from-mobile_hacks-branch-of-hlsdk-portable-by-fwgs)
   - [List of games and mods with custom gamedll](#list-of-games-and-mods-with-custom-gamedll)
   - [List of Counter Strike-based mods](#list-of-counter-strike-based-mods)

# List of mods which work on Linux and other non-Windows platforms without troubles
Most universal way to install and run mods - place your mod folder beside valve folder and launch engine with command-line arguments `-game <modfolder>`

Also, on some platforms you can see "Custom Game" menu in game where you can choose and run any installed mod.

For mappacks - place *.bsp files to **valve/custom/maps** folder, *.wad files to **valve/custom** and type **`map <mapname>`** cmd in game.

## List of Half-Life-based mods
Originally this list was written by @Qwertyus3D (*Qortez*)

### The big singleplayer mods and mappacks
1. [101 grunts](https://www.runthinkshootlive.com/posts/101-grunts/)
2. [1986(Black Mesa Circa 1979,1986)](https://www.fileplanet.com/110726/110000/fileinfo/Black-Mesa-Circa-1979,-1986)
3. [2009EB](https://hldm.ucoz.ru/forum/5-185-1)
4. [A Day in the Life of a Coward](https://www.runthinkshootlive.com/posts/a-day-in-the-life-of-a-coward/)
5. **[A dream](https://gamebanana.com/maps/162091)** aka [Map a Dream](https://twhl.info/vault.php?map=5529) by *Skals* (set **fps_max** to **60** to prevent a possible sticking of the box in the elevator at the map **comp28m2**)
6. [Adam](https://www.moddb.com/mods/adam)
7. **[Affliction](https://www.moddb.com/mods/affliction)**
9. [Agamemnon Icarus Glass](https://twhl.info/vault.php?map=1978)
10. **[Aggregate Pain](https://www.runthinkshootlive.com/posts/aggregate-pain/)**
11. **[Alternative Way: Part 1](https://www.runthinkshootlive.com/posts/alternative-way-part-1/)**
12. [Assassin Mark 2](https://www.fileplanet.com/112020/110000/fileinfo/Assassin-Mark-2)
13. [Assault on Roswell v2.0](https://www.moddb.com/mods/assault-on-roswell)
14. **[Back to Xen](https://www.runthinkshootlive.com/posts/back-to-xen/)**
15. **[Back to Xen 2](https://www.runthinkshootlive.com/posts/back-to-xen-2/)**
16. [Be Careful!](https://www.fileplanet.com/110304/110000/fileinfo/Be-Careful!)
17. **[Beginnings](https://www.runthinkshootlive.com/posts/beginnings/)**
18. [Betrayal](https://www.moddb.com/mods/betrayal) (this mod has inner bugs)
19. **[Between Two Worlds](https://www.runthinkshootlive.com/posts/between-two-worlds/)**
20. [Black Mesa Energy Testing Chamber](https://twhl.info/competitions.php?results=17)
21. **[Black Mesa Sideline](https://www.moddb.com/mods/black-mesa-sideline)**
22. [BlackMesa 2007( Black Mesa Missions 2007 )](https://www.moddb.com/addons/blackmesa-2007)
23. [Blood and Bones](https://www.runthinkshootlive.com/posts/blood-and-bones/)
24. [Boom (Huknenn) v1.0](https://gamebanana.com/mods/35976) & [HL Boom: Gold Edition v1.1](https://www.moddb.com/mods/boom)
25. [BoomeNShtein3D: Episode 1](https://www.moddb.com/games/half-life/addons/boomenshtein3d-episode-1)
26. **[Brave Brain](https://www.moddb.com/mods/brave-brain)**
27. [Breakdown](https://www.runthinkshootlive.com/posts/breakdown-1/)
28. [Breakdown 2: Afterwards](https://www.runthinkshootlive.com/posts/breakdown-2-afterwards/)
29. [Buddhist Wars](https://www.moddb.com/mods/buddhist-wars)
30. **[C&C Tiberian Dawn v2.0](https://www.moddb.com/mods/half-life-cc-tiberian-dawn)**
31. [Castle Creep](https://www.runthinkshootlive.com/posts/castle-creep/) (there is an inner bug in the end of 4th map - don't go further of that point where a bomb is placed, otherwise level change will not work)
32. [Castle Disposed](https://www.moddb.com/mods/castle-disposed)
33. **[Chaos Theory](https://www.runthinkshootlive.com/posts/chaos-theory/)**
34. [Chernobyl](https://www.moddb.com/downloads/half-life3) (this mod has inner bugs; in the beginning you have to use **noclip**, to fix a sticking in the bus)
35. [ChickenMix](https://twhl.info/vault.php?map=3118)
36. [ChickenMix 2](https://twhl.info/vault.php?map=3434) (there are a couple of minor bugs, but they are inner bugs of the mod)
37. [Confronted with Consequences](https://www.moddb.com/mods/confronted-with-consequences) & [Confronted with Consequences 2016 Remake](https://www.moddb.com/mods/confronted-with-consequences-2016-remake)
38. [Construction](https://www.runthinkshootlive.com/posts/construction/)
39. [Conundrum](https://www.runthinkshootlive.com/posts/conundrum/)
40. [Conundrum 2](https://www.runthinkshootlive.com/posts/conundrum-2/)
41. [Crash](https://www.runthinkshootlive.com/posts/crash/) (there is a small issue with a lift in a final map - you should stay closely to the lift's button after you've pressed it, otherwise door of the lift won't open)
42. [CWC Board Mappack Initiative](https://www.moddb.com/mods/cwc-pack-initiative) (the mod has inner bugs)
43. **[DAV Sub](https://www.moddb.com/mods/davsub)**
44. **[DAV Train](https://www.moddb.com/mods/davtrain)**
45. [death = power](https://www.fileplanet.com/53953/50000/fileinfo/Death=power)
46. [Death in the Dark](https://www.moddb.com/games/half-life/addons/death-in-the-dark) (there are some minor inner bugs, but they don't interfere with the mod's progress)
47. [DejaVu v2.00](https://www.moddb.com/mods/dejavu)
48. **[Destination Black Mesa](https://www.moddb.com/mods/destination-black-mesa)** (there is a small inner problem that can randomly appear in the mod's ending - the last map with credits may not work properly; type restart command into console if you get this issue)
49. [Destiny](https://twhl.info/competitions.php?results=15)
50. [Deth](https://www.runthinkshootlive.com/posts/deth/)
51. [Do](https://www.runthinkshootlive.com/posts/do/)
52. [Doomed-life](https://www.moddb.com/mods/doomed-life)
53. [Down Time](https://www.runthinkshootlive.com/posts/down-time/)
54. [Drug Barons](https://www.runthinkshootlive.com/posts/drug-barons/)
55. [Dungeon Death](http://darktreemedia.com/dungeondeath/)
56. [Dust Runner v1.1](https://www.runthinkshootlive.com/posts/dust-runner/)
57. [Dwell](https://www.runthinkshootlive.com/posts/dwell/)
58. **[E. T. C. ( Earthquake Testing Centre )](https://www.moddb.com/mods/etc2)**
59. **[E. T. F.](https://www.moddb.com/mods/e-t-f)**
60. **[E7: Black Star](https://www.moddb.com/mods/e7-black-star)** (set **fps_max** to **50** for the map an_ele to prevent a possible sticking of boxes on a big elevator's platform; or you can try to push a box down from the platrofm before the elevator stops)
61. **[Edge of Darkness](https://www.moddb.com/mods/hl-edge-of-darkness)**
62. [Edge of Death - Series 1](https://twhl.info/vault.php?map=5088)
63. [Engineering Mankind](https://twhl.info/competitions.php?results=13)
64. [Episode Power Plant and China](https://www.artpeter.net/Data/HalfLife/Hl.php)
65. [Episode Secret Weapon](https://www.artpeter.net/Data/HalfLife/Hl.php) (you will face a serious inner bug at the second map if you try to play this mod on hard difficulty)
66. **[Escape](https://www.runthinkshootlive.com/posts/escape-by-leo-ring/)** by *Leo Ring*
67. [Escape from the Egyptian Tomb( RacerX Compo 12 Egyptian Museum )](https://twhl.info/vault.php?map=2368)
68. [Espionage](https://www.runthinkshootlive.com/posts/espionage/)
69. [Exodus](https://www.moddb.com/games/half-life/addons/exodus-1)
70. [Exodus 2](https://www.moddb.com/games/half-life/addons/exodus-2)
71. [Failure](https://www.moddb.com/games/half-life/addons/failure)
72. [Faraon](https://www.moddb.com/games/half-life/addons/faraon-1-4)(it's a set of 4 maps which can be combined in one singleplayer episode: [map 1](http://www.fileplanet.com/50963/50000/fileinfo/Fara%C3%B3n-1), [map 2](http://www.fileplanet.com/50459/50000/fileinfo/Faraon2), [maps 3-4](http://www.fileplanet.com/51799/50000/fileinfo/Faraon-3-4))
73. **[Fate Reversal v1.1](https://www.moddb.com/mods/fate-reversal)**
74. **[Fathom 2.4](https://twhl.info/vault.php?map=4759)**
75. [Freeman](https://www.runthinkshootlive.com/posts/freeman/)
76. [Freeman's Escape](https://www.moddb.com/mods/freeman-escape-french) (2 maps by *JiggZ*)
77. [Freeman's Fight](https://www.runthinkshootlive.com/posts/freemans-fight/)
78. [Freeman's Return](https://www.moddb.com/games/half-life/addons/freemans-return-v12)
79. [Freeman's Return 2](https://www.moddb.com/games/half-life/addons/freemans-return-2-v11)
80. **[Freeman's Revenge](https://www.runthinkshootlive.com/posts/freemans-revenge/)**
81. [Freeman's Tomb( The Crypt )](https://twhl.info/vault.php?map=3787)
82. **[G-Invasion v2.6](https://www.moddb.com/mods/g-man-invasion)** aka G-Man Invasion
83. [G-Man House](https://www.moddb.com/games/half-life/addons/g-man-house)
84. [GameStar( Episode 4 GameStar )](https://www.runthinkshootlive.com/posts/gamestar/)
85. [Gateway](https://www.moddb.com/mods/gateway)
86. [Gateway 2](https://www.moddb.com/mods/gateway-2)
87. [Gina's Adventures](https://www.moddb.com/mods/ginas-adventures)
88. **[Gman Island Part 1](https://www.runthinkshootlive.com/posts/gman-island-part-1/)**
89. **[Gman Island Part 2](https://www.runthinkshootlive.com/posts/gman-island-part-2/)**
90. **[Graber v1.1](https://www.moddb.com/mods/graber-half-life-mod)**
91. [Graf War](https://www.runthinkshootlive.com/posts/graf-war/)
92. **[Ground Zero](https://www.moddb.com/mods/half-life-ground-zero)** by *Derek 'Hellfire' McBurney*
93. **[Gut Reaction](https://www.moddb.com/mods/gut-reaction)**
94. **[Half-Life C.A.G.E.D.](https://store.steampowered.com/app/679990/HalfLife_Caged/)**
95. **[Half-Life: Dreamcast v1.1](https://www.moddb.com/mods/half-life-dreamcast)**
96. [Half-Life: OPS](https://www.runthinkshootlive.com/posts/half-life-ops/) 
97. **[Half-Quake](https://www.moddb.com/mods/halfquake-amen)**
98. **[Half-Quake 2: Amen](https://www.moddb.com/mods/halfquake-amen)**
99. [Hard 2](https://www.runthinkshootlive.com/posts/hard-2/) (set **fps_max** to **60** to prevent a possible sticking of Barney on an elevator in the beginning of the mod)
100. [Hardman - In the City](https://www.runthinkshootlive.com/posts/hardman-in-the-city/) (the updated version of the mod has been tested)
101. [Haunted](https://www.runthinkshootlive.com/posts/haunted/) (set **sv_validate_changelevel** to **0** to avoid a problem with level change between maps **pagan7** and **pagan8**)
102. [Hazardous Materials: Episode 1 & 2](https://www.moddb.com/mods/half-life-hazardous-materials)
103. **[Hazardous-Course 2](https://www.moddb.com/mods/hazardous-course-2)**
104. [Help Wanted](https://www.moddb.com/games/half-life/addons/help-wanted)
105. [Hidden Evil v1.01](https://www.runthinkshootlive.com/posts/hidden-evil/)
106. [High Speed](https://www.moddb.com/games/half-life/addons/high-speed-english-version)
107. **[hlife_hotdog_compo26](https://twhl.info/vault.php?map=5181)**
108. [Home Alone -NOT](https://www.fileplanet.com/49895/40000/fileinfo/Home-Alone--NOT)
109. **[Hour-Glass](https://www.moddb.com/mods/hour-glass)**
110. [Idol Hunt](https://www.runthinkshootlive.com/posts/idol-hunt/)
111. [Independence Day](https://www.runthinkshootlive.com/posts/independence-day/) (set **sv_validate_changelevel** to **0** to avoid a problem with incorrect level transitions)
112. [Infestation](https://www.runthinkshootlive.com/posts/half-life-infestation/)
113. [Infiltracja](https://unquenque.com/tenfour/)
114. **[Infinite Rift](https://www.moddb.com/mods/infinite-rift)**
115. **[Instinct](https://www.moddb.com/mods/instinct)**
116. [Insurrection](https://www.runthinkshootlive.com/posts/insurrection/)
117. [Irreality](https://www.moddb.com/mods/irreality)
118. [Ispitatel](https://www.moddb.com/mods/ispitatel)
119. [Jailbreak](https://www.runthinkshootlive.com/posts/jailbreak/)
120. [Kill All Greenpeace](https://www.moddb.com/mods/kill-all-greenpeace)
121. [Krypton](https://www.runthinkshootlive.com/posts/krypton/) (there is one inner bug on the map with a rocket pad - the rocket can get stuck when you try to launch it)
122. [Lands of Lore v2](https://www.moddb.com/mods/half-life-lands-of-lore)
123. [Last-life](https://www.moddb.com/mods/hl-last-life)
124. **[Life's End](https://www.moddb.com/mods/lifes-end2)**
125. [Macky's Adventure](https://www.moddb.com/mods/mackys-adventure-expansion-set)
126. [MadCrabs](https://www.runthinkshootlive.com/posts/mad-crabs-1/) (there are couple of potential scripting problems, but they seem to be inner problems of the mod, so if you stuck somewhere just try to replay your game from last autosave)
127. [Marine Invasion: Episode 1 & 2](https://gamebanana.com/gamefiles/2537)
128. **[Mario Keys](https://www.moddb.com/mods/mario-keys)**
129. [McBeth](https://www.runthinkshootlive.com/posts/mcbeth/)
130. [Medieval World](https://www.moddb.com/mods/medieval-world)
131. [Mel Soaring 2: Star Rancor](https://www.moddb.com/addons/mel-soaring-2-star-rancor)
132. **[MINIMICUS](https://twhl.info/vault.php?map=163)**
133. [Misantrophy](https://www.runthinkshootlive.com/posts/misanthropy/)
134. **[Mission Failed](https://www.moddb.com/mods/mission-failed)**
135. [Mission MC Poker](https://www.moddb.com/mods/half-life-mission-mc-poker)
136. **[Mission of Mercy](https://www.runthinkshootlive.com/posts/mission-of-mercy/)**
137. [Mission to Kill](https://www.vossey.com/mod/Half-Life/Mision-to-kill-Part-1-et-2--i625.htm)
138. [Mission to Kill 2](https://www.vossey.com/mod/Half-Life/Mision-to-kill-Part-1-et-2--i625.htm)
139. [Mistaken Identity](https://www.runthinkshootlive.com/posts/mistaken-identity/)
140. [Mistaken Identity 2](https://www.runthinkshootlive.com/posts/mistaken-identity-part-2/)
141. **[Moonwalker](https://www.moddb.com/mods/moonwalker)**
142. [Mystery House v1.0](https://www.moddb.com/mods/mystery-house)
143. [NewBlackMesaVille](https://www.runthinkshootlive.com/posts/newblackmesaville/)
144. [Night Shooting](https://www.moddb.com/games/half-life/addons/night-shooting)
145. **[No Exit](https://www.moddb.com/mods/no-exit)**
146. [No-Life](https://www.fileplanet.com/120501/120000/fileinfo/No-Life)
147. **[Nuclear Power Plant](https://www.runthinkshootlive.com/posts/nuclear-power-plant/)**
148. [Occupied Territory](https://www.moddb.com/games/half-life/addons/occupied-territory)
149. [Office Commando](https://www.runthinkshootlive.com/posts/office-commando/)
150. **[Operacja Gargantua](https://www.runthinkshootlive.com/posts/operation-gargantua/)**
151. **[Operacja Mirra](https://unquenque.com/tenfour/)**
152. **[Operation Krautsalat v1.1](https://www.runthinkshootlive.com/posts/operation-krautsalat/)** (there is a potential inner bug at third map - a door to the control room will not be opened, until all alien grunts leaved their cells, so don't kill any of them, which are still in cells)
153. **[Operation: Nova](https://www.moddb.com/mods/half-life-operation-nova)** (there is an inner bug with an M60 machinegun on a map with Osprey: it can be activated and used if you are staying in front of it, not behind it)
154. [Optimum Fear](https://www.fileplanet.com/7472/0/fileinfo/Optimum-Fear)
155. [Outrun](https://www.moddb.com/mods/outrun)
156. [Outwards (Day One)](https://web.archive.org/web/20161026104825/http://visgi.info/maps/)
157. [Overhaul Pack](https://www.moddb.com/mods/half-life-overhaul-pack) (Just HD pack for Half-Life)
158. [P.I.Z.D.E.C.](https://www.runthinkshootlive.com/posts/pizdec/)
159. [pagoda](https://www.moddb.com/mods/pagoda1)
160. **[Peaces Like Us v1.0](https://www.runthinkshootlive.com/posts/peaces-like-us/)**
161. [Phobos IV](https://www.moddb.com/mods/phobos-iv)
162. [Pimp My Car](https://www.runthinkshootlive.com/posts/pimp-my-car/) (there is an inner issue with incorrect responses of buttons on combination locks)
163. [Point Blank – Stackdeath Complex](https://www.runthinkshootlive.com/posts/half-life-point-blank-stackdeath-complex/)
164. [Prisoner Escaped](https://www.moddb.com/mods/prisoner-escaped-1-2)
165. **[Prisoner of Event](https://wp.vondur.net/?page_id=40)**
166. [Prisoner of War](https://www.runthinkshootlive.com/posts/prisoner-of-war/)
167. [Project Quantum Leap](https://www.moddb.com/mods/project-quantum-leap)
168. [Project VIP](https://www.pcosmos.ca/mods-hl/downloads/?mod=projectVIP)
169. **[Projekt Einstein](https://unquenque.com/tenfour/)**
170. [Recon( Reconnaissance )](https://www.moddb.com/games/half-life/addons/reconnaissance)
171. [Red Mesa](https://www.moddb.com/mods/red-mesa-1)
172. [Red Mesa 2](https://www.moddb.com/mods/red-mesa-2)
173. [RES v1.0](https://www.fileplanet.com/29002/20000/fileinfo/RES)
174. [Rescue 9-1-Freeman](https://www.moddb.com/mods/rescue-9-1-freeman)
175. [Resistance](https://www.runthinkshootlive.com/posts/resistance/)
176. [Resistance 2](https://www.runthinkshootlive.com/posts/resistance-2/)
177. [Resistance 3](https://www.runthinkshootlive.com/posts/resistance-3/)
178. [Return](https://www.runthinkshootlive.com/posts/return/)
179. [Return 2](https://www.runthinkshootlive.com/posts/half-life-return-2/) (there is an inner problem in the first map with a moving of the second metal box, just keep pushing the box, until it begins to move)
180. [Reviviscence](https://www.moddb.com/mods/reviviscence)
181. [Road of Destiny](https://www.fileplanet.com/10393/10000/fileinfo/Road-of-Destiny)
182. **[Rooms: TWHL COOP Project( Rooms Half-Life or TWHL Rooms )](https://twhl.info/vault.php?map=5394)**
183. [Run for Life](https://www.runthinkshootlive.com/posts/run-for-life/) (the "stolen" version of this mod with changed menu background also known as *Mad Escape*)
184. [S.W.A.T.](https://www.moddb.com/mods/swat2)
185. [Sabotage](https://www.runthinkshootlive.com/posts/sabotage-2/)
186. [Sagharmath](https://www.moddb.com/games/half-life/addons/sagharmath) 
187. [Sandscroll](https://gamebanana.com/maps/15988)
188. [Saving Bob](https://www.runthinkshootlive.com/posts/saving-bob/)
189. [Secret Base](https://www.runthinkshootlive.com/posts/secret-base/)
190. **[Secret Santa 2011 for Soup Miner](https://twhl.info/vault.php?map=5724)**
191. [Secret Santa 2011 for Stojke](https://twhl.info/vault.php?map=5728)
192. [Senses in Decay](https://www.moddb.com/mods/senses-in-decay)
193. [Shift-Two v1.1](https://www.moddb.com/mods/shift-two1)
194. [Sky Mesa](https://www.moddb.com/mods/sky-mesa)
195. [Sleephorst v1.5](https://www.moddb.com/mods/sleephorst-v15)
196. [Slimy Situation](https://www.moddb.com/mods/slimy-situation)
197. **[Smart Decoy](https://www.moddb.com/mods/smart-decoy)**
198. **[Somewhere in Time](https://www.runthinkshootlive.com/posts/somewhere-in-time/)**
199. [Sooper2](https://www.runthinkshootlive.com/posts/sooper-2/) 
200. **[Split-Second](https://twhl.info/vault.php?map=4343)**
201. **[Subhumanity](https://www.runthinkshootlive.com/posts/sub-humanity/)**
202. Terminal Monstrosity (4 maps by Anthony Plant)
203. [Terror Side](https://www.runthinkshootlive.com/posts/terror-side/) (set **sv_validate_changelevel** to **0** to avoid problem with level change between some maps)
204. [Test Your Skill](https://www.moddb.com/games/half-life/addons/test-your-skill) 
205. [The Challenger Deep](https://www.runthinkshootlive.com/posts/challenger-deep/)
206. **[The Challenger Deep 2](https://www.moddb.com/mods/the-challenger-deep-2)**
207. [The Evil Thing](https://www.moddb.com/mods/the-evil-thing)
208. [The Evil World](https://www.moddb.com/mods/the-evil-world)
209. [The Haunted Lab](https://www.runthinkshootlive.com/posts/the-haunted-lab/)
210. **[The Long Night](https://www.moddb.com/mods/the-long-night)**
211. [The Mansion](https://twhl.info/vault.php?map=2438)
212. [The Night Things](https://twhl.info/vault.php?map=2439)
213. [The Night Things 2: Woodstock Manor](https://twhl.info/vault.php?map=2706)
214. [The Returning](https://www.moddb.com/games/half-life/addons/the-returning)
215. [The Ropes](https://www.runthinkshootlive.com/posts/the-ropes/) (set **fps_max** to **60** to prevent a possible sticking of a barrel which you need to lift down with an elevator at the second map)
216. [The Way Is Clear](https://www.runthinkshootlive.com/posts/the-way-is-clear/)
217. [The Way Is Clear 2](https://www.runthinkshootlive.com/posts/the-way-is-clear-2/)
218. **[The World Machine](https://www.moddb.com/mods/half-life-the-world-machine)**
219. **[The Xeno Project](https://www.moddb.com/mods/xeno-project-i-ii)**
220. **[The Xeno Project 2](https://www.moddb.com/mods/xeno-project-i-ii)**
221. [Then and Now](https://twhl.info/vault.php?map=6048)
222. [They Live( Chungo )](https://www.runthinkshootlive.com/posts/they-live/)
223. [Timefall](https://www.moddb.com/mods/hl-timefall)
224. **[Timeline](https://www.moddb.com/mods/timeline-series)**
225. **[Timeline II: Iced Earth](https://www.moddb.com/mods/timeline-series)**
226. **[Todesangst](https://www.moddb.com/mods/todesangst)**
227. **[Tokami Island](https://www.fileplanet.com/110517/110000/fileinfo/Tokami-Island)**
228. [Tower](https://hlperfectzone.narod.ru/mods.htm) (set **sv_validate_changelevel** to **0** to avoid a problem with incorrect level transitions)
229. [Trespasser](https://www.moddb.com/mods/trespasser)
230. [Try, Try Again](https://www.runthinkshootlive.com/posts/try-try-again/)
231. [Tucked Up](https://www.moddb.com/games/half-life/addons/tucked-up)
232. [TWHLmix](https://twhl.info/vault.php?map=2516)
233. [Two Smoking Barrels](https://www.runthinkshootlive.com/posts/two-smoking-barrels/)
234. [Typical Disaster](https://www.moddb.com/mods/typical-disaster)
235. [Typical Disaster: The Lost Levels](https://www.runthinkshootlive.com/posts/typical-disaster-the-lost-levels/)
236. [U-Life](https://www.moddb.com/mods/u-life)
237. **[Underground v2.0](https://www.moddb.com/mods/underground)** (there is an inner crash bug on final titles: some text lines are too long and cannot be properly displayed)
238. [Underground Territory](https://www.moddb.com/games/half-life/addons/underground-territory-part-1)
239. [Undertime](https://twhl.info/vault.php?map=3906)
240. **[Uplink Addon v1.2](https://www.fileplanet.com/82828/80000/fileinfo/Half-Life-Uplink-Addon-1.2)**
241. **[Uplink Lite](https://www.fileplanet.com/7482/0/fileinfo/Uplink-Lite)** & **[Uplink Lite Plus Demo](https://www.fileplanet.com/128970/120000/fileinfo/Uplink-Lite-Plus-Demo)**
242. **[Uplinked](https://www.moddb.com/mods/uplinked)**
243. **[USS Darkstar](https://www.moddb.com/mods/uss-darkstar)**
244. [Vengeance](https://www.moddb.com/mods/half-life-vengeance)
245. [Virtual Reality: The Real World](https://www.runthinkshootlive.com/posts/virtual-reality-the-real-world/)
246. [VLOKAM](https://www.ceskemody.cz/mapy.php?lng=1&clanek=32&razeni_hra=1&pn=vlokam-1)
247. [VLOKAM 2](https://www.ceskemody.cz/mapy.php?lng=1&clanek=33&razeni_hra=1&pn=vlokam-2)
248. [Wail of Death](https://www.runthinkshootlive.com/posts/wail-of-death/)
249. [Wail of Death 2: The Hell Master](https://www.runthinkshootlive.com/posts/wail-of-death-2-the-hell-master/)
250. [War Crimes v1.2](https://www.moddb.com/games/half-life/addons/war-crimes)
251. [Way to Victory](https://www.moddb.com/mods/2gn)
252. [Windmill v2.0](https://www.runthinkshootlive.com/posts/windmill/)
253. [World War III Missions (parts 1, 2 & 3)](https://www.moddb.com/mods/world-war-iii-missions-1-2-3)
254. [Worst Holiday](https://www.moddb.com/games/half-life/addons/worst-holiday) (there are 2 problems with doors; a door at second map can be opened if you sit down near it; to pass the door in laboratory you should run quickly as you can from ventilaion shaft - there is an autosave point on a previous map, if you failed)
255. [Xen](https://www.runthinkshootlive.com/posts/half-life-xen-2/)
256. [You Are in Army Now](https://www.pcosmos.ca/mods-hl/downloads/?mod=armynow)
257. [Zubben](https://www.runthinkshootlive.com/posts/zubben/)

### Unfinished singleplayer mods and mappacks
1. [Alpha Research Facility v0.3](https://www.moddb.com/games/half-life/downloads/alpha-research-facility-v-03-steam)
2. [Back in Future Alpha version](https://www.runthinkshootlive.com/posts/back-in-future/)
3. [Biohazard 2 (unfinished mod version)](https://www.moddb.com/mods/biohazard-2-outside-of-black-mesa)
4. Black Meat (unfinished mappack of 3 maps)
5. [Bloodreign](https://www.runthinkshootlive.com/posts/blood-reign/) (the mod has inner bugs, especially second map)
6. [Boreality: Part 1](https://www.runthinkshootlive.com/posts/boreality/) (there is a visual glitch problem on the map **mell04**, but same happens for original Half-Life too)
7. [Catacombs: Part 1](https://www.runthinkshootlive.com/posts/catacombs/)
8. [Cro-man's Office Mappack](https://twhl.info/vault.php?map=5547)
9. Great Escape (unfinished mappack of 2 maps)
10. [Half-Life Episode Two Demo Alpha v1.0](https://www.moddb.com/games/half-life/downloads/half-life-episode-two-v10-demo)
11. Half-Life: Marine Demo (by EDOC32)
12. [Hazardous-Course (first version of Hazardous-Course 2)](https://web.archive.org/web/20110512012317/http://www.richmans-maps.ch.vu/)
13. [High Tech v0.2](https://hl.loess.ru/?mod=499)
14. [HL: Paranormal Demo](https://gamebanana.com/mods/157378)
15. [HL Shadows, Part 1](https://www.fileplanet.com/7466/0/fileinfo/'HL-Shadows',-Part-1)
16. [HLNewEnd](https://twhl.info/vault.php?map=2275)
17. [Kleiners Adventures Demo](https://www.moddb.com/mods/kleiners-adventures)
18. [Kleiners Adventures: The White Line Demo](https://www.moddb.com/mods/kleiners-adventure-siemka321-edition) 
19. [LV-426: Episode 1](https://www.runthinkshootlive.com/posts/lv426-version-a/)
20. [Malevolence(1.3 and older)](https://www.moddb.com/mods/malevolence)
21. [Meth-Life Demo v1.0](https://www.gamewatcher.com/mods/half-life-mod/meth-life-mod-demo-1-0)
22. [Night-Fire Demo](https://efreeman1.narod.ru/Index.htm)
23. [On the Other Side](https://twhl.info/competitions.php?results=14) aka *OTOS* (there is a train-related bug in the beginning, which makes you to use **noclip**, but it's an inner flaw of the map)
24. [Orion: Part 1( Project Orion )](https://www.moddb.com/mods/orionold)
25. [Padle Mesto Demo](https://www.moddb.com/games/half-life/addons/padle-mesto-demo) (some scripts & buttons are not configured properly in this mod, so they can be activated/deactivated automaically after reloading of a saved game)
26. [Panic at Black Mesa Demo](https://www.moddb.com/mods/half-life-panic-at-black-mesa)
27. [Plan B v1.1](https://www.fileplanet.com/129198/120000/fileinfo/Plan-B-SP-Mappack)
28. [Preview of the "Paradox"](https://www.runthinkshootlive.com/posts/half-life-preview-of-the-paradox/)
29. [Project Focus North v1.6 Demo](https://www.fileplanet.com/84637/80000/fileinfo/Project-Focus-North)
30. [Qortez( Quortez )](https://www.runthinkshootlive.com/posts/qortez/) (it's recommended to use only default low-poly model of scientist for this mod; also set **fps_max** to **60** via console to prevent an issue with one of scripted sequences)
31. [Return to Lambdacore Demo](https://www.moddb.com/games/half-life/addons/return-to-lamdacore)
32. [Route City Beta 1](https://www.moddb.com/mods/route-city)
33. [SHAFT - Part 1](https://hl.loess.ru/?mod=913)
34. [Shortcut v1.0 Beta](https://www.runthinkshootlive.com/posts/shortcut/)
35. Stargate Test (3 maps, it's earliest outlines of known Stargate mod)
36. [Stoka](https://www.ceskemody.cz/mapy.php?lng=1&clanek=222&razeni_hra=1&pn=stoka)
37. [Striker's Compo 26](https://twhl.info/vault.php?map=5190) (buggy)
38. [Technology Test 2](https://web.archive.org/web/20110512012317/http://www.richmans-maps.ch.vu/)
39. [The Gate Playable Demo](https://www.fileplanet.com/116347/110000/fileinfo/The-Gate-Playable-Demo)
40. [They are Back](https://www.runthinkshootlive.com/posts/they-are-back/)
41. [Tiefseelabor( Deep Sea Laboratory )](https://www.runthinkshootlive.com/posts/deep-sea-laboratory/)
42. [Time-Shift](https://web.archive.org/web/20110512012317/http://www.richmans-maps.ch.vu/)
43. [Train Single Beta](https://csm.dev/threads/half-strike-rezultaty.36394/) (Remove **gfx.wad** from **TrainSingle** folder)
44. [WAR: The Killer Beta 0.1](https://www.moddb.com/mods/war)
45. [White Force Beta( Residual Point prototype )](https://www.moddb.com/mods/hl-residual-point/downloads/white-force-beta-2002)
46. [Your First Mission Demo](https://twhl.info/forums.php?thread=3925)
47. [Zombieland v1.1](https://www.moddb.com/mods/zombieland)

### Just mappacks
1. [AvsM 1 v1.2](https://www.moddb.com/mods/avsm-1-2003-version-re-release/) 
2. [Cook The Headcrab Episodes 1 & 2](https://www.moddb.com/games/half-life/addons/cook-the-headcrab-episode-series)
3. [Cook The Headcrab Episode 3](https://www.moddb.com/games/half-life/addons/cook-the-headcrab-episode-3)
4. [Cook The Headcrab Episode 4](https://www.moddb.com/games/half-life/addons/cook-the-headcrab-episode-4)
5. **[DAV HL Pack 1](https://www.moddb.com/games/half-life/addons/dav-level-pack-1-hlarches-and-hlattack)**
6. [Discoman v2.2](https://www.fileplanet.com/117675/110000/fileinfo/Discoman-Mod)
7. [Dramatic Measures( Surprise! )](https://twhl.info/vault.php?map=5624)
8. **[Funny Map Pack 1](https://www.mediafire.com/file/4iis8uhfj1ct8sa/Funny_Map_Pack_1_by_Richman.zip)**
9. **[Half-Life Shorts](https://twhl.info/vault.php?map=2845)**
10. [Half-Starwars](https://www.pcosmos.ca/mods-hl/downloads/?mod=hlstarwars)
11. [Japanese Episodes](https://www.runthinkshootlive.com/posts/japanese-episodes/)
12. [K7 Trouble](https://www.moddb.com/games/half-life/addons/k7-trouble) (Remove string **secure 1** from **liblist.gam**)
13. [Night Shift Beta](https://www.runthinkshootlive.com/posts/night-shift/)
14. [Pillars of Pain: A Buddy & Kona Saga( PoP-BaKs )](https://www.runthinkshootlive.com/posts/pillars-of-pain/)
15. [Star Wars Half-Life](https://twhl.info/vault.php?map=274) (second map running via console using **map swpart2** cmd)
16. [The Crabulator v0.1.9.6.1](https://www.fileplanet.com/148679/140000/fileinfo/Half-Life---The-Crabulator-v0.1.9.6.1) (Rename mod folder to **TheCrabulator**)
17. [The Mansion](https://twhl.info/competitions.php?results=14) by *Unbreakable*
18. [TS_MF](https://www.runthinkshootlive.com/posts/ts_mf/)
19. [TWHL Cubicles](https://twhl.info/vault.php?map=5499)
20. **[Valve ERC Contest #1 - The martyred pop machine](https://www.runthinkshootlive.com/posts/contest-1-maps/)**
21. **[Valve ERC Contest #2 - Best train-ride sequence](https://www.runthinkshootlive.com/posts/contest-2-maps/)**
22. [VOLCAN Beta 1.3](https://www.moddb.com/games/half-life/addons/volcan-beta13)
23. [Woodpigeon's Map Pack](https://www.fileplanet.com/63729/60000/fileinfo/Woodpigeon's-Map-Pack)

### Singleplayer mods or mappacks with a little incompatibilities
1. [Alternate Path](https://www.runthinkshootlive.com/posts/alternate-path/) (there is an issue with deep sticking in elevator, when you return from map **out3** to map **out2**, so you'll be forced to use **noclip** as solution; also you need to set **sv_validate_changelevel** to **0**, because of unstable level transition between map outside and map **out2**)
2. [Final Run](https://www.runthinkshootlive.com/posts/final-run/)
3. [Hard](https://www.runthinkshootlive.com/posts/hard/) (you can get stuck inside boxes in a moving truck on the second map of the mod - type **restart** command in the console to fix your position when the next map is loaded and truck is stopped)
4. [Pulse Episode One Beta 1](https://www.moddb.com/mods/pulse), [Terrorist Attack](https://www.moddb.com/games/half-life/addons/terrorist-attack-2) (maps of these mods have a "leak" bug, it causes level change problems with incorrect transferring entities between maps, disabled lighting and potential significant performance drops after passing of several maps)
5. [The Hill](https://www.runthinkshootlive.com/posts/the-hill/) (there is a mapper's flaw in changelevel settings between maps **thehill & thesequel**, it can be corrected only manually by editing of entpatches for these maps - you need to rename **"bottom rung"** value to **"bottomrung"**; after editing you new to start new game)
6. [Threatening Skies](https://twhl.info/vault.php?map=3372) *Pre-Demo* (aka *Half-Life 1.5*; you can get stuck in a roof of a train on level change between maps **game010c** and **game010d**; use **noclip** or **restart** command to fix this)

### Singleplayer mods which has custom gamedll with minor changes and fully playable with vanilla Half-Life libraries
1. [Citizen Arms Demo 2](https://www.moddb.com/mods/citizen-arms) (there are few inner bugs in the mod, but it still playable)
2. [DALEK unbidden](https://www.moddb.com/mods/dalek-unbidden)
3. [Fight for Life](https://www.moddb.com/mods/fight-for-life)
4. [Half-Life Baby v1.4](https://www.moddb.com/games/half-life/addons/half-life-baby) (it's an unfinished but playable mod; after installing of the mod open **liblist.gam** or **gameinfo.txt** file in the mod's folder and correct the line **gamedll "..\hlbaby\dlls\hl.dll"** for **gamedll "dlls\hl.dll"**, otherwise you'll not be able to start a game)
5. **[Lost in Black Mesa(first version without HLFX)](https://www.moddb.com/mods/hlfx-lost-in-black-mesa/downloads/lost-in-black-mesa-simple-version)**
6. [Soldier](https://www.moddb.com/mods/half-life-soldier)
7. [Solo Operations](https://www.moddb.com/mods/solo-operations)
8. [The Blood v1.1](https://hl.loess.ru/?mods=&search=The+Blood) (there are some inner bugs in the mod, but they don't interfere with a game progress)
9. [The Escape](https://www.moddb.com/mods/neophus) (there is a couple of strange glitches on a map **evasion7**, but they are not interrupting a gameplay, just don't forget to download and install all of presented fixes for the mod)
10. [Wilson Chronicles: The Unfinished Edition](https://www.gamewatcher.com/mods/half-life-mod/half-life-wilson-chronicles)

### Singleplayer mods with one map or single maps
1. [3rd505th](https://hl.loess.ru/?mod=5)
2. [5 More Ways to Die](https://twhl.info/vault.php?map=3575)
3. [5 Ways to Die](https://twhl.info/vault.php?map=2984)
4. [5 Worse Ways to Die](https://twhl.info/vault.php?map=4029)
5. **[A Bad Day](https://twhl.info/competitions.php?results=6)**
6. [A Disgruntled Christmas](https://www.fileplanet.com/7882/0/fileinfo/A-Disgruntled-Christmas)
7. [Accidental Life Demo](https://www.runthinkshootlive.com/posts/accidental-life/)
8. **[Aftermath](https://www.fileplanet.com/112021/110000/fileinfo/Aftermath)**
9. [Ali Meyer](https://gamebanana.com/maps/178855)
10. [Alien](https://hl.loess.ru/?mods=&search=alien) (map by *Nicolas Gadenne*)
11. [Alien Blast](https://www.fileplanet.com/136194/130000/fileinfo/Alien-Blast)
12. [Alien Survival](https://www.moddb.com/games/half-life/addons/alien-survival-map)
13. [American Training Facility](https://gamebanana.com/maps/146598)
14. [An Escape](https://gamebanana.com/maps/167506)
15. [Area Assault](https://www.fileplanet.com/7462/0/fileinfo/Area-Assault)
16. [Assassination](https://www.runthinkshootlive.com/posts/assassination/)
17. [Atom's Mini Compo by Tetsu0](https://twhl.info/vault.php?map=5983)
18. [Atom's Mini Compo by zeeba-G](https://twhl.info/vault.php?map=5985)
19. [B.O.G aka Black.Orange.Grenade](https://twhl.info/vault.php?map=3411) (you need to have additional textures to play this map properly - **opfor.wad** & **tfc.wad**; also game crashes in the final because of inner mapping flaw )
20. [Barney's Dream Demo( B-dream Beta )](https://www.fileplanet.com/112446/110000/fileinfo/B-dream-Beta)
21. [Barrel of Grunts](https://twhl.info/vault.php?map=3390)
22. BDMAP1 (MoP1.bsp - map by unknown author)
23. [Beach Party](https://twhl.info/vault.php?map=5572)
24. [Beastie](https://www.runthinkshootlive.com/posts/beastie/)
25. **[Black Mesa South](https://twhl.info/vault.php?map=5309)** (there are few minor glitches, but they are inner flaws of the map and don't interfere with completing a game)
26. [Black Mesa Storage Facility - Bay A2](https://www.fileplanet.com/7479/0/fileinfo/Black-Mesa-Storage-Facility---Bay-A2)
27. [Black Mesa Xmas(A Black Mesa Christmas)](https://twhl.info/vault.php?map=4918)
28. Blame the Scientists (map by Incy247)
29. [Blood and Guts](https://www.runthinkshootlive.com/posts/blood-and-guts/)
30. **[Blood1](https://web.archive.org/web/20110512012317/http://www.richmans-maps.ch.vu/)**
31. [Bhop](https://twhl.info/vault.php?map=5065)
32. Bow (map by Daniel Will)
33. **[Breakout](https://www.runthinkshootlive.com/posts/breakout-by-benny-blanco/)** (map for *Single Mapping Competition* by *BennyBlanco*)
34. [Breakout](https://hl.loess.ru/?mods=&search=Breakout) (map by *Mediocre MapGuy*)
35. Bridge (map by Monkey)
36. [Bullsuid Will Survive](https://www.moddb.com/games/half-life/addons/bullsuid-will-survive)
37. [C2](https://www.runthinkshootlive.com/posts/c2/)
38. [C3](https://www.runthinkshootlive.com/posts/c3/)
39. [C5](https://www.runthinkshootlive.com/posts/c5/)
40. **[Caged](https://web.archive.org/web/20081226051021/http://www.caylegeorge.com/ld_history/cg_maps.htm)** 
41. [Camera Puzzle](https://twhl.info/vault.php?map=740) (this map perfectly demonstrates an improved feature of Xash3D Engine - game is correctly saving and restoring 3rd person view for the player after loading a previously saved game)
42. [CataXen](https://twhl.info/vault.php?map=3429)
43. [Cause of Death](https://twhl.info/competitions.php?results=7)
44. [Challenge](https://web.archive.org/web/20231010044342/http://snarkpit.net/index.php?s=maps&map=3266) (map by *tnkqwe*)
45. [CHALLENGE](https://twhl.info/vault.php?map=2229) aka Can You Live (map by *killer487554*; remove spaces in the map name before you play)
46. [Choices](https://www.runthinkshootlive.com/posts/choices/)
47. [Chuck - Texas Rangers](https://twhl.info/vault.php?map=4253)
48. Cleaner's Adventures Begin Demo (map by InvisibleBullet)
49. [Coach](https://www.runthinkshootlive.com/posts/coach/)
50. [Cook The Headcrab](https://www.moddb.com/games/half-life/addons/cook-the-headcrab)
51. [Core01](https://hlfx.ru/forum/showthread.php?threadid=2433) (map for *Fast Level Design competition* by *Flash*)
52. [Crawler](https://www.runthinkshootlive.com/posts/crawler/)
53. [Crysis 3](https://hl.loess.ru/?mod=215)  (map for *Single Mapping Competition* by *Raid*)
54. [CUBE](https://twhl.info/competitions.php?results=7) (map by *Jobabob*)
55. [danger1](https://twhl.info/vault.php?map=2302)
56. [Data-base](https://www.runthinkshootlive.com/posts/database/)
57. [de_dust2_azabetfeN](https://csm.dev/threads/half-strike-rezultaty.36394/) (remove **cl_dlls** & **dlls** folders from inside of mod's directory before you start the game)
58. [De-railed](https://twhl.info/competitions.php?results=7)
59. [Dead Shift Beta](https://www.moddb.com/mods/dead-shift) - [Demo 1](https://www.gamewatcher.com/mods/half-life-mod/dead-shift-1-0-beta) & [Demo 2](https://web.archive.org/web/20151030005310/http://www.gamefront.com/files/13532512)
60. [Deep](https://twhl.info/vault.php?map=1669)
61. [Desert Attack](https://fyzzer.narod.ru/index.html)
62. [Desert Combat Demo](https://www.fileplanet.com/190487/190000/fileinfo/Half-Life---Desert-Combat-Mod) (despite a big file size there's only one small unfinished map)
63. [Desert Strike](https://hl.loess.ru/?mod=267)
64. [Devil Mesa](https://hosting.cecak.cz/forum-modifikace/hl1/index.php?text=mod&modifikace=dm)
65. [Disco Party v1.1](https://twhl.info/vault.php?map=1004)
66. **[dissolution](https://twhl.info/vault.php?map=5494)** (you need to have additional textures to play this map properly - **nw.wad** from [Nightwatch Texture Pack](https://www.moddb.com/games/half-life/addons/nightwatch-texture-pack) and **decals.wad** from Opposing Force)
67. [Doomed Demo](https://web.archive.org/web/20231010122104/http://www.snarkpit.net/index.php?s=maps&map=3351)
68. [Dream1_ver3](https://twhl.info/vault.php?map=579), [Dream1_ver2](https://twhl.info/vault.php?map=371), [Dream1](https://twhl.info/vault.php?map=359)
69. [Dressed to Kill](https://www.fileplanet.com/48578/40000/fileinfo/Dressed-to-kill)
70. [Dying at Sea( Signs )](https://twhl.info/vault.php?map=5379)
71. [eif coloseum](https://www.runthinkshootlive.com/posts/eif-coloseum/)
72. [eif_room](https://www.runthinkshootlive.com/posts/eif-room/)
73. [eif_school](https://www.runthinkshootlive.com/posts/eif-school/)
74. [Emissary](https://twhl.info/competitions.php?results=15)
75. **[En Route 66](https://www.moddb.com/mods/en-route-66)**
76. [Enclosed Space](https://twhl.info/vault.php?map=4496)
77. **[Endlevel Boss](https://twhl.info/vault.php?map=786)**
78. [ES](https://csm.dev/threads/hl-smc-es.29017/) (map for *Single Mapping Competition* by *Flash*)
79. [escape](https://twhl.info/vault.php?map=3632) by *killer1102* (there is a potential bug with a scientist, who should open a door for you, but it's an inner scripting problem of the map)
80. [Escape from Black Mesa v1.44](https://twhl.info/vault.php?map=) (map from *TWHL* by *Satchmo*) (wrong link!)
81. [Escape Off](https://hl.loess.ru/?mod=324) (a part of this map was used later in *Friendship 2.0* mod)
82. [Evasion](https://www.fileplanet.com/53430/50000/fileinfo/Half-life-:-Evasion)
83. [Evil Space](https://www.runthinkshootlive.com/posts/evil-space/)
84. **[Experimental Problems](https://www.runthinkshootlive.com/posts/experimental-problems/)**
85. [Extinct Lifeform Hunt](https://www.fileplanet.com/13501/10000/fileinfo/Extinct-Lifeform-Hunt)
86. [Facility](https://twhl.info/vault.php?map=5482)
87. [Facility Escape](https://twhl.info/vault.php?map=3673)
88. [Fallout](https://www.thewall.de/forum/thread/hl1-sp-48h-mapping-contest/64975.4.html) (map by *simb*) (link dead!)
89. [Final Assault](https://twhl.info/vault.php?map=4500)
90. [Flat](https://hl.loess.ru/?mods=&search=Flat)
91. [Freeman's Allegiance](https://www.runthinkshootlive.com/posts/freemans-allegiance/)
92. [Freeman's Escape](https://www.runthinkshootlive.com/posts/freemans-escape/) (map by *Dave Crabb*)
93. [Freeman's Suicide( Kill Yourself )](https://www.runthinkshootlive.com/posts/kill-yourself/)
94. [Funhouse](https://twhl.info/competitions.php?results=11)
95. [Func_breakable - The Invasion](https://hl.loess.ru/?mod=384) (map from *TWHL* by *Archie* aka *The Hunter*)
96. [Genetic Research Facility](https://twhl.info/vault.php?map=4775)
97. [Gladiator](https://csm.dev/threads/hl-gladiator.36140/)
98. [Go to Xen Awalk(Xen Walk/SP-Offyxen)](https://www.moddb.com/mods/go-to-xen-awalk-half-life-map)
99. [goldsource](https://twhl.info/vault.php?map=5737) (link dead!)
100. [Govnomod](https://half-life.ru/forum/showthread.php?threadid=12118) ([DevTest Demo](http://half-life.ru/forum/attachment.php?postid=226623) was tested; for the proper installation you should have Counter-Strike mod preliminarily installed in your main game folder; demo map text is on russian) (links dead!)
101. [Govnomod: Mysterious Force](http://forums.playground.ru/half-life/g_vnomod-640221/) 
102. [GruntMatch](https://www.runthinkshootlive.com/posts/grunt-match/)
103. [Grunts Domain( archiveSP01 )](https://www.runthinkshootlive.com/posts/grunts-domain/)
104. [Gunship v1](https://www.runthinkshootlive.com/posts/gunship/)
105. [Half-Life 1: Traptown E3 2003](https://gamebanana.com/maps/168032)
106. [Half-Life 2 Tech Demo Parody( Half-Life 2 Physics Test Level )](https://www.fileplanet.com/124837/120000/fileinfo/Half-Life-2-Techdemo-HL1-Map-v.2)
107. Hard Map 2 (map from TWHL by Custom)
108. [Hard Way](https://hl.loess.ru/?mod=480)
109. [Headcrab Revenge](https://twhl.info/vault.php?map=3519)
110. [Headcrab-BOSS](https://www.moddb.com/games/half-life/downloads/headcrab-boss)
111. [HL Dance( Half-Dance )](https://twhl.info/vault.php?map=2991)
112. [hl_egzekucja](https://gamebanana.com/maps/50132)
113. **[HLywood](https://twhl.info/vault.php?map=455)**
114. **[Hnaii - Office Komplex](https://www.fileplanet.com/113757/110000/fileinfo/Hnaii---Office-Komplex)**
115. [Hospital](https://gamebanana.com/maps/167446) (you need to edit **liblist.gam** file in the mod's folder - delete *gamedll & type* strings from it before you start to play)
116. [Hostage](https://www.runthinkshootlive.com/posts/hostage-2/)
117. [House](https://www.artpeter.net/Data/HalfLife/Hl.php)
118. [Impulse 101 Fun - The Train](https://web.archive.org/web/20070305075816/http://www.twhl.co.za/mapvault/2817.zip) (map from *TWHL* by *Archie* aka *The Hunter*)
119. [In America](https://web.archive.org/web/20170221213409/http://www.lambda-force.org/load/half_life/karty/half_life_in_america/18-1-0-476)
120. [In the Kitchen](https://twhl.info/vault.php?map=4314)
121. [Infiltration](https://www.fileplanet.com/7467/0/fileinfo/Infiltration)
122. [Interactivity & Lots of Entities](https://twhl.info/vault.php?map=5744) (link dead!)
123. [Interior](https://www.runthinkshootlive.com/posts/interior/)
124. [Into the Frying Pan](https://www.runthinkshootlive.com/posts/into-the-frying-pan/)
125. **[Island Bombing](https://twhl.info/competitions.php?results=13)**
126. **[Ivy](https://twhl.info/vault.php?map=4869)**
127. [Jump Program](https://hl.loess.ru/?mod=575)
128. [Killer on the Run](https://www.runthinkshootlive.com/posts/killer-on-the-run/)
129. [Killing House for Half-Life](https://www.runthinkshootlive.com/posts/killing-house/)
130. [Kosovo 2000](https://www.moddb.com/games/half-life/addons/kosovo-2000)
131. [Kosovo II – The Second Day](htstp://www.moddb.com/games/half-life/addons/kosovo-2)
132. [KotiteolliSuus](https://twhl.info/vault.php?map=533)
133. [Kyo Half-Strike](https://csm.dev/threads/half-strike-rezultaty.36394/) (there are few error messages at start, which can be safely skipped; also the code in the beginning is 3141)
134. **[l33t Test 1: Conclusive Analysis](https://twhl.info/vault.php?map=3023)**
135. [Lab](https://twhl.info/vault.php?map=1797)
136. **[Lambda Station](https://www.runthinkshootlive.com/posts/lambda-station/)**
137. [LC](https://www.runthinkshootlive.com/posts/lc-by-sluxe/) (map for *Fast Level Design* competition by *Slux*)
138. **[LDSF( Laser Deployed Security Force )](https://twhl.info/competitions.php?results=4)**
139. [Locked Up](https://www.fileplanet.com/8842/0/fileinfo/Locked-Up)
140. [Looping Stage](https://web.archive.org/web/20041104030218/http://cariad.co.za/twhl/mapvault_map.php?id=1250)
141. [Lord's Lair](https://www.fileplanet.com/7471/0/fileinfo/Lords-Lair)
142. [Losspower](https://twhl.info/vault.php?map=3919)
143. **[Lost-World](https://gamebanana.com/maps/156214)**
144. [Lounge](https://www.fileplanet.com/7461/0/fileinfo/The-Lounge)
145. Matrixroom v0.7 (map by Joe Hunter)
146. [MatrixTrainstation](https://twhl.info/vault.php?map=2531)
147. **[Maze01a](https://web.archive.org/web/20110512012317/http://www.richmans-maps.ch.vu/)**
148. [Meat, Blood, Gun](https://www.moddb.com/games/half-life/addons/meat-blood-gun) (there are 2 maps, but only first map is playable, in fact)
149. [Merry Christmas to hlife_hotdog aka *Happy Holidays*](https://twhl.info/vault.php?map=5717) (to play the right map, enter map **happyholidays** into console, or edit *startmap* parameter in **liblist.gam** file inside mod's folder)
150. Metro (map by unknown author)
151. Monster Arena v1 & Monster Arena v2 (maps by unknown author)
152. Monster Shoot (map by unknown author)
153. [Museum Lockdown](https://twhl.info/vault.php?map=2211)
154. [My Backyard](https://twhl.info/vault.php?map=1796)
155. [My Black Mesa](https://www.runthinkshootlive.com/posts/my-black-mesa/) (map for *Single Mapping Competition* by *Zanzer*)
156. **[Nameless](https://www.runthinkshootlive.com/posts/nameless/)** (map for *Single Mapping Competition* by *AGRESSOR*)
157. **[Need for Energy(SP-Energy)](https://scrama.3dn.ru/load/2-1-0-2)**
158. **[Nightmare: A horror map](https://twhl.info/vault.php?map=2106)**
159. [Nightshift_FsC](https://twhl.info/vault.php?map=2561)
160. [No Chance](https://gamebanana.com/maps/160536)
161. [No Regret](https://www.runthinkshootlive.com/posts/no-regret/)
162. [Nuclear Aftermath](https://web.archive.org/web/20170708121214/http://www.thewall.de/forum/thread/hl1-sp-48h-mapping-contest/64975.4.html) (map **48h_map1_pre** by *Bluthund*) (download link dead!)
163. Nuclear Plant (map by SaCo)
164. **[Nuke](https://web.archive.org/web/20170708121214/http://www.thewall.de/forum/thread/hl1-sp-48h-mapping-contest/64975.4.html)** (map **tmdnuke** by *the-middleman*) (download link dead!)
165. [Observatory](https://www.runthinkshootlive.com/posts/observatory/)
166. [Ominous Reality: Part 1](https://twhl.info/vault.php?map=1328)
167. [Operation Rainbow](https://twhl.info/vault.php?map=3068)
168. [Operation Randomosity](https://www.moddb.com/games/half-life/addons/operation-randomosity)
169. **[Orb](https://twhl.info/competitions.php?results=20)**
170. [Osprey Chopper Competition](https://twhl.info/competitions.php?results=1) (map by *Andy*)
171. [Otage Beta v0.05](https://hl.loess.ru/?mods=&search=Otage)
172. [Outpost](https://www.fileplanet.com/81860/80000/fileinfo/Outpost)
173. [Oxidum](https://gamebanana.com/maps/162722) (the map is unfinished and after a dead-end there is another interesting place that you can reach only by using of **noclip**)
174. **[Pac-Man](https://twhl.info/competitions.php?results=29)**
175. **[Parallax Beta](https://www.runthinkshootlive.com/posts/parallax/)** (there are 2 maps, but only first map is playable, in fact)
176. [Postal](https://www.runthinkshootlive.com/posts/postal/)
177. [Problems in Building 2](https://gamebanana.com/maps/166032)
178. [Pulse: Demo #1](https://www.moddb.com/mods/pulse/downloads/pulse-demo-1)
179. [Quake](https://www.runthinkshootlive.com/posts/quake/)
180. [Quilted Thought Organ](https://www.runthinkshootlive.com/posts/quilited-thought-organ/)
181. **[Radix](https://unquenque.com/radix.html)**  (this map is also a part of *Project Quantum Leap* mod)
182. [Rat Hunt: Quarters](https://twhl.info/vault.php?map=5990) (there is only 1 little issue - rats counter messages do not displayed until all rats are eliminated)
183. [Remember All](https://csm.dev/threads/hl-smc-remember_all.29029/)
184. [Rescue](https://hl.loess.ru/?mods=&search=Rescue) by *SaCo* (there is an inner bug - once you have activated a scientist in the end of the map, you should run quickly from him to the door with a scanner, otherwise he gets stuck into you; so you have to kill all enemies before you activate him)
185. [Rescue 2](https://www.moddb.com/games/half-life/addons/rescue-2) (map by *SaCo*)
186. [Revamp](https://www.runthinkshootlive.com/posts/revamp/)
187. [Rogat](https://www.runthinkshootlive.com/posts/rogat/)
188. **[Rooms](https://twhl.info/vault.php?map=24)** (map by *ghost2*)
189. **[Ruled by Insanity](https://twhl.info/vault.php?map=3580)**
190. **[Rube Goldberg](https://twhl.info/vault.php?map=5014)** aka Entity Challenge 2(map by *Captain Terror*)
191. [Rube Goldberg Machine](https://twhl.info/vault.php?map=5006) (map by *TJB*)
192. [Rum](https://www.runthinkshootlive.com/posts/rum/)
193. [Rumble](https://hl.loess.ru/?mods=&search=Rumble)
194. [Run, Run, Run!](https://www.moddb.com/games/half-life/addons/run-run-run)
195. [Runaway](https://hl.loess.ru/?mods=&search=Runaway)
196. [Runder](https://www.runthinkshootlive.com/posts/runder/)
197. S1_INFIL, aka Infiltration (old unfinished map by *Silencer[=S7=]*)
198. [s_3_LumbdaCore](https://hlfx.ru/forum/showthread.php?threadid=2433) (map for *Fast Level Design* competition by *Sania3*)
199. [Saving Santa](https://twhl.info/vault.php?map=5726) ( Secret Santa 2011 for *Rimrook* by *Urby* )
200. [sand_01](https://twhl.info/vault.php?map=3166)
201. [SciMaker 1.1 (With Kill Func)](https://twhl.info/vault.php?map=1845)
202. [Scientist Killing](https://twhl.info/vault.php?map=1969)
203. [Scientists Hideout](https://web.archive.org/web/20190622004216/http://www.isolated-design.de:80/half-life-mods/thewall-48h-contest/) (map **48h_m01** by *ToTac*) (download link dead!)
204. [Scramble](https://www.moddb.com/mods/scramble)
205. Second (map by unknown author)
206. [Seek and Destroy](https://www.fileplanet.com/13006/10000/fileinfo/Seek-and-Destroy)
207. **[SelfKill](https://www.moddb.com/games/half-life/addons/selfkill)**
208. [SEMTEX](https://twhl.info/competitions.php?results=7) (map by *kol*)
209. [Sepulcher](https://www.fileplanet.com/7478/0/fileinfo/Sepulcher)
210. [Shootout Alpha 3](https://www.fileplanet.com/111687/110000/fileinfo/Shootout-ALPHA-3)
211. [Small Battle](https://twhl.info/vault.php?map=2337)
212. [Small Battle 2](https://twhl.info/vault.php?map=2393)
213. [Smash Half-Life](https://www.runthinkshootlive.com/posts/smash/)
214. [Snatch](https://jqbros.3dn.ru/load/1-1-0-9)
215. [Soft Boiled](https://www.fileplanet.com/7475/0/fileinfo/Soft-Boiled)
216. **[Someplace Else](https://hylobatidae.org/minerva/parallax/someplace-else.html)** (this map is also a part of *Project Quantum Leap* mod)
217. [Somewhere( Kasperg: Unique Map )](https://twhl.info/competitions.php?results=13)
218. [Southeastern Lan Party](https://www.fileplanet.com/7476/0/fileinfo/Southeastern-Lan-Party)
219. **[sp_valley](https://gamebanana.com/maps/61099)**
220. **[Space_Lasercore](https://twhl.info/vault.php?map=1938)**
221. [Spearhead](https://twhl.info/vault.php?map=1018)
222. [Spellbinder - The Summoning Tower v1.2](https://twhl.info/vault.php?map=1502)
223. [Sproutch Mod!!!](https://www.runthinkshootlive.com/posts/sproutch/) (another variation of this map is [Bullsquids Pet](https://www.fileplanet.com/126221/120000/fileinfo/Bullsquids-Pet))
224. [Star](https://www.ceskemody.cz/mapy.php?lng=1&clanek=36&razeni_hra=1&pn=star) (there are 2 maps, but only first map is playable, in fact; also changelevel is not working properly there, but it's an inner bug of the mod)
225. [Stacja](https://www.runthinkshootlive.com/posts/stacja/)
226. [Station17](https://gamebanana.com/maps/161063)
227. [Storage Facility](https://hl.loess.ru/?mods=&search=Storage+Facility) (map by *T.J Brosnan*)
228. [Strange Findings Part 1](https://twhl.info/vault.php?map=3617)
229. [Subway - The Longest Fall](https://twhl.info/vault.php?map=3926) (you need to have additional textures to play this map properly: **opfor.wad** from *Opposing Force*, **specialists.wad** from *The Specialists*, **tfc2.wad** from *Team Fortress Classic* and **wanted.wad** from *Wanted!*)
230. **[Surfacerun](https://gamebanana.com/maps/156304)**
231. [SwirusMap (call it "Dream")](https://twhl.info/vault.php?map=1588)
232. [Target Practice](https://twhl.info/vault.php?map=5460)
233. **[Technical Problems](https://www.runthinkshootlive.com/posts/technical-problems/)**
234. [Teh Hammre](https://www.runthinkshootlive.com/posts/teh-hammre/)
235. **[Test Lab 16](https://twhl.info/competitions.php?results=17)**
236. [Test Map](https://www.moddb.com/games/half-life/addons/test-map-update) (map by *NinjaBlack1337* aka *Guillermo_SPY*)
237. [Test of Destruction](https://twhl.info/vault.php?map=3892)
238. [The Abandon](http://half-life.ru/forum/showthread.php?threadid=14267) (link dead!)
239. [The Arena - Room 1](https://twhl.info/vault.php?map=3523)
240. [The Crab Lab](https://twhl.info/vault.php?map=4105)
241. [The Cupboard of Doom](https://www.moddb.com/mods/the-cupboard-of-doom)
242. [The Desert of Doom](https://hl.loess.ru/?mod=265)
243. **[The Gloom](https://www.moddb.com/mods/the-gloom)**
244. [The History Can Be Changed](https://www.runthinkshootlive.com/posts/history-can-be-changed/) (you need to have additional textures to play this map properly - **opfor.wad** from *Opposing Force*)
245. [The House Beta 0.1](https://gamebanana.com/maps/138258)
246. [The Innocent Eternity](https://www.fileplanet.com/10027/10000/fileinfo/The-Innocent-Eternity) (there are 2 maps, but only first map is playable, in fact)
247. [The Interview, Stage 1](https://www.fileplanet.com/7468/0/fileinfo/The-Interview,-stage-1)
248. [The Last Survivor](https://www.moddb.com/games/half-life/addons/the-last-survivor) (there is an issue with saved games in this map - they don't work properly after loading, but it's an inner flaw of the map, not an engine's bug)
249. [The Leech Pits](https://www.runthinkshootlive.com/posts/the-leech-pit/)
250. [The Origin of Symmetry](https://gamebanana.com/maps/56796)
251. **[The Plague](https://scrama.3dn.ru/load/2-1-0-31)**
252. **[The Playtest](https://www.runthinkshootlive.com/posts/the-playtest/)**
253. [The Poseidon Incident( USCM: Infestation Demo )](https://www.runthinkshootlive.com/posts/the-poseidon-incident/)
254. **[The Run](https://twhl.info/vault.php?map=4890)**
255. [The Secret Mission](https://www.geocities.ws/rawrguilds/maps.html)
256. [The Silo Station](https://www.fileplanet.com/7480/0/fileinfo/The-Silo-Station)
257. [The Stupendous Quest of the Annoying Microwave](https://twhl.info/vault.php?map=5937)
258. [The Swimmingpool](https://www.fileplanet.com/54276/50000/fileinfo/The-swimmingpool) (there is an inner bug of unmovable trashcan, so you have to use **noclip** on your way back)
259. [The Transporter( Xen Transportation )](https://twhl.info/vault.php?map=3408)
260. The Trap (map by Keks)
261. [The_Work_Area v1.0](https://twhl.info/vault.php?map=2420)
262. [Torching the Light](https://www.moddb.com/mods/torching-the-light)
263. [Torture a Friendly NPC](https://twhl.info/vault.php?map=3672)
264. [Torture That Alien](https://twhl.info/vault.php?map=3248)
265. [Total Evasion](https://www.moddb.com/mods/total-evasion)
266. [Tower](https://twhl.info/vault.php?map=250) (Required Spirit of Half-Life for item_suit)
267. [TriggerHappy](https://www.fileplanet.com/8929/0/fileinfo/TriggerHappy)
268. [TriggerHappy2](https://www.fileplanet.com/13503/10000/fileinfo/TriggerHappy2)
269. [TriggerHappy2.5](https://www.moddb.com/games/half-life/addons/trigger-happy-v25) 
270. [Trouble](https://gamebanana.com/maps/166033)
271. [Tunnels](https://twhl.info/vault.php?map=5350)
272. **[Twisted Hazard Course](https://www.fileplanet.com/52919/50000/fileinfo/Twisted-Hazard-Course)**
273. [Two Towers](https://twhl.info/vault.php?map=2327)
274. [Underground Facility](https://twhl.info/vault.php?map=1762)
275. [Unnamed](https://twhl.info/competitions.php?results=20) by *rowleybob*
276. [Urb's Challenge](https://twhl.info/vault.php?map=2677)
277. [USAF](https://hl.loess.ru/?mod=1085)
278. **[USS Gaspra](http://biomech.itstudios.ru/gallery/uss_gaspra.htm)** (download link dead!)
279. [USSL Blue Mesa](https://web.archive.org/web/20041109135949/http://cariad.co.za/twhl/mapvault_map.php?id=1402) (remove space from the end of the map's name before you play)
280. [Valve Pressure Beta v2](https://www.fileplanet.com/87528/80000/fileinfo/Valve-Pressure---Single-Player-Map)
281. [Vassy Compo](https://twhl.info/vault.php?map=771)
282. [Vilcabamba](https://www.moddb.com/games/half-life/addons/vilcabamba) (this map is also used as a first map in *Idol Hunt* mod)
283. [Vital Signs](https://twhl.info/vault.php?map=3908)
284. [Wake Up and Stay Alive](http://half-life.ru/forum/showthread.php?threadid=11956) (link dead!)
285. [war_coop1](https://twhl.info/vault.php?map=4991)
286. [Warehouse Firefight](https://twhl.info/vault.php?map=2279)
287. [We Got Work to Do!](https://twhl.info/vault.php?map=3107)
288. [Weird Dreams](https://twhl.info/vault.php?map=1473) (Required Spirit of Half-Life for item_suit)
289. [When the Army Came to the Office](https://www.runthinkshootlive.com/posts/when-the-army-came-to-the-office/)
290. [WTF](https://www.runthinkshootlive.com/posts/wtf/)
291. [WWE Bullsquid Royal Rumble](https://www.moddb.com/games/half-life/addons/wwe-bullsquid-royal-rumble)
292. **[Wybuchowka](https://www.runthinkshootlive.com/posts/wybuchowka/)**
293. **[X-treme Violence](https://www.moddb.com/mods/x-treme-violence)**
294. [XargoL's Entry for Vassy's Compo](https://twhl.info/vault.php?map=769)
295. [Xen Again](https://www.fileplanet.com/9132/0/fileinfo/XEN-AGAIN)
296. [Xen World](https://web
Download .txt
gitextract_lutwbsjd/

├── .cirrus.yml
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── crash-report.md
│   │   └── visual-glitches-report.md
│   └── workflows/
│       └── c-cpp.yml
├── .gitignore
├── .gitmodules
├── 3rdparty/
│   ├── bzip2/
│   │   └── wscript
│   ├── extras/
│   │   └── wscript
│   ├── gl4es/
│   │   └── wscript
│   ├── libbacktrace/
│   │   └── wscript
│   ├── libogg/
│   │   └── wscript
│   ├── opus/
│   │   └── wscript
│   ├── opusfile/
│   │   └── wscript
│   └── vorbis/
│       └── wscript
├── CONTRIBUTING.md
├── Documentation/
│   ├── bug-compatibility.md
│   ├── cross-compiling-for-windows-with-wine.md
│   ├── debugging-using-minidumps.md
│   ├── donate.md
│   ├── engine-porting-guide.md
│   ├── environment-variables.md
│   ├── extensions/
│   │   ├── addon-folders.md
│   │   ├── console-scripting.md
│   │   ├── entity-tools.md
│   │   ├── expanded-common-structures.md
│   │   ├── input-interface-ru.md
│   │   ├── input-interface.md
│   │   ├── library-naming.md
│   │   ├── mp3-loops.md
│   │   ├── native-object.md
│   │   └── sounds.lst.md
│   ├── gameinfo.md
│   ├── goldsrc-protocol-support.md
│   ├── hd-textures.md
│   ├── mod-porting-guide.md
│   ├── musl.md
│   ├── nat-bypass-usage.md
│   ├── not-supported-mod-list-and-reasons-why.md
│   ├── opensource-mods.md
│   ├── ports.md
│   ├── psvita.md
│   ├── supported-mod-list.md
│   └── touch-controls.md
├── README.md
├── android/
│   ├── .gitignore
│   ├── app/
│   │   ├── build.gradle.kts
│   │   ├── proguard-rules.pro
│   │   ├── run-python
│   │   ├── run-python.bat
│   │   └── src/
│   │       ├── asan/
│   │       │   ├── res/
│   │       │   │   └── values/
│   │       │   │       └── strings.xml
│   │       │   └── resources/
│   │       │       └── lib/
│   │       │           ├── arm64-v8a/
│   │       │           │   └── wrap.sh
│   │       │           ├── armeabi-v7a/
│   │       │           │   └── wrap.sh
│   │       │           └── x86_64/
│   │       │               └── wrap.sh
│   │       ├── continuous/
│   │       │   └── res/
│   │       │       └── values/
│   │       │           └── strings.xml
│   │       └── main/
│   │           ├── AndroidManifest.xml
│   │           ├── java/
│   │           │   └── su/
│   │           │       └── xash/
│   │           │           └── engine/
│   │           │               ├── DedicatedActivity.kt
│   │           │               ├── DedicatedService.kt
│   │           │               ├── MainActivity.kt
│   │           │               ├── MainApplication.kt
│   │           │               ├── XashActivity.java
│   │           │               ├── adapters/
│   │           │               │   └── GameAdapter.kt
│   │           │               ├── model/
│   │           │               │   ├── BackgroundBitmap.kt
│   │           │               │   └── Game.kt
│   │           │               ├── ui/
│   │           │               │   ├── library/
│   │           │               │   │   ├── LibraryFragment.kt
│   │           │               │   │   └── LibraryViewModel.kt
│   │           │               │   └── settings/
│   │           │               │       ├── AppSettingsFragment.kt
│   │           │               │       ├── AppSettingsPreferenceFragment.kt
│   │           │               │       ├── GameSettingsFragment.kt
│   │           │               │       └── GameSettingsPreferenceFragment.kt
│   │           │               └── util/
│   │           │                   ├── AndroidBug5497Workaround.java
│   │           │                   └── TGAReader.java
│   │           └── res/
│   │               ├── drawable/
│   │               │   ├── ic_baseline_add_24.xml
│   │               │   ├── ic_baseline_delete_24.xml
│   │               │   ├── ic_baseline_folder_open_24.xml
│   │               │   ├── ic_baseline_play_arrow_24.xml
│   │               │   ├── ic_baseline_settings_24.xml
│   │               │   └── ic_baseline_terminal_24.xml
│   │               ├── layout/
│   │               │   ├── activity_main.xml
│   │               │   ├── card_game.xml
│   │               │   ├── edit_text_preference.xml
│   │               │   ├── fragment_app_settings.xml
│   │               │   ├── fragment_game_settings.xml
│   │               │   ├── fragment_library.xml
│   │               │   ├── list_preference.xml
│   │               │   └── switch_preference.xml
│   │               ├── menu/
│   │               │   ├── menu_game_settings.xml
│   │               │   └── menu_library.xml
│   │               ├── mipmap-anydpi-v26/
│   │               │   ├── ic_launcher.xml
│   │               │   ├── ic_launcher_foreground.xml
│   │               │   ├── ic_launcher_monochrome.xml
│   │               │   └── ic_launcher_round.xml
│   │               ├── navigation/
│   │               │   └── nav_graph.xml
│   │               ├── values/
│   │               │   ├── colors.xml
│   │               │   ├── ic_launcher_background.xml
│   │               │   ├── strings.xml
│   │               │   ├── styles.xml
│   │               │   └── themes.xml
│   │               ├── values-es/
│   │               │   └── strings.xml
│   │               ├── values-pt-rBR/
│   │               │   └── strings.xml
│   │               ├── values-ru/
│   │               │   └── strings.xml
│   │               └── xml/
│   │                   ├── app_preferences.xml
│   │                   └── game_preferences.xml
│   ├── build.gradle.kts
│   ├── debug.keystore
│   ├── gradle/
│   │   ├── libs.versions.toml
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   └── settings.gradle.kts
├── common/
│   ├── backends.h
│   ├── beamdef.h
│   ├── bspfile.h
│   ├── cl_entity.h
│   ├── com_image.h
│   ├── com_model.h
│   ├── con_nprint.h
│   ├── const.h
│   ├── cvardef.h
│   ├── defaults.h
│   ├── demo_api.h
│   ├── dlight.h
│   ├── enginefeatures.h
│   ├── entity_state.h
│   ├── entity_types.h
│   ├── event_api.h
│   ├── event_args.h
│   ├── event_flags.h
│   ├── gameinfo.h
│   ├── hltv.h
│   ├── ivoicetweak.h
│   ├── kbutton.h
│   ├── lightstyle.h
│   ├── mathlib.h
│   ├── net_api.h
│   ├── netadr.h
│   ├── particledef.h
│   ├── pmtrace.h
│   ├── port.h
│   ├── qfont.h
│   ├── r_efx.h
│   ├── r_studioint.h
│   ├── ref_device.h
│   ├── ref_params.h
│   ├── render_api.h
│   ├── screenfade.h
│   ├── studio_event.h
│   ├── synctype.h
│   ├── triangleapi.h
│   ├── usercmd.h
│   ├── wadfile.h
│   ├── weaponinfo.h
│   ├── wrect.h
│   └── xash3d_types.h
├── engine/
│   ├── alias.h
│   ├── anorms.h
│   ├── cdll_exp.h
│   ├── cdll_int.h
│   ├── client/
│   │   ├── avi/
│   │   │   ├── avi.h
│   │   │   ├── avi_ffmpeg.c
│   │   │   └── avi_ffmpeg.h
│   │   ├── cl_cmds.c
│   │   ├── cl_custom.c
│   │   ├── cl_debug.c
│   │   ├── cl_demo.c
│   │   ├── cl_efrag.c
│   │   ├── cl_efx.c
│   │   ├── cl_events.c
│   │   ├── cl_font.c
│   │   ├── cl_frame.c
│   │   ├── cl_game.c
│   │   ├── cl_gameui.c
│   │   ├── cl_main.c
│   │   ├── cl_mobile.c
│   │   ├── cl_netgraph.c
│   │   ├── cl_parse.c
│   │   ├── cl_parse_48.c
│   │   ├── cl_parse_gs.c
│   │   ├── cl_pmove.c
│   │   ├── cl_qparse.c
│   │   ├── cl_remap.c
│   │   ├── cl_render.c
│   │   ├── cl_scrn.c
│   │   ├── cl_securedstub.c
│   │   ├── cl_spray.c
│   │   ├── cl_tent.c
│   │   ├── cl_tent.h
│   │   ├── cl_video.c
│   │   ├── cl_view.c
│   │   ├── client.h
│   │   ├── console.c
│   │   ├── gamma.c
│   │   ├── identification.c
│   │   ├── in_joy.c
│   │   ├── in_touch.c
│   │   ├── input.c
│   │   ├── input.h
│   │   ├── keys.c
│   │   ├── mod_dbghulls.c
│   │   ├── ref_common.c
│   │   ├── ref_common.h
│   │   ├── s_dsp.c
│   │   ├── s_load.c
│   │   ├── s_main.c
│   │   ├── s_mix.c
│   │   ├── s_mouth.c
│   │   ├── s_stream.c
│   │   ├── s_utils.c
│   │   ├── s_vox.c
│   │   ├── sound.h
│   │   ├── soundlib/
│   │   │   ├── libmpg/
│   │   │   │   ├── dct36.c
│   │   │   │   ├── dct64.c
│   │   │   │   ├── fmt123.h
│   │   │   │   ├── format.c
│   │   │   │   ├── frame.c
│   │   │   │   ├── frame.h
│   │   │   │   ├── getbits.h
│   │   │   │   ├── huffman.h
│   │   │   │   ├── index.c
│   │   │   │   ├── index.h
│   │   │   │   ├── layer3.c
│   │   │   │   ├── libmpg.c
│   │   │   │   ├── libmpg.dsp
│   │   │   │   ├── libmpg.h
│   │   │   │   ├── mpeghead.h
│   │   │   │   ├── mpg123.c
│   │   │   │   ├── mpg123.h
│   │   │   │   ├── parse.c
│   │   │   │   ├── reader.c
│   │   │   │   ├── reader.h
│   │   │   │   ├── sample.h
│   │   │   │   ├── synth.c
│   │   │   │   ├── synth.h
│   │   │   │   └── tabinit.c
│   │   │   ├── ogg_filestream.c
│   │   │   ├── ogg_filestream.h
│   │   │   ├── snd_main.c
│   │   │   ├── snd_mp3.c
│   │   │   ├── snd_ogg_opus.c
│   │   │   ├── snd_ogg_vorbis.c
│   │   │   └── snd_wav.c
│   │   ├── titles.c
│   │   ├── vgui/
│   │   │   ├── vgui_draw.c
│   │   │   └── vgui_draw.h
│   │   ├── vid_common.c
│   │   ├── vid_common.h
│   │   ├── voice.c
│   │   ├── voice.h
│   │   └── vox.h
│   ├── common/
│   │   ├── base_cmd.c
│   │   ├── base_cmd.h
│   │   ├── cfgscript.c
│   │   ├── cmd.c
│   │   ├── com_strings.h
│   │   ├── common.c
│   │   ├── common.h
│   │   ├── con_utils.c
│   │   ├── custom.c
│   │   ├── cvar.c
│   │   ├── cvar.h
│   │   ├── dedicated.c
│   │   ├── filesystem_engine.c
│   │   ├── host.c
│   │   ├── host_state.c
│   │   ├── hpak.c
│   │   ├── hpak.h
│   │   ├── imagelib/
│   │   │   ├── imagelib.h
│   │   │   ├── img_bmp.c
│   │   │   ├── img_bmp.h
│   │   │   ├── img_dds.c
│   │   │   ├── img_dds.h
│   │   │   ├── img_ktx2.c
│   │   │   ├── img_ktx2.h
│   │   │   ├── img_main.c
│   │   │   ├── img_png.c
│   │   │   ├── img_png.h
│   │   │   ├── img_quant.c
│   │   │   ├── img_tga.c
│   │   │   ├── img_tga.h
│   │   │   ├── img_utils.c
│   │   │   └── img_wad.c
│   │   ├── infostring.c
│   │   ├── ipv6text.c
│   │   ├── ipv6text.h
│   │   ├── launcher.c
│   │   ├── lib_common.c
│   │   ├── library.h
│   │   ├── masterlist.c
│   │   ├── mod_alias.c
│   │   ├── mod_bmodel.c
│   │   ├── mod_local.h
│   │   ├── mod_sprite.c
│   │   ├── mod_studio.c
│   │   ├── model.c
│   │   ├── munge.c
│   │   ├── net_buffer.c
│   │   ├── net_buffer.h
│   │   ├── net_chan.c
│   │   ├── net_encode.c
│   │   ├── net_encode.h
│   │   ├── net_http.c
│   │   ├── net_ws.c
│   │   ├── net_ws.h
│   │   ├── net_ws_private.h
│   │   ├── netchan.h
│   │   ├── pm_local.h
│   │   ├── pm_surface.c
│   │   ├── pm_trace.c
│   │   ├── protocol.h
│   │   ├── soundlib/
│   │   │   ├── snd_utils.c
│   │   │   └── soundlib.h
│   │   ├── sounds.c
│   │   ├── sys_con.c
│   │   ├── system.c
│   │   ├── system.h
│   │   ├── tests.h
│   │   ├── whereami.c
│   │   ├── whereami.h
│   │   ├── world.c
│   │   ├── world.h
│   │   └── zone.c
│   ├── cursor_type.h
│   ├── custom.h
│   ├── customentity.h
│   ├── edict.h
│   ├── eiface.h
│   ├── key_modifiers.h
│   ├── keydefs.h
│   ├── menu_int.h
│   ├── mobility_int.h
│   ├── physint.h
│   ├── platform/
│   │   ├── android/
│   │   │   ├── android.c
│   │   │   ├── dlsym-weak.c
│   │   │   ├── dlsym-weak.h
│   │   │   ├── lib_android.c
│   │   │   ├── lib_android.h
│   │   │   └── linker.h
│   │   ├── apple/
│   │   │   ├── lib_ios.c
│   │   │   └── lib_ios.h
│   │   ├── dos/
│   │   │   ├── in_dos.c
│   │   │   ├── ld.sh
│   │   │   ├── objcopy.sh
│   │   │   ├── sys_dos.c
│   │   │   └── vid_dos.c
│   │   ├── irix/
│   │   │   ├── dladdr.c
│   │   │   ├── dladdr.h
│   │   │   └── xash-exec
│   │   ├── linux/
│   │   │   ├── in_evdev.c
│   │   │   ├── s_alsa.c
│   │   │   ├── sys_linux.c
│   │   │   └── vid_fbdev.c
│   │   ├── misc/
│   │   │   ├── kmalloc.c
│   │   │   ├── lib_static.c
│   │   │   ├── sbrk.c
│   │   │   └── swap.h
│   │   ├── nswitch/
│   │   │   ├── sys_nswitch.c
│   │   │   └── xash3d-fwgs.nacp
│   │   ├── platform.h
│   │   ├── posix/
│   │   │   ├── con_posix.c
│   │   │   ├── crash.h
│   │   │   ├── crash_glibc.c
│   │   │   ├── crash_libbacktrace.c
│   │   │   ├── crash_posix.c
│   │   │   ├── lib_posix.c
│   │   │   ├── net.h
│   │   │   └── sys_posix.c
│   │   ├── psvita/
│   │   │   ├── in_psvita.c
│   │   │   ├── net_psvita.h
│   │   │   ├── sce_sys/
│   │   │   │   └── livearea/
│   │   │   │       └── contents/
│   │   │   │           └── template.xml
│   │   │   └── sys_psvita.c
│   │   ├── sdl1/
│   │   │   ├── host_sdl1.c
│   │   │   ├── in_sdl1.c
│   │   │   ├── platform_sdl1.h
│   │   │   ├── s_sdl1.c
│   │   │   ├── sys_sdl1.c
│   │   │   └── vid_sdl1.c
│   │   ├── sdl2/
│   │   │   ├── host_sdl2.c
│   │   │   ├── in_sdl2.c
│   │   │   ├── joy_sdl2.c
│   │   │   ├── platform_sdl2.h
│   │   │   ├── s_sdl2.c
│   │   │   ├── sys_sdl2.c
│   │   │   └── vid_sdl2.c
│   │   ├── sdl3/
│   │   │   ├── in_sdl3.c
│   │   │   ├── platform_sdl3.h
│   │   │   └── sys_sdl3.c
│   │   ├── stub/
│   │   │   ├── net_stub.h
│   │   │   └── s_stub.c
│   │   └── win32/
│   │       ├── con_win.c
│   │       ├── crash_win.c
│   │       ├── lib_custom_win.c
│   │       ├── lib_win.c
│   │       ├── lib_win.h
│   │       ├── net.h
│   │       └── sys_win.c
│   ├── progdefs.h
│   ├── ref_api.h
│   ├── ref_vulkan.h
│   ├── server/
│   │   ├── server.h
│   │   ├── sv_client.c
│   │   ├── sv_cmds.c
│   │   ├── sv_custom.c
│   │   ├── sv_filter.c
│   │   ├── sv_frame.c
│   │   ├── sv_game.c
│   │   ├── sv_init.c
│   │   ├── sv_log.c
│   │   ├── sv_main.c
│   │   ├── sv_move.c
│   │   ├── sv_phys.c
│   │   ├── sv_pmove.c
│   │   ├── sv_query.c
│   │   ├── sv_save.c
│   │   └── sv_world.c
│   ├── shake.h
│   ├── sprite.h
│   ├── studio.h
│   ├── vgui_api.h
│   ├── warpsin.h
│   └── wscript
├── filesystem/
│   ├── VFileSystem009.cpp
│   ├── VFileSystem009.h
│   ├── android.c
│   ├── dir.c
│   ├── exports.txt
│   ├── filesystem.c
│   ├── filesystem.h
│   ├── filesystem_internal.h
│   ├── fscallback.h
│   ├── pak.c
│   ├── tests/
│   │   ├── caseinsensitive.c
│   │   ├── interface.cpp
│   │   └── no-init.c
│   ├── wad.c
│   ├── wscript
│   └── zip.c
├── game_launch/
│   ├── game.cpp
│   ├── game.rc
│   └── wscript
├── pm_shared/
│   ├── pm_defs.h
│   ├── pm_info.h
│   └── pm_movevars.h
├── public/
│   ├── build.c
│   ├── build.h
│   ├── build_vcs.c
│   ├── buildenums.h
│   ├── crclib.c
│   ├── crclib.h
│   ├── crtlib.c
│   ├── crtlib.h
│   ├── dllhelpers.c
│   ├── getopt.c
│   ├── getopt.h
│   ├── ktx2.h
│   ├── matrixlib.c
│   ├── miniz.c
│   ├── miniz.h
│   ├── pstdint.h
│   ├── tests/
│   │   ├── test_atoi.c
│   │   ├── test_build.c
│   │   ├── test_efp.c
│   │   ├── test_filebase.c
│   │   ├── test_fileext.c
│   │   ├── test_parsefile.c
│   │   ├── test_strings.c
│   │   └── test_validate_target.c
│   ├── utflib.c
│   ├── utflib.h
│   ├── wscript
│   ├── xash3d_mathlib.c
│   └── xash3d_mathlib.h
├── ref/
│   ├── gl/
│   │   ├── exports.txt
│   │   ├── gl2_shim/
│   │   │   ├── fragment.glsl.inc
│   │   │   ├── gl2_shim.c
│   │   │   ├── gl2_shim.h
│   │   │   └── vertex.glsl.inc
│   │   ├── gl_alias.c
│   │   ├── gl_backend.c
│   │   ├── gl_beams.c
│   │   ├── gl_context.c
│   │   ├── gl_cull.c
│   │   ├── gl_decals.c
│   │   ├── gl_draw.c
│   │   ├── gl_export.h
│   │   ├── gl_frustum.c
│   │   ├── gl_frustum.h
│   │   ├── gl_image.c
│   │   ├── gl_local.h
│   │   ├── gl_opengl.c
│   │   ├── gl_rlight.c
│   │   ├── gl_rmain.c
│   │   ├── gl_rmath.c
│   │   ├── gl_rmisc.c
│   │   ├── gl_rpart.c
│   │   ├── gl_rsurf.c
│   │   ├── gl_sprite.c
│   │   ├── gl_studio.c
│   │   ├── gl_triapi.c
│   │   ├── gl_warp.c
│   │   ├── vgl_shim/
│   │   │   ├── vgl_shaders/
│   │   │   │   ├── fragment.cg.inc
│   │   │   │   └── vertex.cg.inc
│   │   │   ├── vgl_shim.c
│   │   │   ├── vgl_shim.h
│   │   │   └── wscript
│   │   └── wscript
│   ├── null/
│   │   ├── r_context.c
│   │   └── wscript
│   ├── soft/
│   │   ├── adivtab.h
│   │   ├── r_aclip.c
│   │   ├── r_beams.c
│   │   ├── r_bsp.c
│   │   ├── r_context.c
│   │   ├── r_decals.c
│   │   ├── r_draw.c
│   │   ├── r_edge.c
│   │   ├── r_glblit.c
│   │   ├── r_image.c
│   │   ├── r_light.c
│   │   ├── r_local.h
│   │   ├── r_main.c
│   │   ├── r_math.c
│   │   ├── r_misc.c
│   │   ├── r_part.c
│   │   ├── r_polyse.c
│   │   ├── r_rast.c
│   │   ├── r_scan.c
│   │   ├── r_sprite.c
│   │   ├── r_studio.c
│   │   ├── r_surf.c
│   │   ├── r_trialias.c
│   │   ├── r_triapi.c
│   │   └── wscript
│   └── vk/
│       ├── NOTES.md
│       ├── TODO.md
│       ├── camera.c
│       ├── camera.h
│       ├── common_geometry.c
│       ├── data/
│       │   ├── bshift/
│       │   │   ├── luchiki/
│       │   │   │   └── maps/
│       │   │   │       ├── ba_canal1.patch
│       │   │   │       ├── ba_canal2.patch
│       │   │   │       ├── ba_elevator.patch
│       │   │   │       ├── ba_security1.patch
│       │   │   │       ├── ba_security2.patch
│       │   │   │       ├── ba_tram2.patch
│       │   │   │       └── ba_yard5a.patch
│       │   │   └── maps/
│       │   │       ├── ba_canal1.rad
│       │   │       ├── ba_canal1b.rad
│       │   │       ├── ba_elevator.rad
│       │   │       ├── ba_hazard1.rad
│       │   │       ├── ba_hazard2.rad
│       │   │       ├── ba_hazard3.rad
│       │   │       ├── ba_hazard4.rad
│       │   │       ├── ba_hazard5.rad
│       │   │       ├── ba_hazard6.rad
│       │   │       ├── ba_power1.rad
│       │   │       ├── ba_power2.rad
│       │   │       ├── ba_security2.rad
│       │   │       ├── ba_teleport1.rad
│       │   │       ├── ba_teleport2.rad
│       │   │       ├── ba_yard1.rad
│       │   │       ├── ba_yard2.rad
│       │   │       ├── ba_yard3.rad
│       │   │       ├── ba_yard3a.rad
│       │   │       ├── ba_yard3b.rad
│       │   │       ├── ba_yard4.rad
│       │   │       ├── ba_yard4a.rad
│       │   │       ├── ba_yard5.rad
│       │   │       ├── ba_yard5a.rad
│       │   │       └── lights.rad
│       │   ├── cstrike/
│       │   │   ├── luchiki/
│       │   │   │   └── maps/
│       │   │   │       └── de_dust2.patch
│       │   │   └── maps/
│       │   │       ├── cs_747.rad
│       │   │       ├── cs_assault.rad
│       │   │       ├── cs_delta_assault.rad
│       │   │       ├── cs_italy.rad
│       │   │       └── fy_pool_day.rad
│       │   └── valve/
│       │       ├── luchiki/
│       │       │   └── maps/
│       │       │       ├── c0a0.patch
│       │       │       ├── c0a0a.patch
│       │       │       ├── c0a0b.patch
│       │       │       ├── c0a0c.patch
│       │       │       ├── c0a0d.patch
│       │       │       ├── c0a0e.patch
│       │       │       ├── c1a0.patch
│       │       │       ├── c1a0a.patch
│       │       │       ├── c1a0b.patch
│       │       │       ├── c1a0c.patch
│       │       │       ├── c1a0d.patch
│       │       │       ├── c1a0e.patch
│       │       │       ├── c1a1.patch
│       │       │       ├── c1a1a.patch
│       │       │       ├── c1a1b.patch
│       │       │       ├── c1a1c.patch
│       │       │       ├── c1a1d.patch
│       │       │       ├── c1a1f.patch
│       │       │       ├── c1a2.patch
│       │       │       ├── c1a2a.patch
│       │       │       ├── c1a2b.patch
│       │       │       ├── c1a2c.patch
│       │       │       ├── c1a2d.patch
│       │       │       ├── c1a3.patch
│       │       │       ├── c1a3a.patch
│       │       │       ├── c1a3b-dayone.patch
│       │       │       ├── c1a3b.patch
│       │       │       ├── c1a3c-dayone.patch
│       │       │       ├── c1a3d.patch
│       │       │       ├── c1a4d.patch
│       │       │       ├── c1a4e.patch
│       │       │       ├── c1a4f.patch
│       │       │       ├── c1a4g.patch
│       │       │       ├── c1a4k.patch
│       │       │       ├── c2a1.patch
│       │       │       ├── c2a1b.patch
│       │       │       ├── c2a2h.patch
│       │       │       ├── c2a3.patch
│       │       │       ├── c2a3a.patch
│       │       │       ├── c2a3b.patch
│       │       │       ├── c2a3d.patch
│       │       │       ├── c2a3e.patch
│       │       │       ├── c2a4a.patch
│       │       │       ├── c2a4e.patch
│       │       │       ├── c2a4f.patch
│       │       │       ├── c2a4g.patch
│       │       │       ├── c2a5.patch
│       │       │       ├── c2a5c.patch
│       │       │       ├── c2a5e.patch
│       │       │       ├── c2a5f.patch
│       │       │       ├── c3a1.patch
│       │       │       ├── c3a1a.patch
│       │       │       ├── c3a2.patch
│       │       │       ├── c3a2d.patch
│       │       │       ├── c3a2e.patch
│       │       │       ├── c4a1a.patch
│       │       │       ├── c5a1.patch
│       │       │       ├── hldemo1.patch
│       │       │       ├── hldemo2.patch
│       │       │       └── t0a0.patch
│       │       └── maps/
│       │           ├── README.txt
│       │           ├── boot_camp.rad
│       │           ├── c0a0.rad
│       │           ├── c0a0a.rad
│       │           ├── c0a0b.rad
│       │           ├── c0a0c.rad
│       │           ├── c0a0d.rad
│       │           ├── c0a0e.rad
│       │           ├── c1a0.rad
│       │           ├── c1a0a.rad
│       │           ├── c1a0b.rad
│       │           ├── c1a0c.rad
│       │           ├── c1a0d.rad
│       │           ├── c1a0e.rad
│       │           ├── c1a1.rad
│       │           ├── c1a1a.rad
│       │           ├── c1a1b.rad
│       │           ├── c1a1c.rad
│       │           ├── c1a1d.rad
│       │           ├── c1a1f.rad
│       │           ├── c1a2.rad
│       │           ├── c1a2a.rad
│       │           ├── c1a2b.rad
│       │           ├── c1a2c.rad
│       │           ├── c1a2d.rad
│       │           ├── c1a3.rad
│       │           ├── c1a3a.rad
│       │           ├── c1a3b.rad
│       │           ├── c1a3c.rad
│       │           ├── c1a3d.rad
│       │           ├── c1a4.rad
│       │           ├── c1a4b.rad
│       │           ├── c1a4d.rad
│       │           ├── c1a4e.rad
│       │           ├── c1a4f.rad
│       │           ├── c1a4g.rad
│       │           ├── c1a4i.rad
│       │           ├── c1a4j.rad
│       │           ├── c1a4k.rad
│       │           ├── c2a1.rad
│       │           ├── c2a1a.rad
│       │           ├── c2a1b.rad
│       │           ├── c2a2.rad
│       │           ├── c2a2a.rad
│       │           ├── c2a2b1.rad
│       │           ├── c2a2b2.rad
│       │           ├── c2a2c.rad
│       │           ├── c2a2d.rad
│       │           ├── c2a2e.rad
│       │           ├── c2a2f.rad
│       │           ├── c2a2g.rad
│       │           ├── c2a2h.rad
│       │           ├── c2a3.rad
│       │           ├── c2a3a.rad
│       │           ├── c2a3b.rad
│       │           ├── c2a3c.rad
│       │           ├── c2a3d.rad
│       │           ├── c2a3e.rad
│       │           ├── c2a4a.rad
│       │           ├── c2a4b.rad
│       │           ├── c2a4c.rad
│       │           ├── c2a4d.rad
│       │           ├── c2a4e.rad
│       │           ├── c2a4f.rad
│       │           ├── c2a4g.rad
│       │           ├── c2a5.rad
│       │           ├── c2a5a.rad
│       │           ├── c2a5d.rad
│       │           ├── c2a5e.rad
│       │           ├── c2a5f.rad
│       │           ├── c2a5x.rad
│       │           ├── c3a1.rad
│       │           ├── c3a1a.rad
│       │           ├── c3a1b.rad
│       │           ├── c3a2.rad
│       │           ├── c3a2a.rad
│       │           ├── c3a2b.rad
│       │           ├── c3a2c.rad
│       │           ├── c3a2d.rad
│       │           ├── c3a2e.rad
│       │           ├── c3a2f.rad
│       │           ├── c4a1b.rad
│       │           ├── c4a1c.rad
│       │           ├── c4a1d.rad
│       │           ├── c4a1e.rad
│       │           ├── c4a1f.rad
│       │           ├── c4a2.rad
│       │           ├── c4a2a.rad
│       │           ├── c4a2b.rad
│       │           ├── c4a3.rad
│       │           ├── c5a1.rad
│       │           ├── cornell.rad
│       │           ├── crossfire.rad
│       │           ├── datacore.rad
│       │           ├── doublecross.rad
│       │           ├── frenzy.rad
│       │           ├── gasworks.rad
│       │           ├── hldemo1.rad
│       │           ├── hldemo2.rad
│       │           ├── lambda_bunker.rad
│       │           ├── lights.rad
│       │           ├── rapidcore.rad
│       │           ├── rustmill.rad
│       │           ├── snark_pit.rad
│       │           ├── stalkyard.rad
│       │           ├── subtransit.rad
│       │           ├── t0a0.rad
│       │           ├── t0a0a.rad
│       │           ├── t0a0b.rad
│       │           ├── t0a0b1.rad
│       │           ├── t0a0b2.rad
│       │           ├── t0a0c.rad
│       │           ├── t0a0d.rad
│       │           ├── team9.rad
│       │           ├── thehill.rad
│       │           ├── undertow.rad
│       │           └── xen_dm.rad
│       ├── dumbspter.c
│       ├── infotool.c
│       ├── r_block.c
│       ├── r_block.h
│       ├── r_decals.c
│       ├── r_decals.h
│       ├── r_speeds.c
│       ├── r_speeds.h
│       ├── r_textures.c
│       ├── r_textures.h
│       ├── ray_materials.md
│       ├── rlight.c
│       ├── rt_kusochki.c
│       ├── rt_kusochki.h
│       ├── sebastian.py
│       ├── shaders/
│       │   ├── 2d.frag
│       │   ├── 2d.vert
│       │   ├── additive.rahit
│       │   ├── alphamask.rahit
│       │   ├── atrous.glsl
│       │   ├── bluenoise.glsl
│       │   ├── bounce.comp
│       │   ├── brdf.glsl
│       │   ├── brdf.h
│       │   ├── brush.frag
│       │   ├── brush.vert
│       │   ├── color_spaces.glsl
│       │   ├── debug.glsl
│       │   ├── denoiser.comp
│       │   ├── denoiser_config.glsl
│       │   ├── denoiser_utils.glsl
│       │   ├── diffuse_gi_sh_atrous.glsl
│       │   ├── diffuse_gi_sh_denoise_init.comp
│       │   ├── diffuse_gi_sh_denoise_pass_1.comp
│       │   ├── diffuse_gi_sh_denoise_pass_2.comp
│       │   ├── diffuse_gi_sh_denoise_pass_3.comp
│       │   ├── diffuse_gi_sh_denoise_pass_4.comp
│       │   ├── diffuse_gi_sh_denoise_pass_5.comp
│       │   ├── diffuse_gi_sh_denoise_save.comp
│       │   ├── empty.rmiss
│       │   ├── indirect_diffuse_atrous1.comp
│       │   ├── light.glsl
│       │   ├── light_common.glsl
│       │   ├── light_polygon.glsl
│       │   ├── noise.glsl
│       │   ├── peters2021-sampling/
│       │   │   ├── math_constants.glsl
│       │   │   ├── polygon_clipping.glsl
│       │   │   └── polygon_sampling.glsl
│       │   ├── ray_common.glsl
│       │   ├── ray_common_alphatest.rahit
│       │   ├── ray_interop.h
│       │   ├── ray_kusochki.glsl
│       │   ├── ray_light_direct.glsl
│       │   ├── ray_light_direct_point.comp
│       │   ├── ray_light_direct_poly.comp
│       │   ├── ray_primary.comp
│       │   ├── ray_primary.rchit
│       │   ├── ray_primary.rgen
│       │   ├── ray_primary.rmiss
│       │   ├── ray_primary_common.glsl
│       │   ├── ray_primary_hit.glsl
│       │   ├── ray_shadow.rchit
│       │   ├── ray_shadow.rmiss
│       │   ├── ray_shadow_interface.glsl
│       │   ├── rt.json
│       │   ├── rt_geometry.glsl
│       │   ├── sky.frag
│       │   ├── sky.vert
│       │   ├── skybox.glsl
│       │   ├── spatial_reconstruction.glsl
│       │   ├── spatial_reconstruction_pass1.comp
│       │   ├── spatial_reconstruction_pass2.comp
│       │   ├── spherical_harmonics.glsl
│       │   ├── trace_decals.glsl
│       │   ├── trace_simple_blending.glsl
│       │   └── utils.glsl
│       ├── spirv.py
│       ├── std/
│       │   ├── alolcator.c
│       │   ├── alolcator.h
│       │   ├── arrays.c
│       │   ├── arrays.h
│       │   ├── bitarray.c
│       │   ├── bitarray.h
│       │   ├── debugbreak.h
│       │   ├── flipping.c
│       │   ├── flipping.h
│       │   ├── pcg.h
│       │   ├── profiler.c
│       │   ├── profiler.h
│       │   ├── stringview.c
│       │   ├── stringview.h
│       │   ├── unordered_roadmap.c
│       │   └── unordered_roadmap.h
│       ├── tests/
│       │   └── unordered_roadmap.c
│       ├── vk_beams.c
│       ├── vk_beams.h
│       ├── vk_brush.c
│       ├── vk_brush.h
│       ├── vk_common.h
│       ├── vk_const.h
│       ├── vk_core.c
│       ├── vk_core.h
│       ├── vk_cvar.c
│       ├── vk_cvar.h
│       ├── vk_entity_data.c
│       ├── vk_entity_data.h
│       ├── vk_framectl.c
│       ├── vk_framectl.h
│       ├── vk_geometry.c
│       ├── vk_geometry.h
│       ├── vk_light.c
│       ├── vk_light.h
│       ├── vk_lightmap.c
│       ├── vk_lightmap.h
│       ├── vk_logs.c
│       ├── vk_logs.h
│       ├── vk_mapents.c
│       ├── vk_mapents.h
│       ├── vk_materials.c
│       ├── vk_materials.h
│       ├── vk_math.c
│       ├── vk_math.h
│       ├── vk_overlay.c
│       ├── vk_overlay.h
│       ├── vk_ray_accel.h
│       ├── vk_ray_internal.h
│       ├── vk_ray_model.c
│       ├── vk_render.c
│       ├── vk_render.h
│       ├── vk_renderstate.c
│       ├── vk_renderstate.h
│       ├── vk_rmain.c
│       ├── vk_rpart.c
│       ├── vk_rpart.h
│       ├── vk_rtx.c
│       ├── vk_rtx.h
│       ├── vk_scene.c
│       ├── vk_scene.h
│       ├── vk_speeds.c
│       ├── vk_speeds.h
│       ├── vk_sprite.c
│       ├── vk_sprite.h
│       ├── vk_studio.c
│       ├── vk_studio.h
│       ├── vk_studio_model.c
│       ├── vk_studio_model.h
│       ├── vk_textures.c
│       ├── vk_textures.h
│       ├── vk_triapi.c
│       ├── vk_triapi.h
│       ├── vulkan/
│       │   ├── VBarrier.c
│       │   ├── VBarrier.h
│       │   ├── VBuffer.c
│       │   ├── VBuffer.h
│       │   ├── VCombuf.c
│       │   ├── VCombuf.h
│       │   ├── VCommandPool.c
│       │   ├── VCommandPool.h
│       │   ├── VDescriptor.c
│       │   ├── VDescriptor.h
│       │   ├── VDevice.c
│       │   ├── VDevice.h
│       │   ├── VDevmem.c
│       │   ├── VDevmem.h
│       │   ├── VImage.c
│       │   ├── VImage.h
│       │   ├── VImageExtra.h
│       │   ├── VMeatpipe.c
│       │   ├── VMeatpipe.h
│       │   ├── VMisc.c
│       │   ├── VNvAftermath.c
│       │   ├── VNvAftermath.h
│       │   ├── VPass.c
│       │   ├── VPass.h
│       │   ├── VPerfQuery.c
│       │   ├── VPerfQuery.h
│       │   ├── VPipeline.c
│       │   ├── VPipeline.h
│       │   ├── VRayAccel.c
│       │   ├── VResource.c
│       │   ├── VResource.h
│       │   ├── VStaging.c
│       │   ├── VStaging.h
│       │   ├── VSwapchain.c
│       │   └── VSwapchain.h
│       └── wscript
├── scripts/
│   ├── build-ninja.py
│   ├── cirrus/
│   │   └── build_freebsd.sh
│   ├── configure-ninja.py
│   ├── flatpak/
│   │   ├── run.sh
│   │   ├── su.xash.Engine.Compat.i386.desktop
│   │   └── su.xash.Engine.Compat.i386.yml
│   ├── gha/
│   │   ├── build_android.sh
│   │   ├── build_apple.sh
│   │   ├── build_linux-e2k.sh
│   │   ├── build_linux.sh
│   │   ├── build_motomagx.sh
│   │   ├── build_nswitch.sh
│   │   ├── build_nswitch_docker.sh
│   │   ├── build_psvita.sh
│   │   ├── build_win32.sh
│   │   ├── deps_android.sh
│   │   ├── deps_apple.sh
│   │   ├── deps_linux-e2k.sh
│   │   ├── deps_linux.sh
│   │   ├── deps_motomagx.sh
│   │   ├── deps_nswitch.sh
│   │   ├── deps_psvita.sh
│   │   ├── deps_win32.sh
│   │   └── linux/
│   │       ├── AppRun
│   │       └── xash3d-fwgs.desktop
│   ├── lib-e2k.sh
│   ├── lib.sh
│   ├── makepak.py
│   ├── sailfish/
│   │   ├── build.sh
│   │   ├── deploy.sh
│   │   ├── harbour-xash3d-fwgs.desktop
│   │   ├── harbour-xash3d-fwgs.spec
│   │   └── run.sh
│   ├── waifulib/
│   │   ├── c_emscripten.py
│   │   ├── compiler_optimizations.py
│   │   ├── glslc.py
│   │   ├── ninja.py
│   │   ├── ninja_syntax.py
│   │   ├── nswitch.py
│   │   ├── owcc.py
│   │   ├── psp.py
│   │   ├── psvita.py
│   │   ├── sdl2.py
│   │   ├── sebastian.py
│   │   ├── vgui.py
│   │   ├── xcompile.py
│   │   ├── xshlib.py
│   │   └── zip.py
│   └── xashds@.service
├── uncrustify.cfg
├── utils/
│   ├── mdldec/
│   │   ├── mdldec.c
│   │   ├── mdldec.h
│   │   ├── qc.c
│   │   ├── qc.h
│   │   ├── res/
│   │   │   └── activities.txt
│   │   ├── settings.h
│   │   ├── smd.c
│   │   ├── smd.h
│   │   ├── texture.c
│   │   ├── texture.h
│   │   ├── utils.c
│   │   ├── utils.h
│   │   ├── version.h
│   │   └── wscript
│   ├── run-fuzzer/
│   │   ├── run-fuzzer.c
│   │   └── wscript
│   └── xar/
│       ├── wscript
│       └── xar.c
├── waf
├── waf.bat
└── wscript
Download .txt
Showing preview only (709K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7954 symbols across 510 files)

FILE: android/app/src/main/java/su/xash/engine/XashActivity.java
  class XashActivity (line 18) | public class XashActivity extends SDLActivity {
    method onCreate (line 23) | @Override
    method onDestroy (line 36) | @Override
    method getLibraries (line 47) | @Override
    method getAndroidID (line 52) | @SuppressLint("HardwareIds")
    method saveAndroidID (line 57) | @SuppressLint("ApplySharedPref")
    method loadAndroidID (line 62) | private String loadAndroidID() {
    method getCallingPackage (line 66) | @Override
    method getAssets (line 75) | private AssetManager getAssets(boolean isEngine) {
    method getAssetsList (line 92) | private String[] getAssetsList(boolean isEngine, String path) {
    method dispatchKeyEvent (line 104) | @Override
    method getArguments (line 121) | @Override

FILE: android/app/src/main/java/su/xash/engine/util/AndroidBug5497Workaround.java
  class AndroidBug5497Workaround (line 8) | public class AndroidBug5497Workaround {
    method assistActivity (line 12) | public static void assistActivity(Activity activity) {
    method AndroidBug5497Workaround (line 20) | private AndroidBug5497Workaround(Activity activity) {
    method possiblyResizeChildOfContent (line 27) | private void possiblyResizeChildOfContent() {
    method computeUsableHeight (line 44) | private int computeUsableHeight() {

FILE: android/app/src/main/java/su/xash/engine/util/TGAReader.java
  class TGAReader (line 19) | public final class TGAReader {
    method getWidth (line 24) | public static int getWidth(byte[] buffer) {
    method getHeight (line 28) | public static int getHeight(byte[] buffer) {
    method read (line 32) | public static int[] read(byte[] buffer, Order order) throws IOException {
    method decodeRLE (line 97) | private static byte[] decodeRLE(int width, int height, int depth, byte...
    method createPixelsFromColormap (line 125) | private static int[] createPixelsFromColormap(int width, int height, i...
    method createPixelsFromRGB (line 298) | private static int[] createPixelsFromRGB(int width, int height, int de...
    method createPixelsFromGrayscale (line 447) | private static int[] createPixelsFromGrayscale(int width, int height, ...
    method TGAReader (line 572) | private TGAReader() {
    class Order (line 575) | public static final class Order {
      method Order (line 576) | Order(int redShift, int greenShift, int blueShift, int alphaShift) {

FILE: common/beamdef.h
  type BEAM (line 32) | typedef struct beam_s BEAM;
  type beam_s (line 33) | struct beam_s

FILE: common/bspfile.h
  type dlump_t (line 142) | typedef struct
  type dheader_t (line 148) | typedef struct
  type dextrahdr_t (line 154) | typedef struct
  type dmodel_t (line 161) | typedef struct
  type dmiptexlump_t (line 172) | typedef struct
  type dvertex_t (line 178) | typedef struct
  type dplane_t (line 183) | typedef struct
  type dnode_t (line 190) | typedef struct
  type dnode32_t (line 200) | typedef struct
  type dleaf_t (line 212) | typedef struct
  type dleaf32_t (line 226) | typedef struct
  type dclipnode_t (line 240) | typedef struct
  type dclipnode32_t (line 246) | typedef struct
  type dtexinfo_t (line 252) | typedef struct
  type dfaceinfo_t (line 260) | typedef struct
  type word (line 268) | typedef word	dmarkface_t;
  type dmarkface32_t (line 269) | typedef int	dmarkface32_t;
  type dsurfedge_t (line 271) | typedef int	dsurfedge_t;
  type dedge_t (line 275) | typedef struct
  type dedge32_t (line 280) | typedef struct
  type dface_t (line 285) | typedef struct
  type dface32_t (line 299) | typedef struct

FILE: common/cl_entity.h
  type efrag_t (line 19) | typedef struct efrag_s
  type mouth_t (line 27) | typedef struct
  type latchedvars_t (line 34) | typedef struct
  type position_history_t (line 49) | typedef struct
  type cl_entity_t (line 58) | typedef struct cl_entity_s cl_entity_t;
  type cl_entity_s (line 66) | struct cl_entity_s

FILE: common/com_image.h
  type pixformat_t (line 27) | typedef enum
  type bpc_desc_t (line 53) | typedef struct bpc_desc_s
  type ilFlags_t (line 62) | typedef enum
  type imgFlags_t (line 88) | typedef enum
  type rgbdata_t (line 120) | typedef struct rgbdata_s

FILE: common/com_model.h
  type modtype_t (line 40) | typedef enum
  type mplane_t (line 49) | typedef struct mplane_s
  type mvertex_t (line 58) | typedef struct
  type mclipnode32_t (line 63) | typedef struct mclipnode32_s
  type mclipnode16_t (line 69) | typedef struct mclipnode16_s
  type medge32_t (line 76) | typedef struct medge32_s
  type medge16_t (line 81) | typedef struct medge16_s
  type texture_t (line 87) | typedef struct texture_s
  type mfaceinfo_t (line 102) | typedef struct
  type mfacebevel_t (line 114) | typedef struct
  type mtexinfo_t (line 123) | typedef struct
  type glpoly2_t (line 138) | typedef struct glpoly2_s
  type mnode_t (line 151) | typedef struct mnode_s
  type msurface_t (line 190) | typedef struct msurface_s	msurface_t;
  type decal_t (line 191) | typedef struct decal_s	decal_t;
  type decal_s (line 194) | struct decal_s
  type mleaf_t (line 210) | typedef struct mleaf_s
  type mextrasurf_t (line 230) | typedef struct mextrasurf_s
  type mdisplaylist_t (line 265) | typedef struct mdisplaylist_s
  type msurface_s (line 274) | struct msurface_s
  type hull_t (line 312) | typedef struct hull_s
  type cache_user_t (line 328) | typedef struct cache_user_s
  type model_t (line 334) | typedef struct model_s
  type alight_t (line 412) | typedef struct alight_s
  type auxvert_t (line 420) | typedef struct auxvert_s
  type player_info_t (line 430) | typedef struct player_info_s
  type spriteframetype_t (line 463) | typedef enum { SPR_SINGLE = 0, SPR_GROUP, SPR_ANGLED } spriteframetype_t;
  type mspriteframe_t (line 465) | typedef struct mspriteframe_s
  type mspritegroup_t (line 473) | typedef struct
  type mspriteframedesc_t (line 480) | typedef struct
  type msprite_t (line 486) | typedef struct
  type trivertex_t (line 514) | typedef struct
  type maliasframedesc_t (line 520) | typedef struct
  type aliashdr_t (line 530) | typedef struct
  function mnode_t (line 601) | static inline mnode_t *node_child( const mnode_t *n, int side, const mod...
  function node_children (line 628) | static inline void node_children( mnode_t *children[2], const mnode_t *n...
  function node_firstsurface (line 634) | static inline int node_firstsurface( const mnode_t *n, const model_t *mod )
  function node_numsurfaces (line 642) | static inline int node_numsurfaces( const mnode_t *n, const model_t *mod )

FILE: common/con_nprint.h
  type con_nprint_t (line 18) | typedef struct con_nprint_s

FILE: common/const.h
  type func_t (line 723) | typedef int		func_t;
  type string_t (line 724) | typedef int		string_t;
  type word (line 726) | typedef unsigned short	word;
  type color24 (line 730) | typedef struct
  type colorVec (line 735) | typedef struct
  type link_t (line 740) | typedef struct link_s
  type edict_t (line 745) | typedef struct edict_s edict_t;
  type plane_t (line 747) | typedef struct
  type trace_t (line 753) | typedef struct

FILE: common/cvardef.h
  type cvar_s (line 85) | struct cvar_s {
  type cvar_t (line 92) | typedef struct cvar_s cvar_t;
  type cvar_s (line 94) | struct cvar_s
  type convar_s (line 97) | struct convar_s {
  type convar_t (line 106) | typedef struct convar_s convar_t;

FILE: common/demo_api.h
  type demo_api_t (line 19) | typedef struct demo_api_s

FILE: common/dlight.h
  type dlight_t (line 19) | typedef struct dlight_s

FILE: common/entity_state.h
  type entity_state_t (line 24) | typedef struct entity_state_s entity_state_t;
  type entity_state_s (line 26) | struct entity_state_s
  type clientdata_t (line 123) | typedef struct clientdata_s
  type local_state_t (line 181) | typedef struct local_state_s

FILE: common/event_api.h
  type event_api_t (line 21) | typedef struct event_api_s

FILE: common/event_args.h
  type event_args_t (line 24) | typedef struct event_args_s

FILE: common/gameinfo.h
  type GAMEINFO (line 33) | typedef struct GAMEINFO_s
  type gametype_t (line 66) | typedef enum gametype_e
  type gameinfo2_t (line 73) | typedef struct gameinfo2_s

FILE: common/ivoicetweak.h
  type VoiceTweakControl (line 20) | typedef enum
  type IVoiceTweak (line 26) | typedef struct IVoiceTweak_s

FILE: common/kbutton.h
  type kbutton_t (line 27) | typedef struct

FILE: common/lightstyle.h
  type lightstyle_t (line 19) | typedef struct

FILE: common/mathlib.h
  type vec_t (line 19) | typedef float vec_t;
  type vec_t (line 20) | typedef vec_t vec2_t[2];
  type vec_t (line 21) | typedef vec_t vec3_t[3];
  type vec_t (line 22) | typedef vec_t vec4_t[4];
  type mplane_s (line 28) | struct mplane_s
  type mplane_s (line 78) | struct mplane_s

FILE: common/net_api.h
  type net_response_s (line 32) | struct net_response_s
  type net_response_s (line 33) | struct net_response_s
  type net_adrlist_t (line 41) | typedef struct net_adrlist_s
  type net_response_t (line 47) | typedef struct net_response_s
  type net_status_t (line 66) | typedef struct net_status_s
  type net_api_t (line 84) | typedef struct net_api_s

FILE: common/netadr.h
  type netadrtype_t (line 31) | typedef enum netadrtype_e
  type netadr_t (line 57) | typedef struct netadr_s
  function netadrtype_t (line 90) | static inline netadrtype_t NET_NetadrType( const netadr_t *a )
  function NET_NetadrSetType (line 101) | static inline void NET_NetadrSetType( netadr_t *a, netadrtype_t type )

FILE: common/particledef.h
  type ptype_t (line 19) | typedef enum
  type particle_t (line 34) | typedef struct particle_s

FILE: common/pmtrace.h
  type pmplane_t (line 19) | typedef struct
  type pmtrace_t (line 25) | typedef struct pmtrace_s pmtrace_t;
  type pmtrace_s (line 27) | struct pmtrace_s

FILE: common/port.h
  type POINT (line 63) | typedef struct tagPOINT

FILE: common/qfont.h
  type charinfo (line 23) | typedef struct
  type qfont_t (line 29) | typedef struct qfont_s

FILE: common/r_efx.h
  type pmtrace_s (line 89) | struct pmtrace_s
  type TEMPENTITY (line 90) | typedef struct tempent_s
  type efx_api_t (line 117) | typedef struct efx_api_s efx_api_t;
  type efx_api_s (line 119) | struct efx_api_s

FILE: common/r_studioint.h
  type engine_studio_api_t (line 22) | typedef struct engine_studio_api_s
  type server_studio_api_t (line 116) | typedef struct server_studio_api_s
  type r_studio_interface_t (line 129) | typedef struct r_studio_interface_s
  type sv_blending_interface_t (line 139) | typedef struct sv_blending_interface_s

FILE: common/ref_device.h
  type ref_device_type_t (line 20) | typedef enum ref_device_type_e
  type ref_device_t (line 33) | typedef struct ref_device_s {

FILE: common/ref_params.h
  type ref_params_t (line 19) | typedef struct ref_params_s
  type ref_overview_t (line 74) | typedef struct ref_overview_s
  type ref_viewpass_t (line 95) | typedef struct ref_viewpass_s

FILE: common/render_api.h
  type texFlags_t (line 79) | typedef enum
  type gl_context_type_t (line 115) | typedef enum
  type gles_wrapper_t (line 123) | typedef enum
  type modelstate_t (line 132) | typedef struct modelstate_s
  type decallist_t (line 144) | typedef struct decallist_s
  type movie_parms_e (line 161) | enum movie_parms_e
  type movie_state_s (line 177) | struct movie_state_s
  type ref_viewpass_s (line 178) | struct ref_viewpass_s
  type render_api_t (line 180) | typedef struct render_api_s
  type render_interface_t (line 269) | typedef struct render_interface_s

FILE: common/screenfade.h
  type screenfade_t (line 19) | typedef struct screenfade_s

FILE: common/studio_event.h
  type mstudioevent_t (line 21) | typedef struct mstudioevent_s

FILE: common/synctype.h
  type synctype_t (line 23) | typedef enum {ST_SYNC=0, ST_RAND } synctype_t;

FILE: common/triangleapi.h
  type TRICULLSTYLE (line 19) | typedef enum
  type triangleapi_t (line 36) | typedef struct triangleapi_s

FILE: common/usercmd.h
  type usercmd_t (line 19) | typedef struct usercmd_s

FILE: common/wadfile.h
  type lmp_t (line 66) | typedef struct lmp_s
  type mip_t (line 79) | typedef struct mip_s
  type dwadinfo_t (line 94) | typedef struct
  type dlumpinfo_t (line 108) | typedef struct

FILE: common/weaponinfo.h
  type weapon_data_t (line 20) | typedef struct weapon_data_s

FILE: common/wrect.h
  type wrect_t (line 19) | typedef struct wrect_s

FILE: common/xash3d_types.h
  type byte (line 23) | typedef uint8_t  byte;
  type vec_t (line 24) | typedef float    vec_t;
  type vec_t (line 25) | typedef vec_t    vec2_t[2];
  type vec_t (line 27) | typedef vec_t    vec3_t[3];
  type vec_t (line 29) | typedef vec_t    vec4_t[4];
  type vec_t (line 30) | typedef vec_t    quat_t[4];
  type byte (line 31) | typedef byte     rgba_t[4];
  type byte (line 32) | typedef byte     rgb_t[3];
  type vec_t (line 33) | typedef vec_t    matrix3x4[3][4];
  type vec_t (line 34) | typedef vec_t    matrix4x4[4][4];
  type poolhandle_t (line 35) | typedef uint32_t poolhandle_t;
  type qboolean (line 44) | typedef int qboolean;
  function _inline (line 188) | _inline float LittleFloat( float f )
  type dword (line 213) | typedef unsigned int dword;
  type uint (line 214) | typedef unsigned int uint;
  type off_t (line 216) | typedef off_t        fs_offset_t;
  type fs_size_t (line 218) | typedef int          fs_size_t;
  type fs_size_t (line 220) | typedef ssize_t      fs_size_t;

FILE: engine/alias.h
  type aliasframetype_t (line 46) | typedef enum
  type aliasskintype_t (line 52) | typedef enum
  type daliashdr_t (line 58) | typedef struct
  type stvert_t (line 79) | typedef struct
  type dtriangle_t (line 88) | typedef struct dtriangle_s
  type daliasframe_t (line 99) | typedef struct
  type daliasgroup_t (line 108) | typedef struct
  type daliasskingroup_t (line 117) | typedef struct
  type daliasinterval_t (line 124) | typedef struct
  type daliasskininterval_t (line 131) | typedef struct
  type daliasframetype_t (line 138) | typedef struct
  type daliasskintype_t (line 145) | typedef struct

FILE: engine/cdll_exp.h
  type tempent_s (line 18) | struct tempent_s
  type usercmd_s (line 19) | struct usercmd_s
  type physent_s (line 20) | struct physent_s
  type playermove_s (line 21) | struct playermove_s
  type mstudioevent_s (line 22) | struct mstudioevent_s
  type engine_studio_api_s (line 23) | struct engine_studio_api_s
  type r_studio_interface_s (line 24) | struct r_studio_interface_s
  type cldll_func_t (line 27) | typedef struct cldll_func_s

FILE: engine/cdll_int.h
  type cmdalias_t (line 34) | typedef struct cmdalias_s
  type HSPRITE (line 44) | typedef int HSPRITE;
  type SCREENINFO (line 52) | typedef struct SCREENINFO_s
  type client_data_t (line 62) | typedef struct client_data_s
  type client_sprite_t (line 73) | typedef struct client_sprite_s
  type client_textmessage_t (line 82) | typedef struct client_textmessage_s
  type hud_player_info_t (line 97) | typedef struct hud_player_info_s
  type screenfade_s (line 113) | struct screenfade_s
  type tagPOINT (line 114) | struct tagPOINT
  type event_args_s (line 115) | struct event_args_s
  type cl_enginefunc_t (line 117) | typedef struct cl_enginefuncs_s

FILE: engine/client/avi/avi.h
  type movie_state_t (line 21) | typedef struct movie_state_s movie_state_t;
  type movie_parms_e (line 36) | enum movie_parms_e

FILE: engine/client/avi/avi_ffmpeg.c
  type movie_state_s (line 29) | struct movie_state_s
  function qboolean (line 79) | qboolean AVI_SetParm( movie_state_t *Avi, enum movie_parms_e parm, ... )
  function AVI_SpewError (line 147) | static void AVI_SpewError( qboolean quiet, const char *fmt, ... )
  function AVI_SpewAvError (line 162) | static void AVI_SpewAvError( qboolean quiet, const char *func, int numerr )
  function AVI_OpenCodecContext (line 172) | static int AVI_OpenCodecContext( AVCodecContext **dst_dec_ctx, AVFormatC...
  function AVI_GetVideoFrameNumber (line 220) | int AVI_GetVideoFrameNumber( movie_state_t *Avi, float time )
  function AVI_TimeToSoundPosition (line 225) | int AVI_TimeToSoundPosition( movie_state_t *Avi, int time )
  function qboolean (line 230) | qboolean AVI_GetVideoInfo( movie_state_t *Avi, int *xres, int *yres, flo...
  function qboolean (line 247) | qboolean AVI_HaveAudioTrack( const movie_state_t *Avi )
  function byte (line 253) | byte *AVI_GetVideoFrame( movie_state_t *Avi, int target )
  function AVI_StreamAudio (line 258) | static void AVI_StreamAudio( movie_state_t *Avi )
  function AVI_HandleAudio (line 313) | static void AVI_HandleAudio( movie_state_t *Avi, const AVFrame *frame )
  function qboolean (line 353) | qboolean AVI_Think( movie_state_t *Avi )
  function AVI_OpenVideo (line 463) | void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean l...
  function AVI_CloseVideo (line 577) | void AVI_CloseVideo( movie_state_t *Avi )
  function qboolean (line 721) | static qboolean AVI_LoadFFmpeg( void )
  function AVI_UnloadFFmpeg (line 741) | static void AVI_UnloadFFmpeg( void )
  function qboolean (line 751) | static qboolean AVI_LoadFFmpeg( void )
  function AVI_UnloadFFmpeg (line 756) | static void AVI_UnloadFFmpeg( void )
  function qboolean (line 762) | static qboolean AVI_ValidateFFmpegVersion( void )
  type movie_state_s (line 815) | struct movie_state_s
  function AVI_GetVideoFrameNumber (line 820) | int AVI_GetVideoFrameNumber( movie_state_t *Avi, float time )
  function byte (line 825) | byte *AVI_GetVideoFrame( movie_state_t *Avi, int frame )
  function qboolean (line 830) | qboolean AVI_GetVideoInfo( movie_state_t *Avi, int *xres, int *yres, flo...
  function qboolean (line 835) | qboolean AVI_HaveAudioTrack( const movie_state_t *Avi )
  function AVI_OpenVideo (line 840) | void AVI_OpenVideo( movie_state_t *Avi, const char *filename, qboolean l...
  function AVI_TimeToSoundPosition (line 845) | int AVI_TimeToSoundPosition( movie_state_t *Avi, int time )
  function AVI_CloseVideo (line 850) | void AVI_CloseVideo( movie_state_t *Avi )
  function qboolean (line 855) | qboolean AVI_Think( movie_state_t *Avi )
  function qboolean (line 860) | qboolean AVI_SetParm( movie_state_t *Avi, enum movie_parms_e parm, ... )
  function qboolean (line 865) | static qboolean AVI_ValidateFFmpegVersion( void )
  function qboolean (line 870) | static qboolean AVI_LoadFFmpeg( void )
  function AVI_UnloadFFmpeg (line 875) | static void AVI_UnloadFFmpeg( void )
  function movie_state_t (line 882) | movie_state_t *AVI_GetState( int num )
  function qboolean (line 887) | qboolean AVI_IsActive( movie_state_t *Avi )
  function qboolean (line 892) | qboolean AVI_Initailize( void )
  function AVI_Shutdown (line 918) | void AVI_Shutdown( void )
  function movie_state_t (line 926) | movie_state_t *AVI_LoadVideo( const char *filename, qboolean load_audio )
  function AVI_FreeVideo (line 960) | void AVI_FreeVideo( movie_state_t *Avi )

FILE: engine/client/avi/avi_ffmpeg.h
  type AVSampleFormat (line 68) | enum AVSampleFormat
  type AVMediaType (line 69) | enum AVMediaType
  type AVPixelFormat (line 70) | enum AVPixelFormat
  type AVMediaType (line 74) | enum AVMediaType
  type AVCodec (line 74) | struct AVCodec
  type AVCodecID (line 87) | enum AVCodecID
  type AVCodecParameters (line 91) | struct AVCodecParameters
  type SwrContext (line 97) | struct SwrContext
  type AVSampleFormat (line 97) | enum AVSampleFormat
  type AVSampleFormat (line 97) | enum AVSampleFormat
  type SwrContext (line 98) | struct SwrContext
  type SwrContext (line 99) | struct SwrContext
  type SwrContext (line 100) | struct SwrContext
  type SwsContext (line 104) | struct SwsContext
  type SwsContext (line 105) | struct SwsContext
  type AVPixelFormat (line 105) | enum AVPixelFormat
  type AVPixelFormat (line 105) | enum AVPixelFormat
  type SwsContext (line 106) | struct SwsContext

FILE: engine/client/cl_cmds.c
  function CL_PlayVideo_f (line 26) | void CL_PlayVideo_f( void )
  function CL_PlayCDTrack_f (line 62) | void CL_PlayCDTrack_f( void )
  function CL_LevelShot_f (line 170) | void CL_LevelShot_f( void )
  function scrshot_t (line 205) | static scrshot_t CL_GetScreenshotTypeFromString( const char *string )
  function CL_GenericShot_f (line 225) | void CL_GenericShot_f( void )
  function CL_DeleteDemo_f (line 316) | void CL_DeleteDemo_f( void )
  function CL_SetSky_f (line 341) | void CL_SetSky_f( void )
  function SCR_Viewpos_f (line 359) | void SCR_Viewpos_f( void )
  function CL_WavePlayLen_f (line 371) | void CL_WavePlayLen_f( void )

FILE: engine/client/cl_custom.c
  function qboolean (line 20) | qboolean CL_CheckFile( sizebuf_t *msg, resource_t *pResource )
  function CL_AddToResourceList (line 88) | void CL_AddToResourceList( resource_t *pResource, resource_t *pList )
  function CL_RemoveFromResourceList (line 105) | void CL_RemoveFromResourceList( resource_t *pResource )
  function CL_MoveToOnHandList (line 119) | void CL_MoveToOnHandList( resource_t *pResource )
  function CL_ClearResourceList (line 131) | static void CL_ClearResourceList( resource_t *pList )
  function CL_ClearResourceLists (line 147) | void CL_ClearResourceLists( void )

FILE: engine/client/cl_debug.c
  type oldcmd_t (line 28) | typedef struct
  type msg_debug_t (line 35) | typedef struct
  function CL_Parse_Debug (line 100) | void CL_Parse_Debug( qboolean enable )
  function CL_Parse_RecordCommand (line 112) | void CL_Parse_RecordCommand( int cmd, int startoffset )
  function CL_ResetFrame (line 129) | void CL_ResetFrame( frame_t *frame )
  function CL_WriteErrorMessage (line 146) | static void CL_WriteErrorMessage( int current_count, sizebuf_t *msg )
  function CL_WriteMessageHistory (line 170) | void CL_WriteMessageHistory( void )
  function CL_ReplayBufferDat_f (line 202) | void CL_ReplayBufferDat_f( void )

FILE: engine/client/cl_demo.c
  type demoheader_t (line 57) | typedef struct
  type demoentry_t (line 70) | typedef struct
  type demodirectory_t (line 81) | typedef struct
  type demoangle_t (line 88) | typedef struct
  function CL_GetDemoNetProtocol (line 114) | static int CL_GetDemoNetProtocol( connprotocol_t proto )
  function connprotocol_t (line 131) | static connprotocol_t CL_GetProtocolFromDemo( int net_protocol )
  function CL_StartupDemoHeader (line 156) | void CL_StartupDemoHeader( void )
  function CL_CloseDemoHeader (line 178) | void CL_CloseDemoHeader( void )
  function CL_GetDemoRecordClock (line 193) | static float CL_GetDemoRecordClock( void )
  function CL_GetDemoPlaybackClock (line 205) | static float CL_GetDemoPlaybackClock( void )
  function CL_GetDemoFramerate (line 217) | double CL_GetDemoFramerate( void )
  function CL_DemoAborted (line 229) | static void CL_DemoAborted( void )
  function CL_WriteDemoCmdHeader (line 250) | static void CL_WriteDemoCmdHeader( byte cmd, file_t *file )
  function CL_WriteDemoJumpTime (line 272) | void CL_WriteDemoJumpTime( void )
  function CL_WriteDemoUserCmd (line 291) | void CL_WriteDemoUserCmd( int cmdnumber )
  function CL_WriteDemoSequence (line 323) | static void CL_WriteDemoSequence( file_t *file )
  function CL_WriteDemoMessage (line 343) | void CL_WriteDemoMessage( qboolean startup, int start, sizebuf_t *msg )
  function CL_WriteDemoUserMessage (line 376) | void GAME_EXPORT CL_WriteDemoUserMessage( int size, byte *buffer )
  function CL_WriteDemoHeader (line 400) | static void CL_WriteDemoHeader( const char *name )
  function CL_StopRecord (line 492) | static void CL_StopRecord( void )
  function CL_DrawDemoRecording (line 542) | void CL_DrawDemoRecording( void )
  function qboolean (line 574) | static qboolean CL_ReadDemoCmdHeader( byte *cmd, float *dt )
  function CL_ReadDemoUserCmd (line 604) | static void CL_ReadDemoUserCmd( qboolean discard )
  function CL_ReadDemoSequence (line 677) | static void CL_ReadDemoSequence( qboolean discard )
  function CL_DemoStartPlayback (line 711) | static void CL_DemoStartPlayback( int mode )
  function CL_DemoCompleted (line 756) | void CL_DemoCompleted( void )
  function qboolean (line 777) | static qboolean CL_DemoMoveToNextSection( void )
  function qboolean (line 799) | static qboolean CL_ReadRawNetworkData( byte *buffer, size_t *length )
  function qboolean (line 850) | static qboolean CL_DemoReadMessageQuake( byte *buffer, size_t *length )
  function qboolean (line 943) | qboolean CL_DemoReadMessage( byte *buffer, size_t *length )
  function CL_DemoFindInterpolatedViewAngles (line 1065) | static void CL_DemoFindInterpolatedViewAngles( float t, float *frac, dem...
  function CL_DemoInterpolateAngles (line 1117) | void CL_DemoInterpolateAngles( void )
  function CL_FinishTimeDemo (line 1159) | static void CL_FinishTimeDemo( void )
  function CL_StopPlayback (line 1187) | void CL_StopPlayback( void )
  function CL_GetDemoComment (line 1239) | int GAME_EXPORT CL_GetDemoComment( const char *demoname, char *comment )
  function qboolean (line 1311) | static qboolean CL_NextDemo( void )
  function CL_CheckStartupDemos (line 1344) | void CL_CheckStartupDemos( void )
  function CL_DemoGetName (line 1372) | static void CL_DemoGetName( int lastnum, char *filename, size_t size )
  function CL_Record_f (line 1392) | void CL_Record_f( void )
  function qboolean (line 1463) | static qboolean CL_ParseDemoHeader( const char *callee, const char *file...
  function CL_PlayDemo_f (line 1515) | void CL_PlayDemo_f( void )
  function CL_TimeDemo_f (line 1629) | void CL_TimeDemo_f( void )
  function CL_StartDemos_f (line 1646) | void CL_StartDemos_f( void )
  function CL_Demos_f (line 1677) | void CL_Demos_f( void )
  function CL_Stop_f (line 1704) | void CL_Stop_f( void )
  function CL_ListDemo_f (line 1718) | void CL_ListDemo_f( void )

FILE: engine/client/cl_efrag.c
  function efrag_t (line 40) | static efrag_t *CL_AllocEfrags( int num )
  function CL_ClearEfrags (line 71) | void CL_ClearEfrags( void )
  function R_SplitEntityOnNode (line 82) | static void R_SplitEntityOnNode( mnode_t *node )
  function R_AddEfrags (line 141) | void R_AddEfrags( cl_entity_t *ent )
  function R_StoreEfrags (line 174) | void R_StoreEfrags( efrag_t **ppefrag, int framecount )

FILE: engine/client/cl_efx.c
  function R_LookupColor (line 45) | short GAME_EXPORT R_LookupColor( byte r, byte g, byte b )
  function R_GetPackedColor (line 80) | void GAME_EXPORT R_GetPackedColor( short *packed, short color )
  function CL_InitParticles (line 91) | void CL_InitParticles( void )
  function CL_ClearParticles (line 117) | void CL_ClearParticles( void )
  function CL_FreeParticles (line 139) | void CL_FreeParticles( void )
  function particle_t (line 153) | particle_t *CL_AllocParticleFast( void )
  function particle_t (line 224) | static particle_t *R_AllocTracer( const vec3_t org, const vec3_t vel, fl...
  function R_BeamSetAttributes (line 289) | static void R_BeamSetAttributes( BEAM *pbeam, float r, float g, float b,...
  function BEAM (line 306) | static BEAM *R_BeamAlloc( void )
  function R_BeamFree (line 329) | static void R_BeamFree( BEAM *pBeam )
  function CL_InitViewBeams (line 346) | void CL_InitViewBeams( void )
  function CL_ClearViewBeams (line 358) | void CL_ClearViewBeams( void )
  function CL_FreeViewBeams (line 379) | void CL_FreeViewBeams( void )
  function cl_entity_t (line 394) | cl_entity_t *R_BeamGetEntity( int index )
  function CL_KillDeadBeams (line 407) | void CL_KillDeadBeams( cl_entity_t *pDeadEntity )
  function CL_ReadLineFile_f (line 472) | void CL_ReadLineFile_f( void )
  function CL_BeamSprite (line 558) | static void CL_BeamSprite( vec3_t start, vec3_t end, int beamIndex, int ...
  function R_BeamSetup (line 573) | static void R_BeamSetup( BEAM *pbeam, vec3_t start, vec3_t end, int mode...
  function qboolean (line 611) | static qboolean CL_BeamAttemptToDie( BEAM *pBeam )
  function R_BeamKill (line 640) | void GAME_EXPORT R_BeamKill( int deadEntity )
  function CL_ParseViewBeam (line 669) | void CL_ParseViewBeam( sizebuf_t *msg, int beamType )
  function R_EntityParticles (line 1040) | void GAME_EXPORT R_EntityParticles( cl_entity_t *ent )
  function R_ParticleExplosion (line 1075) | void GAME_EXPORT R_ParticleExplosion( const vec3_t org )
  function R_ParticleExplosion2 (line 1106) | void GAME_EXPORT R_ParticleExplosion2( const vec3_t org, int colorStart,...
  function R_BlobExplosion (line 1140) | void GAME_EXPORT R_BlobExplosion( const vec3_t org )
  function R_RunParticleEffect (line 1181) | void GAME_EXPORT R_RunParticleEffect( const vec3_t org, const vec3_t dir...
  function R_Blood (line 1214) | void GAME_EXPORT R_Blood( const vec3_t org, const vec3_t ndir, int pcolo...
  function R_BloodStream (line 1250) | void GAME_EXPORT R_BloodStream( const vec3_t org, const vec3_t ndir, int...
  function R_LavaSplash (line 1330) | void GAME_EXPORT R_LavaSplash( const vec3_t org )
  function R_ParticleBurst (line 1372) | void GAME_EXPORT R_ParticleBurst( const vec3_t org, int size, int color,...
  function R_LargeFunnel (line 1405) | void GAME_EXPORT R_LargeFunnel( const vec3_t org, int reverse )
  function R_TeleportSplash (line 1452) | void GAME_EXPORT R_TeleportSplash( const vec3_t org )
  function R_RocketTrail (line 1494) | void GAME_EXPORT R_RocketTrail( vec3_t start, vec3_t end, int type )
  function PM_ParticleLine (line 1616) | static void PM_ParticleLine( const vec3_t start, const vec3_t end, int p...
  function PM_DrawRectangle (line 1640) | static void PM_DrawRectangle( const vec3_t tl, const vec3_t bl, const ve...
  function PM_DrawBBox (line 1654) | static void PM_DrawBBox( const vec3_t mins, const vec3_t maxs, const vec...
  function R_ParticleLine (line 1682) | void GAME_EXPORT R_ParticleLine( const vec3_t start, const vec3_t end, b...
  function R_ParticleBox (line 1696) | void GAME_EXPORT R_ParticleBox( const vec3_t absmin, const vec3_t absmax...
  function R_ShowLine (line 1717) | void GAME_EXPORT R_ShowLine( const vec3_t start, const vec3_t end )
  function R_BulletImpactParticles (line 1749) | void GAME_EXPORT R_BulletImpactParticles( const vec3_t pos )
  function R_FlickerParticles (line 1791) | void GAME_EXPORT R_FlickerParticles( const vec3_t org )
  function R_StreakSplash (line 1819) | void GAME_EXPORT R_StreakSplash( const vec3_t pos, const vec3_t dir, int...
  function CL_Particle (line 1846) | void CL_Particle( const vec3_t org, int color, float life, int zpos, int...
  function R_TracerEffect (line 1865) | void GAME_EXPORT R_TracerEffect( const vec3_t start, const vec3_t end )
  function R_UserTracerParticle (line 1892) | void GAME_EXPORT R_UserTracerParticle( float *org, float *vel, float lif...
  function particle_t (line 1915) | particle_t *R_TracerParticles( float *org, float *vel, float life )
  function R_SparkStreaks (line 1927) | void GAME_EXPORT R_SparkStreaks( const vec3_t pos, int count, int veloci...
  function R_Implosion (line 1955) | void GAME_EXPORT R_Implosion( const vec3_t end, float radius, int count,...
  function R_FreeDeadParticles (line 1989) | void R_FreeDeadParticles( particle_t **ppparticles )
  function CL_ReadPointFile_f (line 2037) | void CL_ReadPointFile_f( void )
  function CL_FreeDeadBeams (line 2104) | static void CL_FreeDeadBeams( void )
  function CL_DrawEFX (line 2131) | void CL_DrawEFX( float time, qboolean fTrans )
  function CL_ThinkParticle (line 2148) | void CL_ThinkParticle( double frametime, particle_t *p )

FILE: engine/client/cl_events.c
  function CL_ResetEvent (line 28) | void CL_ResetEvent( event_info_t *ei )
  function CL_CalcPlayerVelocity (line 43) | static void CL_CalcPlayerVelocity( int idx, vec3_t velocity )
  function CL_DescribeEvent (line 81) | static void CL_DescribeEvent( event_info_t *ei, int slot )
  function CL_SetEventIndex (line 131) | void CL_SetEventIndex( const char *szEvName, int ev_index )
  function word (line 159) | word CL_EventIndex( const char *name )
  function CL_RegisterEvent (line 180) | void CL_RegisterEvent( int lastnum, const char *szEvName, pfnEventHook f...
  function qboolean (line 205) | static qboolean CL_FireEvent( event_info_t *ei, int slot )
  function CL_FireEvents (line 262) | void CL_FireEvents( void )
  function event_info_t (line 295) | static event_info_t *CL_FindEmptyEvent( void )
  function event_info_t (line 323) | static event_info_t *CL_FindUnreliableEvent( void )
  function CL_QueueEvent (line 353) | static void CL_QueueEvent( int flags, int index, float delay, event_args...
  function CL_ParseReliableEvent (line 383) | void CL_ParseReliableEvent( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseEvent (line 424) | void CL_ParseEvent( sizebuf_t *msg, connprotocol_t proto )
  function CL_PlaybackEvent (line 516) | void GAME_EXPORT CL_PlaybackEvent( int flags, const edict_t *pInvoker, w...

FILE: engine/client/cl_font.c
  function qboolean (line 21) | qboolean CL_FixedFont( cl_font_t *font )
  function CL_LoadFontTexture (line 26) | static int CL_LoadFontTexture( const char *fontname, uint texFlags, int ...
  function CL_FontRenderMode (line 49) | static int CL_FontRenderMode( convar_t *fontrender )
  function CL_SetFontRendermode (line 66) | void CL_SetFontRendermode( cl_font_t *font )
  function qboolean (line 71) | qboolean Con_LoadFixedWidthFont( const char *fontname, cl_font_t *font, ...
  function qboolean (line 104) | qboolean Con_LoadVariableWidthFont( const char *fontname, cl_font_t *fon...
  function CL_FreeFont (line 155) | void CL_FreeFont( cl_font_t *font )
  function CL_CalcTabStop (line 164) | static int CL_CalcTabStop( const cl_font_t *font, int x )
  function CL_DrawCharacter (line 176) | int CL_DrawCharacter( float x, float y, int number, const rgba_t color, ...
  function CL_DrawString (line 234) | int CL_DrawString( float x, float y, const char *s, const rgba_t color, ...
  function CL_DrawStringf (line 290) | int CL_DrawStringf( cl_font_t *font, float x, float y, const rgba_t colo...
  function CL_DrawCharacterLen (line 302) | void CL_DrawCharacterLen( cl_font_t *font, int number, int *width, int *...
  function CL_DrawStringLen (line 314) | void CL_DrawStringLen( cl_font_t *font, const char *s, int *width, int *...

FILE: engine/client/cl_frame.c
  function CL_UpdatePositions (line 43) | static void CL_UpdatePositions( cl_entity_t *ent )
  function CL_ResetPositions (line 76) | static void CL_ResetPositions( cl_entity_t *ent )
  function qboolean (line 97) | static qboolean CL_EntityTeleported( cl_entity_t *ent )
  function qboolean (line 118) | static qboolean CL_CompareTimestamps( float t1, float t2 )
  function qboolean (line 133) | static qboolean CL_EntityIgnoreLerp( cl_entity_t *e )
  function qboolean (line 150) | static qboolean CL_EntityCustomLerp( cl_entity_t *e )
  function qboolean (line 179) | static qboolean CL_ParametricMove( cl_entity_t *ent )
  function CL_UpdateLatchedVars (line 216) | static void CL_UpdateLatchedVars( cl_entity_t *ent )
  function CL_GetStudioEstimatedFrame (line 249) | static float CL_GetStudioEstimatedFrame( cl_entity_t *ent )
  function CL_ResetLatchedVars (line 276) | void CL_ResetLatchedVars( cl_entity_t *ent, qboolean full_reset )
  function CL_ProcessEntityUpdate (line 311) | static void CL_ProcessEntityUpdate( cl_entity_t *ent )
  function qboolean (line 357) | static qboolean CL_FindInterpolationUpdates( cl_entity_t *ent, double ta...
  function CL_PureOrigin (line 396) | static void CL_PureOrigin( cl_entity_t *ent, double t, vec3_t outorigin,...
  function CL_InterpolateModel (line 442) | static int CL_InterpolateModel( cl_entity_t *e )
  function CL_ComputePlayerOrigin (line 527) | void CL_ComputePlayerOrigin( cl_entity_t *ent )
  function CL_ProcessPlayerState (line 569) | static void CL_ProcessPlayerState( int playerindex, entity_state_t *state )
  function CL_ResetLatchedState (line 589) | static void CL_ResetLatchedState( int pnum, frame_t *frame, cl_entity_t ...
  function CL_ProcessPacket (line 612) | void CL_ProcessPacket( frame_t *frame )
  function qboolean (line 654) | static qboolean CL_ParseEntityNumFromPacket( sizebuf_t *msg, int *newnum...
  function CL_FlushEntityPacket (line 679) | static void CL_FlushEntityPacket( sizebuf_t *msg, connprotocol_t proto )
  function qboolean (line 702) | qboolean CL_ValidateDeltaPacket( uint oldpacket, frame_t *oldframe )
  function CL_UpdateOldEntNum (line 728) | int CL_UpdateOldEntNum( int oldindex, frame_t *oldframe, entity_state_t ...
  function CL_DeltaEntity (line 750) | static void CL_DeltaEntity( sizebuf_t *msg, frame_t *frame, int newnum, ...
  function CL_ParsePacketEntities (line 819) | int CL_ParsePacketEntities( sizebuf_t *msg, qboolean delta, connprotocol...
  function qboolean (line 955) | qboolean CL_AddVisibleEntity( cl_entity_t *ent, int entityType )
  function CL_LinkCustomEntity (line 1019) | static void CL_LinkCustomEntity( cl_entity_t *ent, entity_state_t *state )
  function CL_LinkPlayers (line 1042) | static void CL_LinkPlayers( frame_t *frame )
  function CL_LinkPacketEntities (line 1125) | static void CL_LinkPacketEntities( frame_t *frame )
  function CL_MoveThirdpersonCamera (line 1319) | void CL_MoveThirdpersonCamera( void )
  function CL_EmitEntities (line 1336) | void CL_EmitEntities( void )
  function qboolean (line 1391) | qboolean CL_GetEntitySpatialization( channel_t *ch )
  function qboolean (line 1429) | qboolean CL_GetMovieSpatialization( rawchan_t *ch )

FILE: engine/client/cl_game.c
  function CL_CreatePlaylist (line 110) | static void CL_CreatePlaylist( const char *filename )
  function CL_InitCDAudio (line 156) | static void CL_InitCDAudio( const char *filename )
  function CL_AdjustXPos (line 202) | static int CL_AdjustXPos( float x, int width, int totalWidth )
  function CL_AdjustYPos (line 233) | static int CL_AdjustYPos( float y, int height )
  function CL_CenterPrint (line 265) | void CL_CenterPrint( const char *text, float y )
  function SPR_AdjustSize (line 296) | void SPR_AdjustSize( float *x, float *y, float *w, float *h )
  function SPR_AdjustTexCoords (line 313) | static void SPR_AdjustTexCoords( int texnum, float width, float height, ...
  function SPR_DrawGeneric (line 346) | static void SPR_DrawGeneric( int frame, float x, float y, float width, f...
  function CL_DrawCenterPrint (line 407) | void CL_DrawCenterPrint( void )
  function V_FadeAlpha (line 467) | static int V_FadeAlpha( screenfade_t *sf )
  function CL_DrawScreenFade (line 510) | static void CL_DrawScreenFade( void )
  function CL_InitTitles (line 556) | static void CL_InitTitles( const char *filename )
  function CL_HudMessage (line 593) | void CL_HudMessage( const char *pMessage )
  function CL_ParseTextMessage (line 606) | void CL_ParseTextMessage( sizebuf_t *msg )
  function CL_ParseFinaleCutscene (line 656) | void CL_ParseFinaleCutscene( sizebuf_t *msg, int level )
  function CL_GetMaxClients (line 704) | CL_GetMaxClients( void )
  function CL_EnableScissor (line 748) | void CL_EnableScissor( scissor_state_t *scissor, int x, int y, int width...
  function CL_DisableScissor (line 764) | void CL_DisableScissor( scissor_state_t *scissor )
  function qboolean (line 776) | qboolean CL_Scissor( const scissor_state_t *scissor, float *x, float *y,...
  function SPR_EnableScissor (line 833) | static void GAME_EXPORT SPR_EnableScissor( int x, int y, int width, int ...
  function SPR_DisableScissor (line 850) | SPR_DisableScissor( void )
  function CL_DrawCrosshair (line 862) | static void CL_DrawCrosshair( void )
  function CL_DrawLoadingOrPaused (line 922) | static void CL_DrawLoadingOrPaused( int tex )
  function CL_DrawHUD (line 939) | void CL_DrawHUD( int state )
  function CL_ClearUserMessage (line 982) | static void CL_ClearUserMessage( char *pszName, int svc_num )
  function CL_LinkUserMessage (line 991) | void CL_LinkUserMessage( char *pszName, const int svc_num, int iSize )
  function CL_ClearWorld (line 1027) | void CL_ClearWorld( void )
  function CL_InitEdicts (line 1046) | void CL_InitEdicts( int maxclients )
  function CL_FreeEdicts (line 1070) | void CL_FreeEdicts( void )
  function CL_ClearEdicts (line 1091) | void CL_ClearEdicts( void )
  function CL_ClearSpriteTextures (line 1108) | void CL_ClearSpriteTextures( void )
  function Mod_LoadMapSprite (line 1127) | static void Mod_LoadMapSprite( model_t *mod, const void *buffer, size_t ...
  function qboolean (line 1243) | static qboolean CL_LoadHudSprite( const char *szSpriteName, model_t *m_p...
  function model_t (line 1309) | static model_t *CL_LoadSpriteModel( const char *filename, uint type, uin...
  function model_t (line 1370) | model_t *CL_LoadClientSprite( const char *filename )
  function HSPRITE (line 1387) | HSPRITE pfnSPR_LoadExt( const char *szPicName, uint texFlags )
  function HSPRITE (line 1405) | HSPRITE EXPORT pfnSPR_Load( const char *szPicName )
  function model_t (line 1421) | static const model_t *CL_GetSpritePointer( HSPRITE hSprite )
  function pfnSPR_Frames (line 1455) | int EXPORT pfnSPR_Frames( HSPRITE hPic )
  function pfnSPR_Height (line 1470) | static int GAME_EXPORT pfnSPR_Height( HSPRITE hPic, int frame )
  function pfnSPR_Width (line 1485) | static int GAME_EXPORT pfnSPR_Width( HSPRITE hPic, int frame )
  function pfnSPR_Set (line 1500) | static void GAME_EXPORT pfnSPR_Set( HSPRITE hPic, int r, int g, int b )
  function pfnSPR_Draw (line 1521) | static void GAME_EXPORT pfnSPR_Draw( int frame, int x, int y, const wrec...
  function pfnSPR_DrawHoles (line 1533) | static void GAME_EXPORT pfnSPR_DrawHoles( int frame, int x, int y, const...
  function pfnSPR_DrawAdditive (line 1558) | static void GAME_EXPORT pfnSPR_DrawAdditive( int frame, int x, int y, co...
  function client_sprite_t (line 1583) | static client_sprite_t *SPR_GetList( char *psz, int *piCount )
  function CL_FillRGBA (line 1673) | static void GAME_EXPORT CL_FillRGBA( int x, int y, int w, int h, int r, ...
  function CL_GetScreenInfo (line 1694) | int GAME_EXPORT CL_GetScreenInfo( SCREENINFO *pscrinfo )
  function pfnSetCrosshair (line 1754) | static void GAME_EXPORT pfnSetCrosshair( HSPRITE hspr, wrect_t rc, int r...
  function cvar_t (line 1771) | static cvar_t *GAME_EXPORT pfnCvar_RegisterClientVariable( const char *s...
  function Cmd_AddClientCommand (line 1781) | static int GAME_EXPORT Cmd_AddClientCommand( const char *cmd_name, xcomm...
  function pfnHookUserMsg (line 1798) | static int GAME_EXPORT pfnHookUserMsg( const char *pszName, pfnUserMsgHo...
  function pfnServerCmd (line 1832) | static int GAME_EXPORT pfnServerCmd( const char *szCmdString )
  function pfnClientCmd (line 1850) | static int GAME_EXPORT pfnClientCmd( const char *szCmdString )
  function pfnFilteredClientCmd (line 1875) | static int GAME_EXPORT pfnFilteredClientCmd( const char *szCmdString )
  function pfnGetPlayerInfo (line 1899) | static void GAME_EXPORT pfnGetPlayerInfo( int ent_num, hud_player_info_t...
  function pfnPlaySoundByName (line 1929) | static void GAME_EXPORT pfnPlaySoundByName( const char *szSound, float v...
  function pfnPlaySoundByIndex (line 1941) | static void GAME_EXPORT pfnPlaySoundByIndex( int iSound, float volume )
  function client_textmessage_t (line 1960) | client_textmessage_t *CL_TextMessageGet( const char *pName )
  function pfnDrawCharacter (line 1991) | static int GAME_EXPORT pfnDrawCharacter( int x, int y, int number, int r...
  function pfnDrawConsoleString (line 2009) | int GAME_EXPORT pfnDrawConsoleString( int x, int y, char *string )
  function pfnDrawSetTextColor (line 2026) | void GAME_EXPORT pfnDrawSetTextColor( float r, float g, float b )
  function pfnDrawConsoleStringLen (line 2042) | void GAME_EXPORT pfnDrawConsoleStringLen( const char *pText, int *length...
  function pfnConsolePrint (line 2057) | static void GAME_EXPORT pfnConsolePrint( const char *string )
  function pfnCenterPrint (line 2077) | static void GAME_EXPORT pfnCenterPrint( const char *string )
  function pfnGetWindowCenterX (line 2088) | pfnGetWindowCenterX( void )
  function pfnGetWindowCenterY (line 2114) | pfnGetWindowCenterY( void )
  function pfnGetViewAngles (line 2141) | static void GAME_EXPORT pfnGetViewAngles( float *angles )
  function pfnSetViewAngles (line 2153) | static void GAME_EXPORT pfnSetViewAngles( float *angles )
  function pfnGetClientMaxspeed (line 2187) | pfnGetClientMaxspeed( void )
  function pfnIsNoClipping (line 2198) | pfnIsNoClipping( void )
  function CL_GetViewModel (line 2209) | CL_GetViewModel( void )
  function pfnGetClientTime (line 2220) | pfnGetClientTime( void )
  function pfnCalcShake (line 2231) | pfnCalcShake( void )
  function pfnApplyShake (line 2287) | static void GAME_EXPORT pfnApplyShake( float *origin, float *angles, flo...
  function pfnIsSpectateOnly (line 2302) | pfnIsSpectateOnly( void )
  function PM_CL_PointContents (line 2313) | int GAME_EXPORT PM_CL_PointContents( const float *p, int *truecontents )
  function pmtrace_t (line 2318) | pmtrace_t *PM_CL_TraceLine( float *start, float *end, int flags, int use...
  function pfnPlaySoundByNameAtLocation (line 2323) | static void GAME_EXPORT pfnPlaySoundByNameAtLocation( char *szSound, flo...
  function word (line 2335) | static word GAME_EXPORT pfnPrecacheEvent( int type, const char* psz )
  function pfnHookEvent (line 2346) | static void GAME_EXPORT pfnHookEvent( const char *filename, pfnEventHook...
  function pfnKillEvents (line 2381) | static void GAME_EXPORT pfnKillEvents( int entnum, const char *eventname )
  function pfnPlaySound (line 2415) | static void GAME_EXPORT pfnPlaySound( int ent, float *org, int chan, con...
  function CL_FindModelIndex (line 2426) | static int GAME_EXPORT CL_FindModelIndex( const char *m )
  function pfnIsLocal (line 2455) | static int GAME_EXPORT pfnIsLocal( int playernum )
  function pfnLocalPlayerDucking (line 2468) | pfnLocalPlayerDucking( void )
  function pfnLocalPlayerViewheight (line 2479) | static void GAME_EXPORT pfnLocalPlayerViewheight( float *view_ofs )
  function pfnLocalPlayerBounds (line 2490) | static void GAME_EXPORT pfnLocalPlayerBounds( int hull, float *mins, flo...
  function pfnIndexFromTrace (line 2505) | static int GAME_EXPORT pfnIndexFromTrace( struct pmtrace_s *pTrace )
  function physent_t (line 2524) | physent_t *pfnGetPhysent( int idx )
  function physent_t (line 2540) | static physent_t *pfnGetVisent( int idx )
  function CL_TestLine (line 2550) | static int GAME_EXPORT CL_TestLine( const vec3_t start, const vec3_t end...
  function CL_PushTraceBounds (line 2561) | static void GAME_EXPORT CL_PushTraceBounds( int hullnum, const float *mi...
  function CL_PopTraceBounds (line 2582) | CL_PopTraceBounds( void )
  function CL_SetTraceHull (line 2601) | static void GAME_EXPORT CL_SetTraceHull( int hull )
  function CL_PlayerTrace (line 2612) | static void GAME_EXPORT CL_PlayerTrace( float *start, float *end, int tr...
  function CL_PlayerTraceExt (line 2624) | static void GAME_EXPORT CL_PlayerTraceExt( float *start, float *end, int...
  type msurface_s (line 2647) | struct msurface_s
  function movevars_t (line 2658) | static movevars_t *pfnGetMoveVars( void )
  function pfnStopAllSounds (line 2669) | static void GAME_EXPORT pfnStopAllSounds( int ent, int entchannel )
  function model_t (line 2680) | model_t *CL_LoadModel( const char *modelname, int *index )
  function CL_AddEntity (line 2694) | static int GAME_EXPORT CL_AddEntity( int entityType, cl_entity_t *pEnt )
  function pfnGetScreenFade (line 2745) | static void GAME_EXPORT pfnGetScreenFade( struct screenfade_s *fade )
  function pfnSetScreenFade (line 2756) | static void GAME_EXPORT pfnSetScreenFade( struct screenfade_s *fade )
  function model_t (line 2767) | static model_t *pfnLoadMapSprite( const char *filename )
  function COM_AddAppDirectoryToSearchPath (line 2785) | static void GAME_EXPORT COM_AddAppDirectoryToSearchPath( const char *psz...
  function COM_ExpandFilename (line 2799) | static int GAME_EXPORT COM_ExpandFilename( const char *fileName, char *n...
  function PlayerInfo_SetValueForKey (line 2845) | static void GAME_EXPORT PlayerInfo_SetValueForKey( const char *key, cons...
  function qboolean (line 2871) | static qboolean GAME_EXPORT pfnGetPlayerUniqueID( int iPlayer, char play...
  function pfnGetTrackerIDForPlayer (line 2891) | static int GAME_EXPORT pfnGetTrackerIDForPlayer( int playerSlot )
  function pfnGetPlayerForTrackerID (line 2903) | static int GAME_EXPORT pfnGetPlayerForTrackerID( int trackerID )
  function pfnServerCmdUnreliable (line 2914) | static int GAME_EXPORT pfnServerCmdUnreliable( char *szCmdString )
  function pfnGetMousePos (line 2931) | static void GAME_EXPORT pfnGetMousePos( struct tagPOINT *ppt )
  function pfnSetMouseEnable (line 2946) | static void GAME_EXPORT pfnSetMouseEnable( qboolean fEnable )
  function pfnGetClientOldTime (line 2957) | pfnGetClientOldTime( void )
  function pfnGetGravity (line 2968) | pfnGetGravity( void )
  function pfnEnableTexSort (line 2980) | static void GAME_EXPORT pfnEnableTexSort( int enable )
  function pfnSetLightmapColor (line 2991) | static void GAME_EXPORT pfnSetLightmapColor( float red, float green, flo...
  function pfnSetLightmapScale (line 3002) | static void GAME_EXPORT pfnSetLightmapScale( float scale )
  function pfnSPR_DrawGeneric (line 3012) | static void GAME_EXPORT pfnSPR_DrawGeneric( int frame, int x, int y, con...
  function pfnVGUI2DrawCharacter (line 3038) | static int GAME_EXPORT pfnVGUI2DrawCharacter( int x, int y, int number, ...
  function pfnVGUI2DrawCharacterAdditive (line 3049) | static int GAME_EXPORT pfnVGUI2DrawCharacterAdditive( int x, int y, int ...
  function pfnDrawString (line 3060) | static int GAME_EXPORT pfnDrawString( int x, int y, const char *str, int...
  function pfnDrawStringReverse (line 3077) | static int GAME_EXPORT pfnDrawStringReverse( int x, int y, const char *s...
  function GetCareerGameInterface (line 3099) | GetCareerGameInterface( void )
  function pfnPlaySoundVoiceByName (line 3111) | static void GAME_EXPORT pfnPlaySoundVoiceByName( char *filename, float v...
  function pfnMP3_InitStream (line 3124) | static void GAME_EXPORT pfnMP3_InitStream( char *filename, int looping )
  function pfnPlaySoundByNameAtPitch (line 3148) | static void GAME_EXPORT pfnPlaySoundByNameAtPitch( char *filename, float...
  function CL_FillRGBABlend (line 3160) | static void GAME_EXPORT CL_FillRGBABlend( int x, int y, int w, int h, in...
  function pfnGetAppID (line 3180) | pfnGetAppID( void )
  function pfnVguiWrap2_GetMouseDelta (line 3192) | static void GAME_EXPORT pfnVguiWrap2_GetMouseDelta( int *x, int *y )
  function TriRenderMode (line 3219) | void TriRenderMode( int mode )
  function TriColor4f (line 3230) | void TriColor4f( float r, float g, float b, float a )
  function TriColor4ub (line 3247) | void TriColor4ub( byte r, byte g, byte b, byte a )
  function TriBrightness (line 3262) | void TriBrightness( float brightness )
  function TriCullFace (line 3278) | void TriCullFace( TRICULLSTYLE style )
  function TriWorldToScreen (line 3290) | int TriWorldToScreen( const float *world, float *screen )
  function TriBoxInPVS (line 3302) | int TriBoxInPVS( float *mins, float *maxs )
  function TriLightAtPoint (line 3313) | void TriLightAtPoint( float *pos, float *value )
  function TriColor4fRendermode (line 3332) | void TriColor4fRendermode( float r, float g, float b, float a, int rende...
  function TriSpriteTexture (line 3350) | int TriSpriteTexture( model_t *pSpriteModel, int frame )
  function Demo_IsTimeDemo (line 3374) | Demo_IsTimeDemo( void )
  function NetAPI_InitNetworking (line 3391) | NetAPI_InitNetworking( void )
  function NetAPI_Status (line 3402) | static void GAME_EXPORT NetAPI_Status( net_status_t *status )
  function NetAPI_SendRequest (line 3430) | static void GAME_EXPORT NetAPI_SendRequest( int context, int request, in...
  function NetAPI_CancelRequest (line 3493) | static void GAME_EXPORT NetAPI_CancelRequest( int context )
  function NetAPI_CancelAllRequests (line 3524) | NetAPI_CancelAllRequests( void )
  function NetAPI_CompareAdr (line 3559) | static int GAME_EXPORT NetAPI_CompareAdr( netadr_t *a, netadr_t *b )
  function NetAPI_RemoveKey (line 3570) | static void GAME_EXPORT NetAPI_RemoveKey( char *s, const char *key )
  function NetAPI_SetValueForKey (line 3581) | static void GAME_EXPORT NetAPI_SetValueForKey( char *s, const char *key,...
  function Voice_StartVoiceTweakMode (line 3601) | Voice_StartVoiceTweakMode( void )
  function Voice_EndVoiceTweakMode (line 3612) | Voice_EndVoiceTweakMode( void )
  function Voice_SetControlFloat (line 3622) | static void GAME_EXPORT Voice_SetControlFloat( VoiceTweakControl iContro...
  function Voice_GetControlFloat (line 3632) | static float GAME_EXPORT Voice_GetControlFloat( VoiceTweakControl iContr...
  function VGui_ViewportPaintBackground (line 3637) | static void GAME_EXPORT VGui_ViewportPaintBackground( int extents[4] )
  function CL_UnloadProgs (line 3929) | void CL_UnloadProgs( void )
  function qboolean (line 3959) | qboolean CL_LoadProgs( const char *name )

FILE: engine/client/cl_gameui.c
  function UI_ToggleAllowConsole_f (line 29) | static void UI_ToggleAllowConsole_f( void )
  function UI_UpdateMenu (line 37) | void UI_UpdateMenu( float realtime )
  function UI_KeyEvent (line 65) | void UI_KeyEvent( int key, qboolean down )
  function UI_MouseMove (line 71) | void UI_MouseMove( int x, int y )
  function UI_SetActiveMenu (line 77) | void UI_SetActiveMenu( qboolean fActive )
  function UI_AddServerToList (line 99) | void UI_AddServerToList( netadr_t adr, const char *info )
  function UI_GetCursorPos (line 105) | void UI_GetCursorPos( int *pos_x, int *pos_y )
  function UI_SetCursorPos (line 111) | void UI_SetCursorPos( int pos_x, int pos_y )
  function UI_ShowCursor (line 117) | void UI_ShowCursor( qboolean show )
  function qboolean (line 123) | qboolean UI_CreditsActive( void )
  function UI_CharEvent (line 129) | void UI_CharEvent( int key )
  function qboolean (line 135) | qboolean UI_MouseInRect( void )
  function qboolean (line 141) | qboolean UI_IsVisible( void )
  function UI_AddTouchButtonToList (line 154) | void UI_AddTouchButtonToList( const char *name, const char *texture, con...
  function UI_ResetPing (line 169) | void UI_ResetPing( void )
  function UI_ShowConnectionWarning (line 184) | void UI_ShowConnectionWarning( void )
  function UI_ShowUpdateDialog (line 211) | void UI_ShowUpdateDialog( qboolean preferStore )
  function qboolean (line 228) | qboolean UI_ShowMessageBox( const char *text )
  function UI_ConnectionProgress_Disconnect (line 238) | void UI_ConnectionProgress_Disconnect( void )
  function UI_ConnectionProgress_Download (line 246) | void UI_ConnectionProgress_Download( const char *pszFileName, const char...
  function UI_ConnectionProgress_DownloadEnd (line 264) | void UI_ConnectionProgress_DownloadEnd( void )
  function UI_ConnectionProgress_Precache (line 272) | void UI_ConnectionProgress_Precache( void )
  function UI_ConnectionProgress_Connect (line 280) | void UI_ConnectionProgress_Connect( const char *server ) // NULL for loc...
  function UI_ConnectionProgress_ChangeLevel (line 288) | void UI_ConnectionProgress_ChangeLevel( void )
  function UI_ConnectionProgress_ParseServerInfo (line 296) | void UI_ConnectionProgress_ParseServerInfo( const char *server )
  function UI_DrawLogo (line 304) | static void GAME_EXPORT UI_DrawLogo( const char *filename, float x, floa...
  function UI_GetLogoWidth (line 358) | UI_GetLogoWidth( void )
  function UI_GetLogoHeight (line 363) | UI_GetLogoHeight( void )
  function UI_GetLogoLength (line 368) | UI_GetLogoLength( void )
  function UI_UpdateUserinfo (line 373) | static void UI_UpdateUserinfo( void )
  function Host_Credits (line 390) | void Host_Credits( void )
  function UI_ConvertGameInfo (line 396) | static void UI_ConvertGameInfo( gameinfo2_t *out, const gameinfo_t *in )
  function UI_ToOldGameInfo (line 428) | static void UI_ToOldGameInfo( GAMEINFO *out, const gameinfo2_t *in )
  function UI_GetModsInfo (line 444) | static void UI_GetModsInfo( void )
  function PIC_DrawGeneric (line 460) | static void PIC_DrawGeneric( float x, float y, float width, float height...
  function HIMAGE (line 514) | static HIMAGE GAME_EXPORT pfnPIC_Load( const char *szPicName, const byte...
  function pfnPIC_Width (line 540) | static int GAME_EXPORT pfnPIC_Width( HIMAGE hPic )
  function pfnPIC_Height (line 555) | static int GAME_EXPORT pfnPIC_Height( HIMAGE hPic )
  function pfnPIC_Set (line 570) | static void GAME_EXPORT pfnPIC_Set( HIMAGE hPic, int r, int g, int b, in...
  function pfnPIC_Draw (line 586) | static void GAME_EXPORT pfnPIC_Draw( int x, int y, int width, int height...
  function pfnPIC_DrawTrans (line 598) | static void GAME_EXPORT pfnPIC_DrawTrans( int x, int y, int width, int h...
  function pfnPIC_DrawHoles (line 610) | static void GAME_EXPORT pfnPIC_DrawHoles( int x, int y, int width, int h...
  function pfnPIC_DrawAdditive (line 622) | static void GAME_EXPORT pfnPIC_DrawAdditive( int x, int y, int width, in...
  function pfnPIC_EnableScissor (line 634) | static void GAME_EXPORT pfnPIC_EnableScissor( int x, int y, int width, i...
  function pfnPIC_DisableScissor (line 651) | pfnPIC_DisableScissor( void )
  function pfnFillRGBA (line 662) | static void GAME_EXPORT pfnFillRGBA( int x, int y, int width, int height...
  function cvar_t (line 678) | static cvar_t *GAME_EXPORT pfnCvar_RegisterGameUIVariable( const char *s...
  function Cmd_AddGameUICommand (line 683) | static int GAME_EXPORT Cmd_AddGameUICommand( const char *cmd_name, xcomm...
  function pfnClientCmd (line 694) | static void GAME_EXPORT pfnClientCmd( int exec_now, const char *szCmdStr...
  function pfnPlaySound (line 712) | static void GAME_EXPORT pfnPlaySound( const char *szSound )
  function pfnDrawCharacter (line 725) | static void GAME_EXPORT pfnDrawCharacter( int ix, int iy, int iwidth, in...
  function UI_DrawConsoleString (line 770) | static int GAME_EXPORT UI_DrawConsoleString( int x, int y, const char *s...
  function UI_DrawSetTextColor (line 788) | static void GAME_EXPORT UI_DrawSetTextColor( int r, int g, int b, int al...
  function pfnGetPlayerModel (line 804) | pfnGetPlayerModel( void )
  function pfnSetPlayerModel (line 816) | static void GAME_EXPORT pfnSetPlayerModel( cl_entity_t *ent, const char ...
  function pfnClearScene (line 829) | pfnClearScene( void )
  function pfnRenderScene (line 842) | static void GAME_EXPORT pfnRenderScene( const ref_viewpass_t *rvp )
  function pfnAddEntity (line 868) | static int GAME_EXPORT pfnAddEntity( int entityType, cl_entity_t *ent )
  function pfnClientJoin (line 882) | static void GAME_EXPORT pfnClientJoin( const netadr_t adr )
  function pfnKeyGetOverstrikeMode (line 894) | pfnKeyGetOverstrikeMode( void )
  function pfnKeySetOverstrikeMode (line 906) | static void GAME_EXPORT pfnKeySetOverstrikeMode( int fActive )
  function pfnMemFree (line 942) | static void GAME_EXPORT pfnMemFree( void *mem, const char *filename, con...
  function pfnGetOldGameInfo (line 953) | static int GAME_EXPORT pfnGetOldGameInfo( GAMEINFO *pgameinfo )
  function GAMEINFO (line 968) | static GAMEINFO ** GAME_EXPORT pfnGetGamesList( int *numGames )
  function pfnCheckGameDll (line 1034) | pfnCheckGameDll( void )
  function pfnChangeInstance (line 1059) | static void GAME_EXPORT pfnChangeInstance( const char *newInstance, cons...
  function pfnHostEndGame (line 1070) | static void GAME_EXPORT pfnHostEndGame( const char *szFinalMessage )
  function pfnStartBackgroundTrack (line 1082) | static void GAME_EXPORT pfnStartBackgroundTrack( const char *introTrack,...
  function GL_ProcessTexture (line 1087) | static void GAME_EXPORT GL_ProcessTexture( int texnum, float gamma, int ...
  function UI_ShellExecute (line 1098) | static void GAME_EXPORT UI_ShellExecute( const char *path, const char *p...
  function pfnFileExists (line 1125) | static int pfnFileExists( const char *path, int gamedironly )
  function pfnDelete (line 1137) | static int pfnDelete( const char *path )
  function pfnCon_DefaultColor (line 1142) | static void GAME_EXPORT pfnCon_DefaultColor( int r, int g, int b )
  function pfnSetCursor (line 1147) | static void GAME_EXPORT pfnSetCursor( void *hCursor )
  function pfnGetGameDir (line 1161) | static void GAME_EXPORT pfnGetGameDir( char *out )
  function pfnEnableTextInput (line 1257) | static void pfnEnableTextInput( int enable )
  function pfnGetRenderers (line 1262) | static int pfnGetRenderers( unsigned int num, char *short_name, size_t s...
  function gameinfo2_t (line 1281) | static gameinfo2_t *pfnGetGameInfo( int gi_version )
  function gameinfo2_t (line 1289) | static gameinfo2_t *pfnGetModInfo( int gi_version, int i )
  function pfnIsCvarReadOnly (line 1303) | static int pfnIsCvarReadOnly( const char *name )
  function UI_UnloadProgs (line 1332) | void UI_UnloadProgs( void )
  function qboolean (line 1350) | qboolean UI_LoadProgs( void )

FILE: engine/client/cl_main.c
  function CL_Active (line 109) | CL_Active( void )
  function qboolean (line 114) | qboolean CL_Initialized( void )
  function qboolean (line 120) | qboolean CL_IsInGame( void )
  function qboolean (line 131) | qboolean CL_IsInConsole( void )
  function qboolean (line 136) | qboolean CL_IsIntermission( void )
  function qboolean (line 141) | qboolean CL_IsPlaybackDemo( void )
  function qboolean (line 146) | qboolean CL_IsRecordDemo( void )
  function qboolean (line 151) | qboolean CL_DisableVisibility( void )
  function CL_IsDevOverviewMode (line 161) | int CL_IsDevOverviewMode( void )
  function connprotocol_t (line 172) | connprotocol_t CL_Protocol( void )
  function CL_CheckClientState (line 185) | static void CL_CheckClientState( void )
  function CL_GetGoldSrcFragmentSize (line 203) | static int CL_GetGoldSrcFragmentSize( void *unused, fragsize_t mode )
  function CL_GetFragmentSize (line 218) | static int CL_GetFragmentSize( void *unused, fragsize_t mode )
  function CL_SignonReply (line 240) | void CL_SignonReply( connprotocol_t proto )
  function CL_LerpPoint (line 269) | static float CL_LerpPoint( void )
  function CL_DriftInterpolationAmount (line 301) | static int CL_DriftInterpolationAmount( int goal )
  function CL_ComputeClientInterpolationAmount (line 329) | static void CL_ComputeClientInterpolationAmount( usercmd_t *cmd )
  function CL_ComputePacketLoss (line 375) | static void CL_ComputePacketLoss( void )
  function CL_UpdateFrameLerp (line 399) | void CL_UpdateFrameLerp( void )
  function CL_FindInterpolatedAddAngle (line 410) | static void CL_FindInterpolatedAddAngle( float t, float *frac, pred_view...
  function CL_ApplyAddAngle (line 452) | static void CL_ApplyAddAngle( void )
  function qboolean (line 488) | static qboolean CL_ProcessShowTexturesCmds( usercmd_t *cmd )
  function qboolean (line 516) | static qboolean CL_ProcessOverviewCmds( usercmd_t *cmd )
  function CL_UpdateClientData (line 568) | static void CL_UpdateClientData( void )
  function CL_CreateCmd (line 595) | static void CL_CreateCmd( void )
  function CL_WriteUsercmd (line 683) | void CL_WriteUsercmd( connprotocol_t proto, sizebuf_t *msg, int from, in...
  function CL_WritePacket (line 713) | static void CL_WritePacket( void )
  function CL_SendCommand (line 890) | static void CL_SendCommand( void )
  function CL_BeginUpload_f (line 904) | static void CL_BeginUpload_f( void )
  function CL_Quit_f (line 973) | void CL_Quit_f( void )
  function CL_Drop (line 986) | void CL_Drop( void )
  function CL_GetCDKey (line 993) | static void CL_GetCDKey( char *protinfo, size_t protinfosize )
  function CL_WriteSteamTicket (line 1011) | static void CL_WriteSteamTicket( sizebuf_t *send )
  function CL_SendConnectPacket (line 1051) | static void CL_SendConnectPacket( connprotocol_t proto, int challenge )
  function CL_GetTestFragmentSize (line 1175) | static int CL_GetTestFragmentSize( void )
  function CL_SendGetChallenge (line 1188) | static void CL_SendGetChallenge( netadr_t to )
  function CL_CheckForResend (line 1203) | static void CL_CheckForResend( void )
  function resource_t (line 1295) | static resource_t *CL_AddResource( resourcetype_t type, const char *name...
  function CL_CreateResourceList (line 1312) | static void CL_CreateResourceList( void )
  function qboolean (line 1357) | static qboolean CL_StringToProtocol( const char *s, connprotocol_t *proto )
  function CL_Connect_f (line 1388) | static void CL_Connect_f( void )
  function CL_Rcon_f (line 1432) | static void CL_Rcon_f( void )
  function CL_ClearState (line 1490) | void CL_ClearState( void )
  function CL_SendDisconnectMessage (line 1539) | static void CL_SendDisconnectMessage( connprotocol_t proto )
  function CL_GetSplitSize (line 1561) | int CL_GetSplitSize( void )
  function CL_SetupNetchanForProtocol (line 1577) | void CL_SetupNetchanForProtocol( connprotocol_t proto )
  function CL_Reconnect (line 1616) | static void CL_Reconnect( qboolean setup_netchan )
  function CL_Disconnect (line 1653) | void CL_Disconnect( void )
  function CL_Disconnect_f (line 1690) | void CL_Disconnect_f( void )
  function CL_Crashed (line 1697) | void CL_Crashed( void )
  function CL_LocalServers_f (line 1720) | static void CL_LocalServers_f( void )
  function CL_BuildMasterServerScanRequest (line 1741) | static size_t NONNULL CL_BuildMasterServerScanRequest( char *buf, size_t...
  function CL_SendMasterServerScanRequest (line 1783) | static void CL_SendMasterServerScanRequest( void )
  function CL_InternetServers_f (line 1795) | static void CL_InternetServers_f( void )
  function CL_QueryServer_f (line 1817) | static void CL_QueryServer_f( void )
  function CL_Reconnect_f (line 1863) | static void CL_Reconnect_f( void )
  function CL_FixupColorStringsForInfoString (line 1900) | static void CL_FixupColorStringsForInfoString( const char *in, char *out...
  function CL_ParseStatusMessage (line 1964) | static void CL_ParseStatusMessage( netadr_t from, sizebuf_t *msg )
  function CL_ParseGoldSrcStatusMessage (line 2015) | static void CL_ParseGoldSrcStatusMessage( netadr_t from, sizebuf_t *msg )
  function CL_ParseNETInfoMessage (line 2101) | static void CL_ParseNETInfoMessage( netadr_t from, const char *s )
  function CL_ProcessNetRequests (line 2191) | static void CL_ProcessNetRequests( void )
  function CL_SetupOverviewParams (line 2222) | void CL_SetupOverviewParams( void )
  function qboolean (line 2260) | static qboolean CL_IsFromConnectingServer( netadr_t from )
  function CL_HandleTestPacket (line 2266) | static void CL_HandleTestPacket( netadr_t from, sizebuf_t *msg )
  function CL_ClientConnect (line 2335) | static void CL_ClientConnect( connprotocol_t proto, const char *c, netad...
  function CL_Print (line 2367) | static void CL_Print( const char *c, const char *args, netadr_t from, si...
  function CL_Challenge (line 2380) | static void CL_Challenge( const char *c, netadr_t from )
  function CL_ErrorMsg (line 2396) | static void CL_ErrorMsg( const char *c, const char *args, netadr_t from,...
  function CL_Reject (line 2428) | static void CL_Reject( const char *c, const char *args, netadr_t from )
  function CL_ServerList (line 2445) | static void CL_ServerList( netadr_t from, sizebuf_t *msg )
  function CL_ConnectionlessPacket (line 2513) | static void CL_ConnectionlessPacket( netadr_t from, sizebuf_t *msg )
  function qboolean (line 2606) | static qboolean CL_GetMessage( byte *data, size_t *length )
  function CL_ParseNetMessage (line 2614) | static void CL_ParseNetMessage( sizebuf_t *msg, void (*parsefn)( sizebuf...
  function CL_ReadNetMessage (line 2642) | static void CL_ReadNetMessage( void )
  function CL_ReadPackets (line 2751) | static void CL_ReadPackets( void )
  function CL_RegisterCustomization (line 2831) | static void CL_RegisterCustomization( resource_t *resource )
  function CL_ProcessFile (line 2866) | void CL_ProcessFile( qboolean successfully_received, const char *filename )
  function CL_ServerCommand (line 3004) | void CL_ServerCommand( qboolean reliable, const char *fmt, ... )
  function CL_UpdateInfo (line 3035) | void CL_UpdateInfo( const char *key, const char *value )
  function CL_SetInfo_f (line 3065) | static void CL_SetInfo_f( void )
  function CL_Physinfo_f (line 3105) | static void CL_Physinfo_f( void )
  function qboolean (line 3112) | static qboolean CL_ShouldRescanFilesystem( void )
  function qboolean (line 3137) | qboolean CL_PrecacheResources( void )
  function CL_FullServerinfo_f (line 3298) | static void CL_FullServerinfo_f( void )
  function CL_Escape_f (line 3316) | static void CL_Escape_f( void )
  function CL_ListMessages_f (line 3329) | static void CL_ListMessages_f( void )
  function CL_InitLocal (line 3350) | static void CL_InitLocal( void )
  function CL_AdjustClock (line 3518) | static void CL_AdjustClock( void )
  function Host_ClientBegin (line 3553) | void Host_ClientBegin( void )
  function Host_ClientFrame (line 3577) | void Host_ClientFrame( void )
  function CL_Init (line 3641) | void CL_Init( void )
  function CL_Shutdown (line 3679) | void CL_Shutdown( void )

FILE: engine/client/cl_mobile.c
  function pfnVibrate (line 29) | static void pfnVibrate( float life, char flags )
  function Vibrate_f (line 38) | static void Vibrate_f( void )
  function pfnEnableTextInput (line 49) | static void pfnEnableTextInput( int enable )
  function pfnDrawScaledCharacter (line 54) | static int pfnDrawScaledCharacter( int x, int y, int number, int r, int ...
  function pfnTouch_HideButtons (line 80) | static void pfnTouch_HideButtons( const char *name, byte state )
  function pfnTouch_RemoveButton (line 85) | static void pfnTouch_RemoveButton( const char *name )
  function pfnSetCustomClientID (line 95) | static void GAME_EXPORT pfnSetCustomClientID( const char *id )
  function qboolean (line 118) | qboolean Mobile_Init( void )
  function Mobile_Shutdown (line 154) | void Mobile_Shutdown( void )

FILE: engine/client/cl_netgraph.c
  type packet_latency_t (line 43) | struct packet_latency_t
  type cmdinfo_t (line 49) | struct cmdinfo_t
  function NetGraph_DrawRect (line 82) | static void NetGraph_DrawRect( const wrect_t *rect, const byte colors[4] )
  function qboolean (line 99) | static qboolean NetGraph_AtEdge( int x, int width )
  function NetGraph_InitColors (line 117) | static void NetGraph_InitColors( void )
  function NetGraph_GetFrameData (line 172) | static void NetGraph_GetFrameData( float *latency, int *latency_count )
  function NetGraph_DrawTimes (line 254) | static void NetGraph_DrawTimes( wrect_t rect, int x, int w )
  function NetGraph_DrawHatches (line 335) | static void NetGraph_DrawHatches( int x, int y )
  function NetGraph_DrawTextFields (line 364) | static void NetGraph_DrawTextFields( int x, int y, int w, wrect_t rect, ...
  function NetGraph_DrawDataSegment (line 436) | static int NetGraph_DrawDataSegment( wrect_t *fill, int bytes, byte r, b...
  function NetGraph_ColorForHeight (line 463) | static void NetGraph_ColorForHeight( struct packet_latency_t *packet, by...
  function NetGraph_DrawDataUsage (line 498) | static void NetGraph_DrawDataUsage( int x, int y, int w, int graphtype )
  function NetGraph_GetScreenPos (line 610) | static void NetGraph_GetScreenPos( wrect_t *rect, int *w, int *x, int *y )
  function SCR_DrawNetGraph (line 643) | void SCR_DrawNetGraph( void )
  function CL_InitNetgraph (line 691) | void CL_InitNetgraph( void )

FILE: engine/client/cl_parse.c
  function CL_UserMsgStub (line 34) | static int CL_UserMsgStub( const char *pszName, int iSize, void *pbuf )
  function CL_ParseViewEntity (line 45) | void CL_ParseViewEntity( sizebuf_t *msg )
  function CL_ParseSoundPacket (line 60) | static void CL_ParseSoundPacket( sizebuf_t *msg )
  function CL_ParseRestoreSoundPacket (line 122) | void CL_ParseRestoreSoundPacket( sizebuf_t *msg )
  function CL_ParseServerTime (line 184) | void CL_ParseServerTime( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseSignon (line 219) | void CL_ParseSignon( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseMovevars (line 240) | void CL_ParseMovevars( sizebuf_t *msg )
  function CL_ParseParticles (line 267) | void CL_ParseParticles( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseStaticEntity (line 311) | static void CL_ParseStaticEntity( sizebuf_t *msg )
  function CL_WeaponAnim (line 370) | void GAME_EXPORT CL_WeaponAnim( int iAnim, int body )
  function CL_ParseStaticDecal (line 394) | void CL_ParseStaticDecal( sizebuf_t *msg )
  function CL_ParseSoundFade (line 420) | void CL_ParseSoundFade( sizebuf_t *msg )
  function qboolean (line 439) | qboolean CL_RequestMissingResources( void )
  function CL_BatchResourceRequest (line 462) | void CL_BatchResourceRequest( qboolean initialize )
  function CL_EstimateNeededResources (line 549) | int CL_EstimateNeededResources( void )
  function CL_StartResourceDownloading (line 597) | static void CL_StartResourceDownloading( const char *pszMessage, qboolea...
  function customization_t (line 628) | static customization_t *CL_PlayerHasCustomization( int nPlayerNum, resou...
  function CL_RemoveCustomization (line 640) | static void CL_RemoveCustomization( int nPlayerNum, customization_t *pRe...
  function CL_ParseCustomization (line 677) | void CL_ParseCustomization( sizebuf_t *msg )
  function CL_ParseResourceRequest (line 765) | void CL_ParseResourceRequest( sizebuf_t *msg )
  function CL_CreateCustomizationList (line 813) | static void CL_CreateCustomizationList( void )
  function CL_ParseFileTransferFailed (line 837) | void CL_ParseFileTransferFailed( sizebuf_t *msg )
  function CL_ParseServerData (line 857) | void CL_ParseServerData( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseClientData (line 1077) | void CL_ParseClientData( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseBaseline (line 1242) | void CL_ParseBaseline( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseLightStyle (line 1324) | void CL_ParseLightStyle( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseSetAngle (line 1345) | void CL_ParseSetAngle( sizebuf_t *msg )
  function CL_ParseAddAngle (line 1357) | void CL_ParseAddAngle( sizebuf_t *msg )
  function CL_ParseCrosshairAngle (line 1386) | void CL_ParseCrosshairAngle( sizebuf_t *msg )
  function CL_ParseRestore (line 1400) | void CL_ParseRestore( sizebuf_t *msg )
  function CL_RegisterUserMessage (line 1427) | void CL_RegisterUserMessage( sizebuf_t *msg, connprotocol_t proto )
  function CL_UpdateUserinfo (line 1465) | void CL_UpdateUserinfo( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseResource (line 1533) | void CL_ParseResource( sizebuf_t *msg )
  function CL_UpdateUserPings (line 1591) | void CL_UpdateUserPings( sizebuf_t *msg )
  function CL_SendConsistencyInfo (line 1634) | static void CL_SendConsistencyInfo( sizebuf_t *msg, connprotocol_t proto )
  function CL_StartDark (line 1757) | static void CL_StartDark( void )
  function CL_RegisterResources (line 1795) | void CL_RegisterResources( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseConsistencyInfo (line 1873) | static void CL_ParseConsistencyInfo( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseResourceList (line 1960) | void CL_ParseResourceList( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseVoiceInit (line 1997) | void CL_ParseVoiceInit( sizebuf_t *msg )
  function CL_ParseVoiceData (line 2011) | void CL_ParseVoiceData( sizebuf_t *msg, connprotocol_t proto )
  function CL_ParseResLocation (line 2061) | void CL_ParseResLocation( sizebuf_t *msg )
  function CL_ParseHLTV (line 2088) | void CL_ParseHLTV( sizebuf_t *msg )
  function CL_ParseDirector (line 2127) | void CL_ParseDirector( sizebuf_t *msg )
  function CL_ParseScreenShake (line 2144) | static void CL_ParseScreenShake( sizebuf_t *msg )
  function CL_ParseScreenFade (line 2167) | static void CL_ParseScreenFade( sizebuf_t *msg )
  function CL_ParseCvarValue (line 2221) | void CL_ParseCvarValue( sizebuf_t *msg, const qboolean ext, const connpr...
  function CL_ParseExec (line 2287) | void CL_ParseExec( sizebuf_t *msg )
  function qboolean (line 2334) | qboolean CL_DispatchUserMessage( const char *pszName, int iSize, void *p...
  function CL_ParseUserMessage (line 2373) | void CL_ParseUserMessage( sizebuf_t *msg, int svc_num, connprotocol_t pr...
  function qboolean (line 2470) | qboolean CL_ParseCommonDLLMessage( sizebuf_t *msg, connprotocol_t proto,...
  function CL_ParseServerMessage (line 2516) | void CL_ParseServerMessage( sizebuf_t *msg )

FILE: engine/client/cl_parse_48.c
  function CL_LegacyParseStaticEntity (line 33) | static void CL_LegacyParseStaticEntity( sizebuf_t *msg )
  function CL_LegacyParseSoundPacket (line 103) | static void CL_LegacyParseSoundPacket( sizebuf_t *msg, qboolean is_ambie...
  function CL_LegacyPrecacheSound (line 167) | static void CL_LegacyPrecacheSound( sizebuf_t *msg )
  function CL_LegacyPrecacheModel (line 184) | static void CL_LegacyPrecacheModel( sizebuf_t *msg )
  function CL_LegacyPrecacheEvent (line 214) | static void CL_LegacyPrecacheEvent( sizebuf_t *msg )
  function CL_LegacyParseResourceList (line 242) | static void CL_LegacyParseResourceList( sizebuf_t *msg )
  function CL_ParseLegacyServerMessage (line 317) | void CL_ParseLegacyServerMessage( sizebuf_t *msg )
  function CL_LegacyPrecache_f (line 586) | void CL_LegacyPrecache_f( void )

FILE: engine/client/cl_parse_gs.c
  function CL_ParseExtraInfo (line 26) | static void CL_ParseExtraInfo( sizebuf_t *msg )
  function CL_ParseNewMovevars (line 45) | static void CL_ParseNewMovevars( sizebuf_t *msg )
  type delta_header_t (line 95) | typedef struct delta_header_t
  function CL_ParseDeltaHeader (line 104) | static int CL_ParseDeltaHeader( sizebuf_t *msg, qboolean delta, int oldn...
  function CL_GetEntityDelta (line 155) | static int CL_GetEntityDelta( const struct delta_header_t *hdr, int entn...
  function CL_FlushEntityPacketGS (line 166) | static int CL_FlushEntityPacketGS( frame_t *frame, sizebuf_t *msg )
  function CL_DeltaEntityGS (line 209) | static void CL_DeltaEntityGS( const delta_header_t *hdr, sizebuf_t *msg,...
  function CL_CopyPacketEntity (line 275) | static void CL_CopyPacketEntity( frame_t *frame, int num, const entity_s...
  function CL_ParsePacketEntitiesGS (line 284) | static int CL_ParsePacketEntitiesGS( sizebuf_t *msg, qboolean delta )
  function MSG_ReadGSBitCoord (line 413) | static float MSG_ReadGSBitCoord( sizebuf_t *sb )
  function MSG_ReadGSBitVec3Coord (line 438) | static void MSG_ReadGSBitVec3Coord( sizebuf_t *sb, vec3_t fa )
  function CL_ParseSoundPacketGS (line 455) | static void CL_ParseSoundPacketGS( sizebuf_t *msg )
  function CL_ParseSpawnStaticSound (line 512) | static void CL_ParseSpawnStaticSound( sizebuf_t *msg )
  function CL_ParseGoldSrcServerMessage (line 543) | void CL_ParseGoldSrcServerMessage( sizebuf_t *msg )

FILE: engine/client/cl_pmove.c
  function CL_PushPMStates (line 35) | CL_PushPMStates( void )
  function CL_PopPMStates (line 49) | CL_PopPMStates( void )
  function qboolean (line 62) | static qboolean CL_IsPredicted( void )
  function CL_SetLastUpdate (line 78) | void CL_SetLastUpdate( void )
  function CL_RedoPrediction (line 88) | void CL_RedoPrediction( void )
  function CL_SetIdealPitch (line 102) | void CL_SetIdealPitch( void )
  function qboolean (line 172) | static qboolean CL_PlayerTeleported( local_state_t *from, local_state_t ...
  function CL_CheckPredictionError (line 191) | void CL_CheckPredictionError( void )
  function CL_SetUpPlayerPrediction (line 246) | void GAME_EXPORT CL_SetUpPlayerPrediction( int dopred, int bIncludeLocal...
  function CL_ClipPMoveToEntity (line 293) | void CL_ClipPMoveToEntity( physent_t *pe, const vec3_t start, vec3_t min...
  function CL_CopyEntityToPhysEnt (line 309) | static void CL_CopyEntityToPhysEnt( physent_t *pe, entity_state_t *state...
  function CL_AddLinksToPmove (line 399) | static void CL_AddLinksToPmove( frame_t *frame )
  function CL_SetSolidEntities (line 474) | void CL_SetSolidEntities( void )
  function CL_SetSolidPlayers (line 508) | void GAME_EXPORT CL_SetSolidPlayers( int playernum )
  function CL_WaterEntity (line 564) | int GAME_EXPORT CL_WaterEntity( const float *rgflPos )
  function pmtrace_t (line 619) | pmtrace_t CL_TraceLine( vec3_t start, vec3_t end, int flags )
  function pmtrace_t (line 639) | pmtrace_t *CL_VisTraceLine( vec3_t start, vec3_t end, int flags )
  function cl_entity_t (line 659) | cl_entity_t *CL_GetWaterEntity( const float *rgflPos )
  function pfnTestPlayerPosition (line 669) | static int GAME_EXPORT pfnTestPlayerPosition( float *pos, pmtrace_t *ptr...
  function pfnStuckTouch (line 674) | static void GAME_EXPORT pfnStuckTouch( int hitent, pmtrace_t *tr )
  function pfnTruePointContents (line 679) | static int GAME_EXPORT pfnTruePointContents( float *p )
  function pmtrace_t (line 684) | static pmtrace_t GAME_EXPORT pfnPlayerTrace( float *start, float *end, i...
  function pfnTraceModel (line 694) | static float GAME_EXPORT pfnTraceModel( physent_t *pe, float *start, flo...
  function pfnPlaySound (line 699) | static void GAME_EXPORT pfnPlaySound( int channel, const char *sample, f...
  function pfnPlaybackEventFull (line 707) | static void GAME_EXPORT pfnPlaybackEventFull( int flags, int clientindex...
  function pmtrace_t (line 713) | static pmtrace_t GAME_EXPORT pfnPlayerTraceEx( float *start, float *end,...
  function pfnTestPlayerPositionEx (line 718) | static int GAME_EXPORT pfnTestPlayerPositionEx( float *pos, pmtrace_t *p...
  function pmtrace_t (line 723) | static pmtrace_t *pfnTraceLineEx( float *start, float *end, int flags, i...
  function CL_InitClientMove (line 734) | void CL_InitClientMove( void )
  function CL_SetupPMove (line 792) | static void CL_SetupPMove( playermove_t *pmove, const local_state_t *fro...
  function CL_FinishPMove (line 863) | static const void CL_FinishPMove( const playermove_t *pmove, local_state...
  function CL_RunUsercmd (line 916) | static void CL_RunUsercmd( local_state_t *from, local_state_t *to, userc...
  function CL_MoveSpectatorCamera (line 967) | void CL_MoveSpectatorCamera( void )
  function CL_PredictMovement (line 991) | void CL_PredictMovement( qboolean repredicting )

FILE: engine/client/cl_qparse.c
  function CL_DispatchQuakeMessage (line 54) | static void CL_DispatchQuakeMessage( const char *name )
  function CL_ParseQuakeStats (line 67) | static void CL_ParseQuakeStats( sizebuf_t *msg )
  function qboolean (line 82) | static qboolean CL_QuakeEntityTeleported( cl_entity_t *ent, entity_state...
  function CL_UpdateQuakeStats (line 103) | static int CL_UpdateQuakeStats( sizebuf_t *msg, int statnum, qboolean ha...
  function CL_UpdateQuakeGameMode (line 129) | static void CL_UpdateQuakeGameMode( int gamemode )
  function CL_ParseQuakeSound (line 141) | static void CL_ParseQuakeSound( sizebuf_t *msg )
  function CL_ParseQuakeServerInfo (line 183) | static void CL_ParseQuakeServerInfo( sizebuf_t *msg )
  function CL_ParseQuakeClientData (line 342) | static void CL_ParseQuakeClientData( sizebuf_t *msg )
  function CL_ParseQuakeEntityData (line 419) | static void CL_ParseQuakeEntityData( sizebuf_t *msg, int bits )
  function CL_ParseQuakeParticle (line 570) | static void CL_ParseQuakeParticle( sizebuf_t *msg )
  function CL_ParseQuakeStaticSound (line 592) | static void CL_ParseQuakeStaticSound( sizebuf_t *msg )
  function CL_ParseQuakeDamage (line 613) | static void CL_ParseQuakeDamage( sizebuf_t *msg )
  function CL_ParseQuakeStaticEntity (line 629) | static void CL_ParseQuakeStaticEntity( sizebuf_t *msg )
  function CL_ParseQuakeBaseline (line 694) | static void CL_ParseQuakeBaseline( sizebuf_t *msg )
  function CL_ParseQuakeTempEntity (line 730) | static void CL_ParseQuakeTempEntity( sizebuf_t *msg )
  function CL_ParseQuakeSignon (line 778) | static void CL_ParseQuakeSignon( sizebuf_t *msg )
  function CL_ParseNehahraShowLMP (line 793) | static void CL_ParseNehahraShowLMP( sizebuf_t *msg )
  function CL_ParseNehahraHideLMP (line 809) | static void CL_ParseNehahraHideLMP( sizebuf_t *msg )
  function CL_QuakeStuffText (line 821) | static void CL_QuakeStuffText( const char *text )
  function CL_QuakeExecStuff (line 836) | static void CL_QuakeExecStuff( void )
  function CL_ParseQuakeMessage (line 891) | void CL_ParseQuakeMessage( sizebuf_t *msg )

FILE: engine/client/cl_remap.c
  function remap_info_t (line 27) | remap_info_t *CL_GetRemapInfoForEntity( cl_entity_t *e )
  function qboolean (line 44) | static qboolean CL_CmpStudioTextures( int numtexs, mstudiotexture_t *p1,...
  function byte (line 81) | static byte *CL_CreateRawTextureFromPixels( texture_t *tx, size_t *size,...
  function CL_DuplicateTexture (line 114) | static void CL_DuplicateTexture( cl_entity_t *entity, model_t *model, ms...
  function CL_UpdateStudioTexture (line 158) | static void CL_UpdateStudioTexture( cl_entity_t *entity, mstudiotexture_...
  function CL_UpdateAliasTexture (line 221) | static void CL_UpdateAliasTexture( cl_entity_t *entity, unsigned short *...
  function CL_FreeRemapInfo (line 260) | static void CL_FreeRemapInfo( remap_info_t *info )
  function CL_UpdateRemapInfo (line 289) | static void CL_UpdateRemapInfo( cl_entity_t *entity, int topcolor, int b...
  function CL_AllocRemapInfo (line 323) | static void CL_AllocRemapInfo( cl_entity_t *entity, model_t *model, int ...
  function CL_ClearAllRemaps (line 437) | void CL_ClearAllRemaps( void )
  function qboolean (line 458) | qboolean CL_EntitySetRemapColors( cl_entity_t *e, model_t *mod, int top,...

FILE: engine/client/cl_render.c
  function R_FatPVS (line 21) | int R_FatPVS( const vec3_t org, float radius, byte *visbuffer, qboolean ...
  function lightstyle_t (line 26) | lightstyle_t *CL_GetLightStyle( int number )
  function ref_overview_t (line 32) | const ref_overview_t *GL_GetOverviewParms( void )
  function R_Mem_Free (line 42) | static void R_Mem_Free( void *mem, const char *filename, const int filel...
  function uint (line 72) | static uint pfnFileBufferCRC32( const void *buffer, const int length )
  function R_EnvShot (line 90) | static void R_EnvShot( const float *vieworg, const char *name, qboolean ...
  function CL_RenderGetParm (line 136) | intptr_t CL_RenderGetParm( const int parm, const int arg, const qboolean...
  function pfnRenderGetParm (line 231) | static intptr_t pfnRenderGetParm( int parm, int arg )
  function pfnAVI_StreamSound (line 236) | static void pfnAVI_StreamSound( movie_state_t *avi, int entnum, float fv...
  function R_FillRenderAPIFromRef (line 310) | static void R_FillRenderAPIFromRef( render_api_t *to, const ref_interfac...
  function qboolean (line 351) | qboolean R_InitRenderAPI( void )

FILE: engine/client/cl_scrn.c
  type dirty_t (line 38) | typedef struct
  function SCR_DrawFPS (line 51) | void SCR_DrawFPS( int height )
  function SCR_DrawPos (line 117) | void SCR_DrawPos( void )
  function SCR_DrawEnts (line 150) | void SCR_DrawEnts( void )
  function SCR_DrawUserCmd (line 213) | void SCR_DrawUserCmd( void )
  function SCR_NetSpeeds (line 277) | void SCR_NetSpeeds( void )
  function SCR_RSpeeds (line 338) | void SCR_RSpeeds( void )
  function SCR_MakeLevelShot (line 366) | void SCR_MakeLevelShot( void )
  function VID_WriteOverviewScript (line 382) | static void VID_WriteOverviewScript( void )
  function SCR_MakeScreenShot (line 413) | void SCR_MakeScreenShot( void )
  function qboolean (line 475) | static qboolean SCR_DrawPlaque( void )
  function SCR_BeginLoadingPlaque (line 495) | void SCR_BeginLoadingPlaque( qboolean is_background )
  function SCR_EndLoadingPlaque (line 530) | void SCR_EndLoadingPlaque( void )
  function SCR_AddDirtyPoint (line 542) | static void SCR_AddDirtyPoint( int x, int y )
  function SCR_DirtyScreen (line 555) | void SCR_DirtyScreen( void )
  function R_DrawTileClear (line 561) | static void R_DrawTileClear( int texnum, int x, int y, int w, int h, flo...
  function SCR_TileClear (line 578) | void SCR_TileClear( void )
  function SCR_UpdateScreen (line 674) | void SCR_UpdateScreen( void )
  function SCR_LoadCreditsFont (line 716) | void SCR_LoadCreditsFont( void )
  function SCR_InstallParticlePalette (line 762) | static void SCR_InstallParticlePalette( void )
  function SCR_LoadPauseIcon (line 796) | int SCR_LoadPauseIcon( void )
  function SCR_RegisterTextures (line 815) | void SCR_RegisterTextures( void )
  function SCR_SizeUp_f (line 840) | static void SCR_SizeUp_f( void )
  function SCR_SizeDown_f (line 853) | static void SCR_SizeDown_f( void )
  function SCR_VidInit (line 863) | void SCR_VidInit( void )
  function SCR_Init (line 901) | void SCR_Init( void )
  function SCR_Shutdown (line 949) | void SCR_Shutdown( void )

FILE: engine/client/cl_securedstub.c
  type cldll_func_src_t (line 19) | typedef struct cldll_func_src_s
  type cldll_func_dst_t (line 66) | typedef struct cldll_func_dst_s
  type cl_enginefunc_dst_s (line 112) | struct cl_enginefunc_dst_s
  type modshelpers_s (line 113) | struct modshelpers_s
  type modchelpers_s (line 114) | struct modchelpers_s
  type engdata_s (line 115) | struct engdata_s
  type modfuncs_t (line 117) | typedef struct modfuncs_s
  function DstInitialize (line 150) | static void DstInitialize( cl_enginefunc_t **pEnginefuncs, int *iVersion )
  function DstInit (line 155) | static void DstInit( void )
  function DstVidInit (line 160) | static void DstVidInit( void )
  function DstRedraw (line 165) | static void DstRedraw( float *flTime, int *intermission )
  function DstUpdateClientData (line 170) | static void DstUpdateClientData( client_data_t **cdata, float *flTime )
  function DstReset (line 175) | static void DstReset( void )
  function DstPlayerMove (line 180) | static void DstPlayerMove( struct playermove_s **ppmove, int *server )
  function DstPlayerMoveInit (line 185) | static void DstPlayerMoveInit( struct playermove_s **ppmove )
  function DstPlayerMoveTexture (line 190) | static void DstPlayerMoveTexture( char **name )
  function DstIN_ActivateMouse (line 195) | static void DstIN_ActivateMouse( void )
  function DstIN_DeactivateMouse (line 200) | static void DstIN_DeactivateMouse( void )
  function DstIN_MouseEvent (line 205) | static void DstIN_MouseEvent( int *mstate )
  function DstIN_ClearStates (line 210) | static void DstIN_ClearStates( void )
  function DstIN_Accumulate (line 215) | static void DstIN_Accumulate( void )
  function DstCL_CreateMove (line 220) | static void DstCL_CreateMove( float *frametime, struct usercmd_s **cmd, ...
  function DstCL_IsThirdPerson (line 225) | static void DstCL_IsThirdPerson( void )
  function DstCL_CameraOffset (line 230) | static void DstCL_CameraOffset( float **ofs )
  function DstKB_Find (line 235) | static void DstKB_Find( const char **name )
  function DstCAM_Think (line 240) | static void DstCAM_Think( void )
  function DstCalcRefdef (line 245) | static void DstCalcRefdef( ref_params_t **pparams )
  function DstAddEntity (line 250) | static void DstAddEntity( int *type, cl_entity_t **ent, const char **mod...
  function DstCreateEntities (line 255) | static void DstCreateEntities( void )
  function DstDrawNormalTriangles (line 260) | static void DstDrawNormalTriangles( void )
  function DstDrawTransparentTriangles (line 265) | static void DstDrawTransparentTriangles( void )
  function DstStudioEvent (line 270) | static void DstStudioEvent( const struct mstudioevent_s **event, const c...
  function DstPostRunCmd (line 275) | static void DstPostRunCmd( struct local_state_s **from, struct local_sta...
  function DstShutdown (line 280) | static void DstShutdown( void )
  function DstTxferLocalOverrides (line 285) | static void DstTxferLocalOverrides( entity_state_t **state, const client...
  function DstProcessPlayerState (line 290) | static void DstProcessPlayerState( entity_state_t **dst, const entity_st...
  function DstTxferPredictionData (line 295) | static void DstTxferPredictionData( entity_state_t **ps, const entity_st...
  function DstDemo_ReadBuffer (line 300) | static void DstDemo_ReadBuffer( int *size, byte **buffer )
  function DstConnectionlessPacket (line 305) | static void DstConnectionlessPacket( const struct netadr_s **net_from, c...
  function DstGetHullBounds (line 310) | static void DstGetHullBounds( int *hullnumber, float **mins, float **maxs )
  function DstFrame (line 315) | static void DstFrame( double *time )
  function DstKey_Event (line 320) | static void DstKey_Event( int *eventcode, int *keynum, const char **pszC...
  function DstTempEntUpdate (line 325) | static void DstTempEntUpdate( double *frametime, double *client_time, do...
  function DstGetUserEntity (line 330) | static void DstGetUserEntity( int *index )
  function DstVoiceStatus (line 335) | static void DstVoiceStatus( int *entindex, qboolean *bTalking )
  function DstDirectorMessage (line 340) | static void DstDirectorMessage( int *iSize, void **pbuf )
  function DstGetStudioModelInterface (line 345) | static void DstGetStudioModelInterface( int *version, struct r_studio_in...
  function DstChatInputPosition (line 350) | static void DstChatInputPosition( int **x, int **y )
  function DstGetPlayerTeam (line 355) | static void DstGetPlayerTeam( int *iPlayer )
  function CL_GetSecuredClientAPI (line 406) | void CL_GetSecuredClientAPI( CL_EXPORT_FUNCS F )

FILE: engine/client/cl_spray.c
  function CL_AdjustSprayDimensions (line 27) | static void CL_AdjustSprayDimensions( int *width, int *height )
  function rgbdata_t (line 50) | static rgbdata_t *CL_LoadAndPrepareImage( const char *filename, int *wid...
  function qboolean (line 106) | qboolean CL_ConvertImageToWAD3( const char *filename )

FILE: engine/client/cl_tent.c
  function CL_LoadClientSprites (line 69) | void CL_LoadClientSprites( void )
  function CL_AddClientResource (line 88) | void CL_AddClientResource( const char *filename, int type )
  function CL_AddClientResources (line 119) | void CL_AddClientResources( void )
  function CL_ClearTempEnts (line 178) | static void CL_ClearTempEnts( void )
  function CL_InitTempEnts (line 201) | void CL_InitTempEnts( void )
  function CL_FreeTempEnts (line 216) | void CL_FreeTempEnts( void )
  function CL_PrepareTEnt (line 230) | static void CL_PrepareTEnt( TEMPENTITY *pTemp, model_t *pmodel )
  function CL_TempEntPlaySound (line 271) | static void CL_TempEntPlaySound( TEMPENTITY *pTemp, float damp )
  function CL_TempEntAddEntity (line 358) | static int CL_TempEntAddEntity( cl_entity_t *pEntity )
  function CL_TempEntUpdate (line 395) | void CL_TempEntUpdate( void )
  function qboolean (line 410) | static qboolean CL_FreeLowPriorityTempEnt( void )
  function TEMPENTITY (line 444) | TEMPENTITY *CL_TempEntAlloc( const vec3_t org, model_t *pmodel )
  function TEMPENTITY (line 480) | TEMPENTITY *CL_TempEntAllocHigh( const vec3_t org, model_t *pmodel )
  function TEMPENTITY (line 521) | TEMPENTITY *CL_TempEntAllocNoModel( const vec3_t org )
  function R_FizzEffect (line 570) | void GAME_EXPORT R_FizzEffect( cl_entity_t *ent, int modelIndex, int den...
  function R_Bubbles (line 628) | void GAME_EXPORT R_Bubbles( const vec3_t mins, const vec3_t maxs, float ...
  function R_BubbleTrail (line 674) | void GAME_EXPORT R_BubbleTrail( const vec3_t start, const vec3_t end, fl...
  function R_AttachTentToPlayer (line 719) | void GAME_EXPORT R_AttachTentToPlayer( int client, int modelIndex, float...
  function R_KillAttachedTents (line 775) | void GAME_EXPORT R_KillAttachedTents( int client )
  function R_RicochetSprite (line 796) | void GAME_EXPORT R_RicochetSprite( const vec3_t pos, model_t *pmodel, fl...
  function R_RocketFlare (line 822) | void GAME_EXPORT R_RocketFlare( const vec3_t pos )
  function R_MuzzleFlash (line 848) | void GAME_EXPORT R_MuzzleFlash( const vec3_t pos, int type )
  function R_BloodSprite (line 887) | void GAME_EXPORT R_BloodSprite( const vec3_t org, int colorIndex, int mo...
  function R_BreakModel (line 972) | void GAME_EXPORT R_BreakModel( const vec3_t pos, const vec3_t size, cons...
  function TEMPENTITY (line 1060) | TEMPENTITY *R_TempModel( const vec3_t pos, const vec3_t dir, const vec3_...
  function TEMPENTITY (line 1111) | TEMPENTITY *R_DefaultSprite( const vec3_t pos, int spriteIndex, float fr...
  function R_SparkShower (line 1147) | void GAME_EXPORT R_SparkShower( const vec3_t pos )
  function TEMPENTITY (line 1172) | TEMPENTITY *R_TempSprite( vec3_t pos, const vec3_t dir, float scale, int...
  function R_Sprite_Explode (line 1210) | void GAME_EXPORT R_Sprite_Explode( TEMPENTITY *pTemp, float scale, int f...
  function R_Sprite_Smoke (line 1243) | void GAME_EXPORT R_Sprite_Smoke( TEMPENTITY *pTemp, float scale )
  function R_Spray_Generic (line 1260) | static void R_Spray_Generic( const char *func, const vec3_t pos, const v...
  function R_Spray (line 1334) | void GAME_EXPORT R_Spray( const vec3_t pos, const vec3_t dir, int modelI...
  function R_Sprite_Spray (line 1346) | void GAME_EXPORT R_Sprite_Spray( const vec3_t pos, const vec3_t dir, int...
  function R_Sprite_Trail (line 1359) | void GAME_EXPORT R_Sprite_Trail( int type, vec3_t start, vec3_t end, int...
  function R_FunnelSprite (line 1411) | void GAME_EXPORT R_FunnelSprite( const vec3_t org, int modelIndex, int r...
  function R_SparkEffect (line 1472) | void GAME_EXPORT R_SparkEffect( const vec3_t pos, int count, int velocit...
  function R_RicochetSoundByName (line 1485) | static void R_RicochetSoundByName( const vec3_t pos, const char *name )
  function R_RicochetSoundByIndex (line 1492) | static void R_RicochetSoundByIndex( const vec3_t pos, int idx )
  function R_RicochetSound (line 1499) | void GAME_EXPORT R_RicochetSound( const vec3_t pos )
  function R_Projectile (line 1513) | void GAME_EXPORT R_Projectile( const vec3_t origin, const vec3_t velocit...
  function R_TempSphereModel (line 1562) | void GAME_EXPORT R_TempSphereModel( const vec3_t pos, float speed, float...
  function R_Explosion (line 1610) | void GAME_EXPORT R_Explosion( vec3_t pos, int model, float scale, float ...
  function R_PlayerSprites (line 1666) | void GAME_EXPORT R_PlayerSprites( int client, int modelIndex, int count,...
  function R_FireField (line 1731) | void GAME_EXPORT R_FireField( float *org, int radius, int modelIndex, in...
  function R_MultiGunshot (line 1806) | void GAME_EXPORT R_MultiGunshot( const vec3_t org, const vec3_t dir, con...
  function R_Sprite_WallPuff (line 1862) | void GAME_EXPORT R_Sprite_WallPuff( TEMPENTITY *pTemp, float scale )
  function CL_ParseTempEntity (line 1883) | void CL_ParseTempEntity( sizebuf_t *msg, connprotocol_t proto )
  function CL_ClearLightStyles (line 2419) | static void CL_ClearLightStyles( void )
  function CL_SetLightstyle (line 2424) | void CL_SetLightstyle( int style, const char *s, float f )
  function CL_ClearDlights (line 2478) | static void CL_ClearDlights( void )
  function dlight_t (line 2490) | dlight_t *CL_AllocDlight( int key )
  function dlight_t (line 2535) | dlight_t *CL_AllocElight( int key )
  function CL_DecayLights (line 2580) | void CL_DecayLights( void )
  function dlight_t (line 2623) | dlight_t *CL_GetDynamicLight( int number )
  function dlight_t (line 2629) | dlight_t *CL_GetEntityLight( int number )
  function CL_UpdateFlashlight (line 2642) | static void CL_UpdateFlashlight( cl_entity_t *ent )
  function R_EntityDimlight (line 2702) | static void R_EntityDimlight( cl_entity_t *ent, int key )
  function R_EntityLight (line 2712) | static void R_EntityLight( cl_entity_t *ent, int key )
  function R_EntityBrightlight (line 2724) | static void R_EntityBrightlight( cl_entity_t *ent, int key, int radius )
  function CL_AddEntityEffects (line 2744) | void CL_AddEntityEffects( cl_entity_t *ent )
  function CL_AddModelEffects (line 2809) | void CL_AddModelEffects( cl_entity_t *ent )
  function CL_TestLights (line 2873) | void CL_TestLights( void )
  function CL_FireCustomDecal (line 2918) | void GAME_EXPORT CL_FireCustomDecal( int textureIndex, int entityIndex, ...
  function CL_DecalShoot (line 2930) | void GAME_EXPORT CL_DecalShoot( int textureIndex, int entityIndex, int m...
  function CL_PlayerDecal (line 2942) | static void CL_PlayerDecal( int playernum, int customIndex, int entityIn...
  function CL_DecalIndexFromName (line 2991) | int GAME_EXPORT CL_DecalIndexFromName( const char *name )
  function CL_DecalIndex (line 3014) | int GAME_EXPORT CL_DecalIndex( int id )
  function CL_DecalRemoveAll (line 3074) | void GAME_EXPORT CL_DecalRemoveAll( int textureIndex )
  function CL_ClearStaticEntities (line 3094) | void CL_ClearStaticEntities( void )
  function CL_ClearEffects (line 3115) | void CL_ClearEffects( void )

FILE: engine/client/cl_tent.h
  type particle_s (line 22) | struct particle_s
  type particle_s (line 22) | struct particle_s
  type particle_s (line 40) | struct particle_s
  type particle_s (line 41) | struct particle_s
  type tempent_s (line 47) | struct tempent_s
  type tempent_s (line 48) | struct tempent_s
  type tempent_s (line 49) | struct tempent_s
  type tempent_s (line 50) | struct tempent_s
  type tempent_s (line 50) | struct tempent_s
  type tempent_s (line 61) | struct tempent_s
  type tempent_s (line 62) | struct tempent_s
  type tempent_s (line 63) | struct tempent_s
  type tempent_s (line 64) | struct tempent_s
  type tempent_s (line 65) | struct tempent_s
  type tempent_s (line 74) | struct tempent_s
  type pmtrace_s (line 74) | struct pmtrace_s
  type tempent_s (line 79) | struct tempent_s
  type dlight_s (line 81) | struct dlight_s
  type dlight_s (line 82) | struct dlight_s
  type particle_s (line 91) | struct particle_s
  type beam_s (line 94) | struct beam_s
  type beam_s (line 95) | struct beam_s
  type beam_s (line 96) | struct beam_s
  type beam_s (line 97) | struct beam_s
  type beam_s (line 98) | struct beam_s
  type beam_s (line 99) | struct beam_s
  type beam_s (line 100) | struct beam_s

FILE: engine/client/cl_video.c
  function qboolean (line 37) | qboolean SCR_NextMovie( void )
  function SCR_CreateStartupVids (line 66) | static void SCR_CreateStartupVids( void )
  function SCR_CheckStartupVids (line 79) | void SCR_CheckStartupVids( void )
  function SCR_RunCinematic (line 136) | void SCR_RunCinematic( void )
  function qboolean (line 168) | qboolean SCR_DrawCinematic( void )
  function qboolean (line 184) | qboolean SCR_PlayCinematic( const char *arg )
  function SCR_StopCinematic (line 254) | void SCR_StopCinematic( void )
  function SCR_InitCinematic (line 273) | void SCR_InitCinematic( void )
  function SCR_FreeCinematic (line 284) | void SCR_FreeCinematic( void )

FILE: engine/client/cl_view.c
  function V_CalcViewRect (line 32) | static void V_CalcViewRect( void )
  function V_SetupViewModel (line 91) | static void V_SetupViewModel( void )
  function V_SetRefParams (line 121) | static void V_SetRefParams( ref_params_t *fd )
  function V_RefApplyOverview (line 187) | static void V_RefApplyOverview( ref_viewpass_t *rvp )
  function V_CalcFov (line 239) | static float V_CalcFov( float *fov_x, float width, float height )
  function V_AdjustFov (line 257) | static void V_AdjustFov( float *fov_x, float *fov_y, float width, float ...
  function V_GetRefParams (line 286) | static void V_GetRefParams( ref_params_t *fd, ref_viewpass_t *rvp )
  function qboolean (line 332) | qboolean V_PreRender( void )
  function V_RenderView (line 369) | void V_RenderView( void )
  function R_DrawLeafNode (line 413) | static void R_DrawLeafNode( float x, float y, float scale )
  function R_DrawNodeConnection (line 420) | static void R_DrawNodeConnection( float x, float y, float x2, float y2 )
  function R_ShowTree_r (line 428) | static void R_ShowTree_r( mnode_t *node, float x, float y, float scale, ...
  function R_ShowTree (line 475) | static void R_ShowTree( void )
  function V_PostRender (line 507) | void V_PostRender( void )

FILE: engine/client/client.h
  type netbandwidthgraph_t (line 44) | typedef struct netbandwithgraph_s
  type frame_t (line 57) | typedef struct frame_s
  type runcmd_t (line 75) | typedef struct runcmd_s
  type pred_viewangle_t (line 89) | typedef struct
  type cl_local_data_t (line 119) | typedef struct
  type downloadtime_t (line 151) | typedef struct
  type incomingtransfer_t (line 158) | typedef struct
  type client_t (line 174) | typedef struct
  type scrshot_t (line 291) | typedef enum
  type scrstate_t (line 304) | typedef enum
  type cl_user_message_t (line 312) | typedef struct
  type cl_user_event_t (line 322) | typedef struct
  type cl_font_t (line 339) | typedef struct
  type scissor_state_t (line 351) | typedef struct scissor_state_s
  type client_draw_t (line 360) | typedef struct
  type predicted_player_t (line 382) | typedef struct cl_predicted_player_s
  type gameui_draw_t (line 392) | typedef struct
  type cached_spritelist_t (line 403) | typedef struct
  type center_print_t (line 410) | typedef struct
  type screen_shake_t (line 420) | typedef struct
  type net_request_t (line 433) | typedef struct
  type clgame_static_t (line 445) | typedef struct
  type gameui_static_t (line 503) | typedef struct
  type client_static_t (line 528) | typedef struct
  type msurface_s (line 843) | struct msurface_s
  function cl_entity_t (line 848) | static inline cl_entity_t *CL_EDICT_NUM( int index )
  function cl_entity_t (line 865) | static inline cl_entity_t *CL_GetEntityByIndex( int index )
  function model_t (line 876) | static inline model_t *CL_ModelHandle( int modelindex )
  function qboolean (line 881) | static inline qboolean CL_IsThirdPerson( void )
  function cl_entity_t (line 886) | static inline cl_entity_t *CL_GetLocalPlayer( void )
  type channel_s (line 1018) | struct channel_s
  type rawchan_s (line 1019) | struct rawchan_s
  type channel_s (line 1025) | struct channel_s
  type rawchan_s (line 1026) | struct rawchan_s
  function qboolean (line 1032) | static inline qboolean CL_IsPlayerIndex( int idx )
  type particle_s (line 1067) | struct particle_s
  type particle_s (line 1074) | struct particle_s
  type sound_t (line 1129) | typedef int sound_t;

FILE: engine/client/console.c
  type notify_t (line 72) | typedef struct
  type con_lineinfo_t (line 80) | typedef struct con_lineinfo_s
  type history_line_t (line 87) | typedef struct history_line_s
  type con_history_t (line 94) | typedef struct con_history_s
  type console_t (line 102) | typedef struct
  function Con_Clear_f (line 163) | static void Con_Clear_f( void )
  function Con_SetColor (line 174) | static void Con_SetColor( void )
  function Con_ClearNotify (line 205) | void Con_ClearNotify( void )
  function Con_ClearTyping (line 218) | static void Con_ClearTyping( void )
  function Con_MessageMode_f (line 231) | static void Con_MessageMode_f( void )
  function Con_MessageMode2_f (line 247) | static void Con_MessageMode2_f( void )
  function Con_ToggleConsole_f (line 260) | void Con_ToggleConsole_f( void )
  function Con_SetTimes_f (line 292) | static void Con_SetTimes_f( void )
  function Con_FixTimes (line 315) | static void Con_FixTimes( void )
  function Con_DeleteLine (line 336) | static void Con_DeleteLine( void )
  function Con_DeleteLastLine (line 351) | static void Con_DeleteLastLine( void )
  function Con_AddLine (line 410) | static void Con_AddLine( const char *line, int length, qboolean newline )
  function Con_CheckResize (line 456) | static void Con_CheckResize( void )
  function Con_PageUp (line 482) | void Con_PageUp( int lines )
  function Con_PageDown (line 492) | void Con_PageDown( int lines )
  function Con_Top (line 502) | static void Con_Top( void )
  function Con_Bottom (line 512) | void Con_Bottom( void )
  function Con_Visible (line 522) | Con_Visible( void )
  function qboolean (line 532) | qboolean Con_FixedFont( void )
  function Con_LoadConsoleFont (line 545) | static void Con_LoadConsoleFont( int fontNumber, cl_font_t *font )
  function Con_LoadConchars (line 593) | static void Con_LoadConchars( void )
  function Con_UtfProcessCharForce (line 624) | int Con_UtfProcessCharForce( int in )
  function Con_UtfProcessChar (line 639) | int GAME_EXPORT Con_UtfProcessChar( int in )
  function Con_UtfMoveLeft (line 655) | int Con_UtfMoveLeft( char *str, int pos )
  function Con_UtfMoveRight (line 683) | int Con_UtfMoveRight( char *str, int pos, int length )
  function Con_DrawCharToConback (line 700) | static void Con_DrawCharToConback( int num, const byte *conchars, byte *...
  function cl_font_t (line 730) | cl_font_t *Con_GetFont( int num )
  function cl_font_t (line 742) | cl_font_t *Con_GetCurFont( void )
  function Con_DrawStringLen (line 754) | void GAME_EXPORT Con_DrawStringLen( const char *pText, int *length, int ...
  function Con_DrawString (line 766) | int Con_DrawString( int x, int y, const char *string, const rgba_t setCo...
  function Con_Init (line 776) | void Con_Init( void )
  function Con_Shutdown (line 824) | void Con_Shutdown( void )
  function Con_Print (line 848) | void Con_Print( const char *txt )
  function Con_NXPrintfv (line 977) | static void Con_NXPrintfv( keydest_t key_dest, const con_nprint_t *info,...
  function Con_NPrintf (line 998) | void GAME_EXPORT Con_NPrintf( int idx, const char *fmt, ... )
  function Con_NXPrintf (line 1020) | void GAME_EXPORT Con_NXPrintf( con_nprint_t *info, const char *fmt, ... )
  function UI_NPrintf (line 1038) | void GAME_EXPORT UI_NPrintf( int idx, const char *fmt, ... )
  function UI_NXPrintf (line 1060) | void GAME_EXPORT UI_NXPrintf( con_nprint_t *info, const char *fmt, ... )
  function Con_ClearField (line 1083) | static void Con_ClearField( field_t *edit )
  function Field_Set (line 1095) | static void Field_Set( field_t *f, const char *string )
  function Field_Paste (line 1106) | static void Field_Paste( field_t *edit )
  function Field_GoTo (line 1126) | static void Field_GoTo( field_t *edit, int pos )
  function Field_KeyDownEvent (line 1142) | static void Field_KeyDownEvent( field_t *edit, int key )
  function Field_CharEvent (line 1213) | static void Field_CharEvent( field_t *edit, int ch )
  function Field_DrawInputLine (line 1274) | static void Field_DrawInputLine( int x, int y, const field_t *edit )
  function Con_HistoryFromField (line 1319) | static void Con_HistoryFromField( history_line_t *dst, const field_t *src )
  function Con_HistoryToField (line 1332) | static void Con_HistoryToField( field_t *dst, const history_line_t *src )
  function Con_HistoryUp (line 1345) | static void Con_HistoryUp( con_history_t *self, field_t *in )
  function Con_HistoryDown (line 1364) | static void Con_HistoryDown( con_history_t *self, field_t *in )
  function Con_HistoryAppend (line 1380) | static void Con_HistoryAppend( con_history_t *self, const field_t *from )
  function Con_LoadHistory (line 1405) | static void Con_LoadHistory( con_history_t *self )
  function Con_SaveHistory (line 1450) | static void Con_SaveHistory( con_history_t *self )
  function Key_Console (line 1493) | void Key_Console( int key )
  function Key_Message (line 1624) | void Key_Message( int key )
  function Con_DrawInput (line 1668) | static void Con_DrawInput( int lines )
  function Con_DrawDebugLines (line 1688) | static int Con_DrawDebugLines( void )
  function Con_DrawDebug (line 1733) | void Con_DrawDebug( void )
  function Con_DrawNotify (line 1773) | static void Con_DrawNotify( void )
  function Con_DrawConsoleLine (line 1825) | static int Con_DrawConsoleLine( int y, int lineno )
  function Con_LastVisibleLine (line 1850) | static void Con_LastVisibleLine( int *lastline )
  function Con_DrawSolidConsole (line 1880) | static void Con_DrawSolidConsole( int lines )
  function Con_DrawConsole (line 1959) | void Con_DrawConsole( void )
  function Con_DrawVersion (line 2028) | void Con_DrawVersion( void )
  function Con_RunConsole (line 2076) | void Con_RunConsole( void )
  function Con_CharEvent (line 2151) | void Con_CharEvent( int key )
  function Con_LoadSimpleConback (line 2164) | static int Con_LoadSimpleConback( const char *name, int flags )
  function Con_VidInit (line 2210) | void Con_VidInit( void )
  function Con_InvalidateFonts (line 2284) | void Con_InvalidateFonts( void )
  function Con_FastClose (line 2299) | void Con_FastClose( void )
  function Con_DefaultColor (line 2314) | void Con_DefaultColor( int r, int g, int b, qboolean gameui )
  function Test_RunConHistory (line 2334) | static void Test_RunConHistory( void )
  function Test_RunCon (line 2369) | void Test_RunCon( void )

FILE: engine/client/gamma.c
  function BuildGammaTable (line 35) | static void BuildGammaTable( const float gamma, const float brightness, ...
  function V_ValidateGammaCvars (line 84) | static void V_ValidateGammaCvars( void )
  function V_CheckGamma (line 107) | void V_CheckGamma( void )
  function V_CheckGammaEnd (line 145) | void V_CheckGammaEnd( void )
  function V_Init (line 164) | void V_Init( void )
  function byte (line 177) | byte TextureToGamma( byte b )
  function byte (line 185) | byte LightToTexGamma( byte b )
  function uint (line 194) | uint ScreenGammaTable( uint b )
  function uint (line 205) | uint LinearGammaTable( uint b )
  function V_GetGammaPtr (line 215) | intptr_t V_GetGammaPtr( int parm )
  type precomputed_gamma_tables_t (line 235) | typedef struct precomputed_gamma_tables_s
  function Test_PrecomputedGammaTables (line 250) | static void Test_PrecomputedGammaTables( void )
  function Test_RunGamma (line 276) | void Test_RunGamma( void )
  function precomputed_gamma_tables_t (line 281) | precomputed_gamma_tables_t *Test_GetGammaTables( int i )

FILE: engine/client/identification.c
  type bloomfilter_t (line 33) | typedef uint64_t bloomfilter_t;
  function bloomfilter_t (line 39) | static bloomfilter_t BloomFilter_Process( const char *buffer, int size )
  function bloomfilter_t (line 59) | static bloomfilter_t BloomFilter_ProcessStr( const char *buffer )
  function uint (line 64) | static uint BloomFilter_Weight( bloomfilter_t value )
  function qboolean (line 81) | static qboolean BloomFilter_ContainsString( bloomfilter_t filter, const ...
  function ID_BloomFilter_f (line 100) | static void ID_BloomFilter_f( void )
  function qboolean (line 115) | static qboolean ID_VerifyHEX( const char *hex )
  function ID_VerifyHEX_f (line 157) | static void ID_VerifyHEX_f( void )
  function qboolean (line 166) | static qboolean ID_ProcessCPUInfo( bloomfilter_t *value )
  function qboolean (line 202) | static qboolean ID_ValidateNetDevice( const char *dev )
  function ID_ProcessNetDevices (line 230) | static int ID_ProcessNetDevices( bloomfilter_t *value )
  function ID_CheckNetDevices (line 254) | static int ID_CheckNetDevices( bloomfilter_t value )
  function ID_TestCPUInfo_f (line 282) | static void ID_TestCPUInfo_f( void )
  function qboolean (line 294) | static qboolean ID_ProcessFile( bloomfilter_t *value, const char *path )
  function ID_ProcessFiles (line 321) | static int ID_ProcessFiles( bloomfilter_t *value, const char *prefix, co...
  function ID_CheckFiles (line 341) | static int ID_CheckFiles( bloomfilter_t value, const char *prefix, const...
  function ID_GetKeyData (line 364) | static int ID_GetKeyData( HKEY hRootKey, char *subKey, char *value, LPBY...
  function ID_SetKeyData (line 381) | static int ID_SetKeyData( HKEY hRootKey, char *subKey, DWORD dwType, cha...
  function ID_RunWMIC (line 399) | static int ID_RunWMIC( char *buffer, const wchar_t *cmdline )
  function ID_ProcessWMIC (line 458) | static int ID_ProcessWMIC( bloomfilter_t *value, const wchar_t *cmdline )
  function ID_CheckWMIC (line 479) | static int ID_CheckWMIC( bloomfilter_t value, const wchar_t *cmdline )
  function bloomfilter_t (line 512) | static bloomfilter_t ID_GenerateRawId( void )
  function uint (line 553) | static uint ID_CheckRawId( bloomfilter_t filter )
  function ID_Check (line 606) | static void ID_Check( void )
  function ID_Init (line 635) | void ID_Init( void )

FILE: engine/client/in_joy.c
  type joy_axis_s (line 41) | struct joy_axis_s
  function qboolean (line 71) | qboolean Joy_IsActive( void )
  function Joy_SetCapabilities (line 81) | void Joy_SetCapabilities( qboolean have_gyro )
  function Joy_SetCalibrationState (line 91) | void Joy_SetCalibrationState( joy_calibration_state_t state )
  function Joy_HatMotionEvent (line 106) | static void Joy_HatMotionEvent( int value )
  function Joy_ProcessTrigger (line 141) | static void Joy_ProcessTrigger( const engineAxis_t engineAxis, short val...
  function Joy_GetHatValueForAxis (line 176) | static int Joy_GetHatValueForAxis( const engineAxis_t engineAxis )
  function Joy_ProcessStick (line 216) | static void Joy_ProcessStick( const engineAxis_t engineAxis, short value )
  function Joy_AxisMotionEvent (line 258) | void Joy_AxisMotionEvent( engineAxis_t engineAxis, short value )
  function Joy_GyroEvent (line 279) | void Joy_GyroEvent( vec3_t data )
  function Joy_FinalizeMove (line 291) | void Joy_FinalizeMove( float *fw, float *side, float *dpitch, float *dyaw )
  function Joy_CalibrateGyro_f (line 324) | static void Joy_CalibrateGyro_f( void )
  function Joy_Init (line 342) | void Joy_Init( void )
  function Joy_Shutdown (line 390) | void Joy_Shutdown( void )

FILE: engine/client/in_touch.c
  type touchButtonType (line 22) | typedef enum
  type touchState (line 32) | typedef enum
  type touchRound (line 39) | typedef enum
  type touch_button_t (line 46) | typedef struct touch_button_s
  type touchdefaultbutton_t (line 70) | typedef struct touchdefaultbutton_s
  type touchbuttonlist_t (line 82) | typedef struct touchbuttonlist_s
  type touch_s (line 88) | struct touch_s
  function Touch_NotifyResize (line 175) | void Touch_NotifyResize( void )
  function Touch_AspectRatio (line 185) | static inline float Touch_AspectRatio( void )
  function Touch_ConfigAspectRatio_f (line 199) | static void Touch_ConfigAspectRatio_f( void )
  function Touch_ExportButtonToConfig (line 212) | static void Touch_ExportButtonToConfig( file_t *f, const touch_button_t ...
  function qboolean (line 249) | static qboolean Touch_DumpConfig( const char *name, const char *profilen...
  function Touch_WriteConfig (line 315) | void Touch_WriteConfig( void )
  function Touch_ExportConfig_f (line 347) | static void Touch_ExportConfig_f( void )
  function Touch_GenerateCode_f (line 386) | static void Touch_GenerateCode_f( void )
  function Touch_RoundAll_f (line 438) | static void Touch_RoundAll_f( void )
  function Touch_ListButtons_f (line 449) | static void Touch_ListButtons_f( void )
  function Touch_Stroke_f (line 471) | static void Touch_Stroke_f( void )
  function touch_button_t (line 483) | static touch_button_t *Touch_FindNextNoPattern( touch_button_t *buttons,...
  function touch_button_t (line 499) | static touch_button_t *Touch_FindButtonNoPattern( touchbuttonlist_t *lis...
  function touch_button_t (line 504) | static touch_button_t *Touch_FindNext( touch_button_t *buttons, const ch...
  function touch_button_t (line 525) | static touch_button_t *Touch_FindFirst( touchbuttonlist_t *list, const c...
  function Touch_SetClientOnly (line 530) | void Touch_SetClientOnly( byte state )
  function Touch_SetClientOnly_f (line 553) | static void Touch_SetClientOnly_f( void )
  function Touch_RemoveButtonFromList (line 564) | static void Touch_RemoveButtonFromList( touchbuttonlist_t *list, const c...
  function Touch_RemoveButton (line 586) | void Touch_RemoveButton( const char *name, qboolean privileged )
  function IN_TouchRemoveButton_f (line 591) | static void IN_TouchRemoveButton_f( void )
  function Touch_ClearList (line 602) | static void Touch_ClearList( touchbuttonlist_t *list )
  function Touch_RemoveAll_f (line 613) | static void Touch_RemoveAll_f( void )
  function Touch_SetColor (line 620) | static void Touch_SetColor( touchbuttonlist_t *list, const char *name, b...
  function Touch_SetTexture (line 628) | static void Touch_SetTexture( touchbuttonlist_t *list, const char *name,...
  function Touch_SetCommand (line 639) | static void Touch_SetCommand( touch_button_t *button, const char *command )
  function Touch_HideButtons (line 657) | void Touch_HideButtons( const char *name, byte hide, qboolean privileged )
  function Touch_ToggleSelection_f (line 670) | static void Touch_ToggleSelection_f( void )
  function Touch_Hide_f (line 676) | static void Touch_Hide_f( void )
  function Touch_Show_f (line 687) | static void Touch_Show_f( void )
  function Touch_FadeButtons (line 698) | static void Touch_FadeButtons( touchbuttonlist_t *list, const char *name...
  function Touch_Fade_f (line 711) | static void Touch_Fade_f( void )
  function Touch_SetColor_f (line 729) | static void Touch_SetColor_f( void )
  function Touch_SetTexture_f (line 739) | static void Touch_SetTexture_f( void )
  function Touch_SetFlags_f (line 746) | static void Touch_SetFlags_f( void )
  function Touch_SetCommand_f (line 761) | static void Touch_SetCommand_f( void )
  function Touch_ReloadConfig_f (line 777) | static void Touch_ReloadConfig_f( void )
  function touch_button_t (line 801) | static touch_button_t *Touch_AddButton( touchbuttonlist_t *list, const c...
  function Touch_AddClientButton (line 835) | void Touch_AddClientButton( const char *name, const char *texture, const...
  function Touch_LoadDefaults_f (line 853) | static void Touch_LoadDefaults_f( void )
  function Touch_AddDefaultButton (line 884) | void Touch_AddDefaultButton( const char *name, const char *texture, cons...
  function Touch_ResetDefaultButtons (line 908) | void Touch_ResetDefaultButtons( void )
  function Touch_AddButton_f (line 919) | static void Touch_AddButton_f( void )
  function Touch_EnableEdit_f (line 982) | static void Touch_EnableEdit_f( void )
  function Touch_DisableEdit_f (line 1024) | static void Touch_DisableEdit_f( void )
  function Touch_DeleteProfile_f (line 1040) | static void Touch_DeleteProfile_f( void )
  function Touch_InitEditor (line 1052) | static void Touch_InitEditor( void )
  function Touch_Init (line 1083) | void Touch_Init( void )
  function Touch_InitConfig (line 1190) | static void Touch_InitConfig( void )
  function qboolean (line 1219) | static qboolean Touch_IsVisible( touch_button_t *button )
  function Touch_DrawTexture (line 1244) | static void Touch_DrawTexture( float x1, float y1, float x2, float y2, i...
  function IN_TouchCheckCoords (line 1262) | static void IN_TouchCheckCoords( float *x1, float *y1, float *x2, float ...
  function Touch_DrawCharacter (line 1304) | static float Touch_DrawCharacter( float x, float y, int number, float si...
  function Touch_DrawText (line 1336) | static float Touch_DrawText( float x1, float y1, float x2, float y2, con...
  function Touch_DrawButtons (line 1373) | static void Touch_DrawButtons( touchbuttonlist_t *list )
  function Touch_Draw (line 1483) | void Touch_Draw( void )
  function IN_TouchEditClear (line 1585) | static void IN_TouchEditClear( void )
  function Touch_EditMove (line 1600) | static void Touch_EditMove( touchEventType type, int fingerID, float x, ...
  function Touch_Motion (line 1653) | static void Touch_Motion( int fingerID, float x, float y, float dx, floa...
  function qboolean (line 1760) | static qboolean Touch_ButtonPress( touchbuttonlist_t *list, touchEventTy...
  function qboolean (line 1983) | static qboolean Touch_ButtonEdit( touchEventType type, int fingerID, flo...
  function Touch_ControlsEvent (line 2051) | static int Touch_ControlsEvent( touchEventType type, int fingerID, float...
  function IN_TouchEvent (line 2068) | int IN_TouchEvent( touchEventType type, int fingerID, float x, float y, ...
  function Touch_GetMove (line 2169) | void Touch_GetMove( float *forward, float *side, float *yaw, float *pitch )
  function Touch_KeyEvent (line 2178) | void Touch_KeyEvent( int key, int down )
  function qboolean (line 2225) | qboolean Touch_WantVisibleCursor( void )
  function Touch_Shutdown (line 2230) | void Touch_Shutdown( void )

FILE: engine/client/input.c
  type inputstate_s (line 36) | struct inputstate_s
  function uint (line 60) | uint IN_CollectInputDevices( void )
  function IN_LockInputDevices (line 90) | void IN_LockInputDevices( qboolean lock )
  function IN_StartupMouse (line 114) | static void IN_StartupMouse( void )
  function IN_MouseSavePos (line 138) | void IN_MouseSavePos( void )
  function IN_MouseRestorePos (line 154) | void IN_MouseRestorePos( void )
  function IN_ToggleClientMouse (line 171) | void IN_ToggleClientMouse( int newstate, int oldstate )
  function IN_SetRelativeMouseMode (line 209) | void IN_SetRelativeMouseMode( qboolean set )
  function IN_SetMouseGrab (line 245) | void IN_SetMouseGrab( qboolean set )
  function IN_CheckMouseState (line 268) | static void IN_CheckMouseState( qboolean active )
  function IN_ActivateMouse (line 299) | void IN_ActivateMouse( void )
  function IN_DeactivateMouse (line 317) | void IN_DeactivateMouse( void )
  function IN_MouseMove (line 335) | static void IN_MouseMove( void )
  function IN_MouseEvent (line 363) | void IN_MouseEvent( int key, int down )
  function IN_MWheelEvent (line 402) | void IN_MWheelEvent( int y )
  function IN_Shutdown (line 417) | void IN_Shutdown( void )
  function IN_Init (line 434) | void IN_Init( void )
  function IN_JoyAppendMove (line 471) | static void IN_JoyAppendMove( usercmd_t *cmd, float forwardmove, float s...
  function IN_CollectInput (line 545) | static void IN_CollectInput( float *forward, float *side, float *pitch, ...
  function IN_EngineAppendMove (line 579) | void IN_EngineAppendMove( float frametime, usercmd_t *cmd, qboolean acti...
  function IN_Commands (line 609) | static void IN_Commands( void )
  function Host_InputFrame (line 641) | void Host_InputFrame( void )

FILE: engine/client/input.h
  type touchEventType (line 57) | typedef enum
  type engineAxis_t (line 98) | typedef enum engineAxis_e
  type joy_calibration_state_t (line 109) | typedef enum joy_calibration_state_s

FILE: engine/client/keys.c
  type enginekey_t (line 22) | typedef struct
  type keyname_t (line 30) | typedef struct keyname_s
  function Key_IsDown (line 154) | int GAME_EXPORT Key_IsDown( int keynum )
  function Key_StringToKeynum (line 174) | static int Key_StringToKeynum( const char *str )
  function Key_SetBinding (line 250) | void GAME_EXPORT Key_SetBinding( int keynum, const char *binding )
  function Key_GetKey (line 282) | static int Key_GetKey( const char *pBinding )
  function Key_Unbind_f (line 324) | static void Key_Unbind_f( void )
  function Key_Unbindall_f (line 356) | static void Key_Unbindall_f( void )
  function Key_Reset_f (line 376) | static void Key_Reset_f( void )
  function Key_Bind_f (line 397) | static void Key_Bind_f( void )
  function Key_WriteBindings (line 445) | void Key_WriteBindings( file_t *f )
  function Key_Bindlist_f (line 470) | static void Key_Bindlist_f( void )
  function Key_Init (line 495) | void Key_Init( void )
  function Key_AddKeyCommands (line 521) | static void Key_AddKeyCommands( int key, const char *kb, qboolean down )
  function qboolean (line 567) | static qboolean Key_IsAllowedAutoRepeat( int key )
  function Key_Rotate (line 586) | static int Key_Rotate( int key )
  function Key_Event (line 635) | void GAME_EXPORT Key_Event( int key, int down )
  function Key_EnableTextInput (line 789) | void Key_EnableTextInput( qboolean enable, qboolean force )
  function Key_SetKeyDest (line 809) | void GAME_EXPORT Key_SetKeyDest( int key_dest )
  function Key_ClearStates (line 844) | Key_ClearStates( void )
  function CL_CharEvent (line 875) | void CL_CharEvent( int key )
  function Key_ToUpper (line 904) | int Key_ToUpper( int keynum )
  type osk_s (line 976) | struct osk_s
  function qboolean (line 989) | static qboolean OSK_KeyEvent( int key, int down )
  function OSK_EnableTextInput (line 1105) | static void OSK_EnableTextInput( qboolean enable, qboolean force )
  function OSK_DrawSymbolButton (line 1130) | static void OSK_DrawSymbolButton( int symb, float x, float y, float widt...
  function OSK_DrawSpecialButton (line 1158) | static void OSK_DrawSpecialButton( const char *name, float x, float y, f...
  function OSK_Draw (line 1177) | void OSK_Draw( void )

FILE: engine/client/mod_dbghulls.c
  function _inline (line 44) | _inline void list_add__( hullnode_t *new, hullnode_t *prev, hullnode_t *...
  function _inline (line 53) | _inline void list_add( hullnode_t *newobj, hullnode_t *head )
  function _inline (line 59) | _inline void list_add_tail( hullnode_t *newobj, hullnode_t *head )
  function _inline (line 64) | _inline void list_del( hullnode_t *entry )
  function winding_t (line 70) | static winding_t * winding_alloc( uint numpoints )
  function free_winding (line 75) | static void free_winding( winding_t *w )
  function winding_t (line 84) | static winding_t *winding_copy( winding_t *w )
  function winding_reverse (line 94) | static void winding_reverse( winding_t *w )
  function winding_t (line 113) | static winding_t *winding_shrink( winding_t *w )
  function winding_t (line 127) | static winding_t *winding_for_plane( const mplane_t *p )
  function CalcSides (line 195) | static void CalcSides( const winding_t *in, const mplane_t *split, int *...
  function PushToPlaneAxis (line 242) | static void PushToPlaneAxis( vec_t *v, const mplane_t *p )
  function winding_t (line 259) | static winding_t *winding_clip( winding_t *in, const mplane_t *split, qb...
  function winding_split (line 363) | static void winding_split( winding_t *in, const mplane_t *split, winding...
  function push_node (line 477) | static void push_node( int nodenum, int side )
  function pop_node (line 487) | static void pop_node( void )
  function free_hull_polys (line 494) | static void free_hull_polys( hullnode_t *hull_polys )
  function do_hull_recursion (line 507) | static void do_hull_recursion( hull_t *hull, int nodenum, int side, hull...
  function hull_windings_r (line 556) | static void hull_windings_r( hull_t *hull, int nodenum, hullnode_t *poly...
  function remove_paired_polys (line 648) | static void remove_paired_polys( hull_model_t *model )
  function make_hull_windings (line 663) | static void make_hull_windings( hull_t *hull, hull_model_t *model )
  function Mod_InitDebugHulls (line 680) | static void Mod_InitDebugHulls( model_t *loadmodel )
  function Mod_CreatePolygonsForHull (line 696) | static void Mod_CreatePolygonsForHull( int hullnum )
  function R_DrawHull (line 725) | static void R_DrawHull( hull_model_t *hull )
  function R_DrawWorldHull (line 745) | void R_DrawWorldHull( void )
  function R_DrawModelHull (line 761) | void R_DrawModelHull( model_t *mod )
  function Mod_ReleaseHullPolygons (line 778) | void Mod_ReleaseHullPolygons( void )

FILE: engine/client/ref_common.c
  type ref_state_s (line 8) | struct ref_state_s
  function qboolean (line 48) | static qboolean CheckSkybox( const char *name, char out[SKYBOX_MAX_SIDES...
  function R_SetupSky (line 83) | void R_SetupSky( const char *name )
  function GL_FreeImage (line 144) | void GAME_EXPORT GL_FreeImage( const char *name )
  function GL_RenderFrame (line 155) | void GL_RenderFrame( const ref_viewpass_t *rvp )
  function pfnEngineGetParm (line 163) | static intptr_t pfnEngineGetParm( int parm, int arg )
  function cvar_t (line 168) | static cvar_t *pfnCvar_Get( const char *szName, const char *szValue, int...
  function pfnCvar_RegisterVariable (line 173) | static void pfnCvar_RegisterVariable( convar_t *var )
  function pfnCvar_FullSet (line 179) | static void pfnCvar_FullSet( const char *var_name, const char *value, in...
  function Cmd_AddRefCommand (line 184) | static int Cmd_AddRefCommand( const char *cmd_name, xcommand_t function,...
  function pfnStudioEvent (line 189) | static void pfnStudioEvent( const mstudioevent_t *event, const cl_entity...
  function model_t (line 194) | static model_t *pfnGetDefaultSprite( enum ref_defaultsprite_e spr )
  function CL_ExtraUpdate (line 218) | static void CL_ExtraUpdate( void )
  function pfnCL_GetScreenInfo (line 224) | static void pfnCL_GetScreenInfo( int *width, int *height ) // clgame.scr...
  function pfnSetLocalLightLevel (line 230) | static void pfnSetLocalLightLevel( int level )
  function player_info_t (line 241) | static player_info_t *pfnPlayerInfo( int index )
  function entity_state_t (line 258) | static entity_state_t *R_StudioGetPlayerState( int index )
  function pfnGetStudioModelInterface (line 266) | static int pfnGetStudioModelInterface( int version, struct r_studio_inte...
  function bpc_desc_t (line 273) | static const bpc_desc_t *pfnImage_GetPFDesc( int idx )
  function pfnDrawNormalTriangles (line 278) | static void pfnDrawNormalTriangles( void )
  function pfnDrawTransparentTriangles (line 283) | static void pfnDrawTransparentTriangles( void )
  function screenfade_t (line 288) | static screenfade_t *pfnRefGetScreenFade( void )
  function qboolean (line 293) | static qboolean R_Init_Video_( const int type )
  function mleaf_t (line 303) | static mleaf_t *pfnMod_PointInLeaf( const vec3_t p, mnode_t *node )
  function R_UnloadProgs (line 444) | static void R_UnloadProgs( void )
  function CL_FillTriAPIFromRef (line 463) | static void CL_FillTriAPIFromRef( triangleapi_t *dst, const ref_interfac...
  function qboolean (line 487) | static qboolean R_LoadProgs( const char *name )
  function R_Shutdown (line 536) | void R_Shutdown( void )
  function R_GetRendererName (line 556) | static void R_GetRendererName( char *dest, size_t size, const char *opt )
  function qboolean (line 581) | static qboolean R_LoadRenderer( const char *refopt, qboolean quiet )
  function SetWidthAndHeightFromCommandLine (line 603) | static void SetWidthAndHeightFromCommandLine( void )
  function SetFullscreenModeFromCommandLine (line 619) | static void SetFullscreenModeFromCommandLine( void )
  function R_CollectRendererNames (line 629) | static void R_CollectRendererNames( void )
  function ref_device_t (line 688) | const ref_device_t *R_GetRenderDevice( unsigned int idx )
  function R_GetRenderDevices_f (line 719) | static void R_GetRenderDevices_f( void )
  function qboolean (line 747) | qboolean R_Init( void )

FILE: engine/client/ref_common.h
  type ref_state_s (line 23) | struct ref_state_s
  type ref_state_s (line 35) | struct ref_state_s
  function R_GetTextureParms (line 44) | static inline void R_GetTextureParms( int *w, int *h, int texnum )
  type ref_viewpass_s (line 50) | struct ref_viewpass_s

FILE: engine/client/s_dsp.c
  type sx_preset_t (line 38) | typedef struct sx_preset_s
  type dly_t (line 55) | typedef struct dly_s
  function SX_ReloadRoomFX (line 206) | static void SX_ReloadRoomFX( void )
  function SX_Init (line 221) | void SX_Init( void )
  function DLY_Free (line 267) | static void DLY_Free( int idelay )
  function SX_Free (line 285) | void SX_Free( void )
  function DLY_Init (line 303) | static int DLY_Init( int idelay, float delay )
  function DLY_MovePointer (line 339) | static void DLY_MovePointer( dly_t *dly )
  function DLY_CheckNewStereoDelayVal (line 355) | static void DLY_CheckNewStereoDelayVal( void )
  function DLY_DoStereoDelay (line 403) | static void DLY_DoStereoDelay( int count )
  function DLY_CheckNewDelayVal (line 468) | static void DLY_CheckNewDelayVal( void )
  function DLY_DoDelay (line 514) | static void DLY_DoDelay( int count )
  function RVB_SetUpDly (line 565) | static void RVB_SetUpDly( int pos, float delay, int kmod )
  function RVB_CheckNewReverbVal (line 601) | static void RVB_CheckNewReverbVal( void )
  function RVB_DoReverbForOneDly (line 632) | static int RVB_DoReverbForOneDly( dly_t *dly, const int vlr, const porta...
  function RVB_DoReverb (line 706) | static void RVB_DoReverb( int count )
  function RVB_DoAMod (line 739) | static void RVB_DoAMod( int count )
  function DSP_Process (line 812) | void DSP_Process( portable_samplepair_t *pbfront, int sampleCount )
  function DSP_ClearState (line 833) | void DSP_ClearState( void )
  function CheckNewDspPresets (line 846) | void CheckNewDspPresets( void )
  function SX_Profiling_f (line 916) | static void SX_Profiling_f( void )

FILE: engine/client/s_load.c
  function S_SoundList_f (line 38) | void S_SoundList_f( void )
  function qboolean (line 74) | qboolean S_TestSoundChar( const char *pch, char c )
  function wavdata_t (line 108) | static wavdata_t *S_CreateDefaultSound( void )
  function wavdata_t (line 131) | wavdata_t *S_LoadSound( sfx_t *sfx )
  function sfx_t (line 179) | sfx_t *S_FindName( const char *pname, int *pfInCache )
  function S_FreeSound (line 241) | void S_FreeSound( sfx_t *sfx )
  function S_BeginRegistration (line 276) | void S_BeginRegistration( void )
  function S_EndRegistration (line 301) | void S_EndRegistration( void )
  function sound_t (line 335) | sound_t S_RegisterSound( const char *name )
  function sfx_t (line 361) | sfx_t *S_GetSfxByHandle( sound_t handle )
  function S_InitSounds (line 381) | void S_InitSounds( void )
  function S_FreeSounds (line 397) | void S_FreeSounds( void )

FILE: engine/client/s_main.c
  function S_GetMasterVolume (line 61) | float S_GetMasterVolume( void )
  function S_FadeClientVolume (line 84) | void S_FadeClientVolume( float fadePercent, float fadeOutSeconds, float ...
  function qboolean (line 98) | static qboolean S_IsClient( int entnum )
  function S_FreeChannel (line 113) | void S_FreeChannel( channel_t *ch )
  function S_UpdateSoundFade (line 131) | static void S_UpdateSoundFade( void )
  function qboolean (line 191) | static qboolean SND_FStreamIsPlaying( sfx_t *sfx )
  function SND_GetChannelTimeLeft (line 211) | static int SND_GetChannelTimeLeft( const channel_t *ch )
  function channel_t (line 272) | channel_t *SND_PickDynamicChannel( int entnum, int channel, sfx_t *sfx, ...
  function channel_t (line 358) | channel_t *SND_PickStaticChannel( const vec3_t pos, sfx_t *sfx )
  function S_AlterChannel (line 406) | static int S_AlterChannel( int entnum, int channel, sfx_t *sfx, int vol,...
  function S_SpatializeChannel (line 464) | static void S_SpatializeChannel( int *left_vol, int *right_vol, int mast...
  function SND_Spatialize (line 487) | static void SND_Spatialize( channel_t *ch )
  function S_StartSound (line 554) | void S_StartSound( const vec3_t pos, int ent, int chan, sound_t handle, ...
  function S_RestoreSound (line 667) | void S_RestoreSound( const vec3_t pos, int ent, int chan, sound_t handle...
  function S_AmbientSound (line 780) | void S_AmbientSound( const vec3_t pos, int ent, sound_t handle, float fv...
  function S_StartLocalSound (line 858) | void S_StartLocalSound(  const char *name, float volume, qboolean reliab...
  function S_GetCurrentStaticSounds (line 878) | int S_GetCurrentStaticSounds( soundlist_t *pout, int size )
  function S_GetCurrentDynamicSounds (line 919) | int S_GetCurrentDynamicSounds( soundlist_t *pout, int size )
  function S_InitAmbientChannels (line 963) | static void S_InitAmbientChannels( void )
  function S_UpdateAmbientSounds (line 985) | static void S_UpdateAmbientSounds( void )
  function rawchan_t (line 1050) | rawchan_t *S_FindRawChannel( int entnum, qboolean create )
  function uint (line 1114) | uint S_RawSamplesStereo( portable_samplepair_t *rawsamples, uint rawend,...
  function S_RawEntSamples (line 1180) | void S_RawEntSamples( int entnum, uint samples, uint rate, word width, w...
  function S_FreeIdleRawChannels (line 1203) | static void S_FreeIdleRawChannels( void )
  function S_ClearRawChannels (line 1237) | static void S_ClearRawChannels( void )
  function S_SpatializeRawChannels (line 1256) | static void S_SpatializeRawChannels( void )
  function S_FreeRawChannels (line 1309) | static void S_FreeRawChannels( void )
  function S_ClearBuffer (line 1330) | static void S_ClearBuffer( void )
  function S_StopSound (line 1348) | void GAME_EXPORT S_StopSound( int entnum, int channel, const char *sound...
  function S_StopAllSounds (line 1362) | void S_StopAllSounds( qboolean ambient )
  function S_GetSoundtime (line 1398) | static int S_GetSoundtime( void )
  function S_UpdateChannels (line 1429) | static void S_UpdateChannels( void )
  function S_ExtraUpdate (line 1469) | void S_ExtraUpdate( void )
  function S_UpdateFrame (line 1482) | void S_UpdateFrame( struct ref_viewpass_s *rvp )
  function SND_UpdateSound (line 1499) | void SND_UpdateSound( void )
  function S_Play_f (line 1616) | static void S_Play_f( void )
  function S_Play2_f (line 1627) | static void S_Play2_f( void )
  function S_PlayVol_f (line 1644) | static void S_PlayVol_f( void )
  function S_Say (line 1655) | static void S_Say( const char *name, qboolean reliable )
  function S_Say_f (line 1670) | static void S_Say_f( void )
  function S_SayReliable_f (line 1681) | static void S_SayReliable_f( void )
  function S_Music_f (line 1697) | static void S_Music_f( void )
  function S_StopSound_f (line 1761) | static void S_StopSound_f( void )
  function S_SoundFade_f (line 1771) | static void S_SoundFade_f( void )
  function S_SoundInfo_f (line 1788) | void S_SoundInfo_f( void )
  function S_VoiceRecordStart_f (line 1805) | static void S_VoiceRecordStart_f( void )
  function S_VoiceRecordStop_f (line 1818) | static void S_VoiceRecordStop_f( void )
  function qboolean (line 1832) | qboolean S_Init( void )
  function S_Shutdown (line 1895) | void S_Shutdown( void )

FILE: engine/client/s_mix.c
  type paintbuffer_t (line 55) | typedef struct
  function S_InitScaletable (line 72) | void S_InitScaletable( void )
  function S_TransferPaintBuffer (line 89) | static void S_TransferPaintBuffer( int endtime )
  function MIX_ActivatePaintbuffer (line 142) | static void MIX_ActivatePaintbuffer( int ipaintbuffer )
  function MIX_SetCurrentPaintbuffer (line 148) | static void MIX_SetCurrentPaintbuffer( int ipaintbuffer )
  function MIX_GetCurrentPaintbufferIndex (line 155) | static int MIX_GetCurrentPaintbufferIndex( void )
  function paintbuffer_t (line 167) | static paintbuffer_t *MIX_GetCurrentPaintbufferPtr( void )
  function MIX_DeactivateAllPaintbuffers (line 176) | static void MIX_DeactivateAllPaintbuffers( void )
  function MIX_ResetPaintbufferFilterCounters (line 185) | static void MIX_ResetPaintbufferFilterCounters( void )
  function portable_samplepair_t (line 194) | static portable_samplepair_t *MIX_GetPFrontFromIPaint( int ipaintbuffer )
  function paintbuffer_t (line 200) | static paintbuffer_t *MIX_GetPPaintFromIPaint( int ipaint )
  function MIX_FreeAllPaintbuffers (line 206) | void MIX_FreeAllPaintbuffers( void )
  function MIX_InitAllPaintbuffers (line 213) | void MIX_InitAllPaintbuffers( void )
  function S_PaintMonoFrom8 (line 233) | static void S_PaintMonoFrom8( portable_samplepair_t *pbuf, int *volume, ...
  function S_PaintStereoFrom8 (line 249) | static void S_PaintStereoFrom8( portable_samplepair_t *pbuf, int *volume...
  function S_PaintMonoFrom16 (line 269) | static void S_PaintMonoFrom16( portable_samplepair_t *pbuf, int *volume,...
  function S_PaintStereoFrom16 (line 284) | static void S_PaintStereoFrom16( portable_samplepair_t *pbuf, int *volum...
  function S_Mix8MonoTimeCompress (line 305) | static void S_Mix8MonoTimeCompress( portable_samplepair_t *pbuf, int *vo...
  function S_Mix8Mono (line 309) | static void S_Mix8Mono( portable_samplepair_t *pbuf, int *volume, byte *...
  function S_Mix8Stereo (line 341) | static void S_Mix8Stereo( portable_samplepair_t *pbuf, int *volume, byte...
  function S_Mix16Mono (line 367) | static void S_Mix16Mono( portable_samplepair_t *pbuf, int *volume, short...
  function S_Mix16Stereo (line 389) | static void S_Mix16Stereo( portable_samplepair_t *pbuf, int *volume, sho...
  function S_MixChannel (line 411) | static void S_MixChannel( channel_t *pChannel, void *pData, int outputOf...
  function S_MixDataToDevice (line 438) | int S_MixDataToDevice( channel_t *pChannel, int sampleCount, int outRate...
  function qboolean (line 528) | static qboolean S_ShouldContinueMixing( channel_t *ch )
  function MIX_MixChannelsToPaintbuffer (line 549) | static void MIX_MixChannelsToPaintbuffer( int endtime, int rate, int out...
  function portable_samplepair_t (line 663) | static portable_samplepair_t *S_GetNextpFilter( int i, portable_samplepa...
  function S_Interpolate2xCubic (line 681) | static void S_Interpolate2xCubic( portable_samplepair_t *pbuffer, portab...
  function S_Interpolate2xLinear (line 773) | static void S_Interpolate2xLinear( portable_samplepair_t *pbuffer, porta...
  function S_MixBufferUpsample2x (line 802) | static void S_MixBufferUpsample2x( int count, portable_samplepair_t *pbu...
  function MIX_ClearAllPaintBuffers (line 829) | void MIX_ClearAllPaintBuffers( int SampleCount, qboolean clearFilters )
  function MIX_MixPaintbuffers (line 855) | static void MIX_MixPaintbuffers( int ibuf1, int ibuf2, int ibuf3, int co...
  function MIX_CompressPaintbuffer (line 896) | static void MIX_CompressPaintbuffer( int ipaint, int count )
  function S_MixUpsample (line 912) | static void S_MixUpsample( int sampleCount, int filtertype )
  function MIX_MixRawSamplesBuffer (line 925) | static void MIX_MixRawSamplesBuffer( int end )
  function MIX_UpsampleAllPaintbuffers (line 985) | static void MIX_UpsampleAllPaintbuffers( int end, int count )
  function MIX_PaintChannels (line 1034) | void MIX_PaintChannels( int endtime )

FILE: engine/client/s_mouth.c
  function SND_InitMouth (line 23) | void SND_InitMouth( int entnum, int entchannel )
  function SND_CloseMouth (line 31) | void SND_CloseMouth( channel_t *ch )
  function SND_MoveMouth8 (line 39) | void SND_MoveMouth8( channel_t *ch, wavdata_t *pSource, int count )
  function SND_MoveMouth16 (line 87) | void SND_MoveMouth16( channel_t *ch, wavdata_t *pSource, int count )
  function SND_ForceInitMouth (line 136) | void SND_ForceInitMouth( int entnum )
  function SND_ForceCloseMouth (line 150) | void SND_ForceCloseMouth( int entnum )
  function SND_MoveMouthRaw (line 160) | void SND_MoveMouthRaw( rawchan_t *ch, portable_samplepair_t *pData, int ...

FILE: engine/client/s_stream.c
  function S_PrintBackgroundTrackState (line 29) | void S_PrintBackgroundTrackState( void )
  function S_FadeMusicVolume (line 47) | void S_FadeMusicVolume( float fadePercent )
  function S_GetMusicVolume (line 57) | float S_GetMusicVolume( void )
  function S_StartBackgroundTrack (line 81) | void S_StartBackgroundTrack( const char *introTrack, const char *mainTra...
  function S_StopBackgroundTrack (line 123) | void S_StopBackgroundTrack( void )
  function S_StreamSetPause (line 140) | void S_StreamSetPause( int pause )
  function qboolean (line 152) | qboolean S_StreamGetCurrentState( char *currentTrack, size_t currentTrac...
  function S_StreamBackgroundTrack (line 182) | void S_StreamBackgroundTrack( void )
  function S_StartStreaming (line 274) | void S_StartStreaming( void )
  function S_StopStreaming (line 286) | void S_StopStreaming( void )

FILE: engine/client/s_utils.c
  function S_ConvertLoopedPosition (line 24) | int S_ConvertLoopedPosition( wavdata_t *pSource, int samplePosition, qbo...
  function S_GetOutputData (line 49) | int S_GetOutputData( wavdata_t *pSource, void **pData, int samplePositio...

FILE: engine/client/s_vox.c
  function qboolean (line 31) | static qboolean S_ShouldTrimSample8( const int8_t *buf, int channels )
  function qboolean (line 42) | static qboolean S_ShouldTrimSample16( const int16_t *buf, int channels )
  function S_TrimStart (line 53) | static int S_TrimStart( const wavdata_t *wav, int start )
  function S_TrimEnd (line 90) | static int S_TrimEnd( const wavdata_t *wav, int end )
  function S_TrimStartEndTimes (line 127) | static void S_TrimStartEndTimes( channel_t *ch, wavdata_t *wav, int star...
  function VOX_MixDataToDevice (line 142) | int VOX_MixDataToDevice( channel_t *pchan, int sampleCount, int outputRa...
  function VOX_LoadWord (line 174) | void VOX_LoadWord( channel_t *ch )
  function VOX_FreeWord (line 200) | void VOX_FreeWord( channel_t *ch )
  function VOX_SetChanVol (line 215) | void VOX_SetChanVol( channel_t *ch )
  function VOX_ModifyPitch (line 230) | float VOX_ModifyPitch( channel_t *ch, float pitch )
  function VOX_ParseString (line 323) | static int VOX_ParseString( char *psz, char *rgpparseword[CVOXWORDMAX] )
  function qboolean (line 377) | static qboolean VOX_ParseWordParams( char *psz, voxword_t *pvoxword, qbo...
  function VOX_LoadSound (line 459) | void VOX_LoadSound( channel_t *ch, const char *pszin )
  function VOX_ReadSentenceFile_ (line 521) | static void VOX_ReadSentenceFile_( byte *buf, fs_offset_t size )
  function VOX_ReadSentenceFile (line 568) | static void VOX_ReadSentenceFile( const char *path )
  function VOX_Init (line 583) | void VOX_Init( void )
  function VOX_Shutdown (line 588) | void VOX_Shutdown( void )
  function Test_VOX_GetDirectory (line 601) | static void Test_VOX_GetDirectory( void )
  function Test_VOX_LookupString (line 622) | static void Test_VOX_LookupString( void )
  function Test_VOX_ParseString (line 656) | static void Test_VOX_ParseString( void )
  function Test_VOX_ParseWordParams (line 690) | static void Test_VOX_ParseWordParams( void )
  function Test_RunVOX (line 716) | void Test_RunVOX( void )

FILE: engine/client/sound.h
  type portable_samplepair_t (line 48) | typedef struct
  type sfx_t (line 54) | typedef struct sfx_s
  type soundfade_t (line 65) | typedef struct
  type musicfade_t (line 75) | typedef struct
  type snd_format_t (line 80) | typedef struct snd_format_s
  type dma_t (line 87) | typedef struct
  type mixer_t (line 99) | typedef struct
  type rawchan_t (line 107) | typedef struct rawchan_s
  type channel_t (line 121) | typedef struct channel_s
  type listener_t (line 148) | typedef struct
  type bg_track_t (line 165) | typedef struct
  type sound_t (line 173) | typedef int sound_t;
  type ref_viewpass_s (line 240) | struct ref_viewpass_s
  type ref_viewpass_s (line 250) | struct ref_viewpass_s

FILE: engine/client/soundlib/libmpg/dct36.c
  function dct36 (line 80) | void dct36( float *inbuf, float *o1, float *o2, float *wintab, float *ts...
  function dct12 (line 217) | void dct12( float *in, float *rawout1, float *rawout2, register float *w...

FILE: engine/client/soundlib/libmpg/dct64.c
  function dct64 (line 19) | void dct64( float *out0, float *out1, float *samples )

FILE: engine/client/soundlib/libmpg/fmt123.h
  type mpg123_enc_enum (line 22) | enum mpg123_enc_enum

FILE: engine/client/soundlib/libmpg/format.c
  type mpg123_channelcount (line 18) | enum mpg123_channelcount
  function good_enc (line 46) | static int good_enc( const int enc )
  function mpg123_rates (line 59) | static void mpg123_rates( const long **list, size_t *number )
  function mpg123_encodings (line 66) | static void mpg123_encodings( const int **list, size_t *number )
  function mpg123_encsize (line 72) | static int mpg123_encsize( int encoding )
  function rate2num (line 77) | static int rate2num( long r )
  function enc2num (line 90) | static int enc2num( int encoding )
  function cap_fit (line 103) | static int cap_fit( mpg123_handle_t *fr, audioformat_t *nf, int f0, int f2)
  function freq_fit (line 124) | static int freq_fit( mpg123_handle_t *fr, audioformat_t *nf, int f0, int...
  function frame_output_format (line 147) | int frame_output_format( mpg123_handle_t *fr )
  function mpg123_fmt_none (line 230) | static int mpg123_fmt_none( mpg123_parm_t *mp )
  function mpg123_fmt_all (line 239) | int mpg123_fmt_all( mpg123_parm_t *mp )
  function mpg123_fmt (line 258) | static int mpg123_fmt( mpg123_parm_t *mp, long rate, int channels, int e...
  function mpg123_fmt_support (line 293) | static int mpg123_fmt_support( mpg123_parm_t *mp, long rate, int encoding )
  function mpg123_format_none (line 313) | int mpg123_format_none( mpg123_handle_t *mh )
  function mpg123_format_all (line 331) | int mpg123_format_all( mpg123_handle_t *mh )
  function mpg123_format (line 349) | int mpg123_format( mpg123_handle_t *mh, long rate, int channels, int enc...
  function mpg123_format_support (line 367) | static int mpg123_format_support( mpg123_handle_t *mh, long rate, int en...
  function invalidate_format (line 376) | void invalidate_format( audioformat_t *af )
  function mpg_off_t (line 384) | mpg_off_t decoder_synth_bytes( mpg123_handle_t *fr, mpg_off_t s )
  function mpg_off_t (line 391) | mpg_off_t samples_to_bytes( mpg123_handle_t *fr, mpg_off_t s )
  function mpg_off_t (line 396) | mpg_off_t bytes_to_samples( mpg123_handle_t *fr, mpg_off_t b )
  function mpg_off_t (line 402) | mpg_off_t outblock_bytes( mpg123_handle_t *fr, mpg_off_t s )
  function conv_s16_to_u16 (line 408) | static void conv_s16_to_u16( outbuffer_t *buf )
  function postprocess_buffer (line 422) | void postprocess_buffer( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/frame.c
  function frame_default_parm (line 34) | static void frame_default_parm( mpg123_parm_t *mp )
  function frame_fixed_reset (line 58) | static void frame_fixed_reset( mpg123_handle_t *fr )
  function frame_index_setup (line 105) | int frame_index_setup( mpg123_handle_t *fr )
  function frame_init_par (line 128) | void frame_init_par( mpg123_handle_t *fr, mpg123_parm_t *mp )
  function frame_decode_buffers_reset (line 173) | static void frame_decode_buffers_reset( mpg123_handle_t *fr )
  function frame_buffers (line 179) | int frame_buffers( mpg123_handle_t *fr )
  function frame_buffers_reset (line 262) | int frame_buffers_reset( mpg123_handle_t *fr )
  function frame_init (line 280) | void frame_init( mpg123_handle_t *fr )
  function frame_outbuffer (line 285) | int frame_outbuffer( mpg123_handle_t *fr )
  function frame_free_toc (line 324) | static void frame_free_toc( mpg123_handle_t *fr )
  function frame_fill_toc (line 334) | int frame_fill_toc( mpg123_handle_t *fr, byte *in )
  function frame_reset (line 350) | int frame_reset( mpg123_handle_t *fr )
  function frame_free_buffers (line 360) | static void frame_free_buffers( mpg123_handle_t *fr )
  function frame_exit (line 376) | void frame_exit( mpg123_handle_t *fr )
  function mpg123_framedata (line 396) | static int mpg123_framedata( mpg123_handle_t *mh, ulong *header, byte **...
  function mpg_off_t (line 421) | static mpg_off_t frame_fuzzy_find( mpg123_handle_t *fr, mpg_off_t want_f...
  function mpg_off_t (line 467) | mpg_off_t frame_index_find( mpg123_handle_t *fr, mpg_off_t want_frame, m...
  function mpg_off_t (line 515) | static mpg_off_t frame_ins2outs( mpg123_handle_t *fr, mpg_off_t ins )
  function mpg_off_t (line 530) | mpg_off_t frame_outs( mpg123_handle_t *fr, mpg_off_t num )
  function mpg_off_t (line 547) | mpg_off_t frame_expect_outsamples( mpg123_handle_t *fr )
  function mpg_off_t (line 562) | mpg_off_t frame_offset( mpg123_handle_t *fr, mpg_off_t outs )
  function frame_gapless_init (line 578) | void frame_gapless_init( mpg123_handle_t *fr, mpg_off_t framecount, mpg_...
  function frame_gapless_realinit (line 595) | void frame_gapless_realinit( mpg123_handle_t *fr )
  function frame_gapless_update (line 606) | void frame_gapless_update( mpg123_handle_t *fr, mpg_off_t total_samples )
  function mpg_off_t (line 624) | static mpg_off_t ignoreframe( mpg123_handle_t *fr )
  function frame_set_frameseek (line 643) | void frame_set_frameseek( mpg123_handle_t *fr, mpg_off_t fe )
  function frame_skip (line 683) | void frame_skip( mpg123_handle_t *fr )
  function frame_set_seek (line 691) | void frame_set_seek( mpg123_handle_t *fr, mpg_off_t sp )
  function get_rva (line 698) | static int get_rva( mpg123_handle_t *fr, double *peak, double *gain )
  function do_rva (line 727) | void do_rva( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/frame.h
  type al_table_t (line 22) | typedef struct
  type outbuffer_t (line 29) | typedef struct outbuffer_s
  type audioformat_t (line 38) | typedef struct audioformat_s
  type mpg123_parm_t (line 48) | typedef struct mpg123_parm_s

FILE: engine/client/soundlib/libmpg/getbits.h
  function uint (line 46) | static uint getbits( mpg123_handle_t *fr, int number_of_bits )

FILE: engine/client/soundlib/libmpg/huffman.h
  type newhuff (line 16) | struct newhuff
  type newhuff (line 294) | struct newhuff
  type newhuff (line 331) | struct newhuff

FILE: engine/client/soundlib/libmpg/index.c
  function mpg_off_t (line 20) | static mpg_off_t fi_next( frame_index_t *fi )
  function fi_shrink (line 27) | static void fi_shrink( frame_index_t *fi )
  function fi_init (line 49) | void fi_init( frame_index_t *fi )
  function fi_exit (line 59) | void fi_exit( frame_index_t *fi )
  function fi_resize (line 67) | int fi_resize( frame_index_t *fi, size_t newsize )
  function fi_add (line 100) | void fi_add( frame_index_t *fi, mpg_off_t pos )
  function fi_set (line 127) | int fi_set( frame_index_t *fi, mpg_off_t *offsets, mpg_off_t step, size_...
  function fi_reset (line 150) | void fi_reset( frame_index_t *fi )

FILE: engine/client/soundlib/libmpg/index.h
  type frame_index_t (line 19) | typedef struct frame_index_s

FILE: engine/client/soundlib/libmpg/layer3.c
  type gr_info_t (line 51) | typedef struct gr_info_s
  type III_sideinfo (line 75) | typedef struct
  type bandInfoStruct (line 87) | typedef struct
  function init_layer3 (line 161) | void init_layer3( void )
  function init_layer3_stuff (line 377) | void init_layer3_stuff( mpg123_handle_t *fr )
  function III_get_side_info (line 405) | static int III_get_side_info( mpg123_handle_t *fr, III_sideinfo *si, int...
  function III_get_scale_factors_1 (line 552) | static int III_get_scale_factors_1( mpg123_handle_t *fr, int *scf, gr_in...
  function III_get_scale_factors_2 (line 652) | static int III_get_scale_factors_2( mpg123_handle_t *fr, int *scf, gr_in...
  function III_dequantize_sample (line 745) | static int III_dequantize_sample( mpg123_handle_t *fr, float xr[SBLIMIT]...
  function III_i_stereo (line 1206) | static void III_i_stereo( float xr_buf[2][SBLIMIT][SSLIMIT], int *scalef...
  function III_antialias (line 1370) | static void III_antialias( float xr[SBLIMIT][SSLIMIT], gr_info_t *gr_info )
  function III_hybrid (line 1409) | static void III_hybrid( float fsIn[SBLIMIT][SSLIMIT], float tsOut[SSLIMI...
  function do_layer3 (line 1462) | int do_layer3( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/libmpg.c
  function feed_mpeg_header (line 42) | int feed_mpeg_header( void *mpg, const byte *data, long bufsize, long st...
  function feed_mpeg_stream (line 70) | int feed_mpeg_stream( void *mpg, const byte *data, long bufsize, byte *o...
  function open_mpeg_stream (line 83) | int open_mpeg_stream( void *mpg, void *file, pfread f_read, pfseek f_see...
  function read_mpeg_stream (line 109) | int read_mpeg_stream( void *mpg, byte *outbuf, size_t *outsize  )
  function get_stream_pos (line 120) | int get_stream_pos( void *mpg )
  function set_stream_pos (line 125) | int set_stream_pos( void *mpg, int curpos )
  function close_decoder (line 130) | void close_decoder( void *mpg )

FILE: engine/client/soundlib/libmpg/libmpg.h
  type wavinfo_t (line 30) | typedef struct
  type mpg_ssize_t (line 38) | typedef long		mpg_ssize_t;
  type mpg_ssize_t (line 40) | typedef ssize_t		mpg_ssize_t;
  type mpg_ssize_t (line 44) | typedef mpg_ssize_t (*pfread)( void *handle, void *buf, size_t count );
  type fs_offset_t (line 45) | typedef fs_offset_t (*pfseek)( void *handle, fs_offset_t offset, int whe...

FILE: engine/client/soundlib/libmpg/mpg123.c
  function mpg123_init (line 22) | int mpg123_init( void )
  function mpg123_exit (line 45) | void mpg123_exit( void )
  function mpg123_handle_t (line 51) | mpg123_handle_t *mpg123_new( int *error )
  function mpg123_handle_t (line 57) | mpg123_handle_t *mpg123_parnew( mpg123_parm_t *mp, int *error )
  function mpg123_par (line 87) | static int mpg123_par( mpg123_parm_t *mp, enum mpg123_parms key, long val )
  function mpg123_param (line 161) | int mpg123_param( mpg123_handle_t *mh, enum mpg123_parms key, long val )
  function mpg123_close (line 193) | static int mpg123_close( mpg123_handle_t *mh )
  function mpg123_delete (line 214) | void mpg123_delete( mpg123_handle_t *mh )
  function mpg123_open_handle (line 224) | int mpg123_open_handle( mpg123_handle_t *mh, void *iohandle )
  function mpg123_open_feed (line 240) | int mpg123_open_feed( mpg123_handle_t *mh )
  function mpg123_replace_reader_handle (line 250) | int mpg123_replace_reader_handle( mpg123_handle_t *mh, mpg_ssize_t (*fre...
  function decode_update (line 267) | static int decode_update( mpg123_handle_t *mh )
  function mpg123_safe_buffer (line 324) | static size_t mpg123_safe_buffer( void )
  function mpg123_outblock (line 330) | static size_t mpg123_outblock( mpg123_handle_t *mh )
  function get_next_frame (line 340) | static int get_next_frame( mpg123_handle_t *mh )
  function init_track (line 442) | static int init_track( mpg123_handle_t *mh )
  function mpg_off_t (line 455) | static mpg_off_t sample_adjust( mpg123_handle_t *mh, mpg_off_t x )
  function mpg_off_t (line 480) | static mpg_off_t sample_unadjust( mpg123_handle_t *mh, mpg_off_t x )
  function frame_buffercheck (line 501) | static void frame_buffercheck( mpg123_handle_t *fr )
  function decode_the_frame (line 549) | static void decode_the_frame( mpg123_handle_t *fr )
  function mpg123_read (line 570) | int mpg123_read( mpg123_handle_t *mh, byte *out, size_t size, size_t *do...
  function mpg123_feed (line 575) | int mpg123_feed( mpg123_handle_t *mh, const byte *in, size_t size )
  function mpg123_decode (line 607) | int mpg123_decode( mpg123_handle_t *mh, const byte *inmemory, size_t inm...
  function mpg123_getformat (line 684) | int mpg123_getformat( mpg123_handle_t *mh, int *rate, int *channels, int...
  function mpg123_scan (line 701) | static int mpg123_scan( mpg123_handle_t *mh )
  function mpg_off_t (line 763) | mpg_off_t mpg123_tell( mpg123_handle_t *mh )
  function do_the_seek (line 798) | static int do_the_seek( mpg123_handle_t *mh )
  function mpg_off_t (line 846) | mpg_off_t mpg123_seek( mpg123_handle_t *mh, mpg_off_t sampleoff, int whe...

FILE: engine/client/soundlib/libmpg/mpg123.h
  type mpg123_handle_t (line 19) | typedef struct mpg123_handle_s	mpg123_handle_t;
  type byte (line 50) | typedef unsigned char	byte;
  type word (line 51) | typedef unsigned short	word;
  type ulong (line 52) | typedef unsigned long	ulong;
  type uint (line 53) | typedef unsigned int	uint;
  type fs_offset_t (line 54) | typedef fs_offset_t	mpg_off_t;
  type mpg_ssize_t (line 57) | typedef long		mpg_ssize_t;
  type mpg_ssize_t (line 59) | typedef ssize_t		mpg_ssize_t;
  type mpg123_errors (line 113) | enum mpg123_errors
  type mpg123_parms (line 166) | enum mpg123_parms
  type mpg123_param_flags (line 189) | enum mpg123_param_flags
  type mpg123_param_rva (line 207) | enum mpg123_param_rva
  type frame_state_flags (line 215) | enum frame_state_flags
  type mpg123_vbr (line 223) | enum mpg123_vbr
  type mpg123_id3v1 (line 234) | typedef struct
  type mpg123_handle_s (line 248) | struct mpg123_handle_s
  type mpg123_parms (line 482) | enum mpg123_parms

FILE: engine/client/soundlib/libmpg/parse.c
  type parse_codes (line 33) | enum parse_codes
  function set_pointer (line 61) | void set_pointer( mpg123_handle_t *fr, long backstep )
  function frame_bitrate (line 71) | static int frame_bitrate( mpg123_handle_t *fr )
  function frame_freq (line 76) | long frame_freq( mpg123_handle_t *fr )
  function compute_bpf (line 81) | double compute_bpf( mpg123_handle_t *fr )
  function mpg123_spf (line 105) | int mpg123_spf( mpg123_handle_t *mh )
  function mpg123_tpf (line 113) | double mpg123_tpf( mpg123_handle_t *fr )
  function get_songlen (line 127) | int get_songlen( mpg123_handle_t *fr, int no )
  function header_mono (line 146) | static int header_mono( ulong newhead )
  function head_check (line 151) | static int head_check(ulong head)
  function head_compatible (line 160) | static int head_compatible( ulong fred, ulong bret )
  function ulong (line 166) | static ulong bit_read_long( byte *buf, int *offset )
  function word (line 174) | static word bit_read_short( byte *buf, int *offset )
  function check_lame_tag (line 182) | static int check_lame_tag( mpg123_handle_t *fr )
  function do_readahead (line 408) | static int do_readahead( mpg123_handle_t *fr, ulong newhead )
  function halfspeed_prepare (line 448) | static void halfspeed_prepare( mpg123_handle_t *fr )
  function halfspeed_do (line 455) | static int halfspeed_do( mpg123_handle_t *fr )
  function guess_freeformat_framesize (line 488) | static int guess_freeformat_framesize( mpg123_handle_t *fr, ulong oldhead )
  function decode_header (line 527) | static int decode_header( mpg123_handle_t *fr, ulong newhead, int *freef...
  function forget_head_shift (line 619) | static int forget_head_shift( mpg123_handle_t *fr, ulong *newheadp, int ...
  function parse_new_id3 (line 646) | static int parse_new_id3( mpg123_handle_t *fr, ulong first4bytes )
  function handle_id3v2 (line 682) | static int handle_id3v2( mpg123_handle_t *fr, ulong newhead )
  function skip_junk (line 694) | static int skip_junk( mpg123_handle_t *fr, ulong *newheadp, long *headco...
  function wetwork (line 771) | static int wetwork( mpg123_handle_t *fr, ulong *newheadp )
  function read_frame (line 852) | int read_frame( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/reader.c
  function buffy_t (line 31) | static buffy_t* buffy_new( size_t size, size_t minsize )
  function buffy_del (line 53) | static void buffy_del( buffy_t *buf )
  function buffy_del_chain (line 63) | static void buffy_del_chain( buffy_t *buf )
  function buffy_t (line 74) | static buffy_t* bc_alloc( bufferchain_t *bc, size_t size )
  function bc_free (line 94) | static void bc_free( bufferchain_t *bc, buffy_t* buf )
  function bc_fill_pool (line 108) | static int bc_fill_pool( bufferchain_t *bc )
  function bc_init (line 135) | static void bc_init( bufferchain_t *bc )
  function bc_reset (line 145) | static void bc_reset( bufferchain_t *bc )
  function bc_append (line 160) | static int bc_append( bufferchain_t *bc, mpg_ssize_t size )
  function bc_prepare (line 180) | void bc_prepare( bufferchain_t *bc, size_t pool_size, size_t bufblock )
  function bc_fill (line 188) | size_t bc_fill( bufferchain_t *bc )
  function bc_poolsize (line 193) | void bc_poolsize( bufferchain_t *bc, size_t pool_size, size_t bufblock )
  function bc_cleanup (line 199) | void bc_cleanup( bufferchain_t *bc )
  function bc_add (line 207) | static int bc_add( bufferchain_t *bc, const byte *data, mpg_ssize_t size )
  function mpg_ssize_t (line 236) | static mpg_ssize_t bc_need_more( bufferchain_t *bc )
  function mpg_ssize_t (line 245) | static mpg_ssize_t bc_give( bufferchain_t *bc, byte *out, mpg_ssize_t si...
  function mpg_ssize_t (line 282) | static mpg_ssize_t bc_skip( bufferchain_t *bc, mpg_ssize_t count )
  function mpg_ssize_t (line 294) | static mpg_ssize_t bc_seekback( bufferchain_t *bc, mpg_ssize_t count )
  function bc_forget (line 302) | static void bc_forget( bufferchain_t *bc )
  function feed_init (line 326) | static int feed_init( mpg123_handle_t *fr )
  function feed_more (line 338) | int feed_more( mpg123_handle_t *fr, const byte *in, long count )
  function mpg_ssize_t (line 346) | static mpg_ssize_t feed_read( mpg123_handle_t *fr, byte *out, mpg_ssize_...
  function mpg_off_t (line 357) | static mpg_off_t feed_skip_bytes( mpg123_handle_t *fr, mpg_off_t len )
  function feed_back_bytes (line 366) | static int feed_back_bytes( mpg123_handle_t *fr, mpg_off_t bytes )
  function feed_seek_frame (line 373) | static int feed_seek_frame( mpg123_handle_t *fr, mpg_off_t num )
  function buffered_forget (line 379) | static void buffered_forget( mpg123_handle_t *fr )
  function mpg_off_t (line 385) | mpg_off_t feed_set_pos( mpg123_handle_t *fr, mpg_off_t pos )
  function mpg_ssize_t (line 409) | static mpg_ssize_t buffered_fullread( mpg123_handle_t *fr, byte *out, mp...
  function mpg_ssize_t (line 450) | static mpg_ssize_t plain_fullread( mpg123_handle_t *fr, byte *buf, mpg_s...
  function mpg_off_t (line 475) | static mpg_off_t io_seek( reader_data_t *rdat, mpg_off_t offset, int whe...
  function mpg_ssize_t (line 487) | static mpg_ssize_t io_read( reader_data_t *rdat, void *buf, size_t count )
  function mpg_ssize_t (line 500) | static mpg_ssize_t plain_read( mpg123_handle_t *fr, void *buf, size_t co...
  function mpg_off_t (line 505) | static mpg_off_t stream_lseek( mpg123_handle_t *fr, mpg_off_t pos, int w...
  function stream_close (line 524) | static void stream_close( mpg123_handle_t *fr )
  function stream_seek_frame (line 542) | static int stream_seek_frame( mpg123_handle_t *fr, mpg_off_t newframe )
  function generic_head_read (line 586) | static int generic_head_read( mpg123_handle_t *fr, ulong *newhead )
  function generic_head_shift (line 602) | static int generic_head_shift( mpg123_handle_t *fr, ulong *head )
  function mpg_off_t (line 620) | static mpg_off_t stream_skip_bytes( mpg123_handle_t *fr, mpg_off_t len )
  function stream_back_bytes (line 665) | static int stream_back_bytes( mpg123_handle_t *fr, mpg_off_t bytes )
  function generic_read_frame_body (line 679) | static int generic_read_frame_body( mpg123_handle_t *fr, byte *buf, int ...
  function mpg_off_t (line 689) | static mpg_off_t generic_tell( mpg123_handle_t *fr )
  function stream_rewind (line 698) | static void stream_rewind( mpg123_handle_t *fr )
  function mpg_off_t (line 717) | static mpg_off_t get_fileinfo( mpg123_handle_t *fr )
  function bad_init (line 742) | static int bad_init( mpg123_handle_t *mh ) { mh->err = MPG123_NO_READER;...
  function mpg_ssize_t (line 743) | static mpg_ssize_t bad_fullread( mpg123_handle_t *mh, byte *data, mpg_ss...
  function bad_head_read (line 744) | static int bad_head_read( mpg123_handle_t *mh, ulong *newhead ) { mh->er...
  function bad_head_shift (line 745) | static int bad_head_shift( mpg123_handle_t *mh, ulong *head ) { mh->err ...
  function mpg_off_t (line 746) | static mpg_off_t bad_skip_bytes( mpg123_handle_t *mh, mpg_off_t len ) { ...
  function bad_read_frame_body (line 747) | static int bad_read_frame_body( mpg123_handle_t *mh, byte *data, int siz...
  function bad_back_bytes (line 748) | static int bad_back_bytes( mpg123_handle_t *mh, mpg_off_t bytes ) { mh->...
  function bad_seek_frame (line 749) | static int bad_seek_frame( mpg123_handle_t *mh, mpg_off_t num ) { mh->er...
  function mpg_off_t (line 750) | static mpg_off_t bad_tell( mpg123_handle_t *mh ) { mh->err = MPG123_NO_R...
  function bad_rewind (line 751) | static void bad_rewind( mpg123_handle_t *mh ) { }
  function bad_close (line 752) | static void bad_close( mpg123_handle_t *mh ) { }
  function open_bad (line 770) | void open_bad( mpg123_handle_t *mh )
  function open_finish (line 825) | static int open_finish( mpg123_handle_t *fr )
  function open_stream_handle (line 834) | int open_stream_handle( mpg123_handle_t *fr, void *iohandle )
  function open_feed (line 845) | int open_feed( mpg123_handle_t *fr )
  function mpg_ssize_t (line 856) | static mpg_ssize_t read_mpgtypes( int fd, void *buf, size_t count )
  function mpg_off_t (line 861) | static mpg_off_t lseek_mpgtypes( int fd, mpg_off_t offset, int whence )
  function default_init (line 866) | static int default_init( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/reader.h
  type buffy_t (line 26) | typedef struct buffy_s
  type bufferchain_t (line 34) | typedef struct bufferchain_s
  type reader_data_t (line 63) | typedef struct reader_data_s
  type reader_t (line 99) | typedef struct reader_s

FILE: engine/client/soundlib/libmpg/sample.h
  function _inline (line 23) | static _inline int16_t ftoi16( float x )

FILE: engine/client/soundlib/libmpg/synth.c
  function synth_1to1 (line 28) | static int synth_1to1( float *bandPtr, int channel, mpg123_handle_t *fr,...
  function synth_stereo (line 140) | static int synth_stereo( float *bandPtr_l, float *bandPtr_r, mpg123_hand...
  function synth_1to1_m2s (line 150) | static int synth_1to1_m2s(float *bandPtr, mpg123_handle_t *fr )
  function synth_1to1_mono (line 168) | static int synth_1to1_mono( float *bandPtr, mpg123_handle_t *fr )
  type synth_s (line 198) | struct synth_s
  function init_synth (line 214) | void init_synth( mpg123_handle_t *fr )
  function find_synth (line 219) | static int find_synth(func_synth synth,  const func_synth synths[r_limit...
  type optdec (line 236) | enum optdec
  function find_dectype (line 245) | static int find_dectype( mpg123_handle_t *fr )
  function set_synth_functions (line 266) | int set_synth_functions( mpg123_handle_t *fr )

FILE: engine/client/soundlib/libmpg/synth.h
  type synth_channel (line 23) | enum synth_channel
  type synth_resample (line 32) | enum synth_resample
  type synth_format (line 39) | enum synth_format
  type synth_t (line 46) | typedef struct synth_s

FILE: engine/client/soundlib/libmpg/tabinit.c
  function prepare_decode_tables (line 55) | void prepare_decode_tables( void )
  function make_decode_tables (line 71) | void make_decode_tables( mpg123_handle_t *fr )

FILE: engine/client/soundlib/ogg_filestream.c
  function OggFilestream_Read (line 20) | size_t OggFilestream_Read( void *ptr, size_t blockSize, size_t nmemb, vo...
  function OggFilestream_Seek (line 35) | int OggFilestream_Seek( void *datasource, int64_t offset, int whence )
  function OggFilestream_Tell (line 56) | long OggFilestream_Tell( void *datasource )

FILE: engine/client/soundlib/ogg_filestream.h
  type ogg_filestream_t (line 21) | typedef struct ogg_filestream_s
  function OggFilestream_Init (line 33) | static inline void OggFilestream_Init( ogg_filestream_t *filestream, con...

FILE: engine/client/soundlib/snd_main.c
  function Sound_Reset (line 18) | static void Sound_Reset( void )
  function wavdata_t (line 57) | wavdata_t *FS_LoadSound( const char *filename, const byte *buffer, size_...
  function FS_FreeSound (line 147) | void FS_FreeSound( wavdata_t *pack )
  function stream_t (line 160) | stream_t *FS_OpenStream( const char *filename )
  function FS_ReadStream (line 224) | int FS_ReadStream( stream_t *stream, int bytes, void *buffer )
  function FS_GetStreamPos (line 242) | int FS_GetStreamPos( stream_t *stream )
  function FS_SetStreamPos (line 257) | int FS_SetStreamPos( stream_t *stream, int newpos )
  function FS_FreeStream (line 272) | void FS_FreeStream( stream_t *stream )

FILE: engine/client/soundlib/snd_mp3.c
  type did3v2_header_t (line 20) | typedef struct did3v2_header_s
  type did3v2_extended_header_t (line 30) | typedef struct did3v2_extended_header_s
  type did3v2_frame_t (line 38) | typedef struct did3v2_frame_s
  type did3v2_header_flags_t (line 47) | typedef enum did3v2_header_flags_e
  function Sound_ParseSynchInteger (line 58) | static uint32_t Sound_ParseSynchInteger( uint32_t v )
  function Sound_HandleCustomID3Comment (line 71) | static void Sound_HandleCustomID3Comment( const char *key, const char *v...
  function qboolean (line 81) | static qboolean Sound_ParseID3Frame( const did3v2_frame_t *frame, const ...
  function qboolean (line 116) | static qboolean Sound_ParseID3Tag( const byte *buffer, fs_offset_t files...
  function Fuzz_Sound_ParseID3Tag (line 190) | int EXPORT Fuzz_Sound_ParseID3Tag( const uint8_t *Data, size_t Size )
  function qboolean (line 205) | qboolean Sound_LoadMPG( const char *name, const byte *buffer, fs_offset_...
  function fs_offset_t (line 291) | static fs_offset_t FS_SeekMpg( void *file, fs_offset_t offset, int whence )
  function mpg_ssize_t (line 296) | static mpg_ssize_t FS_ReadMpg( void *file, void *buf, size_t count )
  function stream_t (line 306) | stream_t *Stream_OpenMPG( const char *filename )
  function Stream_ReadMPG (line 361) | int Stream_ReadMPG( stream_t *stream, int needBytes, void *buffer )
  function Stream_SetPosMPG (line 409) | int Stream_SetPosMPG( stream_t *stream, int newpos )
  function Stream_GetPosMPG (line 429) | int Stream_GetPosMPG( stream_t *stream )
  function Stream_FreeMPG (line 441) | void Stream_FreeMPG( stream_t *stream )

FILE: engine/client/soundlib/snd_ogg_opus.c
  type opus_streaming_ctx_t (line 22) | typedef struct opus_streaming_ctx_s
  function OpusCallback_Read (line 28) | static int OpusCallback_Read( void *datasource, byte *ptr, int nbytes )
  function opus_int64 (line 33) | static opus_int64 OpusCallback_Tell( void *datasource )
  function FS_ReadOggOpus (line 38) | static int FS_ReadOggOpus( void *datasource, byte *ptr, int nbytes )
  function FS_SeekOggOpus (line 44) | static int FS_SeekOggOpus( void *datasource, int64_t offset, int whence )
  function opus_int64 (line 50) | static opus_int64 FS_TellOggOpus( void *datasource )
  function Sound_ScanOpusComments (line 77) | static void Sound_ScanOpusComments( const OggOpusFile *of )
  function qboolean (line 133) | qboolean Sound_LoadOggOpus( const char *name, const byte *buffer, fs_off...
  function stream_t (line 193) | stream_t *Stream_OpenOggOpus( const char *filename )
  function Stream_ReadOggOpus (line 254) | int Stream_ReadOggOpus( stream_t *stream, int needBytes, void *buffer )
  function Stream_SetPosOggOpus (line 299) | int Stream_SetPosOggOpus( stream_t *stream, int newpos )
  function Stream_GetPosOggOpus (line 312) | int Stream_GetPosOggOpus( stream_t *stream )
  function Stream_FreeOggOpus (line 318) | void Stream_FreeOggOpus( stream_t *stream )

FILE: engine/client/soundlib/snd_ogg_vorbis.c
  type vorbis_streaming_ctx_t (line 24) | typedef struct vorbis_streaming_ctx_s
  function FS_ReadOggVorbis (line 30) | static size_t FS_ReadOggVorbis( void *ptr, size_t blockSize, size_t nmem...
  function FS_SeekOggVorbis (line 36) | static int FS_SeekOggVorbis( void *datasource, int64_t offset, int whence )
  function FS_TellOggVorbis (line 42) | static long FS_TellOggVorbis( void *datasource )
  function Sound_ScanVorbisComments (line 104) | static void Sound_ScanVorbisComments( OggVorbis_File *vf )
  function qboolean (line 123) | qboolean Sound_LoadOggVorbis( const char *name, const byte *buffer, fs_o...
  function stream_t (line 174) | stream_t *Stream_OpenOggVorbis( const char *filename )
  function Stream_ReadOggVorbis (line 222) | int Stream_ReadOggVorbis( stream_t *stream, int needBytes, void *buffer )
  function Stream_SetPosOggVorbis (line 269) | int Stream_SetPosOggVorbis( stream_t *stream, int newpos )
  function Stream_GetPosOggVorbis (line 282) | int Stream_GetPosOggVorbis( stream_t *stream )
  function Stream_FreeOggVorbis (line 288) | void Stream_FreeOggVorbis( stream_t *stream )

FILE: engine/client/soundlib/snd_wav.c
  function IsFourCC (line 26) | static int IsFourCC( const void *ptr, const void *fourcc )
  function GetLittleShort (line 36) | static short GetLittleShort( void )
  function GetLittleLong (line 52) | static int GetLittleLong( void )
  function FindNextChunk (line 70) | static void FindNextChunk( const char *filename, const char *name )
  function FindChunk (line 128) | static void FindChunk( const char *filename, const char *name )
  function qboolean (line 139) | static qboolean StreamFindNextChunk( file_t *file, const char *name, int...
  function qboolean (line 175) | qboolean Sound_LoadWAV( const char *name, const byte *buffer, fs_offset_...
  function stream_t (line 344) | stream_t *Stream_OpenWAV( const char *filename )
  function Stream_ReadWAV (line 448) | int Stream_ReadWAV( stream_t *stream, int bytes, void *buffer )
  function Stream_SetPosWAV (line 471) | int Stream_SetPosWAV( stream_t *stream, int newpos )
  function Stream_GetPosWAV (line 490) | int Stream_GetPosWAV( stream_t *stream )
  function Stream_FreeWAV (line 502) | void Stream_FreeWAV( stream_t *stream )

FILE: engine/client/titles.c
  function IsComment (line 27) | static int IsComment( const char *pText )
  function IsStartOfText (line 46) | static int IsStartOfText( const char *pText )
  function IsEndOfText (line 57) | static int IsEndOfText( const char *pText )
  function IsWhiteSpace (line 67) | static int IsWhiteSpace( char space )
  function ParseFloats (line 98) | static int ParseFloats( const char *pText, float *pFloat, int count )
  function IsToken (line 124) | static int IsToken( const char *pText, const char *pTokenName )
  function ParseDirective (line 135) | static int ParseDirective( const char *pText )
  function CL_TextMessageParse (line 211) | void CL_TextMessageParse( byte *pMemFile, int fileSize )

FILE: engine/client/vgui/vgui_draw.c
  type vgui_reusable_texture_t (line 28) | typedef struct vgui_reusable_texture_s
  type vgui_static_t (line 34) | typedef struct vgui_static_s
  function VGUI_DrawInit (line 59) | VGUI_DrawInit( void )
  function VGUI_DrawShutdown (line 74) | VGUI_DrawShutdown( void )
  function VGUI_GenerateTexture (line 90) | VGUI_GenerateTexture( void )
  function VGUI_UploadTexture (line 117) | static void GAME_EXPORT VGUI_UploadTexture( int id, const char *buffer, ...
  function VGUI_CreateTexture (line 165) | static void GAME_EXPORT VGUI_CreateTexture( int id, int width, int height )
  function VGUI_UploadTextureBlock (line 172) | static void GAME_EXPORT VGUI_UploadTextureBlock( int id, int drawX, int ...
  function VGUI_BindTexture (line 178) | static void GAME_EXPORT VGUI_BindTexture( int id )
  function VGUI_GetTextureSizes (line 187) | static void GAME_EXPORT VGUI_GetTextureSizes( int *w, int *h )
  function VGUI_SetupDrawingRect (line 199) | static void GAME_EXPORT VGUI_SetupDrawingRect( int *pColor )
  function VGUI_SetupDrawingText (line 205) | static void GAME_EXPORT VGUI_SetupDrawingText( int *pColor )
  function VGUI_DrawQuad (line 211) | static void GAME_EXPORT VGUI_DrawQuad( const vpoint_t *ul, const vpoint_...
  function VGUI_EnableTexture (line 243) | static void GAME_EXPORT VGUI_EnableTexture( qboolean enable )
  function VGUI_IsInGame (line 253) | VGUI_IsInGame( void )
  function VGUI_GetMousePos (line 258) | static void GAME_EXPORT VGUI_GetMousePos( int *_x, int *_y )
  function VGUI_CursorSelect (line 269) | static void GAME_EXPORT VGUI_CursorSelect( VGUI_DefaultCursor cursor )
  function byte (line 275) | static byte GAME_EXPORT VGUI_GetColor( int i, int j )
  function VGUI_UtfProcessChar (line 280) | static int GAME_EXPORT VGUI_UtfProcessChar( int in )
  function qboolean (line 287) | qboolean VGui_IsActive( void )
  function VGui_RegisterCvars (line 292) | void VGui_RegisterCvars( void )
  function qboolean (line 325) | qboolean VGui_LoadProgs( HINSTANCE hInstance )
  function VGui_Startup (line 384) | void VGui_Startup( int width, int height )
  function VGui_Shutdown (line 412) | void VGui_Shutdown( void )
  function VGUI_InitKeyTranslationTable (line 426) | static void VGUI_InitKeyTranslationTable( void )
  function VGUI_MapKey (line 539) | static enum VGUI_KeyCode VGUI_MapKey( int keyCode )
  function VGui_MouseEvent (line 549) | void VGui_MouseEvent( int key, int clicks )
  function VGui_MWheelEvent (line 575) | void VGui_MWheelEvent( int y )
  function VGui_KeyEvent (line 583) | void VGui_KeyEvent( int key, int down )
  function VGui_MouseMove (line 601) | void VGui_MouseMove( int x, int y )
  function VGui_Paint (line 611) | void VGui_Paint( void )
  function VGui_UpdateInternalCursorState (line 617) | void VGui_UpdateInternalCursorState( VGUI_DefaultCursor cursorType )
  function VGui_GetPanel (line 622) | VGui_GetPanel( void )
  function VGui_ReportTextInput (line 629) | void VGui_ReportTextInput( const char *text )

FILE: engine/client/vid_common.c
  function VID_InitDefaultResolution (line 42) | void VID_InitDefaultResolution( void )
  function R_SaveVideoMode (line 55) | void R_SaveVideoMode( int w, int h, int render_w, int render_h, qboolean...
  function VID_CheckChanges (line 112) | void VID_CheckChanges( void )
  function VID_SetDisplayTransform (line 142) | void VID_SetDisplayTransform( int *render_w, int *render_h )
  function VID_Mode_f (line 165) | static void VID_Mode_f( void )
  function VID_Init (line 200) | void VID_Init( void )

FILE: engine/client/vid_common.h
  type vidmode_t (line 5) | typedef struct vidmode_s
  type window_mode_t (line 12) | typedef enum window_mode_e
  type glwstate_t (line 20) | typedef struct

FILE: engine/client/voice.c
  function qboolean (line 52) | static qboolean Voice_IsGoldSrcMode( const char *codec )
  function qboolean (line 69) | static qboolean Voice_IsOpusCustomMode( const char *codec )
  function Voice_GetBitrateForQuality (line 81) | static int Voice_GetBitrateForQuality( int quality, qboolean goldsrc )
  function qboolean (line 109) | static qboolean Voice_InitCustomMode( void )
  function qboolean (line 135) | static qboolean Voice_InitOpusDecoder( void )
  function qboolean (line 171) | static qboolean Voice_InitOpusEncoder( int quality )
  function Voice_ShutdownOpusDecoder (line 208) | static void Voice_ShutdownOpusDecoder( void )
  function Voice_ShutdownOpusEncoder (line 238) | static void Voice_ShutdownOpusEncoder( void )
  function Voice_ShutdownCustomMode (line 265) | static void Voice_ShutdownCustomMode( void )
  function qboolean (line 281) | static qboolean Voice_InitGoldSrcMode( int quality )
  function qboolean (line 311) | static qboolean Voice_InitOpusCustomMode( int quality )
  function Voice_ShutdownGoldSrcMode (line 341) | static void Voice_ShutdownGoldSrcMode( void )
  function Voice_ShutdownOpusCustomMode (line 354) | static void Voice_ShutdownOpusCustomMode( void )
  function Voice_ApplyGainAdjust (line 376) | static void Voice_ApplyGainAdjust( int16_t *samples, int count, float sc...
  function uint (line 425) | static uint Voice_GetOpusCompressedData( byte *out, uint maxsize, uint *...
  function uint (line 498) | static uint Voice_GetGSCompressedData( byte *out, uint maxsize, uint *fr...
  function Voice_ProcessGSData (line 591) | static int Voice_ProcessGSData( int ent, const uint8_t *data, uint32_t s...
  function uint (line 723) | static uint Voice_CreateGSVoicePacket( byte *out, const byte *voice_data...
  function Voice_Status (line 784) | static void Voice_Status( int entindex, qboolean bTalking )
  function Voice_StatusTimeout (line 798) | static void Voice_StatusTimeout( voice_status_t *status, int entindex, d...
  function Voice_StatusAck (line 819) | static void Voice_StatusAck( voice_status_t *status, int playerIndex )
  function qboolean (line 835) | qboolean Voice_IsRecording( void )
  function Voice_RecordStop (line 847) | void Voice_RecordStop( void )
  function Voice_RecordStart (line 871) | void Voice_RecordStart( void )
  function Voice_Disconnect (line 912) | void Voice_Disconnect( void )
  function Voice_StartChannel (line 941) | static void Voice_StartChannel( uint samples, byte *data, int entnum )
  function Voice_StopChannel (line 955) | void Voice_StopChannel( int entnum )
  function Voice_LoopbackAck (line 968) | void Voice_LoopbackAck( void )
  function Voice_AddIncomingData (line 980) | void Voice_AddIncomingData( int ent, const byte *data, uint size, uint f...
  function CL_AddVoiceToDatagram (line 1037) | void CL_AddVoiceToDatagram( void )
  function Voice_RegisterCvars (line 1082) | void Voice_RegisterCvars( void )
  function Voice_Shutdown (line 1100) | static void Voice_Shutdown( void )
  function Voice_Idle (line 1144) | void Voice_Idle( double frametime )
  function qboolean (line 1172) | qboolean Voice_Init( const char *pszCodecName, int quality, qboolean pre...

FILE: engine/client/voice.h
  type OpusCustomEncoder (line 24) | typedef struct OpusCustomEncoder OpusCustomEncoder;
  type OpusCustomDecoder (line 25) | typedef struct OpusCustomDecoder OpusCustomDecoder;
  type OpusCustomMode (line 26) | typedef struct OpusCustomMode OpusCustomMode;
  type OpusEncoder (line 27) | typedef struct OpusEncoder OpusEncoder;
  type OpusDecoder (line 28) | typedef struct OpusDecoder OpusDecoder;
  type gs_vpc_type (line 54) | enum gs_vpc_type
  type voice_status_t (line 66) | typedef struct voice_status_s
  type voice_autogain_t (line 72) | typedef struct voice_autogain_s
  type voice_state_t (line 80) | typedef struct voice_state_s

FILE: engine/client/vox.h
  type voxword_t (line 22) | typedef struct voxword_s
  type channel_s (line 35) | struct channel_s
  type channel_s (line 36) | struct channel_s
  type channel_s (line 37) | struct channel_s

FILE: engine/common/base_cmd.c
  type base_command_hashmap_t (line 22) | typedef struct base_command_hashmap_s base_command_hashmap_t;
  type base_command_hashmap_s (line 24) | struct base_command_hashmap_s
  function base_command_hashmap_t (line 44) | static base_command_hashmap_t *BaseCmd_FindInBucket( base_command_hashma...
  function base_command_hashmap_t (line 76) | static base_command_hashmap_t *BaseCmd_GetBucket( const char *name )
  function base_command_t (line 88) | base_command_t *BaseCmd_Find( base_command_type_e type, const char *name )
  function BaseCmd_FindAll (line 105) | void BaseCmd_FindAll( const char *name, cmd_t **cmd, cmdalias_t **alias,...
  function BaseCmd_Insert (line 148) | void BaseCmd_Insert( base_command_type_e type, base_command_t *basecmd, ...
  function BaseCmd_Remove (line 177) | void BaseCmd_Remove( base_command_type_e type, const char *name )
  function BaseCmd_Init (line 221) | void BaseCmd_Init( void )
  function BaseCmd_Shutdown (line 227) | void BaseCmd_Shutdown( void )
  function BaseCmd_Stats_f (line 238) | void BaseCmd_Stats_f( void )
  type basecmd_test_stats_t (line 267) | typedef struct
  function BaseCmd_CheckCvars (line 273) | static void BaseCmd_CheckCvars( const char *key, const char *value, cons...
  function BaseCmd_Test_f (line 292) | void BaseCmd_Test_f( void )

FILE: engine/common/base_cmd.h
  type base_command_type_e (line 27) | typedef enum base_command_type
  type base_command_t (line 35) | typedef void base_command_t;

FILE: engine/common/cfgscript.c
  type cvartype_t (line 18) | typedef enum
  type parserstate_t (line 30) | typedef struct parserstate_s
  type scrvardef_t (line 37) | typedef struct scrvardef_s
  function qboolean (line 55) | static qboolean CSCR_ExpectString( parserstate_t *ps, const char *pExpec...
  function cvartype_t (line 78) | static cvartype_t CSCR_ParseType( parserstate_t *ps )
  function qboolean (line 99) | static qboolean CSCR_ParseSingleCvar( parserstate_t *ps, scrvardef_t *re...
  function qboolean (line 173) | static qboolean CSCR_ParseHeader( parserstate_t *ps )
  function CSCR_ParseFile (line 213) | static int CSCR_ParseFile( const char *scriptfilename,
  function CSCR_WriteVariableToFile (line 267) | static void CSCR_WriteVariableToFile( scrvardef_t *var, void *file )
  function CSCR_WriteGameCVars (line 288) | int CSCR_WriteGameCVars( file_t *cfg, const char *scriptfilename )
  function CSCR_RegisterVariable (line 293) | static void CSCR_RegisterVariable( scrvardef_t *var, void *unused )
  function CSCR_LoadDefaultCVars (line 306) | int CSCR_LoadDefaultCVars( const char *scriptfilename )

FILE: engine/common/cmd.c
  type cmdbuf_t (line 25) | typedef struct
  function Cbuf_Clear (line 66) | void Cbuf_Clear( void )
  function Cbuf_AddTextToBuffer (line 94) | static void Cbuf_AddTextToBuffer( cmdbuf_t *buf, const char *text )
  function Cbuf_AddText (line 114) | void Cbuf_AddText( const char *text )
  function Cbuf_AddTextf (line 119) | void Cbuf_AddTextf( const char *fmt, ... )
  function Cbuf_AddFilteredText (line 136) | void Cbuf_AddFilteredText( const char *text )
  function Cbuf_InsertTextToBuffer (line 148) | static void Cbuf_InsertTextToBuffer( cmdbuf_t *buf, const char *text, si...
  function Cbuf_InsertTextLen (line 162) | void Cbuf_InsertTextLen( const char *text, size_t len, size_t requested_...
  function Cbuf_InsertText (line 169) | void Cbuf_InsertText( const char *text )
  function Cbuf_ExecuteCommandsFromBuffer (line 180) | static void Cbuf_ExecuteCommandsFromBuffer( cmdbuf_t *buf, qboolean isPr...
  function Cbuf_Execute (line 269) | void Cbuf_Execute( void )
  function Cbuf_ExecStuffCmds (line 291) | void Cbuf_ExecStuffCmds( void )
  function qboolean (line 351) | qboolean Cmd_CurrentCommandIsPrivileged( void )
  function Cmd_StuffCmds_f (line 366) | static void Cmd_StuffCmds_f( void )
  function Cmd_Wait_f (line 380) | static void Cmd_Wait_f( void )
  function Cmd_Echo_f (line 398) | static void Cmd_Echo_f( void )
  function Cmd_Alias_f (line 414) | static void Cmd_Alias_f( void )
  function Cmd_UnAlias_f (line 489) | static void Cmd_UnAlias_f ( void )
  type cmd_s (line 533) | struct cmd_s
  function Cmd_TokenizeString (line 603) | void Cmd_TokenizeString( const char *text )
  function Cmd_AddCommandEx (line 655) | int Cmd_AddCommandEx( const char *cmd_name, xcommand_t function, const c...
  function Cmd_RemoveCommand (line 724) | void GAME_EXPORT Cmd_RemoveCommand( const char *cmd_name )
  function Cmd_LookupCmds (line 760) | void Cmd_LookupCmds( void *buffer, void *ptr, setpair_t callback )
  function cmd_t (line 784) | cmd_t *Cmd_Exists( const char *cmd_name )
  function Cmd_If_f (line 806) | static void Cmd_If_f( void )
  function Cmd_Else_f (line 867) | static void Cmd_Else_f( void )
  function qboolean (line 872) | static qboolean Cmd_ShouldAllowCommand( cmd_t *cmd, qboolean isPrivileged )
  function Cmd_ExecuteStringWithPrivilegeCheck (line 908) | static void Cmd_ExecuteStringWithPrivilegeCheck( const char *text, qbool...
  function Cmd_ExecuteString (line 1044) | void Cmd_ExecuteString( const char *text )
  function Cmd_ForwardToServer (line 1059) | void Cmd_ForwardToServer( void )
  function Cmd_List_f (line 1099) | static void Cmd_List_f( void )
  function Cmd_Unlink (line 1134) | void Cmd_Unlink( int group )
  function Cmd_Apropos_f (line 1178) | static void Cmd_Apropos_f( void )
  function Cmd_Null_f (line 1262) | void Cmd_Null_f( void )
  function Cmd_MakePrivileged_f (line 1271) | static void Cmd_MakePrivileged_f( void )
  function Cmd_Escape (line 1317) | void Cmd_Escape( char *newCommand, const char *oldCommand, int len )
  function Cmd_Init (line 1349) | void Cmd_Init( void )
  function Cmd_Shutdown (line 1380) | void Cmd_Shutdown( void )
  function Test_PrivilegedCommand_f (line 1397) | static void Test_PrivilegedCommand_f( void )
  function Test_UnprivilegedCommand_f (line 1402) | static void Test_UnprivilegedCommand_f( void )
  function Test_FilteredCommand_f (line 1407) | static void Test_FilteredCommand_f( void )
  function Test_RunCmd (line 1412) | void Test_RunCmd( void )

FILE: engine/common/common.c
  function DBG_AssertFunction (line 44) | void DBG_AssertFunction( qboolean fExpr, const char* szExpr, const char*...
  function lran1 (line 67) | static int lran1( void )
  function fran1 (line 101) | static float fran1( void )
  function COM_SetRandomSeed (line 109) | void GAME_EXPORT COM_SetRandomSeed( int lSeed )
  function COM_RandomFloat (line 120) | float GAME_EXPORT COM_RandomFloat( float flLow, float flHigh )
  function COM_RandomLong (line 130) | int GAME_EXPORT COM_RandomLong( int lLow, int lHigh )
  type lzss_header_t (line 193) | typedef struct
  type lzss_node_t (line 200) | typedef struct lzss_node_s
  type lzss_list_t (line 208) | typedef struct
  type lzss_state_t (line 214) | typedef struct
  function qboolean (line 221) | qboolean LZSS_IsCompressed( const byte *source, size_t input_len )
  function uint (line 235) | uint LZSS_GetActualSize( const byte *source, size_t input_len )
  function LZSS_BuildHash (line 250) | static void LZSS_BuildHash( lzss_state_t *state, const byte *source )
  function byte (line 283) | static byte *LZSS_CompressNoAlloc( lzss_state_t *state, byte *pInput, in...
  function byte (line 405) | byte *LZSS_Compress( byte *pInput, int inputLength, uint *pOutputSize )
  function uint (line 425) | uint LZSS_Decompress( const byte *pInput, byte *pOutput, size_t input_le...
  function COM_IsWhiteSpace (line 507) | static int COM_IsWhiteSpace( char space )
  function qboolean (line 520) | qboolean COM_ParseVector( char **pfile, float *v, size_t size )
  function COM_FileSize (line 570) | int GAME_EXPORT COM_FileSize( const char *filename )
  function COM_TrimSpace (line 583) | void COM_TrimSpace( const char *source, char *dest )
  function byte (line 615) | byte COM_Nibble( char c )
  function COM_HexConvert (line 642) | void COM_HexConvert( const char *pszInput, int nInputLength, byte *pOutp...
  function COM_SaveFile (line 773) | int GAME_EXPORT COM_SaveFile( const char *filename, const void *data, in...
  function COM_FreeFile (line 792) | void GAME_EXPORT COM_FreeFile( void *buffer )
  function pfnGetModelType (line 803) | int GAME_EXPORT pfnGetModelType( model_t *mod )
  function pfnGetModelBounds (line 815) | void GAME_EXPORT pfnGetModelBounds( model_t *mod, float *mins, float *ma...
  function pfnCompareFileTime (line 847) | int GAME_EXPORT pfnCompareFileTime( const char *path1, const char *path2...
  function COM_CheckParm (line 875) | int GAME_EXPORT COM_CheckParm( char *parm, char **ppnext )
  function pfnTime (line 895) | pfnTime( void )
  function qboolean (line 900) | qboolean COM_IsSafeFileToDownload( const char *filename )
  function pfnIsCareerMatch (line 1029) | pfnIsCareerMatch( void )
  function pfnProcessTutorMessageDecayBuffer (line 1041) | void GAME_EXPORT pfnProcessTutorMessageDecayBuffer( int *buffer, int buf...
  function pfnConstructTutorMessageDecayBuffer (line 1052) | void GAME_EXPORT pfnConstructTutorMessageDecayBuffer( int *buffer, int b...
  function pfnResetTutorMessageDecayData (line 1063) | pfnResetTutorMessageDecayData( void )
  function Test_LZSS (line 1075) | static void Test_LZSS( void )
  function Test_RunCommon (line 1132) | void Test_RunCommon( void )

FILE: engine/common/common.h
  type dev_level_e (line 79) | enum dev_level_e
  type instance_t (line 86) | typedef enum instance_e
  type host_status_t (line 188) | typedef enum host_status_e
  type host_state_t (line 199) | typedef enum host_state_e
  type game_status_t (line 208) | typedef struct game_status_e
  type keydest_t (line 219) | typedef enum keydest_e
  type rdtype_t (line 227) | typedef enum rdtype_e
  type field_t (line 237) | typedef struct field_e
  type host_redirect_t (line 245) | typedef struct host_redirect_s
  type soundlist_t (line 255) | typedef struct soundlist_e
  type bugcomp_t (line 270) | typedef enum bugcomp_e
  type host_parm_t (line 286) | typedef struct host_parm_s
  type cmd_t (line 420) | typedef struct cmd_s cmd_t;
  function Cmd_Argc (line 422) | Cmd_Argc( void )
  function RETURNS_NONNULL (line 428) | RETURNS_NONNULL Cmd_Argv( int arg )
  function RETURNS_NONNULL (line 438) | RETURNS_NONNULL Cmd_Args( void )
  function Cmd_AddCommand (line 459) | static inline int Cmd_AddCommand( const char *cmd_name, xcommand_t funct...
  function Cmd_AddRestrictedCommand (line 464) | static inline int Cmd_AddRestrictedCommand( const char *cmd_name, xcomma...
  function Cmd_AddCommandWithFlags (line 469) | static inline int Cmd_AddCommandWithFlags( const char *cmd_name, xcomman...
  type sndformat_t (line 514) | typedef enum sndformat_e
  type sndFlags_t (line 525) | typedef enum sndFlags_e
  type wavdata_t (line 535) | typedef struct wavdata_s
  type stream_t (line 551) | typedef struct stream_s stream_t;
  function CL_Init (line 609) | static inline void CL_Init( void ) { }
  function CL_Shutdown (line 610) | static inline void CL_Shutdown( void ) { }
  function Host_ClientBegin (line 611) | static inline void Host_ClientBegin( void ) { Cbuf_Execute(); }
  function Host_ClientFrame (line 612) | static inline void Host_ClientFrame( void ) { }
  function CL_Active (line 613) | static inline int CL_Active( void ) { return 0; }
  type cache_user_s (line 639) | struct cache_user_s
  type resource_s (line 707) | struct resource_s
  type resource_s (line 708) | struct resource_s
  type resource_s (line 709) | struct resource_s
  type connprotocol_t (line 727) | typedef enum connprotocol_e
  type physent_s (line 736) | struct physent_s
  type sv_client_s (line 737) | struct sv_client_s
  type sizebuf_t (line 738) | typedef struc
Condensed preview — 1012 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,159K chars).
[
  {
    "path": ".cirrus.yml",
    "chars": 626,
    "preview": "task:\n  name: freebsd-14-amd64\n  freebsd_instance:\n    image_family: freebsd-14-2\n  setup_script:\n    - pkg update\n    -"
  },
  {
    "path": ".editorconfig",
    "chars": 15765,
    "preview": "# this file is just a suggestion, you might follow it, you might not\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ni"
  },
  {
    "path": ".gitattributes",
    "chars": 82,
    "preview": "*.c\ttext eol=lf diff=cpp\n*.h\ttext eol=lf diff=cpp\nwscript text eol=lf diff=python\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 80,
    "preview": "custom: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/donate.md\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/crash-report.md",
    "chars": 600,
    "preview": "---\nname: Crash report\nabout: The renderer crashed. Let us know\ntitle: ''\nlabels: bug, crash\nassignees: ''\n\n---\n\nNote th"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/visual-glitches-report.md",
    "chars": 1084,
    "preview": "---\nname: Visual glitches report\nabout: Something doesn't look right\ntitle: ''\nlabels: bug, ray tracing, visual bug\nassi"
  },
  {
    "path": ".github/workflows/c-cpp.yml",
    "chars": 5370,
    "preview": "name: Build & Deploy Engine\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - 'ref/vk/data/**'\n  pull_request:\n    p"
  },
  {
    "path": ".gitignore",
    "chars": 5048,
    "preview": "# Binaries\n*.o\n*.so\n*.a\n*.framework\n\n# Other\n*.save\nprefix/\n\n# Qt Creator for some reason creates *.user.$version files,"
  },
  {
    "path": ".gitmodules",
    "chars": 1484,
    "preview": "[submodule \"mainui\"]\n\tpath = 3rdparty/mainui\n\turl = https://github.com/FWGS/mainui_cpp\n[submodule \"ref_gl/nanogl\"]\n\tpath"
  },
  {
    "path": "3rdparty/bzip2/wscript",
    "chars": 693,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\ndef options(opt):\n\tpass\n\ndef configure(conf):\n\tconf.define('_GNU_SOURCE', 1)\n\t"
  },
  {
    "path": "3rdparty/extras/wscript",
    "chars": 557,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\nimport os\n\ndef options(opt):\n\tpass\n\ndef configure(conf):\n\tif not conf.path.fin"
  },
  {
    "path": "3rdparty/gl4es/wscript",
    "chars": 785,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\nimport os\n\ndef options(opt):\n\tpass\n\ndef configure(conf):\n\tif not conf.path.fin"
  },
  {
    "path": "3rdparty/libbacktrace/wscript",
    "chars": 6719,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\nfrom waflib import TaskGen\nfrom waflib.Tools.c_config import DEFKEYS\n\nFRAGMENT"
  },
  {
    "path": "3rdparty/libogg/wscript",
    "chars": 1341,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\ndef options(opt):\n\tpass\n\ndef configure(conf):\n\tif not conf.path.find_dir('libo"
  },
  {
    "path": "3rdparty/opus/wscript",
    "chars": 4505,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\nimport os\n\nFRAGMENT_VLA='''int main (int argc, char **argv) {\n\tchar a[argc];\n\t"
  },
  {
    "path": "3rdparty/opusfile/wscript",
    "chars": 1058,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\ndef options(opt):\n\tpass\n\ndef configure(conf):\n\tif not conf.path.find_dir('opus"
  },
  {
    "path": "3rdparty/vorbis/wscript",
    "chars": 1843,
    "preview": "#! /usr/bin/env python\n# encoding: utf-8\n\nFRAGMENT_MEMORY_H='''#include <memory.h>\nint main (void) {\n\treturn 0;\n}'''\n\nFR"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6551,
    "preview": "# Specific instructions for this fork\n\n## Introduction\n1. This fork's only concern is the `ref_vk` Vulkan/RT renderer. E"
  },
  {
    "path": "Documentation/bug-compatibility.md",
    "chars": 1674,
    "preview": "# Bug-compatibility in Xash3D FWGS\n\nXash3D FWGS has special mode for games that rely on original engine bugs. In this mo"
  },
  {
    "path": "Documentation/cross-compiling-for-windows-with-wine.md",
    "chars": 852,
    "preview": "# Cross-compiling for Windows with Wine\n\nThis can be useful to test engine in Wine without using virtual machines or dua"
  },
  {
    "path": "Documentation/debugging-using-minidumps.md",
    "chars": 1412,
    "preview": "# Debugging your mod using minidump files (Windows only)\nMinidump files is awesome instrument for debugging your mod aft"
  },
  {
    "path": "Documentation/donate.md",
    "chars": 2096,
    "preview": "# Developers donation page\n\nOn this page you can find links where you can support each developer individually, who has p"
  },
  {
    "path": "Documentation/engine-porting-guide.md",
    "chars": 6556,
    "preview": "## Abstract\n\nBefore start, I would recommend you to compile and run engine for already supported and well-spread platfor"
  },
  {
    "path": "Documentation/environment-variables.md",
    "chars": 1159,
    "preview": "## Environment variables\n\n#### Xash3D FWGS\n\nThe engine respects these environment variables:\n\n| Variable              | "
  },
  {
    "path": "Documentation/extensions/addon-folders.md",
    "chars": 1186,
    "preview": "# Addon folders in Xash3D FWGS\n\nXash3D FWGS supports both GoldSource-style addon folders and has few own. Each directory"
  },
  {
    "path": "Documentation/extensions/console-scripting.md",
    "chars": 1642,
    "preview": "## Console variables\n\nConsole variables (or CVars) are present in all quake-based games.\n\nBy default, it is settings, cr"
  },
  {
    "path": "Documentation/extensions/entity-tools.md",
    "chars": 4057,
    "preview": "# Entity tools\n\nFor some features described below, you need to enable [console scripting](https://github.com/FWGS/xash3d"
  },
  {
    "path": "Documentation/extensions/expanded-common-structures.md",
    "chars": 845,
    "preview": "# Expanded structures that used by engine and mods\nTo make porting and developing mods on 64-bit platforms less painful,"
  },
  {
    "path": "Documentation/extensions/input-interface-ru.md",
    "chars": 1828,
    "preview": "## Цель\n\nНа текущий момент клиенты имеют некоторые части платформозависимого кода внутри себя. Это плохо, т.к. мы не мож"
  },
  {
    "path": "Documentation/extensions/input-interface.md",
    "chars": 1641,
    "preview": "## Purpose\n\nClients have different platform-depended input code now.\nIt is bad because we cannot use same functions (if "
  },
  {
    "path": "Documentation/extensions/library-naming.md",
    "chars": 3107,
    "preview": "I propose a new library naming scheme, which will allow to distribute mods and games in single archive to different oper"
  },
  {
    "path": "Documentation/extensions/mp3-loops.md",
    "chars": 1301,
    "preview": "## Looping MP3 extension\n\nIt is now possible to loop MP3 file in Xash3D FWGS by adding a custom text tag with `LOOP_STAR"
  },
  {
    "path": "Documentation/extensions/native-object.md",
    "chars": 1010,
    "preview": "# GetNativeObject API\n\nTo be able to use platform-specific features or get optional engine interfaces, we've added a sim"
  },
  {
    "path": "Documentation/extensions/sounds.lst.md",
    "chars": 2046,
    "preview": "# sounds.lst.md\n\nUsing sounds.lst located in scripts folder, modder can override some of the hardcoded sounds in temp en"
  },
  {
    "path": "Documentation/gameinfo.md",
    "chars": 9213,
    "preview": "# Game definition and information file\n\ngameinfo.txt is an essential part of any Xash3D based game. It allows basic cust"
  },
  {
    "path": "Documentation/goldsrc-protocol-support.md",
    "chars": 899,
    "preview": "# Support for GoldSrc network protocol\nThis feature is still work-in-progress, but for now it's available for all users,"
  },
  {
    "path": "Documentation/hd-textures.md",
    "chars": 1958,
    "preview": "### HD (external) textures support\n\nXash3D supports loading texture replacements in TGA format for almost all types of m"
  },
  {
    "path": "Documentation/mod-porting-guide.md",
    "chars": 5788,
    "preview": "# Self-made port\n## Compatibility with RISC architectures\n### Unaligned access\nUnaligned access on **i386** causes only "
  },
  {
    "path": "Documentation/musl.md",
    "chars": 725,
    "preview": "# Xash3D FWGS on `musl`\n\nXash3D FWGS works on `musl` out of the box. However, the engine doesn't try to differentiate gl"
  },
  {
    "path": "Documentation/nat-bypass-usage.md",
    "chars": 2539,
    "preview": "# NAT bypass feature in Xash3D FWGS\nSince IPv6 not as widespread as we would like, NAT (Network Address Translation) sti"
  },
  {
    "path": "Documentation/not-supported-mod-list-and-reasons-why.md",
    "chars": 2886,
    "preview": "# Not supported mods and reasons why\n\n|Name\t\t\t\t\t\t\t|Version\t\t\t|Why not working\t\t\t\t\t\t|What was made for that\n|----\t\t\t\t\t\t\t|"
  },
  {
    "path": "Documentation/opensource-mods.md",
    "chars": 15083,
    "preview": "Source code of this mods is available for modders and porters in public access.\n\n# Original Work\n## Absolute Zero\nOffici"
  },
  {
    "path": "Documentation/ports.md",
    "chars": 3054,
    "preview": "Xash3D FWGS is intended to be easily portable for various platforms, however main issue is maintaining such ports. \n\nThi"
  },
  {
    "path": "Documentation/psvita.md",
    "chars": 2611,
    "preview": "## PlayStation Vita port\n\n### Prerequisites\n1. Make sure your PSVita is [set up to run homebrew applications](https://vi"
  },
  {
    "path": "Documentation/supported-mod-list.md",
    "chars": 93369,
    "preview": "- [List of mods which work on Linux and other non-Windows platforms without troubles](#list-of-mods-which-work-on-linux-"
  },
  {
    "path": "Documentation/touch-controls.md",
    "chars": 6840,
    "preview": "# Touch controls configuring\n\n## Introduction\n\nThanks to mittorn, we have the ability to fully customize the controls in"
  },
  {
    "path": "README.md",
    "chars": 11430,
    "preview": "# Vulkan plus Ray Tracing (RTX) temporary fork of Xash3D FWGS engine\n[![GitHub Actions Status](https://github.com/w23/xa"
  },
  {
    "path": "android/.gitignore",
    "chars": 136,
    "preview": ".gradle/\nbuild/\n.externalNativeBuild\n.cxx/\n.idea/\nlocal.properties\n.project\n.classpath\n.gradle\n.settings\nrelease/\n*.hpro"
  },
  {
    "path": "android/app/build.gradle.kts",
    "chars": 3275,
    "preview": "import org.jetbrains.kotlin.gradle.dsl.JvmTarget\nimport java.time.LocalDateTime\nimport java.time.Month\nimport java.time."
  },
  {
    "path": "android/app/proguard-rules.pro",
    "chars": 4551,
    "preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
  },
  {
    "path": "android/app/run-python",
    "chars": 28,
    "preview": "#!/bin/bash\n\nexec python $@\n"
  },
  {
    "path": "android/app/run-python.bat",
    "chars": 10,
    "preview": "python %*\n"
  },
  {
    "path": "android/app/src/asan/res/values/strings.xml",
    "chars": 229,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"app_name\" translatable=\"false\">Xash3D FWGS (Test)</"
  },
  {
    "path": "android/app/src/asan/resources/lib/arm64-v8a/wrap.sh",
    "chars": 1065,
    "preview": "\n#!/system/bin/sh\nHERE=$(cd \"$(dirname \"$0\")\" && pwd)\ncmd=$1\nshift\n# This must be called *before* `LD_PRELOAD` is set. O"
  },
  {
    "path": "android/app/src/asan/resources/lib/armeabi-v7a/wrap.sh",
    "chars": 1065,
    "preview": "\n#!/system/bin/sh\nHERE=$(cd \"$(dirname \"$0\")\" && pwd)\ncmd=$1\nshift\n# This must be called *before* `LD_PRELOAD` is set. O"
  },
  {
    "path": "android/app/src/asan/resources/lib/x86_64/wrap.sh",
    "chars": 1065,
    "preview": "\n#!/system/bin/sh\nHERE=$(cd \"$(dirname \"$0\")\" && pwd)\ncmd=$1\nshift\n# This must be called *before* `LD_PRELOAD` is set. O"
  },
  {
    "path": "android/app/src/continuous/res/values/strings.xml",
    "chars": 229,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"app_name\" translatable=\"false\">Xash3D FWGS (Test)</"
  },
  {
    "path": "android/app/src/main/AndroidManifest.xml",
    "chars": 3260,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroid:all"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/DedicatedActivity.kt",
    "chars": 51,
    "preview": "package su.xash.engine\n\nclass DedicatedActivity {}\n"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/DedicatedService.kt",
    "chars": 230,
    "preview": "package su.xash.engine\n\nimport android.app.Service\nimport android.content.Intent\nimport android.os.IBinder\n\nclass Dedica"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/MainActivity.kt",
    "chars": 1266,
    "preview": "package su.xash.engine\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimport androidx.navigat"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/MainApplication.kt",
    "chars": 693,
    "preview": "package su.xash.engine\n\nimport android.app.Application\nimport android.content.Context\nimport android.os.StrictMode\nimpor"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/XashActivity.java",
    "chars": 4397,
    "preview": "package su.xash.engine;\n\nimport android.annotation.SuppressLint;\nimport android.content.pm.ActivityInfo;\nimport android."
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/adapters/GameAdapter.kt",
    "chars": 2102,
    "preview": "package su.xash.engine.adapters\n\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGro"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/model/BackgroundBitmap.kt",
    "chars": 2384,
    "preview": "package su.xash.engine.model\n\nimport android.graphics.Bitmap\nimport android.graphics.Canvas\nimport su.xash.engine.util.T"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/model/Game.kt",
    "chars": 4209,
    "preview": "package su.xash.engine.model\n\nimport android.content.Context\nimport android.content.Intent\nimport android.content.pm.Pac"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/library/LibraryFragment.kt",
    "chars": 5134,
    "preview": "package su.xash.engine.ui.library\n\nimport android.Manifest\nimport android.content.Intent\nimport android.content.pm.Packa"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/library/LibraryViewModel.kt",
    "chars": 1637,
    "preview": "package su.xash.engine.ui.library\n\nimport android.app.Application\nimport android.content.Context\nimport android.content."
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/settings/AppSettingsFragment.kt",
    "chars": 935,
    "preview": "package su.xash.engine.ui.settings\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/settings/AppSettingsPreferenceFragment.kt",
    "chars": 420,
    "preview": "package su.xash.engine.ui.settings\n\nimport android.os.Bundle\nimport androidx.preference.PreferenceFragmentCompat\nimport "
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/settings/GameSettingsFragment.kt",
    "chars": 1525,
    "preview": "package su.xash.engine.ui.settings\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/ui/settings/GameSettingsPreferenceFragment.kt",
    "chars": 1399,
    "preview": "package su.xash.engine.ui.settings\n\nimport android.os.Bundle\nimport androidx.preference.ListPreference\nimport androidx.p"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/util/AndroidBug5497Workaround.java",
    "chars": 1787,
    "preview": "package su.xash.engine.util;\n\nimport android.app.Activity;\nimport android.graphics.Rect;\nimport android.view.View;\nimpor"
  },
  {
    "path": "android/app/src/main/java/su/xash/engine/util/TGAReader.java",
    "chars": 18279,
    "preview": "/**\n * TGAReader.java\n * <p>\n * Copyright (c) 2014 Kenji Sasaki\n * Released under the MIT license.\n * https://github.com"
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_add_24.xml",
    "chars": 361,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_delete_24.xml",
    "chars": 409,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_folder_open_24.xml",
    "chars": 460,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_play_arrow_24.xml",
    "chars": 323,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_settings_24.xml",
    "chars": 1230,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/drawable/ic_baseline_terminal_24.xml",
    "chars": 506,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n  "
  },
  {
    "path": "android/app/src/main/res/layout/activity_main.xml",
    "chars": 1427,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/card_game.xml",
    "chars": 3961,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.google.android.material.card.MaterialCardView xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/edit_text_preference.xml",
    "chars": 1863,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.google.android.material.card.MaterialCardView xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/fragment_app_settings.xml",
    "chars": 536,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/fragment_game_settings.xml",
    "chars": 1353,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/fragment_library.xml",
    "chars": 843,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android=\"http://sche"
  },
  {
    "path": "android/app/src/main/res/layout/list_preference.xml",
    "chars": 826,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/layout/switch_preference.xml",
    "chars": 1501,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.google.android.material.card.MaterialCardView xmlns:android=\"http://schemas."
  },
  {
    "path": "android/app/src/main/res/menu/menu_game_settings.xml",
    "chars": 331,
    "preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\t"
  },
  {
    "path": "android/app/src/main/res/menu/menu_library.xml",
    "chars": 300,
    "preview": "<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\t"
  },
  {
    "path": "android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "chars": 333,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_foreground.xml",
    "chars": 409,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\" android:height=\"108dp\" android:viewportHeight=\"1024\" "
  },
  {
    "path": "android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_monochrome.xml",
    "chars": 411,
    "preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\" android:height=\"108dp\" android:viewportHeight=\"1024\" "
  },
  {
    "path": "android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "chars": 265,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <b"
  },
  {
    "path": "android/app/src/main/res/navigation/nav_graph.xml",
    "chars": 1007,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<navigation xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app"
  },
  {
    "path": "android/app/src/main/res/values/colors.xml",
    "chars": 267,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<color name=\"valve_red\">#F74843</color>\n\t<color name=\"hl_orange\">#FB"
  },
  {
    "path": "android/app/src/main/res/values/ic_launcher_background.xml",
    "chars": 118,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<color name=\"ic_launcher_background\">#F74843</color>\n</resources>\n"
  },
  {
    "path": "android/app/src/main/res/values/strings.xml",
    "chars": 1373,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"app_name\" translatable=\"false\">Xash3D FWGS</string>\n\t<"
  },
  {
    "path": "android/app/src/main/res/values/styles.xml",
    "chars": 215,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n\t<style name=\"ShapeAppearance.App.MediumComponent\" parent=\"ShapeAppe"
  },
  {
    "path": "android/app/src/main/res/values/themes.xml",
    "chars": 926,
    "preview": "<resources>\n\n\t<style name=\"Theme.App\" parent=\"Theme.Material3.Dark.NoActionBar\">\n\t\t<item name=\"colorPrimary\">@color/hl_o"
  },
  {
    "path": "android/app/src/main/res/values-es/strings.xml",
    "chars": 1496,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"app_name\" translatable=\"false\">Xash3D FWGS</string>\n\t<"
  },
  {
    "path": "android/app/src/main/res/values-pt-rBR/strings.xml",
    "chars": 1410,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"library\">Biblioteca</string>\n\t<string name=\"dedicated_"
  },
  {
    "path": "android/app/src/main/res/values-ru/strings.xml",
    "chars": 1340,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"library\">Библиотека</string>\n\t<string name=\"dedicated_"
  },
  {
    "path": "android/app/src/main/res/xml/app_preferences.xml",
    "chars": 494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PreferenceScreen xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txml"
  },
  {
    "path": "android/app/src/main/res/xml/game_preferences.xml",
    "chars": 1302,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PreferenceScreen xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\t<EditText"
  },
  {
    "path": "android/build.gradle.kts",
    "chars": 213,
    "preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\nplugins {\n\talias(lib"
  },
  {
    "path": "android/gradle/libs.versions.toml",
    "chars": 1185,
    "preview": "[versions]\nacraHttp = \"5.12.0\"\nagp = \"8.11.1\"\nappcompat = \"1.7.1\"\nkotlin = \"2.2.0\"\nmaterial = \"1.12.0\"\nnavigationRuntime"
  },
  {
    "path": "android/gradle/wrapper/gradle-wrapper.properties",
    "chars": 234,
    "preview": "#Tue Jul 01 19:51:06 EEST 2025\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\:/"
  },
  {
    "path": "android/gradle.properties",
    "chars": 1418,
    "preview": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will ov"
  },
  {
    "path": "android/gradlew",
    "chars": 4971,
    "preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n##  Gradle start "
  },
  {
    "path": "android/gradlew.bat",
    "chars": 2314,
    "preview": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem "
  },
  {
    "path": "android/settings.gradle.kts",
    "chars": 430,
    "preview": "pluginManagement {\n\trepositories {\n\t\tgoogle {\n\t\t\tcontent {\n\t\t\t\tincludeGroupByRegex(\"com\\\\.android.*\")\n\t\t\t\tincludeGroupBy"
  },
  {
    "path": "common/backends.h",
    "chars": 1396,
    "preview": "/*\nbackends.h - backend macro definitions\nCopyright (C) 2016 Mittorn\n\nThis program is free software: you can redistribut"
  },
  {
    "path": "common/beamdef.h",
    "chars": 1600,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/bspfile.h",
    "chars": 9183,
    "preview": "/*\nbspfile.h - BSP format included q1, hl1 support\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can"
  },
  {
    "path": "common/cl_entity.h",
    "chars": 2976,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/com_image.h",
    "chars": 5238,
    "preview": "#pragma once\n/*\n========================================================================\n\ninternal image format\n\ntypical"
  },
  {
    "path": "common/com_model.h",
    "chars": 15606,
    "preview": "/*\ncom_model.h - cient model structures\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "common/con_nprint.h",
    "chars": 762,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/const.h",
    "chars": 26520,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/cvardef.h",
    "chars": 4891,
    "preview": "/*\ncvardef.h - quake cvar definition\nCopyright (C) 1997-2001 Id Software, Inc.\nCopyright (C) 2024 Alibek Omarov\n\nThis pr"
  },
  {
    "path": "common/defaults.h",
    "chars": 4775,
    "preview": "/*\ndefaults.h - set up default configuration\nCopyright (C) 2016 Mittorn\n\nThis program is free software: you can redistri"
  },
  {
    "path": "common/demo_api.h",
    "chars": 764,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/dlight.h",
    "chars": 864,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/enginefeatures.h",
    "chars": 2393,
    "preview": "/*\nenginefeatures.h - engine features that can be enabled by mod-maker request\nCopyright (C) 2012 Uncle Mike\n\nThis progr"
  },
  {
    "path": "common/entity_state.h",
    "chars": 3717,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/entity_types.h",
    "chars": 750,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/event_api.h",
    "chars": 2787,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/event_args.h",
    "chars": 991,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/event_flags.h",
    "chars": 1584,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/gameinfo.h",
    "chars": 3033,
    "preview": "/*\ngameinfo.h - current game info\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribute it "
  },
  {
    "path": "common/hltv.h",
    "chars": 2420,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/ivoicetweak.h",
    "chars": 1215,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/kbutton.h",
    "chars": 1000,
    "preview": "/*\nCopyright (C) 1996-1997 Id Software, Inc.\n\nThis program is free software; you can redistribute it and/or\nmodify it un"
  },
  {
    "path": "common/lightstyle.h",
    "chars": 886,
    "preview": "/*\nlightstyle.h - lighstyle description\nCopyright (C) 2011 Uncle Mike\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "common/mathlib.h",
    "chars": 3216,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/net_api.h",
    "chars": 3283,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/netadr.h",
    "chars": 2377,
    "preview": "/*\nCopyright (C) 1997-2001 Id Software, Inc.\n\nThis program is free software; you can redistribute it and/or\nmodify it un"
  },
  {
    "path": "common/particledef.h",
    "chars": 1204,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/pmtrace.h",
    "chars": 1181,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/port.h",
    "chars": 2046,
    "preview": "/*\nport.h -- Portability Layer for Windows types\nCopyright (C) 2015 Alibek Omarov\n\nThis program is free software: you ca"
  },
  {
    "path": "common/qfont.h",
    "chars": 810,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/r_efx.h",
    "chars": 10949,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/r_studioint.h",
    "chars": 5757,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/ref_device.h",
    "chars": 1183,
    "preview": "/*\nref_device.h - common structures for retrieving GPU information for\nrefs, menu and engine\nCopyright (C) 2021 a1batros"
  },
  {
    "path": "common/ref_params.h",
    "chars": 2610,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/render_api.h",
    "chars": 13547,
    "preview": "/*\nrender_api.h - Xash3D extension for client interface\nCopyright (C) 2011 Uncle Mike\n\nThis program is free software: yo"
  },
  {
    "path": "common/screenfade.h",
    "chars": 994,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/studio_event.h",
    "chars": 910,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/synctype.h",
    "chars": 895,
    "preview": "/*\nsynctype.h -- shared synctype_t definition\nCopyright (C) 1996-1997 Id Software, Inc.\nCopyright (C) 2023 Alibek Omarov"
  },
  {
    "path": "common/triangleapi.h",
    "chars": 2031,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/usercmd.h",
    "chars": 1182,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/wadfile.h",
    "chars": 3691,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/weaponinfo.h",
    "chars": 1139,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "common/wrect.h",
    "chars": 661,
    "preview": "/*\nwrect.h - rectangle definition\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribute it "
  },
  {
    "path": "common/xash3d_types.h",
    "chars": 7231,
    "preview": "// basic typedefs\n#ifndef XASH_TYPES_H\n#define XASH_TYPES_H\n\n#include \"build.h\"\n\n#if XASH_IRIX\n#include <port.h>\n#endif\n"
  },
  {
    "path": "engine/alias.h",
    "chars": 3260,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "engine/anorms.h",
    "chars": 6295,
    "preview": "/*\nCopyright (C) 1996-1997 Id Software, Inc.\n\nThis program is free software; you can redistribute it and/or\nmodify it un"
  },
  {
    "path": "engine/cdll_exp.h",
    "chars": 4033,
    "preview": "/*\ncdll_exp.h - exports for client\nCopyright (C) 2013 Uncle Mike\n\nThis program is free software: you can redistribute it"
  },
  {
    "path": "engine/cdll_int.h",
    "chars": 11420,
    "preview": "/***\n*\n*\tCopyright (c) 1996-2002, Valve LLC. All rights reserved.\n*\n*\tThis product contains software technology licensed"
  },
  {
    "path": "engine/client/avi/avi.h",
    "chars": 1511,
    "preview": "/*\navi.h -- common avi support header\nCopyright (C) 2018 a1batross, Uncle Mike\n\nThis program is free software: you can r"
  },
  {
    "path": "engine/client/avi/avi_ffmpeg.c",
    "chars": 23118,
    "preview": "/*\navi_ffmpreg.c - playing AVI files (ffmpeg backend)\nCopyright (C) FTEQW developers (for plugins/avplug/avdecode.c)\nCop"
  },
  {
    "path": "engine/client/avi/avi_ffmpeg.h",
    "chars": 7680,
    "preview": "/*\navi_ffmpreg.c - playing AVI files (ffmpeg backend)\nCopyright (C) FTEQW developers (for plugins/avplug/avdecode.c)\nCop"
  },
  {
    "path": "engine/client/cl_cmds.c",
    "chars": 8810,
    "preview": "/*\ncl_cmds.c - client console commnds\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute"
  },
  {
    "path": "engine/client/cl_custom.c",
    "chars": 3627,
    "preview": "/*\ncl_custom.c - downloading custom resources\nCopyright (C) 2018 Uncle Mike\n\nThis program is free software: you can redi"
  },
  {
    "path": "engine/client/cl_debug.c",
    "chars": 5391,
    "preview": "/*\ncl_debug.c - server message debugging\nCopyright (C) 2018 Uncle Mike\n\nThis program is free software: you can redistrib"
  },
  {
    "path": "engine/client/cl_demo.c",
    "chars": 42032,
    "preview": "/*\ncl_demo.c - demo record & playback\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute"
  },
  {
    "path": "engine/client/cl_efrag.c",
    "chars": 4245,
    "preview": "/*\ngl_refrag.c - store entity fragments\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "engine/client/cl_efx.c",
    "chars": 46976,
    "preview": "\n\n#include \"common.h\"\n#include \"client.h\"\n#include \"customentity.h\"\n#include \"r_efx.h\"\n#include \"cl_tent.h\"\n#include \"pm"
  },
  {
    "path": "engine/client/cl_events.c",
    "chars": 11582,
    "preview": "/*\ncl_events.c - client-side event system implementation\nCopyright (C) 2011 Uncle Mike\n\nThis program is free software: y"
  },
  {
    "path": "engine/client/cl_font.c",
    "chars": 8656,
    "preview": "/*\ncl_font.c - bare bones engine font manager\nCopyright (C) 2023 Alibek Omarov\n\nThis program is free software: you can r"
  },
  {
    "path": "engine/client/cl_frame.c",
    "chars": 36289,
    "preview": "/*\ncl_frame.c - client world snapshot\nCopyright (C) 2008 Uncle Mike\n\nThis program is free software: you can redistribute"
  },
  {
    "path": "engine/client/cl_game.c",
    "chars": 89611,
    "preview": "/*\ncl_game.c - client dll interaction\nCopyright (C) 2008 Uncle Mike\n\nThis program is free software: you can redistribute"
  },
  {
    "path": "engine/client/cl_gameui.c",
    "chars": 31649,
    "preview": "/*\ncl_menu.c - menu dlls interaction\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribute "
  },
  {
    "path": "engine/client/cl_main.c",
    "chars": 102147,
    "preview": "/*\ncl_main.c - client main loop\nCopyright (C) 2009 Uncle Mike\n\nThis program is free software: you can redistribute it an"
  },
  {
    "path": "engine/client/cl_mobile.c",
    "chars": 4016,
    "preview": "/*\ncl_mobile.c - common mobile interface\nCopyright (C) 2015 a1batross\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "engine/client/cl_netgraph.c",
    "chars": 16973,
    "preview": "/*\ncl_netgraph.c - Draw Net statistics (borrowed from Xash3D SDL code)\nCopyright (C) 2016 Uncle Mike\n\nThis program is fr"
  },
  {
    "path": "engine/client/cl_parse.c",
    "chars": 67353,
    "preview": "/*\ncl_parse.c - parse a message received from the server\nCopyright (C) 2008 Uncle Mike\n\nThis program is free software: y"
  },
  {
    "path": "engine/client/cl_parse_48.c",
    "chars": 16469,
    "preview": "/*\ncl_parse.c - parse a message received from the server\nCopyright (C) 2008 Uncle Mike\n\nThis program is free software: y"
  },
  {
    "path": "engine/client/cl_parse_gs.c",
    "chars": 21309,
    "preview": "/*\ncl_parse.c - parse a message received from the server (GoldSrc 48 protocol)\nCopyright (C) 2008 Uncle Mike\n\nThis progr"
  },
  {
    "path": "engine/client/cl_pmove.c",
    "chars": 32367,
    "preview": "/*\ncl_pmove.c - client-side player physic\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistri"
  },
  {
    "path": "engine/client/cl_qparse.c",
    "chars": 28985,
    "preview": "/*\ncl_qparse.c - parse a message received from the Quake demo\nCopyright (C) 2018 Uncle Mike\n\nThis program is free softwa"
  },
  {
    "path": "engine/client/cl_remap.c",
    "chars": 12100,
    "preview": "/*\ngl_remap.c - remap model textures\nCopyright (C) 2011 Uncle Mike\n\nThis program is free software: you can redistribute "
  },
  {
    "path": "engine/client/cl_render.c",
    "chars": 10352,
    "preview": "/*\ncl_render.c - RenderAPI loader & implementation\nCopyright (C) 2019 a1batross\n\nThis program is free software: you can "
  },
  {
    "path": "engine/client/cl_scrn.c",
    "chars": 23638,
    "preview": "/*\ncl_scrn.c - refresh screen\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute it and/"
  },
  {
    "path": "engine/client/cl_securedstub.c",
    "chars": 15138,
    "preview": "/*\ncl_securedstub.c - secured client dll stub\nCopyright (C) 2022 FWGS\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "engine/client/cl_spray.c",
    "chars": 4707,
    "preview": "/*\ncl_spray.c - spray conversion for GoldSrc protocol\nCopyright (C) 2025 Xash3D FWGS contributors\n\nThis program is free "
  },
  {
    "path": "engine/client/cl_tent.c",
    "chars": 80802,
    "preview": "/*\ncl_tent.c - temp entity effects management\nCopyright (C) 2009 Uncle Mike\n\nThis program is free software: you can redi"
  },
  {
    "path": "engine/client/cl_tent.h",
    "chars": 7893,
    "preview": "/*\ncl_tent.h - efx api set\nCopyright (C) 2010 Uncle Mike\n\nThis program is free software: you can redistribute it and/or "
  },
  {
    "path": "engine/client/cl_video.c",
    "chars": 5621,
    "preview": "/*\ncl_video.c - avi video player\nCopyright (C) 2009 Uncle Mike\n\nThis program is free software: you can redistribute it a"
  },
  {
    "path": "engine/client/cl_view.c",
    "chars": 13673,
    "preview": "/*\ncl_view.c - player rendering positioning\nCopyright (C) 2009 Uncle Mike\n\nThis program is free software: you can redist"
  },
  {
    "path": "engine/client/client.h",
    "chars": 37833,
    "preview": "/*\nclient.h - primary header for client\nCopyright (C) 2009 Uncle Mike\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "engine/client/console.c",
    "chars": 51904,
    "preview": "/*\nconsole.c - developer console\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute it a"
  },
  {
    "path": "engine/client/gamma.c",
    "chars": 40153,
    "preview": "/*\ngamma.c - gamma routines\nCopyright (C) 2011 Uncle Mike\n\nThis program is free software: you can redistribute it and/or"
  },
  {
    "path": "engine/client/identification.c",
    "chars": 15465,
    "preview": "/*\nidentification.c - unique id generation\nCopyright (C) 2017 mittorn\n\nThis program is free software: you can redistribu"
  },
  {
    "path": "engine/client/in_joy.c",
    "chars": 10719,
    "preview": "/*\njoyinput.c - joystick common input code\n\nCopyright (C) 2016 a1batross\n\nThis program is free software: you can redistr"
  },
  {
    "path": "engine/client/in_touch.c",
    "chars": 65139,
    "preview": "/*\ntouch.c - touchscreen support prototype\nCopyright (C) 2015-2018 mittorn\n\nThis program is free software: you can redis"
  },
  {
    "path": "engine/client/input.c",
    "chars": 13452,
    "preview": "/*\ninput.c - win32 input devices\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute it a"
  },
  {
    "path": "engine/client/input.h",
    "chars": 3615,
    "preview": "/*\ninput.h - win32 input devices\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute it a"
  },
  {
    "path": "engine/client/keys.c",
    "chars": 25453,
    "preview": "/*\nkeys.c - console key events\nCopyright (C) 2007 Uncle Mike\n\nThis program is free software: you can redistribute it and"
  }
]

// ... and 812 more files (download for full content)

About this extraction

This page contains the full source code of the w23/xash3d-fwgs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1012 files (8.0 MB), approximately 2.1M tokens, and a symbol index with 7954 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!