├── .gitattributes
├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── general-issue-or-feature-request.md
│ └── mod-issues.md
├── .gitignore
├── .gitmodules
├── CMakeLists.txt
├── CMakeSettings.json
├── CONTRIBUTING.md
├── Info.plist.in
├── LICENSE
├── README.md
├── appveyor.yml
├── game
├── bink
│ ├── README.md
│ ├── frame.cpp
│ ├── frame.h
│ ├── video.cpp
│ └── video.h
├── build.h
├── camera.cpp
├── camera.h
├── commandline.cpp
├── commandline.h
├── dmusic
│ ├── band.cpp
│ ├── band.h
│ ├── directmusic.cpp
│ ├── directmusic.h
│ ├── dlscollection.cpp
│ ├── dlscollection.h
│ ├── hydra.cpp
│ ├── hydra.h
│ ├── info.cpp
│ ├── info.h
│ ├── mixer.cpp
│ ├── mixer.h
│ ├── music.cpp
│ ├── music.h
│ ├── pattern.cpp
│ ├── pattern.h
│ ├── patternlist.cpp
│ ├── patternlist.h
│ ├── reference.cpp
│ ├── reference.h
│ ├── riff.cpp
│ ├── riff.h
│ ├── segment.cpp
│ ├── segment.h
│ ├── soundfont.cpp
│ ├── soundfont.h
│ ├── structs.h
│ ├── style.cpp
│ ├── style.h
│ ├── track.cpp
│ ├── track.h
│ ├── wave.cpp
│ └── wave.h
├── game
│ ├── aiouputpipe.cpp
│ ├── aiouputpipe.h
│ ├── aistate.cpp
│ ├── aistate.h
│ ├── compatibility
│ │ ├── ikarus.cpp
│ │ ├── ikarus.h
│ │ ├── lego.cpp
│ │ ├── lego.h
│ │ ├── mem32.cpp
│ │ ├── mem32.h
│ │ ├── phoenix.cpp
│ │ ├── phoenix.h
│ │ ├── scriptplugin.cpp
│ │ └── scriptplugin.h
│ ├── constants.h
│ ├── damagecalculator.cpp
│ ├── damagecalculator.h
│ ├── definitions
│ │ ├── cameradefinitions.cpp
│ │ ├── cameradefinitions.h
│ │ ├── fightaidefinitions.cpp
│ │ ├── fightaidefinitions.h
│ │ ├── musicdefinitions.cpp
│ │ ├── musicdefinitions.h
│ │ ├── particlesdefinitions.cpp
│ │ ├── particlesdefinitions.h
│ │ ├── sounddefinitions.cpp
│ │ ├── sounddefinitions.h
│ │ ├── spelldefinitions.cpp
│ │ ├── spelldefinitions.h
│ │ ├── svmdefinitions.cpp
│ │ ├── svmdefinitions.h
│ │ ├── visualfxdefinitions.cpp
│ │ └── visualfxdefinitions.h
│ ├── fightalgo.cpp
│ ├── fightalgo.h
│ ├── gamescript.cpp
│ ├── gamescript.h
│ ├── gamesession.cpp
│ ├── gamesession.h
│ ├── gametime.h
│ ├── globaleffects.cpp
│ ├── globaleffects.h
│ ├── inventory.cpp
│ ├── inventory.h
│ ├── movealgo.cpp
│ ├── movealgo.h
│ ├── perceptionmsg.h
│ ├── playercontrol.cpp
│ ├── playercontrol.h
│ ├── questlog.cpp
│ ├── questlog.h
│ ├── savegameheader.cpp
│ ├── savegameheader.h
│ ├── serialize.cpp
│ ├── serialize.h
│ ├── worldstatestorage.cpp
│ └── worldstatestorage.h
├── gamemusic.cpp
├── gamemusic.h
├── gothic.cpp
├── gothic.h
├── graphics
│ ├── bounds.cpp
│ ├── bounds.h
│ ├── drawbuckets.cpp
│ ├── drawbuckets.h
│ ├── drawclusters.cpp
│ ├── drawclusters.h
│ ├── drawcommands.cpp
│ ├── drawcommands.h
│ ├── dynamic
│ │ ├── frustrum.cpp
│ │ └── frustrum.h
│ ├── effect.cpp
│ ├── effect.h
│ ├── instancestorage.cpp
│ ├── instancestorage.h
│ ├── inventoryrenderer.cpp
│ ├── inventoryrenderer.h
│ ├── lightgroup.cpp
│ ├── lightgroup.h
│ ├── lightsource.cpp
│ ├── lightsource.h
│ ├── material.cpp
│ ├── material.h
│ ├── mdlvisual.cpp
│ ├── mdlvisual.h
│ ├── mesh
│ │ ├── animation.cpp
│ │ ├── animation.h
│ │ ├── animationsolver.cpp
│ │ ├── animationsolver.h
│ │ ├── animmath.cpp
│ │ ├── animmath.h
│ │ ├── attachbinder.cpp
│ │ ├── attachbinder.h
│ │ ├── landscape.cpp
│ │ ├── landscape.h
│ │ ├── pose.cpp
│ │ ├── pose.h
│ │ ├── protomesh.cpp
│ │ ├── protomesh.h
│ │ ├── skeleton.cpp
│ │ ├── skeleton.h
│ │ └── submesh
│ │ │ ├── animmesh.cpp
│ │ │ ├── animmesh.h
│ │ │ ├── packedmesh.cpp
│ │ │ ├── packedmesh.h
│ │ │ ├── pfxemittermesh.cpp
│ │ │ ├── pfxemittermesh.h
│ │ │ ├── staticmesh.cpp
│ │ │ └── staticmesh.h
│ ├── meshobjects.cpp
│ ├── meshobjects.h
│ ├── objvisual.cpp
│ ├── objvisual.h
│ ├── pfx
│ │ ├── particlefx.cpp
│ │ ├── particlefx.h
│ │ ├── pfxbucket.cpp
│ │ ├── pfxbucket.h
│ │ ├── pfxobjects.cpp
│ │ └── pfxobjects.h
│ ├── renderer.cpp
│ ├── renderer.h
│ ├── rtscene.cpp
│ ├── rtscene.h
│ ├── sceneglobals.cpp
│ ├── sceneglobals.h
│ ├── shaders.cpp
│ ├── shaders.h
│ ├── sky
│ │ ├── sky.cpp
│ │ └── sky.h
│ ├── visualfx.cpp
│ ├── visualfx.h
│ ├── visualobjects.cpp
│ ├── visualobjects.h
│ ├── worldview.cpp
│ └── worldview.h
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── marvin.cpp
├── marvin.h
├── physics
│ ├── collisionworld.cpp
│ ├── collisionworld.h
│ ├── dynamicworld.cpp
│ ├── dynamicworld.h
│ ├── physicmesh.cpp
│ ├── physicmesh.h
│ ├── physicmeshshape.cpp
│ ├── physicmeshshape.h
│ ├── physics.h
│ ├── physicvbo.cpp
│ └── physicvbo.h
├── resources.cpp
├── resources.h
├── sound
│ ├── soundfx.cpp
│ └── soundfx.h
├── ui
│ ├── chapterscreen.cpp
│ ├── chapterscreen.h
│ ├── consolewidget.cpp
│ ├── consolewidget.h
│ ├── dialogmenu.cpp
│ ├── dialogmenu.h
│ ├── documentmenu.cpp
│ ├── documentmenu.h
│ ├── gamemenu.cpp
│ ├── gamemenu.h
│ ├── inventorymenu.cpp
│ ├── inventorymenu.h
│ ├── menuroot.cpp
│ ├── menuroot.h
│ ├── stacklayout.cpp
│ ├── stacklayout.h
│ ├── touchinput.cpp
│ ├── touchinput.h
│ ├── videowidget.cpp
│ └── videowidget.h
├── utils
│ ├── crashlog.cpp
│ ├── crashlog.h
│ ├── dbgpainter.cpp
│ ├── dbgpainter.h
│ ├── fileext.h
│ ├── fileutil.cpp
│ ├── fileutil.h
│ ├── gthfont.cpp
│ ├── gthfont.h
│ ├── inifile.cpp
│ ├── inifile.h
│ ├── installdetect.cpp
│ ├── installdetect.h
│ ├── installdetect.mm
│ ├── keycodec.cpp
│ ├── keycodec.h
│ ├── mouseutil.cpp
│ ├── mouseutil.h
│ ├── parser.cpp
│ ├── parser.h
│ ├── string_frm.h
│ ├── versioninfo.h
│ ├── workers.cpp
│ └── workers.h
└── world
│ ├── aiqueue.cpp
│ ├── aiqueue.h
│ ├── bullet.cpp
│ ├── bullet.h
│ ├── collisionzone.cpp
│ ├── collisionzone.h
│ ├── focus.cpp
│ ├── focus.h
│ ├── fplock.cpp
│ ├── fplock.h
│ ├── objects
│ ├── fireplace.cpp
│ ├── fireplace.h
│ ├── globalfx.cpp
│ ├── globalfx.h
│ ├── interactive.cpp
│ ├── interactive.h
│ ├── item.cpp
│ ├── item.h
│ ├── itemtorchburning.cpp
│ ├── itemtorchburning.h
│ ├── npc.cpp
│ ├── npc.h
│ ├── pfxemitter.cpp
│ ├── pfxemitter.h
│ ├── sound.cpp
│ ├── sound.h
│ ├── staticobj.cpp
│ ├── staticobj.h
│ ├── vob.cpp
│ ├── vob.h
│ ├── vobbundle.cpp
│ └── vobbundle.h
│ ├── spaceindex.cpp
│ ├── spaceindex.h
│ ├── triggers
│ ├── abstracttrigger.cpp
│ ├── abstracttrigger.h
│ ├── codemaster.cpp
│ ├── codemaster.h
│ ├── cscamera.cpp
│ ├── cscamera.h
│ ├── earthquake.cpp
│ ├── earthquake.h
│ ├── messagefilter.cpp
│ ├── messagefilter.h
│ ├── movercontroler.cpp
│ ├── movercontroler.h
│ ├── movetrigger.cpp
│ ├── movetrigger.h
│ ├── pfxcontroller.cpp
│ ├── pfxcontroller.h
│ ├── touchdamage.cpp
│ ├── touchdamage.h
│ ├── trigger.cpp
│ ├── trigger.h
│ ├── triggerlist.cpp
│ ├── triggerlist.h
│ ├── triggerscript.cpp
│ ├── triggerscript.h
│ ├── triggerworldstart.cpp
│ ├── triggerworldstart.h
│ ├── zonetrigger.cpp
│ └── zonetrigger.h
│ ├── waymatrix.cpp
│ ├── waymatrix.h
│ ├── waypath.cpp
│ ├── waypath.h
│ ├── waypoint.cpp
│ ├── waypoint.h
│ ├── world.cpp
│ ├── world.h
│ ├── worldlight.cpp
│ ├── worldlight.h
│ ├── worldobjects.cpp
│ ├── worldobjects.h
│ ├── worldsound.cpp
│ └── worldsound.h
├── icon.ico
├── icon.rc
├── lib
├── edd-dbg
│ ├── CMakeLists.txt
│ ├── include
│ │ └── dbg
│ │ │ ├── assert.hpp
│ │ │ ├── config.hpp
│ │ │ ├── debugger.hpp
│ │ │ ├── fatality.hpp
│ │ │ ├── frames.hpp
│ │ │ ├── impl
│ │ │ ├── format.hpp
│ │ │ ├── quality_infraction.hpp
│ │ │ └── raise.hpp
│ │ │ ├── log.hpp
│ │ │ ├── logstream.hpp
│ │ │ ├── note.hpp
│ │ │ ├── static_assert.hpp
│ │ │ ├── symbols.hpp
│ │ │ ├── symlog.hpp
│ │ │ ├── throw.hpp
│ │ │ ├── unusual.hpp
│ │ │ └── version.hpp
│ └── src
│ │ ├── assert.cpp
│ │ ├── envvar.hpp
│ │ ├── format.cpp
│ │ ├── frames_common.cpp
│ │ ├── log.cpp
│ │ ├── logstream.cpp
│ │ ├── memcpy_cast.hpp
│ │ ├── note.cpp
│ │ ├── osx
│ │ ├── debugger.cpp
│ │ ├── envvar.cpp
│ │ ├── frames.cpp
│ │ ├── symbols.cpp
│ │ ├── throw_state.cpp
│ │ └── timestamp.cpp
│ │ ├── quality_infraction.cpp
│ │ ├── spin_mutex.hpp
│ │ ├── symlog.cpp
│ │ ├── throw.cpp
│ │ ├── throw_state.hpp
│ │ ├── timestamp.hpp
│ │ ├── timestamp_common.cpp
│ │ ├── unusual.cpp
│ │ └── windows
│ │ ├── dbghelp.cpp
│ │ ├── dbghelp.hpp
│ │ ├── debugger.cpp
│ │ ├── dll.cpp
│ │ ├── dll.hpp
│ │ ├── envvar.cpp
│ │ ├── frames.cpp
│ │ ├── mingw
│ │ ├── file.cpp
│ │ ├── file.hpp
│ │ ├── pe.cpp
│ │ ├── pe.hpp
│ │ ├── pe_symtab.cpp
│ │ ├── pe_symtab.hpp
│ │ └── symbols.cpp
│ │ ├── ms_symdb.cpp
│ │ ├── ms_symdb.hpp
│ │ ├── msvc
│ │ └── symbols.cpp
│ │ ├── symsink.cpp
│ │ ├── throw_state.cpp
│ │ └── timestamp.cpp
└── miniz
│ ├── ChangeLog.md
│ ├── LICENSE
│ ├── miniz.c
│ ├── miniz.h
│ └── readme.md
├── packaging
└── opengothic.appdata.xml
├── scr0.png
├── scripts
├── Gothic2Notr.bat
└── Gothic2Notr.sh
└── shader
├── CMakeLists.txt
├── antialiasing
└── cmaa2
│ ├── cmaa2_common.glsl
│ ├── deferred_color_apply_2x2.frag
│ ├── deferred_color_apply_2x2.vert
│ ├── edge_color2x2.comp
│ └── process_candidates.comp
├── common.glsl
├── copy.comp
├── copy.frag
├── copy.vert
├── copy_img.comp
├── epipolar
├── epipolar_common.glsl
├── fog_epipolar.comp
├── fog_epipolar_occlusion.comp
└── fog_shadow_sample.comp
├── hiz
├── hiz_mip.comp
└── hiz_pot.comp
├── inventory
├── item.frag
└── item.vert
├── lighting
├── ambient_light.frag
├── direct_light.frag
├── irradiance.comp
├── light.frag
├── light.vert
├── purkinje_shift.glsl
├── rt
│ ├── probe_allocation.comp
│ ├── probe_ambient.frag
│ ├── probe_aux.comp
│ ├── probe_common.glsl
│ ├── probe_dbg.frag
│ ├── probe_dbg.vert
│ ├── probe_hit_dbg.frag
│ ├── probe_hit_dbg.vert
│ ├── probe_lighting.comp
│ ├── probe_trace.comp
│ └── rt_common.glsl
├── shadow_sampling.glsl
├── sky_exposure.comp
├── tonemapping.frag
└── tonemapping.glsl
├── link_shaders.cmake
├── materials
├── cluster_init.comp
├── cluster_patch.comp
├── main.frag
├── main.tesc
├── main.tese
├── main.vert
├── materials_common.glsl
├── pfx.vert
├── vertex_process.glsl
└── visibility_pass.comp
├── patch.comp
├── rtsm
├── rtsm_clear.comp
├── rtsm_clear_omni.comp
├── rtsm_common.glsl
├── rtsm_cull_lights.comp
├── rtsm_culling.comp
├── rtsm_culling_omni.comp
├── rtsm_dbg.frag
├── rtsm_direct_light.frag
├── rtsm_hiz_pages.comp
├── rtsm_mark_fog_pages.comp
├── rtsm_mark_pages.comp
├── rtsm_meshlet_complex.comp
├── rtsm_meshlet_cull.comp
├── rtsm_meshlet_omni.comp
├── rtsm_position.comp
├── rtsm_primitive_cull.comp
├── rtsm_raster.comp
├── rtsm_raster_omni.comp
├── rtsm_rendering.comp
├── rtsm_sample_cull.comp
├── rtsm_scratch.glsl
└── rtsm_tile_bboxes.glsl
├── scalar_ops.glsl
├── scene.glsl
├── sky
├── clouds.glsl
├── clouds_lut.comp
├── fog.frag
├── fog_epipolar.frag
├── fog_view_lut.comp
├── shadow_downsample.comp
├── sky.frag
├── sky_common.glsl
├── sky_multi_scattering.frag
├── sky_pathtrace.frag
├── sky_transmittance.frag
├── sky_view_clouds_lut.frag
├── sky_view_lut.frag
├── sun.frag
└── sun.vert
├── software_rendering
├── sw_light.comp
├── sw_rendering_imm.comp
├── sw_rendering_tbr.comp
└── vbuffer_blit.frag
├── ssao
├── ssao.comp
└── ssao_blur.comp
├── stash.frag
├── upscale
└── lanczos.glsl
├── virtual_shadow
├── vsm_alloc_pages.comp
├── vsm_alloc_pages2.comp
├── vsm_clear.comp
├── vsm_clear_omni.comp
├── vsm_clump_pages.comp
├── vsm_common.glsl
├── vsm_cull_lights.comp
├── vsm_direct_light.frag
├── vsm_fog_shadow.comp
├── vsm_fog_trace.comp
├── vsm_list_pages.comp
├── vsm_mark_omni_pages.comp
├── vsm_mark_pages.comp
├── vsm_merge_pages.comp
├── vsm_pack_draws.comp
├── vsm_postprocess_omni.comp
├── vsm_rendering.comp
├── vsm_sort_pages.comp
├── vsm_trim_pages.comp
└── vsm_visibility_pass.comp
└── water
├── gerstner_wave.glsl
├── underwater.frag
├── water_reflection.frag
└── water_reflection.mesh
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **Save-game/Log-file/Screenshots/Video**
14 | If applicable, add screenshots or save-game file to help explain your problem.
15 |
16 | **Application log**
17 | If relevant attach `log.txt` file or, in case of game-crash, `crash.log`
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/general-issue-or-feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: General issue or feature request
3 | about: Some general request
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/mod-issues.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Mod issues
3 | about: Issue with modded gothic2
4 | title: ''
5 | labels: mod
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the issue**
11 | A clear and concise description of what the bug is.
12 |
13 | **Information about the mod**
14 | Please provide mod name and download link.
15 |
16 | **Save-game/Log-file/Screenshots/Video**
17 | If applicable, add screenshots or save-game file to help explain your problem.
18 |
19 | **Application log**
20 | If relevant attach `log.txt` file or, in case of game-crash, `crash.log`
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Dynamic libraries
2 | *.so
3 | *.dylib
4 | *.dll
5 |
6 | # Executables
7 | *.exe
8 | *.out
9 | *.app
10 |
11 | # IDE
12 | CMakeLists.txt.user*
13 | .idea
14 |
15 | # Build-dir
16 | build/
17 | build-*/
18 | bin/log.txt
19 | bin/crash.log
20 | bin/dbg.bin
21 | bin/*.sav
22 | bin/Gothic.ini
23 | out/*
24 |
25 | # internal
26 | .vs/
27 | internal/
28 |
29 | #os
30 | .DS_Store
31 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "lib/Tempest"]
2 | path = lib/Tempest
3 | url = https://github.com/Try/Tempest.git
4 | [submodule "lib/bullet3"]
5 | path = lib/bullet3
6 | url = https://github.com/bulletphysics/bullet3.git
7 | [submodule "lib/TinySoundFont"]
8 | path = lib/TinySoundFont
9 | url = https://github.com/schellingb/TinySoundFont.git
10 | [submodule "lib/ZenKit"]
11 | path = lib/ZenKit
12 | url = https://github.com/GothicKit/ZenKit.git
13 | [submodule "lib/dmusic"]
14 | path = lib/dmusic
15 | url = https://github.com/GothicKit/dmusic.git
16 |
--------------------------------------------------------------------------------
/CMakeSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "configurations": [
3 | {
4 | "name": "x64-Debug",
5 | "generator": "Ninja",
6 | "configurationType": "Debug",
7 | "inheritEnvironments": [ "msvc_x64_x64" ],
8 | "buildRoot": "${projectDir}\\out\\build\\${name}",
9 | "installRoot": "${projectDir}\\out\\install\\${name}",
10 | "cmakeCommandArgs": "",
11 | "buildCommandArgs": "",
12 | "ctestCommandArgs": ""
13 | },
14 | {
15 | "name": "x64-Profile",
16 | "generator": "Ninja",
17 | "configurationType": "RelWithDebInfo",
18 | "buildRoot": "${projectDir}\\out\\build\\${name}",
19 | "installRoot": "${projectDir}\\out\\install\\${name}",
20 | "cmakeCommandArgs": "",
21 | "buildCommandArgs": "",
22 | "ctestCommandArgs": "",
23 | "inheritEnvironments": [ "msvc_x64_x64" ],
24 | "variables": []
25 | }
26 | ]
27 | }
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ## Contributing
2 |
3 | This page design to help you contribute to this project.
4 |
5 | ### Project structure
6 | - OpenGothic
7 | - Game - game itself
8 | - shader - glsl shaders
9 | - lib
10 | - MoltenTempest - graphics engine
11 | - bullet3 - physic engine
12 | - ZenLib - gothic-asset loading library
13 | - TinySoundFont - midi sound support library
14 | - edd-dbg - crashlog library
15 |
16 | ### Tracking of progress and bug reporting
17 | Those guidlined are not strict, just a recomandations rather.
18 | This project uses wiki to track not implemented features and issues to track bugs:
19 |
20 | * Features:
21 | [Detailed list of features](https://github.com/Try/OpenGothic/wiki/Feature-list)
22 | You can create a issue, if you want to work on a feature and want to notify everyone.
23 |
24 | * Script-api:
25 | [Detailed list of implemented api functions](https://github.com/Try/OpenGothic/wiki/Daedalus-scripts)
26 |
27 | * Bugs in already implemented stuff:
28 | This is a good case for issue
29 |
30 | * Bugs in partially implemented feature:
31 | You can submit a issue, if this bug causes crash, or makes game unplayable somehow.
32 |
33 | * Renderer:
34 | At this moment I'm looking forward to rewrite it - not much need in issues here
35 |
36 |
--------------------------------------------------------------------------------
/Info.plist.in:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${MACOSX_BUNDLE_EXECUTABLE_NAME}
9 | CFBundleGetInfoString
10 | ${MACOSX_BUNDLE_INFO_STRING}
11 | CFBundleIconFile
12 | ${MACOSX_BUNDLE_ICON_FILE}
13 | CFBundleIdentifier
14 | ${MACOSX_BUNDLE_GUI_IDENTIFIER}
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleLongVersionString
18 | ${MACOSX_BUNDLE_LONG_VERSION_STRING}
19 | CFBundleName
20 | ${MACOSX_BUNDLE_BUNDLE_NAME}
21 | CFBundlePackageType
22 | APPL
23 | CFBundleShortVersionString
24 | ${MACOSX_BUNDLE_SHORT_VERSION_STRING}
25 | CFBundleSignature
26 | ????
27 | CFBundleVersion
28 | ${MACOSX_BUNDLE_BUNDLE_VERSION}
29 | CSResourcesFileMapped
30 |
31 | NSHumanReadableCopyright
32 | ${MACOSX_BUNDLE_COPYRIGHT}
33 | UIFileSharingEnabled
34 |
35 | LSSupportsOpeningDocumentsInPlace
36 |
37 | com.apple.developer.kernel.increased-memory-limit
38 |
39 | UILaunchScreen
40 |
41 | UIColorName
42 | black
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Try
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/game/bink/README.md:
--------------------------------------------------------------------------------
1 | ### This folder contains a Bink-video codec
2 |
3 | Implementation is based on ffmpeg library source code (LGPLv2.1+).
4 | Codec itself is completely independent unit, which does not require any other OpenGothic parts in order to work - fell free to use it for your open-source game remake.
5 |
6 | Classes:
7 | * Bink::Video - video codec
8 | * Bink::Frame - frame image
9 | * Bink::Video::Input - data input adapter
10 | * Bink::Frame::Plane - one of YUV planes
11 |
12 | Usage example:
13 | ```c++
14 | #include
15 |
16 | MyInput fin(filename); // see Bink::Video::Input
17 | Bink::Video vid(&fin);
18 | for(size_t i=0; i
4 | #include
5 | #include
6 |
7 | namespace Bink {
8 |
9 | class Video;
10 |
11 | class Frame final {
12 | public:
13 | Frame();
14 | Frame(Frame&&) = default;
15 | Frame& operator = (Frame&&) = default;
16 |
17 | class Plane final {
18 | public:
19 | void getPixels8x8 (uint32_t rx, uint32_t ry, uint8_t* out) const;
20 |
21 | void getBlock8x8 (uint32_t x, uint32_t y, uint8_t* out) const;
22 | void putBlock8x8 (uint32_t x, uint32_t y, const uint8_t* in);
23 | void putScaledBlock(uint32_t x, uint32_t y, const uint8_t* in);
24 | void fill (uint8_t v);
25 |
26 | uint8_t at(uint32_t x, uint32_t y) const;
27 | const uint8_t* data() const { return dat.data(); }
28 |
29 | private:
30 | void setSize(uint32_t w, uint32_t h);
31 |
32 | std::vector dat;
33 | uint32_t w = 0;
34 | uint32_t h = 0;
35 | uint32_t stride = 0;
36 |
37 | friend class Frame;
38 | };
39 |
40 | class Audio final {
41 | public:
42 | std::vector samples;
43 | };
44 |
45 | uint32_t width() const { return planes[0].w; }
46 | uint32_t stride() const { return planes[0].stride; }
47 | uint32_t height() const { return planes[0].h; }
48 |
49 | const Plane& plane(uint8_t id) const { return planes[id]; }
50 | const Audio& audio(uint8_t id) const;
51 | size_t audioCount() const { return aud.size(); }
52 |
53 | private:
54 | Plane planes[4];
55 | std::vector