emulator: Hurrican type: standalone core_classification: game_engine source: "https://github.com/HurricanGame/Hurrican" upstream: "https://github.com/HurricanGame/Hurrican" profiled_date: "2026-10-04" source_commit: "0d91d1f2d40f38d21e7f41afc01369ee55649fb6" core_version: ~ display_name: "Hurrican" cores: [hurrican] systems: [] verification: existence notes: | Turrican-style platformer by Poke53280. The repository ships the game data under Hurrican/data/ (textures, levels, music, sfx, shaders, gamecontrollerdb.txt) and the language files under Hurrican/lang/. main() (Hurrican/src/Main.cpp:342) sets two roots: g_storage_ext: the read-only data root. Taken from --pathdata or -PD (Hurrican/src/Main.cpp:227-241, 349-352), else from the compile-time USE_STORAGE_PATH when that directory exists, else "." (Hurrican/src/Main.cpp:354-366). g_save_ext and g_config_ext: saves, high scores and Hurrican.cfg. Taken from --pathsave or -PS, else XDG_DATA_HOME and XDG_CONFIG_HOME on builds with USE_HOME_DIR, else "." (Hurrican/src/Main.cpp:370-385). Paths below are written under hurrican/, which stands for g_storage_ext. Files read under g_storage_ext: lang/*.lng: Hurrican/src/Main.cpp:496-515, Hurrican/src/Texts.cpp:65 data/textures/: Hurrican/src/DX8Texture.cpp:204-211 data/levels/levellist.dat: Hurrican/src/Texts.cpp:127 data/levels/: Hurrican/src/Tileengine.cpp:330 data/music/: Hurrican/src/DX8Sound.cpp:314 data/sfx/: Hurrican/src/DX8Sound.cpp:580 data/shaders//: Hurrican/src/DX8Graphics.cpp:393-428 data/gamecontrollerdb.txt: Hurrican/src/DX8Input.cpp:97-99 A texture, level, song or sample that cannot be found sets GameRunning to false and the game quits. --custom reads data/levels// first for levels, textures, custom.lng and levellist.dat. files: - name: "lang/" type: directory path: "hurrican/lang/" category: game_data description: "Language files (.lng)" required: true bundled: true source_ref: "Hurrican/src/Main.cpp:496-515, Hurrican/src/Texts.cpp:65" note: > GameInit lists the .lng files of lang/, then of the working directory, and aborts when it finds none. - name: "textures/" type: directory path: "hurrican/data/textures/" category: game_data description: "Textures (sprites, backgrounds, fonts)" required: true bundled: true source_ref: "Hurrican/src/DX8Texture.cpp:204-218" note: > An optional scalefactors.txt in the same directory is read by ReadScaleFactorsFiles (Hurrican/src/DX8Texture.cpp:162-168). - name: "levels/" type: directory path: "hurrican/data/levels/" category: game_data description: "Level files and levellist.dat" required: true bundled: true source_ref: "Hurrican/src/Tileengine.cpp:330-336, Hurrican/src/Texts.cpp:127-133" - name: "shaders/" type: directory path: "hurrican/data/shaders/" category: game_data description: "GLSL shader sources, one subdirectory per GLSL version" required: true bundled: true source_ref: "Hurrican/src/DX8Graphics.cpp:393-428" note: > Loaded by the GL2 and GL3 renderers (GL2 is the build default); a GL1 build compiles this block out. - name: "music/" type: directory path: "hurrican/data/music/" category: game_data description: "Music tracks" required: true bundled: true source_ref: "Hurrican/src/DX8Sound.cpp:314-320" - name: "sfx/" type: directory path: "hurrican/data/sfx/" category: game_data description: "Sound effect samples" required: true bundled: true source_ref: "Hurrican/src/DX8Sound.cpp:580-586" - name: "gamecontrollerdb.txt" path: "hurrican/data/gamecontrollerdb.txt" category: game_data description: "SDL game controller mapping database" required: false bundled: true source_ref: "Hurrican/src/DX8Input.cpp:97-102" note: "Passed to SDL_GameControllerAddMappingsFromFile; the result is only logged."