Files
libretro/emulators/idtech4a++.yml
T

663 lines
33 KiB
YAML

emulator: idTech4A++
type: standalone
core_classification: game_engine
source: "https://github.com/glKarin/com.n0n3m4.diii4a"
upstream: "https://github.com/glKarin/com.n0n3m4.diii4a"
author: "glKarin"
profiled_date: "2026-09-17"
source_commit: "ce49510f3b0c04969eab8ebe8238416e84e4f0bb"
core_version: "1.1.0harmattan73"
display_name: "id Tech engine collection (idTech4A++)"
cores:
- "idtech4a++"
- idtech4amm
- diii4a
systems:
- doom
- doom3
- doom3-bfg
- quake
- quake2
- quake3
- quake4
- prey
- wolfenstein3d
- return-to-castle-wolfenstein
- wolfenstein-enemy-territory
- realrtcw
- the-dark-mod
- jedi-academy
- jedi-outcast
- medal-of-honor-allied-assault
- urban-terror
- enemy-territory-quake-wars
- skin-deep
- quadrilateral-cowboy
- icarus-starship-command-simulator
- hexen2
- half-life
- half-life-2
- serious-sam
mode: standalone
notes: |
Android package com.karin.idTech4Amm, arm64-v8a and armeabi-v7a, Android 4.4+,
GPLv3, forked from n0n3m4's DIII4A. A Java launcher picks a game and a command
line, then loads one of twenty-six engine libraries into the Q3E frontend,
which owns the GL surface, the on-screen controls and the audio path. Another
application starts a game directly through com.n0n3m4.q3e.Q3EMain with a `game`
extra carrying the game token and a `command` extra carrying an argument vector
that begins with `game.arm`.
ref: README.md:13-26, 248-262,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:8-33, 91-116, 303,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGlobals.java:9,
idTech4Amm/build.gradle:10-14, 23
Game data lives under a working directory, `/sdcard/diii4a` unless the
preference names another, and each game reads a base folder inside it. With the
standalone-directory preference on, which is the default, the base folder sits
under a per-game subdirectory; with it off, games that are not marked always
standalone read the base folder directly under the working directory. The Dark
Mod, UZDOOM, FTEQW, ECWolf, Xash3D, Source and both Serious Sam entries are
always standalone and keep their subdirectory either way.
ref: Q3E/src/main/java/com/n0n3m4/q3e/Q3EInterface.java:89, 106, 233-254,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:147-202, 421,
443-461
Engine, standalone directory and base folder per game, in registration order:
DOOM 3 (dante, doom3/base), Quake 4 (dante, quake4/q4base), Prey 2006 (dante,
prey/preybase), Enemy Territory: QUAKE Wars (Splash Damage idTech4,
etqw/etqwbase), DOOM 3 BFG (RBDOOM-3-BFG 1.4.0, doom3bfg/base), The Dark Mod
2.14 (darkmod), Skin Deep 1.0.4 (skindeep/base), Quadrilateral Cowboy
1.0.2602252 (qc/base), Icarus Starship Command Simulator 1.0.9 (icarus/base),
Quake III Arena (ioquake3 1.36, quake3/baseq3), Return to Castle Wolfenstein
(iortcw 1.51d, rtcw/main), Wolfenstein: Enemy Territory (ET: Legacy 2.83.2,
etw/etmain), Jedi Academy (OpenJK 1.0.1.1, openja/base), Jedi Outcast (OpenJK
1.0.1.1, openjo/base), Medal of Honor: Allied Assault (OpenMOHAA 0.82.1,
openmohaa/main), Urban Terror (Q3-UT4 4.3.4, urt/q3ut4), RealRTCW 5.43
(realrtcw/Main), Quake II (Yamagi 8.60, quake2/baseq2), Quake (Darkplaces,
quake1/darkplaces/id1), UZDOOM 4.14.3 (uzdoom), Wolfenstein 3D (ECWolf 1.4.2,
ecwolf), FTEQW 1.05 (fteqw), Xash3D 0.21 (xash/valve), Source Engine 1.16
(srceng/hl2), Serious Sam TFE 1.10.7 (serioussamtfe) and Serious Sam TSE 1.10.7
(serioussamtse). Every one is built in this configuration; the F-Droid flavour
leaves out Xash3D and Source, and the idtech flavour leaves out those two and
Serious Sam. DOOM 3 BFG carries a second library for its Vulkan renderer.
ref: Q3E/src/main/java/com/n0n3m4/q3e/Q3EGame.java:17-291,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:204-230,
Q3E/src/main/jni/CMakeLists.txt:33-60, 137-266
The retail data is what the user brings, and no engine here names its archives
one by one. The idTech 4 lineage lists `.pk4` in the game directory, DOOM 3 BFG
lists `.resources`, Yamagi walks `pak0` through `pak99` for each of its four
container suffixes and then globs the rest, and Serious Sam globs `*.gro`. What
every id-derived engine does gate on is `default.cfg` inside those archives: an
empty read is a fatal error, and only the Splash Damage build is compiled past
the check. UZDOOM ends with "Cannot find a game IWAD" when no known IWAD is
present, and ECWolf with "Can not find base game data. (*.wl6, *.wl1, *.sdm,
*.sod, *.n3d)". The launcher carries a store or homepage link per game and mod
so the data can be bought or downloaded.
ref: doom3/neo/framework/FileSystem.cpp:2052, 2503, 3392-3400,
Q3E/src/main/jni/doom3bfg/neo/framework/FileSystem.cpp:3001, 3173,
Q3E/src/main/jni/darkmod/framework/FileSystem.cpp:2650-2657,
Q3E/src/main/jni/quake3/code/qcommon/files.c:4161-4165,
Q3E/src/main/jni/rtcw/SP/code/qcommon/files.c:4340-4344,
Q3E/src/main/jni/jk/code/qcommon/files.cpp:3020,
Q3E/src/main/jni/openmohaa/code/qcommon/files.cpp:4011,
Q3E/src/main/jni/quake2/yquake2/src/common/filesystem.c:1801-1850,
Q3E/src/main/jni/zdoom/src/d_iwad.cpp:738,
Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:766,
idTech4Amm/src/main/java/com/karin/idTech4Amm/sys/GameResourceUrl.java:14-118
The Quake III lineage keeps id's release checksums for `baseq3` pak0 through
pak8 and `missionpack` pak0 through pak3, and an archive whose value disagrees
only draws a console warning telling the user to re-copy from the CD or
re-install the point release. Those numbers are a block checksum over the CRCs
of the archive members, not a hash of the file, so they identify a release
rather than validate a download.
ref: Q3E/src/main/jni/quake3/code/qcommon/files.c:178-197, 3572-3690,
Q3E/src/main/jni/quake3/code/qcommon/qcommon.h:592-593
UZDOOM reads the IWAD names it will accept from `iwadinfo.txt` inside
`game_support.pk3`: the DOOM, DOOM II, Final DOOM, BFG and KEX re-releases,
Freedoom, Heretic, Hexen, Strife, Blasphemer, Chex Quest, Action Doom 2, HacX,
Harmony, Square, Delaweare and Return of the Triad, forty-nine names. The
launcher itself names four of them as selectable data files, DOOM.WAD,
DOOM2.WAD, freedoom1.wad and freedoom2.wad, because UZDOOM and ECWolf are the
two games whose data is a file rather than a folder.
ref: Q3E/src/main/jni/zdoom/src/d_iwad.cpp:287-297, 321-342,
Q3E/src/main/jni/zdoom/src/version.h:100-102,
idTech4Amm/src/main/java/com/karin/idTech4Amm/sys/Game.java:69-72,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EInterface.java:710-713
Starting a game extracts that game's bundled resources first. A text file named
`idtech4amm.version` is written beside them and compared on the next run, so an
engine update replaces the copy and a user edit survives otherwise. The Dark
Mod, DOOM 3 BFG, UZDOOM, Xash3D, Source, Enemy Territory, ECWolf, Skin Deep and
ETQW are covered by this path; the bot, Rivensin and translation archives are
extracted on request from the launcher instead.
ref: Q3E/src/main/java/com/n0n3m4/q3e/Q3EMain.java:167,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:667-746, 964-984,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResource.java:12-47,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:32-218
On-screen button images are read through a search path built from the working
directory, the external files directory of the package, its internal data
directory and the assets of the apk, plus every `.zipak` archive found in the
first three. A file of the same name in any of them replaces the built-in
image, and a folder under `controls_theme/` becomes a named theme in the
chooser, described by a `description.txt` that may be suffixed with a language
tag.
ref: Q3E/src/main/java/com/n0n3m4/q3e/karin/KFDManager.java:66-96,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EContextUtils.java:236-241, 305-345,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGlobals.java:230,
idTech4Amm/src/main/java/com/n0n3m4/DIII4A/launcher/SetupControlsThemeFunc.java:149-179
files:
- name: uzdoom.pk3
required: true
bundled: true
category: game_data
path: "uzdoom/uzdoom.pk3"
size: 3007398
md5: d3f231863ee2973dbc9291e853d1eb4a
sha1: dd2364da2cc8b49e32330ba9abff80727b4ea0a0
description: "UZDOOM engine resource archive"
note: >-
Named by BASEWAD and searched before anything else; a miss ends the process
with "Cannot find uzdoom.pk3". Carries the hex font, the widget resources
and the script definitions the engine needs before a game is chosen. Copied
out of the apk with the rest of the UZDOOM resource directory.
source_ref: "Q3E/src/main/jni/zdoom/src/version.h:100, Q3E/src/main/jni/zdoom/src/d_main.cpp:3707-3713, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:94-103"
- name: game_support.pk3
required: true
bundled: true
category: game_data
path: "uzdoom/game_support.pk3"
size: 2382047
md5: 64d976172bae64edb10e542f14f2de9f
sha1: cccab57d1d1b84601fa0c52a74f55bf7b36f4e1c
description: "UZDOOM IWAD definitions and per-game filters"
note: >-
Named by OPTIONALWAD and opened as the second file of the IWAD manager. It
holds the IWADINFO lump, so without it no IWAD is recognised and startup
ends on "Cannot find a game IWAD" even when the WAD is in place. Also
carries the per-game filter trees keyed by IWAD identity.
source_ref: "Q3E/src/main/jni/zdoom/src/version.h:102, Q3E/src/main/jni/zdoom/src/d_main.cpp:3744-3746, Q3E/src/main/jni/zdoom/src/d_iwad.cpp:321-342, 738"
- name: game_widescreen_gfx.pk3
required: false
bundled: true
category: game_data
path: "uzdoom/game_widescreen_gfx.pk3"
size: 5565936
md5: 8ebf4d4a7b950f156c6c277ed9244aac
sha1: 9ff11fca19550b189cc8e7d4cafc9897d57cd472
description: "Widescreen replacements for the stock graphics"
note: >-
Searched by name and loaded only when the startup dialog leaves widescreen
graphics enabled.
source_ref: "Q3E/src/main/jni/zdoom/src/d_main.cpp:2083"
- name: lights.pk3
required: false
bundled: true
category: game_data
path: "uzdoom/lights.pk3"
size: 24030
md5: 5e5977e018d3ef2dfda2607b0b3e57ae
sha1: 19ad73cae23b5d9f3890ae29542a2d3e611bda00
description: "Dynamic light definitions"
note: >-
Searched by name on the user choice recorded at first start, and offered a
second time as a launcher switch that appends it to the file list.
source_ref: "Q3E/src/main/jni/zdoom/src/d_main.cpp:2066-2075, Q3E/src/main/java/com/n0n3m4/q3e/Q3EInterface.java:1138, idTech4Amm/src/main/java/com/n0n3m4/DIII4A/GameLauncher.java:558"
- name: brightmaps.pk3
required: false
bundled: true
category: game_data
path: "uzdoom/brightmaps.pk3"
size: 246181
md5: 302fd7cffd2b197c5c68778f877d3086
sha1: ccb1fb093dc128da46a5060ba319c5bd5790e074
description: "Brightmap definitions"
note: >-
Loaded on the same choice and the same launcher switch as the light
definitions.
source_ref: "Q3E/src/main/jni/zdoom/src/d_main.cpp:2066-2081, Q3E/src/main/java/com/n0n3m4/q3e/Q3EInterface.java:1140, idTech4Amm/src/main/java/com/n0n3m4/DIII4A/GameLauncher.java:565"
- name: uzdoom.sf2
required: false
bundled: true
category: game_data
path: "uzdoom/soundfonts/uzdoom.sf2"
size: 3299098
md5: f306ebc541a428d296cd3b7ee996d872
sha1: 4394193fb95c1e59916efe9ac3a47952ab5002f5
description: "SoundFont for the MIDI devices"
note: >-
Collected by scanning a `soundfonts` directory added to the search paths of
the config file (Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:220, 258);
every .sf2 and zipped GUS patch set found there becomes a menu entry.
fluid_patchset defaults to GAMENAMELOWERCASE, "uzdoom", which
FindSoundFont matches against the file base name.
source_ref: "Q3E/src/main/jni/zdoom/src/version.h:110, Q3E/src/main/jni/zdoom/src/common/audio/music/music_config.cpp:119, Q3E/src/main/jni/zdoom/src/common/audio/music/i_soundfont.cpp:335-370, 458-468"
- name: GENMIDI.GS.wopl
required: false
bundled: true
category: game_data
path: "uzdoom/fm_banks/GENMIDI.GS.wopl"
size: 118767
md5: 29570afc6ccea3d9ef7d2734f02e6cab
sha1: 538d220d87b86b997f539265eb12a6c319e17a1c
description: "OPL3 instrument bank"
note: >-
Collected from an `fm_banks` directory added to the search paths beside the
soundfont directory, for the OPL synthesiser.
source_ref: "Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:221, 259"
- name: gs-by-papiezak-and-sneakernets.wopn
required: false
bundled: true
category: game_data
path: "uzdoom/fm_banks/gs-by-papiezak-and-sneakernets.wopn"
size: 274864
md5: 4978fd39a6d78de1cf1021e24424f822
sha1: eaca5d7a9fe1db6094990be0d8916b7f97920db1
description: "OPN2 instrument bank"
note: >-
Collected from the same `fm_banks` directory, for the OPN2 synthesiser.
source_ref: "Q3E/src/main/jni/zdoom/src/gameconfigfile.cpp:221, 259"
- name: ecwolf.pk3
required: true
bundled: true
category: game_data
path: "ecwolf/ecwolf.pk3"
size: 185013
md5: d9dcd91db4a0bc45ba12a01ad1828be8
sha1: d327b48f83d9b95c5a49597145d96be80be3eade
description: "ECWolf engine resource archive"
note: >-
Named by MAIN_PK3 and passed to the game selector with the program
directory (Q3E/src/main/jni/ecwolf/src/wl_main.cpp:1294-1307); failing
to open it ends the process with "Could not open ecwolf.pk3!". It holds the IWADINFO rules that identify which Wolfenstein
data set is present, the palettes and the actor definitions. This build
reads it from disk after extraction, unlike the libretro core which
compiles it in.
source_ref: "Q3E/src/main/jni/ecwolf/src/version.h:12, Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:604, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:186-195"
- name: glprogs.pk4
required: true
bundled: true
category: game_data
size: 98425
md5: a0fcf6c54d453a80c8aac693d17979b8
sha1: 604636a62dd04c90392b19adf61d3a62381dfb02
description: "The Dark Mod GLSL shader set rewritten for OpenGL ES"
note: >-
Unpacked into the standalone directory as `glslprogs/`, the tree the
renderer compiles its programs from. Version-stamped with the engine
release and a patch number, so a Dark Mod update or a shader fix replaces
it. TDM_GLSL_SHADER_VERSION reads 2.14.2 here: the four SSAO programs
moved their uniform-dependent initialisers out of global scope and cast
their integer terms to float. The 2.14.1 pack it replaced is kept as a
variant.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:83-92, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:748-767, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:391, Q3E/src/main/jni/darkmod/glslprogs/ssao.frag.glsl:78-80, 163-166"
- name: renderprogs.pk4
required: true
bundled: true
category: game_data
size: 223453
md5: 7edee35e1e53475d9557c1026877ae7c
sha1: ab89141b5772de1df43831e64c53aece28c2e6f6
description: "DOOM 3 BFG shader set rewritten for OpenGL ES"
note: >-
Unpacked into `base/renderprogs/` beside the game resources. The shipped
BFG data carries the desktop HLSL set, which this build cannot use.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:72-81, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:811-829, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:393"
- name: glsl.pk4
required: true
bundled: true
category: game_data
size: 51642
md5: b94d15df5bf72a4c4510c834ef404ebb
sha1: 87f0f5ec3db3855c4453a9031ce695d39d0eaa44
description: "Skin Deep shader set rewritten for OpenGL ES"
note: >-
Unpacked into `base/glsl/` and stamped with the game version.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:197-206, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:769-788, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:399"
- name: zzz_etqwbase.pk4
required: true
bundled: true
category: game_data
size: 141815
md5: 5b72ab7bb1c295c30b9cbb274a4bd6e9
sha1: e37810f05cc9a2e40b47a274184fe9347fef1393
description: "ETQW shader set and megatexture patches"
note: >-
Unpacked into the ETQW base folder. The name sorts last so the entries
override the ones the retail archives carry. ETQW_GLSL_SHADER_VERSION
names the set the build expects and reads .6 here; the .3 pack it
replaced is kept as a variant for older builds.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:208-217, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:790-809, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:400"
- name: legacy_v2.83.2.pk3
required: true
bundled: true
category: game_data
path: "etw/legacy/legacy_v2.83.2.pk3"
size: 30993701
md5: ea838df0911a68b5f22f5010d37867f5
sha1: f156945f70545e37fb5ee33a95ee97204a7f60b7
description: "ET: Legacy mod archive matching the built engine"
note: >-
Copied into the `legacy` folder, the mod the engine runs by default; the
retail Enemy Territory data in `etmain` stays the user's to supply. The
file name is built from the engine version, so a Legacy update lands under
a new name.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:175-184, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:888-911, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:397"
- name: extras.pk3
required: true
bundled: true
category: game_data
path: "xash/extras.pk3"
size: 1491748
md5: 1a65bf279b969c017a34497d183e5544
sha1: 971249b94cb62fbca2f42c8ab7a7d29d30e5b368
description: "Xash3D touch controls, fonts and controller database"
note: >-
Mounted ahead of every game directory from the path in
XASH3D_EXTRAS_PAK1. It carries the touch-control textures the mobile build
draws and the gamecontrollerdb.txt the SDL joystick layer reads through the
virtual filesystem.
source_ref: "xash3d-fwgs filesystem/filesystem.c:1376-1378, xash3d-fwgs engine/platform/sdl2/joy_sdl2.c:346, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:142-151"
- name: cs16client-extras.pk3
required: false
bundled: true
category: game_data
path: "xash/cs16client-extras.pk3"
size: 12976942
md5: 15bf94e95c94c301f92270b6775b9a3d
sha1: ab0c9f66e9e9be4af96c20d5ce3a9d684eeff2c2
description: "Counter-Strike 1.6 client resources for Xash3D"
note: >-
Extracted right after the base extras and mounted the same way, for the
cs16 and cs16_yapb server classes the launcher offers.
source_ref: "xash3d-fwgs filesystem/filesystem.c:1380-1382, Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:153-162, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:858-886, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:412"
- name: extras.zip
required: true
bundled: true
category: game_data
size: 15081926
md5: 15944b9068602a6d36905be035e9e547
sha1: 388bfce5ba834f5ed329a0fa9864b0b75840e951
description: "Source engine fonts and platform archive"
note: >-
Unpacked into `files/` under the Source standalone directory. It carries
the DejaVu, Droid Sans Fallback, Itim and Liberation faces the engine
substitutes for the Windows fonts, and extras_dir.vpk.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:164-173, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:938-961, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:383, 396"
- name: d3_sabot_a7.pk4
required: false
bundled: true
category: game_data
path: "doom3/base/zzz_idTech4Amm_d3_sabot_a7.pk4"
size: 2399406
md5: 494bd9601fc82752cc6c6d14cf684d8e
sha1: 8179522bcd5abc4c5a3194bf49f6821738644500
description: "Stupid Angry Bot definitions for DOOM 3 multiplayer"
note: >-
Extracted on request into the current mod folder under a name prefixed to
sort last. It holds the defs, scripts and multiplayer AAS files the bot
commands need. A second entry repacks only the `maps/` tree into
zzz_idTech4Amm_d3_sabot_a7_aas.pk4 for users who already have the mod.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:48-58, 129-140, README.md:267-270"
- name: q4_sabot_a9.pk4
required: false
bundled: true
category: game_data
path: "quake4/q4base/zzz_idTech4Amm_q4_sabot_a9.pk4"
size: 21143072
md5: 710997decddd8ace044d028fe79b52e9
sha1: a3af9251c6a2b4b8d02108bd7b91919aace929dd
description: "Stupid Angry Bot definitions for Quake 4 multiplayer"
note: >-
The Quake 4 counterpart, extracted the same way, with the same
maps-only variant written as zzz_idTech4Amm_q4_sabot_a9_aas.pk4.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:36-46, 116-127, README.md:267-270"
- name: play_original_doom3_level.pk4
required: false
bundled: true
category: game_data
path: "doom3/rivensin/zzz_idTech4Amm_play_original_doom3_level.pk4"
size: 16866
md5: 214e3daebf5d11e40cd06ca5e1b02971
sha1: de368e97ca86f489c1f10ea148e0812913c25c7d
description: "Rivensin patch restoring the original DOOM 3 levels"
note: >-
Extracted on request into the `rivensin` mod folder, the one patch tied to
a named mod rather than to whichever mod is selected.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:60-70"
- name: doom3_chinese_translation_doom3bfg.pk4
required: false
bundled: true
category: game_data
path: "doom3/base/doom3_chinese_translation_doom3bfg.pk4"
size: 5138117
md5: 4fa638d0accdd696149d83f3579d185e
sha1: 8c06159ab1012b271d39d624b45c55c2360dc443
description: "Chinese text and fonts for DOOM 3, taken from the BFG release"
note: >-
Copied into the DOOM 3 base folder on request. It pairs with the
wide-character language and BFG font support compiled into the engine.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EPatchResourceManager.java:105-114, README.md:37, README.md:174-175"
- name: controls_theme.zipak
required: false
bundled: true
size: 3133490
md5: 9f6f5073fda93251f7a48a91a6d4c5d1
sha1: 5be92df9e74843bc6071e3627f4fd876d499a490
description: "Button image themes carried in the apk"
note: >-
Read in place from the assets, never extracted. Archives with this suffix
are folded into the search path wherever they are found, and the
`controls_theme/` folders inside become named entries in the theme chooser;
this one carries the cs16-client and source-engine sets.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGlobals.java:230, Q3E/src/main/java/com/n0n3m4/q3e/karin/KFDManager.java:44, 102, 113-129, Q3E/src/main/java/com/n0n3m4/q3e/karin/KFileDescriptor.java:56, 102"
- name: btn_jump.png
required: false
bundled: true
description: "Default on-screen button images, 52 files"
note: >-
Read from the assets root when the theme is the built-in one. The set
covers the alphabet, the digits and the named actions the games bind, and
any of the 52 names can be replaced by putting a file of the same name in
one of the external search paths.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EContextUtils.java:348-370, idTech4Amm/src/main/java/com/n0n3m4/DIII4A/launcher/SetupControlsThemeFunc.java:167-177"
- name: generic.json
required: false
bundled: true
path: "keyboard/generic.json"
size: 10278
md5: ef9b27699a627334930f6d4252b644d5
sha1: 839c05a60c231d409f90b477bf2001c28f10b1bb
description: "Virtual keyboard layout"
note: >-
Read straight from the assets when the on-screen keyboard is built, without
going through the external search path, so nothing outside the archive
replaces it.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EKeyboard.java:74"
- name: autoexec.cfg
required: false
description: "Console script the engine runs at startup"
note: >-
Executed by the id-derived engines from the mod folder and from the base
folder. The launcher lists both positions next to the config file each game
writes for itself, DoomConfig.cfg, Quake4Config.cfg, preyconfig.cfg,
q3config.cfg, wolfconfig.cfg, Darkmod.cfg, uzdoom.ini and the rest, and
opens any of them in its editor. The config files are written by the
engines; this one only ever comes from the user.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EInterface.java:722-836, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:63-88, idTech4Amm/src/main/java/com/karin/idTech4Amm/ConfigEditorActivity.java:103"
- name: description.txt
required: false
description: "Blurb shown for a mod in the chooser"
note: >-
Read from the root of a mod folder when the mod list is built and shown
under the folder name with its size. The control theme chooser reads a file
of the same name from a theme folder, there with an optional language
suffix.
source_ref: "idTech4Amm/src/main/java/com/n0n3m4/DIII4A/launcher/ChooseGameModFunc.java:242-251, Q3E/src/main/java/com/n0n3m4/q3e/Q3EContextUtils.java:330-341"
- name: controller_map.txt
required: false
load_from: internal_storage
description: "Extra SDL controller mappings"
note: >-
SDL builds this path from the internal storage directory of the package
when SDL_GAMECONTROLLERCONFIG_FILE is unset, which it is here, and reads it
while the game controller subsystem starts, after the compiled-in mappings
and before the ones the environment carries. It reaches the six games the
app runs on SDL, Xash3D, Source, ECWolf, Skin Deep, Quadrilateral Cowboy
and Icarus; the other engines take input from the Q3E frontend instead. The
SDL2 tree under deplibs is what the build compiles, version 2.32.5.
source_ref: "Q3E/src/main/jni/deplibs/SDL2/src/joystick/SDL_gamecontroller.c:1873-1884, 1890-1916, Q3E/src/main/jni/deplibs/SDL2/include/SDL_version.h:59-61, Q3E/src/main/jni/CMakeLists.txt:90-102, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:430, 454-461"
- name: "controls_theme/<name>/btn_jump.png"
required: false
description: "Button images of a user theme"
note: >-
A folder under `controls_theme/` in any search path, or inside a `.zipak`
there, appears in the chooser under its own name and its images replace the
built-in ones. A `description.txt` beside them, optionally suffixed with a
language tag, supplies the name, author and description the chooser shows.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EContextUtils.java:305-345, idTech4Amm/src/main/java/com/n0n3m4/DIII4A/launcher/SetupControlsThemeFunc.java:136-179"
- name: gameaarch64.so
path: "doom3/base/gameaarch64.so"
required: false
description: "DOOM 3 game library for arm64, built from the DOOM 3 SDK the README links"
note: >-
Looked for in the mod folder of DOOM 3, Quake 4, Prey or ETQW when the
external-library preference is on, copied to a private cache and named to
the engine through harm_fs_gameLibPath. The folder is the one fs_game
names, the base folder of the game when it names none. The file name
follows the running architecture, gameaarch64.so on arm64 and gamearm.so
on armv7. Without it the engine keeps the game code built into the apk.
The launcher also accepts a full path to any libxxxxx.so instead.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGlobals.java:276, Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameConstants.java:147-150, idTech4Amm/src/main/java/com/n0n3m4/DIII4A/launcher/AddExternalLibraryFunc.java:71-86, README.md:240-244, README.md:252-262"
- name: gamearm.so
path: "doom3/base/gamearm.so"
required: false
description: "DOOM 3 game library for armv7, built from the DOOM 3 SDK the README links"
note: "Looked for in the DOOM 3 base folder under the same preference, armv7 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gameaarch64.so
path: "doom3/d3xp/gameaarch64.so"
required: false
description: "DOOM 3 Resurrection of Evil game library for arm64, built from the DOOM 3 SDK the README links"
note: "Looked for in the d3xp mod folder of DOOM 3 under the same preference, arm64 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gamearm.so
path: "doom3/d3xp/gamearm.so"
required: false
description: "DOOM 3 Resurrection of Evil game library for armv7, built from the DOOM 3 SDK the README links"
note: "Looked for in the d3xp mod folder of DOOM 3 under the same preference, armv7 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gameaarch64.so
path: "doom3/bloodmod/gameaarch64.so"
required: false
description: "DOOM 3 Blood Mod game library for arm64, released from the DOOM 3 SDK repository"
note: "Looked for in the bloodmod mod folder of DOOM 3 under the same preference, arm64 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gamearm.so
path: "doom3/bloodmod/gamearm.so"
required: false
description: "DOOM 3 Blood Mod game library for armv7, released from the DOOM 3 SDK repository"
note: "Looked for in the bloodmod mod folder of DOOM 3 under the same preference, armv7 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gameaarch64.so
path: "quake4/q4base/gameaarch64.so"
required: false
description: "Quake 4 game library for arm64, built from the Quake 4 SDK the README links"
note: "Looked for in the Quake 4 base folder under the same preference, arm64 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gamearm.so
path: "quake4/q4base/gamearm.so"
required: false
description: "Quake 4 game library for armv7, built from the Quake 4 SDK the README links"
note: "Looked for in the Quake 4 base folder under the same preference, armv7 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gameaarch64.so
path: "prey/preybase/gameaarch64.so"
required: false
description: "Prey game library for arm64, built from the Prey SDK the README links"
note: "Looked for in the Prey base folder under the same preference, arm64 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: gamearm.so
path: "prey/preybase/gamearm.so"
required: false
description: "Prey game library for armv7, built from the Prey SDK the README links"
note: "Looked for in the Prey base folder under the same preference, armv7 builds only."
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:386-416, 472-479"
- name: server.so
required: false
aliases: [client.so, menu.so]
unsourceable: "compiled per mod from hlsdk-portable, with no released binary to collect"
description: "External Xash3D game libraries"
note: >-
Read from `lib/<arch>/` inside the Xash3D mod folder when the
external-library preference is on, copied to the private cache and passed
as the dll, clientlib and menulib parameters with gamelibdir pointing at
the cache. The three default names are used unless the command line names
others, and any further libraries in the folder are copied alongside.
source_ref: "Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:417-458, 488-520"
exclusion_note: >
The retail game data is not listed. Every engine here loads it by globbing the
base folder rather than by name, `.pk4` for the idTech 4 lineage, `.resources`
for DOOM 3 BFG, the four container suffixes for Yamagi, `*.gro` for Serious
Sam, and what it gates on is a `default.cfg` that lives inside those archives
rather than beside them. The names that do appear in the code are the forty-nine
the DOOM engine accepts as an IWAD, read from `iwadinfo.txt` in
`game_support.pk3`, the four the launcher offers as selectable UZDOOM data
files, and the five extensions ECWolf reports when no Wolfenstein data is
found; all of them are game content, held here the same way the PrBoom and
boom3 profiles hold theirs, in the notes. `stdout.txt` and `stderr.txt` are
opened for writing by the engine and read back only to show the last run log,
and an `idtech4amm.version` stamp is written beside each extracted resource.
ref: doom3/neo/framework/FileSystem.cpp:2052, 3397-3399,
Q3E/src/main/jni/quake2/yquake2/src/common/filesystem.c:1801-1850,
SeriousSamClassic SamTFE/Sources/Engine/Base/Stream.cpp:212-247,
Q3E/src/main/jni/ecwolf/src/wl_iwad.cpp:766,
Q3E/src/main/jni/q3e/q3emisc.c:23-25,
idTech4Amm/src/main/java/com/n0n3m4/DIII4A/GameLauncher.java:2899, 2916,
Q3E/src/main/java/com/n0n3m4/q3e/Q3EGameHelper.java:740-746