summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2021-06-25 09:15:19 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2021-06-25 09:15:19 +0200
commit8a5afd0db2fa2616556ed953c5c464c6930d6f47 (patch)
tree0747c8742ffb38488e7d3569d92ff5ba1c3a5e39
parentMerge remote-tracking branch 'upstream/lcs' into lcs (diff)
parentMerge remote-tracking branch 'origin/miami' into lcs (diff)
downloadre3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar.gz
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar.bz2
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar.lz
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar.xz
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.tar.zst
re3-8a5afd0db2fa2616556ed953c5c464c6930d6f47.zip
-rw-r--r--.github/pull_request_template.md13
-rw-r--r--.github/workflows/build-cmake-conan.yml2
-rw-r--r--.github/workflows/reLCS_msvc_amd64.yml26
-rw-r--r--.github/workflows/reLCS_msvc_x86.yml27
-rw-r--r--.gitignore4
-rw-r--r--CMakeLists.txt4
-rw-r--r--README.md2
-rw-r--r--cmake/GetGitRevisionDescription.cmake284
-rw-r--r--cmake/GetGitRevisionDescription.cmake.in43
-rw-r--r--gamefiles/gamecontrollerdb.txt1122
-rw-r--r--gamefiles/models/frontend_ds2.txdbin0 -> 329976 bytes
-rw-r--r--gamefiles/models/frontend_ds3.txdbin0 -> 524968 bytes
-rw-r--r--gamefiles/models/frontend_ds4.txdbin0 -> 524968 bytes
-rw-r--r--gamefiles/models/frontend_x360.txdbin0 -> 524968 bytes
-rw-r--r--gamefiles/models/frontend_xone.txdbin0 -> 524968 bytes
-rw-r--r--gamefiles/models/ps3btns.txdbin0 -> 528424 bytes
-rw-r--r--gamefiles/models/x360btns.txdbin126760 -> 528424 bytes
-rw-r--r--logo.pngbin0 -> 58630 bytes
-rw-r--r--logo.svg162
-rw-r--r--premake5.lua47
-rw-r--r--printHash.bat26
-rwxr-xr-xprintHash.sh12
-rw-r--r--src/CMakeLists.txt7
-rw-r--r--src/animation/AnimBlendAssociation.cpp6
-rw-r--r--src/animation/AnimBlendAssociation.h1
-rw-r--r--src/animation/AnimManager.cpp444
-rw-r--r--src/animation/AnimationId.h482
-rw-r--r--src/audio/AudioCollision.cpp37
-rw-r--r--src/audio/AudioLogic.cpp7031
-rw-r--r--src/audio/AudioManager.cpp153
-rw-r--r--src/audio/AudioManager.h317
-rw-r--r--src/audio/AudioSamples.h6172
-rw-r--r--src/audio/AudioScriptObject.cpp10
-rw-r--r--src/audio/AudioScriptObject.h8
-rw-r--r--src/audio/DMAudio.cpp26
-rw-r--r--src/audio/DMAudio.h22
-rw-r--r--src/audio/MusicManager.cpp735
-rw-r--r--src/audio/MusicManager.h60
-rw-r--r--src/audio/PolRadio.cpp (renamed from src/audio/PoliceRadio.cpp)294
-rw-r--r--src/audio/PolRadio.h (renamed from src/audio/PoliceRadio.h)0
-rw-r--r--src/audio/audio_enums.h27
-rw-r--r--src/audio/oal/aldlist.cpp26
-rw-r--r--src/audio/oal/aldlist.h15
-rw-r--r--src/audio/oal/channel.cpp93
-rw-r--r--src/audio/oal/channel.h7
-rw-r--r--src/audio/oal/stream.cpp96
-rw-r--r--src/audio/oal/stream.h5
-rw-r--r--src/audio/sampman.h357
-rw-r--r--src/audio/sampman_miles.cpp623
-rw-r--r--src/audio/sampman_null.cpp62
-rw-r--r--src/audio/sampman_oal.cpp943
-rw-r--r--src/audio/soundlist.h32
-rw-r--r--src/buildings/Building.cpp4
-rw-r--r--src/buildings/Building.h4
-rw-r--r--src/buildings/Treadable.cpp4
-rw-r--r--src/buildings/Treadable.h4
-rw-r--r--src/collision/ColModel.cpp4
-rw-r--r--src/collision/ColModel.h4
-rw-r--r--src/collision/Collision.cpp24
-rw-r--r--src/control/CarCtrl.cpp8
-rw-r--r--src/control/Garages.cpp10
-rw-r--r--src/control/PathFind.cpp10
-rw-r--r--src/control/PathFind.h8
-rw-r--r--src/control/Phones.cpp10
-rw-r--r--src/control/Pickups.cpp25
-rw-r--r--src/control/Replay.cpp24
-rw-r--r--src/control/RoadBlocks.cpp6
-rw-r--r--src/control/Script.cpp4
-rw-r--r--src/control/Script10.cpp2
-rw-r--r--src/control/Script2.cpp4
-rw-r--r--src/control/Script4.cpp12
-rw-r--r--src/control/Script5.cpp16
-rw-r--r--src/control/Script7.cpp6
-rw-r--r--src/control/Script8.cpp6
-rw-r--r--src/control/Script9.cpp8
-rw-r--r--src/control/SetPieces.cpp4
-rw-r--r--src/core/AnimViewer.cpp8
-rw-r--r--src/core/Cam.cpp20
-rw-r--r--src/core/Camera.cpp15
-rw-r--r--src/core/Camera.h6
-rw-r--r--src/core/CdStream.cpp41
-rw-r--r--src/core/CdStream.h2
-rw-r--r--src/core/CdStreamPosix.cpp117
-rw-r--r--src/core/ControllerConfig.cpp122
-rw-r--r--src/core/ControllerConfig.h4
-rw-r--r--src/core/FileLoader.cpp2
-rw-r--r--src/core/Frontend.cpp941
-rw-r--r--src/core/Frontend.h33
-rw-r--r--src/core/FrontendTriggers.h2
-rw-r--r--src/core/Frontend_PS2.cpp2
-rw-r--r--src/core/Game.cpp26
-rw-r--r--src/core/MenuScreens.cpp7
-rw-r--r--src/core/MenuScreensCustom.cpp133
-rw-r--r--src/core/Pad.cpp6
-rw-r--r--src/core/Pad.h2
-rw-r--r--src/core/Placeable.h6
-rw-r--r--src/core/Pools.cpp2
-rw-r--r--src/core/Radar.cpp195
-rw-r--r--src/core/References.cpp2
-rw-r--r--src/core/Ropes.cpp5
-rw-r--r--src/core/Streaming.cpp91
-rw-r--r--src/core/Streaming.h4
-rw-r--r--src/core/Timer.cpp121
-rw-r--r--src/core/Timer.h20
-rw-r--r--src/core/World.cpp61
-rw-r--r--src/core/World.h1
-rw-r--r--src/core/Zones.cpp17
-rw-r--r--src/core/common.h8
-rw-r--r--src/core/config.h61
-rw-r--r--src/core/main.cpp109
-rw-r--r--src/core/main.h19
-rw-r--r--src/core/re3.cpp268
-rw-r--r--src/entities/Dummy.cpp4
-rw-r--r--src/entities/Dummy.h4
-rw-r--r--src/entities/Entity.cpp150
-rw-r--r--src/entities/Entity.h21
-rw-r--r--src/entities/Physical.cpp14
-rw-r--r--src/extras/GitSHA1.cpp.in2
-rw-r--r--src/extras/GitSHA1.h1
-rw-r--r--src/extras/custompipes_gl.cpp114
-rw-r--r--src/extras/postfx.cpp8
-rw-r--r--src/extras/shaders/colourfilterLCS.frag2
-rw-r--r--src/extras/shaders/contrast.frag2
-rw-r--r--src/extras/shaders/make_hlsl.cmd7
-rw-r--r--src/extras/shaders/neoVehicle.vert2
-rw-r--r--src/extras/shaders/neoVehicle_VS.hlsl2
-rw-r--r--src/extras/shaders/obj/colourfilterLCS_frag.inc2
-rw-r--r--src/extras/shaders/obj/contrast_frag.inc2
-rw-r--r--src/extras/shaders/obj/neoVehicle_vert.inc2
-rw-r--r--src/fakerw/fake.cpp37
-rw-r--r--src/fakerw/rtpng.h4
-rw-r--r--src/math/Matrix.h16
-rw-r--r--src/math/VuVector.h2
-rw-r--r--src/math/maths.h2
-rw-r--r--src/modelinfo/BaseModelInfo.cpp1
-rw-r--r--src/modelinfo/ModelInfo.h3
-rw-r--r--src/objects/CutsceneObject.h1
-rw-r--r--src/objects/Object.cpp42
-rw-r--r--src/objects/Object.h8
-rw-r--r--src/objects/ParticleObject.cpp2
-rw-r--r--src/objects/Stinger.cpp35
-rw-r--r--src/peds/CopPed.cpp10
-rw-r--r--src/peds/EmergencyPed.cpp2
-rw-r--r--src/peds/Ped.cpp939
-rw-r--r--src/peds/Ped.h83
-rw-r--r--src/peds/PedAI.cpp545
-rw-r--r--src/peds/PedAttractor.cpp16
-rw-r--r--src/peds/PedDebug.cpp3
-rw-r--r--src/peds/PedFight.cpp432
-rw-r--r--src/peds/PlayerPed.cpp90
-rw-r--r--src/peds/Population.cpp68
-rw-r--r--src/render/Antennas.cpp4
-rw-r--r--src/render/Clouds.cpp13
-rw-r--r--src/render/Coronas.cpp14
-rw-r--r--src/render/Credits.cpp3
-rw-r--r--src/render/Draw.cpp36
-rw-r--r--src/render/Draw.h6
-rw-r--r--src/render/Fluff.cpp2
-rw-r--r--src/render/Font.cpp49
-rw-r--r--src/render/Font.h25
-rw-r--r--src/render/Glass.cpp4
-rw-r--r--src/render/Hud.cpp23
-rw-r--r--src/render/MBlur.cpp3
-rw-r--r--src/render/Occlusion.cpp4
-rw-r--r--src/render/Particle.cpp38
-rw-r--r--src/render/ParticleMgr.cpp4
-rw-r--r--src/render/PointLights.cpp4
-rw-r--r--src/render/Renderer.cpp37
-rw-r--r--src/render/Rubbish.cpp4
-rw-r--r--src/render/Shadows.cpp14
-rw-r--r--src/render/Skidmarks.cpp4
-rw-r--r--src/render/SpecialFX.cpp2
-rw-r--r--src/render/WaterCannon.cpp4
-rw-r--r--src/render/WaterLevel.cpp43
-rw-r--r--src/render/Weather.cpp2
-rw-r--r--src/rw/MemoryMgr.cpp8
-rw-r--r--src/rw/RwHelper.cpp38
-rw-r--r--src/rw/RwHelper.h1
-rw-r--r--src/rw/TexRead.cpp9
-rw-r--r--src/rw/VisibilityPlugins.cpp66
-rw-r--r--src/rw/VisibilityPlugins.h15
-rw-r--r--src/save/GenericGameStorage.cpp6
-rw-r--r--src/save/GenericGameStorage.h2
-rw-r--r--src/skel/crossplatform.cpp8
-rw-r--r--src/skel/crossplatform.h9
-rw-r--r--src/skel/glfw/glfw.cpp341
-rw-r--r--src/skel/win/win.cpp23
-rw-r--r--src/text/Text.cpp8
-rw-r--r--src/vehicles/Automobile.cpp80
-rw-r--r--src/vehicles/Bike.cpp72
-rw-r--r--src/vehicles/Boat.cpp16
-rw-r--r--src/vehicles/Heli.cpp2
-rw-r--r--src/vehicles/Plane.cpp6
-rw-r--r--src/vehicles/Vehicle.cpp14
-rw-r--r--src/vehicles/Vehicle.h10
-rw-r--r--src/weapons/BulletInfo.cpp6
-rw-r--r--src/weapons/Explosion.cpp2
-rw-r--r--src/weapons/Weapon.cpp28
-rw-r--r--src/weapons/WeaponEffects.cpp5
m---------vendor/librw0
200 files changed, 18715 insertions, 7637 deletions
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..f458bd43
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,13 @@
+As long as it's not linux/cross-platform skeleton/compatibility layer, all of the code on the repo that's not behind a preprocessor condition(like FIX_BUGS) are **completely** reversed code from original binaries.
+
+We **don't** accept custom codes, as long as it's not wrapped via preprocessor conditions, or it's linux/cross-platform skeleton/compatibility layer.
+
+We accept only these kinds of PRs;
+
+- A new feature that exists in at least one of the GTAs (if it wasn't in III/VC then it doesn't have to be decompilation)
+- Game, UI or UX bug fixes (if it's a fix to R* code, it should be behind FIX_BUGS)
+- Platform-specific and/or unused code that's not been reversed yet
+- Makes reversed code more understandable/accurate, as in "which code would produce this assembly".
+- A new cross-platform skeleton/compatibility layer, or improvements to them
+- Translation fixes, for languages R* supported/outsourced
+- Code that increase maintainability
diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml
index 04bca81f..609e9293 100644
--- a/.github/workflows/build-cmake-conan.yml
+++ b/.github/workflows/build-cmake-conan.yml
@@ -23,7 +23,7 @@ jobs:
# - os: 'windows-latest'
# platform: 'd3d9'
# audio: 'miles'
- - os: 'ubuntu-latest'
+ - os: 'ubuntu-18.04'
platform: 'gl3'
gl3_gfxlib: 'glfw'
audio: 'openal'
diff --git a/.github/workflows/reLCS_msvc_amd64.yml b/.github/workflows/reLCS_msvc_amd64.yml
index f79df578..30e52a16 100644
--- a/.github/workflows/reLCS_msvc_amd64.yml
+++ b/.github/workflows/reLCS_msvc_amd64.yml
@@ -6,13 +6,9 @@ on:
release:
types: published
env:
- GLEW_VER: "2.1.0"
GLFW_VER: "3.3.2"
- GLEW_BASE: "glew-2.1.0"
GLFW_BASE: "glfw-3.3.2.bin.WIN64"
- GLEW_FILE: "glew-2.1.0-win32.zip"
GLFW_FILE: "glfw-3.3.2.bin.WIN64.zip"
- GLEW_URL: "https://github.com/nigels-com/glew/releases/download/glew-2.1.0/glew-2.1.0-win32.zip"
GLFW_URL: "https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.bin.WIN64.zip"
jobs:
build:
@@ -28,11 +24,6 @@ jobs:
with:
submodules: 'true'
- if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss"
- name: Download glew
- uses: carlosperate/download-file-action@v1.0.3
- with:
- file-url: ${{env.GLEW_URL}}
- - if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss"
name: Download glfw
uses: carlosperate/download-file-action@v1.0.3
with:
@@ -40,22 +31,29 @@ jobs:
- if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss"
name: Unpack archives
run: |
- 7z x ${{env.GLEW_FILE}}
7z x ${{env.GLFW_FILE}}
- name: Configure build
run: |
- ./premake5 vs2019 --with-librw --glewdir=${{env.GLEW_BASE}} --glfwdir64=${{env.GLFW_BASE}}
+ ./premake5 vs2019 --with-librw --glfwdir64=${{env.GLFW_BASE}}
- name: Build
run: |
msbuild -m build/reLCS.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
- - name: Pack artifacts
+ # - name: Pack artifacts
+ # run: |
+ # 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ - name: Move binaries to gamefiles
+ run: |
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.exe ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.pdb ./gamefiles/
+ - name: Move dynamic dependencies to gamefiles
run: |
- 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ mv ./vendor/mpg123/dist/Win64/libmpg123-0.dll ./gamefiles/
+ mv ./vendor/openal-soft/dist/Win64/OpenAL32.dll ./gamefiles/
- name: Upload artifact to actions
uses: actions/upload-artifact@v2
with:
name: reLCS_${{matrix.buildtype}}_${{matrix.platform}}
- path: ./bin/${{matrix.platform}}/${{matrix.buildtype}}
+ path: ./gamefiles/*
# - name: Upload artifact to Bintray
# uses: hpcsc/upload-bintray-docker-action@v1
# with:
diff --git a/.github/workflows/reLCS_msvc_x86.yml b/.github/workflows/reLCS_msvc_x86.yml
index 324f0754..d34e47d5 100644
--- a/.github/workflows/reLCS_msvc_x86.yml
+++ b/.github/workflows/reLCS_msvc_x86.yml
@@ -6,13 +6,9 @@ on:
release:
types: published
env:
- GLEW_VER: "2.1.0"
GLFW_VER: "3.3.2"
- GLEW_BASE: "glew-2.1.0"
GLFW_BASE: "glfw-3.3.2.bin.WIN32"
- GLEW_FILE: "glew-2.1.0-win32.zip"
GLFW_FILE: "glfw-3.3.2.bin.WIN32.zip"
- GLEW_URL: "https://github.com/nigels-com/glew/releases/download/glew-2.1.0/glew-2.1.0-win32.zip"
GLFW_URL: "https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.bin.WIN32.zip"
jobs:
build:
@@ -28,11 +24,6 @@ jobs:
with:
submodules: 'true'
- if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss"
- name: Download glew
- uses: carlosperate/download-file-action@v1.0.3
- with:
- file-url: ${{env.GLEW_URL}}
- - if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss"
name: Download glfw
uses: carlosperate/download-file-action@v1.0.3
with:
@@ -40,22 +31,30 @@ jobs:
- if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss"
name: Unpack archives
run: |
- 7z x ${{env.GLEW_FILE}}
7z x ${{env.GLFW_FILE}}
- name: Configure build
run: |
- ./premake5 vs2019 --with-librw --glewdir=${{env.GLEW_BASE}} --glfwdir32=${{env.GLFW_BASE}}
+ ./premake5 vs2019 --with-librw --glfwdir32=${{env.GLFW_BASE}}
- name: Build
run: |
msbuild -m build/reLCS.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}}
- - name: Pack artifacts
+ # - name: Pack artifacts
+ # run: |
+ # 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ - name: Move binaries to gamefiles
+ run: |
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.exe ./gamefiles/
+ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reLCS.pdb ./gamefiles/
+ - if: contains(matrix.platform, 'oal')
+ name: Move dynamic dependencies to gamefiles
run: |
- 7z a reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/*
+ mv ./vendor/mpg123/dist/Win32/libmpg123-0.dll ./gamefiles/
+ mv ./vendor/openal-soft/dist/Win32/OpenAL32.dll ./gamefiles/
- name: Upload artifact to actions
uses: actions/upload-artifact@v2
with:
name: reLCS_${{matrix.buildtype}}_${{matrix.platform}}
- path: reLCS_${{matrix.buildtype}}_${{matrix.platform}}.zip
+ path: ./gamefiles/*
# - name: Upload artifact to Bintray
# uses: hpcsc/upload-bintray-docker-action@v1
# with:
diff --git a/.gitignore b/.gitignore
index 3d2c6338..ca4dc200 100644
--- a/.gitignore
+++ b/.gitignore
@@ -357,4 +357,6 @@ sdk/
codewarrior/reVC_Data/
codewarrior/Release/
-codewarrior/Debug/ \ No newline at end of file
+codewarrior/Debug/
+
+src/extras/GitSHA1.cpp \ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 116d8455..199bfebc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,6 +6,10 @@ set(PROJECT RELCS)
project(${EXECUTABLE} C CXX)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
+include(GetGitRevisionDescription)
+get_git_head_revision(GIT_REFSPEC GIT_SHA1 "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
+message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}")
+
if(WIN32)
set(${PROJECT}_AUDIOS "OAL" "MSS")
else()
diff --git a/README.md b/README.md
index d1efe71b..d7484fe5 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# reLCS
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dlcs&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=lcs)
-<a href="https://discord.gg/aKYAwCx92H"><img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" /></a>
+<a href="https://discord.gg/ERYg58ttcE"><img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" /></a>
## Intro
diff --git a/cmake/GetGitRevisionDescription.cmake b/cmake/GetGitRevisionDescription.cmake
new file mode 100644
index 00000000..87f691ad
--- /dev/null
+++ b/cmake/GetGitRevisionDescription.cmake
@@ -0,0 +1,284 @@
+# - Returns a version string from Git
+#
+# These functions force a re-configure on each git commit so that you can
+# trust the values of the variables in your build system.
+#
+# get_git_head_revision(<refspecvar> <hashvar> [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR])
+#
+# Returns the refspec and sha hash of the current head revision
+#
+# git_describe(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the source tree, and adjusting
+# the output so that it tests false if an error occurs.
+#
+# git_describe_working_tree(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the working tree (--dirty option),
+# and adjusting the output so that it tests false if an error occurs.
+#
+# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe --exact-match on the source tree,
+# and adjusting the output so that it tests false if there was no exact
+# matching tag.
+#
+# git_local_changes(<var>)
+#
+# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
+# Uses the return code of "git diff-index --quiet HEAD --".
+# Does not regard untracked files.
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2020 Ryan Pavlik <ryan.pavlik@gmail.com> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+#
+# Copyright 2009-2013, Iowa State University.
+# Copyright 2013-2020, Ryan Pavlik
+# Copyright 2013-2020, Contributors
+# SPDX-License-Identifier: BSL-1.0
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+if(__get_git_revision_description)
+ return()
+endif()
+set(__get_git_revision_description YES)
+
+# We must run the following at "include" time, not at function call time,
+# to find the path to this module rather than the path to a calling list file
+get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+# Function _git_find_closest_git_dir finds the next closest .git directory
+# that is part of any directory in the path defined by _start_dir.
+# The result is returned in the parent scope variable whose name is passed
+# as variable _git_dir_var. If no .git directory can be found, the
+# function returns an empty string via _git_dir_var.
+#
+# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and
+# neither foo nor bar contain a file/directory .git. This wil return
+# C:/bla/.git
+#
+function(_git_find_closest_git_dir _start_dir _git_dir_var)
+ set(cur_dir "${_start_dir}")
+ set(git_dir "${_start_dir}/.git")
+ while(NOT EXISTS "${git_dir}")
+ # .git dir not found, search parent directories
+ set(git_previous_parent "${cur_dir}")
+ get_filename_component(cur_dir ${cur_dir} DIRECTORY)
+ if(cur_dir STREQUAL git_previous_parent)
+ # We have reached the root directory, we are not in git
+ set(${_git_dir_var}
+ ""
+ PARENT_SCOPE)
+ return()
+ endif()
+ set(git_dir "${cur_dir}/.git")
+ endwhile()
+ set(${_git_dir_var}
+ "${git_dir}"
+ PARENT_SCOPE)
+endfunction()
+
+function(get_git_head_revision _refspecvar _hashvar)
+ _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR)
+
+ if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
+ set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE)
+ else()
+ set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE)
+ endif()
+ if(NOT "${GIT_DIR}" STREQUAL "")
+ file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}"
+ "${GIT_DIR}")
+ if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
+ # We've gone above the CMake root dir.
+ set(GIT_DIR "")
+ endif()
+ endif()
+ if("${GIT_DIR}" STREQUAL "")
+ set(${_refspecvar}
+ "GITDIR-NOTFOUND"
+ PARENT_SCOPE)
+ set(${_hashvar}
+ "GITDIR-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+
+ # Check if the current source dir is a git submodule or a worktree.
+ # In both cases .git is a file instead of a directory.
+ #
+ if(NOT IS_DIRECTORY ${GIT_DIR})
+ # The following git command will return a non empty string that
+ # points to the super project working tree if the current
+ # source dir is inside a git submodule.
+ # Otherwise the command will return an empty string.
+ #
+ execute_process(
+ COMMAND "${GIT_EXECUTABLE}" rev-parse
+ --show-superproject-working-tree
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ OUTPUT_VARIABLE out
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(NOT "${out}" STREQUAL "")
+ # If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule
+ file(READ ${GIT_DIR} submodule)
+ string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE
+ ${submodule})
+ string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE)
+ get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
+ get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE}
+ ABSOLUTE)
+ set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
+ else()
+ # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree
+ file(READ ${GIT_DIR} worktree_ref)
+ # The .git directory contains a path to the worktree information directory
+ # inside the parent git repo of the worktree.
+ #
+ string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir
+ ${worktree_ref})
+ string(STRIP ${git_worktree_dir} git_worktree_dir)
+ _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR)
+ set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD")
+ endif()
+ else()
+ set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
+ endif()
+ set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
+ if(NOT EXISTS "${GIT_DATA}")
+ file(MAKE_DIRECTORY "${GIT_DATA}")
+ endif()
+
+ if(NOT EXISTS "${HEAD_SOURCE_FILE}")
+ return()
+ endif()
+ set(HEAD_FILE "${GIT_DATA}/HEAD")
+ configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY)
+
+ configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+ "${GIT_DATA}/grabRef.cmake" @ONLY)
+ include("${GIT_DATA}/grabRef.cmake")
+
+ set(${_refspecvar}
+ "${HEAD_REF}"
+ PARENT_SCOPE)
+ set(${_hashvar}
+ "${HEAD_HASH}"
+ PARENT_SCOPE)
+endfunction()
+
+function(git_describe _var)
+ if(NOT GIT_FOUND)
+ find_package(Git QUIET)
+ endif()
+ get_git_head_revision(refspec hash)
+ if(NOT GIT_FOUND)
+ set(${_var}
+ "GIT-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+ if(NOT hash)
+ set(${_var}
+ "HEAD-HASH-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+
+ # TODO sanitize
+ #if((${ARGN}" MATCHES "&&") OR
+ # (ARGN MATCHES "||") OR
+ # (ARGN MATCHES "\\;"))
+ # message("Please report the following error to the project!")
+ # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
+ #endif()
+
+ #message(STATUS "Arguments to execute_process: ${ARGN}")
+
+ execute_process(
+ COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ RESULT_VARIABLE res
+ OUTPUT_VARIABLE out
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(NOT res EQUAL 0)
+ set(out "${out}-${res}-NOTFOUND")
+ endif()
+
+ set(${_var}
+ "${out}"
+ PARENT_SCOPE)
+endfunction()
+
+function(git_describe_working_tree _var)
+ if(NOT GIT_FOUND)
+ find_package(Git QUIET)
+ endif()
+ if(NOT GIT_FOUND)
+ set(${_var}
+ "GIT-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+
+ execute_process(
+ COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ RESULT_VARIABLE res
+ OUTPUT_VARIABLE out
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(NOT res EQUAL 0)
+ set(out "${out}-${res}-NOTFOUND")
+ endif()
+
+ set(${_var}
+ "${out}"
+ PARENT_SCOPE)
+endfunction()
+
+function(git_get_exact_tag _var)
+ git_describe(out --exact-match ${ARGN})
+ set(${_var}
+ "${out}"
+ PARENT_SCOPE)
+endfunction()
+
+function(git_local_changes _var)
+ if(NOT GIT_FOUND)
+ find_package(Git QUIET)
+ endif()
+ get_git_head_revision(refspec hash)
+ if(NOT GIT_FOUND)
+ set(${_var}
+ "GIT-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+ if(NOT hash)
+ set(${_var}
+ "HEAD-HASH-NOTFOUND"
+ PARENT_SCOPE)
+ return()
+ endif()
+
+ execute_process(
+ COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD --
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ RESULT_VARIABLE res
+ OUTPUT_VARIABLE out
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(res EQUAL 0)
+ set(${_var}
+ "CLEAN"
+ PARENT_SCOPE)
+ else()
+ set(${_var}
+ "DIRTY"
+ PARENT_SCOPE)
+ endif()
+endfunction()
diff --git a/cmake/GetGitRevisionDescription.cmake.in b/cmake/GetGitRevisionDescription.cmake.in
new file mode 100644
index 00000000..116efc4e
--- /dev/null
+++ b/cmake/GetGitRevisionDescription.cmake.in
@@ -0,0 +1,43 @@
+#
+# Internal file for GetGitRevisionDescription.cmake
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright 2009-2012, Iowa State University
+# Copyright 2011-2015, Contributors
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+# SPDX-License-Identifier: BSL-1.0
+
+set(HEAD_HASH)
+
+file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
+
+string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
+if(HEAD_CONTENTS MATCHES "ref")
+ # named branch
+ string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
+ if(EXISTS "@GIT_DIR@/${HEAD_REF}")
+ configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+ else()
+ configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
+ file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
+ if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
+ set(HEAD_HASH "${CMAKE_MATCH_1}")
+ endif()
+ endif()
+else()
+ # detached HEAD
+ configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
+endif()
+
+if(NOT HEAD_HASH)
+ file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+ string(STRIP "${HEAD_HASH}" HEAD_HASH)
+endif()
diff --git a/gamefiles/gamecontrollerdb.txt b/gamefiles/gamecontrollerdb.txt
index fcefb88a..728fddc2 100644
--- a/gamefiles/gamecontrollerdb.txt
+++ b/gamefiles/gamecontrollerdb.txt
@@ -1,199 +1,943 @@
-# Windows - DINPUT
-8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
-ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
-6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
-0d0f6e00000000000000504944564944,HORIPAD 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
-6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
-88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
-4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows,
-25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
-4c05c405000000000000504944564944,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
-6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13,
-4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows,
-00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
-00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows,
-28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
-ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9,
-8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5,
-79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows,
-4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows,
-d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
-a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
-4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-6f0e1e01000000000000504944564944,Rock Candy Gamepad for PS3,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-83056020000000000000504944564944,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,y:b2,x:b3,start:b7,back:b6,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Windows,
-10080100000000000000504944564944,PS1 USB,platform:Windows,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-49190204000000000000504944564944,Ipega PG-9023,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9,platform:Windows,
-4f0423b3000000000000504944564944,Dual Trigger 3-in-1,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Windows,
-0d0f4900000000000000504944564944,Hatsune Miku Sho Controller,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
-79004318000000000000504944564944,Mayflash GameCube Controller Adapter,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b0,start:b9,guide:b0,leftshoulder:b4,rightshoulder:b7,leftstick:b0,rightstick:b0,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-79000018000000000000504944564944,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
-2509e803000000000000504944564944,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows,
-300f1001000000000000504944564944,Saitek P480 Rumble Pad,a:b2,b:b3,x:b0,y:b1,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b5,righttrigger:b7,platform:Windows,
-10280900000000000000504944564944,8Bitdo SFC30 GamePad,a:b1,b:b0,y:b3,x:b4,start:b11,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,platform:Windows,
-63252305000000000000504944564944,USB Vibration Joystick (BM),platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-20380900000000000000504944564944,8Bitdo NES30 PRO Wireless,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,
-02200090000000000000504944564944,8Bitdo NES30 PRO USB,platform:Windows,a:b0,b:b1,x:b3,y:b4,leftshoulder:b6,rightshoulder:b7,lefttrigger:b8,righttrigger:b9,back:b10,start:b11,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,
-ff113133000000000000504944564944,Gembird JPD-DualForce,platform:Windows,a:b2,b:b3,x:b0,y:b1,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,leftstick:b10,rightstick:b11,
-341a0108000000000000504944564944,EXEQ RF USB Gamepad 8206,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,leftstick:b8,rightstick:b7,back:b8,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows,
-c0111352000000000000504944564944,Battalife Joystick,platform:Windows,x:b4,a:b6,b:b7,y:b5,back:b2,start:b3,leftshoulder:b0,rightshoulder:b1,leftx:a0,lefty:a1,
-100801e5000000000000504944564944,NEXT Classic USB Game Controller,a:b0,b:b1,back:b8,start:b9,rightx:a2,righty:a3,leftx:a0,lefty:a1,platform:Windows,
-4c05cc09000000000000504944564944,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Windows,
-4c05a00b000000000000504944564944,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Windows,
+# Game Controller DB for SDL in 2.0.9 format
+# Source: https://github.com/gabomdq/SDL_GameControllerDB
-# OS X
-0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
-6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
-6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
-6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
-6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
-4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
-4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
-5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
-891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X,
-4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X,
-8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
-4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-AD1B00000000000001F9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
-050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,y:b9,x:b10,start:b6,guide:b8,back:b7,dpup:b2,dpleft:b0,dpdown:b3,dpright:b1,leftx:a0,lefty:a1,lefttrigger:b12,righttrigger:,leftshoulder:b11,platform:Mac OS X,
-83050000000000006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X,
-5e04000000000000dd02000000000000,Xbox One Wired Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,x:b18,y:b17,back:b7,guide:b8,start:b6,leftstick:b23,rightstick:b24,leftshoulder:b19,rightshoulder:b20,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b21,righttrigger:b22,platform:Mac OS X,
-79000000000000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,x:b0,y:b12,back:b32,start:b36,leftstick:b40,rightstick:b44,leftshoulder:b16,rightshoulder:b20,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a4,rightx:a8,righty:a12,lefttrigger:b24,righttrigger:b28,platform:Mac OS X,
-2509000000000000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,x:b3,y:b2,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:b11,dpdown:b13,dpleft:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
-351200000000000021ab000000000000,SFC30 Joystick,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
-b4040000000000000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,x:b3,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
-10280000000000000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Mac OS X,
-d814000000000000cecf000000000000,MC Cthulhu,platform:Mac OS X,leftx:,lefty:,rightx:,righty:,lefttrigger:b6,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,righttrigger:b7,
-0d0f0000000000006600000000000000,HORIPAD FPS PLUS 4,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:a4,
-5e04000000000000e002000000000000,Xbox Wireless Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b10,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-79000000000000001100000000000000,Retrolink Classic Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a3,lefty:a4,platform:Mac OS X,
-4c05000000000000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Mac OS X,
-5e04000000000000ea02000000000000,Xbox Wireless Controller,platform:Mac OS X,x:b2,a:b0,b:b1,y:b3,back:b9,guide:b10,start:b8,dpleft:b13,dpdown:b12,dpright:b14,dpup:b11,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b6,rightstick:b7,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-81170000000000007e05000000000000,Sega Saturn,x:b0,a:b2,b:b4,y:b6,start:b13,dpleft:b15,dpdown:b16,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,lefttrigger:b10,rightshoulder:b9,righttrigger:a4,righttrigger:b11,leftx:a0,lefty:a2,platform:Mac OS X,
-bd1200000000000015d0000000000000,Tomee SNES USB Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X,
-03000000632500002305000000010000,Redragon Saturn,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Mac OS X,
+# Windows
+03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,platform:Windows,
+03000000c82d00002038000000000000,8bitdo,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d000011ab000000000000,8BitDo F30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00001038000000000000,8BitDo F30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000650000000000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Windows,
+03000000c82d00005106000000000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000310000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,
+03000000c82d00002028000000000000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00008010000000000000,8BitDo N30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,
+03000000c82d00000190000000000000,8BitDo N30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00015900000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00065280000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000130000000000000,8BitDo SF30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000060000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000061000000000000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d000021ab000000000000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00003028000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000030000000000000,8BitDo SN30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000351000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00001290000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d000020ab000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00004028000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00006228000000000000,8BitDo SN30,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00000031000000000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Windows,
+03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Windows,
+03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Windows,
+030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,
+03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+030000006f0e00001413000000000000,Afterglow,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000869800002400000000007801,Astro C40 TR,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows,
+030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000bc2000000055000000000000,Betop BFM Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000bc2000006321000000000000,BETOP CONTROLLER,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,
+0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows,
+03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000457500000401000000000000,Cobra,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000005e0400008e02000000000000,Controller (XBOX 360 For Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000005e040000a102000000000000,Controller (Xbox 360 Wireless Receiver for Windows),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000005e040000ff02000000000000,Controller (Xbox One For Windows) - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000005e040000ea02000000000000,Controller (Xbox One For Windows) - Wireless,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Windows,
+03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000007d0400000840000000000000,Destroyer Tiltpad,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b1,b:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,x:b0,y:b3,platform:Windows,
+03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,
+030000008f0e00000910000000000000,DualShock 2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Windows,
+030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,
+03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,
+03000000120c0000f61c000000000000,Elite,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,
+03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000006f0e00008401000000000000,Faceoff Deluxe+ Audio Wired Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00008001000000000000,Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008500000000000000,Fighting Commander 2016 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008400000000000000,Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008700000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008800000000000000,Fighting Stick mini 4,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,
+030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+78696e70757403000000000000000000,Fightstick TES,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,
+03000000790000002201000000000000,Game Controller for PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Windows,
+03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Windows,
+03000000790000004618000000000000,GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000280400000140000000000000,GamePad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+03000000ac0500003d03000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000ac0500004d04000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00000102000000007801,GameStop Xbox 360 Wired Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000009b2800003200000000000000,GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,
+030000009b2800006000000000000000,GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:+a2,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Windows,
+030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Windows,
+03000000300f00000b01000000000000,GGE909 Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+03000000f0250000c283000000000000,Gioteck,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000f0250000c383000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000f0250000c483000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+030000007d0400000540000000000000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000001008000001e1000000000000,Havit HV-G60,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows,
+03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,
+03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00001600000000007803,HORI Real Arcade Pro EX-SE (Xbox 360),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Windows,
+030000000d0f00009c00000000000000,Hori TAC Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,platform:Windows,
+030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Windows,
+03000000d81d00000f00000000000000,iBUFFALO BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000d81d00001000000000000000,iBUFFALO BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Windows,
+03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,
+030000006f0e00002401000000000000,INJUSTICE FightStick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+03000000ac0500002c02000000000000,IPEGA,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000491900000204000000000000,Ipega PG-9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000491900000304000000000000,Ipega PG-9087 - Bluetooth Gamepad,+righty:+a5,-righty:-a4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,start:b11,x:b3,y:b4,platform:Windows,
+030000006e0500000a20000000000000,JC-DUX60 ELECOM MMO Gamepad,a:b2,b:b3,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b14,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b15,righttrigger:b13,rightx:a3,righty:a4,start:b20,x:b0,y:b1,platform:Windows,
+030000006e0500000520000000000000,JC-P301U,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,
+030000006e0500000320000000000000,JC-U3613M (DInput),a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Windows,
+030000006e0500000720000000000000,JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,platform:Windows,
+030000007e0500000620000000000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,
+030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Windows,
+030000007e0500000720000000000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,
+030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,
+03000000bd12000003c0000000000000,JY-P70UR,a:b1,b:b0,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b11,righttrigger:b9,rightx:a3,righty:a2,start:b4,x:b3,y:b2,platform:Windows,
+03000000242f00002d00000000000000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000242f00008a00000000000000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
+03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,platform:Windows,
+030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006d0400001ac2000000000000,Logitech Precision Gamepad,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000006d0400000ac2000000000000,Logitech WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Windows,
+03000000380700006652000000000000,Mad Catz C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008433000000000000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008483000000000000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008134000000000000,Mad Catz FightStick TE2+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008184000000000000,Mad Catz FightStick TE2+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700006252000000000000,Mad Catz Micro C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700008532000000000000,Madcatz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700003888000000000000,Madcatz Arcade Fightstick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000380700001888000000000000,MadCatz SFIV FightStick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000380700008081000000000000,MADCATZ SFV Arcade FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,
+03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows,
+03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+03000000790000004318000000000000,Mayflash GameCube Controller Adapter,a:b1,b:b2,back:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b4,leftstick:b0,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b0,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+03000000242f00007300000000000000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
+0300000079000000d218000000000000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000d620000010a7000000000000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,platform:Windows,
+0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows,
+03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000790000002418000000000000,Mega Drive,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b2,start:b9,x:b3,y:b4,platform:Windows,
+03000000380700006382000000000000,MLG GamePad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000c62400002a89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000c62400002b89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000c62400001a89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000c62400001b89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,
+030000006b140000010c000000000000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Windows,
+03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+03000000bd12000015d0000000000000,Nintendo Retrolink USB Super SNES Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,
+030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Windows,
+03000000550900001472000000000000,NVIDIA Controller v01.04,a:b11,b:b10,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b5,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b4,righttrigger:a5,rightx:a3,righty:a6,start:b3,x:b9,y:b8,platform:Windows,
+030000004b120000014d000000000000,NYKO AIRFLO,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a3,leftstick:a0,lefttrigger:b6,rightshoulder:b5,rightstick:a2,righttrigger:b7,start:b9,x:b2,y:b3,platform:Windows,
+03000000782300000a10000000000000,Onlive Wireless Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,platform:Windows,
+03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows,
+03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,platform:Windows,
+03000000120c0000f60e000000000000,P4 Wired Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00000901000000000000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+030000004c050000da0c000000000000,PlayStation Classic Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows,
+03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000632500002306000000000000,PS Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,
+03000000e30500009605000000000000,PS to USB convert cable,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,
+03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,
+03000000666600006706000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Windows,
+030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
+030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,platform:Windows,
+03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows,
+030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000003807000056a8000000000000,PS3 RF pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000100000008200000000000000,PS360+ v1.66,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:h0.4,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000300f00000011000000000000,QanBa Arcade JoyStick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,platform:Windows,
+03000000300f00001611000000000000,QanBa Arcade JoyStick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows,
+03000000222c00000020000000000000,QANBA DRONE ARCADE JOYSTICK,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000300f00001210000000000000,QanBa Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows,
+03000000341a00000104000000000000,QanBa Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows,
+03000000222c00000223000000000000,Qanba Obsidian Arcade Joystick PS3 Mode,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000222c00000023000000000000,Qanba Obsidian Arcade Joystick PS4 Mode,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000321500000011000000000000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00008b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00007000000000000000,REAL ARCADE PRO.4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00002200000000000000,REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005b00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000000d0f00005c00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000790000001100000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Windows,
+03000000bd12000013d0000000000000,Retrolink USB SEGA Saturn Classic,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,lefttrigger:b6,rightshoulder:b2,righttrigger:b7,start:b8,x:b3,y:b4,platform:Windows,
+0300000000f000000300000000000000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,
+0300000000f00000f100000000000000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Windows,
+030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000006b140000020d000000000000,Revolution Pro Controller 2(1/2),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000004f04000003d0000000000000,run'n'drive,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000a306000023f6000000000000,Saitek Cyborg V.1 Game pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000300f00001201000000000000,Saitek Dual Analog Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,
+03000000a30600000701000000000000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Windows,
+03000000a30600000cff000000000000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b0,y:b1,platform:Windows,
+03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+03000000300f00001001000000000000,Saitek P480 Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,
+03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Windows,
+03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Windows,
+03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Windows,
+03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,
+03000000730700000401000000000000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Windows,
+0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,
+030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows,
+030000005e0400008e02000000007801,ShanWan PS3/PC Wired GamePad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,platform:Windows,
+03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows,
+03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows,
+03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,platform:Windows,
+03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,platform:Windows,
+03000000d620000011a7000000000000,Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000004f04000007d0000000000000,T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000004f0400000ab1000000000000,T.16000M,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b10,x:b2,y:b3,platform:Windows,
+03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Windows,
+030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,
+030000004f04000023b3000000000000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000004f0400000ed0000000000000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Windows,
+030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Windows,
+03000000666600000488000000000000,TigerGame PS/PS2 Game Controller Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,
+03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+030000004f04000087b6000000000000,TWCS Throttle,dpdown:b8,dpleft:b9,dpright:b7,dpup:b6,leftstick:b5,lefttrigger:-a5,leftx:a0,lefty:a1,righttrigger:+a5,platform:Windows,
+03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+030000006e0500001320000000000000,U4113,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+03000000341a00002308000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+030000005509000000b4000000000000,USB gamepad,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,platform:Windows,
+030000006b1400000203000000000000,USB gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000790000000a00000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,platform:Windows,
+03000000f0250000c183000000000000,USB gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000ff1100004133000000000000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,platform:Windows,
+03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows,
+03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00000302000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+030000006f0e00000702000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows,
+0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:+a3,righty:+a4,start:b4,x:b2,y:b3,platform:Windows,
+030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000005e040000ff02000000007801,Xbox One Elite Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+030000005e040000130b000000000000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows,
+03000000ac0500005b05000000000000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows,
+03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows,
+03000000786901006e70000000000000,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows,
+03000000790000004f18000000000000,ZD-T Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows,
+03000000120c0000101e000000000000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows,
+
+# Mac OS X
+030000008f0e00000300000009010000,2In1 USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000650000001000000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+030000003512000012ab000001000000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000190000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00001290000001000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00000031000001000000,8BitDo Wireless Adapter,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a31,start:b11,x:b4,y:b3,platform:Mac OS X,
+03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000a00500003232000009010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
+03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X,
+03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X,
+03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000ad1b000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
+03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006f0e00000102000000000000,GameStop Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000007d0400000540000001010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00005f00000000000000,HORI Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00005e00000000000000,HORI Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00004d00000000000000,HORI Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f00006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000000d0f0000ee00000000010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,platform:Mac OS X,
+03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,
+03000000830500006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Mac OS X,
+030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Mac OS X,
+03000000242f00002d00000007010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
+030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000019c2000005030000,Logitech F710,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000006d04000018c2000000010000,Logitech RumblePad 2 USB,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000242f00007300000000020000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Mac OS X,
+0300000079000000d218000026010000,Mayflash Magic NS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000d620000010a7000003010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Mac OS X,
+03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,platform:Mac OS X,
+03000000d8140000cecf000000000000,MC Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000005e0400002700000001010000,Microsoft SideWinder Plug & Play Game Pad,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,leftx:a0,lefty:a1,righttrigger:b5,x:b2,y:b3,platform:Mac OS X,
+03000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Mac OS X,
+03000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000c62400002b89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000632500007505000000020000,NEOGEO mini PAD Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Mac OS X,
+030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000d620000011a7000000020000,Nintendo Switch Core (Plus) Wired Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
+030000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X,
+03000000550900001472000025050000,NVIDIA Controller v01.04,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Mac OS X,
+030000006f0e00000901000002010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Mac OS X,
+030000004c050000da0c000000010000,Playstation Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000d62000006dca000000010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
+030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X,
+030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000321500000011000000010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,
+030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,
+0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+03000000790000001100000000000000,Retrolink Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a3,lefty:a4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,
+030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000c6240000fefa000000000000,Rock Candy Gamepad for PS3,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+03000000730700000401000000010000,Sanwa PlayOnline Mobile,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Mac OS X,
+03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,platform:Mac OS X,
+03000000b40400000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X,
+030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X,
+0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X,
+030000004c050000e60c000000010000,Sony DualSense,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004c050000a00b000000000000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X,
+030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,platform:Mac OS X,
+03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,
+03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X,
+03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,
+03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,platform:Mac OS X,
+03000000457500002211000000010000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Mac OS X,
+030000004f0400000ed0000000020000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Mac OS X,
+03000000bd12000015d0000000000000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000bd12000015d0000000010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Mac OS X,
+03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X,
+030000006f0e00000302000025040000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+030000006f0e00000702000003060000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000791d00000103000009010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X,
+050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X,
+050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X,
+030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+03000000c6240000045d000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e0400000a0b000000000000,Xbox Adaptive Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e040000050b000003090000,Xbox Elite Wireless Controller Series 2,a:b0,b:b1,back:b31,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b53,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+030000005e040000d102000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e040000dd02000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e040000e302000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+030000005e040000e002000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,
+030000005e040000e002000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Mac OS X,
+030000005e040000ea02000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X,
+030000005e040000fd02000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Mac OS X,
+03000000120c0000100e000000010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
+03000000120c0000101e000000010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X,
# Linux
-050000004c0500006802000000000000,Sony PLAYSTATION(R)3 Controller,platform:Linux,a:b14,b:b13,x:b15,y:b12,back:b0,guide:b16,start:b3,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpdown:b6,dpleft:b7,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a12,righttrigger:a13,
-03000000ff1100004133000010010000,GreenAsia Inc.USB Joystick,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
-03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
-030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00001038000000010000,8Bitdo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux,
+03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000310000011010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,
+05000000c82d00008010000000010000,8BitDo NES30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b9,righttrigger:b8,start:b11,x:b3,y:b4,platform:Linux,
+03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00002038000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00000060000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00000061000000010000,8Bitdo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d000021ab000010010000,8BitDo SFC30,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,
+030000003512000012ab000010010000,8Bitdo SFC30 GamePad,a:b2,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b0,platform:Linux,
+05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00003028000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000161000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00001290000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00000161000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00006228000000010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000202800000900000000010000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,
+030000005e0400008e02000020010000,8BitDo Wireless Adapter (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c82d00000031000011010000,8BitDo Wireless Adapter (DInput),a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Linux,
+05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux,
+05000000a00500003232000001000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,
+05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,platform:Linux,
+030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00003901000013020000,Afterglow Prismatic Wired Controller 048-007-NA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000007c1800000006000010010000,Alienware Dual Compatible Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,platform:Linux,
+05000000491900000204000021000000,Amazon Fire Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,
+05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,platform:Linux,
+03000000120c00000500000010010000,AxisPad,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,platform:Linux,
+03000000c62400001b89000011010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000c21100000791000011010000,Be1 GC101 Controller 1.03 mode,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000c31100000791000011010000,Be1 GC101 GAMEPAD 1.03 mode,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000005e0400008e02000003030000,Be1 GC101 Xbox 360 Controller mode,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,platform:Linux,
+03000000ffff0000ffff000000010000,Chinese-made Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,
+03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000000b0400003365000000010000,Competition Pro,a:b0,b:b1,back:b2,leftx:a0,lefty:a1,start:b3,platform:Linux,
+03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Linux,
+03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,
+03000000b40400000a01000000010000,CYPRESS USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,
+03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,
+030000004f04000004b3000010010000,Dual Power 2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,
+030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,
+03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000008f0e00000800000010010000,Gasia Co. Ltd PS(R) Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000007d0400000540000000010000,Gravis Eliminator GamePad Pro,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+03000000280400000140000000010000,Gravis GamePad Pro USB ,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys GamePad ,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,platform:Linux,
+030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,
+0500000047532067616d657061640000,GS gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+03000000f0250000c383000010010000,GT VX2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,back:b8,guide:b9,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,platform:Linux,
+03000000c9110000f055000011010000,HJC Game GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+03000000632500002605000010010000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000000d0f00000d00000000010000,hori,a:b0,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftx:b4,lefty:b5,rightshoulder:b7,start:b9,x:b1,y:b2,platform:Linux,
+030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f0000c100000011010000,HORI CO. LTD. HORIPAD S,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00006a00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00006b00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00008500000010010000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00008600000002010000,Hori Fighting Commander,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+030000000d0f00005f00000011010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000000d0f00009200000011010000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f0000aa00000011010000,HORI Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000000d0f0000d800000072056800,HORI Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,
+030000000d0f00001600000000010000,Hori Real Arcade Pro.EX-SE (Xbox 360),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux,
+030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f0000ee00000011010000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000000d0f00006700000001010000,HORIPAD ONE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,platform:Linux,
+03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,
+050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000b50700001503000010010000,impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,
+03000000d80400008200000003000000,IMS PCU#0 Gamepad Interface,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,platform:Linux,
+03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),a:b3,b:b4,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b7,x:b0,y:b1,platform:Linux,
+0500000049190000020400001b010000,Ipega PG-9069 - Bluetooth Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b161,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000632500007505000011010000,Ipega PG-9099 - Bluetooth Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,platform:Linux,
+03000000300f00001001000010010000,Jess Tech Dual Analog Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,
+03000000300f00000b01000010010000,Jess Tech GGE909 PC Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
+03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
+030000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,
+050000007e0500000620000001000000,Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b13,leftshoulder:b4,leftstick:b10,rightshoulder:b5,start:b8,x:b2,y:b3,platform:Linux,
+030000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,
+050000007e0500000720000001000000,Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b12,leftshoulder:b4,leftstick:b11,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Linux,
+03000000242f00002d00000011010000,JYS Wireless Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000242f00008a00000011010000,JYS Wireless Adapter,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,
+030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006d0400001ec2000019200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006d0400000ac2000010010000,Logitech Inc. WingMan RumblePad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,rightx:a3,righty:a4,x:b3,y:b4,platform:Linux,
+030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,platform:Linux,
+050000004d4f435554452d3035305800,M54-PC,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftstick:b13,rightstick:b14,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,platform:Linux,
+05000000380700006652000025010000,Mad Catz C.T.R.L.R ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700005032000011010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700005082000011010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux,
+03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700008433000011010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700008483000011010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000120c00000500000000010000,Manta Dualshock 2,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,
+03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,
+03000000790000004318000010010000,Mayflash GameCube Controller Adapter,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,platform:Linux,
+03000000242f00007300000011010000,Mayflash Magic NS,a:b1,b:b4,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b0,y:b3,platform:Linux,
+0300000079000000d218000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000d620000010a7000011010000,Mayflash Magic NS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+0300000025090000e803000001010000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:a4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:a5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,
+03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,
+030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Linux,
+030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+050000005e040000050b000003090000,Microsoft X-Box One Elite 2 pad,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000005e040000e302000003020000,Microsoft X-Box One Elite pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000dd02000003020000,Microsoft X-Box One pad (Firmware 2015),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,
+030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,
+030000005e040000000b000008040000,Microsoft Xbox One Elite 2 pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000ea02000008040000,Microsoft Xbox One S pad - Wired,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c62400001a53000000010000,Mini PE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000030000000300000002000000,Miroof,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,platform:Linux,
+05000000d6200000e589000001000000,Moga 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,
+05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,
+05000000d62000007162000001000000,Moga Pro 2 HID,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Linux,
+03000000c62400002b89000011010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+05000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+05000000c62400001a89000000010000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,
+030000006b140000010c000010010000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+030000000d0f00000900000010010000,Natec Genesis P44,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Linux,
+060000007e0500000820000000000000,Nintendo Combined Joy-Cons (joycond),a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,
+030000007e0500003703000000016800,Nintendo GameCube Controller,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,platform:Linux,
+03000000790000004618000010010000,Nintendo GameCube Controller Adapter,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2~,start:b9,x:b0,y:b3,platform:Linux,
+050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+050000007e0500000920000001800000,Nintendo Switch Pro Controller (joycond),a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,
+030000007e0500000920000011810000,Nintendo Switch Pro Controller Wired (joycond),a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,platform:Linux,
+050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Linux,
+05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+030000000d0500000308000010010000,Nostromo n45 Dual Analog Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,platform:Linux,
+03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,
+05000000550900001472000001000000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Linux,
+03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+19000000010000000100000001010000,odroidgo2_joypad,a:b1,b:b0,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,guide:b10,leftshoulder:b4,leftstick:b12,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b13,righttrigger:b14,start:b15,x:b2,y:b3,platform:Linux,
+19000000010000000200000011000000,odroidgo2_joypad_v11,a:b1,b:b0,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b12,leftshoulder:b4,leftstick:b14,lefttrigger:b13,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:b16,start:b17,x:b2,y:b3,platform:Linux,
+030000005e0400000202000000010000,Old Xbox pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,platform:Linux,
+05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,
+05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,platform:Linux,
+03000000830500005020000010010000,Padix Co. Ltd. Rockfire PSX/USB Bridge,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b2,y:b3,platform:Linux,
+03000000790000001c18000011010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000006f0e0000b802000001010000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e0000b802000013020000,PDP AFTERGLOW Wired Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00008001000011010000,PDP CO. LTD. Faceoff Wired Pro Controller for Nintendo Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006f0e00003101000000010000,PDP EA Sports Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e0000c802000012010000,PDP Kingdom Hearts Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00008701000011010000,PDP Rock Candy Wired Controller for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000006f0e00000901000011010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000006f0e0000a802000023020000,PDP Wired Controller for Xbox One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+030000006f0e00008501000011010000,PDP Wired Fight Pad Pro for Nintendo Switch,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+05000000491900000204000000000000,PG-9118,x:b76,a:b73,b:b74,y:b77,back:b83,start:b84,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b79,lefttrigger:b81,rightshoulder:b80,righttrigger:b82,leftstick:b86,rightstick:b87,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux,
+0500000049190000030400001b010000,PG-9099,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000004c050000da0c000011010000,Playstation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,
+03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c62400003a54000001010000,PowerA 1428124-01,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000d62000006dca000011010000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000c62400001a58000001010000,PowerA Xbox One Cabled,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux,
+03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
+030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
-03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux,
-030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux,
-030000006f0e00003001000001010000,EA Sports PS3 Controller,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
-030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
+050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
+060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux,
+030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux,
+030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux,
+030000009b2800003200000001010000,Raphnet Technologies GC/N64 to USB v3.4,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,
+030000009b2800006000000001010000,Raphnet Technologies GC/N64 to USB v3.6,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux,
+030000009b2800000300000001010000,raphnet.net 4nes4snes v1.5,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux,
+030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000008916000000fd000024010000,Razer Onza Tournament Edition,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000321500000810000011010000,Razer Panthera Evo Arcade Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000321500000011000011010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,
+050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,
+0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,
+0300000081170000990a000001010000,Retronic Adapter,a:b0,leftx:a0,lefty:a1,platform:Linux,
+0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,
+030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,
+03000000a30600001005000000010000,Saitek P150,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b7,lefttrigger:b6,rightshoulder:b2,righttrigger:b5,x:b3,y:b4,platform:Linux,
+03000000a30600000701000000010000,Saitek P220,a:b2,b:b3,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,x:b0,y:b1,platform:Linux,
+03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b0,y:b1,platform:Linux,
+03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,platform:Linux,
+03000000300f00001201000010010000,Saitek P380,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,platform:Linux,
+03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,platform:Linux,
+03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,platform:Linux,
+03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Linux,
+03000000a306000020f6000011010000,Saitek PS2700 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux,
+03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux,
+03000000c01600008704000011010000,Serial/Keyboard/Mouse/Joystick,a:b12,b:b10,back:b4,dpdown:b2,dpleft:b3,dpright:b1,dpup:b0,leftshoulder:b9,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b8,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b5,x:b13,y:b11,platform:Linux,
+03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000bc2000000055000010010000,ShanWan PS3/PC Wired GamePad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000632500002305000010010000,ShanWan USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000341a00000908000010010000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,
+030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000d11800000094000011010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,
+03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:b18,dpleft:b19,dpright:b20,dpup:b17,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b5,platform:Linux,
+03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Linux,
+03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000381000003014000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000381000003114000075010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+03000000ad1b000038f0000090040000,Street Fighter IV FightStick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000003b07000004a1000000010000,Suncom SFX Plus for USB,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Linux,
+03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux,
+0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,platform:Linux,
+03000000457500002211000010010000,SZMY-POWER CO. LTD. GAMEPAD,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+030000008f0e00000d31000010010000,SZMY-POWER CO. LTD. GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000008f0e00001431000010010000,SZMY-POWER CO.,LTD. PS3 gamepad,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux,
+030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,
+030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,
+030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004f0400000ed0000011010000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000b50700000399000000010000,Thrustmaster Firestorm Digital 2,a:b2,b:b4,back:b11,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b8,rightstick:b0,righttrigger:b9,start:b1,x:b3,y:b5,platform:Linux,
+030000004f04000003b3000010010000,Thrustmaster Firestorm Dual Analog 2,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,x:b1,y:b3,platform:Linux,
+030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,platform:Linux,
+030000004f04000026b3000002040000,Thrustmaster Gamepad GP XID,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c6240000025b000002020000,Thrustmaster GPX Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000004f04000007d0000000010000,Thrustmaster T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux,
+030000004f04000012b3000010010000,Thrustmaster vibrating gamepad,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,platform:Linux,
+03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,platform:Linux,
+03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,platform:Linux,
+030000005e0400008e02000070050000,Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000c01100000591000011010000,Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
+03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux,
+03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux,
+03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux,
+030000006f0e00000302000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+030000006f0e00000702000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux,
+05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux,
+03000000791d00000103000010010000,Wii Classic Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+050000000d0f0000f600000001000000,Wireless HORIPAD Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
-03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
-03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux,
-030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
-030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,
-030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,
-030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
-030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux,
-030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux,
-030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
-030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,
-0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
-0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux,
-030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,
-030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000005e0400008502000000010000,Microsoft X-Box pad (Japan),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,
-030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
-030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux,
-03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,
-050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
-060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
-050000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
-05000000504c415953544154494f4e00,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux,
-03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13,
-05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
-05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,
-030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000005e040000dd02000003020000,Microsoft X-Box One pad v2,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux,
-03000000790000001100000010010000,RetroLink Saturn Classic Controller,platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,
-050000007e0500003003000001000000,Nintendo Wii U Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,guide:b10,leftshoulder:b4,rightshoulder:b5,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:b13,dpleft:b15,dpdown:b14,dpright:b16,
-030000005e0400008e02000004010000,Microsoft X-Box 360 pad,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,
-030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7
-03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-03000000f0250000c283000010010000,Goodbetterbest Ltd PC USB Controller,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7
-0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,lefttrigger:a5,righttrigger:a4,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux,
-030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000006f0e00001304000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:a0,rightstick:a3,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000830500006020000010010000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux,
-03000000c9110000f055000011010000,HJC Game GAMEPAD,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a3,dpleft:h0.8,lefttrigger:b6,x:b2,dpup:h0.1,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b0,dpright:h0.2,righttrigger:b7,b:b1,platform:Linux,
-03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux,
-03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,y:b3,x:b0,start:b9,guide:,back:,leftstick:,rightstick:,leftshoulder:,dpleft:b15,dpdown:b14,dpright:b13,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,rightshoulder:b7,dpup:b12,platform:Linux,
-030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,platform:Linux,x:b0,a:b2,b:b3,y:b1,back:b10,guide:b12,start:b11,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-030000006f0e00004601000001010000,Rock Candy Wired Controller for Xbox One,platform:Linux,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,guide:b8,leftstick:b9,rightstick:b10,lefttrigger:a2,righttrigger:a5,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000006f0e00003901000020060000,Afterglow Wired Controller for Xbox One,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,platform:Linux,
-030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,platform:Linux,a:b0,b:b2,x:b1,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,
-05000000102800000900000000010000,8Bitdo SFC30 GamePad,platform:Linux,x:b4,a:b1,b:b0,y:b3,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,
-03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftshoulder:b4,rightshoulder:b5,lefttrigger:b6,righttrigger:b7,leftx:a0,lefty:a1,
-030000000d0f00000d00000000010000,hori,platform:Linux,a:b0,b:b6,y:b2,x:b1,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,start:b9,guide:b10,back:b8,leftshoulder:b3,rightshoulder:b7,leftx:b4,lefty:b5,
-030000000d0f00006700000001010000,HORIPAD ONE,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,
-03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,
-03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,platform:Linux,a:b0,b:b1,y:b2,x:b3,start:b9,back:b8,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7,
-03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),platform:Linux,a:b3,b:b4,y:b1,x:b0,start:b7,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,
-05000000010000000100000003000000,Nintendo Wiimote,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b9,guide:b10,back:b8,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-030000005e0400008e02000062230000,Microsoft X-Box 360 pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,y:b1,x:b0,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b6,righttrigger:b7,platform:Linux,
-030000006f0e00000103000000020000,Logic3 Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-05000000380700006652000025010000,Mad Catz C.T.R.L.R ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,
-06000000adde0000efbe000002010000,Hidromancer Game Controller,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000c01600008704000011010000,Serial/Keyboard/Mouse/Joystick,platform:Linux,a:b12,b:b10,x:b13,y:b11,back:b4,start:b5,leftstick:b14,rightstick:b15,leftshoulder:b9,rightshoulder:b8,dpup:b0,dpdown:b2,dpleft:b3,dpright:b1,leftx:a1,lefty:a0,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-05000000a00500003232000001000000,8Bitdo Zero GamePad,platform:Linux,a:b0,b:b1,x:b3,y:b4,back:b10,start:b11,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,
-03000000780000000600000010010000,Microntek USB Joystick,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftx:a0,lefty:a1,
-03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,lefttrigger:a2,righttrigger:a5,
-03000000100800000300000010010000,USB Gamepad,platform:Linux,a:b2,b:b1,x:b3,y:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,
-030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000001008000001e5000010010000,NEXT Classic USB Game Controller,a:b0,b:b1,back:b8,start:b9,rightx:a2,righty:a3,leftx:a0,lefty:a1,platform:Linux,
-030000006d04000016c2000011010000,Logitech F310 Gamepad (DInput),x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux,
-03000000bd12000015d0000010010000,Tomee SNES USB Controller,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux,
-050000004c050000cc09000000010000,Sony DualShock 4 V2 BT,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux,
-030000004c050000a00b000011010000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b13,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux,
-05000000ac0500003232000001000000,VR-BOX,platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,
-030000004c050000cc09000011010000,Sony DualShock 4 V2,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux,
-030000004c050000cc09000011810000,Sony Interactive Entertainment Wireless Controller,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-050000004c050000cc09000000810000,Wireless Controller,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-030000004c0500006802000011810000,Sony PLAYSTATION(R)3 Controller,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-050000004c0500006802000000810000,PLAYSTATION(R)3 Controller,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,guide:b10,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:a5,leftstick:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,
-03000000c82d00000190000011010000,8Bitdo NES30 Pro 8Bitdo NES30 Pro,platform:Linux,a:b1,b:b0,x:b4,y:b3,back:b10,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,
-05000000c82d00002038000000010000,8Bitdo NES30 Pro,platform:Linux,a:b1,b:b0,x:b4,y:b3,back:b10,guide:b2,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
-030000005e040000a102000000010000,Xbox 360 Wireless Receiver,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,guide:b8,start:b7,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpdown:b14,dpleft:b11,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,
-050000004c050000cc09000001000000,Sony DualShock 4 V2 BT,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:a3,righttrigger:a4,platform:Linux,
-03000000bc2000006412000011010000,BETOP CONTROLLER,a:b2,b:b1,y:b0,x:b3,start:b9,guide:b30,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux,
-05000000c82d00000161000000010000,8Bitdo SN30 Pro,platform:Linux,a:b1,b:b0,x:b4,y:b3,back:b10,guide:b2,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
-03000000380700008532000010010000,MadCatz Madcatz Fightpad,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,lefttrigger:b5,righttrigger:b7,
-030000000d0f0000ee00000011010000,HORI CO.,LTD. HORIPAD mini4,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-030000000d0f0000c100000011010000,HORI CO.,LTD. HORIPAD S,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,
-03000000ad1b000003f5000033050000,Hori Fighting Stick VX,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftshoulder:b4,rightshoulder:b5,-leftx:h0.8,+leftx:h0.2,-lefty:h0.1,+lefty:h0.4,lefttrigger:b6,righttrigger:b7,
-03000000c82d00000260000011010000,8Bitdo SF30 Pro 8BitDo SN30 Pro+,platform:Linux,a:b1,b:b0,x:b4,y:b3,back:b10,guide:b2,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4,
-060000007e0500000820000000000000,Nintendo Switch Combined Joy-Cons,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b9,guide:b11,start:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:b14,dpdown:b15,dpleft:b16,dpright:b17,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8,
+030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000a102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux,
+030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000d102000002010000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+050000005e040000fd02000030110000,Xbox One Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+050000005e040000050b000002090000,Xbox One Elite Series 2,a:b0,b:b1,back:b136,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a6,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000005e040000ea02000000000000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000005e040000ea02000001030000,Xbox One Wireless Controller (Model 1708),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000120b000001050000,Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+030000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+050000005e040000130b000001050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+050000005e040000130b000005050000,Xbox Series Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
+030000005e0400008e02000000010000,xbox360 Wireless EasySMX,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux,
+03000000ac0500005b05000010010000,Xiaoji Gamesir-G3w,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux,
+05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Linux,
+03000000c0160000e105000001010000,Xin-Mo Xin-Mo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux,
+xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
+03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,
+03000000c0160000dc27000001010000,OnyxSoft Dual JoyDivision,platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b6,leftshoulder:b4,rightshoulder:b5,dpup:-a1,dpdown:+a1,dpleft:-a0,dpright:+a0,
+
+# Android
+05000000c82d000006500000ffff3f00,8BitDo M30 Gamepad,a:b1,b:b0,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000051060000ffff3f00,8BitDo M30 Gamepad,a:b1,b:b0,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000012900000ffff3f00,8BitDo SN30 Gamepad,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000062280000ffff3f00,8BitDo SN30 Gamepad,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000002600000ffff0f00,8BitDo SN30 Pro+,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+050000002028000009000000ffff3f00,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android,
+050000003512000020ab000000780f00,8BitDo SNES30 Gamepad,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,platform:Android,
+05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android,
+05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android,
+05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android,
+0500000031366332860c44aadfff0f00,GS Gamepad,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b3,y:b2,platform:Android,
+64633436313965656664373634323364,Microsoft X-Box 360 pad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android,
+7573622067616d657061642020202020,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,platform:Android,
+050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android,
+37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005509000003720000cf7f3f00,NVIDIA Controller v01.01,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005509000010720000ffff3f00,NVIDIA Controller v01.03,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005509000014720000df7f3f00,NVIDIA Controller v01.04,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android,
+050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+030000004c050000cc09000000006800,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000004c050000c4050000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android,
+050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000004c050000cc090000fffe3f00,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android,
+050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android,
+050000004c050000e60c0000fffe3f00,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android,
+62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android,
+32633532643734376632656664383733,Sony DualSense,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android,
+61303162353165316365336436343139,Sony DualSense,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android,
+05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android,
+05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android,
+050000004f0400000ed00000fffe3f00,ThrustMaster eSwap PRO Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+5477696e20555342204a6f7973746963,Twin USB Joystick,a:b22,b:b21,back:b28,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android,
+30306539356238653637313730656134,Wireless HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android,
+050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005e040000e00200000ffe3f00,Xbox One Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android,
+050000005e040000fd020000ffff3f00,Xbox One Wireless Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android,
+050000005e04000091020000ff073f00,Xbox Wireless Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android,
+34356136633366613530316338376136,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android,
+050000001727000044310000ffff3f00,XiaoMi Game Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android,
+
+# iOS
+05000000ac0500000100000000006d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS,
+05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS,
+05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,platform:iOS,
+05000000ac05000001000000df076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS,
+05000000ac05000001000000ff076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS,
+05000000ac0500000200000000006d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS,
+05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,platform:iOS,
+4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:iOS,
+4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,platform:iOS,
+050000004c050000cc090000df070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS,
+050000004c050000cc090000ff070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS,
+050000004c050000cc090000ff870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,platform:iOS,
+05000000ac0500000300000000006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS,
+05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,platform:iOS,
+05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS,
+05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:iOS,
+050000005e040000050b0000ff070001,Xbox Elite Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS,
+050000005e040000e0020000df070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS,
+050000005e040000e0020000ff070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS,
diff --git a/gamefiles/models/frontend_ds2.txd b/gamefiles/models/frontend_ds2.txd
new file mode 100644
index 00000000..7cf6c41f
--- /dev/null
+++ b/gamefiles/models/frontend_ds2.txd
Binary files differ
diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd
new file mode 100644
index 00000000..06518848
--- /dev/null
+++ b/gamefiles/models/frontend_ds3.txd
Binary files differ
diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd
new file mode 100644
index 00000000..96193714
--- /dev/null
+++ b/gamefiles/models/frontend_ds4.txd
Binary files differ
diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd
new file mode 100644
index 00000000..acb33099
--- /dev/null
+++ b/gamefiles/models/frontend_x360.txd
Binary files differ
diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd
new file mode 100644
index 00000000..b092e8e2
--- /dev/null
+++ b/gamefiles/models/frontend_xone.txd
Binary files differ
diff --git a/gamefiles/models/ps3btns.txd b/gamefiles/models/ps3btns.txd
new file mode 100644
index 00000000..6f485f14
--- /dev/null
+++ b/gamefiles/models/ps3btns.txd
Binary files differ
diff --git a/gamefiles/models/x360btns.txd b/gamefiles/models/x360btns.txd
index 27837c2f..3c6ac314 100644
--- a/gamefiles/models/x360btns.txd
+++ b/gamefiles/models/x360btns.txd
Binary files differ
diff --git a/logo.png b/logo.png
new file mode 100644
index 00000000..4d5a192d
--- /dev/null
+++ b/logo.png
Binary files differ
diff --git a/logo.svg b/logo.svg
new file mode 100644
index 00000000..3af9cb19
--- /dev/null
+++ b/logo.svg
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="reVC.svg"
+ inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07, custom)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 270.93331 270.93334"
+ height="1024"
+ width="1024"
+ inkscape:export-filename="/home/hazelnot/Design/re3_final.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter1055">
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood1045" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite1047" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="0"
+ result="blur"
+ id="feGaussianBlur1049" />
+ <feOffset
+ dx="1"
+ dy="1"
+ result="offset"
+ id="feOffset1051" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite1053" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:window-height="1359"
+ inkscape:window-width="2560"
+ inkscape:snap-page="true"
+ inkscape:showpageshadow="false"
+ inkscape:pagecheckerboard="false"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="svg8"
+ inkscape:document-units="mm"
+ inkscape:cy="624.20389"
+ inkscape:cx="108.63858"
+ inkscape:zoom="0.7"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ borderopacity="1"
+ bordercolor="#000000"
+ pagecolor="#606060"
+ id="base"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ lock-margins="false"
+ units="px" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="g837"
+ transform="matrix(2.1130708,0,0,2.1130708,14.956432,63.50059)"
+ style="display:none">
+ <path
+ id="path1450"
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.83595;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="M 0.91799998,0.91799998 V 54.101316 H 17.960888 v 2.33009 c 0,2.95453 1.347497,6.384348 3.911905,8.332308 2.564408,1.947971 5.514112,2.433445 8.500257,2.433445 h 46.367194 v -14.5464 c 2.171993,1.134845 4.548071,1.450557 6.948413,1.450557 h 17.042893 c 2.98614,0 5.93584,-0.485482 8.50025,-2.433442 2.5644,-1.94796 3.91191,-5.377273 3.91191,-8.331793 V 30.964744 c 0,-1.094128 -0.25094,-2.296243 -0.70487,-3.457153 0.45593,-1.16196 0.70487,-2.363609 0.70487,-3.453019 V 11.81656 c 0,-2.9682265 -1.29681,-6.3966108 -3.85713,-8.3907028 -2.56031,-1.9940909 -5.55104,-2.50785722 -8.55503,-2.50785722 H 83.819398 c -3.003989,0 -5.99213,0.51376632 -8.55245,2.50785722 C 74.832145,3.7645045 74.436551,4.1470248 74.074773,4.5591214 73.713016,4.1470532 73.317379,3.7644843 72.8826,3.4258572 70.322288,1.4317663 67.332073,0.91799998 64.328081,0.91799998 H 47.285195 c -2.976748,0 -5.937909,0.51342982 -8.482687,2.46289872 C 36.275393,1.4370808 33.325985,0.91799998 30.37305,0.91799998 Z"
+ inkscape:label="Border" />
+ <g
+ id="g1475"
+ inkscape:label="Text"
+ style="display:inline"
+ transform="translate(-51.547657,-77.439255)">
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11.136;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 84.566726,139.06892 c -4.562445,0 -6.843668,-1.73285 -6.843668,-5.19856 v -24.61088 c 0,-0.0877 -0.04387,-0.13161 -0.131609,-0.13161 h -3.22442 v 16.84595 H 60.679694 V 83.92475 h 23.887032 c 4.518575,0 6.777863,1.776721 6.777863,5.330164 v 12.239636 c 0,2.01801 -1.118676,3.15862 -3.356029,3.42183 2.281223,0.30709 3.421834,1.46964 3.421834,3.48764 v 20.07037 c 0,0.0877 0.04387,0.13161 0.131609,0.13161 h 33.823507 v 10.46292 z M 77.723058,94.585079 c 0,-0.08774 -0.04387,-0.131609 -0.131609,-0.131609 h -3.22442 v 6.31723 h 3.22442 c 0.08774,0 0.131609,-0.0439 0.131609,-0.13161 z m 33.955122,0 c 0,-0.08774 -0.0439,-0.131609 -0.13161,-0.131609 h -3.09281 c -0.0877,0 -0.13161,0.04387 -0.13161,0.131609 v 5.856601 h 3.35603 z m -10.1997,31.388741 c -4.562444,0 -6.843666,-1.73285 -6.843666,-5.19855 V 89.254914 c 0,-3.553443 2.281222,-5.330164 6.843666,-5.330164 h 17.04337 c 4.56244,0 6.84366,1.776721 6.84366,5.330164 v 20.991636 h -17.04336 v 5.13275 c 0,0.0877 0.0439,0.13161 0.13161,0.13161 h 3.09281 c 0.0877,0 0.13161,-0.0439 0.13161,-0.13161 v -2.50057 h 13.68733 v 7.89654 c 0,3.4657 -2.28122,5.19855 -6.84366,5.19855 z"
+ id="path1452"
+ transform="translate(-2.6458322)"
+ inkscape:label="re" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:Pricedown;-inkscape-font-specification:Pricedown;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#c60000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:11.1359;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 135.23613,125.97382 c -4.56245,0 -6.84367,-1.73285 -6.84367,-5.19855 v -7.89654 h 13.68733 v 2.50057 c 0,0.0877 0.0439,0.13161 0.13161,0.13161 h 3.09281 c 0.0877,0 0.13161,-0.0439 0.13161,-0.13161 v -6.11982 c 0,-0.0877 -0.0439,-0.13161 -0.13161,-0.13161 h -16.71434 v -8.35717 h 16.71434 c 0.0877,0 0.13161,-0.0439 0.13161,-0.13161 v -6.054011 c 0,-0.08774 -0.0439,-0.131609 -0.13161,-0.131609 h -3.09281 c -0.0877,0 -0.13161,0.04387 -0.13161,0.131609 v 2.434766 h -13.55572 v -7.764931 c 0,-3.553443 2.28122,-5.330164 6.84366,-5.330164 h 16.91176 c 4.56245,0 6.84367,1.776721 6.84367,5.330164 v 12.239636 c 0,2.01801 -1.14061,3.15862 -3.42184,3.42183 2.28123,0.30709 3.42184,1.46964 3.42184,3.48764 v 12.37125 c 0,3.4657 -2.28122,5.19855 -6.84367,5.19855 z"
+ id="path1458"
+ inkscape:label="3" />
+ </g>
+ </g>
+ <g
+ id="g3625-7"
+ inkscape:label="reVC_10"
+ transform="matrix(2.4113736,0,0,2.4113736,-122.44911,-160.08821)">
+ <path
+ style="display:inline;fill:#00bbe2;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 102.78895,112.11187 54.54276,9.96769 -30.34918,43.22598 z"
+ id="path1613-9"
+ sodipodi:nodetypes="cccc"
+ inkscape:label="triangle" />
+ <g
+ id="g3669-0"
+ style="display:inline;opacity:1"
+ inkscape:label="re">
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#f17db2;stroke-width:1.60863;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 57.388672,80.632812 v 48.632808 h 17.042969 v 4.60547 c 0,2.45514 1.029322,5.01368 3.011718,6.51953 1.982397,1.50586 4.425056,1.97071 7.123047,1.97071 H 128.6582 v -17.04688 h -1.47851 c 0.87224,-1.37715 1.47851,-2.92106 1.47851,-4.53906 v -7.23633 -3.95312 -20.330081 c 0,-2.481169 -1.00049,-5.053605 -2.98047,-6.595703 -1.97997,-1.542097 -4.44771,-2.027344 -7.15625,-2.027344 h -17.04296 c -2.708546,10e-7 -5.176278,0.485247 -7.156254,2.027344 -0.588908,0.458669 -0.913121,1.140613 -1.328125,1.751953 -0.409812,-0.606749 -0.72664,-1.284534 -1.308594,-1.742187 -1.967878,-1.547555 -4.428385,-2.03711 -7.119141,-2.03711 z m 6.582031,6.583985 h 20.595703 c 1.827819,0 2.757419,0.399739 3.048828,0.628906 0.29141,0.229167 0.4375,0.331111 0.4375,1.410156 v 12.238281 c 0,0.0702 0.0022,0.0438 0.002,0.0801 0.03874,-0.0312 0.06635,0.0114 -0.451172,0.0723 l -0.05469,6.53321 c 0.66816,0.0899 0.752817,0.24295 0.65625,0.14453 -0.09657,-0.0984 -0.08594,-0.3087 -0.08594,0.0801 v 20.07031 c 0,0.59276 0.198598,1.6281 0.996093,2.42578 0.797496,0.79768 1.834701,0.99805 2.427735,0.99805 h 30.53125 v 3.8789 H 84.566406 c -1.864454,0 -2.841799,-0.40191 -3.140625,-0.6289 -0.298826,-0.227 -0.410156,-0.26677 -0.410156,-1.27735 v -24.61132 c 0,-0.59276 -0.200551,-1.6281 -0.998047,-2.42579 -0.797496,-0.79768 -1.832748,-0.99804 -2.425781,-0.99804 h -6.517578 v 16.8457 h -7.103516 z m 37.507817,0 h 17.04296 c 1.8539,0 2.80813,0.402095 3.10938,0.636719 0.30124,0.234623 0.44336,0.33007 0.44336,1.402343 V 106.95508 H 105.0293 v 8.42383 c 0,0.59313 0.20067,1.63031 0.99804,2.42773 0.79738,0.79742 1.83258,0.99609 2.42578,0.99609 h 3.09376 c 0.59313,0 1.62836,-0.19872 2.42578,-0.99609 0.51996,-0.51993 0.73732,-1.1028 0.85937,-1.63672 h 7.24219 v 4.60547 c 0,1.01057 -0.11133,1.05035 -0.41016,1.27734 -0.29882,0.227 -1.27812,0.62891 -3.14258,0.62891 h -17.04296 c -1.864458,0 -2.841803,-0.40191 -3.140629,-0.62891 -0.298826,-0.22699 -0.410157,-0.26677 -0.410157,-1.27734 V 89.255859 c 0,-1.072272 0.140161,-1.167719 0.441407,-1.402343 0.301246,-0.234625 1.255472,-0.636719 3.109379,-0.636719 z M 71.074219,91.162109 V 104.0625 h 6.517578 c 0.592903,0 1.628193,-0.20031 2.425781,-0.99805 0.797588,-0.79773 0.998047,-1.83309 0.998047,-2.42578 v -6.052732 c 0,-0.592528 -0.200189,-1.629881 -0.998047,-2.427735 -0.797858,-0.797853 -1.83326,-0.996094 -2.425781,-0.996094 z m 37.378901,0 c -0.59275,0 -1.62809,0.198598 -2.42578,0.996094 -0.79768,0.797496 -0.99804,1.834701 -0.99804,2.427735 v 9.148442 h 9.9414 v -9.148442 c 0,-0.592903 -0.20031,-1.630147 -0.99804,-2.427735 -0.79774,-0.797588 -1.8331,-0.996094 -2.42578,-0.996094 z"
+ id="path3671-2"
+ inkscape:label="outline" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:9.53813;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 84.566726,139.06892 c -4.562445,0 -6.843668,-1.73285 -6.843668,-5.19856 v -24.61088 c 0,-0.0877 -0.04387,-0.13161 -0.131609,-0.13161 h -3.22442 v 16.84595 H 60.679694 V 83.92475 h 23.887032 c 4.518575,0 6.777863,1.776721 6.777863,5.330164 v 12.239636 c 0,2.01801 -1.118676,3.15862 -3.356029,3.42183 2.281223,0.30709 3.421834,1.46964 3.421834,3.48764 v 20.07037 c 0,0.0877 0.04387,0.13161 0.131609,0.13161 h 33.823507 v 10.46292 z M 77.723058,94.585079 c 0,-0.08774 -0.04387,-0.131609 -0.131609,-0.131609 h -3.22442 v 6.31723 h 3.22442 c 0.08774,0 0.131609,-0.0439 0.131609,-0.13161 z m 33.955122,0 c 0,-0.08774 -0.0439,-0.131609 -0.13161,-0.131609 h -3.09281 c -0.0877,0 -0.13161,0.04387 -0.13161,0.131609 v 5.856601 h 3.35603 z m -10.1997,31.388741 c -4.562444,0 -6.843666,-1.73285 -6.843666,-5.19855 V 89.254914 c 0,-3.553443 2.281222,-5.330164 6.843666,-5.330164 h 17.04337 c 4.56244,0 6.84366,1.776721 6.84366,5.330164 v 20.991636 h -17.04336 v 5.13275 c 0,0.0877 0.0439,0.13161 0.13161,0.13161 h 3.09281 c 0.0877,0 0.13161,-0.0439 0.13161,-0.13161 v -2.50057 h 13.68733 v 7.89654 c 0,3.4657 -2.28122,5.19855 -6.84366,5.19855 z"
+ id="path3673-3"
+ inkscape:label="text" />
+ </g>
+ <g
+ id="g861-9-7"
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#f17db2;stroke-opacity:1;filter:url(#filter1055)"
+ transform="matrix(1.3835644,0,0,1.3835644,-22.936608,36.936115)"
+ inkscape:label="Vc">
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#f17db2;stroke-width:3.175;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 115.29478,55.979585 a 1.0583349,1.0583349 0 0 0 -0.94727,0.53711 l -13.61915,24.06445 -1.763667,-7.15234 a 1.0583349,1.0583349 0 0 0 -1.28125,-0.77344 1.0583349,1.0583349 0 0 0 -0.77344,1.28125 l 2.40235,9.73438 a 1.0584408,1.0584408 0 0 0 1.947257,0.26757 l 14.9297,-26.38086 a 1.0583349,1.0583349 0 0 0 -0.39844,-1.4414 1.0583349,1.0583349 0 0 0 -0.49609,-0.13672 z"
+ id="path892-1-5" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#f17db2;stroke-width:3.175;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
+ d="m 118.1854,69.604585 a 1.0583349,1.0583349 0 0 0 -0.27343,0.0391 c 0,0 -2.1903,0.59881 -4.46875,2.08789 -2.27846,1.48909 -4.77359,3.96951 -5.16602,7.69531 -0.20107,1.90898 0.49022,3.43086 1.68359,4.15821 1.19338,0.72735 2.6066,0.75222 3.94727,0.60547 2.68134,-0.29351 5.29297,-1.44336 5.29297,-1.44336 a 1.0583349,1.0583349 0 0 0 0.55078,-1.39063 1.0583349,1.0583349 0 0 0 -1.39063,-0.55273 c 0,0 -2.46507,1.04035 -4.68359,1.2832 -1.10926,0.12142 -2.10191,0.002 -2.61523,-0.31055 -0.51333,-0.31286 -0.82729,-0.72566 -0.67969,-2.12695 0.3049,-2.89473 2.23993,-4.85323 4.21875,-6.14648 1.97882,-1.29326 3.87305,-1.82032 3.87305,-1.82032 a 1.0583349,1.0583349 0 0 0 0.73828,-1.30078 1.0583349,1.0583349 0 0 0 -1.02735,-0.77734 z"
+ id="path896-2-9" />
+ </g>
+ </g>
+</svg>
diff --git a/premake5.lua b/premake5.lua
index 010810a0..af64958e 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -1,11 +1,4 @@
newoption {
- trigger = "glewdir",
- value = "PATH",
- description = "Directory of GLEW",
- default = "vendor/glew-2.1.0"
-}
-
-newoption {
trigger = "glfwdir64",
value = "PATH",
description = "Directory of glfw",
@@ -65,7 +58,7 @@ end
workspace "reLCS"
language "C++"
- configurations { "Debug", "Release" }
+ configurations { "Debug", "Release", "Vanilla" }
startproject "reLCS"
location "build"
symbols "Full"
@@ -120,13 +113,16 @@ workspace "reLCS"
filter "configurations:Debug"
defines { "DEBUG" }
- filter "configurations:Release"
+ filter "configurations:not Debug"
defines { "NDEBUG" }
optimize "Speed"
if(_OPTIONS["lto"]) then
flags { "LinkTimeOptimization" }
end
+ filter "configurations:Vanilla"
+ defines { "VANILLA_DEFINES" }
+
filter { "platforms:win*" }
system "windows"
@@ -162,7 +158,6 @@ workspace "reLCS"
filter "platforms:*librw_gl3_glfw*"
defines { "RW_GL3" }
- includedirs { path.join(_OPTIONS["glewdir"], "include") }
if(not _OPTIONS["with-librw"]) then
libdirs { path.join(Librw, "lib/%{getsys(cfg.system)}-%{getarch(cfg.architecture)}-gl3/%{cfg.buildcfg}") }
end
@@ -173,9 +168,6 @@ workspace "reLCS"
filter "platforms:*amd64-librw_gl3_glfw*"
includedirs { path.join(_OPTIONS["glfwdir64"], "include") }
- filter "platforms:win*librw_gl3_glfw*"
- defines { "GLEW_STATIC" }
-
filter {}
function setpaths (gamepath, exepath)
@@ -200,6 +192,7 @@ project "librw"
targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}"))
files { path.join(Librw, "src/*.*") }
files { path.join(Librw, "src/*/*.*") }
+ files { path.join(Librw, "src/gl/*/*.*") }
filter { "platforms:*x86*" }
architecture "x86"
@@ -208,6 +201,7 @@ project "librw"
architecture "amd64"
filter "platforms:win*"
+ defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" }
staticruntime "on"
buildoptions { "/Zc:sizedDealloc-" }
@@ -239,6 +233,10 @@ project "reLCS"
targetname "reLCS"
targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
+ if(_OPTIONS["with-librw"]) then
+ dependson "librw"
+ end
+
files { addSrcFiles("src") }
files { addSrcFiles("src/animation") }
files { addSrcFiles("src/audio") }
@@ -264,6 +262,7 @@ project "reLCS"
files { addSrcFiles("src/vehicles") }
files { addSrcFiles("src/weapons") }
files { addSrcFiles("src/extras") }
+ files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build
includedirs { "src" }
includedirs { "src/animation" }
@@ -316,7 +315,7 @@ project "reLCS"
filter {}
if(os.getenv("GTA_LCS_RE_DIR")) then
- setpaths("$(GTA_LCS_RE_DIR)/", "%(cfg.buildtarget.name)")
+ setpaths(os.getenv("GTA_LCS_RE_DIR") .. "/", "%(cfg.buildtarget.name)")
end
filter "platforms:win*"
@@ -330,6 +329,10 @@ project "reLCS"
-- external librw is dynamic
staticruntime "on"
end
+ prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' }
+
+ filter "platforms:not win*"
+ prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' }
filter "platforms:win*glfw*"
staticruntime "off"
@@ -350,10 +353,10 @@ project "reLCS"
libdirs { "vendor/openal-soft/libs/Win64" }
filter "platforms:linux*oal"
- links { "openal", "mpg123", "sndfile", "pthread" }
+ links { "openal", "mpg123", "sndfile", "pthread", "X11" }
filter "platforms:bsd*oal"
- links { "openal", "mpg123", "sndfile", "pthread" }
+ links { "openal", "mpg123", "sndfile", "pthread", "X11" }
filter "platforms:macosx*oal"
links { "openal", "mpg123", "sndfile", "pthread" }
@@ -393,25 +396,23 @@ project "reLCS"
libdirs { "sdk/dx8sdk/lib" }
filter "platforms:win-x86*gl3_glfw*"
- libdirs { path.join(_OPTIONS["glewdir"], "lib/Release/Win32") }
libdirs { path.join(_OPTIONS["glfwdir32"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
- links { "opengl32", "glew32s", "glfw3" }
+ links { "opengl32", "glfw3" }
filter "platforms:win-amd64*gl3_glfw*"
- libdirs { path.join(_OPTIONS["glewdir"], "lib/Release/x64") }
libdirs { path.join(_OPTIONS["glfwdir64"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) }
- links { "opengl32", "glew32s", "glfw3" }
+ links { "opengl32", "glfw3" }
filter "platforms:linux*gl3_glfw*"
- links { "GL", "GLEW", "glfw" }
+ links { "GL", "glfw" }
filter "platforms:bsd*gl3_glfw*"
- links { "GL", "GLEW", "glfw", "sysinfo" }
+ links { "GL", "glfw", "sysinfo" }
includedirs { "/usr/local/include" }
libdirs { "/usr/local/lib" }
filter "platforms:macosx*gl3_glfw*"
- links { "GLEW", "glfw" }
+ links { "glfw" }
linkoptions { "-framework OpenGL" }
includedirs { "/opt/local/include" }
includedirs { "/usr/local/include" }
diff --git a/printHash.bat b/printHash.bat
new file mode 100644
index 00000000..ef1cd9d6
--- /dev/null
+++ b/printHash.bat
@@ -0,0 +1,26 @@
+@echo off
+
+REM creates version.h with HEAD commit hash
+REM params: $1=full path to output file (usually points version.h)
+
+setlocal enableextensions enabledelayedexpansion
+
+cd /d "%~dp0"
+
+break> %1
+
+<nul set /p=^"#define GIT_SHA1 ^"^"> %1
+
+where git
+if "%errorlevel%" == "0" ( goto :havegit ) else ( goto :writeending )
+
+:havegit
+for /f %%v in ('git rev-parse --short HEAD') do set version=%%v
+<nul set /p="%version%" >> %1
+
+:writeending
+
+echo ^" >> %1
+echo const char* g_GIT_SHA1 = GIT_SHA1; >> %1
+
+EXIT /B \ No newline at end of file
diff --git a/printHash.sh b/printHash.sh
new file mode 100755
index 00000000..e7d6f018
--- /dev/null
+++ b/printHash.sh
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+> $1
+
+echo -n "#define GIT_SHA1 \"" > $1
+
+if (command -v "git" >/dev/null) then
+git rev-parse --short HEAD | tr -d '\n' >> $1
+fi
+
+echo "\"" >> $1
+echo "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 \ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8325938c..10b40be2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
-set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
+set(THREADS_PREFER_PTHREAD_FLAG ON)
file(GLOB_RECURSE ${PROJECT}_SOURCES "*.cpp" "*.h" "*.rc")
@@ -17,6 +17,9 @@ endfunction()
header_directories(${PROJECT}_INCLUDES)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/extras/GitSHA1.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/extras/GitSHA1.cpp" @ONLY)
+list(APPEND ${PROJECT}_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/extras/GitSHA1.cpp")
+
add_executable(${EXECUTABLE} WIN32
${${PROJECT}_SOURCES}
)
@@ -46,6 +49,8 @@ if(LIBRW_PLATFORM_D3D9)
)
endif()
+target_compile_definitions(${EXECUTABLE} PRIVATE CMAKE_BUILD)
+
if(${PROJECT}_AUDIO STREQUAL "OAL")
find_package(OpenAL REQUIRED)
target_include_directories(${EXECUTABLE} PRIVATE ${OPENAL_INCLUDE_DIR})
diff --git a/src/animation/AnimBlendAssociation.cpp b/src/animation/AnimBlendAssociation.cpp
index bb4e7bf4..a65f0fc5 100644
--- a/src/animation/AnimBlendAssociation.cpp
+++ b/src/animation/AnimBlendAssociation.cpp
@@ -230,3 +230,9 @@ CAnimBlendAssociation::UpdateBlend(float timeDelta)
return true;
}
+
+void
+CAnimBlendAssociation::Remove()
+{
+ delete this;
+}
diff --git a/src/animation/AnimBlendAssociation.h b/src/animation/AnimBlendAssociation.h
index dbfcb722..da026e01 100644
--- a/src/animation/AnimBlendAssociation.h
+++ b/src/animation/AnimBlendAssociation.h
@@ -81,6 +81,7 @@ public:
void UpdateTimeStep(float timeDelta, float relSpeed);
bool UpdateTime(float timeDelta, float relSpeed);
bool UpdateBlend(float timeDelta);
+ void Remove();
void SetRun(void) { flags |= ASSOC_RUNNING; }
diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp
index 34a0673b..d0763ef7 100644
--- a/src/animation/AnimManager.cpp
+++ b/src/animation/AnimManager.cpp
@@ -20,212 +20,212 @@ CAnimBlendAssocGroup *CAnimManager::ms_aAnimAssocGroups;
CLinkList<CAnimBlendHierarchy*> CAnimManager::ms_animCache;
AnimAssocDesc aStdAnimDescs[] = {
- { ANIM_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_SPRINT, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
- { ANIM_IDLE_STANCE, ASSOC_REPEAT },
- { ANIM_WALK_START, ASSOC_HAS_TRANSLATION },
- { ANIM_RUN_STOP, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
- { ANIM_RUN_STOP_R, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
- { ANIM_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_IDLE_TIRED, ASSOC_REPEAT },
- { ANIM_IDLE_ARMED, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_IDLE_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_IDLE_TAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_KO_SHOT_FRONT1, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_FRONT2, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_FRONT3, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_FRONT4, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_KO_SHOT_STOM, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_ARML, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_ARMR, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_KO_SHOT_LEGL, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_KO_SHOT_LEGR, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_KD_LEFT, ASSOC_PARTIAL },
- { ANIM_KD_RIGHT, ASSOC_PARTIAL },
- { ANIM_KO_SKID_FRONT, ASSOC_PARTIAL },
- { ANIM_KO_SPIN_R, ASSOC_PARTIAL },
- { ANIM_KO_SKID_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_KO_SPIN_L, ASSOC_PARTIAL },
- { ANIM_SHOT_FRONT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_SHOT_LEFT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_SHOT_BACK_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_SHOT_RIGHT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_FLOOR_HIT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FLOOR_HIT_F, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_FIGHT_IDLE, ASSOC_REPEAT },
- { ANIM_FIGHT2_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_FIGHT_SH_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FIGHT_PPUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_L_HOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_R_HOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_UPPERCUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HEADBUTT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FRONTKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_L_HOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_R_HOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_UPPERCUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_HEADBUTT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_FRONTKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HIT_RHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_BOMBER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PUNCH_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_FIGHT_PPUNCH2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_KICK_FLOOR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_THROWU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_FIGHT_SH_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_CAR_JACKED_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_CAR_LJACKED_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_CAR_JACKED_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_CAR_LJACKED_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_CAR_QJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_QJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_CAR_ALIGN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ALIGNHI_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_DOORLOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_PULLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_PULLOUT_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETIN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETIN_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSEDOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSEDOOR_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ROLLDOOR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ROLLDOOR_LOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_JUMPIN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETOUT_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ALIGN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ALIGNHI_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_DOORLOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_PULLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_PULLOUT_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETIN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETIN_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSEDOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSEDOOR_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_LSHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_SIT, ASSOC_DELETEFADEDOUT },
- { ANIM_CAR_LSIT, ASSOC_DELETEFADEDOUT },
- { ANIM_CAR_SITP, ASSOC_DELETEFADEDOUT },
- { ANIM_CAR_SITPLO, ASSOC_DELETEFADEDOUT },
- { ANIM_DRIVE_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVE_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVE_LOW_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVE_LOW_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVEBY_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVEBY_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVEBY_LOW_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVEBY_LOW_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_CAR_LB, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVE_BOAT, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
- { ANIM_DRIVE_BOAT_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_DRIVE_BOAT_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BOAT_LB, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_PICKUP_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_PICKUP_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_PULLUP_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_PULLUP_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_ELBOW_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_ELBOW_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_FALL_OFF, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_BIKE_FALL_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_CAR_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_GETOUT_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_TRAIN_GETIN, ASSOC_DELETEFADEDOUT },
- { ANIM_TRAIN_GETOUT, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE },
- { ANIM_CAR_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_CRAWLOUT_RHS2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_CAR_ROLLOUT_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_CAR_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_GETUP1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_GETUP2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_GETUP3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_GETUP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FALL_FALL, ASSOC_DELETEFADEDOUT },
- { ANIM_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FALL_COLLAPSE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FALL_BACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_FALL_FRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
- { ANIM_EV_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_EV_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_COMMANDO_ROLL, ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
- { ANIM_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_ROAD_CROSS, ASSOC_REPEAT | ASSOC_PARTIAL },
- { ANIM_TURN_180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_ARREST_GUN, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_DROWN, ASSOC_PARTIAL },
- { ANIM_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_WEAPON_CROUCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_RBLOCK_CSHOOT, ASSOC_RUNNING },
- { ANIM_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
- { ANIM_PHONE_IN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
- { ANIM_SEAT_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_SEAT_UP, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_SEAT_IDLE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_SEAT_DOWN2, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_ATM, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_ABSEIL, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_RUNSTOP1, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_RUNSTOP2, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_IDLE_TIRED, ASSOC_REPEAT },
+ { ANIM_STD_IDLE_BIGGUN, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_HAILTAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_KO_FRONT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_LEFT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_BACK, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_RIGHT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_KO_SHOT_STOMACH, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_ARM_L, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_ARM_R, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_KO_SHOT_LEG_L, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_KO_SHOT_LEG_R, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_SPINFORWARD_LEFT, ASSOC_PARTIAL },
+ { ANIM_STD_SPINFORWARD_RIGHT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_FRONT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_LEFT, ASSOC_PARTIAL },
+ { ANIM_STD_HIGHIMPACT_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_HIGHIMPACT_RIGHT, ASSOC_PARTIAL },
+ { ANIM_STD_HITBYGUN_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HITBYGUN_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_FLOOR, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HIT_FLOOR_FRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_FIGHT_2IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_SHUFFLE_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_PARTIAL_PUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_FIGHT_ATTACK_A1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_A2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_A3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_ATTACK_B3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_A3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_FIGHT_HIT_B3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_DETONATE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PARTIALPUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_THROW_UNDER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_FIGHT_SHUFFLE_B, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JACKEDCAR_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LO_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JACKEDCAR_LO_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_QUICKJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_QUICKJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGNHI_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_OPEN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CARDOOR_LOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_JUMP_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_ALIGNHI_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_OPEN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CARDOOR_LOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_PULL_OUT_PED_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_GET_IN_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_DOOR_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SHUFFLE_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_SIT, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_LO, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_P, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_SIT_P_LO, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_CAR_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVE_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_DRIVEBY_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_CAR_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BOAT_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_STD_BIKE_PICKUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PICKUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PULLUP_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_PULLUP_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_ELBOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_ELBOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_BIKE_FALLOFF, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_BIKE_FALLBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_GETOUT_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_TRAIN_GETIN, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_TRAIN_GETOUT, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE },
+ { ANIM_STD_CRAWLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ROLLOUT_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_GET_UP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_GET_UP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL, ASSOC_DELETEFADEDOUT },
+ { ANIM_STD_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL_COLLAPSE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_FALL_ONBACK, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_FALL_ONFRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL },
+ { ANIM_STD_EVADE_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_EVADE_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_COMMANDO_ROLL, ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL },
+ { ANIM_STD_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_STD_ROADCROSS, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_STD_TURN180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ARREST, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_DROWN, ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_DUCK_WEAPON, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_RBLOCK_SHOOT, ASSOC_RUNNING },
+ { ANIM_STD_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
+ { ANIM_STD_PARTIAL_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK },
+ { ANIM_STD_PHONE_IN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_UP, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_IDLE, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_SEAT_RVRS, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ATM, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_ABSEIL, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL },
};
AnimAssocDesc aVanAnimDescs[] = {
- { ANIM_VAN_OPEN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_GETIN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_CLOSE_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_GETOUT_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_OPEN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_GETIN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_CLOSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_VAN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_IN_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_OUT_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_IN_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_VAN_GET_OUT_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aCoachAnimDescs[] = {
- { ANIM_COACH_OPEN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_COACH_OPEN_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_COACH_IN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_COACH_IN_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_COACH_OUT_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_STD_COACH_GET_OUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aBikeAnimDescs[] = {
{ ANIM_BIKE_RIDE, ASSOC_DELETEFADEDOUT },
- { ANIM_BIKE_STILL, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_READY, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
{ ANIM_BIKE_LEFT, ASSOC_PARTIAL | ASSOC_DRIVING },
{ ANIM_BIKE_RIGHT, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_BACK, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_FWD, ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_PUSHES, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_JUMPON_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_JUMPON_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_LEANB, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_LEANF, ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_WALKBACK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_JUMPON_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_JUMPON_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_BIKE_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_BIKE_HIT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_BIKE_GETOFF_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_BIKE_GETOFF_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_BIKE_GETOFF_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_BIKE_GETOFF_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION },
- { ANIM_BIKE_DRIVEBY_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
{ ANIM_BIKE_DRIVEBY_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_DRIVEBY_FT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
- { ANIM_BIKE_PASSENGER, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
+ { ANIM_BIKE_DRIVEBY_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_DRIVEBY_FORWARD, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_DRIVING },
+ { ANIM_BIKE_RIDE_P, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING },
};
AnimAssocDesc aMeleeAnimDescs[] = {
{ ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
@@ -242,25 +242,25 @@ AnimAssocDesc aSwingAnimDescs[] = {
{ ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aWeaponAnimDescs[] = {
- { ANIM_WEAPON_FIRE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_CROUCHFIRE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_WEAPON_CROUCHRELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_EXTRA1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_ATTACK_EXTRA2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aMedicAnimDescs[] = {
- { ANIM_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_MEDIC_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aSunbatheAnimDescs[] = {
- { ANIM_SUNBATHE, ASSOC_REPEAT | ASSOC_PARTIAL },
+ { ANIM_SUNBATHE_IDLE, ASSOC_REPEAT | ASSOC_PARTIAL },
{ ANIM_SUNBATHE_DOWN, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
{ ANIM_SUNBATHE_UP, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
{ ANIM_SUNBATHE_ESCAPE, ASSOC_HAS_X_TRANSLATION | ASSOC_HAS_TRANSLATION | ASSOC_PARTIAL },
};
AnimAssocDesc aPlayerIdleAnimDescs[] = {
- { ANIM_IDLE_STRETCH, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_IDLE_TIME, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_IDLE_SHOULDER, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_IDLE_STRETCH_LEG, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE1, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE2, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE3, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_PLAYER_IDLE4, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aRiotAnimDescs[] = {
{ ANIM_RIOT_ANGRY, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
@@ -269,7 +269,7 @@ AnimAssocDesc aRiotAnimDescs[] = {
{ ANIM_RIOT_PUNCHES, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_RIOT_SHOUT, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
{ ANIM_RIOT_CHALLENGE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
- { ANIM_RIOT_FUKU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
+ { ANIM_RIOT_FUCKYOU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aStripAnimDescs[] = {
{ ANIM_STRIP_A, ASSOC_REPEAT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
@@ -281,25 +281,25 @@ AnimAssocDesc aStripAnimDescs[] = {
{ ANIM_STRIP_G, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL },
};
AnimAssocDesc aStdAnimDescsSide[] = {
- { ANIM_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_SPRINT, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
- { ANIM_IDLE_STANCE, ASSOC_REPEAT },
- { ANIM_WALK_START, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
+ { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION | ASSOC_WALK },
+ { ANIM_STD_IDLE, ASSOC_REPEAT },
+ { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION },
};
AnimAssocDesc aMPNoteAnimDescs[] = {
- { ANIM_MPNOTE, ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_MPNOTE_LOOP, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MULTIPLAYER_CUTSCENE_MPNOTE, ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aCSMiscAnimDescs[] = {
- { ANIM_IDLE_LOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_NO, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_YES, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_CHAT2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_COUGH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_GIGGLE_FEMALE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_TOUGH_CHAT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_IDLE_CELL_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_LOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_NO, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_YES, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_CHAT2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_COUGH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_GIGGLE_FEMALE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_TOUGH_CHAT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_CS_MISC_IDLE_CELL_TALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aDONH2AnimDescs[] = {
{ ANIM_DONH2_CAMERA, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
@@ -320,7 +320,7 @@ AnimAssocDesc aJDT5AnimDescs[] = {
};
AnimAssocDesc aJDT6AnimDescs[] = {
{ ANIM_JDT6_PICKUP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_JDT6_DOORKNOCK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_JDT6_KNOCK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aMAR1AnimDescs[] = {
{ ANIM_MAR1_SKIRT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
@@ -334,7 +334,7 @@ AnimAssocDesc aMAR2AnimDescs[] = {
AnimAssocDesc aMAR3AnimDescs[] = {
{ ANIM_MAR3_HOOCHY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
{ ANIM_MAR3_NOTE_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_MAR3_NOTE_PICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_MAR3_NOTE_PICKUP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aSAL1AnimDescs[] = {
{ ANIM_SAL1_BIREFCASE_DOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
@@ -349,8 +349,8 @@ AnimAssocDesc aSAL3AnimDescs[] = {
{ ANIM_SAL3_SIT_DOWN, ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aSAL4AnimDescs[] = {
- { ANIM_SAL4_DUSTDOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
- { ANIM_SAL4_GIRLRUN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL4_DUST_DOWN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
+ { ANIM_SAL4_GIRL_RUN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
};
AnimAssocDesc aSAL6AnimDescs[] = {
{ ANIM_SAL6_ANGRY_SEATED, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE },
diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h
index 7e3234ab..5a8f7289 100644
--- a/src/animation/AnimationId.h
+++ b/src/animation/AnimationId.h
@@ -2,250 +2,256 @@
enum AnimationId
{
- ANIM_WALK,
- ANIM_RUN,
- ANIM_SPRINT,
- ANIM_IDLE_STANCE,
- ANIM_WALK_START,
- ANIM_RUN_STOP,
- ANIM_RUN_STOP_R,
- ANIM_IDLE_CAM,
- ANIM_IDLE_HBHB,
- ANIM_IDLE_TIRED,
- ANIM_IDLE_ARMED,
- ANIM_IDLE_CHAT,
- ANIM_IDLE_TAXI,
- ANIM_KO_SHOT_FRONT1,
- ANIM_KO_SHOT_FRONT2,
- ANIM_KO_SHOT_FRONT3,
- ANIM_KO_SHOT_FRONT4,
- ANIM_KO_SHOT_FACE,
- ANIM_KO_SHOT_STOM,
- ANIM_KO_SHOT_ARML,
- ANIM_KO_SHOT_ARMR,
- ANIM_KO_SHOT_LEGL,
- ANIM_KO_SHOT_LEGR,
- ANIM_KD_LEFT,
- ANIM_KD_RIGHT,
- ANIM_KO_SKID_FRONT,
- ANIM_KO_SPIN_R, // named left in VC
- ANIM_KO_SKID_BACK,
- ANIM_KO_SPIN_L, // named right in VC
- ANIM_SHOT_FRONT_PARTIAL,
- ANIM_SHOT_LEFT_PARTIAL,
- ANIM_SHOT_BACK_PARTIAL,
- ANIM_SHOT_RIGHT_PARTIAL,
- ANIM_HIT_FRONT,
- ANIM_HIT_LEFT,
- ANIM_HIT_BACK,
- ANIM_HIT_RIGHT,
- ANIM_FLOOR_HIT,
- ANIM_HIT_WALL,
- ANIM_FLOOR_HIT_F,
- ANIM_HIT_BEHIND,
- ANIM_FIGHT_IDLE,
- ANIM_FIGHT2_IDLE,
- ANIM_FIGHT_SH_F,
- ANIM_FIGHT_PPUNCH,
- ANIM_L_HOOK,
- ANIM_R_HOOK,
- ANIM_UPPERCUT,
- ANIM_HEADBUTT,
- ANIM_FRONTKICK,
- ANIM_ROUNDHOUSE,
- ANIM_HIT_L_HOOK,
- ANIM_HIT_R_HOOK,
- ANIM_HIT_UPPERCUT,
- ANIM_HIT_HEADBUTT,
- ANIM_HIT_FRONTKICK,
- ANIM_HIT_RHOUSE,
- ANIM_BOMBER,
- ANIM_PUNCH_R,
- ANIM_FIGHT_PPUNCH2,
- ANIM_KICK_FLOOR,
-
- ANIM_WEAPON_THROWU,
- ANIM_FIGHT_SH_BACK,
-
- ANIM_CAR_JACKED_RHS,
- ANIM_CAR_LJACKED_RHS,
- ANIM_CAR_JACKED_LHS,
- ANIM_CAR_LJACKED_LHS,
- ANIM_CAR_QJACK,
- ANIM_CAR_QJACKED,
- ANIM_CAR_ALIGN_LHS,
- ANIM_CAR_ALIGNHI_LHS,
- ANIM_CAR_OPEN_LHS,
- ANIM_CAR_DOORLOCKED_LHS,
- ANIM_CAR_PULLOUT_LHS,
- ANIM_CAR_PULLOUT_LOW_LHS,
- ANIM_CAR_GETIN_LHS,
- ANIM_CAR_GETIN_LOW_LHS,
- ANIM_CAR_CLOSEDOOR_LHS,
- ANIM_CAR_CLOSEDOOR_LOW_LHS,
- ANIM_CAR_ROLLDOOR,
- ANIM_CAR_ROLLDOOR_LOW,
- ANIM_CAR_JUMPIN_LHS,
- ANIM_CAR_GETOUT_LHS,
- ANIM_CAR_GETOUT_LOW_LHS,
- ANIM_CAR_CLOSE_LHS,
- ANIM_CAR_ALIGN_RHS,
- ANIM_CAR_ALIGNHI_RHS,
- ANIM_CAR_OPEN_RHS,
- ANIM_CAR_DOORLOCKED_RHS,
- ANIM_CAR_PULLOUT_RHS,
- ANIM_CAR_PULLOUT_LOW_RHS,
- ANIM_CAR_GETIN_RHS,
- ANIM_CAR_GETIN_LOW_RHS,
- ANIM_CAR_CLOSEDOOR_RHS,
- ANIM_CAR_CLOSEDOOR_LOW_RHS,
- ANIM_CAR_SHUFFLE_RHS,
- ANIM_CAR_LSHUFFLE_RHS,
- ANIM_CAR_SIT,
- ANIM_CAR_LSIT,
- ANIM_CAR_SITP,
- ANIM_CAR_SITPLO,
- ANIM_DRIVE_L,
- ANIM_DRIVE_R,
- ANIM_DRIVE_LOW_L,
- ANIM_DRIVE_LOW_R,
- ANIM_DRIVEBY_L,
- ANIM_DRIVEBY_R,
- ANIM_DRIVEBY_LOW_L,
- ANIM_DRIVEBY_LOW_R,
- ANIM_CAR_LB,
- ANIM_DRIVE_BOAT,
- ANIM_DRIVE_BOAT_L,
- ANIM_DRIVE_BOAT_R,
- ANIM_BOAT_LB,
-
- ANIM_BIKE_PICKUP_R,
- ANIM_BIKE_PICKUP_L,
- ANIM_BIKE_PULLUP_R,
- ANIM_BIKE_PULLUP_L,
- ANIM_BIKE_ELBOW_R,
- ANIM_BIKE_ELBOW_L,
- ANIM_BIKE_FALL_OFF,
- ANIM_BIKE_FALL_R,
-
- ANIM_CAR_GETOUT_RHS,
- ANIM_CAR_GETOUT_LOW_RHS,
- ANIM_CAR_CLOSE_RHS,
- ANIM_CAR_HOOKERTALK,
-
- ANIM_TRAIN_GETIN,
- ANIM_TRAIN_GETOUT,
-
- ANIM_CAR_CRAWLOUT_RHS,
- ANIM_CAR_CRAWLOUT_RHS2,
- ANIM_CAR_ROLLOUT_LHS,
- ANIM_CAR_ROLLOUT_RHS,
-
- ANIM_GETUP1,
- ANIM_GETUP2,
- ANIM_GETUP3,
- ANIM_GETUP_FRONT,
- ANIM_JUMP_LAUNCH,
- ANIM_JUMP_GLIDE,
- ANIM_JUMP_LAND,
- ANIM_FALL_FALL,
- ANIM_FALL_GLIDE,
- ANIM_FALL_LAND,
- ANIM_FALL_COLLAPSE,
- ANIM_FALL_BACK,
- ANIM_FALL_FRONT,
-
- ANIM_EV_STEP,
- ANIM_EV_DIVE,
- ANIM_COMMANDO_ROLL,
- ANIM_XPRESS_SCRATCH,
- ANIM_ROAD_CROSS,
- ANIM_TURN_180,
- ANIM_ARREST_GUN,
- ANIM_DROWN,
- ANIM_DUCK_DOWN,
- ANIM_DUCK_LOW,
-
- ANIM_WEAPON_CROUCH,
-
- ANIM_RBLOCK_CSHOOT,
- ANIM_HANDSUP,
- ANIM_HANDSCOWER,
- ANIM_FUCKU,
- ANIM_PHONE_IN,
- ANIM_PHONE_OUT,
- ANIM_PHONE_TALK,
-
- ANIM_SEAT_DOWN,
- ANIM_SEAT_UP,
- ANIM_SEAT_IDLE,
- ANIM_SEAT_DOWN2,
- ANIM_ATM,
- ANIM_ABSEIL,
-
- NUM_STD_ANIMS,
-
- ANIM_VAN_OPEN_L,
- ANIM_VAN_GETIN_L,
- ANIM_VAN_CLOSE_L,
- ANIM_VAN_GETOUT_L,
- ANIM_VAN_OPEN,
- ANIM_VAN_GETIN,
- ANIM_VAN_CLOSE,
- ANIM_VAN_GETOUT,
-
- ANIM_COACH_OPEN_L,
- ANIM_COACH_OPEN_R,
- ANIM_COACH_IN_L,
- ANIM_COACH_IN_R,
- ANIM_COACH_OUT_L,
+ ANIM_STD_WALK,
+ ANIM_STD_RUN,
+ ANIM_STD_RUNFAST,
+ ANIM_STD_IDLE,
+ ANIM_STD_STARTWALK,
+ ANIM_STD_RUNSTOP1,
+ ANIM_STD_RUNSTOP2,
+ ANIM_STD_IDLE_CAM,
+ ANIM_STD_IDLE_HBHB,
+ ANIM_STD_IDLE_TIRED,
+ ANIM_STD_IDLE_BIGGUN,
+ ANIM_STD_CHAT,
+ ANIM_STD_HAILTAXI,
+ ANIM_STD_KO_FRONT,
+ ANIM_STD_KO_LEFT,
+ ANIM_STD_KO_BACK,
+ ANIM_STD_KO_RIGHT,
+ ANIM_STD_KO_SHOT_FACE,
+ ANIM_STD_KO_SHOT_STOMACH,
+ ANIM_STD_KO_SHOT_ARM_L,
+ ANIM_STD_KO_SHOT_ARM_R,
+ ANIM_STD_KO_SHOT_LEG_L,
+ ANIM_STD_KO_SHOT_LEG_R,
+ ANIM_STD_SPINFORWARD_LEFT,
+ ANIM_STD_SPINFORWARD_RIGHT,
+ ANIM_STD_HIGHIMPACT_FRONT,
+ ANIM_STD_HIGHIMPACT_LEFT,
+ ANIM_STD_HIGHIMPACT_BACK,
+ ANIM_STD_HIGHIMPACT_RIGHT,
+ ANIM_STD_HITBYGUN_FRONT,
+ ANIM_STD_HITBYGUN_LEFT,
+ ANIM_STD_HITBYGUN_BACK,
+ ANIM_STD_HITBYGUN_RIGHT,
+ ANIM_STD_HIT_FRONT,
+ ANIM_STD_HIT_LEFT,
+ ANIM_STD_HIT_BACK,
+ ANIM_STD_HIT_RIGHT,
+ ANIM_STD_HIT_FLOOR,
+ ANIM_STD_HIT_WALL,
+ ANIM_STD_HIT_FLOOR_FRONT,
+ ANIM_STD_HIT_BEHIND,
+ ANIM_STD_FIGHT_IDLE,
+ ANIM_STD_FIGHT_2IDLE,
+ ANIM_STD_FIGHT_SHUFFLE_F,
+ ANIM_STD_PARTIAL_PUNCH,
+ ANIM_FIGHT_ATTACK_A1,
+ ANIM_FIGHT_ATTACK_A2,
+ ANIM_FIGHT_ATTACK_A3,
+ ANIM_FIGHT_ATTACK_B1,
+ ANIM_FIGHT_ATTACK_B2,
+ ANIM_FIGHT_ATTACK_B3,
+ ANIM_FIGHT_HIT_A1,
+ ANIM_FIGHT_HIT_A2,
+ ANIM_FIGHT_HIT_A3,
+ ANIM_FIGHT_HIT_B1,
+ ANIM_FIGHT_HIT_B2,
+ ANIM_FIGHT_HIT_B3,
+ ANIM_STD_DETONATE,
+ ANIM_STD_PUNCH,
+ ANIM_STD_PARTIALPUNCH,
+ ANIM_STD_KICKGROUND,
+
+ ANIM_STD_THROW_UNDER,
+ ANIM_STD_FIGHT_SHUFFLE_B,
+
+ ANIM_STD_JACKEDCAR_RHS,
+ ANIM_STD_JACKEDCAR_LO_RHS,
+ ANIM_STD_JACKEDCAR_LHS,
+ ANIM_STD_JACKEDCAR_LO_LHS,
+ ANIM_STD_QUICKJACK,
+ ANIM_STD_QUICKJACKED,
+ ANIM_STD_CAR_ALIGN_DOOR_LHS,
+ ANIM_STD_CAR_ALIGNHI_DOOR_LHS,
+ ANIM_STD_CAR_OPEN_DOOR_LHS,
+ ANIM_STD_CARDOOR_LOCKED_LHS,
+ ANIM_STD_CAR_PULL_OUT_PED_LHS,
+ ANIM_STD_CAR_PULL_OUT_PED_LO_LHS,
+ ANIM_STD_CAR_GET_IN_LHS,
+ ANIM_STD_CAR_GET_IN_LO_LHS,
+ ANIM_STD_CAR_CLOSE_DOOR_LHS,
+ ANIM_STD_CAR_CLOSE_DOOR_LO_LHS,
+ ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS,
+ ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS,
+ ANIM_STD_CAR_JUMP_IN_LO_LHS,
+ ANIM_STD_GETOUT_LHS,
+ ANIM_STD_GETOUT_LO_LHS,
+ ANIM_STD_CAR_CLOSE_LHS,
+ ANIM_STD_CAR_ALIGN_DOOR_RHS,
+ ANIM_STD_CAR_ALIGNHI_DOOR_RHS,
+ ANIM_STD_CAR_OPEN_DOOR_RHS,
+ ANIM_STD_CARDOOR_LOCKED_RHS,
+ ANIM_STD_CAR_PULL_OUT_PED_RHS,
+ ANIM_STD_CAR_PULL_OUT_PED_LO_RHS,
+ ANIM_STD_CAR_GET_IN_RHS,
+ ANIM_STD_CAR_GET_IN_LO_RHS,
+ ANIM_STD_CAR_CLOSE_DOOR_RHS,
+ ANIM_STD_CAR_CLOSE_DOOR_LO_RHS,
+ ANIM_STD_CAR_SHUFFLE_RHS,
+ ANIM_STD_CAR_SHUFFLE_LO_RHS,
+ ANIM_STD_CAR_SIT,
+ ANIM_STD_CAR_SIT_LO,
+ ANIM_STD_CAR_SIT_P,
+ ANIM_STD_CAR_SIT_P_LO,
+ ANIM_STD_CAR_DRIVE_LEFT,
+ ANIM_STD_CAR_DRIVE_RIGHT,
+ ANIM_STD_CAR_DRIVE_LEFT_LO,
+ ANIM_STD_CAR_DRIVE_RIGHT_LO,
+ ANIM_STD_CAR_DRIVEBY_LEFT,
+ ANIM_STD_CAR_DRIVEBY_RIGHT,
+ ANIM_STD_CAR_DRIVEBY_LEFT_LO,
+ ANIM_STD_CAR_DRIVEBY_RIGHT_LO,
+ ANIM_STD_CAR_LOOKBEHIND,
+ ANIM_STD_BOAT_DRIVE,
+ ANIM_STD_BOAT_DRIVE_LEFT,
+ ANIM_STD_BOAT_DRIVE_RIGHT,
+ ANIM_STD_BOAT_LOOKBEHIND,
+
+ ANIM_STD_BIKE_PICKUP_LHS,
+ ANIM_STD_BIKE_PICKUP_RHS,
+ ANIM_STD_BIKE_PULLUP_LHS,
+ ANIM_STD_BIKE_PULLUP_RHS,
+ ANIM_STD_BIKE_ELBOW_LHS,
+ ANIM_STD_BIKE_ELBOW_RHS,
+ ANIM_STD_BIKE_FALLOFF,
+ ANIM_STD_BIKE_FALLBACK,
+
+ ANIM_STD_GETOUT_RHS,
+ ANIM_STD_GETOUT_LO_RHS,
+ ANIM_STD_CAR_CLOSE_RHS,
+ ANIM_STD_CAR_HOOKERTALK,
+
+ ANIM_STD_TRAIN_GETIN,
+ ANIM_STD_TRAIN_GETOUT,
+
+ ANIM_STD_CRAWLOUT_LHS,
+ ANIM_STD_CRAWLOUT_RHS,
+ ANIM_STD_ROLLOUT_LHS,
+ ANIM_STD_ROLLOUT_RHS,
+
+ ANIM_STD_GET_UP,
+ ANIM_STD_GET_UP_LEFT,
+ ANIM_STD_GET_UP_RIGHT,
+ ANIM_STD_GET_UP_FRONT,
+ ANIM_STD_JUMP_LAUNCH,
+ ANIM_STD_JUMP_GLIDE,
+ ANIM_STD_JUMP_LAND,
+ ANIM_STD_FALL,
+ ANIM_STD_FALL_GLIDE,
+ ANIM_STD_FALL_LAND,
+ ANIM_STD_FALL_COLLAPSE,
+ ANIM_STD_FALL_ONBACK,
+ ANIM_STD_FALL_ONFRONT,
+
+ ANIM_STD_EVADE_STEP,
+ ANIM_STD_EVADE_DIVE,
+ ANIM_STD_COMMANDO_ROLL,
+ ANIM_STD_XPRESS_SCRATCH,
+ ANIM_STD_ROADCROSS,
+ ANIM_STD_TURN180,
+ ANIM_STD_ARREST,
+ ANIM_STD_DROWN,
+ ANIM_STD_DUCK_DOWN,
+ ANIM_STD_DUCK_LOW,
+
+ ANIM_STD_DUCK_WEAPON,
+
+ ANIM_STD_RBLOCK_SHOOT,
+ ANIM_STD_HANDSUP,
+ ANIM_STD_HANDSCOWER,
+ ANIM_STD_PARTIAL_FUCKU,
+ ANIM_STD_PHONE_IN,
+ ANIM_STD_PHONE_OUT,
+ ANIM_STD_PHONE_TALK,
+
+ ANIM_STD_SEAT_DOWN,
+ ANIM_STD_SEAT_UP,
+ ANIM_STD_SEAT_IDLE,
+ ANIM_STD_SEAT_RVRS,
+ ANIM_STD_ATM,
+ ANIM_STD_ABSEIL,
+
+ ANIM_STD_NUM,
+
+ ANIM_STD_VAN_OPEN_DOOR_REAR_LHS,
+ ANIM_STD_VAN_GET_IN_REAR_LHS,
+ ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS,
+ ANIM_STD_VAN_GET_OUT_REAR_LHS,
+ ANIM_STD_VAN_OPEN_DOOR_REAR_RHS,
+ ANIM_STD_VAN_GET_IN_REAR_RHS,
+ ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS,
+ ANIM_STD_VAN_GET_OUT_REAR_RHS,
+
+ ANIM_STD_COACH_OPEN_LHS,
+ ANIM_STD_COACH_OPEN_RHS,
+ ANIM_STD_COACH_GET_IN_LHS,
+ ANIM_STD_COACH_GET_IN_RHS,
+ ANIM_STD_COACH_GET_OUT_LHS,
ANIM_BIKE_RIDE,
- ANIM_BIKE_STILL,
+ ANIM_BIKE_READY,
ANIM_BIKE_LEFT,
ANIM_BIKE_RIGHT,
- ANIM_BIKE_BACK,
- ANIM_BIKE_FWD,
- ANIM_BIKE_PUSHES,
- ANIM_BIKE_JUMPON_R,
- ANIM_BIKE_JUMPON_L,
+ ANIM_BIKE_LEANB,
+ ANIM_BIKE_LEANF,
+ ANIM_BIKE_WALKBACK,
+ ANIM_BIKE_JUMPON_LHS,
+ ANIM_BIKE_JUMPON_RHS,
ANIM_BIKE_KICK,
ANIM_BIKE_HIT,
- ANIM_BIKE_GETOFF_RHS,
ANIM_BIKE_GETOFF_LHS,
+ ANIM_BIKE_GETOFF_RHS,
ANIM_BIKE_GETOFF_BACK,
- ANIM_BIKE_DRIVEBY_RHS,
ANIM_BIKE_DRIVEBY_LHS,
- ANIM_BIKE_DRIVEBY_FT,
- ANIM_BIKE_PASSENGER,
+ ANIM_BIKE_DRIVEBY_RHS,
+ ANIM_BIKE_DRIVEBY_FORWARD,
+ ANIM_BIKE_RIDE_P,
+
+ ANIM_ATTACK_1,
+ ANIM_ATTACK_2,
+ ANIM_ATTACK_EXTRA1,
+ ANIM_ATTACK_EXTRA2,
+ ANIM_ATTACK_3,
- ANIM_WEAPON_FIRE,
+ // our synonyms... because originals are hard to understand
+ ANIM_WEAPON_FIRE = ANIM_ATTACK_1,
ANIM_WEAPON_CROUCHFIRE,
+ ANIM_WEAPON_FIRE_2ND = ANIM_WEAPON_CROUCHFIRE,
ANIM_WEAPON_RELOAD,
ANIM_WEAPON_CROUCHRELOAD,
- ANIM_WEAPON_SPECIAL,
- ANIM_MELEE_ATTACK = ANIM_WEAPON_FIRE,
+ ANIM_WEAPON_FIRE_3RD,
+ ANIM_THROWABLE_THROW = ANIM_ATTACK_1,
+ ANIM_THROWABLE_THROWU,
+ ANIM_THROWABLE_START_THROW,
+ ANIM_MELEE_ATTACK = ANIM_ATTACK_1,
ANIM_MELEE_ATTACK_2ND,
ANIM_MELEE_ATTACK_START,
ANIM_MELEE_IDLE_FIGHTMODE,
ANIM_MELEE_ATTACK_FINISH,
- ANIM_THROWABLE_THROW = ANIM_WEAPON_FIRE,
- ANIM_THROWABLE_THROWU,
- ANIM_THROWABLE_START_THROW,
- ANIM_WEAPON_FIRE_2ND = ANIM_WEAPON_CROUCHFIRE,
- ANIM_WEAPON_FIRE_3RD = ANIM_WEAPON_SPECIAL,
- ANIM_SUNBATHE,
+ ANIM_SUNBATHE_IDLE,
ANIM_SUNBATHE_DOWN,
ANIM_SUNBATHE_UP,
ANIM_SUNBATHE_ESCAPE,
- ANIM_CPR,
+ ANIM_MEDIC_CPR,
- ANIM_IDLE_STRETCH,
- ANIM_IDLE_TIME,
- ANIM_IDLE_SHOULDER,
- ANIM_IDLE_STRETCH_LEG,
+ ANIM_PLAYER_IDLE1,
+ ANIM_PLAYER_IDLE2,
+ ANIM_PLAYER_IDLE3,
+ ANIM_PLAYER_IDLE4,
ANIM_RIOT_ANGRY,
ANIM_RIOT_ANGRY_B,
@@ -253,7 +259,7 @@ enum AnimationId
ANIM_RIOT_PUNCHES,
ANIM_RIOT_SHOUT,
ANIM_RIOT_CHALLENGE,
- ANIM_RIOT_FUKU,
+ ANIM_RIOT_FUCKYOU,
ANIM_STRIP_A,
ANIM_STRIP_B,
@@ -264,17 +270,17 @@ enum AnimationId
ANIM_STRIP_G,
- ANIM_MPNOTE,
- ANIM_MPNOTE_LOOP,
+ ANIM_MULTIPLAYER_CUTSCENE_MPNOTE,
+ ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP,
- ANIM_IDLE_LOOK,
- ANIM_IDLE_NO,
- ANIM_IDLE_YES,
- ANIM_IDLE_CHAT2,
- ANIM_IDLE_COUGH,
- ANIM_IDLE_GIGGLE_FEMALE,
- ANIM_IDLE_TOUGH_CHAT,
- ANIM_IDLE_CELL_TALK,
+ ANIM_CS_MISC_IDLE_LOOK,
+ ANIM_CS_MISC_IDLE_NO,
+ ANIM_CS_MISC_IDLE_YES,
+ ANIM_CS_MISC_IDLE_CHAT2,
+ ANIM_CS_MISC_IDLE_COUGH,
+ ANIM_CS_MISC_IDLE_GIGGLE_FEMALE,
+ ANIM_CS_MISC_IDLE_TOUGH_CHAT,
+ ANIM_CS_MISC_IDLE_CELL_TALK,
ANIM_DONH2_CAMERA,
ANIM_DONH3_HAPPY,
@@ -285,7 +291,7 @@ enum AnimationId
ANIM_JDT5_CALM_DOWN,
ANIM_JDT5_POINT,
ANIM_JDT6_PICKUP,
- ANIM_JDT6_DOORKNOCK,
+ ANIM_JDT6_KNOCK,
ANIM_MAR1_SKIRT,
ANIM_MAR2_CELL_ANSWER,
@@ -294,7 +300,7 @@ enum AnimationId
ANIM_MAR2_FOOT_TAP,
ANIM_MAR3_HOOCHY,
ANIM_MAR3_NOTE_IDLE,
- ANIM_MAR3_NOTE_PICK,
+ ANIM_MAR3_NOTE_PICKUP,
ANIM_SAL1_BIREFCASE_DOWN,
ANIM_SAL2_IDLE_SEATED,
@@ -302,8 +308,8 @@ enum AnimationId
ANIM_SAL3_SEATED_TALK,
ANIM_SAL3_SEATED_IDLE,
ANIM_SAL3_SIT_DOWN,
- ANIM_SAL4_DUSTDOWN,
- ANIM_SAL4_GIRLRUN,
+ ANIM_SAL4_DUST_DOWN,
+ ANIM_SAL4_GIRL_RUN,
ANIM_SAL6_ANGRY_SEATED,
ANIM_SAL6_IDLE_SEATED,
ANIM_SAL7_LOOKOUT,
@@ -322,7 +328,5 @@ enum AnimationId
ANIM_MAC2_PLEAD,
- ANIM_VIC7_PROD_WITH_FOOT,
-
- NUM_ANIMS
+ ANIM_VIC7_PROD_WITH_FOOT
}; \ No newline at end of file
diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp
index 250cd18e..decb73e5 100644
--- a/src/audio/AudioCollision.cpp
+++ b/src/audio/AudioCollision.cpp
@@ -158,7 +158,7 @@ cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollisio
void
cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter)
{
- bool distCalculated = false;
+ bool8 distCalculated = FALSE;
if(col.m_fIntensity2 > 0.0016f) {
uint8 emittingVol = SetLoopingCollisionRequestedSfxFreqAndGetVol(col);
if(emittingVol) {
@@ -168,20 +168,17 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun
m_sQueueSample.m_nCounter = counter;
m_sQueueSample.m_vecPos = col.m_vecPosition;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 7;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart =
- SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd =
- SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -311,17 +308,16 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col)
if(counter >= 255) counter = 28;
m_sQueueSample.m_vecPos = col.m_vecPosition;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 11;
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -332,13 +328,12 @@ void
cAudioManager::ServiceCollisions()
{
int i, j;
- bool abRepeatedCollision1[NUMAUDIOCOLLISIONS];
- bool abRepeatedCollision2[NUMAUDIOCOLLISIONS];
+ bool8 abRepeatedCollision1[NUMAUDIOCOLLISIONS];
+ bool8 abRepeatedCollision2[NUMAUDIOCOLLISIONS];
m_sQueueSample.m_nEntityIndex = m_nCollisionEntity;
- for (int i = 0; i < NUMAUDIOCOLLISIONS; i++)
- abRepeatedCollision1[i] = abRepeatedCollision2[i] = false;
+ for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) abRepeatedCollision1[i] = abRepeatedCollision2[i] = FALSE;
for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) {
for (j = 0; j < NUMAUDIOCOLLISIONS; j++) {
@@ -348,8 +343,8 @@ cAudioManager::ServiceCollisions()
&& (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1)
&& (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2)
) {
- abRepeatedCollision1[index] = true;
- abRepeatedCollision2[j] = true;
+ abRepeatedCollision1[index] = TRUE;
+ abRepeatedCollision2[j] = TRUE;
m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume;
SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j);
break;
diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp
index 457e09c0..6685a47d 100644
--- a/src/audio/AudioLogic.cpp
+++ b/src/audio/AudioLogic.cpp
@@ -43,9 +43,9 @@
#include "Script.h"
#include "Wanted.h"
-const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples);
-const int policeChannel = channels + 1;
-const int allChannels = channels + 2;
+#ifndef GTA_PS2
+#define CHANNEL_PLAYER_VEHICLE_ENGINE m_nActiveSamples
+#endif
enum PLAY_STATUS { PLAY_STATUS_STOPPED = 0, PLAY_STATUS_PLAYING, PLAY_STATUS_FINISHED };
enum LOADING_STATUS { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED, LOADING_STATUS_FAILED };
@@ -123,62 +123,62 @@ cAudioManager::PostInitialiseGameSpecificSetup()
{
m_nFireAudioEntity = CreateEntity(AUDIOTYPE_FIRE, &gFireManager);
if (m_nFireAudioEntity >= 0)
- SetEntityStatus(m_nFireAudioEntity, true);
+ SetEntityStatus(m_nFireAudioEntity, TRUE);
m_nCollisionEntity = CreateEntity(AUDIOTYPE_COLLISION, (void *)1);
if (m_nCollisionEntity >= 0)
- SetEntityStatus(m_nCollisionEntity, true);
+ SetEntityStatus(m_nCollisionEntity, TRUE);
m_nFrontEndEntity = CreateEntity(AUDIOTYPE_FRONTEND, (void *)1);
if (m_nFrontEndEntity >= 0)
- SetEntityStatus(m_nFrontEndEntity, true);
+ SetEntityStatus(m_nFrontEndEntity, TRUE);
m_nProjectileEntity = CreateEntity(AUDIOTYPE_PROJECTILE, (void *)1);
if (m_nProjectileEntity >= 0)
- SetEntityStatus(m_nProjectileEntity, true);
+ SetEntityStatus(m_nProjectileEntity, TRUE);
m_nWaterCannonEntity = CreateEntity(AUDIOTYPE_WATERCANNON, (void *)1);
if (m_nWaterCannonEntity >= 0)
- SetEntityStatus(m_nWaterCannonEntity, true);
+ SetEntityStatus(m_nWaterCannonEntity, TRUE);
m_nPoliceChannelEntity = CreateEntity(AUDIOTYPE_POLICERADIO, (void *)1);
if (m_nPoliceChannelEntity >= 0)
- SetEntityStatus(m_nPoliceChannelEntity, true);
+ SetEntityStatus(m_nPoliceChannelEntity, TRUE);
#ifdef GTA_BRIDGE
m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void*)1);
if (m_nBridgeEntity >= 0)
- SetEntityStatus(m_nBridgeEntity, true);
+ SetEntityStatus(m_nBridgeEntity, TRUE);
#endif // GTA_BRIDGE
m_nEscalatorEntity = CreateEntity(AUDIOTYPE_ESCALATOR, (void*)1);
if (m_nEscalatorEntity >= 0)
- SetEntityStatus(m_nEscalatorEntity, true);
+ SetEntityStatus(m_nEscalatorEntity, TRUE);
m_nExtraSoundsEntity = CreateEntity(AUDIOTYPE_EXTRA_SOUNDS, (void*)1);
if (m_nExtraSoundsEntity >= 0)
- SetEntityStatus(m_nExtraSoundsEntity, true);
+ SetEntityStatus(m_nExtraSoundsEntity, TRUE);
m_sMissionAudio.m_nSampleIndex[0] = NO_SAMPLE;
m_sMissionAudio.m_nLoadingStatus[0] = LOADING_STATUS_NOT_LOADED;
m_sMissionAudio.m_nPlayStatus[0] = PLAY_STATUS_STOPPED;
- m_sMissionAudio.m_bIsPlaying[0] = false;
- m_sMissionAudio.m_bIsPlayed[0] = false;
- m_sMissionAudio.m_bPredefinedProperties[0] = true;
+ m_sMissionAudio.m_bIsPlaying[0] = FALSE;
+ m_sMissionAudio.m_bIsPlayed[0] = FALSE;
+ m_sMissionAudio.m_bPredefinedProperties[0] = TRUE;
m_sMissionAudio.m_nMissionAudioCounter[0] = 0;
- m_sMissionAudio.m_bIsMobile[0] = false;
+ m_sMissionAudio.m_bIsMobile[0] = FALSE;
field_5538 = 127;
m_sMissionAudio.m_nSampleIndex[1] = NO_SAMPLE;
m_sMissionAudio.m_nLoadingStatus[1] = LOADING_STATUS_NOT_LOADED;
m_sMissionAudio.m_nPlayStatus[1] = PLAY_STATUS_STOPPED;
- m_sMissionAudio.m_bIsPlaying[1] = false;
- m_sMissionAudio.m_bIsPlayed[1] = false;
- m_sMissionAudio.m_bPredefinedProperties[1] = true;
+ m_sMissionAudio.m_bIsPlaying[1] = FALSE;
+ m_sMissionAudio.m_bIsPlayed[1] = FALSE;
+ m_sMissionAudio.m_bPredefinedProperties[1] = TRUE;
m_sMissionAudio.m_nMissionAudioCounter[1] = 0;
- m_sMissionAudio.m_bIsMobile[1] = false;
+ m_sMissionAudio.m_bIsMobile[1] = FALSE;
field_5538 = 127;
ResetAudioLogicTimers(CTimer::GetTimeInMilliseconds());
- m_bIsPlayerShutUp = false;
+ m_bIsPlayerShutUp = FALSE;
m_nPlayerMood = PLAYER_MOOD_CALM;
m_nPlayerMoodTimer = 0;
}
@@ -246,23 +246,25 @@ cAudioManager::ResetAudioLogicTimers(uint32 timer)
}
ClearMissionAudio(0);
ClearMissionAudio(1);
- SampleManager.StopChannel(policeChannel);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
}
void
cAudioManager::ProcessReverb() const
{
#ifdef FIX_BUGS
- const uint32 numChannels = channels;
+ const uint32 numChannels = NUM_CHANNELS_GENERIC;
#else
- const uint32 numChannels = 28;
+ const uint32 numChannels = NUM_CHANNELS_GENERIC+1;
#endif
if (SampleManager.UpdateReverb() && m_bDynamicAcousticModelingStatus) {
+#ifndef GTA_PS2
for (uint32 i = 0; i < numChannels; i++) {
if (m_asActiveSamples[i].m_bReverbFlag)
- SampleManager.SetChannelReverbFlag(i, true);
+ SampleManager.SetChannelReverbFlag(i, TRUE);
}
+#endif
}
}
@@ -274,11 +276,11 @@ cAudioManager::GetDistanceSquared(const CVector &v) const
}
void
-cAudioManager::CalculateDistance(bool &distCalculated, float dist)
+cAudioManager::CalculateDistance(bool8 &distCalculated, float dist)
{
if (!distCalculated) {
m_sQueueSample.m_fDistance = Sqrt(dist);
- distCalculated = true;
+ distCalculated = TRUE;
}
}
@@ -347,7 +349,7 @@ cAudioManager::ProcessSpecial()
if (playerPed->m_audioEntityId >= 0 && m_asAudioEntities[playerPed->m_audioEntityId].m_bIsUsed) {
if (playerPed->EnteringCar()) {
if(!playerPed->bInVehicle && CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle == nil)
- SampleManager.StopChannel(m_nActiveSamples);
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
}
}
}
@@ -362,56 +364,56 @@ cAudioManager::ProcessEntity(int32 id)
switch (m_asAudioEntities[id].m_nType) {
case AUDIOTYPE_PHYSICAL:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessPhysical(id);
}
break;
case AUDIOTYPE_EXPLOSION:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessExplosions(id);
}
break;
case AUDIOTYPE_FIRE:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessFires(id);
}
break;
case AUDIOTYPE_WEATHER:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
if(CGame::currArea == AREA_MAIN_MAP || CGame::currArea == AREA_EVERYWHERE)
ProcessWeather(id);
}
break;
/* case AUDIOTYPE_CRANE:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessCrane();
}
break;*/
case AUDIOTYPE_SCRIPTOBJECT:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessScriptObject(id);
}
break;
#ifdef GTA_BRIDGE
case AUDIOTYPE_BRIDGE:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessBridge();
}
break;
#endif
case AUDIOTYPE_FRONTEND:
- m_sQueueSample.m_bReverbFlag = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
ProcessFrontEnd();
break;
case AUDIOTYPE_PROJECTILE:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessProjectiles();
}
break;
@@ -421,25 +423,25 @@ cAudioManager::ProcessEntity(int32 id)
break;
case AUDIOTYPE_FIREHYDRANT:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessFireHydrant();
}
break;
case AUDIOTYPE_WATERCANNON:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessWaterCannon(id);
}
break;
case AUDIOTYPE_ESCALATOR:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessEscalators();
}
break;
case AUDIOTYPE_EXTRA_SOUNDS:
if (!m_nUserPause) {
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
ProcessExtraSounds();
}
break;
@@ -606,138 +608,141 @@ struct tVehicleSampleData {
};
const tVehicleSampleData aVehicleSettings[MAX_CARS] = {
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9935, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9960, TRUCK_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12893, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_POLICE_SIREN_SLOW, 10588, TRUCK_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 9538, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 10000, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_BMW328, 12017, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_JEEP, 22293, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 22295, SFX_AMBULANCE_SIREN_SLOW, 12688, OLD_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 9271, SFX_POLICE_SIREN_SLOW, 11471, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12170, SFX_CAR_HORN_JEEP, 9400, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 11000, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BMW328, 10796, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10500, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 11025, SFX_ICE_CREAM_TUNE, 11025, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
- {SFX_HELI_APACHE_1, SFX_BANK_HELI_APACHE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_POLICE_SIREN_SLOW, 10511, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 17260, SFX_POLICE_SIREN_SLOW, 11029, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS2, 11652, SFX_CAR_HORN_JEEP, 9500, BUS_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9600, TRUCK_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9700, TRUCK_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 25400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_17, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS, 16291, SFX_CAR_HORN_JEEP, 10100, BUS_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10233, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9935, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9890, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9960, TRUCK_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12893, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_POLICE_SIREN_SLOW, 10588, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 9538, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 10000, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 22295, SFX_AMBULANCE_SI, 12688, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 9271, SFX_POLICE_SIREN_SLOW, 11471, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 12170, SFX_CAR_HORN_JEEP, 9400, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_BMW328, 11000, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BMW328, 10796, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 11025, SFX_ICE_CREAM_TUNE, 11025, OLD_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_MERC, SFX_BANK_MERC, SFX_CAR_HORN_BMW328, 10706, SFX_POLICE_SIREN_SLOW, 10511, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 17260, SFX_POLICE_SIREN_SLOW, 11029, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9300, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS2, 11652, SFX_CAR_HORN_JEEP, 9500, BUS_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29711, SFX_CAR_HORN_JEEP, 9600, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9700, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_BUS, 16291, SFX_CAR_HORN_JEEP, 10100, BUS_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PACARD, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10233, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
{SFX_RC_REV, SFX_BANK_RC, SFX_CAR_HORN_PICKUP, 20000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 29000, SFX_CAR_HORN_JEEP, 9400, TRUCK_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BMW328, 9003, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_PORSCHE, 12375, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_BUS2, 15554, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_BUS2, 13857, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_PONTIAC, SFX_CAR_HORN_BMW328, 9003, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_56CHEV, 11487, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PATHFINDER, SFX_BANK_PATHFINDER, SFX_CAR_HORN_PICKUP, 10924, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_PONTIAC, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_PICKUP, 8670, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_SPIDER, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
+ {SFX_CAR_REV_PORSHE, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_TRUCK, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 31478, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
+ {SFX_CAR_REV_HOTROD, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 25400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_COBRA, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10400, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_POLICE_SIREN_SLOW, 11912, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
{SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 22043, SFX_CAR_HORN_JEEP, 9200, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_5, SFX_BANK_TRUCK, SFX_CAR_HORN_TRUCK, 28043, SFX_CAR_HORN_JEEP, 9800, TRUCK_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18286, SFX_CAR_HORN_JEEP, 9900, OLD_DOOR},
- {SFX_CAR_REV_12, SFX_BANK_GOLF_CART, SFX_CAR_HORN_JEEP, 28500, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_56CHEV, 10842, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_SEAPLANE_PRO1, SFX_BANK_PLANE_SEAPLANE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_20, SFX_BANK_SPORTS_BIKE, SFX_CAR_HORN_JEEP, 27000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
+ {SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9100, NEW_DOOR},
+ {SFX_CAR_REV_SPORTCAR, SFX_BANK_SPORTS_BIKE, SFX_CAR_HORN_JEEP, 27000, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
{SFX_MOPED_REV, SFX_BANK_MOPED, SFX_CAR_HORN_JEEP, 31000, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_17, SFX_BANK_VTWIN, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_RC_REV, SFX_BANK_RC, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
- {SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10300, SFX_CAR_HORN_JEEP, 9100, OLD_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10500, SFX_CAR_HORN_JEEP, 9000, OLD_DOOR},
- {SFX_CAR_REV_19, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_TRUCK, 28000, SFX_CAR_HORN_JEEP, 9200, TRUCK_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PICKUP, 11200, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_56CHEV, 10700, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BMW328, 9000, SFX_CAR_HORN_JEEP, 9700, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_BMW328, 9200, SFX_CAR_HORN_JEEP, 9800, OLD_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_11, SFX_BANK_PACARD, SFX_CAR_HORN_56CHEV, 10540, SFX_CAR_HORN_JEEP, 9935, TRUCK_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_BMW328, 9500, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_BMW328, 9700, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_BUS, 18000, SFX_CAR_HORN_JEEP, 9500, TRUCK_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_JEEP, 27513, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_56CHEV, 10700, SFX_CAR_HORN_JEEP, 9200, OLD_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_BUS2, 18000, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_BUS2, 17900, SFX_POLICE_SIREN_SLOW, 10511, TRUCK_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_MERC, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_8, SFX_BANK_PONTIAC_SLOW, SFX_CAR_HORN_BMW328, 9600, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_4, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_PORSCHE, 10000, SFX_CAR_HORN_JEEP, 9500, OLD_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_PORSCHE, 10500, SFX_CAR_HORN_JEEP, 9600, OLD_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 25513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_1, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_3, SFX_BANK_SPIDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9900, NEW_DOOR},
- {SFX_CAR_REV_10, SFX_BANK_PATHFINDER, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_PICKUP, 11000, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
+ {SFX_CAR_REV_VTWI, SFX_BANK_VTWIN, SFX_CAR_HORN_JEEP, 26313, SFX_CAR_HORN_JEEP, 10000, NEW_DOOR},
+ {SFX_CAR_REV_HONDA, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
+ {SFX_CAR_REV_HONDA, SFX_BANK_HONDA250, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 9000, NEW_DOOR},
{SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_6, SFX_BANK_HOTROD, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9700, NEW_DOOR},
- {SFX_CAR_REV_7, SFX_BANK_COBRA, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9600, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9500, NEW_DOOR},
- {SFX_CAR_REV_9, SFX_BANK_CADILLAC, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR},
- {SFX_CAR_REV_2, SFX_BANK_PORSCHE, SFX_CAR_HORN_PORSCHE, 11025, SFX_POLICE_SIREN_SLOW, 11000, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9300, NEW_DOOR},
- {SFX_CAR_REV_1, CAR_SFX_BANKS_OFFSET, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9400, NEW_DOOR} };
-
-
-
-bool bPlayerJustEnteredCar;
-
-const bool hornPatternsArray[8][44] = {
- {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false,
- false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false},
- {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,
- true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false},
- {false, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, true, true, true, true, true, false,
- false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false},
- {false, false, true, true, true, true, true, false, false, true, true, true, true, true, false, false, false, true, true, true, true, true,
- true, true, true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false},
- {false, false, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false,
- false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
- {false, false, true, true, true, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false,
- false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
- {false, false, true, true, true, true, false, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true,
- true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, false, false},
- {false, false, true, true, true, true, false, false, true, true, true, true, true, false, false, false, true, true, true, true, true, true,
- false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false},
+ {SFX_CAR_RC_HELI, SFX_BANK_RC_HELI, SFX_CAR_HORN_JEEP, 30000, SFX_CAR_HORN_JEEP, 15000, NEW_DOOR},
+ {SFX_CAR_ACCEL_22, SFX_BANK_HELI_APACHE, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9200, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9100, TRUCK_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9800, NEW_DOOR},
+ {SFX_CAR_REV_PONT, SFX_BANK_0, SFX_CAR_HORN_JEEP, 26513, SFX_CAR_HORN_JEEP, 9000, TRUCK_DOOR}
+};
+
+const eSfxSample aEngineSounds[][2] = {
+ { SFX_CAR_IDLE_PONT, SFX_CAR_REV_PONT },
+ { SFX_CAR_IDLE_PORSHE, SFX_CAR_REV_PORSHE },
+ { SFX_CAR_IDLE_SPIDER, SFX_CAR_REV_SPIDER },
+ { SFX_CAR_IDLE_MERC, SFX_CAR_REV_MERC },
+ { SFX_CAR_IDLE_TRUCK, SFX_CAR_REV_TRUCK },
+ { SFX_CAR_IDLE_HOTROD, SFX_CAR_REV_HOTROD },
+ { SFX_CAR_IDLE_COBRA, SFX_CAR_REV_COBRA },
+ { SFX_CAR_IDLE_PONT2, SFX_CAR_REV_PONT2 },
+ { SFX_CAR_IDLE_CADI, SFX_CAR_REV_CADI },
+ { SFX_CAR_IDLE_PATHFINDER, SFX_CAR_REV_PATHFINDER },
+ { SFX_CAR_IDLE_PACARD, SFX_CAR_REV_PACARD },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_GOLFCART, SFX_CAR_REV_GOLFCART },
+ { SFX_CAR_IDLE_VTWI, SFX_CAR_REV_VTWI },
+ { SFX_MOPED_IDLE, SFX_MOPED_REV },
+ { SFX_CAR_IDLE_HONDA, SFX_CAR_REV_HONDA },
+ { SFX_CAR_IDLE_SPORTCAR, SFX_CAR_REV_SPORTCAR },
+ { SFX_CAR_IDLE_UNUSED1, SFX_CAR_REV_UNUSED1 },
+ { SFX_CAR_IDLE_UNUSED2, SFX_CAR_REV_UNUSED2 },
+ { SFX_CAR_IDLE_UNUSED3, SFX_CAR_REV_UNUSED3 },
+ { SFX_CAR_IDLE_UNUSED4, SFX_CAR_REV_UNUSED4 },
+};
+
+bool8 bPlayerJustEnteredCar;
+
+const bool8 hornPatternsArray[8][44] = {
+ {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
+ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
+ FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE,
+ TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE},
+ {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
+ TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE}
};
void cAudioManager::ProcessVehicle(CVehicle* veh)
@@ -756,7 +761,7 @@ void cAudioManager::ProcessVehicle(CVehicle* veh)
|| CGame::currArea == AREA_MALL
|| CGame::currArea == AREA_MAIN_MAP) {
m_sQueueSample.m_vecPos = veh->GetPosition();
- params.m_bDistanceCalculated = false;
+ params.m_bDistanceCalculated = FALSE;
params.m_pVehicle = veh;
params.m_fDistance = GetDistanceSquared(m_sQueueSample.m_vecPos);
params.m_pTransmission = veh->pHandling != nil ? &veh->pHandling->Transmission : nil;
@@ -825,6 +830,12 @@ void cAudioManager::ProcessVehicle(CVehicle* veh)
ProcessBoatMovingOverWater(params);
ProcessVehicleOneShots(params);
break;
+#ifdef GTA_TRAIN
+ case VEHICLE_TYPE_TRAIN:
+ ProcessTrainNoise(params);
+ ProcessVehicleOneShots(params);
+ break;
+#endif
case VEHICLE_TYPE_HELI:
ProcessCarHeli(params);
ProcessVehicleOneShots(params);
@@ -882,24 +893,23 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params)
veh->m_bRainSamplesCounter = 68;
m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 9;
m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000;
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
}
-bool
+bool8
cAudioManager::ProcessReverseGear(cVehicleParams& params)
{
const int reverseGearIntensity = 30;
@@ -909,10 +919,10 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params)
uint8 emittingVolume;
if (params.m_fDistance >= SQR(reverseGearIntensity))
- return false;
+ return FALSE;
automobile = (CAutomobile*)params.m_pVehicle;
if (automobile->m_modelIndex == MI_CADDY)
- return true;
+ return TRUE;
if (automobile->bEngineOn && (automobile->m_fGasPedal < 0.0f || automobile->m_nCurrentGear == 0)) {
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
if (automobile->m_nDriveWheelsOnGround != 0) {
@@ -935,23 +945,22 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params)
m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nFrequency = (6000.0f * modificator) + 7000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = reverseGearIntensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
void
@@ -966,14 +975,14 @@ cAudioManager::ProcessModelVehicle(cVehicleParams& params)
int16 acceletateState;
int16 brakeState;
uint8 volume;
- bool isPlayerVeh;
- bool vehSlowdown;
+ bool8 isPlayerVeh;
+ bool8 vehSlowdown;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
return;
if (FindPlayerVehicle() == params.m_pVehicle)
- isPlayerVeh = true;
+ isPlayerVeh = TRUE;
else
#ifdef FIX_BUGS
isPlayerVeh = CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle == params.m_pVehicle;
@@ -999,19 +1008,18 @@ cAudioManager::ProcessModelVehicle(cVehicleParams& params)
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = SFX_RC_REV;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = volume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_RC_REV);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_RC_REV);
+ SET_LOOP_OFFSETS(SFX_RC_REV)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -1030,11 +1038,11 @@ cAudioManager::ProcessModelVehicle(cVehicleParams& params)
if (acceletateState < brakeState)
acceletateState = brakeState;
if (acceletateState <= 0) {
- vehSlowdown = true;
+ vehSlowdown = TRUE;
volume = 127;
freq = 18000;
} else {
- vehSlowdown = false;
+ vehSlowdown = FALSE;
volume = Min(127, (127 * acceletateState / 255) * 3.0f * Abs(params.m_fVelocityChange));
freq = Min(22000, (8000 * acceletateState / 255 + 14000) * 3.0f * Abs(params.m_fVelocityChange));
}
@@ -1064,18 +1072,17 @@ cAudioManager::ProcessModelVehicle(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeDivider = 4;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = volume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -1096,7 +1103,7 @@ cAudioManager::ProcessModelHeliVehicle(cVehicleParams& params)
static uint32 prevFreq = 22050;
uint32 freq;
- bool isPlayerVeh;
+ bool8 isPlayerVeh;
int16 acceletateState;
int16 brakeState;
@@ -1104,7 +1111,7 @@ cAudioManager::ProcessModelHeliVehicle(cVehicleParams& params)
return;
if (FindPlayerVehicle() == params.m_pVehicle)
- isPlayerVeh = true;
+ isPlayerVeh = TRUE;
else
#ifdef FIX_BUGS
isPlayerVeh = CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle == params.m_pVehicle;
@@ -1127,26 +1134,25 @@ cAudioManager::ProcessModelHeliVehicle(cVehicleParams& params)
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = SFX_CAR_RC_HELI;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = 70;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_CAR_RC_HELI);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_CAR_RC_HELI);
+ SET_LOOP_OFFSETS(SFX_CAR_RC_HELI)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
if (isPlayerVeh)
prevFreq = freq;
}
-bool
+bool8
cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params)
{
const float SOUND_INTENSITY = 95.0f;
@@ -1159,10 +1165,10 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params)
uint8 wheelsOnGround;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
wheelsOnGround = ((CAutomobile*)params.m_pVehicle)->m_nWheelsOnGround;
@@ -1175,7 +1181,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params)
break;
}
if (params.m_pTransmission == nil || wheelsOnGround == 0)
- return true;
+ return TRUE;
velocity = Abs(params.m_fVelocityChange);
if (velocity > 0.0f) {
@@ -1185,7 +1191,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params)
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
if (params.m_pVehicle->m_nSurfaceTouched == SURFACE_WATER) {
m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP;
@@ -1199,22 +1205,21 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params)
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::ProcessWetRoadNoise(cVehicleParams& params)
{
const float SOUND_INTENSITY = 30.0f;
@@ -1227,7 +1232,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params)
uint8 wheelsOnGround;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
wheelsOnGround = ((CAutomobile*)params.m_pVehicle)->m_nWheelsOnGround;
@@ -1240,7 +1245,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params)
break;
}
if (params.m_pTransmission == nil || wheelsOnGround == 0)
- return true;
+ return TRUE;
velocity = Abs(params.m_fVelocityChange);
if (velocity > 0.0f) {
@@ -1252,26 +1257,25 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params)
m_sQueueSample.m_nCounter = 1;
m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
multiplier = (m_sQueueSample.m_fDistance / SOUND_INTENSITY) * 0.5f;
freq = SampleManager.GetSampleBaseFrequency(SFX_ROAD_NOISE);
m_sQueueSample.m_nFrequency = freq + freq * multiplier;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
void
@@ -1296,18 +1300,18 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
float relativeChange;
float modificator;
float traction;
- bool isMoped;
- bool caddyBool;
+ bool8 isMoped;
+ bool8 caddyBool;
- isMoped = false;
- caddyBool = false;
+ isMoped = FALSE;
+ caddyBool = FALSE;
traction = 0.0f;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
return;
playerVeh = FindPlayerVehicle();
veh = params.m_pVehicle;
if (playerVeh == veh && veh->GetStatus() == STATUS_WRECKED) {
- SampleManager.StopChannel(m_nActiveSamples);
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
return;
}
if (!veh->bEngineOn)
@@ -1322,12 +1326,12 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
switch (veh->m_modelIndex) {
case MI_PIZZABOY:
case MI_FAGGIO:
- isMoped = true;
+ isMoped = TRUE;
currentGear = transmission->nNumberOfGears;
break;
case MI_CADDY:
currentGear = transmission->nNumberOfGears;
- caddyBool = true;
+ caddyBool = TRUE;
break;
default:
currentGear = veh->m_nCurrentGear;
@@ -1354,7 +1358,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
}
if (wheelsOnGround != 0) {
- if (!veh->bIsHandbrakeOn || isMoped && caddyBool) { //mb bug, bcs it's can't be true together
+ if (!veh->bIsHandbrakeOn || isMoped && caddyBool) { //mb bug, bcs it's can't be TRUE together
if (veh->GetStatus() == STATUS_SIMPLE || isMoped || caddyBool) {
traction = 0.0f;
} else {
@@ -1452,7 +1456,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
if (!caddyBool) {
if (veh->GetStatus() == STATUS_SIMPLE) {
if (modificator < 0.02f) {
- m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1;
+ m_sQueueSample.m_nSampleIndex = aEngineSounds[aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET][0];
m_sQueueSample.m_nCounter = 52;
freq = 10000.0f * modificator + 22050;
} else {
@@ -1461,7 +1465,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
}
} else {
if (veh->m_fGasPedal < 0.02f) {
- m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1;
+ m_sQueueSample.m_nSampleIndex = aEngineSounds[aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET][0];
m_sQueueSample.m_nCounter = 52;
freq = 10000.0f * modificator + 22050;
} else {
@@ -1474,24 +1478,23 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params)
if (FindVehicleOfPlayer() == params.m_pVehicle)
m_sQueueSample.m_nSampleIndex = SFX_CAR_AFTER_ACCEL_12;
else
- m_sQueueSample.m_nSampleIndex = SFX_CAR_REV_12;
+ m_sQueueSample.m_nSampleIndex = SFX_CAR_REV_GOLFCART;
m_sQueueSample.m_nFrequency = freq + 20 * m_sQueueSample.m_nBankIndex % 100;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
- if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_5 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_5)
+ if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_TRUCK || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_TRUCK)
m_sQueueSample.m_nFrequency /= 2;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 8;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -1517,7 +1520,7 @@ void
cAudioManager::PlayerJustGotInCar() const
{
if (m_bIsInitialised)
- bPlayerJustEnteredCar = true;
+ bPlayerJustEnteredCar = TRUE;
}
void
@@ -1527,7 +1530,7 @@ cAudioManager::PlayerJustLeftCar(void) const
}
void
-cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool notLooping)
+cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping)
{
m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume != 0) {
@@ -1538,7 +1541,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl
#else
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
#endif // GTA_PS2
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nFrequency = freq;
if (notLooping) {
@@ -1548,13 +1551,12 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl
m_sQueueSample.m_nLoopCount = 1;
}
m_sQueueSample.m_nEmittingVolume = emittingVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 50.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -1569,19 +1571,18 @@ cAudioManager::ProcessCesna(cVehicleParams &params)
m_sQueueSample.m_nCounter = 52;
m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nFrequency = 12500;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nReleasingVolumeDivider = 8;
m_sQueueSample.m_nEmittingVolume = 80;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = 200.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
if(params.m_fDistance < SQR(90)) {
@@ -1590,19 +1591,18 @@ cAudioManager::ProcessCesna(cVehicleParams &params)
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nFrequency = 25000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
m_sQueueSample.m_nEmittingVolume = 80;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = 90.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -1639,32 +1639,32 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
float velocityChangeForAudio;
float relativeVelocityChange;
float time;
- bool channelUsed;
- bool lostTraction;
- bool noGearBox;
- bool stuckInSand;
- bool processedAccelSampleStopped;
- bool isMoped;
+ bool8 channelUsed;
+ bool8 lostTraction;
+ bool8 noGearBox;
+ bool8 stuckInSand;
+ bool8 processedAccelSampleStopped;
+ bool8 isMoped;
static uint32 gearSoundStartTime = CTimer::GetTimeInMilliseconds();
static int32 nCruising = 0;
static int16 LastAccel = 0;
static uint8 CurrentPretendGear = 1;
- static bool bLostTractionLastFrame = false;
- static bool bHandbrakeOnLastFrame = false;
- static bool bAccelSampleStopped = true;
+ static bool8 bLostTractionLastFrame = FALSE;
+ static bool8 bHandbrakeOnLastFrame = FALSE;
+ static bool8 bAccelSampleStopped = TRUE;
- lostTraction = false;
+ lostTraction = FALSE;
isMoped = params.m_pVehicle->m_modelIndex == MI_PIZZABOY || params.m_pVehicle->m_modelIndex == MI_FAGGIO;
- processedAccelSampleStopped = false;
+ processedAccelSampleStopped = FALSE;
if (bPlayerJustEnteredCar) {
- bAccelSampleStopped = true;
- bPlayerJustEnteredCar = false;
+ bAccelSampleStopped = TRUE;
+ bPlayerJustEnteredCar = FALSE;
nCruising = 0;
LastAccel = 0;
- bLostTractionLastFrame = false;
+ bLostTractionLastFrame = FALSE;
CurrentPretendGear = 1;
- bHandbrakeOnLastFrame = false;
+ bHandbrakeOnLastFrame = FALSE;
}
if (CReplay::IsPlayingBack()) {
accelerateState = (255.0f * clamp(params.m_pVehicle->m_fGasPedal, 0.0f, 1.0f));
@@ -1673,7 +1673,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
accelerateState = Pads[0].GetAccelerate();
brakeState = Pads[0].GetBrake();
}
- channelUsed = SampleManager.GetChannelUsedFlag(m_nActiveSamples);
+ channelUsed = SampleManager.GetChannelUsedFlag(CHANNEL_PLAYER_VEHICLE_ENGINE);
if (isMoped) {
CurrentPretendGear = params.m_pTransmission->nNumberOfGears;
currentGear = CurrentPretendGear;
@@ -1720,26 +1720,26 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
++wheelInUseCounter;
}
if (wheelInUseCounter > 2)
- lostTraction = true;
+ lostTraction = TRUE;
}
break;
case 'F':
if (params.m_VehicleType == VEHICLE_TYPE_BIKE) {
if (wheelState[BIKEWHEEL_FRONT] != WHEEL_STATE_NORMAL)
- lostTraction = true;
+ lostTraction = TRUE;
} else {
if ((wheelState[CARWHEEL_FRONT_LEFT] != WHEEL_STATE_NORMAL || wheelState[CARWHEEL_FRONT_RIGHT] != WHEEL_STATE_NORMAL) &&
(wheelState[CARWHEEL_REAR_LEFT] != WHEEL_STATE_NORMAL || wheelState[CARWHEEL_REAR_RIGHT] != WHEEL_STATE_NORMAL))
- lostTraction = true;
+ lostTraction = TRUE;
}
break;
case 'R':
if (params.m_VehicleType == VEHICLE_TYPE_BIKE) {
if (wheelState[BIKEWHEEL_REAR] != WHEEL_STATE_NORMAL)
- lostTraction = true;
+ lostTraction = TRUE;
} else {
if (wheelState[CARWHEEL_REAR_LEFT] != WHEEL_STATE_NORMAL || wheelState[CARWHEEL_REAR_RIGHT] != WHEEL_STATE_NORMAL)
- lostTraction = true;
+ lostTraction = TRUE;
}
break;
default:
@@ -1760,8 +1760,9 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
freqModifier += 1400;
gearSoundLength = 0;
engineSoundType = aVehicleSettings[params.m_nIndex].m_nBank;
- soundOffset = 3 * (engineSoundType - CAR_SFX_BANKS_OFFSET);
- noGearBox = false;
+ soundOffset = gBankStartOffset[engineSoundType] - gBankStartOffset[CAR_SFX_BANKS_OFFSET];
+ //soundOffset = 3 * (engineSoundType - CAR_SFX_BANKS_OFFSET);
+ noGearBox = FALSE;
switch (engineSoundType) {
case SFX_BANK_PONTIAC:
gearSoundLength = 2526;
@@ -1806,7 +1807,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
gearSoundLength = 2410;
break;
default:
- noGearBox = true;
+ noGearBox = TRUE;
break;
}
if (!channelUsed || nCruising || noGearBox) {
@@ -1814,14 +1815,14 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
} else {
gearSoundLength -= 1000;
if (CTimer::GetTimeInMilliseconds() - gearSoundStartTime > gearSoundLength) {
- channelUsed = false;
+ channelUsed = FALSE;
gearSoundStartTime = CTimer::GetTimeInMilliseconds();
}
}
relativeVelocityChange = 2.0f * params.m_fVelocityChange / params.m_pTransmission->fMaxVelocity;
accelerationMultipler = clamp(relativeVelocityChange, 0.0f, 1.0f);
gasPedalAudio = accelerationMultipler;
- switch (engineSoundType) {
+ /*switch (engineSoundType) {
case SFX_BANK_MOPED:
++soundOffset;
break;
@@ -1833,12 +1834,12 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
break;
default:
break;
- }
+ }*/
if (accelerateState <= 0) {
if (params.m_fVelocityChange < -0.001f) {
if (channelUsed) {
- SampleManager.StopChannel(m_nActiveSamples);
- bAccelSampleStopped = true;
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
+ bAccelSampleStopped = TRUE;
}
if (wheelsOnGround == 0 || params.m_pVehicle->bIsHandbrakeOn || lostTraction)
gasPedalAudio = *gasPedalAudioPtr;
@@ -1849,8 +1850,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
*gasPedalAudioPtr = Max(0.0f, gasPedalAudio);
} else if (LastAccel > 0) {
if (channelUsed) {
- SampleManager.StopChannel(m_nActiveSamples);
- bAccelSampleStopped = true;
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
+ bAccelSampleStopped = TRUE;
}
nCruising = 0;
if (wheelsOnGround == 0
@@ -1871,7 +1872,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
vol /= 4;
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
- AddPlayerCarSample(vol, freq, soundOffset + SFX_CAR_FINGER_OFF_ACCEL_1, engineSoundType, 63, false);
+ AddPlayerCarSample(vol, freq, soundOffset + SFX_CAR_FINGER_OFF_ACCEL_1, engineSoundType, 63, FALSE);
}
}
freq = (10000.f * gasPedalAudio) + 22050;
@@ -1880,7 +1881,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
freq /= 2;
if (params.m_pVehicle->bIsDrowning)
vol /= 4;
- AddPlayerCarSample(vol, freq, engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1, SFX_BANK_0, 52, true);
+ AddPlayerCarSample(vol, freq, aEngineSounds[engineSoundType - CAR_SFX_BANKS_OFFSET][0], SFX_BANK_0, 52, TRUE);
CurrentPretendGear = Max(1, currentGear);
}
@@ -1910,70 +1911,70 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
if (channelUsed) {
- SampleManager.StopChannel(m_nActiveSamples);
- bAccelSampleStopped = true;
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
+ bAccelSampleStopped = TRUE;
}
if (params.m_pVehicle->bIsDrowning)
vol /= 4;
- AddPlayerCarSample(vol, freq, engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1, SFX_BANK_0, 2, true);
+ AddPlayerCarSample(vol, freq, aEngineSounds[engineSoundType - CAR_SFX_BANKS_OFFSET][1], SFX_BANK_0, 2, TRUE);
} else {
TranslateEntity(&m_sQueueSample.m_vecPos, &pos);
if (bAccelSampleStopped) {
if (CurrentPretendGear != 1 || currentGear != 2)
CurrentPretendGear = Max(1, currentGear - 1);
- processedAccelSampleStopped = true;
- bAccelSampleStopped = false;
+ processedAccelSampleStopped = TRUE;
+ bAccelSampleStopped = FALSE;
}
if (channelUsed) {
- SampleManager.SetChannelEmittingVolume(m_nActiveSamples, 120);
- SampleManager.SetChannel3DPosition(m_nActiveSamples, pos.x, pos.y, pos.z);
- SampleManager.SetChannel3DDistances(m_nActiveSamples, 50.0f, 12.5f);
+ SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 120);
+ SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z);
+ SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.0f, 12.5f);
freq = (GearFreqAdj[CurrentPretendGear] + freqModifier + 22050) ;
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
- SampleManager.SetChannelFrequency(m_nActiveSamples, freq);
+ SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, freq);
if (!channelUsed) {
- SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != false);
- SampleManager.StartChannel(m_nActiveSamples);
+ SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, m_bDynamicAcousticModelingStatus != FALSE);
+ SampleManager.StartChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
}
} else if (processedAccelSampleStopped) {
gearSoundStartTime = CTimer::GetTimeInMilliseconds();
- params.m_pVehicle->bAudioChangingGear = true;
- if (!SampleManager.InitialiseChannel(m_nActiveSamples, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0))
+ params.m_pVehicle->bAudioChangingGear = TRUE;
+ if (!SampleManager.InitialiseChannel(CHANNEL_PLAYER_VEHICLE_ENGINE, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0))
return;
- SampleManager.SetChannelLoopCount(m_nActiveSamples, 1);
- SampleManager.SetChannelLoopPoints(m_nActiveSamples, 0, -1);
+ SampleManager.SetChannelLoopCount(CHANNEL_PLAYER_VEHICLE_ENGINE, 1);
+ SampleManager.SetChannelLoopPoints(CHANNEL_PLAYER_VEHICLE_ENGINE, 0, -1);
- SampleManager.SetChannelEmittingVolume(m_nActiveSamples, 120);
- SampleManager.SetChannel3DPosition(m_nActiveSamples, pos.x, pos.y, pos.z);
- SampleManager.SetChannel3DDistances(m_nActiveSamples, 50.0f, 12.5f);
+ SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 120);
+ SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z);
+ SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.0f, 12.5f);
freq = (GearFreqAdj[CurrentPretendGear] + freqModifier + 22050);
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
- SampleManager.SetChannelFrequency(m_nActiveSamples, freq);
+ SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, freq);
if (!channelUsed) {
- SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != false);
- SampleManager.StartChannel(m_nActiveSamples);
+ SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, m_bDynamicAcousticModelingStatus != FALSE);
+ SampleManager.StartChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
}
} else if (CurrentPretendGear < params.m_pTransmission->nNumberOfGears - 1) {
++CurrentPretendGear;
gearSoundStartTime = CTimer::GetTimeInMilliseconds();
- params.m_pVehicle->bAudioChangingGear = true;
- if (!SampleManager.InitialiseChannel(m_nActiveSamples, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0))
+ params.m_pVehicle->bAudioChangingGear = TRUE;
+ if (!SampleManager.InitialiseChannel(CHANNEL_PLAYER_VEHICLE_ENGINE, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0))
return;
- SampleManager.SetChannelLoopCount(m_nActiveSamples, 1);
- SampleManager.SetChannelLoopPoints(m_nActiveSamples, 0, -1);
+ SampleManager.SetChannelLoopCount(CHANNEL_PLAYER_VEHICLE_ENGINE, 1);
+ SampleManager.SetChannelLoopPoints(CHANNEL_PLAYER_VEHICLE_ENGINE, 0, -1);
- SampleManager.SetChannelEmittingVolume(m_nActiveSamples, 120);
- SampleManager.SetChannel3DPosition(m_nActiveSamples, pos.x, pos.y, pos.z);
- SampleManager.SetChannel3DDistances(m_nActiveSamples, 50.0f, 12.5f);
+ SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 120);
+ SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z);
+ SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.0f, 12.5f);
freq = (GearFreqAdj[CurrentPretendGear] + freqModifier + 22050);
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
- SampleManager.SetChannelFrequency(m_nActiveSamples, freq);
+ SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, freq);
if (!channelUsed) {
- SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != false);
- SampleManager.StartChannel(m_nActiveSamples);
+ SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, m_bDynamicAcousticModelingStatus != FALSE);
+ SampleManager.StartChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
}
} else {
nCruising = 1;
@@ -1982,8 +1983,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CVehicle* veh
}
} else {
PlayCruising:
- bAccelSampleStopped = true;
- SampleManager.StopChannel(m_nActiveSamples);
+ bAccelSampleStopped = TRUE;
+ SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE);
if (isMoped || accelerateState >= 150 && wheelsOnGround && brakeState <= 0 && !params.m_pVehicle->bIsHandbrakeOn
&& !lostTraction && currentGear >= params.m_pTransmission->nNumberOfGears - 1) {
if (accelerateState >= 220 && params.m_fVelocityChange + 0.001f >= velocityChangeForAudio) {
@@ -1995,7 +1996,7 @@ PlayCruising:
freq = 27 * nCruising + freqModifier + 22050;
if (engineSoundType == SFX_BANK_TRUCK)
freq /= 2;
- AddPlayerCarSample(120, freq, soundOffset + SFX_CAR_AFTER_ACCEL_1, engineSoundType, 64, true);
+ AddPlayerCarSample(120, freq, soundOffset + SFX_CAR_AFTER_ACCEL_1, engineSoundType, 64, TRUE);
} else {
nCruising = 0;
}
@@ -2007,7 +2008,7 @@ PlayCruising:
return;
}
-bool
+bool8
cAudioManager::ProcessVehicleSkidding(cVehicleParams& params)
{
const float SOUND_INTENSITY = 40.0f;
@@ -2026,7 +2027,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params)
float skidVal = 0.0f;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
automobile = (CAutomobile*)params.m_pVehicle;
@@ -2044,10 +2045,10 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params)
break;
default:
debug("\n * AUDIOLOG: ProcessVehicleSkidding() Unsupported vehicle type %d * \n", params.m_VehicleType);
- return true;
+ return TRUE;
}
if (wheelsOnGround == 0)
- return true;
+ return TRUE;
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
for (int32 i = 0; i < numWheels; i++) {
@@ -2089,7 +2090,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params)
m_sQueueSample.m_nFrequency = 13000.f * skidVal + 35000.f;
m_sQueueSample.m_nVolume /= 4;
if (m_sQueueSample.m_nVolume == 0)
- return true;
+ return TRUE;
break;
case SURFACE_GRAVEL:
case SURFACE_MUD_DRY:
@@ -2109,22 +2110,21 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params)
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 8;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
float
@@ -2173,7 +2173,7 @@ cAudioManager::GetVehicleNonDriveWheelSkidValue(CVehicle *veh, tWheelState wheel
return Max(relativeVelChange, Min(1.0f, Abs(veh->m_vecTurnSpeed.z) * 20.0f));
}
-bool
+bool8
cAudioManager::ProcessVehicleHorn(cVehicleParams& params)
{
const float SOUND_INTENSITY = 40.0f;
@@ -2182,17 +2182,17 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params)
uint8 volume;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
veh = params.m_pVehicle;
if (veh->m_bSirenOrAlarm && UsesSirenSwitching(params))
- return true;
+ return TRUE;
if (veh->m_modelIndex == MI_MRWHOOP)
- return true;
+ return TRUE;
if (veh->IsAlarmOn())
- return true;
+ return TRUE;
if (veh->m_nCarHornTimer != 0) {
if (veh->GetStatus() != STATUS_PLAYER) {
@@ -2201,7 +2201,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params)
veh->m_nCarHornPattern = (m_FrameCounter + m_sQueueSample.m_nEntityIndex) & 7;
if (!hornPatternsArray[veh->m_nCarHornPattern][44 - veh->m_nCarHornTimer])
- return true;
+ return TRUE;
}
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
@@ -2211,7 +2211,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params)
m_sQueueSample.m_nCounter = 4;
m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nHornSample;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency;
m_sQueueSample.m_nLoopCount = 0;
@@ -2220,35 +2220,34 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params)
#else
m_sQueueSample.m_nEmittingVolume = 80;
#endif
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 5.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::UsesSiren(cVehicleParams& params) const
{
return params.m_pVehicle->UsesSiren();
}
-bool
+bool8
cAudioManager::UsesSirenSwitching(cVehicleParams& params) const
{
if (params.m_nIndex == FIRETRUK || params.m_nIndex == MRWHOOP)
- return false;
+ return FALSE;
return UsesSiren(params);
}
-bool
+bool8
cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params)
{
const float SOUND_INTENSITY = 110.0f;
@@ -2257,18 +2256,18 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params)
uint8 volume;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
veh = params.m_pVehicle;
if (!veh->m_bSirenOrAlarm && !veh->IsAlarmOn())
- return true;
+ return TRUE;
if (veh->IsAlarmOn()) {
if (CTimer::GetTimeInMilliseconds() > veh->m_nCarHornTimer)
veh->m_nCarHornTimer = CTimer::GetTimeInMilliseconds() + 750;
if (veh->m_nCarHornTimer < CTimer::GetTimeInMilliseconds() + 375)
- return true;
+ return TRUE;
}
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
@@ -2278,7 +2277,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params)
m_sQueueSample.m_nCounter = 5;
if (UsesSiren(params)) {
if (params.m_pVehicle->GetStatus() == STATUS_ABANDONED)
- return true;
+ return TRUE;
if (veh->m_nCarHornTimer != 0 && params.m_nIndex != FIRETRUK && params.m_nIndex != MRWHOOP) {
m_sQueueSample.m_nSampleIndex = SFX_SIREN_FAST;
if (params.m_nIndex == FBIRANCH)
@@ -2298,30 +2297,29 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params)
m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = volume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 7.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::UsesReverseWarning(int32 model) const
{
return model == LINERUN || model == FIRETRUK || model == BUS || model == COACH || model == PACKER || model == FLATBED;
}
-bool
+bool8
cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params)
{
const float SOUND_INTENSITY = 50.0f;
@@ -2330,7 +2328,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params)
uint8 volume;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
if (veh->bEngineOn && veh->m_fGasPedal < 0.0f) {
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
@@ -2340,7 +2338,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params)
m_sQueueSample.m_nCounter = 12;
m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING);
m_sQueueSample.m_nLoopCount = 0;
@@ -2349,21 +2347,20 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params)
#else
m_sQueueSample.m_nEmittingVolume = 60;
#endif
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::ProcessVehicleDoors(cVehicleParams& params)
{
const float SOUND_INTENSITY = 40.0f;
@@ -2374,7 +2371,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params)
float velocity;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
automobile = (CAutomobile *)params.m_pVehicle;
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
@@ -2391,27 +2388,26 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params)
m_sQueueSample.m_nSampleIndex = m_anRandomTable[1] % 6 + SFX_COL_CAR_PANEL_1;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) + RandomDisplacement(1000);
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 10;
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_fSpeedMultiplier = 1.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
AddSampleToRequestedQueue();
}
}
}
}
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::ProcessAirBrakes(cVehicleParams& params)
{
const float SOUND_INTENSITY = 30.0f;
@@ -2419,14 +2415,14 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params)
uint8 volume;
if (params.m_fDistance > SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
automobile = (CAutomobile *)params.m_pVehicle;
if (!automobile->bEngineOn)
- return true;
+ return TRUE;
if ((automobile->m_fVelocityChangeForAudio < 0.025f || params.m_fVelocityChange >= 0.025f) &&
(automobile->m_fVelocityChangeForAudio > -0.025f || params.m_fVelocityChange <= 0.025f))
- return true;
+ return TRUE;
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
volume = m_anRandomTable[0] % 10 + 70;
@@ -2437,31 +2433,30 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params)
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AIR_BRAKES);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 10;
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_nEmittingVolume = volume;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::HasAirBrakes(int32 model) const
{
return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == BARRACKS
|| model == COACH || model == PACKER || model == FLATBED;
}
-bool
+bool8
cAudioManager::ProcessEngineDamage(cVehicleParams& params)
{
const float SOUND_INTENSITY = 40.0f;
@@ -2470,11 +2465,11 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params)
uint8 emittingVolume;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
if (params.m_pVehicle->m_modelIndex == MI_CADDY)
- return true;
+ return TRUE;
if (params.m_pVehicle->GetStatus() == STATUS_WRECKED)
- return true;
+ return TRUE;
health = params.m_pVehicle->m_fHealth;
if (health < 390.0f) {
if (health < 250.0f) {
@@ -2495,24 +2490,23 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params)
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 28;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::ProcessCarBombTick(cVehicleParams& params)
{
const float SOUND_INTENSITY = 40.0f;
@@ -2521,7 +2515,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params)
uint8 bombType;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
if (params.m_pVehicle->bEngineOn) {
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
@@ -2532,7 +2526,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params)
break;
default:
debug("\n * AUDIOLOG: ProcessCarBombTick() Unsupported vehicle type %d * \n", params.m_VehicleType);
- return true;
+ return TRUE;
break;
}
if (bombType == CARBOMB_TIMEDACTIVE) {
@@ -2542,24 +2536,23 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params)
m_sQueueSample.m_nCounter = 35;
m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN);
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = EMITTING_VOLUME;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
}
- return true;
+ return TRUE;
}
void
@@ -2569,15 +2562,15 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
uint8 emittingVol;
float relVol;
float vol;
- bool noReflections;
- bool isHeli;
+ bool8 noReflections;
+ bool8 isHeli;
float maxDist;
static uint8 GunIndex = 53;
for (int i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) {
- noReflections = false;
- isHeli = false;
- m_sQueueSample.m_bRequireReflection = false;
+ noReflections = FALSE;
+ isHeli = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
event = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i];
switch (event) {
case SOUND_CAR_DOOR_CLOSE_BONNET:
@@ -2620,7 +2613,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_CAR_DOOR_OPEN_BONNET:
@@ -2660,7 +2653,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_CAR_WINDSHIELD_CRACK: {
@@ -2735,7 +2728,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_CAR_LIGHT_BREAK: {
@@ -2780,7 +2773,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
m_sQueueSample.m_nReleasingVolumeDivider = 7;
- noReflections = true;
+ noReflections = TRUE;
maxDist = SQR(SOUND_INTENSITY);
emittingVol = m_anRandomTable[0] % 15 + 55;
break;
@@ -2865,7 +2858,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
emittingVol = (37.0f * vol * 625.0f / 24.0f) + 90;
maxDist = SQR(SOUND_INTENSITY);
- noReflections = true;
+ noReflections = TRUE;
break;
}
case SOUND_CAR_BOMB_TICK: {
@@ -2878,7 +2871,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
maxDist = SQR(SOUND_INTENSITY);
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVol = 60;
break;
}
@@ -2960,8 +2953,8 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
- isHeli = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ isHeli = TRUE;
break;
default:
{
@@ -2970,6 +2963,8 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
int32 sampleIndex;
int32 frequency;
CPed *pPed = params.m_pVehicle->pDriver;
+ if(!pPed)
+ break;
if(!pPed->HasWeaponSlot(WEAPONSLOT_SUBMACHINEGUN)) {
sampleIndex = SFX_UZI_LEFT;
frequency = SampleManager.GetSampleBaseFrequency(sampleIndex);
@@ -3012,7 +3007,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
}
@@ -3044,7 +3039,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVol = 50;
maxDist = SQR(SOUND_INTENSITY);
break;
@@ -3058,7 +3053,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
}
/* case SOUND_PED_BODYCAST_HIT:
pedParams.m_pPed = nil;
- pedParams.m_bDistanceCalculated = false;
+ pedParams.m_bDistanceCalculated = FALSE;
pedParams.m_fDistance = 0.0f;
pedParams.m_bDistanceCalculated = params.m_bDistanceCalculated;
pedParams.m_fDistance = params.m_fDistance;
@@ -3085,7 +3080,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
maxDist = SQR(SOUND_INTENSITY);
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVol = m_anRandomTable[4] % 20 + 90;
break;
}
@@ -3103,7 +3098,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
maxDist = SQR(SOUND_INTENSITY);
emittingVol = m_anRandomTable[4] % 20 + 55;
CrunchOffset %= 2;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_CAR_PED_COLLISION: {
@@ -3133,18 +3128,17 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
if (m_sQueueSample.m_nVolume != 0) {
if (noReflections) {
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
} else {
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
}
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
if (isHeli) {
if (0.2f * m_sQueueSample.m_fSoundIntensity > m_sQueueSample.m_fDistance) {
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nOffset = 0;
#ifdef THIS_IS_STUPID
goto AddSample;
@@ -3155,14 +3149,14 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params)
m_sQueueSample.m_nCounter = GunIndex++;
if (GunIndex > 58)
GunIndex = 53;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
continue;
#endif
}
- isHeli = false;
+ isHeli = FALSE;
}
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
#ifdef THIS_IS_STUPID
AddSample:
AddSampleToRequestedQueue();
@@ -3186,79 +3180,77 @@ AddSample:
}
#ifdef GTA_TRAIN
-bool
+bool8
cAudioManager::ProcessTrainNoise(cVehicleParams& params)
{
- const float SOUND_INTENSITY = 300.0f;
+ const float SOUND_INTENSITY = 140.0f;
CTrain *train;
uint8 emittingVol;
float speedMultipler;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
- return false;
+ return FALSE;
if (params.m_fVelocityChange > 0.0f) {
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
train = (CTrain *)params.m_pVehicle;
speedMultipler = Min(1.0f, train->m_fSpeed * 250.f / 51.f);
- emittingVol = (75.f * speedMultipler);
+ emittingVol = (70.f * speedMultipler);
if (train->m_fWagonPosition == 0.0f) {
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 32;
- m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR;
+ m_sQueueSample.m_nSampleIndex = SFX_TRAIN;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR);
+ m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN);
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
- const float SOUND_INTENSITY = 70.0f;
- if (params.m_fDistance < SQR(SOUND_INTENSITY)) {
- m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume != 0) {
- m_sQueueSample.m_nCounter = 33;
- m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_nReleasingVolumeModificator = 5;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987;
- m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_fSpeedMultiplier = 6.0f;
- m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
- AddSampleToRequestedQueue();
- }
- }
- }
- return true;
+ //const float SOUND_INTENSITY = 70.0f;
+ //if (params.m_fDistance < SQR(SOUND_INTENSITY)) {
+ // m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
+ // if (m_sQueueSample.m_nVolume != 0) {
+ // m_sQueueSample.m_nCounter = 33;
+ // m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR;
+ // m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ // m_sQueueSample.m_bIs2D = FALSE;
+ // m_sQueueSample.m_nReleasingVolumeModificator = 5;
+ // m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987;
+ // m_sQueueSample.m_nLoopCount = 0;
+ // m_sQueueSample.m_nEmittingVolume = emittingVol;
+ // SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ // m_sQueueSample.m_fSpeedMultiplier = 6.0f;
+ // m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
+ // m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ // m_sQueueSample.m_nReleasingVolumeDivider = 3;
+ // m_sQueueSample.m_bReverbFlag = TRUE;
+ // m_sQueueSample.m_bRequireReflection = FALSE;
+ // AddSampleToRequestedQueue();
+ // }
+ //}
+ }
+ return TRUE;
}
#endif
-bool
+bool8
cAudioManager::ProcessBoatEngine(cVehicleParams& params)
{
CBoat *boat;
float padRelativeAccerate;
- bool isV12 = false;
+ bool8 isV12 = FALSE;
static int32 LastFreq = 2000;
static int8 LastVol = 0;
@@ -3267,7 +3259,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
if (params.m_fDistance < SQR(intensity)) {
boat = (CBoat *)params.m_pVehicle;
if(boat->GetStatus() == STATUS_WRECKED)
- return true;
+ return TRUE;
float freqModificator;
float volModificator;
@@ -3289,7 +3281,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
case MI_JETMAX:
freqModificator = 6000.0f;
volModificator = 60.0f;
- isV12 = true;
+ isV12 = TRUE;
BaseFreq = 9000;
BaseVol = 20;
break;
@@ -3307,18 +3299,18 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
BaseFreq = 1782;
break;
default:
- return true;
+ return TRUE;
}
- bool bIsPlayerVeh;
+ bool8 bIsPlayerVeh;
if(FindPlayerVehicle() == params.m_pVehicle) {
float padAccelerate = Max(Pads[0].GetAccelerate(), Pads[0].GetBrake());
padRelativeAccerate = padAccelerate / 255.0f;
- bIsPlayerVeh = true;
+ bIsPlayerVeh = TRUE;
} else {
padRelativeAccerate = Max(params.m_pVehicle->m_fGasPedal, params.m_pVehicle->m_fBrakePedal);
- bIsPlayerVeh = false;
+ bIsPlayerVeh = FALSE;
}
int Freq = BaseFreq + (padRelativeAccerate * freqModificator);
@@ -3356,18 +3348,17 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
else
m_sQueueSample.m_nSampleIndex = SFX_BOAT_CRUISER_LOOP;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = Vol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = intensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 7;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3381,18 +3372,17 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE;
m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = 80;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = intensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 7;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3400,12 +3390,12 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params)
LastFreq = Freq;
LastVol = Vol;
}
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
-bool
+bool8
cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params)
{
float velocityChange;
@@ -3413,11 +3403,11 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params)
float multiplier;
if (params.m_fDistance > SQR(50))
- return false;
+ return FALSE;
velocityChange = Abs(params.m_fVelocityChange);
if (velocityChange <= 0.0005f && ((CBoat*)params.m_pVehicle)->bBoatInWater)
- return true;
+ return TRUE;
velocityChange = Min(0.75f, velocityChange);
multiplier = (velocityChange - 0.0005f) / (1499.0f / 2000.0f);
@@ -3428,23 +3418,22 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params)
m_sQueueSample.m_nCounter = 38;
m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = vol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = 50.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 6;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
void
@@ -3464,12 +3453,12 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
float propellerSpeed;
float freqModifier; //may be relate to angle with horison
float cameraAngle;
- bool distanceCalculatedOld;
+ bool8 distanceCalculatedOld;
float distanceOld;
CVector vecPosOld;
float volumeModifier;//TODO find better name
- bool hunterBool;
+ bool8 hunterBool;
static uint32 freqFrontPrev = 14287;
static uint32 freqPropellerPrev = 7143;
@@ -3477,7 +3466,7 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
boat = nil;
automobile = nil;
- hunterBool = false;
+ hunterBool = FALSE;
if (params.m_fDistance >= SQR(SOUND_INTENSITY))
return;
@@ -3492,7 +3481,7 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
brakeState = veh->m_fBrakePedal * 255.0f;
}
freqModifier = Abs(veh->GetUp().y);
- cameraAngle = (DotProduct(veh->m_matrix.GetForward(), TheCamera.GetForward()) + 1.0f) / 2.0f;
+ cameraAngle = (DotProduct(veh->GetMatrix().GetForward(), TheCamera.GetForward()) + 1.0f) / 2.0f;
if (veh->m_modelIndex == MI_SKIMMER) {
boat = (CBoat*)veh;
propellerSpeed = boat->m_fMovingSpeed * 50.0f / 11.0f;
@@ -3533,21 +3522,31 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
}
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
+
+ CVector backPropellerPos;
+ if (automobile != nil)
+ automobile->GetComponentWorldPosition(CAR_BOOT, backPropellerPos);
+ else if (params.m_VehicleType == VEHICLE_TYPE_HELI)
+#ifdef FIX_BUGS
+ backPropellerPos =
+#endif
+ params.m_pVehicle->GetMatrix() * CVector(0.0f, -10.0f, 0.0f);
+ else
+ backPropellerPos = m_sQueueSample.m_vecPos;
if (params.m_fDistance >= SQR(140.0f))
return;
@@ -3561,7 +3560,7 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
if (playerVeh == veh && (accelerateState > 0 || brakeState > 0) && freq < 1300)//unnesesary freqModifier alredy <= 1300
freq = 1300;
if (veh->m_modelIndex == MI_HUNTER)
- hunterBool = true;
+ hunterBool = TRUE;
}
@@ -3574,18 +3573,17 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
m_sQueueSample.m_nSampleIndex = SFX_HELI_APACHE_1;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nFrequency = (volumeModifier + 1.0f) * 16000 + freq;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 140.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
} else if (boat != nil) {
m_sQueueSample.m_nSampleIndex = SFX_SEAPLANE_PRO1;
@@ -3600,35 +3598,33 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
m_sQueueSample.m_nFrequency = clamp2(m_sQueueSample.m_nFrequency, freqFrontPrev, 197);
freqFrontPrev = m_sQueueSample.m_nFrequency;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 140.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
} else {
m_sQueueSample.m_nSampleIndex = SFX_CAR_HELI_MAI;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nFrequency = (volumeModifier + 1) * 16000 + freq;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 140.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3662,18 +3658,17 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nFrequency = (volumeModifier + 1) * 16000 + freq;
}
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 140.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
@@ -3696,18 +3691,17 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
}
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nCounter = 12;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 30.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 30;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3732,18 +3726,17 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
m_sQueueSample.m_nSampleIndex = SFX_SEAPLANE_PRO4;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = 12;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = propellerSpeed * 100.0f;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_SEAPLANE_PRO4);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_SEAPLANE_PRO4);
+ SET_LOOP_OFFSETS(SFX_SEAPLANE_PRO4)
m_sQueueSample.m_fSpeedMultiplier = 5.0f;
m_sQueueSample.m_fSoundIntensity = 20.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 7;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3752,13 +3745,9 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
vecPosOld = m_sQueueSample.m_vecPos;
distanceCalculatedOld = params.m_bDistanceCalculated;
distanceOld = params.m_fDistance;
-
- if (automobile != nil)
- automobile->GetComponentWorldPosition(CAR_BOOT, m_sQueueSample.m_vecPos);
- else if (params.m_VehicleType == VEHICLE_TYPE_HELI)
- m_sQueueSample.m_vecPos = CVector(0.0f, -10.0f, 0.0f); //this is from android, but for real it's not used
- params.m_bDistanceCalculated = false;
+ m_sQueueSample.m_vecPos = backPropellerPos;
+ params.m_bDistanceCalculated = FALSE;
params.m_fDistance = GetDistanceSquared(m_sQueueSample.m_vecPos);
if (params.m_fDistance < SQR(27.0f)) {
CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance);
@@ -3766,20 +3755,19 @@ cAudioManager::ProcessCarHeli(cVehicleParams& params)
if (m_sQueueSample.m_nVolume) {
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = hunterBool ? SFX_HELI_APACHE_3 : SFX_CAR_HELI_REA;
- m_sQueueSample.m_nBankIndex = 0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = (volumeModifier + 1.0f) * 16000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = volumeModifier * 25.0f;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 6.0f;
m_sQueueSample.m_fSoundIntensity = 27.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3797,7 +3785,7 @@ cAudioManager::ProcessVehicleFlatTyre(cVehicleParams& params)
CAutomobile* automobile;
CBike* bike;
- bool wheelBurst;
+ bool8 wheelBurst;
uint8 emittingVol;
float modifier;
@@ -3808,19 +3796,19 @@ cAudioManager::ProcessVehicleFlatTyre(cVehicleParams& params)
switch (params.m_VehicleType) {
case VEHICLE_TYPE_CAR:
automobile = (CAutomobile*)params.m_pVehicle;
- wheelBurst = false;
+ wheelBurst = FALSE;
for (int i = 0; i < 4; i++)
if (automobile->Damage.GetWheelStatus(i) == WHEEL_STATUS_BURST && automobile->m_aWheelTimer[i] > 0.0f)
- wheelBurst = true;
+ wheelBurst = TRUE;
if (!wheelBurst)
return;
break;
case VEHICLE_TYPE_BIKE:
bike = (CBike*)params.m_pVehicle;
- wheelBurst = false;
+ wheelBurst = FALSE;
for(int i = 0; i < 2; i++)
if (bike->m_wheelStatus[i] == WHEEL_STATUS_BURST && bike->m_aWheelTimer[i] > 0.0f)
- wheelBurst = true;
+ wheelBurst = TRUE;
if (!wheelBurst)
return;
break;
@@ -3835,20 +3823,19 @@ cAudioManager::ProcessVehicleFlatTyre(cVehicleParams& params)
if (m_sQueueSample.m_nVolume) {
m_sQueueSample.m_nCounter = 95;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 5;
m_sQueueSample.m_nSampleIndex = SFX_TYRE_BURST_L;
m_sQueueSample.m_nFrequency = (5500.0f * modifier) + 8000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_TYRE_BURST_L);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_TYRE_BURST_L);
+ SET_LOOP_OFFSETS(SFX_TYRE_BURST_L)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -3987,12 +3974,12 @@ cAudioManager::ProcessJumboDecel(CPlane *plane)
}
}
-bool
+bool8
cAudioManager::SetupJumboTaxiSound(uint8 vol)
{
const float SOUND_INTENSITY = 180.0f;
if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY)
- return false;
+ return FALSE;
uint8 emittingVol = (vol / 2) + ((vol / 2) * m_sQueueSample.m_fDistance / SOUND_INTENSITY);
@@ -4004,31 +3991,30 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol)
m_sQueueSample.m_nCounter = 1;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = GetJumboTaxiFreq();
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq)
{
const float SOUND_INTENSITY = 170.0f;
if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY)
- return false;
+ return FALSE;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
@@ -4036,30 +4022,29 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq)
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq)
{
const float SOUND_INTENSITY = 180.0f;
if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY)
- return false;
+ return FALSE;
uint8 emittingVol = vol - gJumboVolOffsetPercentage / 100;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
@@ -4067,29 +4052,28 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq)
m_sQueueSample.m_nCounter = 3;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = freq;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 4;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::SetupJumboFlySound(uint8 emittingVol)
{
const float SOUND_INTENSITY = 440.0f;
- if(m_sQueueSample.m_fDistance >= SOUND_INTENSITY) return false;
+ if(m_sQueueSample.m_fDistance >= SOUND_INTENSITY) return FALSE;
int32 vol = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
m_sQueueSample.m_nVolume = vol;
@@ -4097,30 +4081,29 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol)
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY);
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false; // todo port fix to re3
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE; // todo port fix to re3
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
-bool
+bool8
cAudioManager::SetupJumboRumbleSound(uint8 emittingVol)
{
const float SOUND_INTENSITY = 240.0f;
if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY)
- return false;
+ return FALSE;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
@@ -4128,20 +4111,19 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol)
m_sQueueSample.m_nCounter = 5;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE);
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 12;
m_sQueueSample.m_nOffset = 0;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
m_sQueueSample.m_nCounter = 6;
m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE;
@@ -4149,7 +4131,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol)
m_sQueueSample.m_nOffset = MAX_VOLUME;
AddSampleToRequestedQueue();
}
- return true;
+ return TRUE;
}
int32
@@ -4163,6 +4145,23 @@ cAudioManager::GetJumboTaxiFreq() const
#pragma endregion All the vehicle audio code
#pragma region PED AUDIO
+struct sToniReactions
+{
+ uint32 sfx[4];
+ uint32 count[4];
+};
+
+const sToniReactions aReactions[8] = {
+ {{SFX_TONI_PISSED_OFF_CRASH_01, SFX_TONI_ANGRY_CRASH_01, SFX_TONI_WISECRACKING_CRASH_01, NULL}, {25, 29, 17, 0}},
+ {{SFX_TONI_PISSED_OFF_FIGHT_01, SFX_TONI_ANGRY_FIGHT_01, SFX_TONI_WISECRACKING_FIGHT_01, NULL}, {18, 39, 20, 0}},
+ {{SFX_TONI_PISSED_OFF_JACKED_01, SFX_TONI_ANGRY_JACKED_01, SFX_TONI_WISECRACKING_JACKED_01, NULL}, {11, 16, 17, 0}},
+ {{SFX_TONI_PISSED_OFF_JACKING_01, SFX_TONI_ANGRY_JACKING_01, SFX_TONI_WISECRACKING_JACKING_01, NULL}, {25, 33, 12, 0}},
+ {{SFX_TONI_ANGRY_PICK_UP_HOOKER_01, SFX_TONI_ANGRY_PICK_UP_HOOKER_01, SFX_TONI_WISECRACKING_PICK_UP_HOOKER_01, NULL}, {8, 8, 11, 0}},
+ {{SFX_TONI_PISSED_OFF_PULL_GUN_01, SFX_TONI_ANGRY_PULL_GUN_01, SFX_TONI_WISECRACKING_PULL_GUN_01, NULL}, {18, 29, 19, 0}},
+ {{SFX_TONI_CALM_SEX_01, SFX_TONI_ANGRY_SEX_01, SFX_TONI_ANGRY_SEX_01, SFX_TONI_WISECRACKING_SEX_01}, {11, 10, 10, 10}},
+ {{SFX_TONI_CALM_SHOOT_01, SFX_TONI_PISSED_OFF_SHOOT_01, SFX_TONI_ANGRY_SHOOT_01, SFX_TONI_WISECRACKING_SHOOT_01}, {30, 31, 36, 26}}
+};
+
void
cAudioManager::ProcessPed(CPhysical *ped)
{
@@ -4170,7 +4169,7 @@ cAudioManager::ProcessPed(CPhysical *ped)
m_sQueueSample.m_vecPos = ped->GetPosition();
- params.m_bDistanceCalculated = false;
+ params.m_bDistanceCalculated = FALSE;
params.m_pPed = (CPed *)ped;
params.m_fDistance = GetDistanceSquared(m_sQueueSample.m_vecPos);
ProcessPedOneShots(params);
@@ -4184,9 +4183,9 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
CPed *ped = params.m_pPed;
- bool narrowSoundRange;
+ bool8 narrowSoundRange;
int16 sound;
- bool stereo;
+ bool8 stereo;
CWeapon *weapon;
float maxDist = 0.f; // uninitialized variable
@@ -4195,9 +4194,9 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
weapon = params.m_pPed->GetWeapon();
for (uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) {
- stereo = false;
- narrowSoundRange = false;
- m_sQueueSample.m_bRequireReflection = false;
+ stereo = FALSE;
+ narrowSoundRange = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
sound = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i];
switch (sound) {
case SOUND_STEP_START:
@@ -4271,12 +4270,11 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 20.0f;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_FALL_LAND:
case SOUND_FALL_COLLAPSE:
@@ -4299,12 +4297,11 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 30.0f;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_FIGHT_37:
m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1;
@@ -4390,20 +4387,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
++iSound;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 30.0f;
maxDist = SQR(30);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 26 + 100;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_WEAPON_BAT_ATTACK:
case SOUND_WEAPON_KNIFE_ATTACK:
@@ -4436,7 +4432,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_nSampleIndex = SFX_BAT_HIT_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 22000;
- stereo = true;
+ stereo = TRUE;
break;
}
}
@@ -4447,26 +4443,29 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
}
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 30.0f;
maxDist = SQR(30);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[2] % 20 + 100;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
- case SOUND_WEAPON_CHAINSAW_ATTACK:
+ case SOUND_WEAPON_CHAINSAW_IDLE:
if (FindVehicleOfPlayer())
continue;
- m_sQueueSample.m_nSampleIndex = SFX_CAR_ACCEL_13;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0; // SFX_BANK_CAR_CHAINSAW
+ m_sQueueSample.m_nSampleIndex = SFX_CAR_CHAINSAW_IDLE;
+#ifdef GTA_PS2
+ m_sQueueSample.m_nBankIndex = SFX_BANK_CAR_CHAINSAW;
+#else
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+#endif
m_sQueueSample.m_nCounter = 70;
m_sQueueSample.m_nFrequency = 27000;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4475,18 +4474,21 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
maxDist = SQR(50);
m_sQueueSample.m_nLoopCount = 0;
emittingVol = 100;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_CAR_ACCEL_13);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_CAR_ACCEL_13);
+ SET_LOOP_OFFSETS(SFX_CAR_CHAINSAW_IDLE)
m_sQueueSample.m_nEmittingVolume = 100;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
break;
- case SOUND_WEAPON_CHAINSAW_IDLE:
+ case SOUND_WEAPON_CHAINSAW_ATTACK:
if (FindVehicleOfPlayer())
continue;
- m_sQueueSample.m_nSampleIndex = SFX_CAR_AFTER_ACCEL_13;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0; // SFX_BANK_CAR_CHAINSAW
+ m_sQueueSample.m_nSampleIndex = SFX_CAR_CHAINSAW_ATTACK;
+#ifdef GTA_PS2
+ m_sQueueSample.m_nBankIndex = SFX_BANK_CAR_CHAINSAW;
+#else
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+#endif
m_sQueueSample.m_nCounter = 68;
m_sQueueSample.m_nFrequency = 27000;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
@@ -4495,11 +4497,10 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
maxDist = SQR(60);
m_sQueueSample.m_nLoopCount = 0;
emittingVol = 100;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_CAR_AFTER_ACCEL_13);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_CAR_AFTER_ACCEL_13);
+ SET_LOOP_OFFSETS(SFX_CAR_CHAINSAW_ATTACK)
m_sQueueSample.m_nEmittingVolume = 100;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
break;
case SOUND_WEAPON_CHAINSAW_MADECONTACT:
@@ -4507,8 +4508,12 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
continue;
if ((int32)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i] != ENTITY_TYPE_PED)
ReportCollision(params.m_pPed, params.m_pPed, SURFACE_CAR, SURFACE_TARMAC, 0.0f, 0.09f);
- m_sQueueSample.m_nSampleIndex = SFX_CAR_AFTER_ACCEL_13;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0; // SFX_BANK_CAR_CHAINSAW
+ m_sQueueSample.m_nSampleIndex = SFX_CAR_CHAINSAW_ATTACK;
+#ifdef GTA_PS2
+ m_sQueueSample.m_nBankIndex = SFX_BANK_CAR_CHAINSAW;
+#else
+ m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+#endif
m_sQueueSample.m_nCounter = 68;
m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 22000;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
@@ -4517,11 +4522,10 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
maxDist = SQR(60);
m_sQueueSample.m_nLoopCount = 0;
emittingVol = 100;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_CAR_AFTER_ACCEL_13);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_CAR_AFTER_ACCEL_13);
+ SET_LOOP_OFFSETS(SFX_CAR_CHAINSAW_ATTACK)
m_sQueueSample.m_nEmittingVolume = 100;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 5;
break;
case SOUND_WEAPON_SHOT_FIRED:
@@ -4534,7 +4538,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 1;
@@ -4542,20 +4546,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[0] % 20 + 80;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_COLT45:
m_sQueueSample.m_nSampleIndex = SFX_COLT45_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COLT45_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4563,20 +4566,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[1] % 10 + 90;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_PYTHON:
m_sQueueSample.m_nSampleIndex = SFX_PYTHON_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PYTHON_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4584,21 +4586,20 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = 127;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_SHOTGUN:
case WEAPONTYPE_STUBBY_SHOTGUN:
m_sQueueSample.m_nSampleIndex = SFX_SHOTGUN_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOTGUN_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4606,20 +4607,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[2] % 10 + 100;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_SPAS12_SHOTGUN:
m_sQueueSample.m_nSampleIndex = SFX_SPAS12_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SPAS12_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4627,40 +4627,38 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[2] % 10 + 100;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_TEC9:
m_sQueueSample.m_nSampleIndex = SFX_TEC_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 17000;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 70;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_UZI:
case WEAPONTYPE_MINIGUN:
m_sQueueSample.m_nSampleIndex = SFX_UZI_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4668,38 +4666,36 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 70;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_SILENCED_INGRAM:
m_sQueueSample.m_nSampleIndex = SFX_TEC_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 34000;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 70;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_MP5:
m_sQueueSample.m_nSampleIndex = SFX_MP5_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_MP5_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4707,38 +4703,36 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 70;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_M4:
m_sQueueSample.m_nSampleIndex = SFX_RUGER_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 43150;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 90;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_RUGER:
m_sQueueSample.m_nSampleIndex = SFX_RUGER_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RUGER_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4746,20 +4740,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[3] % 15 + 90;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_SNIPERRIFLE:
case WEAPONTYPE_LASERSCOPE:
m_sQueueSample.m_nSampleIndex = SFX_SNIPER_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
if (weapon->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE)
m_sQueueSample.m_nFrequency = 25472;
else
@@ -4770,14 +4763,13 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[4] % 10 + 110;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
+ stereo = TRUE;
break;
case WEAPONTYPE_FLAMETHROWER:
m_sQueueSample.m_nSampleIndex = SFX_FLAMETHROWER_LEFT;
@@ -4790,20 +4782,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 60.0f;
maxDist = SQR(60);
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_nEmittingVolume = 90;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 6;
- stereo = true;
+ stereo = TRUE;
break;
case WEAPONTYPE_M60:
case WEAPONTYPE_HELICANNON:
m_sQueueSample.m_nSampleIndex = SFX_M60_LEFT;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_M60_LEFT);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -4811,13 +4802,12 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = 127;
m_sQueueSample.m_nEmittingVolume = 127;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- stereo = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ stereo = TRUE;
break;
default:
continue;
@@ -4862,7 +4852,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
}
emittingVol = 75;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency += RandomDisplacement(300);
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nReleasingVolumeModificator = 5;
@@ -4870,12 +4860,11 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 30.0f;
maxDist = SQR(30);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_nEmittingVolume = 75;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_WEAPON_AK47_BULLET_ECHO:
{
@@ -4900,14 +4889,14 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
break;
case WEAPONTYPE_M60:
case WEAPONTYPE_HELICANNON:
- m_sQueueSample.m_nSampleIndex = SFX_M60_TAIL_LEFT;
+ //m_sQueueSample.m_nSampleIndex = SFX_M60_TAIL_LEFT;
break;
default:
continue;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
switch (weaponType) {
case WEAPONTYPE_TEC9:
m_sQueueSample.m_nFrequency = 13000;
@@ -4934,13 +4923,12 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 120.0f;
maxDist = SQR(120);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[4] % 10 + 80;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_WEAPON_FLAMETHROWER_FIRE:
@@ -4954,18 +4942,17 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 60.0f;
maxDist = SQR(60);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = 70;
m_sQueueSample.m_nEmittingVolume = 70;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
break;
case SOUND_WEAPON_HIT_PED:
m_sQueueSample.m_nSampleIndex = SFX_BULLET_PED;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BULLET_PED);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8);
m_sQueueSample.m_nReleasingVolumeModificator = 7;
@@ -4973,12 +4960,11 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 30.0f;
maxDist = SQR(30);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[0] % 20 + 90;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
break;
case SOUND_SPLASH:
if (m_FrameCounter <= iSplashFrame)
@@ -4987,20 +4973,19 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_nSampleIndex = SFX_SPLASH_1;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = RandomDisplacement(1400) + 20000;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = 40.0f;
maxDist = SQR(40);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
+ RESET_LOOP_OFFSETS
emittingVol = m_anRandomTable[2] % 30 + 70;
- m_sQueueSample.m_nLoopEnd = -1;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_MELEE_ATTACK_START:
{
@@ -5020,7 +5005,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound++;
- narrowSoundRange = true;
+ narrowSoundRange = TRUE;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
@@ -5032,12 +5017,11 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
emittingVol = m_anRandomTable[2] % 20 + 70;
maxDist = SQR(30);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_SKATING:
@@ -5048,7 +5032,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_nSampleIndex = (m_anRandomTable[3] & 1) + SFX_SKATE_1;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nCounter = iSound;
- stereo = true;
+ stereo = TRUE;
++iSound;
m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 1000 + 17000;
if (param2 == 0)
@@ -5058,13 +5042,12 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 20.0f;
maxDist = SQR(20);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = (m_anRandomTable[2] % 20 + 70) * param1 / 127;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
}
case SOUND_WEAPON_MINIGUN_ATTACK:
@@ -5078,11 +5061,10 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
emittingVol = 127;
maxDist = SQR(150);
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_MINIGUN_FIRE_LEFT);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_MINIGUN_FIRE_LEFT);
+ SET_LOOP_OFFSETS(SFX_MINIGUN_FIRE_LEFT)
m_sQueueSample.m_nEmittingVolume = 127;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
break;
case SOUND_WEAPON_MINIGUN_2:
@@ -5096,11 +5078,10 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
emittingVol = 127.0f * m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i];
maxDist = SQR(150);
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_MINIGUN_FIRE_RIGHT);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_MINIGUN_FIRE_RIGHT);
+ SET_LOOP_OFFSETS(SFX_MINIGUN_FIRE_RIGHT)
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
break;
case SOUND_WEAPON_MINIGUN_3:
@@ -5113,13 +5094,12 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 150.0f;
maxDist = SQR(150);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
emittingVol = 127;
m_sQueueSample.m_nEmittingVolume = 127;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SOUND_SHIRT_WIND_FLAP:
if (params.m_pPed->IsPlayer() && params.m_pPed->m_pMyVehicle) {
@@ -5157,11 +5137,10 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
m_sQueueSample.m_fSoundIntensity = 15.0f;
maxDist = SQR(15);
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
}
}
@@ -5179,13 +5158,13 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
if (m_sQueueSample.m_nVolume != 0) {
if (stereo) {
if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_fSoundIntensity) {
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nOffset = 0;
} else {
- stereo = false;
+ stereo = FALSE;
}
}
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
AddSampleToRequestedQueue();
if (stereo) {
m_sQueueSample.m_nOffset = 127;
@@ -5206,7 +5185,7 @@ cAudioManager::ProcessPedOneShots(cPedParams &params)
}
void
-cAudioManager::SetPedTalkingStatus(CPed *ped, uint8 status)
+cAudioManager::SetPedTalkingStatus(CPed *ped, bool8 status)
{
if (ped != nil)
ped->m_canTalk = status;
@@ -5234,32 +5213,28 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
if(ped != nil) {
if(!ped->m_canTalk) return;
- m_bGenericSfx = false;
+ m_bGenericSfx = FALSE;
pedComment.m_nSampleIndex = GetPedCommentSfx(ped, sound);
if(pedComment.m_nSampleIndex == NO_SAMPLE) return;
soundIntensity = 40.0f;
} else {
- m_bGenericSfx = true;
+ m_bGenericSfx = TRUE;
switch(sound) {
case SOUND_PED_HELI_PLAYER_FOUND:
soundIntensity = 400.0f;
- pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_POLICE_HELI_1, SFX_POLICE_HELI_20);
+ pedComment.m_nSampleIndex = NO_SAMPLE; //GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_POLICE_HELI_1, SFX_POLICE_HELI_20);
break;
case SOUND_PED_VCPA_PLAYER_FOUND:
soundIntensity = 400.0f;
-#ifdef FIX_BUGS
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 23 + SFX_POLICE_BOAT_1;
-#else
- pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 29 + SFX_POLICE_BOAT_1;
-#endif
+ pedComment.m_nSampleIndex = NO_SAMPLE; //m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 23 + SFX_POLICE_BOAT_1;
break;
case SOUND_INJURED_PED_MALE_OUCH:
soundIntensity = 40.0f;
- pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_MALE_GRUNT_1, SFX_GENERIC_MALE_GRUNT_41);
+ pedComment.m_nSampleIndex = NO_SAMPLE; // = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_MALE_GRUNT_1, SFX_GENERIC_MALE_GRUNT_41);
break;
case SOUND_INJURED_PED_FEMALE:
soundIntensity = 40.0f;
- pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_FEMALE_GRUNT_1, SFX_GENERIC_FEMALE_GRUNT_33);
+ pedComment.m_nSampleIndex = NO_SAMPLE; // = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_FEMALE_GRUNT_1, SFX_GENERIC_FEMALE_GRUNT_33);
break;
default:
return;
@@ -5287,7 +5262,7 @@ cAudioManager::SetupPedComments(cPedParams &params, uint16 sound)
uint32
cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
{
- if(ped->m_nPedState != PED_FALL || sound == MI_VICE8 || sound == MI_WFYG1 || sound == MI_WFYG2) {
+ if(ped->m_nPedState != PED_FALL || sound == SOUND_PED_DAMAGE || sound == SOUND_PED_HIT || sound == SOUND_PED_LAND) {
if(ped->m_getUpTimer == UINT32_MAX || ped->m_getUpTimer > CTimer::GetTimeInMilliseconds()) {
if(sound != SOUND_PED_DAMAGE && sound != SOUND_PED_HIT && sound != SOUND_PED_LAND) return NO_SAMPLE;
}
@@ -5398,9 +5373,9 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
case MI_VICE5:
case MI_VICE6:
case MI_VICE7:
- case MI_VICE8: return GetVICETalkSfx(ped, sound, ped->GetModelIndex());
- case MI_WFYG1: return GetWFYG1TalkSfx(ped, sound);
- case MI_WFYG2: return GetWFYG2TalkSfx(ped, sound);
+ case MI_VICE8:// return GetVICETalkSfx(ped, sound, ped->GetModelIndex());
+ case MI_WFYG1:// return GetWFYG1TalkSfx(ped, sound);
+ case MI_WFYG2:// return GetWFYG2TalkSfx(ped, sound);
case MI_SPECIAL01:
case MI_SPECIAL02:
case MI_SPECIAL03:
@@ -5432,6 +5407,11 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound)
void
cAudioManager::GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset) const
{
+ if (maxOffset == 0) {
+ phrase = prevPhrase = NO_SAMPLE;
+ return;
+ }
+
phrase = sample + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % maxOffset;
// check if the same sfx like last time, if yes, then try use next one,
@@ -5457,40 +5437,38 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
if(m_bIsPlayerShutUp) return NO_SAMPLE;
switch(sound) {
- case SOUND_PED_DEATH: return 9796;
+ case SOUND_PED_DEATH:
+ case SOUND_PED_PLAYER_AFTERSEX: return NO_SAMPLE;
case SOUND_PED_DAMAGE:
- case SOUND_PED_BULLET_HIT: GetPhrase(sfx, ped->m_lastComment, 9815, 33); break;
+ case SOUND_PED_BULLET_HIT: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_IMP_HI_01, 16); break;
case SOUND_PED_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, 9883, 42); break;
- case SOUND_PED_LAND: GetPhrase(sfx, ped->m_lastComment, 9848, 35); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, 9925, 16); break;
+ case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_IMP_LOW_01, 15); break;
+ case SOUND_PED_LAND: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_HIT_GROUND_01, 12); break;
+ case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_TONI_GENERAL_ON_FIRE_01, 7); break;
case SOUND_PED_PLAYER_REACTTOCOP:
switch(m_nPlayerMood) {
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8694, 38);
+ case PLAYER_MOOD_PISSED_OFF:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_PISSED_OFF_BUSTED_01, 12);
break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9615, 20);
+ case PLAYER_MOOD_ANGRY:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_ANGRY_BUSTED_01, 16);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9046, 22);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_BUSTED_01, 25);
break;
}
break;
case SOUND_PED_ON_FIRE: {
cooldown_phrase(8);
switch(m_nPlayerMood) {
+ case PLAYER_MOOD_CALM:
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9586, 29);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 9007, 39);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9787, 9);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[7].sfx[m_nPlayerMood], aReactions[7].count[m_nPlayerMood]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9322, 35);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_SEX_01, 30); // bruh
break;
}
break;
@@ -5499,16 +5477,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
cooldown_phrase(8);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9561, 25);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8937, 52);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9758, 19);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[5].sfx[m_nPlayerMood-1], aReactions[5].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9275, 39);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_PULL_GUN_01, 35);
break;
}
break;
@@ -5517,81 +5491,59 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9483, 36);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8876, 43);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9706, 18);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[3].sfx[m_nPlayerMood-1], aReactions[3].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9202, 40);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_JACKING_01, 35);
break;
}
break;
}
case SOUND_PED_MUGGING: {
cooldown_phrase(8);
- switch(m_nPlayerMood) {
- case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9519, 25);
- break;
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8919, 12);
- break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9724, 23);
- break;
- default:
- GetPhrase(sfx, ped->m_lastComment, 9242, 11);
- break;
- }
+ sfx = NO_SAMPLE;
break;
}
case SOUND_PED_CAR_JACKED: {
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9462, 21);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8843, 33);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9688, 18);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[2].sfx[m_nPlayerMood-1], aReactions[2].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9178, 24);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_JACKED_01, 23);
break;
}
break;
}
- case SOUND_PED_PLAYER_AFTERSEX: GetPhrase(sfx, ped->m_lastComment, 9797, 18); break;
case SOUND_PED_PLAYER_BEFORESEX:
switch(m_nPlayerMood) {
+ case PLAYER_MOOD_CALM:
+ case PLAYER_MOOD_PISSED_OFF:
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8989, 18);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9777, 10);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[6].sfx[m_nPlayerMood], aReactions[6].count[m_nPlayerMood]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9314, 8);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_SEX_01, 10);
break;
}
break;
case SOUND_PED_PLAYER_FARFROMCOPS: {
cooldown_phrase(4);
switch(m_nPlayerMood) {
- case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8732, 9);
+ case PLAYER_MOOD_PISSED_OFF:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_PISSED_OFF_CHASED_01, 25);
break;
- case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9635, 7);
+ case PLAYER_MOOD_ANGRY:
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_ANGRY_CHASED_01, 25);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9068, 20);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_CHASED_01, 20);
break;
}
break;
@@ -5600,16 +5552,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9401, 61);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8782, 61);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9661, 27);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[1].sfx[m_nPlayerMood-1], aReactions[1].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9131, 47);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_FIGHT_01, 42);
break;
}
break;
@@ -5620,16 +5568,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9357, 44);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8741, 41);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9642, 19);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[0].sfx[m_nPlayerMood-1], aReactions[0].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9088, 43);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_CRASH_01, 31);
break;
}
break;
@@ -5638,16 +5582,12 @@ cAudioManager::GetPlayerTalkSfx(CPed *ped, int16 sound)
cooldown_phrase(4);
switch(m_nPlayerMood) {
case PLAYER_MOOD_PISSED_OFF:
- GetPhrase(sfx, ped->m_lastComment, 9544, 17);
- break;
case PLAYER_MOOD_ANGRY:
- GetPhrase(sfx, ped->m_lastComment, 8931, 6);
- break;
case PLAYER_MOOD_WISECRACKING:
- GetPhrase(sfx, ped->m_lastComment, 9747, 11);
+ GetPhrase(sfx, ped->m_lastComment, aReactions[4].sfx[m_nPlayerMood-1], aReactions[4].count[m_nPlayerMood-1]);
break;
default:
- GetPhrase(sfx, ped->m_lastComment, 9253, 22);
+ GetPhrase(sfx, ped->m_lastComment, SFX_TONI_CALM_PICK_UP_HOOKER_01, 18);
break;
}
break;
@@ -5662,65 +5602,81 @@ cAudioManager::GetCopTalkSfx(CPed *ped, int16 sound)
{
uint32 sfx;
PedState objective;
- switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, 8469, 4); break;
- case SOUND_PED_PULLOUTWEAPON: GetPhrase(sfx, ped->m_lastComment, 8473, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 8500, 2); break;
- case SOUND_PED_COP_UNK_129: GetPhrase(sfx, ped->m_lastComment, 8510, 4); break;
- case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, 8508, 2); break;
- case SOUND_PED_GUNAIMEDAT2: GetPhrase(sfx, ped->m_lastComment, 8498, 2); break;
- case SOUND_PED_COP_ALONE: GetPhrase(sfx, ped->m_lastComment, 8504, 4); break;
- case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, 8485, 2); break;
- case SOUND_PED_COP_REACTION: {
- cooldown_phrase(4);
- GetPhrase(sfx, ped->m_lastComment, 8502, 2);
- break;
- }
- case SOUND_PED_COP_LITTLECOPSAROUND:
- objective = FindPlayerPed()->m_nPedState;
- if(objective == PED_ARRESTED || objective == PED_DEAD || objective == PED_DIE) return NO_SAMPLE;
- GetPhrase(sfx, ped->m_lastComment, 8481, 4);
- break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 8494, 4); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8491, 3); break;
- case SOUND_PED_PED_COLLISION:
- if(FindPlayerPed()->m_pWanted->GetWantedLevel() <= 0) return NO_SAMPLE;
- GetPhrase(sfx, ped->m_lastComment, 8476, 5);
- break;
- default: return GetGenericMaleTalkSfx(ped, sound);
- }
- return 45 * (m_sQueueSample.m_nEntityIndex % 5) + sfx;
+ return NO_SAMPLE;
+// switch(sound) {
+// case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_ARREST_1, 4); break;
+// case SOUND_PED_PULLOUTWEAPON: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_PULLOUTWEAPON_1, 3); break;
+// case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_SAVED_1, 2); break;
+// case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_TARGETING_1, 4); break;
+// case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_MANYCOPSAROUND_1, 2); break;
+// case SOUND_PED_GUNAIMEDAT2: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_GUNAIMEDAT2_1, 2); break;
+// case SOUND_PED_COP_ALONE: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_ALONE_1, 4); break;
+// case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_GUNAIMEDAT2_1, 2); break;
+// case SOUND_PED_COP_ASK_FOR_ID: {
+// cooldown_phrase(4);
+// GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_ASK_FOR_ID_1, 2);
+// break;
+// }
+// case SOUND_PED_COP_LITTLECOPSAROUND:
+// objective = FindPlayerPed()->m_nPedState;
+// if(objective == PED_ARRESTED || objective == PED_DEAD || objective == PED_DIE) return NO_SAMPLE;
+// GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_COP_LITTLECOPSAROUND_1, 4);
+// break;
+// case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_FIGHT_1, 4); break;
+// case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_DODGE_1, 3); break;
+//#ifdef FIX_BUGS
+// case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_CAR_CRASH_1, 4); break;
+//#endif
+// case SOUND_PED_PED_COLLISION:
+// if(FindPlayerPed()->m_pWanted->GetWantedLevel() > 0)
+// GetPhrase(sfx, ped->m_lastComment, SFX_COP_VOICE_1_BUMP_1, 5);
+// else
+// return NO_SAMPLE;
+// break;
+// default: return GetGenericMaleTalkSfx(ped, sound);
+// }
+// return (SFX_COP_VOICE_2_ARREST_1 - SFX_COP_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5) + sfx;
}
uint32
cAudioManager::GetSwatTalkSfx(CPed *ped, int16 sound)
{
- uint32 sfx;
- switch(sound) {
- case SOUND_PED_COP_HELIPILOTPHRASE: GetPhrase(sfx, ped->m_lastComment, 3285, 7); break;
- case SOUND_PED_COP_UNK_129: GetPhrase(sfx, ped->m_lastComment, 3292, 4); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3282, 3); break;
- default: return GetGenericMaleTalkSfx(ped, sound);
- }
- sfx += 14 * (m_sQueueSample.m_nEntityIndex % 3);
- return sfx;
+ return NO_SAMPLE;
+ //uint32 sfx;
+ //switch(sound) {
+ //case SOUND_PED_COP_HELIPILOTPHRASE: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_COP_HELIPILOTPHRASE_1, 7); break;
+ //case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_COP_TARGETING_1, 4); break;
+ //case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_SWAT_VOICE_1_DODGE_1, 3); break;
+ //default: return GetGenericMaleTalkSfx(ped, sound);
+ //}
+ //sfx += (SFX_SWAT_VOICE_2_DODGE_1 - SFX_SWAT_VOICE_1_DODGE_1) * (m_sQueueSample.m_nEntityIndex % 3);
+ //return sfx;
}
uint32
cAudioManager::GetFBITalkSfx(CPed *ped, int16 sound)
{
- uint32 sfx;
- switch(sound) {
- case SOUND_PED_COP_UNK_129: GetPhrase(sfx, ped->m_lastComment, 3240u, 4u); break;
- case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, 3237u, 3u); break;
- case SOUND_PED_GUNAIMEDAT2: sfx = 3236; break;
- case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, 3228u, 4u); break;
- case SOUND_PED_CRASH_VEHICLE:
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3232u, 4u); break;
- default: return GetGenericMaleTalkSfx(ped, sound);
- }
- sfx += 16 * (m_sQueueSample.m_nEntityIndex % 3);
- return sfx;
+ return NO_SAMPLE;
+// uint32 sfx;
+// switch(sound) {
+//#ifdef FIX_BUGS
+// case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_TARGETING_1, 6); break;
+//#else
+// case SOUND_PED_COP_TARGETING: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_TARGETING_1, 4); break;
+//#endif
+// case SOUND_PED_COP_MANYCOPSAROUND: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_COP_MANYCOPSAROUND_1, 3); break;
+// case SOUND_PED_GUNAIMEDAT2: sfx = SFX_FBI_VOICE_1_GUNAIMEDAT2_1; break;
+// case SOUND_PED_GUNAIMEDAT3: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_GUNAIMEDAT3_1, 4); break;
+// case SOUND_PED_CRASH_VEHICLE:
+// case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_FBI_VOICE_1_CAR_CRASH_1, 4); break;
+// default: return GetGenericMaleTalkSfx(ped, sound);
+// }
+//#ifdef FIX_BUGS
+// sfx += (SFX_FBI_VOICE_2_GUNAIMEDAT3_1 - SFX_FBI_VOICE_1_GUNAIMEDAT3_1) * (m_sQueueSample.m_nEntityIndex % 3);
+//#else
+// sfx += 16 * (m_sQueueSample.m_nEntityIndex % 3);
+//#endif
+// return sfx;
}
uint32
@@ -5734,12 +5690,11 @@ cAudioManager::GetMedicTalkSfx(CPed *ped, int16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 3162, 6); break;
- case SOUND_PED_HEALING: GetPhrase(sfx, ped->m_lastComment, 3178, 17); break;
- case SOUND_PED_LEAVE_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3168, 10); break; // SFX_MEDIC_VOICE_1_GET_OUT_VAN_CHAT_1
+ case SOUND_PED_HEALING: GetPhrase(sfx, ped->m_lastComment, SFX_AMBULAN_VOICE_1_VICTIM_1, 17); break;
+ case SOUND_PED_LEAVE_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_AMBULAN_VOICE_1_VAN_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- sfx += 33 * (m_sQueueSample.m_nEntityIndex % 2);
+ sfx += (SFX_AMBULAN_VOICE_2_VAN_1 - SFX_AMBULAN_VOICE_1_VAN_1) * (m_sQueueSample.m_nEntityIndex % 2);
return sfx;
}
@@ -5755,46 +5710,52 @@ cAudioManager::GetDefaultTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 2033, 12); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 2045, 12); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 2075, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 2098, 4); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 2108, 5); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 2004, 16); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1979, 19); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 2079, 19); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 2020, 13); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 1939, 15); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 1898, 16); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 2070, 5); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 1998, 6); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 2102, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 1914, 25); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1954, 25); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_GUN_THREATENED_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_JACKED_CAR_1, 2); break;
+ case SOUND_PED_ROBBED:
+ case SOUND_PED_ACCIDENTREACTION1:
+ case SOUND_PED_TAXI_WAIT:
+ case SOUND_PED_EVADE:
+ case SOUND_PED_FLEE_RUN:
+ case SOUND_PED_CRASH_VEHICLE:
+ case SOUND_PED_WAIT_DOUBLEBACK:
+#ifdef FIX_BUGS
+ case SOUND_PED_CHAT_SEXY_MALE:
+#else
+ case SOUND_PED_CHAT_SEXY_FEMALE:
+#endif
+ GetPhrase(sfx, ped->m_lastComment, NO_SAMPLE, 0);
+ break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_FIGHT_1, 3); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_CRASH_CAR_1, 2); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_DRIVER_BLOCKED_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_SHOCKED_1, 1); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_BUMP_1, 3); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE01_CHAT_1, 4); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
}
-
+/*
uint32
cAudioManager::GetHFYSTTalkSfx(CPed *ped, int16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5736, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 5747, 4); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 5755, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5741, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5753, 2); break;
- case SOUND_PED_TAXI_WAIT: return 5759;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5722, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5712, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5729, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5695, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5678, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5751, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5685, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5703, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_JACKING_1, 4); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_MUGGING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_MUGGED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYST_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYST_CHAT_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -5806,18 +5767,18 @@ cAudioManager::GetHFOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 4382, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4388, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4398, 3); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4401, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4363, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4353, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4371, 11); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4334, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4313, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4396, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4322, 12); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4342, 11); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_GUN_COOL_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_MUGGED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_GENERIC_CRASH_1, 11); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_BLOCKED_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_BUMP_1, 12); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOST_CHAT_1, 11); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -5829,16 +5790,16 @@ cAudioManager::GetHMYSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7961, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7971;
- case SOUND_PED_TAXI_WAIT: return 7974;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7946, 6); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7967, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7954, 7); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 7952, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7972, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7922, 13); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7935, 11); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_GUN_PANIC_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HMYST_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_HMYST_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_DODGE_1, 6); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_BUMP_1, 13); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYST_CHAT_1, 11); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -5850,20 +5811,20 @@ cAudioManager::GetHMOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5820, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 5831, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5825, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5836, 2); break;
- case SOUND_PED_TAXI_WAIT: return 5838;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5805, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5795, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5813, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5777, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5760, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5834, 2); break;
- case SOUND_PED_CHAT_SEXY: return 5804;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5767, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5784, 11); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_JACKING_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_MUGGED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HMOST_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: return SFX_HMOST_EYEING_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOST_CHAT_1, 11); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -5875,19 +5836,19 @@ cAudioManager::GetHFYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6965, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6970, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6978, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6986, 2); break;
- case SOUND_PED_TAXI_WAIT: return 6991;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6948, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6982, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6958, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6940, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6923, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6976, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6988, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6931, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_MUGGED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYRI_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYRI_BUMP_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -5899,20 +5860,20 @@ cAudioManager::GetHFORITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7244, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7250, 9); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7261, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7267;
- case SOUND_PED_TAXI_WAIT: return 7270;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7229, 6); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7263, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7237, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7222, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7206, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7259, 2); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 7235, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7268, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7212, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_JACKED_1, 9); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFORI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFORI_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_DODGE_1, 6); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_BLOCKED_1, 6); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFORI_BUMP_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -5924,17 +5885,17 @@ cAudioManager::GetHMYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5890, 7); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 5905, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5897, 8); break;
- case SOUND_PED_ROBBED: return 5908;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5873, 5); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5864, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5878, 12); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5856, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5839, 7); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5909, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5846, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_GUN_PANIC_1, 7); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_JACKING_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: return SFX_HMYRI_MUGGED_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_FIGHT_1, 5); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_GENERIC_CRASH_1, 12); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_BLOCKED_1, 7); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMYRI_BUMP_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -5947,18 +5908,18 @@ cAudioManager::GetHMORITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4454, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4459, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4469, 3); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4478, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4436, 7); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 4472, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4443, 11); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4422, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4403, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4467, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4411, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4428, 8); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_MUGGED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_DODGE_1, 7); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_GENERIC_CRASH_1, 11); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMORI_CHAT_1, 8); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -5970,16 +5931,19 @@ cAudioManager::GetHFYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6897, 7); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6904, 7); break;
- case SOUND_PED_TAXI_WAIT: return 6922;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6878, 11); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6889, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6862, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6911, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6920, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6854, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 6868, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_GUN_PANIC_1, 7); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_JACKED_1, 7); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYBE_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_DODGE_1, 11); break;
+#ifdef FIX_BUGS // assumption
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_RUN_1, 7); break;
+#endif
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_CAR_CRASH_1, 6); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBE_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -5991,19 +5955,19 @@ cAudioManager::GetHFOBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 1018, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 1023, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: return 1035;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 1038, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1006, 7); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 1031, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 1013, 5); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 990, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 973, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 1029, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 1036, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 979, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 996, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_JACKED_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFOBE_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_DODGE_1, 7); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_GENERIC_CRASH_1, 5); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_BLOCKED_1, 6); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOBE_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6015,20 +5979,20 @@ cAudioManager::GetHMYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4892, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4902, 12); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4917;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 4898, 4); break;
- case SOUND_PED_TAXI_WAIT: return 4920;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4874, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4862, 7); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4882, 10); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4845, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4914, 3); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4869, 5); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 4918, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4835, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4852, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_JACKED_1, 12); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HMYBE_SAVED_1;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_INNOCENT_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HMYBE_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_DODGE_1, 7); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_GENERIC_CRASH_1, 10); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_CAR_CRASH_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_LOST_1, 3); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_EYEING_1, 5); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYBE_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6040,13 +6004,13 @@ cAudioManager::GetHMOBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4703, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4709, 6); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 4706, 3); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4690, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4672, 10); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4699, 4); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4682, 8); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_GUN_PANIC_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_JACKED_1, 6); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_INNOCENT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_DODGE_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_BLOCKED_1, 10); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_EYEING_1, 4); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMOBE_BUMP_1, 8); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
@@ -6060,19 +6024,19 @@ cAudioManager::GetHFYBUTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4771, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 4782, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4776, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4787, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4789;
- case SOUND_PED_TAXI_WAIT: return 4790;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4752, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4742, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4759, 12); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4734, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4715, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4785, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4723, 11); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_JACKING_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFYBU_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYBU_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_GENERIC_CRASH_1, 12); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYBU_BUMP_1, 11); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6084,14 +6048,18 @@ cAudioManager::GetHFYMDTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6014, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6019, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6021, 3); break;
- case SOUND_PED_TAXI_WAIT: return 8231;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 6005, 9); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5997, 8); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 6024, 15); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5988, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_GUN_PANIC_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_SAVED_1, 3); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYMD_TAXI_1;
+#else
+ case SOUND_PED_TAXI_WAIT: return SFX_BFOBE_TAXI_1;
+#endif
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_FIGHT_1, 9); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_DODGE_1, 8); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_SOLICIT_1, 15); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYMD_BUMP_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6103,14 +6071,18 @@ cAudioManager::GetHFYCGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4808, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4813, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4819;
- case SOUND_PED_TAXI_WAIT: return 8231;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4800, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 4815, 4); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 4820, 14); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4791, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_GUN_PANIC_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFYCG_SAVED_1;
+#ifdef FIX_BUGS
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYCG_TAXI_1;
+#else
+ case SOUND_PED_TAXI_WAIT: return SFX_BFOBE_TAXI_1;
+#endif
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_RUN_1, 4); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_SOLICIT_1, 14); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYCG_BUMP_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6122,17 +6094,17 @@ cAudioManager::GetHFYPRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5964, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5970, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5972;
- case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, 5956, 8); break;
- case SOUND_PED_TAXI_WAIT: return 5987;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5946, 10); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5934, 9); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 5973, 14); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 5943, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5912, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5922, 12); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_GUN_COOL_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFYPR_SAVED_1;
+ case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_FUCKING_1, 8); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HFYPR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_FIGHT_1, 10); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_DODGE_1, 9); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_SOLICIT_1, 14); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_EYEING_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFYPR_CHAT_1, 12); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6144,15 +6116,15 @@ cAudioManager::GetHFOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 4660, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4665, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4667;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4670, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4654, 6); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4646, 8); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 4668, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4623, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4634, 12); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_GUN_COOL_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_HFOTR_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_FIGHT_1, 6); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_DODGE_1, 8); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HFOTR_CHAT_1, 12); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6164,15 +6136,15 @@ cAudioManager::GetHMOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 4515, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 4521, 2); break;
- case SOUND_PED_TAXI_WAIT: return 4534;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4508, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4497, 11); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 4526, 8); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 4523, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4480, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4488, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_GUN_COOL_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HMOTR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_DODGE_1, 11); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_SOLICIT_1, 8); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOTR_CHAT_1, 9); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6184,21 +6156,21 @@ cAudioManager::GetHMYAPTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4591, 7); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 4605, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4598, 7); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4611, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 4619, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4621, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4573, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 4613, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4585, 6); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4555, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4535, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4609, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4582, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4544, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4564, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_GUN_PANIC_1, 7); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_JACKED_1, 7); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_GENERIC_CRASH_1, 6); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_BLOCKED_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_EYEING_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMYAP_CHAT_1, 9); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6210,16 +6182,16 @@ cAudioManager::GetHMOCATalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 3506, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 3521, 11); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3511, 10); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 3532, 7); break;
- case SOUND_PED_TAXI_WAIT: return 3541;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3539, 2); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3486, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3478, 8); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 3504, 2); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3494, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_JACKING_1, 11); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_JACKED_1, 10); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_MUGGED_1, 7); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_HMOCA_TAXI_1;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_RUN_1, 2); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_BLOCKED_1, 8); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_EYEING_1, 2); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HMOCA_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6231,26 +6203,27 @@ cAudioManager::GetBMODKTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6831, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6838, 9); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6847, 2); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 6835, 3); break;
- case SOUND_PED_TAXI_WAIT: return 6853;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6817, 7); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6849, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6824, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6794, 10); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6776, 8); break;
- case SOUND_PED_147:
- GetPhrase(sfx, ped->m_lastComment, 6805, 11);
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_JACKED_1, 9); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_MUGGED_1, 2); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_INNOCENT_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMODK_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_DODGE_1, 7); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_CAR_CRASH_1, 10); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_BLOCKED_1, 8); break;
+ case SOUND_PED_147: // this is some cut behaviour, the guy was selling something
+ GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_UNK_147_1, 11);
+ // what is this? some sort of censorship?
switch(sfx) {
- case 6809:
- case 6810:
- case 6811: GetPhrase(sfx, ped->m_lastComment, 6805, 4); break;
+ case SFX_BMODK_UNK_147_5:
+ case SFX_BMODK_UNK_147_6:
+ case SFX_BMODK_UNK_147_7: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_UNK_147_1, 4); break;
default: break;
}
break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6784, 10); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMODK_BUMP_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6262,20 +6235,20 @@ cAudioManager::GetBMYCRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 6578, 6); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 6594, 12); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 6609, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6588, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6606, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6615, 2); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 6584, 4); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 6563, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6553, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6571, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6544, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6521, 12); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6561, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6533, 11); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_GUN_COOL_1, 6); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_JACKING_1, 12); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_MUGGING_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_MUGGED_1, 3); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_SAVED_1, 2); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_INNOCENT_1, 4); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_BLOCKED_1, 12); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYCR_BUMP_1, 11); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6287,19 +6260,19 @@ cAudioManager::GetBFYSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7184, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7188, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7195, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 7203, 2); break;
- case SOUND_PED_TAXI_WAIT: return 7205;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7167, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7197, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7176, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7149, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7132, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7193, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7140, 9); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7158, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BFYST_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_BUMP_1, 9); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYST_CHAT_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6311,19 +6284,19 @@ cAudioManager::GetBFOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7046, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7051, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7061, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 7067, 2); break;
- case SOUND_PED_TAXI_WAIT: return 7069;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7027, 11); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7063, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7038, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7009, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6992, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7059, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6999, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7017, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BFOST_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_DODGE_1, 11); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOST_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6335,19 +6308,23 @@ cAudioManager::GetBMYSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 6413, 6); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 6427, 4); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 6433, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6419, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6431, 2); break;
- case SOUND_PED_TAXI_WAIT: return 6437;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 6400, 6); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6392, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6406, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6371, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6352, 8); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6360, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 6380, 12); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_GUN_COOL_1, 6); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_JACKING_1, 4); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_MUGGING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_MUGGED_1, 2); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_TAXI_1, 2); break;
+#else
+ case SOUND_PED_TAXI_WAIT: return SFX_BMYST_TAXI_1;
+#endif
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_FIGHT_1, 6); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_BLOCKED_1, 8); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYST_CHAT_1, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6359,18 +6336,18 @@ cAudioManager::GetBMOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4292, 9); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4307, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4311;
- case SOUND_PED_TAXI_WAIT: return 4312;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4272, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4258, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4279, 13); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4232, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 4301, 6); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4266, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4215, 17); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4240, 18); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_GUN_PANIC_1, 9); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_MUGGED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BMOST_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMOST_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_GENERIC_CRASH_1, 13); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_LOST_1, 6); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_EYEING_1, 6); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_BUMP_1, 17); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOST_CHAT_1, 18); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6382,21 +6359,21 @@ cAudioManager::GetBFYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6161, 4); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 6173, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6165, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6179, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6188, 2); break;
- case SOUND_PED_TAXI_WAIT: return 6194;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6143, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6182, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6154, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6135, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6117, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6177, 2); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 6151, 3); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6190, 4); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6126, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_MUGGED_1, 3); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BFYRI_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_BLOCKED_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_EYEING_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_SHOCKED_1, 4); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFYRI_BUMP_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6408,19 +6385,19 @@ cAudioManager::GetBFORITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7110, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7115, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7121, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7127;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 7130, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7094, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7123, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7103, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7087, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7070, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7119, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7128, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7078, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_JACKED_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BFORI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFORI_BUMP_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6433,20 +6410,20 @@ cAudioManager::GetBMYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5430, 7); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5437, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5443, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5449;
- case SOUND_PED_TAXI_WAIT: return 5453;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5414, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 5445, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5423, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5407, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5394, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5441, 2); break;
- case SOUND_PED_CHAT_SEXY: return 5422;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5450, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5400, 7); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_GUN_PANIC_1, 7); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_JACKED_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BMYRI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMYRI_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_BLOCKED_1, 6); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: return SFX_BMYRI_EYEING_1;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYRI_BUMP_1, 7); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6458,20 +6435,28 @@ cAudioManager::GetBFYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 6255, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6261, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6273, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6284, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 6290, 3); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6233, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6278, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6247, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6207, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6195, 12); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6269, 4); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6243, 4); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6286, 4); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 6217, 16); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_GUN_COOL_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_MUGGED_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_TAXI_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_GENERIC_CRASH_1, 8); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_CAR_CRASH_1, 10); break;
+#else
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_CAR_CRASH_1, 8); break;
+#endif
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_BLOCKED_1, 12); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_LOST_1, 4); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_EYEING_1, 4); break;
+#else
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_EYEING_1, 4); break;
+#endif
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_SHOCKED_1, 4); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYBE_CHAT_1, 16); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6483,21 +6468,21 @@ cAudioManager::GetBMYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 956, 4); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 966, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 960, 6); break;
- case SOUND_PED_ROBBED: return 970;
- case SOUND_PED_ACCIDENTREACTION1: return 971;
- case SOUND_PED_TAXI_WAIT: return 972;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 940, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 928, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 948, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 910, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 892, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 969;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 938, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 900, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 918, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_GUN_COOL_1, 4); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_JACKING_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: return SFX_BMYBE_MUGGED_1;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BMYBE_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMYBE_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_BMYBE_LOST_1;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBE_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6506,22 +6491,21 @@ cAudioManager::GetBMYBETalkSfx(CPed *ped, int16 sound)
uint32
cAudioManager::GetBFOBETalkSfx(CPed *ped, int16 sound)
{
-
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 8213, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 8223, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 8218, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 8227, 2); break;
- case SOUND_PED_TAXI_WAIT: return 8231;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8197, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 8206, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 8182, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 8166, 8); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 8229, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 8174, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 8189, 8); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_MUGGED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BFOBE_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_BLOCKED_1, 8); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOBE_CHAT_1, 8); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6533,18 +6517,18 @@ cAudioManager::GetBMOBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7611, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7616, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7622, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 7626, 3); break;
- case SOUND_PED_TAXI_WAIT: return 7632;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 7594, 10); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7583, 11); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7604, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7564, 9); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7629, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7559, 5); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7573, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_MUGGED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_SAVED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMOBE_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_FIGHT_1, 10); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_DODGE_1, 11); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_CAR_CRASH_1, 9); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_BUMP_1, 5); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOBE_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6556,20 +6540,20 @@ cAudioManager::GetBMYBUTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5500, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5507, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5513, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5515;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 5505, 2); break;
- case SOUND_PED_TAXI_WAIT: return 5518;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5488, 5); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5476, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5493, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5469, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5454, 8); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 5486, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5516, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5462, 7); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BMYBU_SAVED_1;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_INNOCENT_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMYBU_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_FIGHT_1, 5); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_BLOCKED_1, 8); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBU_BUMP_1, 7); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6581,17 +6565,17 @@ cAudioManager::GetBFYPRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5369, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5374, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5376;
- case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, 5362, 7); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 5392, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5355, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5348, 7); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 5379, 13); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5377, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5324, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5335, 13); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_GUN_COOL_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BFYPR_SAVED_1;
+ case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_FUCKING_1, 7); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_DODGE_1, 7); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_SOLICIT_1, 13); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFYPR_CHAT_1, 13); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6603,17 +6587,17 @@ cAudioManager::GetBFOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5232, 6); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 5240, 3); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5238, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5243;
- case SOUND_PED_TAXI_WAIT: return 5252;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5226, 6); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5217, 9); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 5247, 5); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5244, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5192, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5202, 15); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_GUN_COOL_1, 6); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_MUGGING_1, 3); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BFOTR_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_BFOTR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_FIGHT_1, 6); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_DODGE_1, 9); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_SOLICIT_1, 5); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BFOTR_CHAT_1, 15); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6625,16 +6609,16 @@ cAudioManager::GetBMOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 6327, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6343, 1); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 6332, 4); break;
- case SOUND_PED_TAXI_WAIT: return 6351;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6313, 11); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6336, 7); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 6344, 7); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6324, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6293, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 6303, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_GUN_COOL_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_SAVED_1, 1); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_INNOCENT_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_BMOTR_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_DODGE_1, 11); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_RUN_1, 7); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_SOLICIT_1, 7); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_EYEING_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMOTR_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6646,19 +6630,19 @@ cAudioManager::GetBMYPITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 4033, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 4044, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4038, 6); break;
- case SOUND_PED_ROBBED: return 4048;
- case SOUND_PED_ACCIDENTREACTION1: return 4049;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4050, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4012, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3998, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4020, 13); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3993, 5); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3978, 6); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4008, 4); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3984, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: return SFX_BMYPI_MUGGED_1;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_BMYPI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_GENERIC_CRASH_1, 13); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_CAR_CRASH_1, 5); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_BLOCKED_1, 6); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_EYEING_1, 4); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYPI_BUMP_1, 9); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6670,25 +6654,25 @@ cAudioManager::GetBMYBBTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 639, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 659, 9); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 691, 8); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 648, 11); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 686, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 699, 6); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 644, 4); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 711, 3); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 618, 12); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 584, 18); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 630, 9); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 554, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 524, 13); break;
- case SOUND_PED_149: GetPhrase(sfx, ped->m_lastComment, 668, 16); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 684, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 602, 16); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 705, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 537, 17); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 563, 21); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_JACKING_1, 9); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_MUGGING_1, 8); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_JACKED_1, 11); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_MUGGED_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_SAVED_1, 6); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_INNOCENT_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_TAXI_1, 3); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_FIGHT_1, 12); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_DODGE_1, 18); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_GENERIC_CRASH_1, 9); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_BLOCKED_1, 13); break;
+ case SOUND_PED_JEER: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_JEER_1, 16); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_EYEING_1, 16); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_SHOCKED_1, 6); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_BUMP_1, 17); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BMYBB_CHAT_1, 21); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6700,16 +6684,16 @@ cAudioManager::GetWMYCRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5056, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 5061, 6); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 5070, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5067, 3); break;
- case SOUND_PED_TAXI_WAIT: return 5075;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5040, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5030, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5047, 9); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5021, 9); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5003, 18); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_JACKING_1, 6); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_MUGGING_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_MUGGED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMYCR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_GENERIC_CRASH_1, 9); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_CAR_CRASH_1, 9); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCR_BUMP_1, 18); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6721,21 +6705,21 @@ cAudioManager::GetWFYSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 8445, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 8456, 4); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 8463, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 8450, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 8461, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 8467;
- case SOUND_PED_TAXI_WAIT: return 8468;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 8430, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8420, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 8437, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 8402, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 8386, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 8460;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 8392, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 8410, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_JACKING_1, 4); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_MUGGING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYST_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYST_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_BLOCKED_1, 6); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_WFYST_LOST_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYST_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6747,19 +6731,19 @@ cAudioManager::GetWFOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 8354, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 8358, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 8369, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 8381, 4); break;
- case SOUND_PED_TAXI_WAIT: return 8385;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8332, 12); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 8374, 7); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 8344, 10); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 8305, 11); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 8274, 12); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 8366, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 8286, 19); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 8316, 16); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_MUGGED_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_SAVED_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFOST_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_DODGE_1, 12); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_RUN_1, 7); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_GENERIC_CRASH_1, 10); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_CAR_CRASH_1, 11); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_BLOCKED_1, 12); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_LOST_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_BUMP_1, 19); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOST_CHAT_1, 16); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6771,22 +6755,22 @@ cAudioManager::GetWMYSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 3947, 5); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 3963, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3955, 5); break;
- case SOUND_PED_ROBBED: return 3962;
- case SOUND_PED_ACCIDENTREACTION1: return 3975;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 3952, 3); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 3976, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3930, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3968, 7); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3942, 5); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3912, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3893, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 3960, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 3940, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3901, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3920, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_GUN_PANIC_1, 5); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_MUGGING_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: return SFX_WMYST_MUGGED_1;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMYST_SAVED_1;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_INNOCENT_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_RUN_1, 7); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_GENERIC_CRASH_1, 5); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYST_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6798,22 +6782,22 @@ cAudioManager::GetWMOSTTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 5170, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5178, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5188, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5190;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 5175, 3); break;
- case SOUND_PED_TAXI_WAIT: return 5191;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5155, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5145, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5163, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5129, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5111, 8); break;
- case SOUND_PED_149: GetPhrase(sfx, ped->m_lastComment, 5182, 4); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5186, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 5153, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5119, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5136, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_JACKED_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMOST_SAVED_1;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_INNOCENT_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMOST_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_BLOCKED_1, 8); break;
+ case SOUND_PED_JEER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_JEER_1, 4); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOST_CHAT_1, 9); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6825,20 +6809,20 @@ cAudioManager::GetWFYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5299, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5304, 7); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5313, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5320;
- case SOUND_PED_TAXI_WAIT: return 5323;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5280, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 5315, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5291, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5271, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5253, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5311, 2); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 5289, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5321, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5261, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_JACKED_1, 7); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYRI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYRI_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYRI_BUMP_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6850,19 +6834,19 @@ cAudioManager::GetWFORITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7825, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7831, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7839, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7842;
- case SOUND_PED_TAXI_WAIT: return 7846;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 7810, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7799, 11); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7817, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7789, 10); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7771, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7837, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7843, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7778, 11); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_MUGGED_1, 3); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFORI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFORI_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_DODGE_1, 11); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_CAR_CRASH_1, 10); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFORI_BUMP_1, 11); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6874,19 +6858,22 @@ cAudioManager::GetWMYRITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4186, 8); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4194, 8); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4208;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 4213, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4163, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 4203, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4175, 11); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4144, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 4126, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 4202;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4172, 3); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 4209, 4); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4136, 8); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_GUN_PANIC_1, 8); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_JACKED_1, 8); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMYRI_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_GENERIC_CRASH_1, 11); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_BLOCKED_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_WMYRI_LOST_1;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_EYEING_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_SHOCKED_1, 4); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_BUMP_1, 8); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYRI_CHAT_1, 10); break;
+#endif
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6898,20 +6885,20 @@ cAudioManager::GetWMORITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6668, 9); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6677, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6685, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6701, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 6707, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6647, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6689, 12); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6660, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6641, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6617, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6683, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6657, 3); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6703, 4); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6627, 14); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_GUN_PANIC_1, 9); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_MUGGED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_RUN_1, 12); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_BLOCKED_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_EYEING_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_SHOCKED_1, 4); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMORI_BUMP_1, 14); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6923,18 +6910,18 @@ cAudioManager::GetWFYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7752, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7757, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7766;
- case SOUND_PED_TAXI_WAIT: return 7770;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7738, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7761, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7746, 6); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7722, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7704, 7); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7767, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7711, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7728, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_JACKED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYBE_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYBE_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_GENERIC_CRASH_1, 6); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_BLOCKED_1, 7); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBE_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6946,20 +6933,20 @@ cAudioManager::GetWMYBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 8127, 8); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 8142, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 8135, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8105, 12); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 8155, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 8119, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 8086, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 8063, 9); break;
- case SOUND_PED_149: GetPhrase(sfx, ped->m_lastComment, 8145, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 8152, 3); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 8117, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 8160, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 8072, 14); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 8094, 11); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_GUN_PANIC_1, 8); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_JACKING_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_JACKED_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_DODGE_1, 12); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_BLOCKED_1, 9); break;
+ case SOUND_PED_JEER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_JEER_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_LOST_1, 3); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_SHOCKED_1, 6); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_BUMP_1, 14); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBE_CHAT_1, 11); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -6971,18 +6958,18 @@ cAudioManager::GetWFOBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6093, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6098, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6109, 3); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 6115, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6075, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 6102, 7); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6083, 10); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6058, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6040, 8); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 6112, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6048, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 6065, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_JACKED_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_SAVED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_RUN_1, 7); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_GENERIC_CRASH_1, 10); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_BLOCKED_1, 8); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOBE_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -6994,21 +6981,21 @@ cAudioManager::GetWMOBETalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 3759, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 3772, 4); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 3792, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3764, 8); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 3802, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3742, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3798, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3752, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3724, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3706, 6); break;
- case SOUND_PED_149: GetPhrase(sfx, ped->m_lastComment, 3776, 16); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 3750, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 3804, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3712, 12); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3732, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_JACKING_1, 4); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_MUGGING_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_JACKED_1, 8); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_SAVED_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_BLOCKED_1, 6); break;
+ case SOUND_PED_JEER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_JEER_1, 16); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_BUMP_1, 12); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7020,21 +7007,24 @@ cAudioManager::GetWMYCWTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5650, 6); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 5670, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 5659, 6); break;
- case SOUND_PED_ROBBED: return 5676;
- case SOUND_PED_TAXI_WAIT: return 5677;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5635, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5622, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 5643, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 5598, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5580, 9); break;
- case SOUND_PED_149: GetPhrase(sfx, ped->m_lastComment, 5665, 5); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5674, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 5632, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5589, 9); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5607, 15); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: return SFX_WMYCW_MUGGED_1;
+#ifdef FIX_BUGS
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_INNOCENT_1, 3); break;
+#endif
+ case SOUND_PED_TAXI_WAIT: return SFX_WMYCW_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_BLOCKED_1, 9); break;
+ case SOUND_PED_JEER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_JEER_1, 5); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_EYEING_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_BUMP_1, 9); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYCW_CHAT_1, 15); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7046,19 +7036,19 @@ cAudioManager::GetWMYGOTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7679, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7684, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7690, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7698;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 7701, 3); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7659, 11); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7692, 6); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7672, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7642, 7); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 7670, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7699, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7633, 9); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7649, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMYGO_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_TAXI_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_DODGE_1, 11); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_RUN_1, 6); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_CAR_CRASH_1, 7); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_BUMP_1, 9); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYGO_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7070,18 +7060,18 @@ cAudioManager::GetWFOGOTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7904, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7909, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7915, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7919;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 7883, 14); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7874, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7917, 2); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7897, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7855, 8); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7920, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7847, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7863, 11); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFOGO_SAVED_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_FIGHT_1, 14); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_RUN_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_CAR_CRASH_1, 8); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOGO_CHAT_1, 11); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7093,19 +7083,19 @@ cAudioManager::GetWMOGOTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 4982, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 4987, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4998;
- case SOUND_PED_TAXI_WAIT: return 5002;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4961, 13); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4947, 12); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 4993, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 4974, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 4929, 9); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 4959, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 4999, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4921, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4938, 9); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_GUN_PANIC_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_JACKED_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMOGO_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMOGO_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_FIGHT_1, 13); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_DODGE_1, 12); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_CAR_CRASH_1, 9); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOGO_CHAT_1, 9); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7117,13 +7107,13 @@ cAudioManager::GetWFYLGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 8267, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: return 8272;
- case SOUND_PED_TAXI_WAIT: return 8273;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 8260, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8252, 8); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 8232, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 8242, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYLG_GUN_COOL_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYLG_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYLG_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYLG_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYLG_DODGE_1, 8); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYLG_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYLG_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7135,13 +7125,13 @@ cAudioManager::GetWMYLGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 3698, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: return 3704;
- case SOUND_PED_TAXI_WAIT: return 3705;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 3691, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3682, 9); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3662, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3672, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WMYLG_GUN_COOL_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMYLG_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMYLG_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYLG_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYLG_DODGE_1, 9); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYLG_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYLG_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7153,15 +7143,15 @@ cAudioManager::GetWFYBUTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7309, 8); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 7317, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7325, 4); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 7340, 2); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7329, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 7301, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7292, 9); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7337, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7271, 21); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_GUN_PANIC_1, 8); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_MUGGED_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_TAXI_1, 2); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_RUN_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_CAR_CRASH_1, 9); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYBU_BUMP_1, 21); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7173,22 +7163,26 @@ cAudioManager::GetWMYBUTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 3862, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3870, 5); break;
- case SOUND_PED_ROBBED: return 3880;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 3884, 2); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 3868, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 3891, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3845, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3881, 3); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3857, 5); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3826, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3706, 6); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 3875, 5); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 3855, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 3886, 5); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3815, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3835, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: return SFX_WMYBU_MUGGED_1;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_SAVED_1, 2); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_INNOCENT_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_RUN_1, 3); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_GENERIC_CRASH_1, 5); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_CAR_CRASH_1, 9); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_BLOCKED_1, 9); break;
+#else
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBE_BLOCKED_1, 6); break;
+#endif
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_LOST_1, 5); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_SHOCKED_1, 5); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYBU_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7200,19 +7194,19 @@ cAudioManager::GetWMOBUTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 6753, 6); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6759, 7); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6769, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6771, 3); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 6774, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 6743, 3); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6733, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6746, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6726, 7); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6709, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 6766, 3); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6741, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6716, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_JACKED_1, 7); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_SAVED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_FIGHT_1, 3); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_CAR_CRASH_1, 7); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_LOST_1, 3); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOBU_BUMP_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7224,16 +7218,16 @@ cAudioManager::GetWFYPRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 4101, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 4107, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 4109;
- case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, 4096, 5); break;
- case SOUND_PED_TAXI_WAIT: return 4125;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 4087, 9); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 4077, 10); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 4110, 15); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 4052, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 4063, 14); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_GUN_COOL_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYPR_SAVED_1;
+ case SOUND_PED_PLAYER_BEFORESEX: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_FUCKING_1, 5); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYPR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_FIGHT_1, 9); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_DODGE_1, 10); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_SOLICIT_1, 15); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYPR_CHAT_1, 14); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7245,14 +7239,14 @@ cAudioManager::GetWFOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 7371, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7383;
- case SOUND_PED_TAXI_WAIT: return 7393;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7362, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7377, 6); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 7384, 9); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7342, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7353, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_GUN_COOL_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFOTR_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFOTR_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_RUN_1, 6); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_SOLICIT_1, 9); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOTR_CHAT_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7264,16 +7258,16 @@ cAudioManager::GetWMOTRTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 7542, 5); break;
- case SOUND_PED_ACCIDENTREACTION1: return 7547;
- case SOUND_PED_TAXI_WAIT: return 7558;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 7536, 6); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7517, 17); break;
- case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, 7551, 7); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 7534, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7548, 3); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7494, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7504, 13); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_GUN_COOL_1, 5); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMOTR_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMOTR_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_FIGHT_1, 6); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_DODGE_1, 17); break;
+ case SOUND_PED_SOLICIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_SOLICIT_1, 7); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_SHOCKED_1, 3); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMOTR_CHAT_1, 13); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7285,20 +7279,24 @@ cAudioManager::GetWMYPITalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 6496, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 6509, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 6503, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 6513, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 6515, 2); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 6501, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 6517, 4); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 6479, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 6465, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 6488, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 6457, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 6439, 8); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 6473, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 6447, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_SAVED_1, 2); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_INNOCENT_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_TAXI_1, 4); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_FIGHT_1, 9); break;
+#else
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_FIGHT_1, 7); break;
+#endif
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_BLOCKED_1, 8); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_EYEING_1, 6); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYPI_BUMP_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7310,19 +7308,19 @@ cAudioManager::GetWMOCATalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 8032, 6); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 8048, 11); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 8038, 10); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 8059, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 8061;
- case SOUND_PED_TAXI_WAIT: return 8062;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 8015, 8); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 8003, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 8023, 9); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 7993, 10); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 7975, 12); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 8013, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7987, 6); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_GUN_PANIC_1, 6); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_JACKING_1, 11); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_JACKED_1, 10); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMOCA_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMOCA_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_FIGHT_1, 8); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_GENERIC_CRASH_1, 9); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_CAR_CRASH_1, 10); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_BLOCKED_1, 12); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMOCA_BUMP_1, 6); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7333,12 +7331,12 @@ cAudioManager::GetWFYJGTalkSfx(CPed *ped, int16 sound)
{
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 7414, 4); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 7424; break;
- case SOUND_PED_TAXI_WAIT: sfx = 7425; break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7406, 8); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7418, 6); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7394, 12); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYJG_GUN_PANIC_1, 4); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_WFYJG_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: sfx = SFX_WFYJG_TAXI_1; break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYJG_DODGE_1, 8); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYJG_RUN_1, 6); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYJG_BUMP_1, 12); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7350,14 +7348,14 @@ cAudioManager::GetWMYJGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5098, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5102, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 5109;
- case SOUND_PED_TAXI_WAIT: return 5110;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 5104, 5); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 5076, 10); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 5096, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5086, 10); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_GUN_PANIC_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WMYJG_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMYJG_TAXI_1;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_RUN_1, 5); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_BLOCKED_1, 10); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYJG_BUMP_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7369,14 +7367,14 @@ cAudioManager::GetWFYSKTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 3652, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 3657, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 3659, 2); break;
- case SOUND_PED_TAXI_WAIT: return 3661;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 3641, 11); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3632, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3603, 11); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3614, 18); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_GUN_PANIC_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYSK_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_FIGHT_1, 11); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_DODGE_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_BLOCKED_1, 11); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSK_BUMP_1, 18); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7388,18 +7386,18 @@ cAudioManager::GetWMYSKTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 5563, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 5573, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 5575, 2); break;
- case SOUND_PED_UNK_126: GetPhrase(sfx, ped->m_lastComment, 5568, 3); break;
- case SOUND_PED_TAXI_WAIT: return 5579;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 5558, 5); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 5546, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 5571, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 5556, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 5577, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 5519, 14); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 5533, 13); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_GUN_PANIC_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_SAVED_1, 2); break;
+ case SOUND_PED_INNOCENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_INNOCENT_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WMYSK_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_FIGHT_1, 5); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_DODGE_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_BUMP_1, 14); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WMYSK_CHAT_1, 13); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7411,16 +7409,16 @@ cAudioManager::GetWFYSHTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 7459, 9); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 7470, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 7483, 4); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 7492, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 7448, 11); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 7472, 11); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 7468, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 7487, 5); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 7426, 12); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 7438, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_GUN_COOL_1, 9); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_SAVED_1, 4); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_DODGE_1, 11); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_RUN_1, 11); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_SHOCKED_1, 5); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_BUMP_1, 12); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYSH_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7432,16 +7430,16 @@ cAudioManager::GetWFOSHTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 3571, 10); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 3583, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 3594, 3); break;
- case SOUND_PED_TAXI_WAIT: return 3602;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3561, 10); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3585, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 3581, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 3597, 5); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3542, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3552, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_GUN_COOL_1, 10); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_SAVED_1, 3); break;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFOSH_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_DODGE_1, 10); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_RUN_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_LOST_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_SHOCKED_1, 5); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFOSH_CHAT_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7453,20 +7451,20 @@ cAudioManager::GetJFOTOTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 811, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 815, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 821, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 828, 2); break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 831, 2); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 796, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 823, 5); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 805, 6); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 775, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 757, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 820;
- case SOUND_PED_CHAT_EVENT: return 830;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 765, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 783, 13); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_SAVED_1, 2); break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_TAXI_1, 2); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_RUN_1, 5); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_GENERIC_CRASH_1, 6); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_JFOTO_LOST_1;
+ case SOUND_PED_CHAT_EVENT: return SFX_JFOTO_SHOCKED_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_JFOTO_CHAT_1, 13); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7478,20 +7476,20 @@ cAudioManager::GetJMOTOTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, 874, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 878, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 883, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 889;
- case SOUND_PED_TAXI_WAIT: return 891;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 862, 6); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 885, 4); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 868, 6); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 849, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 833, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 882;
- case SOUND_PED_CHAT_EVENT: return 890;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 841, 8); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 855, 7); break;
+ case SOUND_PED_HANDS_COWER: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_GUN_PANIC_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_JACKED_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_JMOTO_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_JMOTO_TAXI_1;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_DODGE_1, 6); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_RUN_1, 4); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_GENERIC_CRASH_1, 6); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_JMOTO_LOST_1;
+ case SOUND_PED_CHAT_EVENT: return SFX_JMOTO_SHOCKED_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_BUMP_1, 8); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_JMOTO_CHAT_1, 7); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
return sfx;
@@ -7503,24 +7501,24 @@ cAudioManager::GetCBTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 2178, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 2187, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 2183, 4); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 2194, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 2196; break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 2197, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 2161, 9); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 2150, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 2170, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 2132, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 2113, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 2192, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 2159, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 2121, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 2140, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_JACKING_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_JACKED_1, 4); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_CUBAN_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_FIGHT_1, 9); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_CAR_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_GANG_1_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 86 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_CUBAN_GANG_2_BLOCKED_1 - SFX_CUBAN_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7529,24 +7527,24 @@ cAudioManager::GetHNTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 2692, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 2703, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 2697, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 2711, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 2714; break;
- case SOUND_PED_TAXI_WAIT: sfx = 2715; break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 2673, 10); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 2661, 10); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 2683, 9); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 2638, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 2617, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 2707, 4); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 2671, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 2626, 12); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 2647, 14); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_MUGGED_1, 3); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_HAITIAN_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: sfx = SFX_HAITIAN_GANG_1_TAXI_1; break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_FIGHT_1, 10); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_DODGE_1, 10); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_GENERIC_CRASH_1, 9); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_BLOCKED_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_LOST_1, 4); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_BUMP_1, 12); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_HAITIAN_GANG_1_CHAT_1, 14); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 99 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_HAITIAN_GANG_2_BLOCKED_1 - SFX_HAITIAN_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7555,27 +7553,27 @@ cAudioManager::GetSGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 1104, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 1114, 5); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 1124, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 1109, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 1121, 3); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 1129; break;
- case SOUND_PED_TAXI_WAIT: sfx = 1132; break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 1088, 10); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1076, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 1098, 6); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 1058, 6); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 1040, 8); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 1119, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 1085, 3); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 1130, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 1048, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1064, 12); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_JACKING_1, 5); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_MUGGING_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_MUGGED_1, 3); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_STREET_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: sfx = SFX_STREET_GANG_1_TAXI_1; break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_FIGHT_1, 10); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_GENERIC_CRASH_1, 6); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_CAR_CRASH_1, 6); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_BLOCKED_1, 8); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_EYEING_1, 3); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_STREET_GANG_1_CHAT_1, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
// LCS removed for now
-// if(ped->GetModelIndex() == MI_SGB) sfx += 93;
+// if(ped->GetModelIndex() == MI_SGB) sfx += (SFX_STREET_GANG_2_BLOCKED_1 - SFX_STREET_GANG_1_BLOCKED_1);
return sfx;
}
@@ -7585,24 +7583,24 @@ cAudioManager::GetCLTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 1299, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 1310, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 1304, 6); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 1317, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 1319; break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 1320, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 1281, 10); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1266, 13); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 1291, 8); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 1246, 10); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 1226, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 1315, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 1279, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 1236, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1256, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_JACKING_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_JACKED_1, 6); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_CUBAN_LORD_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_FIGHT_1, 10); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_DODGE_1, 13); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_CAR_CRASH_1, 10); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_BLOCKED_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_EYEING_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_CUBAN_LORD_GANG_1_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 96 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_CUBAN_LORD_GANG_2_BLOCKED_1 - SFX_CUBAN_LORD_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7611,18 +7609,18 @@ cAudioManager::GetGDTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 1762, 6); break;
- case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, 1770, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 1755, 7); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1744, 9); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 1768, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 1753, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 1772, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 1724, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1734, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_GUN_COOL_1, 6); break;
+ case SOUND_PED_ACCIDENTREACTION1: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_SAVED_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_FIGHT_1, 7); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_DODGE_1, 9); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_GUARD_DUTY_1_CHAT_1, 10); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 50 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_GUARD_DUTY_2_BUMP_1 - SFX_GUARD_DUTY_1_BUMP_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7631,22 +7629,22 @@ cAudioManager::GetBKTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 2429, 5); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 2442, 4); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 2434, 8); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 2448, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 2450; break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 2451, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 2412, 9); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 2403, 9); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 2421, 8); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 2371, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 2446, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 2381, 10); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 2391, 12); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_GUN_COOL_1, 5); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_JACKING_1, 4); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_JACKED_1, 8); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_BIKER_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_FIGHT_1, 9); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_DODGE_1, 9); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_GENERIC_CRASH_1, 8); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_BLOCKED_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_LOST_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_BUMP_1, 10); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_BIKER_GANG_1_CHAT_1, 12); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 82 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_BIKER_GANG_2_BLOCKED_1 - SFX_BIKER_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7655,25 +7653,25 @@ cAudioManager::GetPGTalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 1561, 4); break;
- case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, 1570, 5); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 1565, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 1577, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: sfx = 1579; break;
- case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, 1582, 2); break;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 1551, 5); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 1542, 7); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 1556, 5); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 1529, 5); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 1514, 10); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 1575, 2); break;
- case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, ped->m_lastComment, 1549, 2); break;
- case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, 1580, 2); break;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 1524, 5); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 1534, 8); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_GUN_COOL_1, 4); break;
+ case SOUND_PED_CAR_JACKING: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_JACKING_1, 5); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: sfx = SFX_PLAYER_GANG_1_SAVED_1; break;
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_TAXI_1, 2); break;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_FIGHT_1, 5); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_DODGE_1, 7); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_GENERIC_CRASH_1, 5); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_CAR_CRASH_1, 5); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_BLOCKED_1, 10); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_LOST_1, 2); break;
+ case SOUND_PED_CHAT_SEXY_MALE: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_SHOCKED_1, 2); break;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_BUMP_1, 5); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_PLAYER_GANG_1_CHAT_1, 8); break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- return 70 * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
+ return (SFX_PLAYER_GANG_2_BLOCKED_1 - SFX_PLAYER_GANG_1_BLOCKED_1) * (m_sQueueSample.m_nEntityIndex % 3) + sfx;
}
uint32
@@ -7683,18 +7681,18 @@ cAudioManager::GetVICETalkSfx(CPed *ped, int16 sound, int16 model)
if(model == MI_VICE6) {
switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, 1894, 3); break;
- case SOUND_PED_MIAMIVICE_EXITING_CAR: return 1897;
+ case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_VICE_VOICE_6_ARREST_1, 3); break;
+ case SOUND_PED_MIAMIVICE_EXITING_CAR: return SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1;
default: return GetGenericMaleTalkSfx(ped, sound);
}
}
switch(sound) {
- case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, 1874, 3); break;
- case SOUND_PED_MIAMIVICE_EXITING_CAR: sfx = 1877; break;
+ case SOUND_PED_ARREST_COP: GetPhrase(sfx, ped->m_lastComment, SFX_VICE_VOICE_1_ARREST_1, 3); break;
+ case SOUND_PED_MIAMIVICE_EXITING_CAR: sfx = SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1; break;
default: return GetGenericMaleTalkSfx(ped, sound);
}
- sfx += 4 * (m_sQueueSample.m_nEntityIndex % 5);
+ sfx += (SFX_VICE_VOICE_2_ARREST_1-SFX_VICE_VOICE_1_ARREST_1) * (m_sQueueSample.m_nEntityIndex % 5);
return sfx;
}
@@ -7704,23 +7702,23 @@ cAudioManager::GetWFYG1TalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 3383, 6); break;
- case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, 3399, 2); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3389, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 3397, 2); break;
- case SOUND_PED_ACCIDENTREACTION1: return 3403;
- case SOUND_PED_TAXI_WAIT: return 3405;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 3372, 4); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3361, 9); break;
- case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, 3401, 2); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3376, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3342, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3324, 7); break;
- case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, 3394, 3); break;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 3370, 2); break;
- case SOUND_PED_CHAT_EVENT: return 3404;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3331, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3351, 10); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_GUN_COOL_1, 6); break;
+ case SOUND_PED_MUGGING: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_MUGGING_1, 2); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_MUGGED_1, 2); break;
+ case SOUND_PED_ACCIDENTREACTION1: return SFX_WFYG1_SAVED_1;
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYG1_TAXI_1;
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_FIGHT_1, 4); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_DODGE_1, 9); break;
+ case SOUND_PED_FLEE_RUN: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_RUN_1, 2); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_BLOCKED_1, 7); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_LOST_1, 3); break;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_EYEING_1, 2); break;
+ case SOUND_PED_CHAT_EVENT: return SFX_WFYG1_SHOCKED_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG1_CHAT_1, 10); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
@@ -7732,38 +7730,42 @@ cAudioManager::GetWFYG2TalkSfx(CPed *ped, int16 sound)
uint32 sfx;
switch(sound) {
- case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, 3464, 3); break;
- case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, 3467, 5); break;
- case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, 3473, 2); break;
- case SOUND_PED_TAXI_WAIT: return 3476;
- case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, 3452, 5); break;
- case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, 3440, 8); break;
- case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, 3457, 7); break;
- case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, 3422, 9); break;
- case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, 3406, 5); break;
- case SOUND_PED_WAIT_DOUBLEBACK: return 3472;
- case SOUND_153: GetPhrase(sfx, ped->m_lastComment, 3448, 4); break;
- case SOUND_PED_CHAT_EVENT: return 3475;
- case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, 3411, 11); break;
- case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, 3431, 9); break;
+ case SOUND_PED_HANDS_UP: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_GUN_COOL_1, 3); break;
+ case SOUND_PED_CAR_JACKED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_JACKED_1, 5); break;
+ case SOUND_PED_ROBBED: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_MUGGED_1, 2); break;
+#ifdef FIX_BUGS
+ case SOUND_PED_TAXI_WAIT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_TAXI_1, 2); break;
+#else
+ case SOUND_PED_TAXI_WAIT: return SFX_WFYG2_TAXI_1;
+#endif
+ case SOUND_PED_ATTACK: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_FIGHT_1, 5); break;
+ case SOUND_PED_EVADE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_DODGE_1, 8); break;
+ case SOUND_PED_CRASH_VEHICLE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_GENERIC_CRASH_1, 7); break;
+ case SOUND_PED_CRASH_CAR: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_CAR_CRASH_1, 9); break;
+ case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_BLOCKED_1, 5); break;
+ case SOUND_PED_WAIT_DOUBLEBACK: return SFX_WFYG2_LOST_1;
+ case SOUND_PED_CHAT_SEXY_FEMALE: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_EYEING_1, 4); break;
+ case SOUND_PED_CHAT_EVENT: return SFX_WFYG2_SHOCKED_1;
+ case SOUND_PED_PED_COLLISION: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_BUMP_1, 11); break;
+ case SOUND_PED_CHAT: GetPhrase(sfx, ped->m_lastComment, SFX_WFYG2_CHAT_1, 9); break;
default: return GetGenericFemaleTalkSfx(ped, sound);
}
return sfx;
}
-
+*/
uint32
cAudioManager::GetGenericMaleTalkSfx(CPed *ped, int16 sound)
{
uint32 sfx;
- m_bGenericSfx = true;
+ m_bGenericSfx = TRUE;
switch(sound) {
- case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_DEATH_1, 41); break;
+ case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_DEATH_01, 28); break;
case SOUND_PED_BULLET_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_GRUNT_1, 41); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_FIRE_1, 32); break;
- case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_MALE_PANIC_1, 35); break;
+ case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PAIN_01, 51); break;
+ case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PAIN_ON_FIRE_01, 21); break;
+ case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_MALE_PANIC_01, 23); break;
default: return NO_SAMPLE;
}
return sfx;
@@ -7772,17 +7774,18 @@ cAudioManager::GetGenericMaleTalkSfx(CPed *ped, int16 sound)
uint32
cAudioManager::GetGenericFemaleTalkSfx(CPed *ped, int16 sound)
{
- uint32 sfx;
- m_bGenericSfx = true;
- switch(sound) {
- case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, 2931, 22); break;
- case SOUND_PED_BULLET_HIT:
- case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, 2953, 33); break;
- case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, 2914, 17); break;
- case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, 2986, 27); break;
- default: return NO_SAMPLE;
- }
- return sfx;
+ return NO_SAMPLE;
+ //uint32 sfx;
+ //m_bGenericSfx = TRUE;
+ //switch(sound) {
+ //case SOUND_PED_DEATH: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_DEATH_1, 22); break;
+ //case SOUND_PED_BULLET_HIT:
+ //case SOUND_PED_DEFEND: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_GRUNT_1, 33); break;
+ //case SOUND_PED_BURNING: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_FIRE_1, 17); break;
+ //case SOUND_PED_FLEE_SPRINT: GetPhrase(sfx, ped->m_lastComment, SFX_GENERIC_FEMALE_PANIC_1, 27); break;
+ //default: return NO_SAMPLE;
+ //}
+ //return sfx;
}
void
@@ -7821,7 +7824,7 @@ cPedComments::Process()
uint32 sampleIndex;
uint8 actualUsedBank;
tPedComment *comment;
- bool prevUsed = false;
+ bool8 prevUsed = FALSE;
static uint8 counter = 0;
static int32 prevSamples[10];
@@ -7832,7 +7835,7 @@ cPedComments::Process()
if(m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex ==
prevSamples[(counter + 1 + i) % ARRAY_SIZE(prevSamples)]) {
m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nProcess = -1;
- prevUsed = true;
+ prevUsed = TRUE;
break;
}
}
@@ -7852,19 +7855,21 @@ cPedComments::Process()
AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume;
AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance;
AudioManager.m_sQueueSample.m_nLoopCount = 1;
+#ifndef GTA_PS2
AudioManager.m_sQueueSample.m_nLoopStart = 0;
AudioManager.m_sQueueSample.m_nLoopEnd = -1;
+#endif
AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME;
AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f;
AudioManager.m_sQueueSample.m_fSoundIntensity = 40.0f;
- AudioManager.m_sQueueSample.m_bReleasingSoundFlag = true;
+ AudioManager.m_sQueueSample.m_bReleasingSoundFlag = TRUE;
AudioManager.m_sQueueSample.m_vecPos = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos;
- AudioManager.m_sQueueSample.m_bReverbFlag = true;
- AudioManager.m_sQueueSample.m_bRequireReflection = true;
- AudioManager.m_sQueueSample.m_bIs2D = false;
+ AudioManager.m_sQueueSample.m_bReverbFlag = TRUE;
+ AudioManager.m_sQueueSample.m_bRequireReflection = TRUE;
+ AudioManager.m_sQueueSample.m_bIs2D = FALSE;
#ifdef FIX_BUGS
- if (sampleIndex >= 8694 && sampleIndex < TOTAL_AUDIO_SAMPLES) { // check if player sfx, TODO: enum
- AudioManager.m_sQueueSample.m_bIs2D = true;
+ if (sampleIndex >= SFX_TONI_ANGRY_BUSTED_01 && sampleIndex <= SFX_TONI_WISECRACKING_SHOOT_26) { // check if player sfx
+ AudioManager.m_sQueueSample.m_bIs2D = TRUE;
AudioManager.m_sQueueSample.m_nOffset = 63;
}
#endif // FIX_BUGS
@@ -7877,19 +7882,19 @@ cPedComments::Process()
AudioManager.AddSampleToRequestedQueue();
#if defined(GTA_PC) && !defined(FIX_BUGS)
m_nDelayTimer = CTimer::GetTimeInMilliseconds();
- m_bDelay = true;
+ m_bDelay = TRUE;
#endif
}
}
}
// Switch bank
- if (m_nActiveBank) {
- actualUsedBank = SFX_BANK_PED_COMMENTS;
- m_nActiveBank = SFX_BANK_0;
+ if (m_nActiveBank == 0) {
+ actualUsedBank = 0;
+ m_nActiveBank = 1;
} else {
- actualUsedBank = SFX_BANK_0;
- m_nActiveBank = SFX_BANK_PED_COMMENTS;
+ actualUsedBank = 1;
+ m_nActiveBank = 0;
}
comment = m_asPedComments[actualUsedBank];
for (uint32 i = 0; i < m_nCommentsInBank[actualUsedBank]; i++) {
@@ -7905,7 +7910,7 @@ cPedComments::Process()
m_nCommentsInBank[actualUsedBank] = 0;
#if defined(GTA_PC) && !defined(FIX_BUGS)
if(m_bDelay)
- if(CTimer::GetTimeInMilliseconds() - m_nDelayTimer > 6000) m_bDelay = false;
+ if(CTimer::GetTimeInMilliseconds() - m_nDelayTimer > 6000) m_bDelay = FALSE;
#endif
}
@@ -7935,7 +7940,7 @@ cAudioManager::ProcessExplosions(int32 explosion)
m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 19000;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case EXPLOSION_MOLOTOV:
m_sQueueSample.m_fSoundIntensity = 150.0f;
@@ -7943,7 +7948,7 @@ cAudioManager::ProcessExplosions(int32 explosion)
m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 19000;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bRequireReflection = FALSE;
break;
case EXPLOSION_MINE:
case EXPLOSION_HELI_BOMB:
@@ -7952,7 +7957,7 @@ cAudioManager::ProcessExplosions(int32 explosion)
m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 12347;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
default:
m_sQueueSample.m_fSoundIntensity = 200.0f;
@@ -7972,13 +7977,12 @@ cAudioManager::ProcessExplosions(int32 explosion)
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = i;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nEmittingVolume = MAX_VOLUME;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
- m_sQueueSample.m_bReverbFlag = true;
+ RESET_LOOP_OFFSETS
+ m_sQueueSample.m_bReverbFlag = TRUE;
AddSampleToRequestedQueue();
}
}
@@ -8039,19 +8043,18 @@ cAudioManager::ProcessFires(int32)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_nReleasingVolumeDivider = 10;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
if (gFireManager.m_aFires[i].m_bExtinguishedWithWater) {
- gFireManager.m_aFires[i].m_bExtinguishedWithWater = false;
+ gFireManager.m_aFires[i].m_bExtinguishedWithWater = FALSE;
emittingVol = 100.0f * gFireManager.m_aFires[i].m_fWaterExtinguishCountdown;
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume != 0) {
@@ -8063,14 +8066,13 @@ cAudioManager::ProcessFires(int32)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_nReleasingVolumeDivider = 10;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -8099,14 +8101,13 @@ cAudioManager::ProcessWaterCannon(int32)
m_sQueueSample.m_nCounter = i;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_nReleasingVolumeDivider = 8;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nEmittingVolume = 50;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -8120,38 +8121,37 @@ CVector aVecExtraSoundPosition[] = { CVector(-1042.546f, 88.794f, 11.324f), CVec
void
cAudioManager::ProcessExtraSounds()
{
- const float SOUND_INTENSITY = 18.0f;
- const uint8 EMITTING_VOLUME = 50;
-
- float distance;
-
- for (int i = 0; i < ARRAY_SIZE(aVecExtraSoundPosition); i++) {
- m_sQueueSample.m_vecPos = aVecExtraSoundPosition[i];
- distance = GetDistanceSquared(m_sQueueSample.m_vecPos);
- if (distance < SQR(SOUND_INTENSITY)) {
- m_sQueueSample.m_fDistance = Sqrt(distance);
- m_sQueueSample.m_nVolume = ComputeVolume(EMITTING_VOLUME, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
- if (m_sQueueSample.m_nVolume != 0) {
- m_sQueueSample.m_nCounter = i;
- m_sQueueSample.m_nSampleIndex = SFX_ARCADE;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ARCADE);
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_nReleasingVolumeModificator = 4;
- m_sQueueSample.m_fSpeedMultiplier = 3.0f;
- m_sQueueSample.m_nEmittingVolume = EMITTING_VOLUME;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_ARCADE);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_ARCADE);
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bRequireReflection = false;
- m_sQueueSample.m_nReleasingVolumeDivider = 3;
- AddSampleToRequestedQueue();
- }
- }
- }
+ //const float SOUND_INTENSITY = 18.0f;
+ //const uint8 EMITTING_VOLUME = 50;
+
+ //float distance;
+
+ //for (int i = 0; i < ARRAY_SIZE(aVecExtraSoundPosition); i++) {
+ // m_sQueueSample.m_vecPos = aVecExtraSoundPosition[i];
+ // distance = GetDistanceSquared(m_sQueueSample.m_vecPos);
+ // if (distance < SQR(SOUND_INTENSITY)) {
+ // m_sQueueSample.m_fDistance = Sqrt(distance);
+ // m_sQueueSample.m_nVolume = ComputeVolume(EMITTING_VOLUME, SOUND_INTENSITY, m_sQueueSample.m_fDistance);
+ // if (m_sQueueSample.m_nVolume != 0) {
+ // m_sQueueSample.m_nCounter = i;
+ // m_sQueueSample.m_nSampleIndex = SFX_ARCADE;
+ // m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ // m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ARCADE);
+ // m_sQueueSample.m_bIs2D = FALSE;
+ // m_sQueueSample.m_nLoopCount = 0;
+ // m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ // m_sQueueSample.m_nReleasingVolumeModificator = 4;
+ // m_sQueueSample.m_fSpeedMultiplier = 3.0f;
+ // m_sQueueSample.m_nEmittingVolume = EMITTING_VOLUME;
+ // SET_LOOP_OFFSETS(SFX_ARCADE)
+ // m_sQueueSample.m_bReverbFlag = TRUE;
+ // m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
+ // m_sQueueSample.m_bRequireReflection = FALSE;
+ // m_sQueueSample.m_nReleasingVolumeDivider = 3;
+ // AddSampleToRequestedQueue();
+ // }
+ // }
+ //}
}
void
@@ -8179,14 +8179,13 @@ cAudioManager::ProcessEscalators()
m_sQueueSample.m_nReleasingVolumeDivider = 5;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
m_sQueueSample.m_nCounter = i;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = EMITTING_VOLUME;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_BOAT_V12_LOOP);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_BOAT_V12_LOOP);
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(SFX_BOAT_V12_LOOP)
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -8231,8 +8230,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
emittingVolume = 60;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SCRIPT_SOUND_GARAGE_DOOR_CLUNK:
m_sQueueSample.m_fSoundIntensity = 80.0f;
@@ -8243,8 +8242,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 4;
emittingVolume = 60;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SCRIPT_SOUND_SHOOTING_RANGE_TARGET_HIT:
case SCRIPT_SOUND_BULLET_HIT_GROUND_1:
@@ -8257,7 +8256,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32);
m_sQueueSample.m_nReleasingVolumeModificator = 9;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
emittingVolume = m_anRandomTable[2] % 20 + 90;
break;
case SCRIPT_SOUND_WILLIE_CARD_SWIPE:
@@ -8268,8 +8267,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = 20159;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_fSpeedMultiplier = 1.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
break;
case SCRIPT_SOUND_MALE_AMBULANCE_OUCH:
{
@@ -8293,20 +8292,20 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_HORN_JEEP); // BUG?
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = true;
- m_sQueueSample.m_bRequireReflection = false;
- break;
- case SCRIPT_SOUND_PAYPHONE_RINGING:
- m_sQueueSample.m_fSoundIntensity = 80.0f;
- m_sQueueSample.m_nSampleIndex = SFX_PHONE_RING;
- m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- emittingVolume = 80;
- m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PHONE_RING);
- m_sQueueSample.m_nReleasingVolumeModificator = 1;
- m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bIs2D = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
break;
+ //case SCRIPT_SOUND_PAYPHONE_RINGING:
+ // m_sQueueSample.m_fSoundIntensity = 80.0f;
+ // m_sQueueSample.m_nSampleIndex = SFX_PHONE_RING;
+ // m_sQueueSample.m_nBankIndex = SFX_BANK_0;
+ // emittingVolume = 80;
+ // m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PHONE_RING);
+ // m_sQueueSample.m_nReleasingVolumeModificator = 1;
+ // m_sQueueSample.m_fSpeedMultiplier = 2.0f;
+ // m_sQueueSample.m_bIs2D = FALSE;
+ // m_sQueueSample.m_bRequireReflection = FALSE;
+ // break;
case SCRIPT_SOUND_GLASS_BREAK_L:
m_sQueueSample.m_fSoundIntensity = 60.0f;
m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH;
@@ -8315,7 +8314,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_GLASS_BREAK_S:
m_sQueueSample.m_fSoundIntensity = 60.0f;
@@ -8325,7 +8324,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_GLASS_CRACK:
m_sQueueSample.m_fSoundIntensity = 60.0f;
@@ -8335,8 +8334,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
break;
case SCRIPT_SOUND_GLASS_LIGHT_BREAK:
m_sQueueSample.m_fSoundIntensity = 55.0f;
@@ -8345,7 +8344,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 19000;
m_sQueueSample.m_nReleasingVolumeModificator = 9;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
emittingVolume = RandomDisplacement(11) + 25;
break;
case SCRIPT_SOUND_BOX_DESTROYED_1:
@@ -8355,8 +8354,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVolume = m_anRandomTable[2] % 20 + 80;
break;
case SCRIPT_SOUND_BOX_DESTROYED_2:
@@ -8366,8 +8365,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVolume = m_anRandomTable[2] % 20 + 80;
break;
case SCRIPT_SOUND_METAL_COLLISION:
@@ -8378,8 +8377,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVolume = m_anRandomTable[2] % 30 + 70;
break;
case SCRIPT_SOUND_TIRE_COLLISION:
@@ -8390,8 +8389,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVolume = m_anRandomTable[2] % 30 + 60;
break;
case SCRIPT_SOUND_HIT_BALL:
@@ -8402,8 +8401,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nReleasingVolumeModificator = 5;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
emittingVolume = m_anRandomTable[2] % 30 + 60;
break;
case SCRIPT_SOUND_GUNSHELL_DROP:
@@ -8439,7 +8438,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_fSoundIntensity = 20.0f;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
emittingVolume = m_anRandomTable[2] % 20 + 30;
break;
case SCRIPT_SOUND_GUNSHELL_DROP_SOFT:
@@ -8449,7 +8448,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
m_sQueueSample.m_fSoundIntensity = 20.0f;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
emittingVolume = m_anRandomTable[2] % 20 + 30;
break;
default:
@@ -8463,11 +8462,10 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound)
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = iSound++;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nEmittingVolume = emittingVolume;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
- m_sQueueSample.m_bReverbFlag = true;
+ RESET_LOOP_OFFSETS
+ m_sQueueSample.m_bReverbFlag = TRUE;
AddSampleToRequestedQueue();
}
}
@@ -8489,7 +8487,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_POLICE_CELL_DOOR_SLIDING_LOOP:
case SCRIPT_SOUND_GARAGE_DOOR_SLIDING_LOOP:
@@ -8501,7 +8499,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_SNORING_LOOP:
m_sQueueSample.m_fSoundIntensity = 6.0f;
@@ -8512,7 +8510,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 6;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
m_sQueueSample.m_fSpeedMultiplier = 3.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_SHOOTING_RANGE_TARGET_MOVING_LOOP:
m_sQueueSample.m_fSoundIntensity = 40.0f;
@@ -8523,7 +8521,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 4;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_BAR_1:
m_sQueueSample.m_nSampleIndex = SFX_BUILDING_BAR_1;
@@ -8534,7 +8532,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_BAR_2:
m_sQueueSample.m_nSampleIndex = SFX_BUILDING_BAR_2;
@@ -8545,7 +8543,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_BAR_3:
m_sQueueSample.m_nSampleIndex = SFX_BUILDING_BAR_3;
@@ -8556,7 +8554,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_BAR_4:
m_sQueueSample.m_nSampleIndex = SFX_BUILDING_BAR_4;
@@ -8567,7 +8565,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_MALIBU_1:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_MALIBU_AMBIENT) return;
@@ -8580,7 +8578,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_MALIBU_2:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_MALIBU_AMBIENT) return;
@@ -8593,7 +8591,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_MALIBU_3:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_MALIBU_AMBIENT) return;
@@ -8606,7 +8604,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_STRIP_1:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_STRIPCLUB_AMBIENT) return;
@@ -8619,7 +8617,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_STRIP_2:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_STRIPCLUB_AMBIENT) return;
@@ -8632,7 +8630,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_STRIP_3:
if(MusicManager.m_nPlayingTrack == STREAMED_SOUND_STRIPCLUB_AMBIENT) return;
@@ -8645,7 +8643,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_BUILDING_CHURCH:
m_sQueueSample.m_nSampleIndex = SFX_BUILDING_CHURCH;
@@ -8656,7 +8654,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nReleasingVolumeDivider = 15;
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
case SCRIPT_SOUND_NEW_WATERFALL:
emittingVolume = 30;
@@ -8667,7 +8665,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nReleasingVolumeModificator = 4;
m_sQueueSample.m_nReleasingVolumeDivider = 9;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
break;
default: return;
}
@@ -8678,14 +8676,13 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound)
m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance);
if(m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
m_sQueueSample.m_nEmittingVolume = emittingVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -8723,14 +8720,13 @@ cAudioManager::ProcessWeather(int32 id)
m_sQueueSample.m_nCounter = iSound++;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nOffset = (m_anRandomTable[2] & 15) + 55;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
- m_sQueueSample.m_bReverbFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ RESET_LOOP_OFFSETS
+ m_sQueueSample.m_bReverbFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
if (CWeather::Rain > 0.0f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) {
@@ -8741,15 +8737,14 @@ cAudioManager::ProcessWeather(int32 id)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
m_sQueueSample.m_nOffset = 63;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 30;
- m_sQueueSample.m_bReverbFlag = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
x = 0.0f;
@@ -8766,15 +8761,14 @@ cAudioManager::ProcessWeather(int32 id)
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nOffset = 63;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 7;
- m_sQueueSample.m_bReverbFlag = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
CObject::fDistToNearestTree = 999999.9f;
}
@@ -8783,11 +8777,11 @@ cAudioManager::ProcessWeather(int32 id)
void
cAudioManager::ProcessFrontEnd()
{
- bool stereo;
- bool processedPickup;
- bool processedMission;
- bool staticFreq;
- bool center;
+ bool8 stereo;
+ bool8 processedPickup;
+ bool8 processedMission;
+ bool8 staticFreq;
+ bool8 center;
int16 sample;
static uint8 iSound = 0;
@@ -8796,11 +8790,11 @@ cAudioManager::ProcessFrontEnd()
static uint32 radioDial = SFX_RADIO_DIAL_1;
for (uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) {
- staticFreq = false;
- processedPickup = false;
- center = false;
- processedMission = false;
- stereo = false;
+ staticFreq = FALSE;
+ processedPickup = FALSE;
+ center = FALSE;
+ processedMission = FALSE;
+ stereo = FALSE;
switch (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]) {
case SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM:
m_sQueueSample.m_nSampleIndex = SFX_ERROR_FIRE_RIFLE;
@@ -8812,9 +8806,9 @@ cAudioManager::ProcessFrontEnd()
case SOUND_GARAGE_BAD_VEHICLE:
case SOUND_GARAGE_BOMB_ALREADY_SET:
m_sQueueSample.m_nSampleIndex = SFX_WEAPON_LEFT;
- stereo = true;
- staticFreq = true;
- center = true;
+ stereo = TRUE;
+ staticFreq = TRUE;
+ center = TRUE;
break;
case SOUND_GARAGE_OPENING:
case SOUND_71: //case SOUND_41:
@@ -8822,8 +8816,8 @@ cAudioManager::ProcessFrontEnd()
case SOUND_GARAGE_VEHICLE_ACCEPTED:
case SOUND_EVIDENCE_PICKUP:
case SOUND_UNLOAD_GOLD:
- stereo = true;
- processedPickup = true;
+ stereo = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_MONEY_LEFT;
break;
case SOUND_GARAGE_BOMB1_SET:
@@ -8831,70 +8825,70 @@ cAudioManager::ProcessFrontEnd()
case SOUND_GARAGE_BOMB3_SET:
case SOUND_PICKUP_WEAPON_BOUGHT:
case SOUND_PICKUP_WEAPON:
- center = true;
- processedPickup = true;
+ center = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_WEAPON_LEFT;
- stereo = true;
+ stereo = TRUE;
break;
case SOUND_PICKUP_HEALTH:
case SOUND_81: //case SOUND_4B:
case SOUND_PICKUP_ADRENALINE:
case SOUND_PICKUP_ARMOUR:
- stereo = true;
- processedPickup = true;
+ stereo = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_MONEY_LEFT;
break;
case SOUND_80:
- stereo = true;
- processedPickup = true;
+ stereo = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_WEAPON_LEFT;
- center = true;
- staticFreq = true;
+ center = TRUE;
+ staticFreq = TRUE;
break;
case SOUND_PICKUP_BONUS:
case SOUND_FRONTEND_MENU_STARTING:
- case SOUND_HUD_SOUND:
- stereo = true;
- m_sQueueSample.m_nSampleIndex = SFX_INFO_LEFT;
- center = true;
+ case SOUND_HUD:
+ stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_INFO_LEFT;
+ center = TRUE;
break;
case SOUND_PICKUP_MONEY:
- stereo = true;
- processedPickup = true;
+ stereo = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_MONEY_LEFT;
break;
case SOUND_PICKUP_HIDDEN_PACKAGE:
case SOUND_PICKUP_PACMAN_PILL:
case SOUND_PICKUP_PACMAN_PACKAGE:
case SOUND_PICKUP_FLOAT_PACKAGE:
- center = true;
- processedPickup = true;
+ center = TRUE;
+ processedPickup = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE_LEFT;
- stereo = true;
+ stereo = TRUE;
break;
case SOUND_RACE_START_3:
case SOUND_RACE_START_2:
case SOUND_RACE_START_1:
case SOUND_PART_MISSION_COMPLETE:
- stereo = true;
+ stereo = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE_LEFT;
- processedMission = true;
- center = true;
+ processedMission = TRUE;
+ center = TRUE;
break;
case SOUND_RACE_START_GO:
- stereo = true;
+ stereo = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_GO_LEFT;
- center = true;
+ center = TRUE;
break;
case SOUND_CLOCK_TICK:
m_sQueueSample.m_nSampleIndex = SFX_TIMER;
break;
- case SOUND_FRONTEND_NO_RADIO:
- case SOUND_FRONTEND_RADIO_CHANGE:
+ case SOUND_FRONTEND_RADIO_TURN_OFF:
+ case SOUND_FRONTEND_RADIO_TURN_ON:
m_sQueueSample.m_nSampleIndex = SFX_RADIO_CLICK;
break;
- case SOUND_FRONTEND_RADIO_CHANGE_2:
- m_sQueueSample.m_nSampleIndex = SFX_HURRICANE_MA;
+ case SOUND_FRONTEND_HURRICANE:
+ //m_sQueueSample.m_nSampleIndex = SFX_HURRICANE_MA;
break;
case SOUND_BULLETTRACE_1:
case SOUND_BULLETTRACE_2:
@@ -8905,24 +8899,24 @@ cAudioManager::ProcessFrontEnd()
break;
case SOUND_RADIO_CHANGE:
m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] % 2) ? radioDial + 1 : radioDial + 2;
- if (m_sQueueSample.m_nSampleIndex > SFX_RADIO_DIAL_12)
- m_sQueueSample.m_nSampleIndex -= 12;
+ if (m_sQueueSample.m_nSampleIndex > SFX_RADIO_DIAL_3)
+ m_sQueueSample.m_nSampleIndex -= 3;
radioDial = m_sQueueSample.m_nSampleIndex;
break;
case SOUND_FRONTEND_HIGHLIGHT_OPTION:
- stereo = true;
- m_sQueueSample.m_nSampleIndex = SFX_FE_HIGHLIGHT_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_HIGHLIGHT;
break;
case SOUND_FRONTEND_ENTER_OR_ADJUST:
- stereo = true;
- m_sQueueSample.m_nSampleIndex = SFX_FE_SELECT_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_SELECT;
break;
case SOUND_FRONTEND_BACK:
- stereo = true;
- m_sQueueSample.m_nSampleIndex = SFX_FE_BACK_LEFT;
+ //stereo = TRUE;
+ m_sQueueSample.m_nSampleIndex = SFX_FE_BACK;
break;
case SOUND_FRONTEND_FAIL:
- stereo = true;
+ stereo = TRUE;
m_sQueueSample.m_nSampleIndex = SFX_FE_ERROR_LEFT;
break;
case SOUND_FRONTEND_AUDIO_TEST:
@@ -8944,9 +8938,9 @@ cAudioManager::ProcessFrontEnd()
sample = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i];
- if (sample == SOUND_FRONTEND_NO_RADIO)
+ if (sample == SOUND_FRONTEND_RADIO_TURN_OFF)
m_sQueueSample.m_nFrequency = 28509;
- else if (sample == SOUND_FRONTEND_RADIO_CHANGE)
+ else if (sample == SOUND_FRONTEND_RADIO_TURN_ON)
m_sQueueSample.m_nFrequency = 32000;
else if (sample == SOUND_BULLETTRACE_1 || sample == SOUND_BULLETTRACE_2) {
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
@@ -8957,38 +8951,38 @@ cAudioManager::ProcessFrontEnd()
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
m_sQueueSample.m_nVolume = 127;
- if (m_sQueueSample.m_nSampleIndex == SFX_HURRICANE_MA && CWeather::Wind > 1.0f)
- m_sQueueSample.m_nVolume = (CWeather::Wind - 1.0f) * m_sQueueSample.m_nVolume;
+ //if (m_sQueueSample.m_nSampleIndex == SFX_HURRICANE_MA && CWeather::Wind > 1.0f)
+ // m_sQueueSample.m_nVolume = (CWeather::Wind - 1.0f) * m_sQueueSample.m_nVolume;
m_sQueueSample.m_nCounter = iSound++;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nBankIndex = SFX_BANK_FRONT_END_MENU;
m_sQueueSample.m_nReleasingVolumeModificator = 0;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
- m_sQueueSample.m_fDistance = 1.0f;
- if (stereo)
+ RESET_LOOP_OFFSETS
+ if (stereo) {
m_sQueueSample.m_nOffset = 0;
- else {
+ m_sQueueSample.m_fDistance = 1.0f;
+ } else {
sample = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i];
if (sample == SOUND_BULLETTRACE_1) {
m_sQueueSample.m_nOffset = 20;
m_sQueueSample.m_nVolume = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i];
m_sQueueSample.m_nReleasingVolumeModificator = 10;
m_sQueueSample.m_fDistance = 100.0f;
- }
- if (sample == SOUND_BULLETTRACE_2) {
+ } else if (sample == SOUND_BULLETTRACE_2) {
m_sQueueSample.m_nOffset = 107;
m_sQueueSample.m_nVolume = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i];
m_sQueueSample.m_nReleasingVolumeModificator = 10;
m_sQueueSample.m_fDistance = 100.0f;
+ } else {
+ m_sQueueSample.m_nOffset = 63;
+ m_sQueueSample.m_fDistance = 1.0f;
}
- m_sQueueSample.m_nOffset = 63;
}
- m_sQueueSample.m_bReverbFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
if (stereo) {
++m_sQueueSample.m_nSampleIndex;
@@ -9011,7 +9005,7 @@ cAudioManager::ProcessCrane()
{
CCrane *crane = (CCrane *)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity;
float distSquared;
- bool distCalculated = false;
+ bool8 distCalculated = FALSE;
static const int intensity = 80;
if (crane) {
@@ -9026,19 +9020,18 @@ cAudioManager::ProcessCrane()
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 2;
m_sQueueSample.m_nFrequency = 6000;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = 100;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 4.0f;
m_sQueueSample.m_fSoundIntensity = intensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents) {
@@ -9046,9 +9039,9 @@ cAudioManager::ProcessCrane()
m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = TRUE;
AddSampleToRequestedQueue();
}
}
@@ -9102,14 +9095,13 @@ cAudioManager::ProcessProjectiles()
m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance);
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = i;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = emittingVol;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -9127,7 +9119,7 @@ cAudioManager::ProcessGarages()
uint32 sampleIndex;
uint8 j;
float distSquared;
- bool distCalculated;
+ bool8 distCalculated;
static uint8 iSound = 32;
@@ -9138,7 +9130,7 @@ cAudioManager::ProcessGarages()
if (entity == nil)
continue;
m_sQueueSample.m_vecPos = entity->GetPosition();
- distCalculated = false;
+ distCalculated = FALSE;
distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos);
if (distSquared < SQR(SOUND_INTENSITY)) {
state = CGarages::aGarages[i].m_eGarageState;
@@ -9158,7 +9150,7 @@ cAudioManager::ProcessGarages()
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) / 2;
m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16);
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nCounter = iSound++;
if (iSound < 32)
iSound = 32;
@@ -9170,7 +9162,7 @@ cAudioManager::ProcessGarages()
m_sQueueSample.m_nCounter = i;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
}
} else {
m_sQueueSample.m_nSampleIndex = SFX_GARAGE_DOOR_LOOP;
@@ -9179,19 +9171,18 @@ cAudioManager::ProcessGarages()
m_sQueueSample.m_nCounter = i;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
}
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 3;
m_sQueueSample.m_nEmittingVolume = 90;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
break;
@@ -9220,16 +9211,15 @@ cAudioManager::ProcessGarages()
m_sQueueSample.m_nEmittingVolume = 60;
m_sQueueSample.m_fSpeedMultiplier = 0.0f;
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReverbFlag = true;
- m_sQueueSample.m_bIs2D = false;
- m_sQueueSample.m_bReleasingSoundFlag = true;
+ m_sQueueSample.m_bReverbFlag = TRUE;
+ m_sQueueSample.m_bIs2D = FALSE;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
m_sQueueSample.m_nLoopCount = 1;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_nCounter = iSound++;
if (iSound < 32)
iSound = 32;
- m_sQueueSample.m_bRequireReflection = true;
+ m_sQueueSample.m_bRequireReflection = TRUE;
AddSampleToRequestedQueue();
}
}
@@ -9247,7 +9237,7 @@ cAudioManager::ProcessFireHydrant()
const float SOUND_INTENSITY = 35;
float distSquared;
- bool distCalculated = false;
+ bool8 distCalculated = FALSE;
m_sQueueSample.m_vecPos = ((CEntity *)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity)->GetPosition();
distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos);
@@ -9261,13 +9251,12 @@ cAudioManager::ProcessFireHydrant()
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nEmittingVolume = 40;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nLoopCount = 0;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY;
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
AddSampleToRequestedQueue();
@@ -9282,7 +9271,7 @@ void
cAudioManager::ProcessBridge()
{
float dist;
- bool distCalculated = false;
+ bool8 distCalculated = FALSE;
if (CBridge::pLiftRoad) {
m_sQueueSample.m_vecPos = CBridge::pLiftRoad->GetPosition();
@@ -9318,19 +9307,18 @@ cAudioManager::ProcessBridgeWarning()
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING;
m_sQueueSample.m_nBankIndex = SAMPLEBANK_EXTRAS;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING);
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = 100;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = 450.0f;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 8;
- m_sQueueSample.m_bReverbFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}*/
@@ -9345,18 +9333,17 @@ cAudioManager::ProcessBridgeMotor()
m_sQueueSample.m_nCounter = 1;
m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = 5500;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = MAX_VOLUME;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex);
+ SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex)
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = bridgeIntensity;
- m_sQueueSample.m_bReleasingSoundFlag = false;
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bReverbFlag = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -9380,18 +9367,17 @@ cAudioManager::ProcessBridgeOneShots()
if (m_sQueueSample.m_nVolume != 0) {
m_sQueueSample.m_nCounter = 2;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = false;
+ m_sQueueSample.m_bIs2D = FALSE;
m_sQueueSample.m_nReleasingVolumeModificator = 1;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex);
m_sQueueSample.m_nLoopCount = 1;
m_sQueueSample.m_nEmittingVolume = MAX_VOLUME;
- m_sQueueSample.m_nLoopStart = 0;
- m_sQueueSample.m_nLoopEnd = -1;
+ RESET_LOOP_OFFSETS
m_sQueueSample.m_fSpeedMultiplier = 2.0f;
m_sQueueSample.m_fSoundIntensity = bridgeIntensity;
- m_sQueueSample.m_bReleasingSoundFlag = true;
- m_sQueueSample.m_bReverbFlag = false;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bReleasingSoundFlag = TRUE;
+ m_sQueueSample.m_bReverbFlag = FALSE;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
}
@@ -9400,7 +9386,7 @@ cAudioManager::ProcessBridgeOneShots()
#endif
#pragma region MISSION_AUDIO
-bool g_bMissionAudioLoadFailed[MISSION_AUDIO_SLOTS];
+bool8 g_bMissionAudioLoadFailed[MISSION_AUDIO_SLOTS];
struct MissionAudioData {
const char *m_pName;
@@ -9409,380 +9395,1874 @@ struct MissionAudioData {
const MissionAudioData MissionAudioNameSfxAssoc[] = {
- /*{"mobring", STREAMED_SOUND_MISSION_MOBR1}, {"pagring", STREAMED_SOUND_MISSION_PAGER}, {"carrev", STREAMED_SOUND_MISSION_CARREV},
- {"bikerev", STREAMED_SOUND_MISSION_BIKEREV}, {"liftop", STREAMED_SOUND_MISSION_LIFTOP}, {"liftcl", STREAMED_SOUND_MISSION_LIFTCL},
- {"liftrun", STREAMED_SOUND_MISSION_LIFTRUN}, {"liftbel", STREAMED_SOUND_MISSION_LIFTBEL}, {"inlift", STREAMED_SOUND_MISSION_INLIFT},
- {"caml", STREAMED_SOUND_MISSION_CAMERAL}, {"camr", STREAMED_SOUND_MISSION_CAMERAR}, {"cheer1", STREAMED_SOUND_MISSION_CHEER1},
- {"cheer2", STREAMED_SOUND_MISSION_CHEER2}, {"cheer3", STREAMED_SOUND_MISSION_CHEER3}, {"cheer4", STREAMED_SOUND_MISSION_CHEER4},
- {"ooh1", STREAMED_SOUND_MISSION_OOH1}, {"ooh2", STREAMED_SOUND_MISSION_OOH2}, {"race1", STREAMED_SOUND_MISSION_RACE1},
- {"race2", STREAMED_SOUND_MISSION_RACE2}, {"race3", STREAMED_SOUND_MISSION_RACE3}, {"race4", STREAMED_SOUND_MISSION_RACE4},
- {"race5", STREAMED_SOUND_MISSION_RACE5}, {"race6", STREAMED_SOUND_MISSION_RACE6}, {"race7", STREAMED_SOUND_MISSION_RACE7},
- {"race8", STREAMED_SOUND_MISSION_RACE8}, {"race9", STREAMED_SOUND_MISSION_RACE9}, {"race10", STREAMED_SOUND_MISSION_RACE10},
- {"race11", STREAMED_SOUND_MISSION_RACE11}, {"race12", STREAMED_SOUND_MISSION_RACE12}, {"race13", STREAMED_SOUND_MISSION_RACE13},
- {"race14", STREAMED_SOUND_MISSION_RACE14}, {"race15", STREAMED_SOUND_MISSION_RACE15}, {"hot1", STREAMED_SOUND_MISSION_HOT1},
- {"hot2", STREAMED_SOUND_MISSION_HOT2}, {"hot3", STREAMED_SOUND_MISSION_HOT3}, {"hot4", STREAMED_SOUND_MISSION_HOT4},
- {"hot5", STREAMED_SOUND_MISSION_HOT5}, {"hot6", STREAMED_SOUND_MISSION_HOT6}, {"hot7", STREAMED_SOUND_MISSION_HOT7},
- {"hot8", STREAMED_SOUND_MISSION_HOT8}, {"hot9", STREAMED_SOUND_MISSION_HOT9}, {"hot10", STREAMED_SOUND_MISSION_HOT10},
- {"hot11", STREAMED_SOUND_MISSION_HOT11}, {"hot12", STREAMED_SOUND_MISSION_HOT12}, {"hot13", STREAMED_SOUND_MISSION_HOT13},
- {"hot14", STREAMED_SOUND_MISSION_HOT14}, {"hot15", STREAMED_SOUND_MISSION_HOT15}, {"lanstp1", STREAMED_SOUND_MISSION_LANSTP1},
- {"lanstp2", STREAMED_SOUND_MISSION_LANSTP2}, {"lanamu1", STREAMED_SOUND_MISSION_LANAMU1}, {"lanamu2", STREAMED_SOUND_MISSION_LANAMU2},
- {"airhrnl", STREAMED_SOUND_MISSION_AIRHORNL}, {"airhrnr", STREAMED_SOUND_MISSION_AIRHORNR}, {"sniper", STREAMED_SOUND_MISSION_SNIPSCRL},
- {"snipsh", STREAMED_SOUND_MISSION_SNIPSHORT}, {"bloroof", STREAMED_SOUND_MISSION_BLOWROOF}, {"sfx_01", STREAMED_SOUND_MISSION_SFX_01},
- {"sfx_02", STREAMED_SOUND_MISSION_SFX_02}, {"LAW1_1", STREAMED_SOUND_MISSION_LAW1_1}, {"LAW1_2", STREAMED_SOUND_MISSION_LAW1_2},
- {"LAW1_3", STREAMED_SOUND_MISSION_LAW1_3}, {"LAW1_4", STREAMED_SOUND_MISSION_LAW1_4}, {"LAW1_5", STREAMED_SOUND_MISSION_LAW1_5},
- {"LAW1_6", STREAMED_SOUND_MISSION_LAW1_6}, {"LAW1_7", STREAMED_SOUND_MISSION_LAW1_7}, {"LAW1_8", STREAMED_SOUND_MISSION_LAW1_8},
- {"LAW1_9", STREAMED_SOUND_MISSION_LAW1_9}, {"LAW1_10", STREAMED_SOUND_MISSION_LAW1_10}, {"LAW2_1", STREAMED_SOUND_MISSION_LAW2_1},
- {"LAW2_2", STREAMED_SOUND_MISSION_LAW2_2}, {"LAW2_3", STREAMED_SOUND_MISSION_LAW2_3}, {"LAW2_4", STREAMED_SOUND_MISSION_LAW2_4},
- {"LAW2_5", STREAMED_SOUND_MISSION_LAW2_5}, {"LAW2_6", STREAMED_SOUND_MISSION_LAW2_6}, {"LAW2_7", STREAMED_SOUND_MISSION_LAW2_7},
- {"LAW2_8", STREAMED_SOUND_MISSION_LAW2_8}, {"LAW2_9", STREAMED_SOUND_MISSION_LAW2_9}, {"LAW2_10", STREAMED_SOUND_MISSION_LAW2_10},
- {"LAW3_1", STREAMED_SOUND_MISSION_LAW3_1}, {"LAW3_2", STREAMED_SOUND_MISSION_LAW3_2}, {"LAW3_3", STREAMED_SOUND_MISSION_LAW3_3},
- {"LAW3_4", STREAMED_SOUND_MISSION_LAW3_4}, {"LAW3_5", STREAMED_SOUND_MISSION_LAW3_5}, {"LAW3_6", STREAMED_SOUND_MISSION_LAW3_6},
- {"LAW3_10", STREAMED_SOUND_MISSION_LAW3_10}, {"LAW3_11", STREAMED_SOUND_MISSION_LAW3_11}, {"LAW3_12", STREAMED_SOUND_MISSION_LAW3_12},
- {"LAW3_13", STREAMED_SOUND_MISSION_LAW3_13}, {"LAW3_14", STREAMED_SOUND_MISSION_LAW3_14}, {"LAW3_16", STREAMED_SOUND_MISSION_LAW3_16},
- {"LAW3_17", STREAMED_SOUND_MISSION_LAW3_17}, {"LAW3_18", STREAMED_SOUND_MISSION_LAW3_18}, {"LAW3_19", STREAMED_SOUND_MISSION_LAW3_19},
- {"LAW3_20", STREAMED_SOUND_MISSION_LAW3_20}, {"LAW3_21", STREAMED_SOUND_MISSION_LAW3_21}, {"LAW3_22", STREAMED_SOUND_MISSION_LAW3_22},
- {"LAW3_23", STREAMED_SOUND_MISSION_LAW3_23}, {"LAW3_24", STREAMED_SOUND_MISSION_LAW3_24}, {"LAW3_25", STREAMED_SOUND_MISSION_LAW3_25},
- {"LAW4_1a", STREAMED_SOUND_MISSION_LAW4_1A}, {"LAW4_1b", STREAMED_SOUND_MISSION_LAW4_1B}, {"LAW4_1c", STREAMED_SOUND_MISSION_LAW4_1C},
- {"LAW4_1d", STREAMED_SOUND_MISSION_LAW4_1D}, {"LAW4_10", STREAMED_SOUND_MISSION_LAW4_10}, {"LAW4_3", STREAMED_SOUND_MISSION_LAW4_3},
- {"LAW4_4", STREAMED_SOUND_MISSION_LAW4_4}, {"LAW4_5", STREAMED_SOUND_MISSION_LAW4_5}, {"LAW4_6", STREAMED_SOUND_MISSION_LAW4_6},
- {"LAW4_7", STREAMED_SOUND_MISSION_LAW4_7}, {"LAW4_8", STREAMED_SOUND_MISSION_LAW4_8}, {"LAW4_9", STREAMED_SOUND_MISSION_LAW4_9},
- {"COL1_1", STREAMED_SOUND_MISSION_COL1_1}, {"COL1_2", STREAMED_SOUND_MISSION_COL1_2}, {"COL1_3", STREAMED_SOUND_MISSION_COL1_3},
- {"COL1_4", STREAMED_SOUND_MISSION_COL1_4}, {"COL1_5", STREAMED_SOUND_MISSION_COL1_5}, {"COL1_6", STREAMED_SOUND_MISSION_COL1_6},
- {"COL1_7", STREAMED_SOUND_MISSION_COL1_7}, {"COL1_8", STREAMED_SOUND_MISSION_COL1_8}, {"COL2_1", STREAMED_SOUND_MISSION_COL2_1},
- {"COL2_2", STREAMED_SOUND_MISSION_COL2_2}, {"COL2_3", STREAMED_SOUND_MISSION_COL2_3}, {"COL2_4", STREAMED_SOUND_MISSION_COL2_4},
- {"COL2_5", STREAMED_SOUND_MISSION_COL2_5}, {"COL2_6a", STREAMED_SOUND_MISSION_COL2_6A}, {"COL2_7", STREAMED_SOUND_MISSION_COL2_7},
- {"COL2_8", STREAMED_SOUND_MISSION_COL2_8}, {"COL2_9", STREAMED_SOUND_MISSION_COL2_9}, {"COL2_10", STREAMED_SOUND_MISSION_COL2_10},
- {"COL2_11", STREAMED_SOUND_MISSION_COL2_11}, {"COL2_12", STREAMED_SOUND_MISSION_COL2_12}, {"COL2_13", STREAMED_SOUND_MISSION_COL2_13},
- {"COL2_14", STREAMED_SOUND_MISSION_COL2_14}, {"COL2_15", STREAMED_SOUND_MISSION_COL2_15}, {"COL2_16", STREAMED_SOUND_MISSION_COL2_16},
- {"COL3_1", STREAMED_SOUND_MISSION_COL3_1}, {"COL3_2", STREAMED_SOUND_MISSION_COL3_2}, {"COL3_2a", STREAMED_SOUND_MISSION_COL3_2A},
- {"COL3_2b", STREAMED_SOUND_MISSION_COL3_2B}, {"COL3_3", STREAMED_SOUND_MISSION_COL3_3}, {"COL3_4", STREAMED_SOUND_MISSION_COL3_4},
- {"COL3_5", STREAMED_SOUND_MISSION_COL3_5}, {"COL3_6", STREAMED_SOUND_MISSION_COL3_6}, {"COL3_7", STREAMED_SOUND_MISSION_COL3_7},
- {"COL3_8", STREAMED_SOUND_MISSION_COL3_8}, {"COL3_9", STREAMED_SOUND_MISSION_COL3_9}, {"COL3_10", STREAMED_SOUND_MISSION_COL3_10},
- {"COL3_11", STREAMED_SOUND_MISSION_COL3_11}, {"COL3_12", STREAMED_SOUND_MISSION_COL3_12}, {"COL3_13", STREAMED_SOUND_MISSION_COL3_13},
- {"COL3_14", STREAMED_SOUND_MISSION_COL3_14}, {"COL3_15", STREAMED_SOUND_MISSION_COL3_15}, {"COL3_16", STREAMED_SOUND_MISSION_COL3_16},
- {"COL3_17", STREAMED_SOUND_MISSION_COL3_17}, {"COL3_18", STREAMED_SOUND_MISSION_COL3_18}, {"COL3_19", STREAMED_SOUND_MISSION_COL3_19},
- {"COL3_20", STREAMED_SOUND_MISSION_COL3_20}, {"COL3_21", STREAMED_SOUND_MISSION_COL3_21}, {"COL3_23", STREAMED_SOUND_MISSION_COL3_23},
- {"COL3_24", STREAMED_SOUND_MISSION_COL3_24}, {"COL3_25", STREAMED_SOUND_MISSION_COL3_25}, {"COL4_1", STREAMED_SOUND_MISSION_COL4_1},
- {"COL4_2", STREAMED_SOUND_MISSION_COL4_2}, {"COL4_3", STREAMED_SOUND_MISSION_COL4_3}, {"COL4_4", STREAMED_SOUND_MISSION_COL4_4},
- {"COL4_5", STREAMED_SOUND_MISSION_COL4_5}, {"COL4_6", STREAMED_SOUND_MISSION_COL4_6}, {"COL4_7", STREAMED_SOUND_MISSION_COL4_7},
- {"COL4_8", STREAMED_SOUND_MISSION_COL4_8}, {"COL4_9", STREAMED_SOUND_MISSION_COL4_9}, {"COL4_10", STREAMED_SOUND_MISSION_COL4_10},
- {"COL4_11", STREAMED_SOUND_MISSION_COL4_11}, {"COL4_12", STREAMED_SOUND_MISSION_COL4_12}, {"COL4_13", STREAMED_SOUND_MISSION_COL4_13},
- {"COL4_14", STREAMED_SOUND_MISSION_COL4_14}, {"COL4_15", STREAMED_SOUND_MISSION_COL4_15}, {"COL4_16", STREAMED_SOUND_MISSION_COL4_16},
- {"COL4_17", STREAMED_SOUND_MISSION_COL4_17}, {"COL4_18", STREAMED_SOUND_MISSION_COL4_18}, {"COL4_19", STREAMED_SOUND_MISSION_COL4_19},
- {"COL4_20", STREAMED_SOUND_MISSION_COL4_20}, {"COL4_21", STREAMED_SOUND_MISSION_COL4_21}, {"COL4_22", STREAMED_SOUND_MISSION_COL4_22},
- {"COL4_23", STREAMED_SOUND_MISSION_COL4_23}, {"COL4_24", STREAMED_SOUND_MISSION_COL4_24}, {"COL4_25", STREAMED_SOUND_MISSION_COL4_25},
- {"COL4_26", STREAMED_SOUND_MISSION_COL4_26}, {"COL5_1", STREAMED_SOUND_MISSION_COL5_1}, {"COL5_2", STREAMED_SOUND_MISSION_COL5_2},
- {"COL5_3", STREAMED_SOUND_MISSION_COL5_3}, {"COL5_4", STREAMED_SOUND_MISSION_COL5_4}, {"COL5_5", STREAMED_SOUND_MISSION_COL5_5},
- {"COL5_6", STREAMED_SOUND_MISSION_COL5_6}, {"COL5_7", STREAMED_SOUND_MISSION_COL5_7}, {"COL5_8", STREAMED_SOUND_MISSION_COL5_8},
- {"COL5_9", STREAMED_SOUND_MISSION_COL5_9}, {"COL5_10", STREAMED_SOUND_MISSION_COL5_10}, {"COL5_11", STREAMED_SOUND_MISSION_COL5_11},
- {"COL5_12", STREAMED_SOUND_MISSION_COL5_12}, {"COL5_13", STREAMED_SOUND_MISSION_COL5_13}, {"COL5_14", STREAMED_SOUND_MISSION_COL5_14},
- {"COL5_15", STREAMED_SOUND_MISSION_COL5_15}, {"COL5_16", STREAMED_SOUND_MISSION_COL5_16}, {"COL5_17", STREAMED_SOUND_MISSION_COL5_17},
- {"COL5_18", STREAMED_SOUND_MISSION_COL5_18}, {"COL5_19", STREAMED_SOUND_MISSION_COL5_19}, {"COL5_20", STREAMED_SOUND_MISSION_COL5_20},
- {"COL5_21", STREAMED_SOUND_MISSION_COL5_21}, {"COL5_22", STREAMED_SOUND_MISSION_COL5_22}, {"COK1_1", STREAMED_SOUND_MISSION_COK1_1},
- {"COK1_2", STREAMED_SOUND_MISSION_COK1_2}, {"COK1_3", STREAMED_SOUND_MISSION_COK1_3}, {"COK1_4", STREAMED_SOUND_MISSION_COK1_4},
- {"COK1_5", STREAMED_SOUND_MISSION_COK1_5}, {"COK1_6", STREAMED_SOUND_MISSION_COK1_6}, {"COK2_1", STREAMED_SOUND_MISSION_COK2_1},
- {"COK2_2", STREAMED_SOUND_MISSION_COK2_2}, {"COK2_3", STREAMED_SOUND_MISSION_COK2_3}, {"COK2_4", STREAMED_SOUND_MISSION_COK2_4},
- {"COK2_5", STREAMED_SOUND_MISSION_COK2_5}, {"COK2_6", STREAMED_SOUND_MISSION_COK2_6}, {"COK2_7a", STREAMED_SOUND_MISSION_COK2_7A},
- {"COK2_7b", STREAMED_SOUND_MISSION_COK2_7B}, {"COK2_7c", STREAMED_SOUND_MISSION_COK2_7C}, {"COK2_8a", STREAMED_SOUND_MISSION_COK2_8A},
- {"COK2_8b", STREAMED_SOUND_MISSION_COK2_8B}, {"COK2_8c", STREAMED_SOUND_MISSION_COK2_8C}, {"COK2_8d", STREAMED_SOUND_MISSION_COK2_8D},
- {"COK2_9", STREAMED_SOUND_MISSION_COK2_9}, {"COK210a", STREAMED_SOUND_MISSION_COK210A}, {"COK210b", STREAMED_SOUND_MISSION_COK210B},
- {"COK210c", STREAMED_SOUND_MISSION_COK210C}, {"COK212a", STREAMED_SOUND_MISSION_COK212A}, {"COK212b", STREAMED_SOUND_MISSION_COK212B},
- {"COK2_13", STREAMED_SOUND_MISSION_COK2_13}, {"COK2_14", STREAMED_SOUND_MISSION_COK2_14}, {"COK2_15", STREAMED_SOUND_MISSION_COK2_15},
- {"COK2_16", STREAMED_SOUND_MISSION_COK2_16}, {"COK2_20", STREAMED_SOUND_MISSION_COK2_20}, {"COK2_21", STREAMED_SOUND_MISSION_COK2_21},
- {"COK2_22", STREAMED_SOUND_MISSION_COK2_22}, {"COK3_1", STREAMED_SOUND_MISSION_COK3_1}, {"COK3_2", STREAMED_SOUND_MISSION_COK3_2},
- {"COK3_3", STREAMED_SOUND_MISSION_COK3_3}, {"COK3_4", STREAMED_SOUND_MISSION_COK3_4}, {"COK4_1", STREAMED_SOUND_MISSION_COK4_1},
- {"COK4_2", STREAMED_SOUND_MISSION_COK4_2}, {"COK4_3", STREAMED_SOUND_MISSION_COK4_3}, {"COK4_4", STREAMED_SOUND_MISSION_COK4_4},
- {"COK4_5", STREAMED_SOUND_MISSION_COK4_5}, {"COK4_6", STREAMED_SOUND_MISSION_COK4_6}, {"COK4_7", STREAMED_SOUND_MISSION_COK4_7},
- {"COK4_8", STREAMED_SOUND_MISSION_COK4_8}, {"COK4_9", STREAMED_SOUND_MISSION_COK4_9}, {"COK4_9A", STREAMED_SOUND_MISSION_COK4_9A},
- {"COK4_10", STREAMED_SOUND_MISSION_COK4_10}, {"COK4_11", STREAMED_SOUND_MISSION_COK4_11}, {"COK4_12", STREAMED_SOUND_MISSION_COK4_12},
- {"COK4_13", STREAMED_SOUND_MISSION_COK4_13}, {"COK4_14", STREAMED_SOUND_MISSION_COK4_14}, {"COK4_15", STREAMED_SOUND_MISSION_COK4_15},
- {"COK4_16", STREAMED_SOUND_MISSION_COK4_16}, {"COK4_17", STREAMED_SOUND_MISSION_COK4_17}, {"COK4_18", STREAMED_SOUND_MISSION_COK4_18},
- {"COK4_19", STREAMED_SOUND_MISSION_COK4_19}, {"COK4_20", STREAMED_SOUND_MISSION_COK4_20}, {"COK4_21", STREAMED_SOUND_MISSION_COK4_21},
- {"COK4_22", STREAMED_SOUND_MISSION_COK4_22}, {"COK4_23", STREAMED_SOUND_MISSION_COK4_23}, {"COK4_24", STREAMED_SOUND_MISSION_COK4_24},
- {"COK4_25", STREAMED_SOUND_MISSION_COK4_25}, {"COK4_26", STREAMED_SOUND_MISSION_COK4_26}, {"COK4_27", STREAMED_SOUND_MISSION_COK4_27},
- {"RESC_1", STREAMED_SOUND_MISSION_RESC_1}, {"RESC_2", STREAMED_SOUND_MISSION_RESC_2}, {"RESC_3", STREAMED_SOUND_MISSION_RESC_3},
- {"RESC_4", STREAMED_SOUND_MISSION_RESC_4}, {"RESC_5", STREAMED_SOUND_MISSION_RESC_5}, {"RESC_6", STREAMED_SOUND_MISSION_RESC_6},
- {"RESC_7", STREAMED_SOUND_MISSION_RESC_7}, {"RESC_8", STREAMED_SOUND_MISSION_RESC_8}, {"RESC_9", STREAMED_SOUND_MISSION_RESC_9},
- {"RESC_10", STREAMED_SOUND_MISSION_RESC_10}, {"ASS_1", STREAMED_SOUND_MISSION_ASS_1}, {"ASS_2", STREAMED_SOUND_MISSION_ASS_2},
- {"ASS_3", STREAMED_SOUND_MISSION_ASS_3}, {"ASS_4", STREAMED_SOUND_MISSION_ASS_4}, {"ASS_5", STREAMED_SOUND_MISSION_ASS_5},
- {"ASS_6", STREAMED_SOUND_MISSION_ASS_6}, {"ASS_7", STREAMED_SOUND_MISSION_ASS_7}, {"ASS_8", STREAMED_SOUND_MISSION_ASS_8},
- {"ASS_9", STREAMED_SOUND_MISSION_ASS_9}, {"ASS_10", STREAMED_SOUND_MISSION_ASS_10}, {"ASS_11", STREAMED_SOUND_MISSION_ASS_11},
- {"ASS_12", STREAMED_SOUND_MISSION_ASS_12}, {"ASS_13", STREAMED_SOUND_MISSION_ASS_13}, {"ASS_14", STREAMED_SOUND_MISSION_ASS_14},
- {"BUD1_1", STREAMED_SOUND_MISSION_BUD1_1}, {"BUD1_2", STREAMED_SOUND_MISSION_BUD1_2}, {"BUD1_3", STREAMED_SOUND_MISSION_BUD1_3},
- {"BUD1_4", STREAMED_SOUND_MISSION_BUD1_4}, {"BUD1_5", STREAMED_SOUND_MISSION_BUD1_5}, {"BUD1_9", STREAMED_SOUND_MISSION_BUD1_9},
- {"BUD1_10", STREAMED_SOUND_MISSION_BUD1_10}, {"BUD2_1", STREAMED_SOUND_MISSION_BUD2_1}, {"BUD2_2", STREAMED_SOUND_MISSION_BUD2_2},
- {"BUD2_3", STREAMED_SOUND_MISSION_BUD2_3}, {"BUD2_4", STREAMED_SOUND_MISSION_BUD2_4}, {"BUD2_5", STREAMED_SOUND_MISSION_BUD2_5},
- {"BUD2_6", STREAMED_SOUND_MISSION_BUD2_6}, {"BUD2_7", STREAMED_SOUND_MISSION_BUD2_7}, {"BUD3_1a", STREAMED_SOUND_MISSION_BUD3_1A},
- {"BUD3_1b", STREAMED_SOUND_MISSION_BUD3_1B}, {"BUD3_1", STREAMED_SOUND_MISSION_BUD3_1}, {"BUD3_2", STREAMED_SOUND_MISSION_BUD3_2},
- {"BUD3_3", STREAMED_SOUND_MISSION_BUD3_3}, {"BUD3_4", STREAMED_SOUND_MISSION_BUD3_4}, {"BUD3_1c", STREAMED_SOUND_MISSION_BUD3_1C},
- {"BUD3_5", STREAMED_SOUND_MISSION_BUD3_5}, {"BUD3_6", STREAMED_SOUND_MISSION_BUD3_6}, {"BUD3_7", STREAMED_SOUND_MISSION_BUD3_7},
- {"BUD3_8a", STREAMED_SOUND_MISSION_BUD3_8A}, {"BUD3_8b", STREAMED_SOUND_MISSION_BUD3_8B}, {"BUD3_8c", STREAMED_SOUND_MISSION_BUD3_8C},
- {"BUD3_9a", STREAMED_SOUND_MISSION_BUD3_9A}, {"BUD3_9b", STREAMED_SOUND_MISSION_BUD3_9B}, {"BUD3_9c", STREAMED_SOUND_MISSION_BUD3_9C},
- {"CAP1_2", STREAMED_SOUND_MISSION_CAP1_2}, {"CAP1_3", STREAMED_SOUND_MISSION_CAP1_3}, {"CAP1_4", STREAMED_SOUND_MISSION_CAP1_4},
- {"CAP1_5", STREAMED_SOUND_MISSION_CAP1_5}, {"CAP1_6", STREAMED_SOUND_MISSION_CAP1_6}, {"CAP1_7", STREAMED_SOUND_MISSION_CAP1_7},
- {"CAP1_8", STREAMED_SOUND_MISSION_CAP1_8}, {"CAP1_9", STREAMED_SOUND_MISSION_CAP1_9}, {"CAP1_10", STREAMED_SOUND_MISSION_CAP1_10},
- {"CAP1_11", STREAMED_SOUND_MISSION_CAP1_11}, {"CAP1_12", STREAMED_SOUND_MISSION_CAP1_12}, {"FINKILL", STREAMED_SOUND_MISSION_FINKILL},
- {"FIN_1a", STREAMED_SOUND_MISSION_FIN_1A}, {"FIN_1b", STREAMED_SOUND_MISSION_FIN_1B}, {"FIN_1c", STREAMED_SOUND_MISSION_FIN_1C},
- {"FIN_2b", STREAMED_SOUND_MISSION_FIN_2B}, {"FIN_2c", STREAMED_SOUND_MISSION_FIN_2C}, {"FIN_3", STREAMED_SOUND_MISSION_FIN_3},
- {"FIN_4", STREAMED_SOUND_MISSION_FIN_4}, {"FIN_5", STREAMED_SOUND_MISSION_FIN_5}, {"FIN_6", STREAMED_SOUND_MISSION_FIN_6},
- {"FIN_10", STREAMED_SOUND_MISSION_FIN_10}, {"FIN_11a", STREAMED_SOUND_MISSION_FIN_11A}, {"FIN_11b", STREAMED_SOUND_MISSION_FIN_11B},
- {"FIN_12a", STREAMED_SOUND_MISSION_FIN_12A}, {"FIN_12b", STREAMED_SOUND_MISSION_FIN_12B}, {"FIN_12c", STREAMED_SOUND_MISSION_FIN_12C},
- {"FIN_13", STREAMED_SOUND_MISSION_FIN_13}, {"BNK1_1", STREAMED_SOUND_MISSION_BNK1_1}, {"BNK1_2", STREAMED_SOUND_MISSION_BNK1_2},
- {"BNK1_3", STREAMED_SOUND_MISSION_BNK1_3}, {"BNK1_4", STREAMED_SOUND_MISSION_BNK1_4}, {"BNK1_5", STREAMED_SOUND_MISSION_BNK1_5},
- {"BNK1_6", STREAMED_SOUND_MISSION_BNK1_6}, {"BNK1_7", STREAMED_SOUND_MISSION_BNK1_7}, {"BNK1_8", STREAMED_SOUND_MISSION_BNK1_8},
- {"BNK1_10", STREAMED_SOUND_MISSION_BNK1_10}, {"BNK1_11", STREAMED_SOUND_MISSION_BNK1_11}, {"BNK1_12", STREAMED_SOUND_MISSION_BNK1_12},
- {"BNK1_13", STREAMED_SOUND_MISSION_BNK1_13}, {"BNK1_14", STREAMED_SOUND_MISSION_BNK1_14}, {"BNK2_1", STREAMED_SOUND_MISSION_BNK2_1},
- {"BNK2_2", STREAMED_SOUND_MISSION_BNK2_2}, {"BNK2_3", STREAMED_SOUND_MISSION_BNK2_3}, {"BNK2_4", STREAMED_SOUND_MISSION_BNK2_4},
- {"BNK2_5", STREAMED_SOUND_MISSION_BNK2_5}, {"BNK2_6", STREAMED_SOUND_MISSION_BNK2_6}, {"BNK2_7", STREAMED_SOUND_MISSION_BNK2_7},
- {"BNK2_8", STREAMED_SOUND_MISSION_BNK2_8}, {"BNK2_9", STREAMED_SOUND_MISSION_BNK2_9}, {"BNK3_1", STREAMED_SOUND_MISSION_BNK3_1},
- {"BNK3_2", STREAMED_SOUND_MISSION_BNK3_2}, {"BNK3_3a", STREAMED_SOUND_MISSION_BNK3_3A}, {"BNK3_3b", STREAMED_SOUND_MISSION_BNK3_3B},
- {"BNK3_3c", STREAMED_SOUND_MISSION_BNK3_3C}, {"BNK3_4a", STREAMED_SOUND_MISSION_BNK3_4A}, {"BNK3_4b", STREAMED_SOUND_MISSION_BNK3_4B},
- {"BNK3_4c", STREAMED_SOUND_MISSION_BNK3_4C}, {"BNK4_1", STREAMED_SOUND_MISSION_BNK4_1}, {"BNK4_2", STREAMED_SOUND_MISSION_BNK4_2},
- {"BNK4_3A", STREAMED_SOUND_MISSION_BNK4_3A}, {"BNK4_3B", STREAMED_SOUND_MISSION_BNK4_3B}, {"BNK4_3C", STREAMED_SOUND_MISSION_BNK4_3C},
- {"BNK4_3D", STREAMED_SOUND_MISSION_BNK4_3D}, {"BNK4_3E", STREAMED_SOUND_MISSION_BNK4_3E}, {"BNK4_3F", STREAMED_SOUND_MISSION_BNK4_3F},
- {"BNK4_3G", STREAMED_SOUND_MISSION_BNK4_3G}, {"BNK4_3H", STREAMED_SOUND_MISSION_BNK4_3H}, {"BNK4_3I", STREAMED_SOUND_MISSION_BNK4_3I},
- {"BNK4_3J", STREAMED_SOUND_MISSION_BNK4_3J}, {"BNK4_3K", STREAMED_SOUND_MISSION_BNK4_3K}, {"BNK4_3M", STREAMED_SOUND_MISSION_BNK4_3M},
- {"BNK4_3O", STREAMED_SOUND_MISSION_BNK4_3O}, {"BNK4_3P", STREAMED_SOUND_MISSION_BNK4_3P}, {"BNK4_3Q", STREAMED_SOUND_MISSION_BNK4_3Q},
- {"BNK4_3R", STREAMED_SOUND_MISSION_BNK4_3R}, {"BNK4_3S", STREAMED_SOUND_MISSION_BNK4_3S}, {"BNK4_3T", STREAMED_SOUND_MISSION_BNK4_3T},
- {"BNK4_3U", STREAMED_SOUND_MISSION_BNK4_3U}, {"BNK4_3V", STREAMED_SOUND_MISSION_BNK4_3V}, {"BNK4_4a", STREAMED_SOUND_MISSION_BNK4_4A},
- {"BNK4_4b", STREAMED_SOUND_MISSION_BNK4_4B}, {"BNK4_5", STREAMED_SOUND_MISSION_BNK4_5}, {"BNK4_6", STREAMED_SOUND_MISSION_BNK4_6},
- {"BNK4_7", STREAMED_SOUND_MISSION_BNK4_7}, {"BNK4_8", STREAMED_SOUND_MISSION_BNK4_8}, {"BNK4_9", STREAMED_SOUND_MISSION_BNK4_9},
- {"BNK4_10", STREAMED_SOUND_MISSION_BNK4_10}, {"BNK4_11", STREAMED_SOUND_MISSION_BNK4_11}, {"BK4_12a", STREAMED_SOUND_MISSION_BK4_12A},
- {"BK4_12b", STREAMED_SOUND_MISSION_BK4_12B}, {"BK4_12c", STREAMED_SOUND_MISSION_BK4_12C}, {"BNK4_13", STREAMED_SOUND_MISSION_BNK4_13},
- {"BK4_14a", STREAMED_SOUND_MISSION_BK4_14A}, {"BK4_14b", STREAMED_SOUND_MISSION_BK4_14B}, {"BNK4_15", STREAMED_SOUND_MISSION_BNK4_15},
- {"BNK4_16", STREAMED_SOUND_MISSION_BNK4_16}, {"BNK4_17", STREAMED_SOUND_MISSION_BNK4_17}, {"BNK4_18", STREAMED_SOUND_MISSION_BNK4_18},
- {"BK4_19a", STREAMED_SOUND_MISSION_BK4_19A}, {"BK4_19b", STREAMED_SOUND_MISSION_BK4_19B}, {"BK4_20a", STREAMED_SOUND_MISSION_BK4_20A},
- {"BK4_20b", STREAMED_SOUND_MISSION_BK4_20B}, {"BNK4_21", STREAMED_SOUND_MISSION_BNK4_21}, {"BNK422a", STREAMED_SOUND_MISSION_BNK422A},
- {"BNK422b", STREAMED_SOUND_MISSION_BNK422B}, {"BK4_23a", STREAMED_SOUND_MISSION_BK4_23A}, {"BK4_23b", STREAMED_SOUND_MISSION_BK4_23B},
- {"BK4_23c", STREAMED_SOUND_MISSION_BK4_23C}, {"BK4_23d", STREAMED_SOUND_MISSION_BK4_23D}, {"BK4_24a", STREAMED_SOUND_MISSION_BK4_24A},
- {"BK4_24b", STREAMED_SOUND_MISSION_BK4_24B}, {"BNK4_25", STREAMED_SOUND_MISSION_BNK4_25}, {"BNK4_26", STREAMED_SOUND_MISSION_BNK4_26},
- {"BNK4_27", STREAMED_SOUND_MISSION_BNK4_27}, {"BNK4_28", STREAMED_SOUND_MISSION_BNK4_28}, {"BNK4_29", STREAMED_SOUND_MISSION_BNK4_29},
- {"BNK4_30", STREAMED_SOUND_MISSION_BNK4_30}, {"BK4_31a", STREAMED_SOUND_MISSION_BK4_31A}, {"BK4_31b", STREAMED_SOUND_MISSION_BK4_31B},
- {"BNK4_32", STREAMED_SOUND_MISSION_BNK4_32}, {"BK4_34a", STREAMED_SOUND_MISSION_BK4_34A}, {"BK4_34b", STREAMED_SOUND_MISSION_BK4_34B},
- {"BK4_35a", STREAMED_SOUND_MISSION_BK4_35A}, {"BK4_35b", STREAMED_SOUND_MISSION_BK4_35B}, {"BNK4_36", STREAMED_SOUND_MISSION_BNK4_36},
- {"BNK4_37", STREAMED_SOUND_MISSION_BNK4_37}, {"BNK4_38", STREAMED_SOUND_MISSION_BNK4_38}, {"BNK_39", STREAMED_SOUND_MISSION_BNK4_39},
- {"BK4_40a", STREAMED_SOUND_MISSION_BK4_40A}, {"BK4_40b", STREAMED_SOUND_MISSION_BK4_40B}, {"BNK4_41", STREAMED_SOUND_MISSION_BNK4_41},
- {"BNK4_42", STREAMED_SOUND_MISSION_BNK4_42}, {"BNK4_43", STREAMED_SOUND_MISSION_BNK4_43}, {"BNK4_44", STREAMED_SOUND_MISSION_BNK4_44},
- {"BNK4_45", STREAMED_SOUND_MISSION_BNK4_45}, {"BNK4_46", STREAMED_SOUND_MISSION_BNK4_46}, {"BNK4_47", STREAMED_SOUND_MISSION_BNK4_47},
- {"BNK4_48", STREAMED_SOUND_MISSION_BNK4_48}, {"BNK4_49", STREAMED_SOUND_MISSION_BNK4_49}, {"BNK450A", STREAMED_SOUND_MISSION_BNK450A},
- {"BNK450B", STREAMED_SOUND_MISSION_BNK450B}, {"BNK4_51", STREAMED_SOUND_MISSION_BNK4_51}, {"BNK4_94", STREAMED_SOUND_MISSION_BNK4_94},
- {"BNK4_95", STREAMED_SOUND_MISSION_BNK4_95}, {"BNK4_96", STREAMED_SOUND_MISSION_BNK4_96}, {"BNK4_97", STREAMED_SOUND_MISSION_BNK4_97},
- {"BNK4_98", STREAMED_SOUND_MISSION_BNK4_98}, {"BNK4_99", STREAMED_SOUND_MISSION_BNK4_99}, {"CNT1_1", STREAMED_SOUND_MISSION_CNT1_1},
- {"CNT1_2", STREAMED_SOUND_MISSION_CNT1_2}, {"CNT1_3", STREAMED_SOUND_MISSION_CNT1_3}, {"CNT1_4", STREAMED_SOUND_MISSION_CNT1_4},
- {"CNT1_5", STREAMED_SOUND_MISSION_CNT1_5}, {"CNT2_1", STREAMED_SOUND_MISSION_CNT2_1}, {"CNT2_2", STREAMED_SOUND_MISSION_CNT2_2},
- {"CNT2_3", STREAMED_SOUND_MISSION_CNT2_3}, {"CNT2_4", STREAMED_SOUND_MISSION_CNT2_4}, {"PORN1_1", STREAMED_SOUND_MISSION_PORN1_1},
- {"PORN1_2", STREAMED_SOUND_MISSION_PORN1_2}, {"PORN1_3", STREAMED_SOUND_MISSION_PORN1_3}, {"PRN1_3A", STREAMED_SOUND_MISSION_PRN1_3A},
- {"PORN1_4", STREAMED_SOUND_MISSION_PORN1_4}, {"PORN1_5", STREAMED_SOUND_MISSION_PORN1_5}, {"PORN1_6", STREAMED_SOUND_MISSION_PORN1_6},
- {"PORN1_7", STREAMED_SOUND_MISSION_PORN1_7}, {"PORN1_8", STREAMED_SOUND_MISSION_PORN1_8}, {"PORN1_9", STREAMED_SOUND_MISSION_PORN1_9},
- {"PRN1_10", STREAMED_SOUND_MISSION_PRN1_10}, {"PRN1_11", STREAMED_SOUND_MISSION_PRN1_11}, {"PRN1_12", STREAMED_SOUND_MISSION_PRN1_12},
- {"PRN1_13", STREAMED_SOUND_MISSION_PRN1_13}, {"PRN1_14", STREAMED_SOUND_MISSION_PRN1_14}, {"PRN1_15", STREAMED_SOUND_MISSION_PRN1_15},
- {"PRN1_16", STREAMED_SOUND_MISSION_PRN1_16}, {"PRN1_17", STREAMED_SOUND_MISSION_PRN1_17}, {"PRN1_18", STREAMED_SOUND_MISSION_PRN1_18},
- {"PRN1_19", STREAMED_SOUND_MISSION_PRN1_19}, {"PRN1_20", STREAMED_SOUND_MISSION_PRN1_20}, {"PRN1_21", STREAMED_SOUND_MISSION_PRN1_21},
- {"PORN3_1", STREAMED_SOUND_MISSION_PORN3_1}, {"PORN3_2", STREAMED_SOUND_MISSION_PORN3_2}, {"PORN3_3", STREAMED_SOUND_MISSION_PORN3_3},
- {"PORN3_4", STREAMED_SOUND_MISSION_PORN3_4}, {"TAX1_1", STREAMED_SOUND_MISSION_TAX1_1}, {"TAX1_2", STREAMED_SOUND_MISSION_TAX1_2},
- {"TAX1_3", STREAMED_SOUND_MISSION_TAX1_3}, {"TAX1_4", STREAMED_SOUND_MISSION_TAX1_4}, {"TAX1_5", STREAMED_SOUND_MISSION_TAX1_5},
- {"TAX2_1", STREAMED_SOUND_MISSION_TAX2_1}, {"TAX2_2", STREAMED_SOUND_MISSION_TAX2_2}, {"TAX2_3", STREAMED_SOUND_MISSION_TAX2_3},
- {"TAX2_4", STREAMED_SOUND_MISSION_TAX2_4}, {"TAX2_5", STREAMED_SOUND_MISSION_TAX2_5}, {"TAX2_6", STREAMED_SOUND_MISSION_TAX2_6},
- {"TAX2_7", STREAMED_SOUND_MISSION_TAX2_7}, {"TAX3_1", STREAMED_SOUND_MISSION_TAX3_1}, {"TAX3_2", STREAMED_SOUND_MISSION_TAX3_2},
- {"TAX3_3", STREAMED_SOUND_MISSION_TAX3_3}, {"TAX3_4", STREAMED_SOUND_MISSION_TAX3_4}, {"TAX3_5", STREAMED_SOUND_MISSION_TAX3_5},
- {"TEX1_1", STREAMED_SOUND_MISSION_TEX1_1}, {"TEX1_2", STREAMED_SOUND_MISSION_TEX1_2}, {"TEX1_3", STREAMED_SOUND_MISSION_TEX1_3},
- {"TEX1_4", STREAMED_SOUND_MISSION_TEX1_4}, {"TEX1_5", STREAMED_SOUND_MISSION_TEX1_5}, {"TEX1_6", STREAMED_SOUND_MISSION_TEX1_6},
- {"TEX2_1", STREAMED_SOUND_MISSION_TEX2_1}, {"TEX3_1", STREAMED_SOUND_MISSION_TEX3_1}, {"TEX3_2", STREAMED_SOUND_MISSION_TEX3_2},
- {"TEX3_3", STREAMED_SOUND_MISSION_TEX3_3}, {"TEX3_4", STREAMED_SOUND_MISSION_TEX3_4}, {"TEX3_5", STREAMED_SOUND_MISSION_TEX3_5},
- {"TEX3_6", STREAMED_SOUND_MISSION_TEX3_6}, {"TEX3_7", STREAMED_SOUND_MISSION_TEX3_7}, {"TEX3_8", STREAMED_SOUND_MISSION_TEX3_8},
- {"PHIL1_2", STREAMED_SOUND_MISSION_PHIL1_2}, {"PHIL1_3", STREAMED_SOUND_MISSION_PHIL1_3}, {"PHIL2_1", STREAMED_SOUND_MISSION_PHIL2_1},
- {"PHIL2_2", STREAMED_SOUND_MISSION_PHIL2_2}, {"PHIL2_3", STREAMED_SOUND_MISSION_PHIL2_3}, {"PHIL2_4", STREAMED_SOUND_MISSION_PHIL2_4},
- {"PHIL2_5", STREAMED_SOUND_MISSION_PHIL2_5}, {"PHIL2_6", STREAMED_SOUND_MISSION_PHIL2_6}, {"PHIL2_7", STREAMED_SOUND_MISSION_PHIL2_7},
- {"PHIL2_8", STREAMED_SOUND_MISSION_PHIL2_8}, {"PHIL2_9", STREAMED_SOUND_MISSION_PHIL2_9}, {"PHIL210", STREAMED_SOUND_MISSION_PHIL210},
- {"PHIL211", STREAMED_SOUND_MISSION_PHIL211}, {"BIKE1_1", STREAMED_SOUND_MISSION_BIKE1_1}, {"BIKE1_2", STREAMED_SOUND_MISSION_BIKE1_2},
- {"BIKE1_3", STREAMED_SOUND_MISSION_BIKE1_3}, {"ROK1_1a", STREAMED_SOUND_MISSION_ROK1_1A}, {"ROK1_1b", STREAMED_SOUND_MISSION_ROK1_1B},
- {"ROK1_5", STREAMED_SOUND_MISSION_ROK1_5}, {"ROK1_6", STREAMED_SOUND_MISSION_ROK1_6}, {"ROK1_7", STREAMED_SOUND_MISSION_ROK1_7},
- {"ROK1_8", STREAMED_SOUND_MISSION_ROK1_8}, {"ROK1_9", STREAMED_SOUND_MISSION_ROK1_9}, {"PSYCH_1", STREAMED_SOUND_MISSION_PSYCH_1},
- {"PSYCH_2", STREAMED_SOUND_MISSION_PSYCH_2}, {"ROK2_01", STREAMED_SOUND_MISSION_ROK2_01}, {"ROK3_1", STREAMED_SOUND_MISSION_ROK3_1},
- {"ROK3_2", STREAMED_SOUND_MISSION_ROK3_2}, {"ROK3_3", STREAMED_SOUND_MISSION_ROK3_3}, {"ROK3_4", STREAMED_SOUND_MISSION_ROK3_4},
- {"ROK3_5", STREAMED_SOUND_MISSION_ROK3_5}, {"ROK3_6", STREAMED_SOUND_MISSION_ROK3_6}, {"ROK3_7", STREAMED_SOUND_MISSION_ROK3_7},
- {"ROK3_8", STREAMED_SOUND_MISSION_ROK3_8}, {"ROK3_9", STREAMED_SOUND_MISSION_ROK3_9}, {"ROK3_10", STREAMED_SOUND_MISSION_ROK3_10},
- {"ROK3_11", STREAMED_SOUND_MISSION_ROK3_11}, {"ROK3_12", STREAMED_SOUND_MISSION_ROK3_12}, {"ROK3_13", STREAMED_SOUND_MISSION_ROK3_13},
- {"ROK3_14", STREAMED_SOUND_MISSION_ROK3_14}, {"ROK3_15", STREAMED_SOUND_MISSION_ROK3_15}, {"ROK3_16", STREAMED_SOUND_MISSION_ROK3_16},
- {"ROK3_17", STREAMED_SOUND_MISSION_ROK3_17}, {"ROK3_18", STREAMED_SOUND_MISSION_ROK3_18}, {"ROK3_19", STREAMED_SOUND_MISSION_ROK3_19},
- {"ROK3_20", STREAMED_SOUND_MISSION_ROK3_20}, {"ROK3_21", STREAMED_SOUND_MISSION_ROK3_21}, {"ROK3_22", STREAMED_SOUND_MISSION_ROK3_22},
- {"ROK3_23", STREAMED_SOUND_MISSION_ROK3_23}, {"ROK3_24", STREAMED_SOUND_MISSION_ROK3_24}, {"ROK3_25", STREAMED_SOUND_MISSION_ROK3_25},
- {"ROK3_26", STREAMED_SOUND_MISSION_ROK3_26}, {"ROK3_27", STREAMED_SOUND_MISSION_ROK3_27}, {"ROK3_62", STREAMED_SOUND_MISSION_ROK3_62},
- {"ROK3_63", STREAMED_SOUND_MISSION_ROK3_63}, {"ROK3_64", STREAMED_SOUND_MISSION_ROK3_64}, {"ROK3_65", STREAMED_SOUND_MISSION_ROK3_65},
- {"ROK3_66", STREAMED_SOUND_MISSION_ROK3_66}, {"ROK3_67", STREAMED_SOUND_MISSION_ROK3_67}, {"ROK3_68", STREAMED_SOUND_MISSION_ROK3_68},
- {"ROK3_69", STREAMED_SOUND_MISSION_ROK3_69}, {"ROK3_70", STREAMED_SOUND_MISSION_ROK3_70}, {"ROK3_71", STREAMED_SOUND_MISSION_ROK3_71},
- {"ROK3_73", STREAMED_SOUND_MISSION_ROK3_73}, {"HAT_1a", STREAMED_SOUND_MISSION_HAT_1A}, {"intro1", STREAMED_SOUND_MISSION_INTRO1},
- {"intro2", STREAMED_SOUND_MISSION_INTRO2}, {"intro3", STREAMED_SOUND_MISSION_INTRO3}, {"intro4", STREAMED_SOUND_MISSION_INTRO4},
- {"CUB1_1", STREAMED_SOUND_MISSION_CUB1_1}, {"CUB1_2", STREAMED_SOUND_MISSION_CUB1_2}, {"CUB1_3", STREAMED_SOUND_MISSION_CUB1_3},
- {"CUB1_4", STREAMED_SOUND_MISSION_CUB1_4}, {"CUB1_5", STREAMED_SOUND_MISSION_CUB1_5}, {"CUB1_6", STREAMED_SOUND_MISSION_CUB1_6},
- {"CUB1_7", STREAMED_SOUND_MISSION_CUB1_7}, {"CUB1_8", STREAMED_SOUND_MISSION_CUB1_8}, {"CUB1_9", STREAMED_SOUND_MISSION_CUB1_9},
- {"CUB1_10", STREAMED_SOUND_MISSION_CUB1_10}, {"CUB2_1", STREAMED_SOUND_MISSION_CUB2_1}, {"CUB2_2", STREAMED_SOUND_MISSION_CUB2_2},
- {"CUB2_3a", STREAMED_SOUND_MISSION_CUB2_3A}, {"CUB2_3b", STREAMED_SOUND_MISSION_CUB2_3B}, {"CUB2_3c", STREAMED_SOUND_MISSION_CUB2_3C},
- {"CUB2_4a", STREAMED_SOUND_MISSION_CUB2_4A}, {"CUB2_5", STREAMED_SOUND_MISSION_CUB2_5}, {"CUB2_6", STREAMED_SOUND_MISSION_CUB2_6},
- {"CUB2_7", STREAMED_SOUND_MISSION_CUB2_7}, {"CUB2_8", STREAMED_SOUND_MISSION_CUB2_8}, {"CUB2_9", STREAMED_SOUND_MISSION_CUB2_9},
- {"CUB2_10", STREAMED_SOUND_MISSION_CUB2_10}, {"CUB2_11", STREAMED_SOUND_MISSION_CUB2_11}, {"CUB3_1", STREAMED_SOUND_MISSION_CUB3_1},
- {"CUB3_2", STREAMED_SOUND_MISSION_CUB3_2}, {"CUB3_3", STREAMED_SOUND_MISSION_CUB3_3}, {"CUB3_4", STREAMED_SOUND_MISSION_CUB3_4},
- {"CUB4_1", STREAMED_SOUND_MISSION_CUB4_1}, {"CUB4_2", STREAMED_SOUND_MISSION_CUB4_2}, {"CUB4_3", STREAMED_SOUND_MISSION_CUB4_3},
- {"CUB4_4", STREAMED_SOUND_MISSION_CUB4_4}, {"CUB4_5", STREAMED_SOUND_MISSION_CUB4_5}, {"CUB4_5A", STREAMED_SOUND_MISSION_CUB4_5A},
- {"CUB4_6", STREAMED_SOUND_MISSION_CUB4_6}, {"CUB4_7", STREAMED_SOUND_MISSION_CUB4_7}, {"CUB4_8", STREAMED_SOUND_MISSION_CUB4_8},
- {"CUB4_9", STREAMED_SOUND_MISSION_CUB4_9}, {"CUB4_10", STREAMED_SOUND_MISSION_CUB4_10}, {"CUB4_11", STREAMED_SOUND_MISSION_CUB4_11},
- {"CUB4_12", STREAMED_SOUND_MISSION_CUB4_12}, {"CUB4_13", STREAMED_SOUND_MISSION_CUB4_13}, {"CUB4_14", STREAMED_SOUND_MISSION_CUB4_14},
- {"CUB4_15", STREAMED_SOUND_MISSION_CUB4_15}, {"CUB4_16", STREAMED_SOUND_MISSION_CUB4_16}, {"golf_1", STREAMED_SOUND_MISSION_GOLF_1},
- {"golf_2", STREAMED_SOUND_MISSION_GOLF_2}, {"golf_3", STREAMED_SOUND_MISSION_GOLF_3}, {"bar_1", STREAMED_SOUND_MISSION_BAR_1},
- {"bar_2", STREAMED_SOUND_MISSION_BAR_2}, {"bar_3", STREAMED_SOUND_MISSION_BAR_3}, {"bar_4", STREAMED_SOUND_MISSION_BAR_4},
- {"bar_5", STREAMED_SOUND_MISSION_BAR_5}, {"bar_6", STREAMED_SOUND_MISSION_BAR_6}, {"bar_7", STREAMED_SOUND_MISSION_BAR_7},
- {"bar_8", STREAMED_SOUND_MISSION_BAR_8}, {"strip_1", STREAMED_SOUND_MISSION_STRIP_1}, {"strip_2", STREAMED_SOUND_MISSION_STRIP_2},
- {"strip_3", STREAMED_SOUND_MISSION_STRIP_3}, {"strip_4", STREAMED_SOUND_MISSION_STRIP_4}, {"strip_5", STREAMED_SOUND_MISSION_STRIP_5},
- {"strip_6", STREAMED_SOUND_MISSION_STRIP_6}, {"strip_7", STREAMED_SOUND_MISSION_STRIP_7}, {"strip_8", STREAMED_SOUND_MISSION_STRIP_8},
- {"strip_9", STREAMED_SOUND_MISSION_STRIP_9}, {"star_1", STREAMED_SOUND_MISSION_STAR_1}, {"star_2", STREAMED_SOUND_MISSION_STAR_2},
- {"star_3", STREAMED_SOUND_MISSION_STAR_3}, {"star_4", STREAMED_SOUND_MISSION_STAR_4}, {"mob_01a", STREAMED_SOUND_MISSION_MOB_01A},
- {"mob_01b", STREAMED_SOUND_MISSION_MOB_01B}, {"mob_01c", STREAMED_SOUND_MISSION_MOB_01C}, {"mob_02a", STREAMED_SOUND_MISSION_MOB_02A},
- {"mob_02b", STREAMED_SOUND_MISSION_MOB_02B}, {"mob_02c", STREAMED_SOUND_MISSION_MOB_02C}, {"mob_03a", STREAMED_SOUND_MISSION_MOB_03A},
- {"mob_03b", STREAMED_SOUND_MISSION_MOB_03B}, {"mob_03c", STREAMED_SOUND_MISSION_MOB_03C}, {"mob_03d", STREAMED_SOUND_MISSION_MOB_03D},
- {"mob_03e", STREAMED_SOUND_MISSION_MOB_03E}, {"shark_1", STREAMED_SOUND_MISSION_SHARK_1}, {"shark_2", STREAMED_SOUND_MISSION_SHARK_2},
- {"shark_3", STREAMED_SOUND_MISSION_SHARK_3}, {"shark_4", STREAMED_SOUND_MISSION_SHARK_4}, {"shark_5", STREAMED_SOUND_MISSION_SHARK_5},
- {"mob_04a", STREAMED_SOUND_MISSION_MOB_04A}, {"mob_04b", STREAMED_SOUND_MISSION_MOB_04B}, {"mob_04c", STREAMED_SOUND_MISSION_MOB_04C},
- {"mob_04d", STREAMED_SOUND_MISSION_MOB_04D}, {"mob_05a", STREAMED_SOUND_MISSION_MOB_05A}, {"mob_05b", STREAMED_SOUND_MISSION_MOB_05B},
- {"mob_05c", STREAMED_SOUND_MISSION_MOB_05C}, {"mob_05d", STREAMED_SOUND_MISSION_MOB_05D}, {"mob_06a", STREAMED_SOUND_MISSION_MOB_06A},
- {"mob_06b", STREAMED_SOUND_MISSION_MOB_06B}, {"mob_06c", STREAMED_SOUND_MISSION_MOB_06C}, {"mob_07a", STREAMED_SOUND_MISSION_MOB_07A},
- {"mob_07b", STREAMED_SOUND_MISSION_MOB_07B}, {"mob_08a", STREAMED_SOUND_MISSION_MOB_08A}, {"mob_08b", STREAMED_SOUND_MISSION_MOB_08B},
- {"mob_08c", STREAMED_SOUND_MISSION_MOB_08C}, {"mob_08d", STREAMED_SOUND_MISSION_MOB_08D}, {"mob_08e", STREAMED_SOUND_MISSION_MOB_08E},
- {"mob_08f", STREAMED_SOUND_MISSION_MOB_08F}, {"mob_08g", STREAMED_SOUND_MISSION_MOB_08G}, {"mob_09a", STREAMED_SOUND_MISSION_MOB_09A},
- {"mob_09b", STREAMED_SOUND_MISSION_MOB_09B}, {"mob_09c", STREAMED_SOUND_MISSION_MOB_09C}, {"mob_09d", STREAMED_SOUND_MISSION_MOB_09D},
- {"mob_09e", STREAMED_SOUND_MISSION_MOB_09E}, {"mob_09f", STREAMED_SOUND_MISSION_MOB_09F}, {"mob_10a", STREAMED_SOUND_MISSION_MOB_10A},
- {"mob_10b", STREAMED_SOUND_MISSION_MOB_10B}, {"mob_10c", STREAMED_SOUND_MISSION_MOB_10C}, {"mob_10d", STREAMED_SOUND_MISSION_MOB_10D},
- {"mob_10e", STREAMED_SOUND_MISSION_MOB_10E}, {"mob_11a", STREAMED_SOUND_MISSION_MOB_11A}, {"mob_11b", STREAMED_SOUND_MISSION_MOB_11B},
- {"mob_11c", STREAMED_SOUND_MISSION_MOB_11C}, {"mob_11d", STREAMED_SOUND_MISSION_MOB_11D}, {"mob_11e", STREAMED_SOUND_MISSION_MOB_11E},
- {"mob_11f", STREAMED_SOUND_MISSION_MOB_11F}, {"mob_14a", STREAMED_SOUND_MISSION_MOB_14A}, {"mob_14b", STREAMED_SOUND_MISSION_MOB_14B},
- {"mob_14c", STREAMED_SOUND_MISSION_MOB_14C}, {"mob_14d", STREAMED_SOUND_MISSION_MOB_14D}, {"mob_14e", STREAMED_SOUND_MISSION_MOB_14E},
- {"mob_14f", STREAMED_SOUND_MISSION_MOB_14F}, {"mob_14g", STREAMED_SOUND_MISSION_MOB_14G}, {"mob_14h", STREAMED_SOUND_MISSION_MOB_14H},
- {"mob_16a", STREAMED_SOUND_MISSION_MOB_16A}, {"mob_16b", STREAMED_SOUND_MISSION_MOB_16B}, {"mob_16c", STREAMED_SOUND_MISSION_MOB_16C},
- {"mob_16d", STREAMED_SOUND_MISSION_MOB_16D}, {"mob_16e", STREAMED_SOUND_MISSION_MOB_16E}, {"mob_16f", STREAMED_SOUND_MISSION_MOB_16F},
- {"mob_16g", STREAMED_SOUND_MISSION_MOB_16G}, {"mob_17a", STREAMED_SOUND_MISSION_MOB_17A}, {"mob_17b", STREAMED_SOUND_MISSION_MOB_17B},
- {"mob_17c", STREAMED_SOUND_MISSION_MOB_17C}, {"mob_17d", STREAMED_SOUND_MISSION_MOB_17D}, {"mob_17e", STREAMED_SOUND_MISSION_MOB_17E},
- {"mob_17g", STREAMED_SOUND_MISSION_MOB_17G}, {"mob_17h", STREAMED_SOUND_MISSION_MOB_17H}, {"mob_17i", STREAMED_SOUND_MISSION_MOB_17I},
- {"mob_17j", STREAMED_SOUND_MISSION_MOB_17J}, {"mob_17k", STREAMED_SOUND_MISSION_MOB_17K}, {"mob_17l", STREAMED_SOUND_MISSION_MOB_17L},
- {"mob_18a", STREAMED_SOUND_MISSION_MOB_18A}, {"mob_18b", STREAMED_SOUND_MISSION_MOB_18B}, {"mob_18c", STREAMED_SOUND_MISSION_MOB_18C},
- {"mob_18d", STREAMED_SOUND_MISSION_MOB_18D}, {"mob_18e", STREAMED_SOUND_MISSION_MOB_18E}, {"mob_18f", STREAMED_SOUND_MISSION_MOB_18F},
- {"mob_18g", STREAMED_SOUND_MISSION_MOB_18G}, {"mob_20a", STREAMED_SOUND_MISSION_MOB_20A}, {"mob_20b", STREAMED_SOUND_MISSION_MOB_20B},
- {"mob_20c", STREAMED_SOUND_MISSION_MOB_20C}, {"mob_20d", STREAMED_SOUND_MISSION_MOB_20D}, {"mob_20e", STREAMED_SOUND_MISSION_MOB_20E},
- {"mob_24a", STREAMED_SOUND_MISSION_MOB_24A}, {"mob_24b", STREAMED_SOUND_MISSION_MOB_24B}, {"mob_24c", STREAMED_SOUND_MISSION_MOB_24C},
- {"mob_24d", STREAMED_SOUND_MISSION_MOB_24D}, {"mob_24e", STREAMED_SOUND_MISSION_MOB_24E}, {"mob_24f", STREAMED_SOUND_MISSION_MOB_24F},
- {"mob_24g", STREAMED_SOUND_MISSION_MOB_24G}, {"mob_24h", STREAMED_SOUND_MISSION_MOB_24H}, {"mob_25a", STREAMED_SOUND_MISSION_MOB_25A},
- {"mob_25b", STREAMED_SOUND_MISSION_MOB_25B}, {"mob_25c", STREAMED_SOUND_MISSION_MOB_25C}, {"mob_25d", STREAMED_SOUND_MISSION_MOB_25D},
- {"mob_26a", STREAMED_SOUND_MISSION_MOB_26A}, {"mob_26b", STREAMED_SOUND_MISSION_MOB_26B}, {"mob_26c", STREAMED_SOUND_MISSION_MOB_26C},
- {"mob_26d", STREAMED_SOUND_MISSION_MOB_26D}, {"mob_26e", STREAMED_SOUND_MISSION_MOB_26E}, {"mob_29a", STREAMED_SOUND_MISSION_MOB_29A},
- {"mob_29b", STREAMED_SOUND_MISSION_MOB_29B}, {"mob_29c", STREAMED_SOUND_MISSION_MOB_29C}, {"mob_29d", STREAMED_SOUND_MISSION_MOB_29D},
- {"mob_29e", STREAMED_SOUND_MISSION_MOB_29E}, {"mob_29f", STREAMED_SOUND_MISSION_MOB_29F}, {"mob_29g", STREAMED_SOUND_MISSION_MOB_29G},
- {"mob_30a", STREAMED_SOUND_MISSION_MOB_30A}, {"mob_30b", STREAMED_SOUND_MISSION_MOB_30B}, {"mob_30c", STREAMED_SOUND_MISSION_MOB_30C},
- {"mob_30d", STREAMED_SOUND_MISSION_MOB_30D}, {"mob_30e", STREAMED_SOUND_MISSION_MOB_30E}, {"mob_30f", STREAMED_SOUND_MISSION_MOB_30F},
- {"mob_33a", STREAMED_SOUND_MISSION_MOB_33A}, {"mob_33b", STREAMED_SOUND_MISSION_MOB_33B}, {"mob_33c", STREAMED_SOUND_MISSION_MOB_33C},
- {"mob_33d", STREAMED_SOUND_MISSION_MOB_33D}, {"mob_34a", STREAMED_SOUND_MISSION_MOB_34A}, {"mob_34b", STREAMED_SOUND_MISSION_MOB_34B},
- {"mob_34c", STREAMED_SOUND_MISSION_MOB_34C}, {"mob_34d", STREAMED_SOUND_MISSION_MOB_34D}, {"mob_35a", STREAMED_SOUND_MISSION_MOB_35A},
- {"mob_35b", STREAMED_SOUND_MISSION_MOB_35B}, {"mob_35c", STREAMED_SOUND_MISSION_MOB_35C}, {"mob_35d", STREAMED_SOUND_MISSION_MOB_35D},
- {"mob_36a", STREAMED_SOUND_MISSION_MOB_36A}, {"mob_36b", STREAMED_SOUND_MISSION_MOB_36B}, {"mob_36c", STREAMED_SOUND_MISSION_MOB_36C},
- {"mob_40a", STREAMED_SOUND_MISSION_MOB_40A}, {"mob_40b", STREAMED_SOUND_MISSION_MOB_40B}, {"mob_40c", STREAMED_SOUND_MISSION_MOB_40C},
- {"mob_40d", STREAMED_SOUND_MISSION_MOB_40D}, {"mob_40e", STREAMED_SOUND_MISSION_MOB_40E}, {"mob_40f", STREAMED_SOUND_MISSION_MOB_40F},
- {"mob_40g", STREAMED_SOUND_MISSION_MOB_40G}, {"mob_40h", STREAMED_SOUND_MISSION_MOB_40H}, {"mob_40i", STREAMED_SOUND_MISSION_MOB_40I},
- {"mob_41a", STREAMED_SOUND_MISSION_MOB_41A}, {"mob_41b", STREAMED_SOUND_MISSION_MOB_41B}, {"mob_41c", STREAMED_SOUND_MISSION_MOB_41C},
- {"mob_41d", STREAMED_SOUND_MISSION_MOB_41D}, {"mob_41e", STREAMED_SOUND_MISSION_MOB_41E}, {"mob_41f", STREAMED_SOUND_MISSION_MOB_41F},
- {"mob_41g", STREAMED_SOUND_MISSION_MOB_41G}, {"mob_41h", STREAMED_SOUND_MISSION_MOB_41H}, {"mob_42a", STREAMED_SOUND_MISSION_MOB_42A},
- {"mob_42b", STREAMED_SOUND_MISSION_MOB_42B}, {"mob_42c", STREAMED_SOUND_MISSION_MOB_42C}, {"mob_42d", STREAMED_SOUND_MISSION_MOB_42D},
- {"mob_42e", STREAMED_SOUND_MISSION_MOB_42E}, {"mob_43a", STREAMED_SOUND_MISSION_MOB_43A}, {"mob_43b", STREAMED_SOUND_MISSION_MOB_43B},
- {"mob_43c", STREAMED_SOUND_MISSION_MOB_43C}, {"mob_43d", STREAMED_SOUND_MISSION_MOB_43D}, {"mob_43e", STREAMED_SOUND_MISSION_MOB_43E},
- {"mob_43f", STREAMED_SOUND_MISSION_MOB_43F}, {"mob_43g", STREAMED_SOUND_MISSION_MOB_43G}, {"mob_43h", STREAMED_SOUND_MISSION_MOB_43H},
- {"mob_45a", STREAMED_SOUND_MISSION_MOB_45A}, {"mob_45b", STREAMED_SOUND_MISSION_MOB_45B}, {"mob_45c", STREAMED_SOUND_MISSION_MOB_45C},
- {"mob_45d", STREAMED_SOUND_MISSION_MOB_45D}, {"mob_45e", STREAMED_SOUND_MISSION_MOB_45E}, {"mob_45f", STREAMED_SOUND_MISSION_MOB_45F},
- {"mob_45g", STREAMED_SOUND_MISSION_MOB_45G}, {"mob_45h", STREAMED_SOUND_MISSION_MOB_45H}, {"mob_45i", STREAMED_SOUND_MISSION_MOB_45I},
- {"mob_45j", STREAMED_SOUND_MISSION_MOB_45J}, {"mob_45k", STREAMED_SOUND_MISSION_MOB_45K}, {"mob_45l", STREAMED_SOUND_MISSION_MOB_45L},
- {"mob_45m", STREAMED_SOUND_MISSION_MOB_45M}, {"mob_45n", STREAMED_SOUND_MISSION_MOB_45N}, {"mob_46a", STREAMED_SOUND_MISSION_MOB_46A},
- {"mob_46b", STREAMED_SOUND_MISSION_MOB_46B}, {"mob_46c", STREAMED_SOUND_MISSION_MOB_46C}, {"mob_46d", STREAMED_SOUND_MISSION_MOB_46D},
- {"mob_46e", STREAMED_SOUND_MISSION_MOB_46E}, {"mob_46f", STREAMED_SOUND_MISSION_MOB_46F}, {"mob_46g", STREAMED_SOUND_MISSION_MOB_46G},
- {"mob_46h", STREAMED_SOUND_MISSION_MOB_46H}, {"mob_47a", STREAMED_SOUND_MISSION_MOB_47A}, {"mob_52a", STREAMED_SOUND_MISSION_MOB_52A},
- {"mob_52b", STREAMED_SOUND_MISSION_MOB_52B}, {"mob_52c", STREAMED_SOUND_MISSION_MOB_52C}, {"mob_52d", STREAMED_SOUND_MISSION_MOB_52D},
- {"mob_52e", STREAMED_SOUND_MISSION_MOB_52E}, {"mob_52f", STREAMED_SOUND_MISSION_MOB_52F}, {"mob_52g", STREAMED_SOUND_MISSION_MOB_52G},
- {"mob_52h", STREAMED_SOUND_MISSION_MOB_52H}, {"mob_54a", STREAMED_SOUND_MISSION_MOB_54A}, {"mob_54b", STREAMED_SOUND_MISSION_MOB_54B},
- {"mob_54c", STREAMED_SOUND_MISSION_MOB_54C}, {"mob_54d", STREAMED_SOUND_MISSION_MOB_54D}, {"mob_54e", STREAMED_SOUND_MISSION_MOB_54E},
- {"mob_55a", STREAMED_SOUND_MISSION_MOB_55A}, {"mob_55b", STREAMED_SOUND_MISSION_MOB_55B}, {"mob_55c", STREAMED_SOUND_MISSION_MOB_55C},
- {"mob_55d", STREAMED_SOUND_MISSION_MOB_55D}, {"mob_55e", STREAMED_SOUND_MISSION_MOB_55E}, {"mob_55f", STREAMED_SOUND_MISSION_MOB_55F},
- {"mob_56a", STREAMED_SOUND_MISSION_MOB_56A}, {"mob_56b", STREAMED_SOUND_MISSION_MOB_56B}, {"mob_56c", STREAMED_SOUND_MISSION_MOB_56C},
- {"mob_56d", STREAMED_SOUND_MISSION_MOB_56D}, {"mob_56e", STREAMED_SOUND_MISSION_MOB_56E}, {"mob_56f", STREAMED_SOUND_MISSION_MOB_56F},
- {"mob_57a", STREAMED_SOUND_MISSION_MOB_57A}, {"mob_57b", STREAMED_SOUND_MISSION_MOB_57B}, {"mob_57c", STREAMED_SOUND_MISSION_MOB_57C},
- {"mob_57d", STREAMED_SOUND_MISSION_MOB_57D}, {"mob_57e", STREAMED_SOUND_MISSION_MOB_57E}, {"mob_58a", STREAMED_SOUND_MISSION_MOB_58A},
- {"mob_58b", STREAMED_SOUND_MISSION_MOB_58B}, {"mob_58c", STREAMED_SOUND_MISSION_MOB_58C}, {"mob_58d", STREAMED_SOUND_MISSION_MOB_58D},
- {"mob_58e", STREAMED_SOUND_MISSION_MOB_58E}, {"mob_58f", STREAMED_SOUND_MISSION_MOB_58F}, {"mob_58g", STREAMED_SOUND_MISSION_MOB_58G},
- {"mob_61a", STREAMED_SOUND_MISSION_MOB_61A}, {"mob_61b", STREAMED_SOUND_MISSION_MOB_61B}, {"mob_62a", STREAMED_SOUND_MISSION_MOB_62A},
- {"mob_62b", STREAMED_SOUND_MISSION_MOB_62B}, {"mob_62c", STREAMED_SOUND_MISSION_MOB_62C}, {"mob_62d", STREAMED_SOUND_MISSION_MOB_62D},
- {"mob_63a", STREAMED_SOUND_MISSION_MOB_63A}, {"mob_63b", STREAMED_SOUND_MISSION_MOB_63B}, {"mob_63c", STREAMED_SOUND_MISSION_MOB_63C},
- {"mob_63d", STREAMED_SOUND_MISSION_MOB_63D}, {"mob_63e", STREAMED_SOUND_MISSION_MOB_63E}, {"mob_63f", STREAMED_SOUND_MISSION_MOB_63F},
- {"mob_63g", STREAMED_SOUND_MISSION_MOB_63G}, {"mob_63h", STREAMED_SOUND_MISSION_MOB_63H}, {"mob_63i", STREAMED_SOUND_MISSION_MOB_63I},
- {"mob_63j", STREAMED_SOUND_MISSION_MOB_63J}, {"mob_66a", STREAMED_SOUND_MISSION_MOB_66A}, {"mob_66b", STREAMED_SOUND_MISSION_MOB_66B},
- {"mob_68a", STREAMED_SOUND_MISSION_MOB_68A}, {"mob_68b", STREAMED_SOUND_MISSION_MOB_68B}, {"mob_68c", STREAMED_SOUND_MISSION_MOB_68C},
- {"mob_68d", STREAMED_SOUND_MISSION_MOB_68D}, {"mob_70a", STREAMED_SOUND_MISSION_MOB_70A}, {"mob_70b", STREAMED_SOUND_MISSION_MOB_70B},
- {"mob_71a", STREAMED_SOUND_MISSION_MOB_71A}, {"mob_71b", STREAMED_SOUND_MISSION_MOB_71B}, {"mob_71c", STREAMED_SOUND_MISSION_MOB_71C},
- {"mob_71d", STREAMED_SOUND_MISSION_MOB_71D}, {"mob_71e", STREAMED_SOUND_MISSION_MOB_71E}, {"mob_71f", STREAMED_SOUND_MISSION_MOB_71F},
- {"mob_71g", STREAMED_SOUND_MISSION_MOB_71G}, {"mob_71h", STREAMED_SOUND_MISSION_MOB_71H}, {"mob_71i", STREAMED_SOUND_MISSION_MOB_71I},
- {"mob_71j", STREAMED_SOUND_MISSION_MOB_71J}, {"mob_71k", STREAMED_SOUND_MISSION_MOB_71K}, {"mob_71l", STREAMED_SOUND_MISSION_MOB_71L},
- {"mob_71m", STREAMED_SOUND_MISSION_MOB_71M}, {"mob_71n", STREAMED_SOUND_MISSION_MOB_71N}, {"mob_72a", STREAMED_SOUND_MISSION_MOB_72A},
- {"mob_72b", STREAMED_SOUND_MISSION_MOB_72B}, {"mob_72c", STREAMED_SOUND_MISSION_MOB_72C}, {"mob_72d", STREAMED_SOUND_MISSION_MOB_72D},
- {"mob_72e", STREAMED_SOUND_MISSION_MOB_72E}, {"mob_72f", STREAMED_SOUND_MISSION_MOB_72F}, {"mob_72g", STREAMED_SOUND_MISSION_MOB_72G},
- {"mob_73a", STREAMED_SOUND_MISSION_MOB_73A}, {"mob_73c", STREAMED_SOUND_MISSION_MOB_73C}, {"mob_73d", STREAMED_SOUND_MISSION_MOB_73D},
- {"mob_73f", STREAMED_SOUND_MISSION_MOB_73F}, {"mob_73g", STREAMED_SOUND_MISSION_MOB_73G}, {"mob_73i", STREAMED_SOUND_MISSION_MOB_73I},
- {"mob_95a", STREAMED_SOUND_MISSION_MOB_95A}, {"mob_96a", STREAMED_SOUND_MISSION_MOB_96A}, {"mob_98a", STREAMED_SOUND_MISSION_MOB_98A},
- {"mob_99a", STREAMED_SOUND_MISSION_MOB_99A}, {"job1_1b", STREAMED_SOUND_MISSION_JOB1_1B}, {"job1_1c", STREAMED_SOUND_MISSION_JOB1_1C},
- {"job1_1d", STREAMED_SOUND_MISSION_JOB1_1D}, {"job2_1b", STREAMED_SOUND_MISSION_JOB2_1B}, {"job2_2", STREAMED_SOUND_MISSION_JOB2_2},
- {"job2_3", STREAMED_SOUND_MISSION_JOB2_3}, {"job2_4", STREAMED_SOUND_MISSION_JOB2_4}, {"job2_5", STREAMED_SOUND_MISSION_JOB2_5},
- {"job2_6", STREAMED_SOUND_MISSION_JOB2_6}, {"job2_7", STREAMED_SOUND_MISSION_JOB2_7}, {"job2_8", STREAMED_SOUND_MISSION_JOB2_8},
- {"job2_9", STREAMED_SOUND_MISSION_JOB2_9}, {"job3_1", STREAMED_SOUND_MISSION_JOB3_1}, {"job3_2", STREAMED_SOUND_MISSION_JOB3_2},
- {"job3_3", STREAMED_SOUND_MISSION_JOB3_3}, {"job4_1", STREAMED_SOUND_MISSION_JOB4_1}, {"job4_2", STREAMED_SOUND_MISSION_JOB4_2},
- {"job4_3", STREAMED_SOUND_MISSION_JOB4_3}, {"job5_1", STREAMED_SOUND_MISSION_JOB5_1}, {"job5_2", STREAMED_SOUND_MISSION_JOB5_2},
- {"job5_3", STREAMED_SOUND_MISSION_JOB5_3}, {"bjm1_20", STREAMED_SOUND_MISSION_BJM1_20}, {"bjm1_4", STREAMED_SOUND_MISSION_BJM1_4},
- {"bjm1_5", STREAMED_SOUND_MISSION_BJM1_5}, {"merc_39", STREAMED_SOUND_MISSION_MERC_39}, {"mono_1", STREAMED_SOUND_MISSION_MONO_1},
- {"mono_2", STREAMED_SOUND_MISSION_MONO_2}, {"mono_3", STREAMED_SOUND_MISSION_MONO_3}, {"mono_4", STREAMED_SOUND_MISSION_MONO_4},
- {"mono_5", STREAMED_SOUND_MISSION_MONO_5}, {"mono_6", STREAMED_SOUND_MISSION_MONO_6}, {"mono_7", STREAMED_SOUND_MISSION_MONO_7},
- {"mono_8", STREAMED_SOUND_MISSION_MONO_8}, {"mono_9", STREAMED_SOUND_MISSION_MONO_9}, {"mono10", STREAMED_SOUND_MISSION_MONO10},
- {"mono11", STREAMED_SOUND_MISSION_MONO11}, {"mono12", STREAMED_SOUND_MISSION_MONO12}, {"mono13", STREAMED_SOUND_MISSION_MONO13},
- {"mono14", STREAMED_SOUND_MISSION_MONO14}, {"mono15", STREAMED_SOUND_MISSION_MONO15}, {"mono16", STREAMED_SOUND_MISSION_MONO16},
- {"fud_01", STREAMED_SOUND_MISSION_FUD_01}, {"fud_02", STREAMED_SOUND_MISSION_FUD_02}, {"fud_03", STREAMED_SOUND_MISSION_FUD_03},
- {"fud_04", STREAMED_SOUND_MISSION_FUD_04}, {"fud_05", STREAMED_SOUND_MISSION_FUD_05}, {"fud_06", STREAMED_SOUND_MISSION_FUD_06},
- {"fud_07", STREAMED_SOUND_MISSION_FUD_07}, {"fud_08", STREAMED_SOUND_MISSION_FUD_08}, {"fud_09", STREAMED_SOUND_MISSION_FUD_09},
- {"fud_10", STREAMED_SOUND_MISSION_FUD_10}, {"fud_11", STREAMED_SOUND_MISSION_FUD_11}, {"fud_12", STREAMED_SOUND_MISSION_FUD_12},
- {"fud_13", STREAMED_SOUND_MISSION_FUD_13}, {"fud_14", STREAMED_SOUND_MISSION_FUD_14}, {"fud_15", STREAMED_SOUND_MISSION_FUD_15},
- {"fud_16", STREAMED_SOUND_MISSION_FUD_16}, {"fud_17", STREAMED_SOUND_MISSION_FUD_17}, {"fud_18", STREAMED_SOUND_MISSION_FUD_18},
- {"fud_19", STREAMED_SOUND_MISSION_FUD_19}, {"fud_20", STREAMED_SOUND_MISSION_FUD_20}, {"burg_01", STREAMED_SOUND_MISSION_BURG_01},
- {"burg_02", STREAMED_SOUND_MISSION_BURG_02}, {"burg_03", STREAMED_SOUND_MISSION_BURG_03}, {"burg_04", STREAMED_SOUND_MISSION_BURG_04},
- {"burg_05", STREAMED_SOUND_MISSION_BURG_05}, {"burg_06", STREAMED_SOUND_MISSION_BURG_06}, {"burg_07", STREAMED_SOUND_MISSION_BURG_07},
- {"burg_08", STREAMED_SOUND_MISSION_BURG_08}, {"burg_09", STREAMED_SOUND_MISSION_BURG_09}, {"burg_10", STREAMED_SOUND_MISSION_BURG_10},
- {"burg_11", STREAMED_SOUND_MISSION_BURG_11}, {"burg_12", STREAMED_SOUND_MISSION_BURG_12}, {"crust01", STREAMED_SOUND_MISSION_CRUST01},
- {"crust02", STREAMED_SOUND_MISSION_CRUST02}, {"crust03", STREAMED_SOUND_MISSION_CRUST03}, {"crust04", STREAMED_SOUND_MISSION_CRUST04},
- {"crust05", STREAMED_SOUND_MISSION_CRUST05}, {"crust06", STREAMED_SOUND_MISSION_CRUST06}, {"crust07", STREAMED_SOUND_MISSION_CRUST07},
- {"crust08", STREAMED_SOUND_MISSION_CRUST08}, {"crust09", STREAMED_SOUND_MISSION_CRUST09}, {"band_01", STREAMED_SOUND_MISSION_BAND_01},
- {"band_02", STREAMED_SOUND_MISSION_BAND_02}, {"band_03", STREAMED_SOUND_MISSION_BAND_03}, {"band_04", STREAMED_SOUND_MISSION_BAND_04},
- {"band_05", STREAMED_SOUND_MISSION_BAND_05}, {"band_06", STREAMED_SOUND_MISSION_BAND_06}, {"band_07", STREAMED_SOUND_MISSION_BAND_07},
- {"band_08", STREAMED_SOUND_MISSION_BAND_08}, {"shaft01", STREAMED_SOUND_MISSION_SHAFT01}, {"shaft02", STREAMED_SOUND_MISSION_SHAFT02},
- {"shaft03", STREAMED_SOUND_MISSION_SHAFT03}, {"shaft04", STREAMED_SOUND_MISSION_SHAFT04}, {"shaft05", STREAMED_SOUND_MISSION_SHAFT05},
- {"shaft06", STREAMED_SOUND_MISSION_SHAFT06}, {"shaft07", STREAMED_SOUND_MISSION_SHAFT07}, {"shaft08", STREAMED_SOUND_MISSION_SHAFT08},
- {"piss_01", STREAMED_SOUND_MISSION_PISS_01}, {"piss_02", STREAMED_SOUND_MISSION_PISS_02}, {"piss_03", STREAMED_SOUND_MISSION_PISS_03},
- {"piss_04", STREAMED_SOUND_MISSION_PISS_04}, {"piss_05", STREAMED_SOUND_MISSION_PISS_05}, {"piss_06", STREAMED_SOUND_MISSION_PISS_06},
- {"piss_07", STREAMED_SOUND_MISSION_PISS_07}, {"piss_08", STREAMED_SOUND_MISSION_PISS_08}, {"piss_09", STREAMED_SOUND_MISSION_PISS_09},
- {"piss_10", STREAMED_SOUND_MISSION_PISS_10}, {"piss_11", STREAMED_SOUND_MISSION_PISS_11}, {"piss_12", STREAMED_SOUND_MISSION_PISS_12},
- {"piss_13", STREAMED_SOUND_MISSION_PISS_13}, {"piss_14", STREAMED_SOUND_MISSION_PISS_14}, {"piss_15", STREAMED_SOUND_MISSION_PISS_15},
- {"piss_16", STREAMED_SOUND_MISSION_PISS_16}, {"piss_17", STREAMED_SOUND_MISSION_PISS_17}, {"piss_18", STREAMED_SOUND_MISSION_PISS_18},
- {"piss_19", STREAMED_SOUND_MISSION_PISS_19}, {"gimme01", STREAMED_SOUND_MISSION_GIMME01}, {"gimme02", STREAMED_SOUND_MISSION_GIMME02},
- {"gimme03", STREAMED_SOUND_MISSION_GIMME03}, {"gimme04", STREAMED_SOUND_MISSION_GIMME04}, {"gimme05", STREAMED_SOUND_MISSION_GIMME05},
- {"gimme06", STREAMED_SOUND_MISSION_GIMME06}, {"gimme07", STREAMED_SOUND_MISSION_GIMME07}, {"gimme08", STREAMED_SOUND_MISSION_GIMME08},
- {"gimme09", STREAMED_SOUND_MISSION_GIMME09}, {"gimme10", STREAMED_SOUND_MISSION_GIMME10}, {"gimme11", STREAMED_SOUND_MISSION_GIMME11},
- {"gimme12", STREAMED_SOUND_MISSION_GIMME12}, {"gimme13", STREAMED_SOUND_MISSION_GIMME13}, {"gimme14", STREAMED_SOUND_MISSION_GIMME14},
- {"gimme15", STREAMED_SOUND_MISSION_GIMME15}, {"bust_01", STREAMED_SOUND_MISSION_BUST_01}, {"bust_02", STREAMED_SOUND_MISSION_BUST_02},
- {"bust_03", STREAMED_SOUND_MISSION_BUST_03}, {"bust_04", STREAMED_SOUND_MISSION_BUST_04}, {"bust_05", STREAMED_SOUND_MISSION_BUST_05},
- {"bust_06", STREAMED_SOUND_MISSION_BUST_06}, {"bust_07", STREAMED_SOUND_MISSION_BUST_07}, {"bust_08", STREAMED_SOUND_MISSION_BUST_08},
- {"bust_09", STREAMED_SOUND_MISSION_BUST_09}, {"bust_10", STREAMED_SOUND_MISSION_BUST_10}, {"bust_11", STREAMED_SOUND_MISSION_BUST_11},
- {"bust_12", STREAMED_SOUND_MISSION_BUST_12}, {"bust_13", STREAMED_SOUND_MISSION_BUST_13}, {"bust_14", STREAMED_SOUND_MISSION_BUST_14},
- {"bust_15", STREAMED_SOUND_MISSION_BUST_15}, {"bust_16", STREAMED_SOUND_MISSION_BUST_16}, {"bust_17", STREAMED_SOUND_MISSION_BUST_17},
- {"bust_18", STREAMED_SOUND_MISSION_BUST_18}, {"bust_19", STREAMED_SOUND_MISSION_BUST_19}, {"bust_20", STREAMED_SOUND_MISSION_BUST_20},
- {"bust_21", STREAMED_SOUND_MISSION_BUST_21}, {"bust_22", STREAMED_SOUND_MISSION_BUST_22}, {"bust_23", STREAMED_SOUND_MISSION_BUST_23},
- {"bust_24", STREAMED_SOUND_MISSION_BUST_24}, {"bust_25", STREAMED_SOUND_MISSION_BUST_25}, {"bust_26", STREAMED_SOUND_MISSION_BUST_26},
- {"bust_27", STREAMED_SOUND_MISSION_BUST_27}, {"bust_28", STREAMED_SOUND_MISSION_BUST_28}, */ {nil, 0} };
+ {"JDAISH2", SFX_JD_SHOCKED_2},
+ {"JDAICR2", SFX_JD_CRASH_CAR_2},
+ {"JDAICR1", SFX_JD_CRASH_CAR_1},
+ {"MHAIJC1", SFX_MICKEY_JACKED_CAR_1},
+ {"JDAICR3", SFX_JD_CRASH_CAR_3},
+ {"CSHUTR", SFX_CSHUTR},
+ {"DRKNOCK", SFX_DRKNOCK},
+ {"NEDS4CA", SFX_NEDS4CA},
+ {"RUNPAST", SFX_RUNPAST},
+ {"LEAR", SFX_LEAR},
+ {"TING", SFX_TING},
+ {"CLICK", SFX_CLICK},
+ {"BBell", SFX_BRIDGE_BELL},
+ {"CHOP_1", SFX_CHOP_1},
+ {"CHOP_2", SFX_CHOP_2},
+ {"MAC4_CM", SFX_MAC4_CM},
+ {"MAC4_CN", SFX_MAC4_CN},
+ {"MAC4_CO", SFX_MAC4_CO},
+ {"MAC4_CP", SFX_MAC4_CP},
+ {"MAC4_CQ", SFX_MAC4_CQ},
+ {"MAC4_CR", SFX_MAC4_CR},
+ {"MAC4_CS", SFX_MAC4_CS},
+ {"SBell", SFX_SHOPBELL},
+ {"PROSCR1", SFX_PROSTITUTE_SHOCKED_2},
+ {"PROSCR2", SFX_PROSTITUTE_SHOCKED_3},
+ {"COLT_45", SFX_COLT_45},
+ {"SAL4_AJ", SFX_SAL4_AJ},
+ {"JD_SLPN", SFX_JD_SLPN},
+ {"MDON2AH", SFX_MDON2AH},
+ {"SAL4_EA", SFX_SAL4_EA},
+ {"mobring", SFX_SFX_RING},
+ {"pagring", SFX_SFX_PAGER_RING},
+ {"carrev", SFX_SFX_WILLIE_CAR_REV},
+ {"bikerev", SFX_SFX_WILLIE_BIKE_REV},
+ {"liftop", SFX_SFX_LIFT_OPEN},
+ {"liftcl", SFX_SFX_LIFT_CLOSE},
+ {"liftrun", SFX_SFX_LIFT_RUNNING},
+ {"liftbel", SFX_SFX_LIFT_BELL},
+ {"inlift", SFX_SFX_IN_LIFT},
+ {"caml", SFX_SFX_CAMERA_LEFT},
+ {"camr", SFX_SFX_CAMERA_RIGHT},
+ {"cheer1", SFX_SFX_CHEER1},
+ {"cheer2", SFX_SFX_CHEER2},
+ {"cheer3", SFX_SFX_CHEER3},
+ {"cheer4", SFX_SFX_CHEER4},
+ {"ooh1", SFX_SFX_OOH1},
+ {"ooh2", SFX_SFX_OOH2},
+ {"lanstp1", SFX_SFX_LANSTP1},
+ {"lanstp2", SFX_SFX_LANSTP2},
+ {"lanamu1", SFX_SFX_LANAMU1},
+ {"lanamu2", SFX_SFX_LANAMU2},
+ {"airhrnl", SFX_SFX_AIRHORN_LEFT},
+ {"airhrnr", SFX_SFX_AIRHORN_RIGH},
+ {"sniper", SFX_SFX_SNIPER_SHOT_1},
+ {"snipsh", SFX_SFX_SNIPER_SHOT_2},
+ {"bloroof", SFX_SFX_BLOW_ROOF},
+ {"sfx_01", SFX_SFX_SFX_01},
+ {"sfx_02", SFX_SFX_SFX_02},
+ {"ANG1_AA", SFX_SFX_ANG1_AA},
+ {"ANG1_AB", SFX_SFX_ANG1_AB},
+ {"ANG1_AC", SFX_SFX_ANG1_AC},
+ {"ANG1_AD", SFX_SFX_ANG1_AD},
+ {"ANG1_AE", SFX_SFX_ANG1_AE},
+ {"ANG1_AF", SFX_SFX_ANG1_AF},
+ {"ANG1_AG", SFX_SFX_ANG1_AG},
+ {"ANG1_AH", SFX_SFX_ANG1_AH},
+ {"ANG1_AI", SFX_SFX_ANG1_AI},
+ {"ANG1_AJ", SFX_SFX_ANG1_AJ},
+ {"ANG1_AK", SFX_SFX_ANG1_AK},
+ {"ANG1_AL", SFX_SFX_ANG1_AL},
+ {"ANG1_AM", SFX_SFX_ANG1_AM},
+ {"ANG1_AN", SFX_SFX_ANG1_AN},
+ {"ANG1_AO", SFX_SFX_ANG1_AO},
+ {"ANG1_AP", SFX_SFX_ANG1_AP},
+ {"ANG1_AQ", SFX_SFX_ANG1_AQ},
+ {"ANG1_AR", SFX_SFX_ANG1_AR},
+ {"ANG1_AS", SFX_SFX_ANG1_AS},
+ {"ANG1_AT", SFX_SFX_ANG1_AT},
+ {"ANG1_AU", SFX_SFX_ANG1_AU},
+ {"ANG1_AV", SFX_SFX_ANG1_AV},
+ {"ANG1_AW", SFX_SFX_ANG1_AW},
+ {"JDT3_AA", SFX_SFX_JDT3_AA},
+ {"JDT3_AB", SFX_SFX_JDT3_AB},
+ {"JDT3_AC", SFX_SFX_JDT3_AC},
+ {"JDT3_AD", SFX_SFX_JDT3_AD},
+ {"JDT3_AE", SFX_SFX_JDT3_AE},
+ {"JDT3_AG", SFX_SFX_JDT3_AG},
+ {"JDT3_AH", SFX_SFX_JDT3_AH},
+ {"JDT3_BA", SFX_SFX_JDT3_BA},
+ {"JDT3_BB", SFX_SFX_JDT3_BB},
+ {"JDT3_BC", SFX_SFX_JDT3_BC},
+ {"JDT3_BD", SFX_SFX_JDT3_BD},
+ {"JDT3_BE", SFX_SFX_JDT3_BE},
+ {"JDT3_BF", SFX_SFX_JDT3_BF},
+ {"MAR4_AA", SFX_SFX_MAR4_AA},
+ {"MAR4_AB", SFX_SFX_MAR4_AB},
+ {"MAR4_AC", SFX_SFX_MAR4_AC},
+ {"MAR4_AD", SFX_SFX_MAR4_AD},
+ {"MAR4_BA", SFX_SFX_MAR4_BA},
+ {"MAR4_BB", SFX_SFX_MAR4_BB},
+ {"MAR4_BC", SFX_SFX_MAR4_BC},
+ {"MAR4_BD", SFX_SFX_MAR4_BD},
+ {"MAR4_BE", SFX_SFX_MAR4_BE},
+ {"MAR4_BF", SFX_SFX_MAR4_BF},
+ {"MAR4_BG", SFX_SFX_MAR4_BG},
+ {"AVEN_AA", SFX_AVEN_AA},
+ {"AVEN_AB", SFX_AVEN_AB},
+ {"AVEN_AC", SFX_AVEN_AC},
+ {"AVEN_AD", SFX_AVEN_AD},
+ {"AVEN_AE", SFX_AVEN_AE},
+ {"AVEN_AF", SFX_AVEN_AF},
+ {"AVEN_AG", SFX_AVEN_AG},
+ {"AVEN_AH", SFX_AVEN_AH},
+ {"AVEN_AI", SFX_AVEN_AI},
+ {"AVEN_AJ", SFX_AVEN_AJ},
+ {"AVEN_AK", SFX_AVEN_AK},
+ {"AVEN_AL", SFX_AVEN_AL},
+ {"AVEN_AM", SFX_AVEN_AM},
+ {"AVEN_AN", SFX_AVEN_AN},
+ {"AVEN_AO", SFX_AVEN_AO},
+ {"AVEN_AP", SFX_AVEN_AP},
+ {"AVEN_AQ", SFX_AVEN_AQ},
+ {"AVEN_AR", SFX_AVEN_AR},
+ {"AVEN_AS", SFX_AVEN_AS},
+ {"AVEN_AT", SFX_AVEN_AT},
+ {"AVEN_AU", SFX_AVEN_AU},
+ {"AVEN_AV", SFX_AVEN_AV},
+ {"AVEN_AW", SFX_AVEN_AW},
+ {"AVE1_AA", SFX_AVE1_AA},
+ {"AVE1_AB", SFX_AVE1_AB},
+ {"AVE1_AC", SFX_AVE1_AC},
+ {"AVE1_AD", SFX_AVE1_AD},
+ {"AVE1_AE", SFX_AVE1_AE},
+ {"AVE1_AF", SFX_AVE1_AF},
+ {"AVE1_AG", SFX_AVE1_AG},
+ {"AVE2_AA", SFX_AVE2_AA},
+ {"AVE2_AC", SFX_AVE2_AC},
+ {"AVE2_AD", SFX_AVE2_AD},
+ {"AVE2_AE", SFX_AVE2_AE},
+ {"AVE2_AG", SFX_AVE2_AG},
+ {"AVE2_AH", SFX_AVE2_AH},
+ {"AVE3_AA", SFX_AVE3_AA},
+ {"AVE3_AB", SFX_AVE3_AB},
+ {"AVE3_AC", SFX_AVE3_AC},
+ {"AVE3_AD", SFX_AVE3_AD},
+ {"AVE3_AE", SFX_AVE3_AE},
+ {"AVE3_AF", SFX_AVE3_AF},
+ {"AVE3_AG", SFX_AVE3_AG},
+ {"AVE4_AA", SFX_AVE4_AA},
+ {"AVE4_AB", SFX_AVE4_AB},
+ {"AVE4_AD", SFX_AVE4_AD},
+ {"AVE4_AE", SFX_AVE4_AE},
+ {"AVE4_AF", SFX_AVE4_AF},
+ {"AVE4_AG", SFX_AVE4_AG},
+ {"AVE4_AH", SFX_AVE4_AH},
+ {"AVE5_AA", SFX_AVE5_AA},
+ {"AVE5_AB", SFX_AVE5_AB},
+ {"AVE5_AC", SFX_AVE5_AC},
+ {"AVE5_AD", SFX_AVE5_AD},
+ {"AVE5_AE", SFX_AVE5_AE},
+ {"AVE5_AF", SFX_AVE5_AF},
+ {"AVE5_AG", SFX_AVE5_AG},
+ {"AVE6_AA", SFX_AVE6_AA},
+ {"AVE6_AB", SFX_AVE6_AB},
+ {"AVE6_AC", SFX_AVE6_AC},
+ {"AVE6_AD", SFX_AVE6_AD},
+ {"AVE6_AE", SFX_AVE6_AE},
+ {"BONS2BA", SFX_BONS2BA},
+ {"BONS2BB", SFX_BONS2BB},
+ {"BONS2BC", SFX_BONS2BC},
+ {"BONS2BD", SFX_BONS2BD},
+ {"BONS2BE", SFX_BONS2BE},
+ {"CAD1_AA", SFX_CAD1_AA},
+ {"CAD1_AB", SFX_CAD1_AB},
+ {"CAD1_AC", SFX_CAD1_AC},
+ {"CAD1_AD", SFX_CAD1_AD},
+ {"CAD1_AE", SFX_CAD1_AE},
+ {"CAD2_AA", SFX_CAD2_AA},
+ {"CAD2_AB", SFX_CAD2_AB},
+ {"CAD2_AC", SFX_CAD2_AC},
+ {"CAD2_AD", SFX_CAD2_AD},
+ {"CAD2_AE", SFX_CAD2_AE},
+ {"CAD2_AF", SFX_CAD2_AF},
+ {"CAD3_AA", SFX_CAD3_AA},
+ {"CAD3_AB", SFX_CAD3_AB},
+ {"CAD3_AC", SFX_CAD3_AC},
+ {"CAD3_AD", SFX_CAD3_AD},
+ {"CAD3_AE", SFX_CAD3_AE},
+ {"CAD3_AF", SFX_CAD3_AF},
+ {"CAD4_AA", SFX_CAD4_AA},
+ {"CAD4_AB", SFX_CAD4_AB},
+ {"CAD4_AC", SFX_CAD4_AC},
+ {"CAD4_AD", SFX_CAD4_AD},
+ {"CAD4_AE", SFX_CAD4_AE},
+ {"CAD4_AF", SFX_CAD4_AF},
+ {"CAD5_AA", SFX_CAD5_AA},
+ {"CAD5_AB", SFX_CAD5_AB},
+ {"CAD5_AC", SFX_CAD5_AC},
+ {"CAD5_AD", SFX_CAD5_AD},
+ {"CAD5_AE", SFX_CAD5_AE},
+ {"CAD5_AF", SFX_CAD5_AF},
+ {"CAD6_AA", SFX_CAD6_AA},
+ {"CAD6_AB", SFX_CAD6_AB},
+ {"CAD6_AC", SFX_CAD6_AC},
+ {"CAD6_AD", SFX_CAD6_AD},
+ {"CAD6_AE", SFX_CAD6_AE},
+ {"CAD6_AF", SFX_CAD6_AF},
+ {"CAD7_AB", SFX_CAD7_AB},
+ {"CAD7_AC", SFX_CAD7_AC},
+ {"CAD7_AD", SFX_CAD7_AD},
+ {"CAD7_AE", SFX_CAD7_AE},
+ {"CAD8_AB", SFX_CAD8_AB},
+ {"CAD8_AC", SFX_CAD8_AC},
+ {"CAD8_AD", SFX_CAD8_AD},
+ {"CAD8_AE", SFX_CAD8_AE},
+ {"CAD8_AF", SFX_CAD8_AF},
+ {"CAD9_AA", SFX_CAD9_AA},
+ {"CAD9_AB", SFX_CAD9_AB},
+ {"CAD9_AC", SFX_CAD9_AC},
+ {"CAD9_AD", SFX_CAD9_AD},
+ {"CAD9_AE", SFX_CAD9_AE},
+ {"CAD9_AF", SFX_CAD9_AF},
+ {"DONH1CA", SFX_DONH1CA},
+ {"DONH1DA", SFX_DONH1DA},
+ {"DONH1DB", SFX_DONH1DB},
+ {"DONH1EA", SFX_DONH1EA},
+ {"DONH1EB", SFX_DONH1EB},
+ {"DONH1EC", SFX_DONH1EC},
+ {"DONH1ED", SFX_DONH1ED},
+ {"DONH1EE", SFX_DONH1EE},
+ {"DONH1FA", SFX_DONH1FA},
+ {"DONH1GA", SFX_DONH1GA},
+ {"DONH1GB", SFX_DONH1GB},
+ {"DONH1GC", SFX_DONH1GC},
+ {"DONH1HA", SFX_DONH1HA},
+ {"DONH1IA", SFX_DONH1IA},
+ {"DONH1IB", SFX_DONH1IB},
+ {"DONH1JA", SFX_DONH1JA},
+ {"DONH1JB", SFX_DONH1JB},
+ {"DONH1JC", SFX_DONH1JC},
+ {"DONH1JD", SFX_DONH1JD},
+ {"DONH1JE", SFX_DONH1JE},
+ {"DONH2AA", SFX_DONH2AA},
+ {"DONH2AB", SFX_DONH2AB},
+ {"DONH2AC", SFX_DONH2AC},
+ {"DONH2AD", SFX_DONH2AD},
+ {"DONH2AF", SFX_DONH2AF},
+ {"DONH2AG", SFX_DONH2AG},
+ {"DONH2AH", SFX_DONH2AH},
+ {"DONH2BA", SFX_DONH2BA},
+ {"DONH2BB", SFX_DONH2BB},
+ {"DONH2BC", SFX_DONH2BC},
+ {"DONH2BD", SFX_DONH2BD},
+ {"DONH2BE", SFX_DONH2BE},
+ {"DONH2BF", SFX_DONH2BF},
+ {"DONH2BG", SFX_DONH2BG},
+ {"DONH2BH", SFX_DONH2BH},
+ {"DONH2BI", SFX_DONH2BI},
+ {"DONH2BJ", SFX_DONH2BJ},
+ {"DONH2BK", SFX_DONH2BK},
+ {"DONH2BL", SFX_DONH2BL},
+ {"DONH2CA", SFX_DONH2CA},
+ {"DONH2CB", SFX_DONH2CB},
+ {"DONH2CC", SFX_DONH2CC},
+ {"DONH2CD", SFX_DONH2CD},
+ {"DONH2CE", SFX_DONH2CE},
+ {"DONH2CF", SFX_DONH2CF},
+ {"DONH2CG", SFX_DONH2CG},
+ {"DONH2DA", SFX_DONH2DA},
+ {"DONH2DB", SFX_DONH2DB},
+ {"DONH2DC", SFX_DONH2DC},
+ {"DONH2EA", SFX_DONH2EA},
+ {"DONH2EC", SFX_DONH2EC},
+ {"DONH3AA", SFX_DONH3AA},
+ {"DONH3AB", SFX_DONH3AB},
+ {"DONH3AC", SFX_DONH3AC},
+ {"DONH3AD", SFX_DONH3AD},
+ {"DONH3AE", SFX_DONH3AE},
+ {"DONH3AF", SFX_DONH3AF},
+ {"DONH3AG", SFX_DONH3AG},
+ {"DONH3AH", SFX_DONH3AH},
+ {"DONH3AI", SFX_DONH3AI},
+ {"DONH3BA", SFX_DONH3BA},
+ {"DONH3BB", SFX_DONH3BB},
+ {"DONH3CA", SFX_DONH3CA},
+ {"DONH3DA", SFX_DONH3DA},
+ {"DONH3EA", SFX_DONH3EA},
+ {"DONH3EB", SFX_DONH3EB},
+ {"DONH3EC", SFX_DONH3EC},
+ {"DONH3ED", SFX_DONH3ED},
+ {"DONH3EE", SFX_DONH3EE},
+ {"DONH3EF", SFX_DONH3EF},
+ {"DONH3FA", SFX_DONH3FA},
+ {"DONH3GA", SFX_DONH3GA},
+ {"DONH3GB", SFX_DONH3GB},
+ {"DONH3GC", SFX_DONH3GC},
+ {"DONH3GD", SFX_DONH3GD},
+ {"DONH3GE", SFX_DONH3GE},
+ {"DONH3GF", SFX_DONH3GF},
+ {"DONH3HA", SFX_DONH3HA},
+ {"DONH3HB", SFX_DONH3HB},
+ {"DONH4AA", SFX_DONH4AA},
+ {"DONH4AB", SFX_DONH4AB},
+ {"DONH4AC", SFX_DONH4AC},
+ {"DONH4AD", SFX_DONH4AD},
+ {"DONH4AE", SFX_DONH4AE},
+ {"DONH4AF", SFX_DONH4AF},
+ {"DONH4AG", SFX_DONH4AG},
+ {"DONH4AH", SFX_DONH4AH},
+ {"DONH4AI", SFX_DONH4AI},
+ {"DONH4AJ", SFX_DONH4AJ},
+ {"DONH5AA", SFX_DONH5AA},
+ {"DONH5AB", SFX_DONH5AB},
+ {"DONH5AC", SFX_DONH5AC},
+ {"DONH5AD", SFX_DONH5AD},
+ {"DONH5AE", SFX_DONH5AE},
+ {"DONH5AF", SFX_DONH5AF},
+ {"DONH5AG", SFX_DONH5AG},
+ {"DONH5AH", SFX_DONH5AH},
+ {"DONH5AI", SFX_DONH5AI},
+ {"DONH5AJ", SFX_DONH5AJ},
+ {"DONH5BA", SFX_DONH5BA},
+ {"DONH6BA", SFX_DONH6BA},
+ {"DONH6CA", SFX_DONH6CA},
+ {"DONH6CB", SFX_DONH6CB},
+ {"DONH6DA", SFX_DONH6DA},
+ {"DONH6DB", SFX_DONH6DB},
+ {"DONH6EA", SFX_DONH6EA},
+ {"DONH6EB", SFX_DONH6EB},
+ {"DONH6EC", SFX_DONH6EC},
+ {"DONH6FA", SFX_DONH6FA},
+ {"DONH6GA", SFX_DONH6GA},
+ {"DONH6GB", SFX_DONH6GB},
+ {"DONH6GC", SFX_DONH6GC},
+ {"DONH6GD", SFX_DONH6GD},
+ {"DONH6GF", SFX_DONH6GF},
+ {"DONS1AA", SFX_DONS1AA},
+ {"DONS1AB", SFX_DONS1AB},
+ {"DONS1AC", SFX_DONS1AC},
+ {"DONS1BA", SFX_DONS1BA},
+ {"DONS1BB", SFX_DONS1BB},
+ {"DONS2AA", SFX_DONS2AA},
+ {"DONS2AB", SFX_DONS2AB},
+ {"DONS2AC", SFX_DONS2AC},
+ {"DONS2AD", SFX_DONS2AD},
+ {"DONS2AE", SFX_DONS2AE},
+ {"DONS2AF", SFX_DONS2AF},
+ {"DONS2BA", SFX_DONS2BA},
+ {"DONS2BB", SFX_DONS2BB},
+ {"DONS2BC", SFX_DONS2BC},
+ {"DONS2BD", SFX_DONS2BD},
+ {"DONS2BE", SFX_DONS2BE},
+ {"DONS2CA", SFX_DONS2CA},
+ {"DONS2CB", SFX_DONS2CB},
+ {"DONS2CC", SFX_DONS2CC},
+ {"DONS2CD", SFX_DONS2CD},
+ {"DONS2CE", SFX_DONS2CE},
+ {"DONS2CF", SFX_DONS2CF},
+ {"DONS2CG", SFX_DONS2CG},
+ {"DONS2CH", SFX_DONS2CH},
+ {"DONS2CI", SFX_DONS2CI},
+ {"DONS2CJ", SFX_DONS2CJ},
+ {"DONS2CK", SFX_DONS2CK},
+ {"DONS2CL", SFX_DONS2CL},
+ {"DONS2CM", SFX_DONS2CM},
+ {"DONS2CN", SFX_DONS2CN},
+ {"DONS4AA", SFX_DONS4AA},
+ {"DONS4AB", SFX_DONS4AB},
+ {"DONS4AC", SFX_DONS4AC},
+ {"DONS4AD", SFX_DONS4AD},
+ {"DONS4AE", SFX_DONS4AE},
+ {"DONS4AF", SFX_DONS4AF},
+ {"DONS5AA", SFX_DONS5AA},
+ {"DONS5AB", SFX_DONS5AB},
+ {"DONS5AC", SFX_DONS5AC},
+ {"DONS5AD", SFX_DONS5AD},
+ {"DONS5AE", SFX_DONS5AE},
+ {"DONS5BA", SFX_DONS5BA},
+ {"DONS5BB", SFX_DONS5BB},
+ {"DONS5BC", SFX_DONS5BC},
+ {"DONS5BD", SFX_DONS5BD},
+ {"DONS5BE", SFX_DONS5BE},
+ {"DONS5CA", SFX_DONS5CA},
+ {"DONS5DA", SFX_DONS5DA},
+ {"DONS5EA", SFX_DONS5EA},
+ {"DONS5EB", SFX_DONS5EB},
+ {"DONS6AA", SFX_DONS6AA},
+ {"DONS6AB", SFX_DONS6AB},
+ {"DONS6AC", SFX_DONS6AC},
+ {"DONS6AD", SFX_DONS6AD},
+ {"DONS6AE", SFX_DONS6AE},
+ {"DONS6AF", SFX_DONS6AF},
+ {"DONS6AG", SFX_DONS6AG},
+ {"DONS7AA", SFX_DONS7AA},
+ {"DONS7AB", SFX_DONS7AB},
+ {"DONS7AC", SFX_DONS7AC},
+ {"DONS7AD", SFX_DONS7AD},
+ {"DONS7AE", SFX_DONS7AE},
+ {"DONS7AF", SFX_DONS7AF},
+ {"DONS7AG", SFX_DONS7AG},
+ {"HIT1_AA", SFX_HIT1_AA},
+ {"HIT1_AB", SFX_HIT1_AB},
+ {"HIT1_AC", SFX_HIT1_AC},
+ {"HIT1_AD", SFX_HIT1_AD},
+ {"HIT1_AE", SFX_HIT1_AE},
+ {"HIT1_AF", SFX_HIT1_AF},
+ {"HIT1_AG", SFX_HIT1_AG},
+ {"HIT2_AA", SFX_HIT2_AA},
+ {"HIT2_AB", SFX_HIT2_AB},
+ {"HIT2_AC", SFX_HIT2_AC},
+ {"HIT2_AD", SFX_HIT2_AD},
+ {"HIT2_AE", SFX_HIT2_AE},
+ {"HIT2_AF", SFX_HIT2_AF},
+ {"HIT2_AG", SFX_HIT2_AG},
+ {"HIT2_AH", SFX_HIT2_AH},
+ {"HIT3_AA", SFX_HIT3_AA},
+ {"HIT3_AB", SFX_HIT3_AB},
+ {"HIT3_AC", SFX_HIT3_AC},
+ {"HIT3_AD", SFX_HIT3_AD},
+ {"HIT3_AE", SFX_HIT3_AE},
+ {"HIT3_AF", SFX_HIT3_AF},
+ {"HIT3_AG", SFX_HIT3_AG},
+ {"HITM_AA", SFX_HITM_AA},
+ {"HITM_AB", SFX_HITM_AB},
+ {"HITM_AC", SFX_HITM_AC},
+ {"HITM_AD", SFX_HITM_AD},
+ {"JDT1_BA", SFX_JDT1_BA},
+ {"JDT1_BB", SFX_JDT1_BB},
+ {"JDT1_CA", SFX_JDT1_CA},
+ {"JDT1_CB", SFX_JDT1_CB},
+ {"JDT1_DA", SFX_JDT1_DA},
+ {"JDT1_DB", SFX_JDT1_DB},
+ {"JDT1_DC", SFX_JDT1_DC},
+ {"JDT1_DD", SFX_JDT1_DD},
+ {"JDT1_DE", SFX_JDT1_DE},
+ {"JDT1_DF", SFX_JDT1_DF},
+ {"JDT1_DG", SFX_JDT1_DG},
+ {"JDT1_DH", SFX_JDT1_DH},
+ {"JDT1_DI", SFX_JDT1_DI},
+ {"JDT1_DJ", SFX_JDT1_DJ},
+ {"JDT1_EA", SFX_JDT1_EA},
+ {"JDT1_EB", SFX_JDT1_EB},
+ {"JDT1_EC", SFX_JDT1_EC},
+ {"JDT1_ED", SFX_JDT1_ED},
+ {"JDT1_EE", SFX_JDT1_EE},
+ {"JDT1_FA", SFX_JDT1_FA},
+ {"JDT1_FB", SFX_JDT1_FB},
+ {"JDT1_FC", SFX_JDT1_FC},
+ {"JDT1_FD", SFX_JDT1_FD},
+ {"JDT1_FE", SFX_JDT1_FE},
+ {"JDT1_FF", SFX_JDT1_FF},
+ {"JDT1_GA", SFX_JDT1_GA},
+ {"JDT1_HA", SFX_JDT1_HA},
+ {"JDT1_HB", SFX_JDT1_HB},
+ {"JDT1_HC", SFX_JDT1_HC},
+ {"JDT1_HD", SFX_JDT1_HD},
+ {"JDT1_HE", SFX_JDT1_HE},
+ {"JDT1_HF", SFX_JDT1_HF},
+ {"JDT1_IA", SFX_JDT1_IA},
+ {"JDT1_JA", SFX_JDT1_JA},
+ {"JDT1_JB", SFX_JDT1_JB},
+ {"JDT1_KA", SFX_JDT1_KA},
+ {"JDT1_KB", SFX_JDT1_KB},
+ {"JDT1_KC", SFX_JDT1_KC},
+ {"JDT1_KD", SFX_JDT1_KD},
+ {"JDT1_KE", SFX_JDT1_KE},
+ {"JDT1_KF", SFX_JDT1_KF},
+ {"JDT1_LA", SFX_JDT1_LA},
+ {"JDT1_LB", SFX_JDT1_LB},
+ {"JDT2_AA", SFX_JDT2_AA},
+ {"JDT2_AB", SFX_JDT2_AB},
+ {"JDT2_AC", SFX_JDT2_AC},
+ {"JDT2_AD", SFX_JDT2_AD},
+ {"JDT2_AE", SFX_JDT2_AE},
+ {"JDT2_AF", SFX_JDT2_AF},
+ {"JDT2_AG", SFX_JDT2_AG},
+ {"JDT2_AH", SFX_JDT2_AH},
+ {"JDT2_BA", SFX_JDT2_BA},
+ {"JDT2_BB", SFX_JDT2_BB},
+ {"JDT2_BC", SFX_JDT2_BC},
+ {"JDT2_CA", SFX_JDT2_CA},
+ {"JDT2_CB", SFX_JDT2_CB},
+ {"JDT2_DA", SFX_JDT2_DA},
+ {"JDT2_DC", SFX_JDT2_DC},
+ {"JDT2_DD", SFX_JDT2_DD},
+ {"JDT2_DE", SFX_JDT2_DE},
+ {"JDT2_DF", SFX_JDT2_DF},
+ {"JDT3_AA", SFX_JDT3_AA},
+ {"JDT3_AB", SFX_JDT3_AB},
+ {"JDT3_AC", SFX_JDT3_AC},
+ {"JDT3_AD", SFX_JDT3_AD},
+ {"JDT3_AE", SFX_JDT3_AE},
+ {"JDT3_AG", SFX_JDT3_AG},
+ {"JDT3_AH", SFX_JDT3_AH},
+ {"JDT3_BA", SFX_JDT3_BA},
+ {"JDT3_BB", SFX_JDT3_BB},
+ {"JDT3_BC", SFX_JDT3_BC},
+ {"JDT3_BD", SFX_JDT3_BD},
+ {"JDT3_BE", SFX_JDT3_BE},
+ {"JDT3_BF", SFX_JDT3_BF},
+ {"JDT4_AA", SFX_JDT4_AA},
+ {"JDT4_AB", SFX_JDT4_AB},
+ {"JDT4_AC", SFX_JDT4_AC},
+ {"JDT4_AD", SFX_JDT4_AD},
+ {"JDT4_AE", SFX_JDT4_AE},
+ {"JDT4_AF", SFX_JDT4_AF},
+ {"JDT5_BA", SFX_JDT5_BA},
+ {"JDT5_CA", SFX_JDT5_CA},
+ {"JDT5_CC", SFX_JDT5_CC},
+ {"JDT5_CD", SFX_JDT5_CD},
+ {"JDT5_CE", SFX_JDT5_CE},
+ {"JDT5_CG", SFX_JDT5_CG},
+ {"JDT5_CI", SFX_JDT5_CI},
+ {"JDT5_DA", SFX_JDT5_DA},
+ {"JDT5_EA", SFX_JDT5_EA},
+ {"JDT5_EB", SFX_JDT5_EB},
+ {"JDT5_EC", SFX_JDT5_EC},
+ {"JDT5_ED", SFX_JDT5_ED},
+ {"JDT5_EE", SFX_JDT5_EE},
+ {"JDT6_AA", SFX_JDT6_AA},
+ {"JDT6_AB", SFX_JDT6_AB},
+ {"JDT6_AC", SFX_JDT6_AC},
+ {"JDT6_AE", SFX_JDT6_AE},
+ {"JDT6_AF", SFX_JDT6_AF},
+ {"JDT6_AG", SFX_JDT6_AG},
+ {"JDT6_AH", SFX_JDT6_AH},
+ {"JDT6_BA", SFX_JDT6_BA},
+ {"JDT6_BB", SFX_JDT6_BB},
+ {"JDT6_BC", SFX_JDT6_BC},
+ {"JDT6_BD", SFX_JDT6_BD},
+ {"JDT6_BE", SFX_JDT6_BE},
+ {"JDT6_BF", SFX_JDT6_BF},
+ {"JDT6_BG", SFX_JDT6_BG},
+ {"JDT7_AA", SFX_JDT7_AA},
+ {"JDT7_AB", SFX_JDT7_AB},
+ {"JDT7_AC", SFX_JDT7_AC},
+ {"JDT7_AD", SFX_JDT7_AD},
+ {"JDT7_AE", SFX_JDT7_AE},
+ {"JDT7_AF", SFX_JDT7_AF},
+ {"JDT7_AG", SFX_JDT7_AG},
+ {"JDT7_BA", SFX_JDT7_BA},
+ {"JDT7_BB", SFX_JDT7_BB},
+ {"JDT7_BC", SFX_JDT7_BC},
+ {"JDT7_CA", SFX_JDT7_CA},
+ {"JDT7_CB", SFX_JDT7_CB},
+ {"JDT7_CC", SFX_JDT7_CC},
+ {"JDT8_AA", SFX_JDT8_AA},
+ {"JDT8_AB", SFX_JDT8_AB},
+ {"JDT8_AC", SFX_JDT8_AC},
+ {"JDT8_AD", SFX_JDT8_AD},
+ {"JDT8_AE", SFX_JDT8_AE},
+ {"JDT8_AF", SFX_JDT8_AF},
+ {"JDT8_AG", SFX_JDT8_AG},
+ {"JDT8_AH", SFX_JDT8_AH},
+ {"JDT8_CA", SFX_JDT8_CA},
+ {"JDT8_CB", SFX_JDT8_CB},
+ {"JDT8_DA", SFX_JDT8_DA},
+ {"JDT8_DB", SFX_JDT8_DB},
+ {"JDT8_DC", SFX_JDT8_DC},
+ {"JDT8_DD", SFX_JDT8_DD},
+ {"JDT8_DE", SFX_JDT8_DE},
+ {"JDT8_DF", SFX_JDT8_DF},
+ {"JDT8_DG", SFX_JDT8_DG},
+ {"JDT8_EA", SFX_JDT8_EA},
+ {"JDT8_EB", SFX_JDT8_EB},
+ {"JDT8_EC", SFX_JDT8_EC},
+ {"JDT8_ED", SFX_JDT8_ED},
+ {"JDT8_EE", SFX_JDT8_EE},
+ {"JDT8_FA", SFX_JDT8_FA},
+ {"JDT8_FB", SFX_JDT8_FB},
+ {"JDT8_FC", SFX_JDT8_FC},
+ {"JDX_AA", SFX_JDX_AA},
+ {"JDX_AB", SFX_JDX_AB},
+ {"JDX_AC", SFX_JDX_AC},
+ {"M8B1AA", SFX_M8B1AA},
+ {"M8B1AB", SFX_M8B1AB},
+ {"MAC1_AA", SFX_MAC1_AA},
+ {"MAC1_AB", SFX_MAC1_AB},
+ {"MAC1_AC", SFX_MAC1_AC},
+ {"MAC1_AD", SFX_MAC1_AD},
+ {"MAC1_AE", SFX_MAC1_AE},
+ {"MAC1_AF", SFX_MAC1_AF},
+ {"MAC1_AG", SFX_MAC1_AG},
+ {"MAC1_AH", SFX_MAC1_AH},
+ {"MAC1_AI", SFX_MAC1_AI},
+ {"MAC1_AJ", SFX_MAC1_AJ},
+ {"MAC1_AK", SFX_MAC1_AK},
+ {"MAC1_AL", SFX_MAC1_AL},
+ {"MAC1_AM", SFX_MAC1_AM},
+ {"MAC1_AN", SFX_MAC1_AN},
+ {"MAC1_AO", SFX_MAC1_AO},
+ {"MAC1_BA", SFX_MAC1_BA},
+ {"MAC1_BB", SFX_MAC1_BB},
+ {"MAC1_BC", SFX_MAC1_BC},
+ {"MAC1_BD", SFX_MAC1_BD},
+ {"MAC1_BE", SFX_MAC1_BE},
+ {"MAC1_BF", SFX_MAC1_BF},
+ {"MAC1_BG", SFX_MAC1_BG},
+ {"MAC1_CA", SFX_MAC1_CA},
+ {"MAC1_CB", SFX_MAC1_CB},
+ {"MAC1_DA", SFX_MAC1_DA},
+ {"MAC1_EA", SFX_MAC1_EA},
+ {"MAC1_FA", SFX_MAC1_FA},
+ {"MAC1_FB", SFX_MAC1_FB},
+ {"MAC1_GA", SFX_MAC1_GA},
+ {"MAC1_GB", SFX_MAC1_GB},
+ {"MAC1_HA", SFX_MAC1_HA},
+ {"MAC1_IA", SFX_MAC1_IA},
+ {"MAC1_IB", SFX_MAC1_IB},
+ {"MAC1_JA", SFX_MAC1_JA},
+ {"MAC1_JB", SFX_MAC1_JB},
+ {"MAC2_AA", SFX_MAC2_AA},
+ {"MAC2_AB", SFX_MAC2_AB},
+ {"MAC2_AC", SFX_MAC2_AC},
+ {"MAC2_AD", SFX_MAC2_AD},
+ {"MAC2_AE", SFX_MAC2_AE},
+ {"MAC2_AF", SFX_MAC2_AF},
+ {"MAC2_AG", SFX_MAC2_AG},
+ {"MAC2_AH", SFX_MAC2_AH},
+ {"MAC2_AI", SFX_MAC2_AI},
+ {"MAC2_BA", SFX_MAC2_BA},
+ {"MAC2_BB", SFX_MAC2_BB},
+ {"MAC2_BC", SFX_MAC2_BC},
+ {"MAC3_AA", SFX_MAC3_AA},
+ {"MAC3_AB", SFX_MAC3_AB},
+ {"MAC3_AC", SFX_MAC3_AC},
+ {"MAC3_AD", SFX_MAC3_AD},
+ {"MAC3_AE", SFX_MAC3_AE},
+ {"MAC3_AF", SFX_MAC3_AF},
+ {"MAC3_AG", SFX_MAC3_AG},
+ {"MAC3_AH", SFX_MAC3_AH},
+ {"MAC3_AI", SFX_MAC3_AI},
+ {"MAC3_AJ", SFX_MAC3_AJ},
+ {"MAC3_AK", SFX_MAC3_AK},
+ {"MAC3_AL", SFX_MAC3_AL},
+ {"MAC3_AM", SFX_MAC3_AM},
+ {"MAC3_AN", SFX_MAC3_AN},
+ {"MAC3_BA", SFX_MAC3_BA},
+ {"MAC4_AA", SFX_MAC4_AA},
+ {"MAC4_AB", SFX_MAC4_AB},
+ {"MAC4_AC", SFX_MAC4_AC},
+ {"MAC4_AD", SFX_MAC4_AD},
+ {"MAC4_AE", SFX_MAC4_AE},
+ {"MAC4_AF", SFX_MAC4_AF},
+ {"MAC4_AG", SFX_MAC4_AG},
+ {"MAC4_AH", SFX_MAC4_AH},
+ {"MAC4_AI", SFX_MAC4_AI},
+ {"MAC4_AJ", SFX_MAC4_AJ},
+ {"MAC4_AK", SFX_MAC4_AK},
+ {"MAC4_AL", SFX_MAC4_AL},
+ {"MAC4_BA", SFX_MAC4_BA},
+ {"MAC4_BB", SFX_MAC4_BB},
+ {"MAC4_BC", SFX_MAC4_BC},
+ {"MAC4_BD", SFX_MAC4_BD},
+ {"MAC4_BE", SFX_MAC4_BE},
+ {"MAC4_BF", SFX_MAC4_BF},
+ {"MAC4_BG", SFX_MAC4_BG},
+ {"MAC4_BI", SFX_MAC4_BI},
+ {"MAC4_BJ", SFX_MAC4_BJ},
+ {"MAC4_BL", SFX_MAC4_BL},
+ {"MAC4_BM", SFX_MAC4_BM},
+ {"MAC4_BO", SFX_MAC4_BO},
+ {"MAC4_BP", SFX_MAC4_BP},
+ {"MAC4_BQ", SFX_MAC4_BQ},
+ {"MAC4_BR", SFX_MAC4_BR},
+ {"MAC4_BS", SFX_MAC4_BS},
+ {"MAC4_BT", SFX_MAC4_BT},
+ {"MAC4_BU", SFX_MAC4_BU},
+ {"MAC4_CA", SFX_MAC4_CA},
+ {"MAC4_CB", SFX_MAC4_CB},
+ {"MAC4_CC", SFX_MAC4_CC},
+ {"MAC4_CD", SFX_MAC4_CD},
+ {"MAC4_CE", SFX_MAC4_CE},
+ {"MAC4_CF", SFX_MAC4_CF},
+ {"MAC4_CG", SFX_MAC4_CG},
+ {"MAC4_CH", SFX_MAC4_CH},
+ {"MAC4_CI", SFX_MAC4_CI},
+ {"MAC4_CK", SFX_MAC4_CK},
+ {"MAC4_CM", SFX_MAC4_CM},
+ {"MAC5_AA", SFX_MAC5_AA},
+ {"MAC5_AB", SFX_MAC5_AB},
+ {"MAC5_AC", SFX_MAC5_AC},
+ {"MAC5_AD", SFX_MAC5_AD},
+ {"MAC5_AE", SFX_MAC5_AE},
+ {"MAC5_AF", SFX_MAC5_AF},
+ {"MAC5_AG", SFX_MAC5_AG},
+ {"MAC5_AH", SFX_MAC5_AH},
+ {"MAC5_AI", SFX_MAC5_AI},
+ {"MAC5_AJ", SFX_MAC5_AJ},
+ {"MAC5_AK", SFX_MAC5_AK},
+ {"MAC5_AL", SFX_MAC5_AL},
+ {"MAC5_AM", SFX_MAC5_AM},
+ {"MAC5_AN", SFX_MAC5_AN},
+ {"MAR1_AA", SFX_MAR1_AA},
+ {"MAR1_AB", SFX_MAR1_AB},
+ {"MAR1_AC", SFX_MAR1_AC},
+ {"MAR1_AD", SFX_MAR1_AD},
+ {"MAR1_AE", SFX_MAR1_AE},
+ {"MAR1_BA", SFX_MAR1_BA},
+ {"MAR1_CA", SFX_MAR1_CA},
+ {"MAR1_DA", SFX_MAR1_DA},
+ {"MAR1_DB", SFX_MAR1_DB},
+ {"MAR1_EA", SFX_MAR1_EA},
+ {"MAR1_FA", SFX_MAR1_FA},
+ {"MAR1_FB", SFX_MAR1_FB},
+ {"MAR1_FC", SFX_MAR1_FC},
+ {"MAR1_FD", SFX_MAR1_FD},
+ {"MAR1_GA", SFX_MAR1_GA},
+ {"MAR1_GB", SFX_MAR1_GB},
+ {"MAR1_GC", SFX_MAR1_GC},
+ {"MAR1_HA", SFX_MAR1_HA},
+ {"MAR1_HB", SFX_MAR1_HB},
+ {"MAR1_HC", SFX_MAR1_HC},
+ {"MAR1_IA", SFX_MAR1_IA},
+ {"MAR1_IB", SFX_MAR1_IB},
+ {"MAR1_IC", SFX_MAR1_IC},
+ {"MAR2_AA", SFX_MAR2_AA},
+ {"MAR2_AB", SFX_MAR2_AB},
+ {"MAR2_AC", SFX_MAR2_AC},
+ {"MAR2_AD", SFX_MAR2_AD},
+ {"MAR2_AE", SFX_MAR2_AE},
+ {"MAR2_AF", SFX_MAR2_AF},
+ {"MAR2_AG", SFX_MAR2_AG},
+ {"MAR2_AH", SFX_MAR2_AH},
+ {"MAR2_BA", SFX_MAR2_BA},
+ {"MAR2_BB", SFX_MAR2_BB},
+ {"MAR2_BC", SFX_MAR2_BC},
+ {"MAR2_CA", SFX_MAR2_CA},
+ {"MAR2_CB", SFX_MAR2_CB},
+ {"MAR2_CC", SFX_MAR2_CC},
+ {"MAR2_CD", SFX_MAR2_CD},
+ {"MAR2_CE", SFX_MAR2_CE},
+ {"MAR2_DA", SFX_MAR2_DA},
+ {"MAR2_EA", SFX_MAR2_EA},
+ {"MAR2_EB", SFX_MAR2_EB},
+ {"MAR2_EC", SFX_MAR2_EC},
+ {"MAR2_FA", SFX_MAR2_FA},
+ {"MAR2_FB", SFX_MAR2_FB},
+ {"MAR2_GA", SFX_MAR2_GA},
+ {"MAR2_GB", SFX_MAR2_GB},
+ {"MAR2_GC", SFX_MAR2_GC},
+ {"MAR2_GE", SFX_MAR2_GE},
+ {"MAR2_GG", SFX_MAR2_GG},
+ {"MAR2_GH", SFX_MAR2_GH},
+ {"MAR2_HA", SFX_MAR2_HA},
+ {"MAR2_HB", SFX_MAR2_HB},
+ {"MAR2_HC", SFX_MAR2_HC},
+ {"MAR3_AA", SFX_MAR3_AA},
+ {"MAR3_AB", SFX_MAR3_AB},
+ {"MAR3_AC", SFX_MAR3_AC},
+ {"MAR3_AD", SFX_MAR3_AD},
+ {"MAR3_BA", SFX_MAR3_BA},
+ {"MAR3_BB", SFX_MAR3_BB},
+ {"MAR3_BC", SFX_MAR3_BC},
+ {"MAR3_BD", SFX_MAR3_BD},
+ {"MAR3_BE", SFX_MAR3_BE},
+ {"MAR3_BF", SFX_MAR3_BF},
+ {"MAR4_BA", SFX_MAR4_BA},
+ {"MAR4_BC", SFX_MAR4_BC},
+ {"MAR4_BD", SFX_MAR4_BD},
+ {"MAR4_BF", SFX_MAR4_BF},
+ {"MAR5_AA", SFX_MAR5_AA},
+ {"MAR5_AB", SFX_MAR5_AB},
+ {"MAR5_AC", SFX_MAR5_AC},
+ {"MAR5_AD", SFX_MAR5_AD},
+ {"MAR5_AE", SFX_MAR5_AE},
+ {"MAR5_BA", SFX_MAR5_BA},
+ {"MAR5_BB", SFX_MAR5_BB},
+ {"MAR5_CA", SFX_MAR5_CA},
+ {"MAR5_CB", SFX_MAR5_CB},
+ {"MAR5_CC", SFX_MAR5_CC},
+ {"MAR5_CD", SFX_MAR5_CD},
+ {"MAR5_CE", SFX_MAR5_CE},
+ {"MAR5_EA", SFX_MAR5_EA},
+ {"MAR5_EB", SFX_MAR5_EB},
+ {"MAR5_EC", SFX_MAR5_EC},
+ {"MAR5_FA", SFX_MAR5_FA},
+ {"MAR5_FB", SFX_MAR5_FB},
+ {"MAR5_FC", SFX_MAR5_FC},
+ {"MAR5_FD", SFX_MAR5_FD},
+ {"MAR5_FE", SFX_MAR5_FE},
+ {"MAR5_FF", SFX_MAR5_FF},
+ {"MARX_AA", SFX_MARX_AA},
+ {"MARX_AB", SFX_MARX_AB},
+ {"MARX_AC", SFX_MARX_AC},
+ {"MDON1AA", SFX_MDON1AA},
+ {"MDON1AB", SFX_MDON1AB},
+ {"MDON1AC", SFX_MDON1AC},
+ {"MDON2AA", SFX_MDON2AA},
+ {"MDON2AB", SFX_MDON2AB},
+ {"MDON2AC", SFX_MDON2AC},
+ {"MDON2AD", SFX_MDON2AD},
+ {"MDON2AE", SFX_MDON2AE},
+ {"MDON2AF", SFX_MDON2AF},
+ {"MDON2AG", SFX_MDON2AG},
+ {"MDON3AA", SFX_MDON3AA},
+ {"MDON3AB", SFX_MDON3AB},
+ {"MDON3AC", SFX_MDON3AC},
+ {"MDON3AD", SFX_MDON3AD},
+ {"MDON3AE", SFX_MDON3AE},
+ {"MDON3AF", SFX_MDON3AF},
+ {"MDON3AG", SFX_MDON3AG},
+ {"MJDT1AA", SFX_MJDT1AA},
+ {"MJDT1AB", SFX_MJDT1AB},
+ {"MJDT1AC", SFX_MJDT1AC},
+ {"MJDT1AE", SFX_MJDT1AE},
+ {"MMA1AA", SFX_MMA1AA},
+ {"MMA1AB", SFX_MMA1AB},
+ {"MMA1AC", SFX_MMA1AC},
+ {"MMA1AD", SFX_MMA1AD},
+ {"MMA1AE", SFX_MMA1AE},
+ {"MMA2AA", SFX_MMA2AA},
+ {"MMA2AB", SFX_MMA2AB},
+ {"MMA2AC", SFX_MMA2AC},
+ {"MMA2AD", SFX_MMA2AD},
+ {"MMA2AE", SFX_MMA2AE},
+ {"MMA2AF", SFX_MMA2AF},
+ {"MMA2AG", SFX_MMA2AG},
+ {"MMA2AH", SFX_MMA2AH},
+ {"MMA2AI", SFX_MMA2AI},
+ {"MMA2AJ", SFX_MMA2AJ},
+ {"MMAR1AA", SFX_MMAR1AA},
+ {"MMAR1AB", SFX_MMAR1AB},
+ {"MMAR1AC", SFX_MMAR1AC},
+ {"MMAR1AD", SFX_MMAR1AD},
+ {"MMCA1AA", SFX_MMCA1AA},
+ {"MMCA1AB", SFX_MMCA1AB},
+ {"MMCA1AC", SFX_MMCA1AC},
+ {"MMCA1AD", SFX_MMCA1AD},
+ {"MMCA2AA", SFX_MMCA2AA},
+ {"MMCA2AB", SFX_MMCA2AB},
+ {"MMCA2AC", SFX_MMCA2AC},
+ {"MMCA2AD", SFX_MMCA2AD},
+ {"MMCA2AE", SFX_MMCA2AE},
+ {"MMCA2AF", SFX_MMCA2AF},
+ {"MSA10AA", SFX_MSA10AA},
+ {"MSA10AB", SFX_MSA10AB},
+ {"MSA10AC", SFX_MSA10AC},
+ {"MSA10AD", SFX_MSA10AD},
+ {"MSA11AA", SFX_MSA11AA},
+ {"MSA11AB", SFX_MSA11AB},
+ {"MSA11AC", SFX_MSA11AC},
+ {"MSA11AD", SFX_MSA11AD},
+ {"MSA12AA", SFX_MSA12AA},
+ {"MSA12AC", SFX_MSA12AC},
+ {"MSA12AD", SFX_MSA12AD},
+ {"MSA13AA", SFX_MSA13AA},
+ {"MSA13AB", SFX_MSA13AB},
+ {"MSA13AC", SFX_MSA13AC},
+ {"MSA13AD", SFX_MSA13AD},
+ {"MSA13AE", SFX_MSA13AE},
+ {"MSA13AF", SFX_MSA13AF},
+ {"MSA13AG", SFX_MSA13AG},
+ {"MSA13AH", SFX_MSA13AH},
+ {"MSA14AA", SFX_MSA14AA},
+ {"MSA14AB", SFX_MSA14AB},
+ {"MSA14AC", SFX_MSA14AC},
+ {"MSA14AD", SFX_MSA14AD},
+ {"MSAL5AA", SFX_MSAL5AA},
+ {"MSAL5AB", SFX_MSAL5AB},
+ {"MSAL6AA", SFX_MSAL6AA},
+ {"MSAL6AB", SFX_MSAL6AB},
+ {"MSAL6AC", SFX_MSAL6AC},
+ {"MSAL6AD", SFX_MSAL6AD},
+ {"MSAL7AA", SFX_MSAL7AA},
+ {"MSAL7AB", SFX_MSAL7AB},
+ {"MSAL7AC", SFX_MSAL7AC},
+ {"MSAL7AD", SFX_MSAL7AD},
+ {"MSAL7AE", SFX_MSAL7AE},
+ {"MSAL7AF", SFX_MSAL7AF},
+ {"MSAL7AG", SFX_MSAL7AG},
+ {"MSAL8AA", SFX_MSAL8AA},
+ {"MSAL8AB", SFX_MSAL8AB},
+ {"MSAL8AC", SFX_MSAL8AC},
+ {"MSAL8AD", SFX_MSAL8AD},
+ {"MSAL8AF", SFX_MSAL8AF},
+ {"MSAL8AG", SFX_MSAL8AG},
+ {"MSAL9AA", SFX_MSAL9AA},
+ {"MSAL9AB", SFX_MSAL9AB},
+ {"MSAL9AC", SFX_MSAL9AC},
+ {"MSAL9AD", SFX_MSAL9AD},
+ {"MSAL9AE", SFX_MSAL9AE},
+ {"MSAL9AF", SFX_MSAL9AF},
+ {"MTOS1AA", SFX_MTOS1AA},
+ {"MTOS1AB", SFX_MTOS1AB},
+ {"MTOS1AC", SFX_MTOS1AC},
+ {"MTOS1AD", SFX_MTOS1AD},
+ {"MTOS1AE", SFX_MTOS1AE},
+ {"MTOS1AF", SFX_MTOS1AF},
+ {"MTOS1AG", SFX_MTOS1AG},
+ {"MTOS2AA", SFX_MTOS2AA},
+ {"MTOS2AB", SFX_MTOS2AB},
+ {"MTOS2AC", SFX_MTOS2AC},
+ {"MTOS2AD", SFX_MTOS2AD},
+ {"MTOS2AE", SFX_MTOS2AE},
+ {"MTOS2AF", SFX_MTOS2AF},
+ {"MTOS2AG", SFX_MTOS2AG},
+ {"MVIC1AA", SFX_MVIC1AA},
+ {"MVIC1AB", SFX_MVIC1AB},
+ {"MVIC1AC", SFX_MVIC1AC},
+ {"MVIC1AD", SFX_MVIC1AD},
+ {"MVIC1AE", SFX_MVIC1AE},
+ {"MVIC1AF", SFX_MVIC1AF},
+ {"MVIC1AG", SFX_MVIC1AG},
+ {"MVIC1AH", SFX_MVIC1AH},
+ {"MVIC1AI", SFX_MVIC1AI},
+ {"MVIC1AJ", SFX_MVIC1AJ},
+ {"MVIC1AK", SFX_MVIC1AK},
+ {"NEDS1AA", SFX_NEDS1AA},
+ {"NEDS1AB", SFX_NEDS1AB},
+ {"NEDS1AC", SFX_NEDS1AC},
+ {"NEDS1AD", SFX_NEDS1AD},
+ {"NEDS1AE", SFX_NEDS1AE},
+ {"NEDS1AF", SFX_NEDS1AF},
+ {"NEDS1AG", SFX_NEDS1AG},
+ {"NEDS1BC", SFX_NEDS1BC},
+ {"NEDS1BE", SFX_NEDS1BE},
+ {"NEDS2AA", SFX_NEDS2AA},
+ {"NEDS2AB", SFX_NEDS2AB},
+ {"NEDS2AC", SFX_NEDS2AC},
+ {"NEDS2AD", SFX_NEDS2AD},
+ {"NEDS2AE", SFX_NEDS2AE},
+ {"NEDS2AF", SFX_NEDS2AF},
+ {"NEDS2BA", SFX_NEDS2BA},
+ {"NEDS3AA", SFX_NEDS3AA},
+ {"NEDS3AB", SFX_NEDS3AB},
+ {"NEDS3AC", SFX_NEDS3AC},
+ {"NEDS3AD", SFX_NEDS3AD},
+ {"NEDS4AA", SFX_NEDS4AA},
+ {"NEDS4AB", SFX_NEDS4AB},
+ {"NEDS4AC", SFX_NEDS4AC},
+ {"NEDS4AD", SFX_NEDS4AD},
+ {"NEDS4AE", SFX_NEDS4AE},
+ {"NEDS4BA", SFX_NEDS4BA},
+ {"NEDS4BB", SFX_NEDS4BB},
+ {"NEDS4BC", SFX_NEDS4BC},
+ {"NEDS4BD", SFX_NEDS4BD},
+ {"NEDS4BE", SFX_NEDS4BE},
+ {"NEDS4BF", SFX_NEDS4BF},
+ {"RAC1_AA", SFX_RAC1_AA},
+ {"RAC1_AB", SFX_RAC1_AB},
+ {"RAC1_AC", SFX_RAC1_AC},
+ {"RAC1_AD", SFX_RAC1_AD},
+ {"RAC1_AE", SFX_RAC1_AE},
+ {"RAC1_AF", SFX_RAC1_AF},
+ {"RAC1_AG", SFX_RAC1_AG},
+ {"RAC2_AA", SFX_RAC2_AA},
+ {"RAC2_AB", SFX_RAC2_AB},
+ {"RAC2_AC", SFX_RAC2_AC},
+ {"RAC2_AD", SFX_RAC2_AD},
+ {"RAC2_AE", SFX_RAC2_AE},
+ {"RAC2_AF", SFX_RAC2_AF},
+ {"RAC3_AB", SFX_RAC3_AB},
+ {"RAC3_AC", SFX_RAC3_AC},
+ {"RAC3_AD", SFX_RAC3_AD},
+ {"RAC3_AE", SFX_RAC3_AE},
+ {"RAC3_AF", SFX_RAC3_AF},
+ {"RAC3_AG", SFX_RAC3_AG},
+ {"RAYS1AA", SFX_RAYS1AA},
+ {"RAYS1AB", SFX_RAYS1AB},
+ {"RAYS1AC", SFX_RAYS1AC},
+ {"RAYS1BA", SFX_RAYS1BA},
+ {"RAYS1BB", SFX_RAYS1BB},
+ {"RAYS1CA", SFX_RAYS1CA},
+ {"RAYS1CB", SFX_RAYS1CB},
+ {"RAYS1CC", SFX_RAYS1CC},
+ {"RAYS1CD", SFX_RAYS1CD},
+ {"RAYS1CE", SFX_RAYS1CE},
+ {"RAYS1CF", SFX_RAYS1CF},
+ {"RAYS1DA", SFX_RAYS1DA},
+ {"RAYS1DB", SFX_RAYS1DB},
+ {"RAYS1DC", SFX_RAYS1DC},
+ {"RAYS2AA", SFX_RAYS2AA},
+ {"RAYS2AB", SFX_RAYS2AB},
+ {"RAYS2AD", SFX_RAYS2AD},
+ {"RAYS2AE", SFX_RAYS2AE},
+ {"RAYS2AF", SFX_RAYS2AF},
+ {"RAYS2AG", SFX_RAYS2AG},
+ {"RAYS2AH", SFX_RAYS2AH},
+ {"RAYS2AI", SFX_RAYS2AI},
+ {"RAYS2CA", SFX_RAYS2CA},
+ {"RAYS2DA", SFX_RAYS2DA},
+ {"RAYS4AA", SFX_RAYS4AA},
+ {"RAYS4AB", SFX_RAYS4AB},
+ {"RAYS4AC", SFX_RAYS4AC},
+ {"RAYS4AD", SFX_RAYS4AD},
+ {"RAYS4AE", SFX_RAYS4AE},
+ {"RAYS4AF", SFX_RAYS4AF},
+ {"RAYS5AA", SFX_RAYS5AA},
+ {"RAYS5AB", SFX_RAYS5AB},
+ {"RAYS5AC", SFX_RAYS5AC},
+ {"RAYS5AD", SFX_RAYS5AD},
+ {"RAYS5AE", SFX_RAYS5AE},
+ {"RAYS5AF", SFX_RAYS5AF},
+ {"RAYS5AG", SFX_RAYS5AG},
+ {"RAYS5AH", SFX_RAYS5AH},
+ {"RAYS5AI", SFX_RAYS5AI},
+ {"SAL1_AA", SFX_SAL1_AA},
+ {"SAL1_AB", SFX_SAL1_AB},
+ {"SAL1_AC", SFX_SAL1_AC},
+ {"SAL1_AE", SFX_SAL1_AE},
+ {"SAL2_AA", SFX_SAL2_AA},
+ {"SAL2_AB", SFX_SAL2_AB},
+ {"SAL2_AC", SFX_SAL2_AC},
+ {"SAL2_AD", SFX_SAL2_AD},
+ {"SAL2_AF", SFX_SAL2_AF},
+ {"SAL2_AG", SFX_SAL2_AG},
+ {"SAL2_CK", SFX_SAL2_CK},
+ {"SAL2_DA", SFX_SAL2_DA},
+ {"SAL2_DB", SFX_SAL2_DB},
+ {"SAL2_DC", SFX_SAL2_DC},
+ {"SAL2_EA", SFX_SAL2_EA},
+ {"SAL3_AA", SFX_SAL3_AA},
+ {"SAL3_AD", SFX_SAL3_AD},
+ {"SAL3_AE", SFX_SAL3_AE},
+ {"SAL3_AF", SFX_SAL3_AF},
+ {"SAL3_AG", SFX_SAL3_AG},
+ {"SAL3_AI", SFX_SAL3_AI},
+ {"SAL3_BB", SFX_SAL3_BB},
+ {"SAL3_CB", SFX_SAL3_CB},
+ {"SALH4AB", SFX_SALH4AB},
+ {"SALH4AC", SFX_SALH4AC},
+ {"SALH4AE", SFX_SALH4AE},
+ {"SALH4AF", SFX_SALH4AF},
+ {"SALH4AH", SFX_SALH4AH},
+ {"SALH4AI", SFX_SALH4AI},
+ {"SALH4AJ", SFX_SALH4AJ},
+ {"SAL4_AA", SFX_SAL4_AA},
+ {"SAL4_AB", SFX_SAL4_AB},
+ {"SAL4_AC", SFX_SAL4_AC},
+ {"SAL4_AD", SFX_SAL4_AD},
+ {"SAL4_AE", SFX_SAL4_AE},
+ {"SAL4_AF", SFX_SAL4_AF},
+ {"SAL4_AH", SFX_SAL4_AH},
+ {"SAL4_AI", SFX_SAL4_AI},
+ {"SAL4_BA", SFX_SAL4_BA},
+ {"SAL4_CA", SFX_SAL4_CA},
+ {"SAL4_CB", SFX_SAL4_CB},
+ {"SAL4_CC", SFX_SAL4_CC},
+ {"SAL4_CD", SFX_SAL4_CD},
+ {"SAL4_CE", SFX_SAL4_CE},
+ {"SAL4_CF", SFX_SAL4_CF},
+ {"SAL4_CG", SFX_SAL4_CG},
+ {"SAL4_CH", SFX_SAL4_CH},
+ {"SAL4_CI", SFX_SAL4_CI},
+ {"SAL4_CJ", SFX_SAL4_CJ},
+ {"SAL4_CK", SFX_SAL4_CK},
+ {"SAL4_CL", SFX_SAL4_CL},
+ {"SAL4_CM", SFX_SAL4_CM},
+ {"SAL4_CN", SFX_SAL4_CN},
+ {"SAL4_CO", SFX_SAL4_CO},
+ {"SAL4_CP", SFX_SAL4_CP},
+ {"SAL4_CQ", SFX_SAL4_CQ},
+ {"SAL4_DA", SFX_SAL4_DA},
+ {"SAL5_AB", SFX_SAL5_AB},
+ {"SAL5_AE", SFX_SAL5_AE},
+ {"SAL5_AH", SFX_SAL5_AH},
+ {"SAL5_AI", SFX_SAL5_AI},
+ {"SAL5_AJ", SFX_SAL5_AJ},
+ {"SAL6_AA", SFX_SAL6_AA},
+ {"SAL6_AB", SFX_SAL6_AB},
+ {"SAL6_AC", SFX_SAL6_AC},
+ {"SAL6_AE", SFX_SAL6_AE},
+ {"SAL6_AF", SFX_SAL6_AF},
+ {"SAL6_AG", SFX_SAL6_AG},
+ {"SAL6_AH", SFX_SAL6_AH},
+ {"SAL6_AI", SFX_SAL6_AI},
+ {"SAL6_AJ", SFX_SAL6_AJ},
+ {"SAL6_BA", SFX_SAL6_BA},
+ {"SAL6_BB", SFX_SAL6_BB},
+ {"SAL6_BC", SFX_SAL6_BC},
+ {"SAL6_BD", SFX_SAL6_BD},
+ {"SAL6_BE", SFX_SAL6_BE},
+ {"SAL6_BF", SFX_SAL6_BF},
+ {"SAL6_BH", SFX_SAL6_BH},
+ {"SAL6_BJ", SFX_SAL6_BJ},
+ {"SAL6_BK", SFX_SAL6_BK},
+ {"SAL7_AA", SFX_SAL7_AA},
+ {"SAL7_AB", SFX_SAL7_AB},
+ {"SAL7_AC", SFX_SAL7_AC},
+ {"SAL7_AD", SFX_SAL7_AD},
+ {"SAL7_AE", SFX_SAL7_AE},
+ {"SAL7_AF", SFX_SAL7_AF},
+ {"SAL7_AG", SFX_SAL7_AG},
+ {"SAL7_AI", SFX_SAL7_AI},
+ {"SAL7_AJ", SFX_SAL7_AJ},
+ {"SAL7_AK", SFX_SAL7_AK},
+ {"SAL7_BA", SFX_SAL7_BA},
+ {"SAL7_BB", SFX_SAL7_BB},
+ {"SAL7_BC", SFX_SAL7_BC},
+ {"SAL7_BD", SFX_SAL7_BD},
+ {"SAL7_BE", SFX_SAL7_BE},
+ {"SAL7_BF", SFX_SAL7_BF},
+ {"SAL7_BG", SFX_SAL7_BG},
+ {"SAL7_BH", SFX_SAL7_BH},
+ {"SAL7_CA", SFX_SAL7_CA},
+ {"SAL7_CB", SFX_SAL7_CB},
+ {"SAL7_CC", SFX_SAL7_CC},
+ {"SAL8_AA", SFX_SAL8_AA},
+ {"SAL8_AB", SFX_SAL8_AB},
+ {"SAL8_AC", SFX_SAL8_AC},
+ {"SAL8_BA", SFX_SAL8_BA},
+ {"SAL8_BC", SFX_SAL8_BC},
+ {"SAL8_BD", SFX_SAL8_BD},
+ {"SAL8_BE", SFX_SAL8_BE},
+ {"SAL8_BF", SFX_SAL8_BF},
+ {"SAL8_CA", SFX_SAL8_CA},
+ {"SAL8_CC", SFX_SAL8_CC},
+ {"SAL8_DA", SFX_SAL8_DA},
+ {"SAL8_DB", SFX_SAL8_DB},
+ {"SAL8_DC", SFX_SAL8_DC},
+ {"SAL8_EA", SFX_SAL8_EA},
+ {"SAL8_EC", SFX_SAL8_EC},
+ {"SAL8_ED", SFX_SAL8_ED},
+ {"SAL8_EE", SFX_SAL8_EE},
+ {"SAL8_FA", SFX_SAL8_FA},
+ {"SAL8_GA", SFX_SAL8_GA},
+ {"SAL8_GB", SFX_SAL8_GB},
+ {"SALH1GB", SFX_SALH1GB},
+ {"SALH1HB", SFX_SALH1HB},
+ {"SALH2AA", SFX_SALH2AA},
+ {"SALH2AB", SFX_SALH2AB},
+ {"SALH2AC", SFX_SALH2AC},
+ {"SALH2AD", SFX_SALH2AD},
+ {"SALH2AE", SFX_SALH2AE},
+ {"SALH2AF", SFX_SALH2AF},
+ {"SALH2AG", SFX_SALH2AG},
+ {"SALH2AH", SFX_SALH2AH},
+ {"SALH2BA", SFX_SALH2BA},
+ {"SALH2BB", SFX_SALH2BB},
+ {"SALH2BC", SFX_SALH2BC},
+ {"SALH2BD", SFX_SALH2BD},
+ {"SALH2BH", SFX_SALH2BH},
+ {"SALH2BI", SFX_SALH2BI},
+ {"SALH2CA", SFX_SALH2CA},
+ {"SALH3AA", SFX_SALH3AA},
+ {"SALH3AB", SFX_SALH3AB},
+ {"SALH3AC", SFX_SALH3AC},
+ {"SALH3AD", SFX_SALH3AD},
+ {"SALH3AE", SFX_SALH3AE},
+ {"SALH3AF", SFX_SALH3AF},
+ {"SALH3AG", SFX_SALH3AG},
+ {"SALH3AH", SFX_SALH3AH},
+ {"SALH3AI", SFX_SALH3AI},
+ {"SALH3AJ", SFX_SALH3AJ},
+ {"SALH3AK", SFX_SALH3AK},
+ {"SALH3BA", SFX_SALH3BA},
+ {"SALH3BB", SFX_SALH3BB},
+ {"SALH3CA", SFX_SALH3CA},
+ {"SALH3CC", SFX_SALH3CC},
+ {"SALH3CD", SFX_SALH3CD},
+ {"SALH4AA", SFX_SALH4AA},
+ {"SALH4AD", SFX_SALH4AD},
+ {"SALH4AG", SFX_SALH4AG},
+ {"SALH4BA", SFX_SALH4BA},
+ {"SALH4BB", SFX_SALH4BB},
+ {"SALH4BC", SFX_SALH4BC},
+ {"SALH4CA", SFX_SALH4CA},
+ {"SALH5CA", SFX_SALH5CA},
+ {"SALH5CB", SFX_SALH5CB},
+ {"SALH5CC", SFX_SALH5CC},
+ {"SALH5DA", SFX_SALH5DA},
+ {"SALH5DB", SFX_SALH5DB},
+ {"SALH5EA", SFX_SALH5EA},
+ {"SALH5EB", SFX_SALH5EB},
+ {"SALH5FA", SFX_SALH5FA},
+ {"SALH5GA", SFX_SALH5GA},
+ {"SALH5GB", SFX_SALH5GB},
+ {"SALH5GC", SFX_SALH5GC},
+ {"SALH5HA", SFX_SALH5HA},
+ {"SALH5IA", SFX_SALH5IA},
+ {"SALH5IB", SFX_SALH5IB},
+ {"SALH5JA", SFX_SALH5JA},
+ {"SALH5KA", SFX_SALH5KA},
+ {"SALH5KB", SFX_SALH5KB},
+ {"SALH5LA", SFX_SALH5LA},
+ {"SALH5LB", SFX_SALH5LB},
+ {"SALH5MA", SFX_SALH5MA},
+ {"SALH5MB", SFX_SALH5MB},
+ {"SALH5MC", SFX_SALH5MC},
+ {"SALH5NA", SFX_SALH5NA},
+ {"SALH5OA", SFX_SALH5OA},
+ {"SALH5OB", SFX_SALH5OB},
+ {"SALH5OC", SFX_SALH5OC},
+ {"SALH5OD", SFX_SALH5OD},
+ {"SALH5OE", SFX_SALH5OE},
+ {"SALH5OF", SFX_SALH5OF},
+ {"SALH5OG", SFX_SALH5OG},
+ {"SALH5OH", SFX_SALH5OH},
+ {"SALH5OI", SFX_SALH5OI},
+ {"SALH5OJ", SFX_SALH5OJ},
+ {"SALH5OK", SFX_SALH5OK},
+ {"SALS1AA", SFX_SALS1AA},
+ {"SALS1AB", SFX_SALS1AB},
+ {"SALS1AC", SFX_SALS1AC},
+ {"SALS1AD", SFX_SALS1AD},
+ {"SALS1AE", SFX_SALS1AE},
+ {"SALS1AF", SFX_SALS1AF},
+ {"SALS1AG", SFX_SALS1AG},
+ {"SALS1AH", SFX_SALS1AH},
+ {"SALS1AI", SFX_SALS1AI},
+ {"SALS2AA", SFX_SALS2AA},
+ {"SALS2AB", SFX_SALS2AB},
+ {"SALS2AC", SFX_SALS2AC},
+ {"SALS2AD", SFX_SALS2AD},
+ {"SALS2BC", SFX_SALS2BC},
+ {"SALS2BD", SFX_SALS2BD},
+ {"SALS2BE", SFX_SALS2BE},
+ {"SALS2BF", SFX_SALS2BF},
+ {"SALS2CD", SFX_SALS2CD},
+ {"SALS3AA", SFX_SALS3AA},
+ {"SALS3AB", SFX_SALS3AB},
+ {"SALS3AC", SFX_SALS3AC},
+ {"SALS3BB", SFX_SALS3BB},
+ {"SALS3BD", SFX_SALS3BD},
+ {"SALS3CA", SFX_SALS3CA},
+ {"SALS3CB", SFX_SALS3CB},
+ {"SALS3CC", SFX_SALS3CC},
+ {"SALS3CD", SFX_SALS3CD},
+ {"SALS3CE", SFX_SALS3CE},
+ {"SALS3CF", SFX_SALS3CF},
+ {"SALS3CG", SFX_SALS3CG},
+ {"SALS3DA", SFX_SALS3DA},
+ {"SALS3DE", SFX_SALS3DE},
+ {"SALS3DH", SFX_SALS3DH},
+ {"SALS3DI", SFX_SALS3DI},
+ {"SALS4AA", SFX_SALS4AA},
+ {"SALS4AB", SFX_SALS4AB},
+ {"SALS4AC", SFX_SALS4AC},
+ {"SALS4AD", SFX_SALS4AD},
+ {"SALS4AE", SFX_SALS4AE},
+ {"SALS4AF", SFX_SALS4AF},
+ {"SALS4BA", SFX_SALS4BA},
+ {"SALS4BB", SFX_SALS4BB},
+ {"SALS4BC", SFX_SALS4BC},
+ {"SALS4BD", SFX_SALS4BD},
+ {"SALS4BE", SFX_SALS4BE},
+ {"SALS4BF", SFX_SALS4BF},
+ {"SALS4BG", SFX_SALS4BG},
+ {"SALS4BH", SFX_SALS4BH},
+ {"SALS5AA", SFX_SALS5AA},
+ {"SALS5AB", SFX_SALS5AB},
+ {"SALS5AC", SFX_SALS5AC},
+ {"SALS5AD", SFX_SALS5AD},
+ {"SALS5AE", SFX_SALS5AE},
+ {"SALS5AF", SFX_SALS5AF},
+ {"SALS5BA", SFX_SALS5BA},
+ {"SALS5BB", SFX_SALS5BB},
+ {"SALS5BC", SFX_SALS5BC},
+ {"SALS5BD", SFX_SALS5BD},
+ {"SALS5BE", SFX_SALS5BE},
+ {"SALS5BF", SFX_SALS5BF},
+ {"SALS5BG", SFX_SALS5BG},
+ {"SALS5CA", SFX_SALS5CA},
+ {"SALS5CB", SFX_SALS5CB},
+ {"SALS5CC", SFX_SALS5CC},
+ {"SALS5CD", SFX_SALS5CD},
+ {"SALS5CE", SFX_SALS5CE},
+ {"SALS5CF", SFX_SALS5CF},
+ {"SALS5CG", SFX_SALS5CG},
+ {"SALS6AA", SFX_SALS6AA},
+ {"SALS6AB", SFX_SALS6AB},
+ {"SALS6AD", SFX_SALS6AD},
+ {"SALS6AE", SFX_SALS6AE},
+ {"SALS6AF", SFX_SALS6AF},
+ {"SALS6AG", SFX_SALS6AG},
+ {"SALS6AH", SFX_SALS6AH},
+ {"SALX_AA", SFX_SALX_AA},
+ {"SALX_AB", SFX_SALX_AB},
+ {"SALX_AC", SFX_SALX_AC},
+ {"SALX_AD", SFX_SALX_AD},
+ {"SALX_AE", SFX_SALX_AE},
+ {"SALX_AF", SFX_SALX_AF},
+ {"SALX_AG", SFX_SALX_AG},
+ {"SALX_AH", SFX_SALX_AH},
+ {"SALX_AI", SFX_SALX_AI},
+ {"SALX_AK", SFX_SALX_AK},
+ {"SALX_AL", SFX_SALX_AL},
+ {"SALX_AM", SFX_SALX_AM},
+ {"SALX_AN", SFX_SALX_AN},
+ {"SALX_AO", SFX_SALX_AO},
+ {"SALX_AP", SFX_SALX_AP},
+ {"SALX_AQ", SFX_SALX_AQ},
+ {"SALX_AR", SFX_SALX_AR},
+ {"SALX_AS", SFX_SALX_AS},
+ {"TAN1_AA", SFX_TAN1_AA},
+ {"TAN1_AB", SFX_TAN1_AB},
+ {"TAN1_AD", SFX_TAN1_AD},
+ {"TAN1_AE", SFX_TAN1_AE},
+ {"TAN1_AF", SFX_TAN1_AF},
+ {"TAN1_AG", SFX_TAN1_AG},
+ {"TAN1_AH", SFX_TAN1_AH},
+ {"TAN1_AI", SFX_TAN1_AI},
+ {"TAN1_AJ", SFX_TAN1_AJ},
+ {"TAN2_AA", SFX_TAN2_AA},
+ {"TAN2_AB", SFX_TAN2_AB},
+ {"TAN2_AC", SFX_TAN2_AC},
+ {"TAN2_AE", SFX_TAN2_AE},
+ {"TAN2_AF", SFX_TAN2_AF},
+ {"TAN2_AG", SFX_TAN2_AG},
+ {"TAN2_AH", SFX_TAN2_AH},
+ {"TAN2_AJ", SFX_TAN2_AJ},
+ {"TAN3_AA", SFX_TAN3_AA},
+ {"TAN3_AB", SFX_TAN3_AB},
+ {"TAN3_AC", SFX_TAN3_AC},
+ {"TAN3_AD", SFX_TAN3_AD},
+ {"TAN3_AE", SFX_TAN3_AE},
+ {"TAN3_AF", SFX_TAN3_AF},
+ {"TAN3_AG", SFX_TAN3_AG},
+ {"TAN3_AH", SFX_TAN3_AH},
+ {"TOSH1AA", SFX_TOSH1AA},
+ {"TOSH1AB", SFX_TOSH1AB},
+ {"TOSH1AC", SFX_TOSH1AC},
+ {"TOSH1AD", SFX_TOSH1AD},
+ {"TOSH2AA", SFX_TOSH2AA},
+ {"TOSH2AB", SFX_TOSH2AB},
+ {"TOSH2AC", SFX_TOSH2AC},
+ {"TOSH2AE", SFX_TOSH2AE},
+ {"TOSH2AF", SFX_TOSH2AF},
+ {"TOSH2AG", SFX_TOSH2AG},
+ {"TOSH2AH", SFX_TOSH2AH},
+ {"TOSH2AI", SFX_TOSH2AI},
+ {"TOSH2AJ", SFX_TOSH2AJ},
+ {"TOSH2AK", SFX_TOSH2AK},
+ {"TOSH2AL", SFX_TOSH2AL},
+ {"TOSH2AM", SFX_TOSH2AM},
+ {"TOSH3AA", SFX_TOSH3AA},
+ {"TOSH3AB", SFX_TOSH3AB},
+ {"TOSH3AC", SFX_TOSH3AC},
+ {"TOSH3AD", SFX_TOSH3AD},
+ {"TOSH3AE", SFX_TOSH3AE},
+ {"TOSH3AF", SFX_TOSH3AF},
+ {"TOSH3AG", SFX_TOSH3AG},
+ {"TOSH3AH", SFX_TOSH3AH},
+ {"TOSH3AI", SFX_TOSH3AI},
+ {"TOSH3AJ", SFX_TOSH3AJ},
+ {"TOSH3AK", SFX_TOSH3AK},
+ {"TOSH3BA", SFX_TOSH3BA},
+ {"TOSH3BB", SFX_TOSH3BB},
+ {"TOSH3CA", SFX_TOSH3CA},
+ {"TOSH3CB", SFX_TOSH3CB},
+ {"TOSH3CC", SFX_TOSH3CC},
+ {"TOSH3CD", SFX_TOSH3CD},
+ {"TOSH3CE", SFX_TOSH3CE},
+ {"TOSH3CF", SFX_TOSH3CF},
+ {"TOSH3CG", SFX_TOSH3CG},
+ {"TOSH3CH", SFX_TOSH3CH},
+ {"TOSH3CI", SFX_TOSH3CI},
+ {"TOSH3CJ", SFX_TOSH3CJ},
+ {"TOSH3CK", SFX_TOSH3CK},
+ {"TOSH3DA", SFX_TOSH3DA},
+ {"TOSH3EA", SFX_TOSH3EA},
+ {"TOSH3FA", SFX_TOSH3FA},
+ {"TOSH3FB", SFX_TOSH3FB},
+ {"TOSH3FC", SFX_TOSH3FC},
+ {"TOSH3FD", SFX_TOSH3FD},
+ {"TOSH3FE", SFX_TOSH3FE},
+ {"TOSH3FF", SFX_TOSH3FF},
+ {"TOSH3GA", SFX_TOSH3GA},
+ {"TOSH3GB", SFX_TOSH3GB},
+ {"TOSH3HA", SFX_TOSH3HA},
+ {"TOSH4AA", SFX_TOSH4AA},
+ {"TOSH4AB", SFX_TOSH4AB},
+ {"TOSH4AC", SFX_TOSH4AC},
+ {"TOSH4AD", SFX_TOSH4AD},
+ {"TOSH4AE", SFX_TOSH4AE},
+ {"TOSH4AF", SFX_TOSH4AF},
+ {"TOSH4AG", SFX_TOSH4AG},
+ {"TOSH4AH", SFX_TOSH4AH},
+ {"TOSH4AI", SFX_TOSH4AI},
+ {"TOSH4AJ", SFX_TOSH4AJ},
+ {"TOSH4BA", SFX_TOSH4BA},
+ {"TOSH4BB", SFX_TOSH4BB},
+ {"TOSH4BC", SFX_TOSH4BC},
+ {"TOSH4CA", SFX_TOSH4CA},
+ {"TOSH4CB", SFX_TOSH4CB},
+ {"TOSH4CC", SFX_TOSH4CC},
+ {"TOSH4CD", SFX_TOSH4CD},
+ {"TOSH4CE", SFX_TOSH4CE},
+ {"TOSH4DA", SFX_TOSH4DA},
+ {"TOSH4DB", SFX_TOSH4DB},
+ {"TOSH4DC", SFX_TOSH4DC},
+ {"VAL1_AA", SFX_VAL1_AA},
+ {"VAL1_AB", SFX_VAL1_AB},
+ {"VAL1_AC", SFX_VAL1_AC},
+ {"VAL1_AD", SFX_VAL1_AD},
+ {"VAL1_AE", SFX_VAL1_AE},
+ {"VAL1_AF", SFX_VAL1_AF},
+ {"VAL1_AG", SFX_VAL1_AG},
+ {"VAL1_AH", SFX_VAL1_AH},
+ {"VAL1_AI", SFX_VAL1_AI},
+ {"VAL2_AA", SFX_VAL2_AA},
+ {"VAL2_AB", SFX_VAL2_AB},
+ {"VAL2_AC", SFX_VAL2_AC},
+ {"VAL2_AD", SFX_VAL2_AD},
+ {"VAL2_AE", SFX_VAL2_AE},
+ {"VAL2_AF", SFX_VAL2_AF},
+ {"VAL2_AG", SFX_VAL2_AG},
+ {"VAL2_AH", SFX_VAL2_AH},
+ {"VAL2_AI", SFX_VAL2_AI},
+ {"VAL3_AA", SFX_VAL3_AA},
+ {"VAL3_AB", SFX_VAL3_AB},
+ {"VAL3_AC", SFX_VAL3_AC},
+ {"VAL3_AD", SFX_VAL3_AD},
+ {"VAL3_AE", SFX_VAL3_AE},
+ {"VAL3_AF", SFX_VAL3_AF},
+ {"VIC1_BA", SFX_VIC1_BA},
+ {"VIC1_BB", SFX_VIC1_BB},
+ {"VIC1_BC", SFX_VIC1_BC},
+ {"VIC1_BD", SFX_VIC1_BD},
+ {"VIC1_BE", SFX_VIC1_BE},
+ {"VIC1_BF", SFX_VIC1_BF},
+ {"VIC1_CA", SFX_VIC1_CA},
+ {"VIC1_CB", SFX_VIC1_CB},
+ {"VIC1_CC", SFX_VIC1_CC},
+ {"VIC1_CD", SFX_VIC1_CD},
+ {"VIC1_CE", SFX_VIC1_CE},
+ {"VIC1_DA", SFX_VIC1_DA},
+ {"VIC1_DB", SFX_VIC1_DB},
+ {"VIC1_DC", SFX_VIC1_DC},
+ {"VIC1_DD", SFX_VIC1_DD},
+ {"VIC1_DE", SFX_VIC1_DE},
+ {"VIC1_DF", SFX_VIC1_DF},
+ {"VIC1_DG", SFX_VIC1_DG},
+ {"VIC1_DH", SFX_VIC1_DH},
+ {"VIC2_AA", SFX_VIC2_AA},
+ {"VIC2_AB", SFX_VIC2_AB},
+ {"VIC2_AC", SFX_VIC2_AC},
+ {"VIC2_AD", SFX_VIC2_AD},
+ {"VIC2_AF", SFX_VIC2_AF},
+ {"VIC2_AG", SFX_VIC2_AG},
+ {"VIC2_AH", SFX_VIC2_AH},
+ {"VIC2_BA", SFX_VIC2_BA},
+ {"VIC2_BE", SFX_VIC2_BE},
+ {"VIC2_BI", SFX_VIC2_BI},
+ {"VIC3_AA", SFX_VIC3_AA},
+ {"VIC3_AB", SFX_VIC3_AB},
+ {"VIC3_AD", SFX_VIC3_AD},
+ {"VIC3_AE", SFX_VIC3_AE},
+ {"VIC3_AF", SFX_VIC3_AF},
+ {"VIC3_AG", SFX_VIC3_AG},
+ {"VIC3_AH", SFX_VIC3_AH},
+ {"VIC3_AJ", SFX_VIC3_AJ},
+ {"VIC3_AK", SFX_VIC3_AK},
+ {"VIC3_AL", SFX_VIC3_AL},
+ {"VIC3_AM", SFX_VIC3_AM},
+ {"VIC3_AN", SFX_VIC3_AN},
+ {"VIC3_AO", SFX_VIC3_AO},
+ {"VIC3_BA", SFX_VIC3_BA},
+ {"VIC3_BB", SFX_VIC3_BB},
+ {"VIC3_BC", SFX_VIC3_BC},
+ {"VIC4_AA", SFX_VIC4_AA},
+ {"VIC4_AB", SFX_VIC4_AB},
+ {"VIC4_AC", SFX_VIC4_AC},
+ {"VIC4_AD", SFX_VIC4_AD},
+ {"VIC4_AE", SFX_VIC4_AE},
+ {"VIC4_AF", SFX_VIC4_AF},
+ {"VIC4_AG", SFX_VIC4_AG},
+ {"VIC4_AH", SFX_VIC4_AH},
+ {"VIC4_AI", SFX_VIC4_AI},
+ {"VIC4_AJ", SFX_VIC4_AJ},
+ {"VIC4_AK", SFX_VIC4_AK},
+ {"VIC4_AL", SFX_VIC4_AL},
+ {"VIC4_AM", SFX_VIC4_AM},
+ {"VIC4_AN", SFX_VIC4_AN},
+ {"VIC4_BA", SFX_VIC4_BA},
+ {"VIC4_BB", SFX_VIC4_BB},
+ {"VIC4_BC", SFX_VIC4_BC},
+ {"VIC4_BD", SFX_VIC4_BD},
+ {"VIC4_BE", SFX_VIC4_BE},
+ {"VIC4_BF", SFX_VIC4_BF},
+ {"VIC4_BG", SFX_VIC4_BG},
+ {"VIC4_BH", SFX_VIC4_BH},
+ {"VIC5_AA", SFX_VIC5_AA},
+ {"VIC5_AB", SFX_VIC5_AB},
+ {"VIC5_AC", SFX_VIC5_AC},
+ {"VIC5_AD", SFX_VIC5_AD},
+ {"VIC5_AE", SFX_VIC5_AE},
+ {"VIC5_AF", SFX_VIC5_AF},
+ {"VIC5_AG", SFX_VIC5_AG},
+ {"VIC5_AH", SFX_VIC5_AH},
+ {"VIC5_AI", SFX_VIC5_AI},
+ {"VIC5_AJ", SFX_VIC5_AJ},
+ {"VIC5_AK", SFX_VIC5_AK},
+ {"VIC5_AL", SFX_VIC5_AL},
+ {"VIC5_FA", SFX_VIC5_FA},
+ {"VIC5_FD", SFX_VIC5_FD},
+ {"VIC5_FF", SFX_VIC5_FF},
+ {"VIC5_FG", SFX_VIC5_FG},
+ {"VIC5_FH", SFX_VIC5_FH},
+ {"VIC5_FI", SFX_VIC5_FI},
+ {"VIC5_FJ", SFX_VIC5_FJ},
+ {"VIC5_FK", SFX_VIC5_FK},
+ {"VIC6_AA", SFX_VIC6_AA},
+ {"VIC6_AB", SFX_VIC6_AB},
+ {"VIC6_AC", SFX_VIC6_AC},
+ {"VIC6_AD", SFX_VIC6_AD},
+ {"VIC6_AE", SFX_VIC6_AE},
+ {"VIC6_AF", SFX_VIC6_AF},
+ {"VIC6_AG", SFX_VIC6_AG},
+ {"VIC6_AH", SFX_VIC6_AH},
+ {"VIC6_AI", SFX_VIC6_AI},
+ {"VIC6_AJ", SFX_VIC6_AJ},
+ {"VIC6_AK", SFX_VIC6_AK},
+ {"VIC6_AL", SFX_VIC6_AL},
+ {"VIC6_AM", SFX_VIC6_AM},
+ {"VIC6_AN", SFX_VIC6_AN},
+ {"VIC6_AO", SFX_VIC6_AO},
+ {"VIC7_AA", SFX_VIC7_AA},
+ {"VIC7_AB", SFX_VIC7_AB},
+ {"VIC7_AC", SFX_VIC7_AC},
+ {"VIC7_AD", SFX_VIC7_AD},
+ {"VIC7_AE", SFX_VIC7_AE},
+ {"VIC7_AG", SFX_VIC7_AG},
+ {"VIC7_AH", SFX_VIC7_AH},
+ {"VIC7_AJ", SFX_VIC7_AJ},
+ {"VIC7_AL", SFX_VIC7_AL},
+ {"VIC7_AM", SFX_VIC7_AM},
+ {"VIC7_AN", SFX_VIC7_AN},
+ {"VIC7_AO", SFX_VIC7_AO},
+ {"VIC7_BA", SFX_VIC7_BA},
+ {"VIC7_BB", SFX_VIC7_BB},
+ {"VIC7_BC", SFX_VIC7_BC},
+ {"VIC7_BD", SFX_VIC7_BD},
+ {"VIC7_BE", SFX_VIC7_BE},
+ {"VIC7_BF", SFX_VIC7_BF},
+ {"VIC7_BG", SFX_VIC7_BG},
+ {"VIC7_BH", SFX_VIC7_BH},
+ {"VIC7_BI", SFX_VIC7_BI},
+ {"WAC1_AA", SFX_WAC1_AA},
+ {"WAC1_AB", SFX_WAC1_AB},
+ {"WAC1_AC", SFX_WAC1_AC},
+ {"WAC1_AD", SFX_WAC1_AD},
+ {"WAC1_AE", SFX_WAC1_AE},
+ {"WAC1_AF", SFX_WAC1_AF},
+ {"WAC1_AG", SFX_WAC1_AG},
+ {"WAC1_AH", SFX_WAC1_AH},
+ {"WAC2_AA", SFX_WAC2_AA},
+ {"WAC2_AB", SFX_WAC2_AB},
+ {"WAC2_AC", SFX_WAC2_AC},
+ {"WAC2_AD", SFX_WAC2_AD},
+ {"WAC2_AE", SFX_WAC2_AE},
+ {"WAC2_AF", SFX_WAC2_AF},
+ {"WAC2_AG", SFX_WAC2_AG},
+ {"WED1_AA", SFX_WED1_AA},
+ {"WED1_AB", SFX_WED1_AB},
+ {"WED1_AC", SFX_WED1_AC},
+ {"WED1_AD", SFX_WED1_AD},
+ {"WED1_AE", SFX_WED1_AE},
+ {"WED1_AF", SFX_WED1_AF},
+ {"WED1_AG", SFX_WED1_AG},
+ {"WED2_AA", SFX_WED2_AA},
+ {"WED2_AB", SFX_WED2_AB},
+ {"WED2_AC", SFX_WED2_AC},
+ {"WED2_AD", SFX_WED2_AD},
+ {"WED2_AE", SFX_WED2_AE},
+ {"WED2_AF", SFX_WED2_AF},
+ {"WED2_AG", SFX_WED2_AG},
+ {"WED2_AH", SFX_WED2_AH},
+ {"WED3_AA", SFX_WED3_AA},
+ {"WED3_AB", SFX_WED3_AB},
+ {"WED3_AC", SFX_WED3_AC},
+ {"WED3_AD", SFX_WED3_AD},
+ {"WED3_AE", SFX_WED3_AE},
+ {"WED3_AF", SFX_WED3_AF},
+ {"WED3_AG", SFX_WED3_AG},
+ {"WED3_AH", SFX_WED3_AH},
+ {"WED3_AI", SFX_WED3_AI},
+ {"WED3_AJ", SFX_WED3_AJ},
+ {"WED3_AK", SFX_WED3_AK},
+ {"WED3_AL", SFX_WED3_AL},
+ {"DONH3IA", SFX_DONH3IA},
+ {"DONH3JA", SFX_DONH3JA},
+ {"DONH5CA", SFX_DONH5CA},
+ {"DONH5CB", SFX_DONH5CB},
+ {"DONS7CA", SFX_DONS7CA},
+ {"DONS7CB", SFX_DONS7CB},
+ {"DONS7CC", SFX_DONS7CC},
+ {"DONS7CD", SFX_DONS7CD},
+ {"DONS7CE", SFX_DONS7CE},
+ {"JDT1_MA", SFX_JDT1_MA},
+ {"JDT1_MB", SFX_JDT1_MB},
+ {"JDT1_MC", SFX_JDT1_MC},
+ {"JDT1_MD", SFX_JDT1_MD},
+ {"JDT1_ME", SFX_JDT1_ME},
+ {"JDT1_MF", SFX_JDT1_MF},
+ {"JDT1_MG", SFX_JDT1_MG},
+ {"JDT1_MH", SFX_JDT1_MH},
+ {"JDT4_BA", SFX_JDT4_BA},
+ {"JDT4_BB", SFX_JDT4_BB},
+ {"JDT4_BC", SFX_JDT4_BC},
+ {"JDT5_FA", SFX_JDT5_FA},
+ {"JDT5_FB", SFX_JDT5_FB},
+ {"JDT5_FC", SFX_JDT5_FC},
+ {"JDT5_GA", SFX_JDT5_GA},
+ {"JDT5_GB", SFX_JDT5_GB},
+ {"JDT6_CA", SFX_JDT6_CA},
+ {"JDT6_CB", SFX_JDT6_CB},
+ {"JDT6_DA", SFX_JDT6_DA},
+ {"JDT7_CD", SFX_JDT7_CD},
+ {"JDT8_AI", SFX_JDT8_AI},
+ {"JDT8_BA", SFX_JDT8_BA},
+ {"JDT8_FD", SFX_JDT8_FD},
+ {"JDT8_FE", SFX_JDT8_FE},
+ {"JDT8_FF", SFX_JDT8_FF},
+ {"JDT8_FG", SFX_JDT8_FG},
+ {"JDT8_FH", SFX_JDT8_FH},
+ {"JDT8_GA", SFX_JDT8_GA},
+ {"JDT8_HA", SFX_JDT8_HA},
+ {"JDT8_HB", SFX_JDT8_HB},
+ {"MAC1_JC", SFX_MAC1_JC},
+ {"MAC4_DA", SFX_MAC4_DA},
+ {"MAC4_DB", SFX_MAC4_DB},
+ {"MAC4_DC", SFX_MAC4_DC},
+ {"MAC4_DD", SFX_MAC4_DD},
+ {"MAC4_DE", SFX_MAC4_DE},
+ {"MAC4_DF", SFX_MAC4_DF},
+ {"MAC4_DG", SFX_MAC4_DG},
+ {"MAC4_DH", SFX_MAC4_DH},
+ {"MAR1_HD", SFX_MAR1_HD},
+ {"MAR2_GF", SFX_MAR2_GF},
+ {"MAR5_DA", SFX_MAR5_DA},
+ {"MAR5_DB", SFX_MAR5_DB},
+ {"MAR5_DC", SFX_MAR5_DC},
+ {"MAR5_EA", SFX_MAR5_EA},
+ {"MAR5_EB", SFX_MAR5_EB},
+ {"MAR5_EC", SFX_MAR5_EC},
+ {"MAR5_ED", SFX_MAR5_ED},
+ {"NEDS1BA", SFX_NEDS1BA},
+ {"NEDS1BB", SFX_NEDS1BB},
+ {"NEDS1BC", SFX_NEDS1BC},
+ {"NEDS1BD", SFX_NEDS1BD},
+ {"NEDS1BE", SFX_NEDS1BE},
+ {"NEDS1BF", SFX_NEDS1BF},
+ {"NOOD_AA", SFX_NOOD_AA},
+ {"NOOD_AB", SFX_NOOD_AB},
+ {"NOOD_AC", SFX_NOOD_AC},
+ {"NOOD_AD", SFX_NOOD_AD},
+ {"NOOD_AE", SFX_NOOD_AE},
+ {"NOOD_AF", SFX_NOOD_AF},
+ {"NOOD_AG", SFX_NOOD_AG},
+ {"NOOD_AH", SFX_NOOD_AH},
+ {"NOOD_AI", SFX_NOOD_AI},
+ {"NOOD_AJ", SFX_NOOD_AJ},
+ {"NOOD_AK", SFX_NOOD_AK},
+ {"NOOD_AL", SFX_NOOD_AL},
+ {"NOOD_AM", SFX_NOOD_AM},
+ {"NOOD_AN", SFX_NOOD_AN},
+ {"NOOD_AO", SFX_NOOD_AO},
+ {"NOOD_AP", SFX_NOOD_AP},
+ {"NOOD_AQ", SFX_NOOD_AQ},
+ {"NOOD_AR", SFX_NOOD_AR},
+ {"NOOD_AS", SFX_NOOD_AS},
+ {"NOOD_AT", SFX_NOOD_AT},
+ {"PIZZ_AA", SFX_PIZZ_AA},
+ {"PIZZ_AB", SFX_PIZZ_AB},
+ {"PIZZ_AC", SFX_PIZZ_AC},
+ {"PIZZ_AD", SFX_PIZZ_AD},
+ {"PIZZ_AE", SFX_PIZZ_AE},
+ {"PIZZ_AF", SFX_PIZZ_AF},
+ {"PIZZ_AG", SFX_PIZZ_AG},
+ {"PIZZ_AH", SFX_PIZZ_AH},
+ {"PIZZ_AI", SFX_PIZZ_AI},
+ {"PIZZ_AJ", SFX_PIZZ_AJ},
+ {"PIZZ_AK", SFX_PIZZ_AK},
+ {"PIZZ_AL", SFX_PIZZ_AL},
+ {"PIZZ_AM", SFX_PIZZ_AM},
+ {"PIZZ_AN", SFX_PIZZ_AN},
+ {"PIZZ_AO", SFX_PIZZ_AO},
+ {"PIZZ_AP", SFX_PIZZ_AP},
+ {"PIZZ_AQ", SFX_PIZZ_AQ},
+ {"PIZZ_AR", SFX_PIZZ_AR},
+ {"PIZZ_AS", SFX_PIZZ_AS},
+ {"PIZZ_AT", SFX_PIZZ_AT},
+ {"RAYS2BA", SFX_RAYS2BA},
+ {"RAYS2BB", SFX_RAYS2BB},
+ {"RAYS2CA", SFX_RAYS2CA},
+ {"RAYS2CB", SFX_RAYS2CB},
+ {"RAYS2DA", SFX_RAYS2DA},
+ {"RAYS2DB", SFX_RAYS2DB},
+ {"RAYS2EA", SFX_RAYS2EA},
+ {"RAYS2EB", SFX_RAYS2EB},
+ {"RAYS4AA", SFX_RAYS4AA},
+ {"RAYS4AB", SFX_RAYS4AB},
+ {"RAYS4AC", SFX_RAYS4AC},
+ {"RAYS4AD", SFX_RAYS4AD},
+ {"RAYS4AE", SFX_RAYS4AE},
+ {"RAYS4AF", SFX_RAYS4AF},
+ {"RAYS4BA", SFX_RAYS4BA},
+ {"RAYS4BB", SFX_RAYS4BB},
+ {"RAYS4BC", SFX_RAYS4BC},
+ {"RAYS4BD", SFX_RAYS4BD},
+ {"RAYS4BE", SFX_RAYS4BE},
+ {"RAYS4BF", SFX_RAYS4BF},
+ {"RAYS4BG", SFX_RAYS4BG},
+ {"RAYS5BA", SFX_RAYS5BA},
+ {"RAYS5BB", SFX_RAYS5BB},
+ {"RMN_AA", SFX_RMN_AA},
+ {"RMN_AB", SFX_RMN_AB},
+ {"RMN_AC", SFX_RMN_AC},
+ {"RMN_AD", SFX_RMN_AD},
+ {"RMN_AE", SFX_RMN_AE},
+ {"RMN_AF", SFX_RMN_AF},
+ {"RMN_AG", SFX_RMN_AG},
+ {"RMN_AH", SFX_RMN_AH},
+ {"RMN_AI", SFX_RMN_AI},
+ {"RMN_AJ", SFX_RMN_AJ},
+ {"RMN_AK", SFX_RMN_AK},
+ {"SAL1_BA", SFX_SAL1_BA},
+ {"SAL1_BB", SFX_SAL1_BB},
+ {"SAL1_BC", SFX_SAL1_BC},
+ {"SAL1_BD", SFX_SAL1_BD},
+ {"SAL2_BA", SFX_SAL2_BA},
+ {"SAL2_BB", SFX_SAL2_BB},
+ {"SAL2_BC", SFX_SAL2_BC},
+ {"SAL2_BD", SFX_SAL2_BD},
+ {"SAL2_CA", SFX_SAL2_CA},
+ {"SAL2_CB", SFX_SAL2_CB},
+ {"SAL2_CC", SFX_SAL2_CC},
+ {"SAL2_CD", SFX_SAL2_CD},
+ {"SAL2_CE", SFX_SAL2_CE},
+ {"SAL2_CF", SFX_SAL2_CF},
+ {"SAL2_CG", SFX_SAL2_CG},
+ {"SAL2_CH", SFX_SAL2_CH},
+ {"SAL2_CI", SFX_SAL2_CI},
+ {"SAL2_CJ", SFX_SAL2_CJ},
+ {"SAL2_CL", SFX_SAL2_CL},
+ {"SAL2_CM", SFX_SAL2_CM},
+ {"SAL2_CN", SFX_SAL2_CN},
+ {"SAL2_CO", SFX_SAL2_CO},
+ {"SAL2_CP", SFX_SAL2_CP},
+ {"SAL2_CQ", SFX_SAL2_CQ},
+ {"SAL2_CR", SFX_SAL2_CR},
+ {"SAL2_CS", SFX_SAL2_CS},
+ {"SAL2_CT", SFX_SAL2_CT},
+ {"SAL2_CU", SFX_SAL2_CU},
+ {"SAL2_CV", SFX_SAL2_CV},
+ {"SAL2_DD", SFX_SAL2_DD},
+ {"SAL2_DE", SFX_SAL2_DE},
+ {"SAL3_BA", SFX_SAL3_BA},
+ {"SAL3_CA", SFX_SAL3_CA},
+ {"SAL3_DA", SFX_SAL3_DA},
+ {"SAL4_AA", SFX_SAL4_AA},
+ {"SAL5_AA", SFX_SAL5_AA},
+ {"SAL5_AD", SFX_SAL5_AD},
+ {"SAL5_AF", SFX_SAL5_AF},
+ {"SAL5_AG", SFX_SAL5_AG},
+ {"SAL6_CA", SFX_SAL6_CA},
+ {"SAL6_CB", SFX_SAL6_CB},
+ {"SAL6_CC", SFX_SAL6_CC},
+ {"SAL6_CD", SFX_SAL6_CD},
+ {"SAL7_CD", SFX_SAL7_CD},
+ {"SAL8_HA", SFX_SAL8_HA},
+ {"SAL8_HB", SFX_SAL8_HB},
+ {"SAL8_HC", SFX_SAL8_HC},
+ {"SAL8_HD", SFX_SAL8_HD},
+ {"SAL8_HE", SFX_SAL8_HE},
+ {"SAL8_HF", SFX_SAL8_HF},
+ {"SAL8_HG", SFX_SAL8_HG},
+ {"SAL8_HH", SFX_SAL8_HH},
+ {"SALH1AA", SFX_SALH1AA},
+ {"SALH1AB", SFX_SALH1AB},
+ {"SALH1BA", SFX_SALH1BA},
+ {"SALH1BB", SFX_SALH1BB},
+ {"SALH1CA", SFX_SALH1CA},
+ {"SALH1CB", SFX_SALH1CB},
+ {"SALH1DA", SFX_SALH1DA},
+ {"SALH1EA", SFX_SALH1EA},
+ {"SALH1EB", SFX_SALH1EB},
+ {"SALH1FB", SFX_SALH1FB},
+ {"SALH1FC", SFX_SALH1FC},
+ {"SALH1FG", SFX_SALH1FG},
+ {"SALH1GA", SFX_SALH1GA},
+ {"SALH1GB", SFX_SALH1GB},
+ {"SALH1HA", SFX_SALH1HA},
+ {"SALH2BE", SFX_SALH2BE},
+ {"SALH2BF", SFX_SALH2BF},
+ {"SALH2BG", SFX_SALH2BG},
+ {"SALH4CB", SFX_SALH4CB},
+ {"SALS1BA", SFX_SALS1BA},
+ {"SALS1BB", SFX_SALS1BB},
+ {"SALS1BC", SFX_SALS1BC},
+ {"SALS1BD", SFX_SALS1BD},
+ {"SALS2BA", SFX_SALS2BA},
+ {"SALS2BB", SFX_SALS2BB},
+ {"SALS2CA", SFX_SALS2CA},
+ {"SALS2CB", SFX_SALS2CB},
+ {"SALS2CC", SFX_SALS2CC},
+ {"SALS2CE", SFX_SALS2CE},
+ {"SALS3BA", SFX_SALS3BA},
+ {"SALS3BC", SFX_SALS3BC},
+ {"SALS3DB", SFX_SALS3DB},
+ {"SALS3DC", SFX_SALS3DC},
+ {"SALS3DD", SFX_SALS3DD},
+ {"SALS3DF", SFX_SALS3DF},
+ {"SALS3DG", SFX_SALS3DG},
+ {"STRE_AA", SFX_STRE_AA},
+ {"STRE_AB", SFX_STRE_AB},
+ {"STRE_AC", SFX_STRE_AC},
+ {"STRE_AD", SFX_STRE_AD},
+ {"STRE_AE", SFX_STRE_AE},
+ {"STRE_AF", SFX_STRE_AF},
+ {"STRE_AG", SFX_STRE_AG},
+ {"STRE_BA", SFX_STRE_BA},
+ {"STRE_BB", SFX_STRE_BB},
+ {"STRE_BC", SFX_STRE_BC},
+ {"STRE_BD", SFX_STRE_BD},
+ {"STRE_BE", SFX_STRE_BE},
+ {"STRE_BF", SFX_STRE_BF},
+ {"STRE_BG", SFX_STRE_BG},
+ {"STRE_CA", SFX_STRE_CA},
+ {"STRE_CB", SFX_STRE_CB},
+ {"STRE_CC", SFX_STRE_CC},
+ {"TOSH1BA", SFX_TOSH1BA},
+ {"TOSH1BB", SFX_TOSH1BB},
+ {"TOSH1BC", SFX_TOSH1BC},
+ {"TOSH1BD", SFX_TOSH1BD},
+ {"TOSH3IA", SFX_TOSH3IA},
+ {"TOSH3IB", SFX_TOSH3IB},
+ {"VIC2_BB", SFX_VIC2_BB},
+ {"VIC2_BC", SFX_VIC2_BC},
+ {"VIC2_BD", SFX_VIC2_BD},
+ {"VIC2_BF", SFX_VIC2_BF},
+ {"VIC2_BH", SFX_VIC2_BH},
+ {"VIC2_BJ", SFX_VIC2_BJ},
+ {"VIC2_CA", SFX_VIC2_CA},
+ {"VIC2_DA", SFX_VIC2_DA},
+ {"VIC2_DB", SFX_VIC2_DB},
+ {"VIC2_DE", SFX_VIC2_DC},
+ {"VIC4_CA", SFX_VIC4_CA},
+ {"VIC4_CB", SFX_VIC4_CB},
+ {"VIC5_DA", SFX_VIC5_DA},
+ {"VIC5_DB", SFX_VIC5_DB},
+ {"VIC5_DC", SFX_VIC5_DC},
+ {"VIC5_EA", SFX_VIC5_EA},
+ {"VIC5_EB", SFX_VIC5_EB},
+ {"VIC5_EC", SFX_VIC5_EC},
+ {"VIC5_FB", SFX_VIC5_FB},
+ {"VIC5_FC", SFX_VIC5_FC},
+ {"VIC5_FE", SFX_VIC5_FE},
+ {"VIC6_BA", SFX_VIC6_BA},
+ {"VIC6_BB", SFX_VIC6_BB},
+ {"VIC7_CA", SFX_VIC7_CA},
+ {"VIC7_CB", SFX_VIC7_CB},
+ {"VIC7_CC", SFX_VIC7_CC},
+ {"LCN_AA", SFX_LCN_AA},
+ {"LCN_AB", SFX_LCN_AB},
+ {"MSA12AB", SFX_SFX_ANG1_AA},
+ {"BNK1_12", SFX_SFX_BNK1_12},
+ {"TAX1_1", SFX_SFX_TAX1_1},
+ {"TAX1_2", SFX_SFX_TAX1_2},
+ {"TAX1_3", SFX_SFX_TAX1_3},
+ {"TAX1_4", SFX_SFX_TAX1_4},
+ {"TAX1_5", SFX_SFX_TAX1_5},
+ {"TAX2_1", SFX_SFX_TAX2_1},
+ {"TAX2_2", SFX_SFX_TAX2_2},
+ {"TAX2_3", SFX_SFX_TAX2_3},
+ {"TAX2_4", SFX_SFX_TAX2_4},
+ {"TAX2_5", SFX_SFX_TAX2_5},
+ {"TAX2_6", SFX_SFX_TAX2_6},
+ {"TAX2_7", SFX_SFX_TAX2_7},
+ {"TAX3_1", SFX_SFX_TAX3_1},
+ {"TAX3_2", SFX_SFX_TAX3_2},
+ {"TAX3_3", SFX_SFX_TAX3_3},
+ {"TAX3_4", SFX_SFX_TAX3_4},
+ {"TAX3_5", SFX_SFX_TAX3_5},
+ {nil, 0}
+};
int32
FindMissionAudioSfx(const char *name)
@@ -9795,12 +11275,14 @@ FindMissionAudioSfx(const char *name)
return NO_SAMPLE;
}
-bool
+bool8
cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const
{
- return false;
+ return FALSE;
}
+// LCS: mission audio turns from streamed to sampled
+
void
cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name)
{
@@ -9810,12 +11292,13 @@ cAudioManager::PreloadMissionAudio(uint8 slot, Const char *name)
m_sMissionAudio.m_nSampleIndex[slot] = missionAudioSfx;
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_NOT_LOADED;
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_STOPPED;
- m_sMissionAudio.m_bIsPlaying[slot] = false;
- m_sMissionAudio.m_nMissionAudioCounter[slot] = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000;
+ m_sMissionAudio.m_bIsPlaying[slot] = FALSE;
+ //m_sMissionAudio.m_nMissionAudioCounter[slot] = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000;
+ m_sMissionAudio.m_nMissionAudioCounter[slot] = m_nTimeSpent * SampleManager.GetSampleLength(missionAudioSfx) / SampleManager.GetSampleBaseFrequency(missionAudioSfx);
m_sMissionAudio.m_nMissionAudioCounter[slot] *= 4;
- m_sMissionAudio.m_bIsPlayed[slot] = false;
- m_sMissionAudio.m_bPredefinedProperties[slot] = true;
- g_bMissionAudioLoadFailed[slot] = false;
+ m_sMissionAudio.m_bIsPlayed[slot] = FALSE;
+ m_sMissionAudio.m_bPredefinedProperties[slot] = TRUE;
+ g_bMissionAudioLoadFailed[slot] = FALSE;
}
}
}
@@ -9833,7 +11316,7 @@ void
cAudioManager::SetMissionAudioLocation(uint8 slot, float x, float y, float z)
{
if (m_bIsInitialised && slot < MISSION_AUDIO_SLOTS) {
- m_sMissionAudio.m_bPredefinedProperties[slot] = false;
+ m_sMissionAudio.m_bPredefinedProperties[slot] = FALSE;
m_sMissionAudio.m_vecPos[slot] = CVector(x, y, z);
}
}
@@ -9843,25 +11326,25 @@ cAudioManager::PlayLoadedMissionAudio(uint8 slot)
{
if (m_bIsInitialised && slot < MISSION_AUDIO_SLOTS && m_sMissionAudio.m_nSampleIndex[slot] != NO_SAMPLE && m_sMissionAudio.m_nLoadingStatus[slot] == LOADING_STATUS_LOADED &&
m_sMissionAudio.m_nPlayStatus[slot] == PLAY_STATUS_STOPPED)
- m_sMissionAudio.m_bIsPlayed[slot] = true;
+ m_sMissionAudio.m_bIsPlayed[slot] = TRUE;
}
-bool
+bool8
cAudioManager::ShouldDuckMissionAudio(uint8 slot) const
{
//if (IsMissionAudioSamplePlaying(slot))
// return m_sMissionAudio.m_nSampleIndex[slot] != STREAMED_SOUND_MISSION_ROK2_01;
- return false;
+ return FALSE;
}
-bool
+bool8
cAudioManager::IsMissionAudioSamplePlaying(uint8 slot) const
{
if (m_bIsInitialised) {
if (slot < MISSION_AUDIO_SLOTS)
return m_sMissionAudio.m_nPlayStatus[slot] == PLAY_STATUS_PLAYING;
else
- return true;
+ return TRUE;
} else {
static int32 cPretendFrame[MISSION_AUDIO_SLOTS] = { 1, 1 };
@@ -9869,14 +11352,14 @@ cAudioManager::IsMissionAudioSamplePlaying(uint8 slot) const
}
}
-bool
+bool8
cAudioManager::IsMissionAudioSampleFinished(uint8 slot)
{
if (m_bIsInitialised) {
if (slot < MISSION_AUDIO_SLOTS)
return m_sMissionAudio.m_nPlayStatus[slot] == PLAY_STATUS_FINISHED;
else
- return true;
+ return TRUE;
}
static int32 cPretendFrame[MISSION_AUDIO_SLOTS] = { 1, 1 };
@@ -9891,12 +11374,13 @@ cAudioManager::ClearMissionAudio(uint8 slot)
m_sMissionAudio.m_nSampleIndex[slot] = NO_SAMPLE;
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_NOT_LOADED;
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_STOPPED;
- m_sMissionAudio.m_bIsPlaying[slot] = false;
- m_sMissionAudio.m_bIsPlayed[slot] = false;
- m_sMissionAudio.m_bPredefinedProperties[slot] = true;
+ m_sMissionAudio.m_bIsPlaying[slot] = FALSE;
+ m_sMissionAudio.m_bIsPlayed[slot] = FALSE;
+ m_sMissionAudio.m_bPredefinedProperties[slot] = TRUE;
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
- m_sMissionAudio.m_bIsMobile[slot] = false;
- SampleManager.StopStreamedFile(slot + 1);
+ m_sMissionAudio.m_bIsMobile[slot] = FALSE;
+ //SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
}
@@ -9917,7 +11401,10 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
switch (m_sMissionAudio.m_nLoadingStatus[slot]) {
case LOADING_STATUS_NOT_LOADED:
- SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex[slot], slot + 1);
+ //SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex[slot], slot + 1);
+ SampleManager.LoadPedComment(m_sMissionAudio.m_nSampleIndex[slot]);
+ SampleManager.InitialiseChannel(slot + CHANNEL_MISSION_AUDIO_1, m_sMissionAudio.m_nSampleIndex[slot], SFX_BANK_PED_COMMENTS);
+ SampleManager.SetChannelFrequency(slot + CHANNEL_MISSION_AUDIO_1, SampleManager.GetSampleBaseFrequency(m_sMissionAudio.m_nSampleIndex[slot]));
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_LOADED;
nFramesUntilFailedLoad[slot] = 0;
break;
@@ -9927,7 +11414,8 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (g_bMissionAudioLoadFailed[slot]) {
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
- SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
+ //SampleManager.StopStreamedFile(slot + 1);
nFramesForPretendPlaying[slot] = 0;
nCheckPlayingDelay[slot] = 0;
nFramesUntilFailedLoad[slot] = 0;
@@ -9946,42 +11434,49 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
if (MissionScriptAudioUsesPoliceChannel(m_sMissionAudio.m_nSampleIndex[slot])) {
SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex[slot]);
} else {
- if (m_nUserPause)
- SampleManager.PauseStream(1, slot + 1);
+ if(m_nUserPause)
+ // SampleManager.PauseStream(TRUE, slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
if (m_sMissionAudio.m_bPredefinedProperties[slot]) {
//if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAL)
- // SampleManager.SetStreamedVolumeAndPan(80, 0, 1, slot + 1);
+ // SampleManager.SetStreamedVolumeAndPan(80, 0, TRUE, slot + 1);
//else if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_CAMERAR)
- // SampleManager.SetStreamedVolumeAndPan(80, 127, 1, slot + 1);
+ // SampleManager.SetStreamedVolumeAndPan(80, 127, TRUE, slot + 1);
//else
- SampleManager.SetStreamedVolumeAndPan(80, 63, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, 63);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, 127);
+ //SampleManager.SetStreamedVolumeAndPan(80, 63, 1, slot + 1);
} else {
distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos[slot]);
if (distSquared >= SQR(80.0f)) {
emittingVol = 0;
pan = 63;
} else {
- emittingVol = 80;
+ emittingVol = 127;
if (distSquared > 0.0f) {
dist = Sqrt(distSquared);
- emittingVol = ComputeVolume(80, 80.0f, dist);
+ emittingVol = ComputeVolume(127, 80.0f, dist);
}
TranslateEntity(&m_sMissionAudio.m_vecPos[slot], &vec);
pan = ComputePan(80.f, &vec);
}
- SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, emittingVol);
+ //SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
}
- SampleManager.StartPreloadedStreamedFile(slot + 1);
+ //SampleManager.StartPreloadedStreamedFile(slot + 1);
+ SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1);
}
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_PLAYING;
nCheckPlayingDelay[slot] = 30;
//if (m_sMissionAudio.m_nSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_sMissionAudio.m_nSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- // m_sMissionAudio.m_bIsMobile[slot] = true;
+ // m_sMissionAudio.m_bIsMobile[slot] = TRUE;
break;
case PLAY_STATUS_PLAYING:
if (m_bTimerJustReset) {
ClearMissionAudio(slot);
- SampleManager.StopStreamedFile(slot + 1);
+ //SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
break;
}
if (MissionScriptAudioUsesPoliceChannel(m_sMissionAudio.m_nSampleIndex[slot])) {
@@ -9991,17 +11486,21 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
} else if (GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED || m_sMissionAudio.m_nMissionAudioCounter[slot]-- == 0) {
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_FINISHED;
m_sMissionAudio.m_nSampleIndex[slot] = NO_SAMPLE;
- SampleManager.StopStreamedFile(slot + 1);
+ //SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
}
}
} else if (m_sMissionAudio.m_bIsPlaying[slot]) {
- if (SampleManager.IsStreamPlaying(slot + 1) || m_nUserPause || m_nPreviousUserPause) {
- if (m_nUserPause)
- SampleManager.PauseStream(1, slot + 1);
+ //if (SampleManager.IsStreamPlaying(slot + 1) || m_nUserPause || m_nPreviousUserPause) {
+ if(SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1) || m_nUserPause || m_nPreviousUserPause) {
+ if(m_nUserPause)
+ //SampleManager.PauseStream(TRUE, slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
else
{
- SampleManager.PauseStream(0, slot + 1);
+ //SampleManager.PauseStream(FALSE, slot + 1);
+ //SampleManager.StartChannel(slot + CHANNEL_MISSION_AUDIO_1);
if (!m_sMissionAudio.m_bPredefinedProperties[slot]) {
distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos[slot]);
if (distSquared >= SQR(80.0f)) {
@@ -10016,7 +11515,9 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
TranslateEntity(&m_sMissionAudio.m_vecPos[slot], &vec);
pan = ComputePan(80.f, &vec);
}
- SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
+ SampleManager.SetChannelPan(slot + CHANNEL_MISSION_AUDIO_1, pan);
+ SampleManager.SetChannelVolume(slot + CHANNEL_MISSION_AUDIO_1, emittingVol);
+ //SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, slot + 1);
}
}
//} else if (m_sMissionAudio.m_nSampleIndex[slot] == STREAMED_SOUND_MISSION_ROK2_01) {
@@ -10024,20 +11525,22 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
} else {
m_sMissionAudio.m_nPlayStatus[slot] = PLAY_STATUS_FINISHED;
//if (m_sMissionAudio.m_nSampleIndex[slot] >= STREAMED_SOUND_MISSION_MOB_01A && m_sMissionAudio.m_nSampleIndex[slot] <= STREAMED_SOUND_MISSION_MOB_99A)
- // m_sMissionAudio.m_bIsMobile[slot] = false;
+ // m_sMissionAudio.m_bIsMobile[slot] = FALSE;
m_sMissionAudio.m_nSampleIndex[slot] = NO_SAMPLE;
- SampleManager.StopStreamedFile(slot + 1);
+ //SampleManager.StopStreamedFile(slot + 1);
+ SampleManager.StopChannel(slot + CHANNEL_MISSION_AUDIO_1);
m_sMissionAudio.m_nMissionAudioCounter[slot] = 0;
}
} else {
if (m_nUserPause)
break;
if (nCheckPlayingDelay[slot]--) {
- if (!SampleManager.IsStreamPlaying(slot + 1))
+ //if (!SampleManager.IsStreamPlaying(slot + 1))
+ if (!SampleManager.GetChannelUsedFlag(slot + CHANNEL_MISSION_AUDIO_1))
break;
nCheckPlayingDelay[slot] = 0;
}
- m_sMissionAudio.m_bIsPlaying[slot] = true;
+ m_sMissionAudio.m_bIsPlaying[slot] = TRUE;
}
break;
default:
@@ -10047,7 +11550,7 @@ cAudioManager::ProcessMissionAudioSlot(uint8 slot)
case LOADING_STATUS_FAILED:
if (++nFramesUntilFailedLoad[slot] >= 120) {
nFramesForPretendPlaying[slot] = 0;
- g_bMissionAudioLoadFailed[slot] = true;
+ g_bMissionAudioLoadFailed[slot] = TRUE;
nFramesUntilFailedLoad[slot] = 0;
m_sMissionAudio.m_nLoadingStatus[slot] = LOADING_STATUS_LOADED;
}
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp
index 2304b4c4..b9d46d2c 100644
--- a/src/audio/AudioManager.cpp
+++ b/src/audio/AudioManager.cpp
@@ -14,21 +14,17 @@
cAudioManager AudioManager;
-const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples);
-const int policeChannel = channels + 1;
-const int allChannels = channels + 2;
-
#define SPEED_OF_SOUND 343.f
#define TIME_SPENT 40
cAudioManager::cAudioManager()
{
- m_bIsInitialised = false;
- m_bReverb = true;
+ m_bIsInitialised = FALSE;
+ m_bReverb = TRUE;
field_6 = 0;
m_fSpeedOfSound = SPEED_OF_SOUND / TIME_SPENT;
m_nTimeSpent = TIME_SPENT;
- m_nActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS;
+ m_nActiveSamples = NUM_CHANNELS_GENERIC;
m_nActiveSampleQueue = 1;
ClearRequestedQueue();
m_nActiveSampleQueue = 0;
@@ -36,16 +32,16 @@ cAudioManager::cAudioManager()
ClearActiveSamples();
GenerateIntegerRandomNumberTable();
field_4 = 0;
- m_bDynamicAcousticModelingStatus = true;
+ m_bDynamicAcousticModelingStatus = TRUE;
for (int i = 0; i < NUM_AUDIOENTITIES; i++) {
- m_asAudioEntities[i].m_bIsUsed = false;
+ m_asAudioEntities[i].m_bIsUsed = FALSE;
m_anAudioEntityIndices[i] = NUM_AUDIOENTITIES;
}
m_nAudioEntitiesTotal = 0;
m_FrameCounter = 0;
- m_bFifthFrameFlag = false;
- m_bTimerJustReset = false;
+ m_bFifthFrameFlag = FALSE;
+ m_bTimerJustReset = FALSE;
m_nTimer = 0;
}
@@ -83,7 +79,7 @@ cAudioManager::Terminate()
MusicManager.Terminate();
for (uint32 i = 0; i < NUM_AUDIOENTITIES; i++) {
- m_asAudioEntities[i].m_bIsUsed = false;
+ m_asAudioEntities[i].m_bIsUsed = FALSE;
m_anAudioEntityIndices[i] = ARRAY_SIZE(m_anAudioEntityIndices);
}
@@ -98,7 +94,7 @@ cAudioManager::Terminate()
SampleManager.Terminate();
- m_bIsInitialised = false;
+ m_bIsInitialised = FALSE;
PostTerminateGameSpecificShutdown();
}
}
@@ -110,7 +106,7 @@ cAudioManager::Service()
if (m_bTimerJustReset) {
ResetAudioLogicTimers(m_nTimer);
MusicManager.ResetTimers(m_nTimer);
- m_bTimerJustReset = false;
+ m_bTimerJustReset = FALSE;
}
if (m_bIsInitialised) {
m_nPreviousUserPause = m_nUserPause;
@@ -132,8 +128,8 @@ cAudioManager::CreateEntity(eAudioType type, void *entity)
return AEHANDLE_ERROR_BADAUDIOTYPE;
for (uint32 i = 0; i < ARRAY_SIZE(m_asAudioEntities); i++) {
if (!m_asAudioEntities[i].m_bIsUsed) {
- m_asAudioEntities[i].m_bIsUsed = true;
- m_asAudioEntities[i].m_bStatus = false;
+ m_asAudioEntities[i].m_bIsUsed = TRUE;
+ m_asAudioEntities[i].m_bStatus = FALSE;
m_asAudioEntities[i].m_nType = type;
m_asAudioEntities[i].m_pEntity = entity;
m_asAudioEntities[i].m_awAudioEvent[0] = SOUND_NO_SOUND;
@@ -152,7 +148,7 @@ void
cAudioManager::DestroyEntity(int32 id)
{
if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed) {
- m_asAudioEntities[id].m_bIsUsed = false;
+ m_asAudioEntities[id].m_bIsUsed = FALSE;
for (int32 i = 0; i < m_nAudioEntitiesTotal; ++i) {
if (id == m_anAudioEntityIndices[i]) {
if (i < NUM_AUDIOENTITIES - 1)
@@ -165,7 +161,7 @@ cAudioManager::DestroyEntity(int32 id)
}
void
-cAudioManager::SetEntityStatus(int32 id, uint8 status)
+cAudioManager::SetEntityStatus(int32 id, bool8 status)
{
if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed)
m_asAudioEntities[id].m_bStatus = status;
@@ -193,7 +189,7 @@ cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol)
}
} else {
int32 i = 0;
- while (true) {
+ while (TRUE) {
if (i >= entity.m_AudioEvents) {
if (entity.m_AudioEvents < ARRAY_SIZE(entity.m_awAudioEvent)) {
entity.m_awAudioEvent[i] = sound;
@@ -246,7 +242,7 @@ cAudioManager::SetEffectsFadeVol(uint8 volume) const
}
void
-cAudioManager::SetMonoMode(uint8 mono)
+cAudioManager::SetMonoMode(bool8 mono)
{
SampleManager.SetMonoMode(mono);
}
@@ -261,7 +257,7 @@ void
cAudioManager::ResetTimers(uint32 time)
{
if (m_bIsInitialised) {
- m_bTimerJustReset = true;
+ m_bTimerJustReset = TRUE;
m_nTimer = time;
ClearRequestedQueue();
if (m_nActiveSampleQueue) {
@@ -276,11 +272,13 @@ cAudioManager::ResetTimers(uint32 time)
ClearActiveSamples();
ClearMissionAudio(0);
ClearMissionAudio(1);
- SampleManager.StopChannel(policeChannel);
+ SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
+ SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_1);
+ SampleManager.StopChannel(CHANNEL_MISSION_AUDIO_2);
SampleManager.SetEffectsFadeVolume(0);
SampleManager.SetMusicFadeVolume(0);
MusicManager.ResetMusicAfterReload();
- m_bIsPlayerShutUp = false;
+ m_bIsPlayerShutUp = FALSE;
#ifdef AUDIO_OAL
SampleManager.Service();
#endif
@@ -391,13 +389,13 @@ cAudioManager::SetSpeakerConfig(int32 conf) const
SampleManager.SetSpeakerConfig(conf);
}
-bool
+bool8
cAudioManager::IsMP3RadioChannelAvailable() const
{
if (m_bIsInitialised)
return SampleManager.IsMP3RadioChannelAvailable();
- return false;
+ return FALSE;
}
void
@@ -417,25 +415,25 @@ cAudioManager::ReacquireDigitalHandle() const
}
void
-cAudioManager::SetDynamicAcousticModelingStatus(uint8 status)
+cAudioManager::SetDynamicAcousticModelingStatus(bool8 status)
{
- m_bDynamicAcousticModelingStatus = status!=0;
+ m_bDynamicAcousticModelingStatus = status;
}
-bool
+bool8
cAudioManager::CheckForAnAudioFileOnCD() const
{
return SampleManager.CheckForAnAudioFileOnCD();
}
-uint8
+char
cAudioManager::GetCDAudioDriveLetter() const
{
if(m_bIsInitialised) return SampleManager.GetCDAudioDriveLetter();
- return 0;
+ return '\0';
}
-bool
+bool8
cAudioManager::IsAudioInitialised() const
{
return m_bIsInitialised;
@@ -444,9 +442,12 @@ cAudioManager::IsAudioInitialised() const
void
cAudioManager::ServiceSoundEffects()
{
+#ifdef FIX_BUGS
+ if(CTimer::GetLogicalFramesPassed() != 0)
+#endif
m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0;
if (m_nUserPause && !m_nPreviousUserPause) {
- for (int32 i = 0; i < allChannels; i++)
+ for (int32 i = 0; i < NUM_CHANNELS; i++)
SampleManager.StopChannel(i);
ClearRequestedQueue();
@@ -545,7 +546,7 @@ cAudioManager::RandomDisplacement(uint32 seed) const
{
int32 value;
- static bool bPos = true;
+ static bool8 bPos = TRUE;
static uint32 Adjustment = 0;
if (!seed)
@@ -576,7 +577,7 @@ cAudioManager::AddSampleToRequestedQueue()
{
int32 calculatedVolume;
uint8 sampleIndex;
- bool bReflections;
+ bool8 bReflections;
if (m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) {
calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (MAX_VOLUME - m_sQueueSample.m_nVolume);
@@ -589,24 +590,24 @@ cAudioManager::AddSampleToRequestedQueue()
++m_SampleRequestQueuesStatus[m_nActiveSampleQueue];
}
m_sQueueSample.m_nCalculatedVolume = calculatedVolume;
- m_sQueueSample.m_bLoopEnded = false;
+ m_sQueueSample.m_bLoopEnded = FALSE;
if (m_sQueueSample.m_bIs2D || CCullZones::InRoomForAudio()) {
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bRequireReflection = FALSE;
m_sQueueSample.m_nLoopsRemaining = 0;
}
if (m_bDynamicAcousticModelingStatus && m_sQueueSample.m_nLoopCount) {
bReflections = m_sQueueSample.m_bRequireReflection;
} else {
- bReflections = false;
+ bReflections = FALSE;
m_sQueueSample.m_nLoopsRemaining = 0;
}
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bRequireReflection = FALSE;
if ( m_bReverb && m_sQueueSample.m_bIs2D )
m_sQueueSample.field_4C = 30;
if (!m_bDynamicAcousticModelingStatus)
- m_sQueueSample.m_bReverbFlag = false;
+ m_sQueueSample.m_bReverbFlag = FALSE;
m_asSamples[m_nActiveSampleQueue][sampleIndex] = m_sQueueSample;
@@ -773,7 +774,12 @@ cAudioManager::UpdateReflections()
void
cAudioManager::AddReleasingSounds()
{
- bool toProcess[44]; // why not 27?
+ // in case someone would want to increase it
+#ifdef FIX_BUGS
+ bool8 toProcess[NUM_CHANNELS_GENERIC];
+#else
+ bool8 toProcess[44];
+#endif
int8 queue = m_nActiveSampleQueue == 0 ? 1 : 0;
@@ -782,19 +788,19 @@ cAudioManager::AddReleasingSounds()
if (sample.m_bLoopEnded)
continue;
- toProcess[i] = false;
+ toProcess[i] = FALSE;
for (int32 j = 0; j < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; j++) {
if (sample.m_nEntityIndex == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nEntityIndex &&
sample.m_nCounter == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nCounter) {
- toProcess[i] = true;
+ toProcess[i] = TRUE;
break;
}
}
if (!toProcess[i]) {
if (sample.m_nCounter <= 255 || !sample.m_nLoopsRemaining) {
- if (!sample.m_nReleasingVolumeDivider)
+ if (sample.m_nReleasingVolumeDivider == 0)
continue;
- if (!sample.m_nLoopCount) {
+ if (sample.m_nLoopCount == 0) {
if (sample.m_nVolumeChange == -1) {
sample.m_nVolumeChange = sample.m_nVolume / sample.m_nReleasingVolumeDivider;
if (sample.m_nVolumeChange <= 0)
@@ -806,12 +812,15 @@ cAudioManager::AddReleasingSounds()
}
sample.m_nVolume -= sample.m_nVolumeChange;
}
+#ifdef FIX_BUGS
+ if(CTimer::GetLogicalFramesPassed() != 0)
+#endif
--sample.m_nReleasingVolumeDivider;
if (m_bFifthFrameFlag) {
if (sample.m_nReleasingVolumeModificator < 20)
++sample.m_nReleasingVolumeModificator;
}
- sample.m_bReleasingSoundFlag = false;
+ sample.m_bReleasingSoundFlag = FALSE;
}
memcpy(&m_sQueueSample, &sample, sizeof(tSound));
AddSampleToRequestedQueue();
@@ -829,12 +838,12 @@ cAudioManager::ProcessActiveQueues()
uint8 vol;
uint8 offset;
float x;
- bool flag;
- bool missionState;
+ bool8 flag;
+ bool8 missionState;
for (int32 i = 0; i < m_nActiveSamples; i++) {
- m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = false;
- m_asActiveSamples[i].m_bIsProcessed = false;
+ m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = FALSE;
+ m_asActiveSamples[i].m_bIsProcessed = FALSE;
}
for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) {
tSound& sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]];
@@ -847,19 +856,19 @@ cAudioManager::ProcessActiveQueues()
if (m_FrameCounter & 1) {
if (!(j & 1)) {
- flag = false;
+ flag = FALSE;
} else {
- flag = true;
+ flag = TRUE;
}
} else if (j & 1) {
- flag = false;
+ flag = FALSE;
} else {
- flag = true;
+ flag = TRUE;
}
if (flag && !SampleManager.GetChannelUsedFlag(j)) {
- sample.m_bLoopEnded = true;
- m_asActiveSamples[j].m_bLoopEnded = true;
+ sample.m_bLoopEnded = TRUE;
+ m_asActiveSamples[j].m_bLoopEnded = TRUE;
m_asActiveSamples[j].m_nSampleIndex = NO_SAMPLE;
m_asActiveSamples[j].m_nEntityIndex = AEHANDLE_NONE;
continue;
@@ -867,8 +876,8 @@ cAudioManager::ProcessActiveQueues()
if (!sample.m_nReleasingVolumeDivider)
sample.m_nReleasingVolumeDivider = 1;
}
- sample.m_bIsProcessed = true;
- m_asActiveSamples[j].m_bIsProcessed = true;
+ sample.m_bIsProcessed = TRUE;
+ m_asActiveSamples[j].m_bIsProcessed = TRUE;
sample.m_nVolumeChange = -1;
if (!sample.m_bReleasingSoundFlag) {
if (sample.m_bIs2D) {
@@ -900,10 +909,10 @@ cAudioManager::ProcessActiveQueues()
emittingVol = vol;
}
- missionState = false;
+ missionState = FALSE;
for (int32 k = 0; k < ARRAY_SIZE(m_sMissionAudio.m_bIsMobile); k++) {
if (m_sMissionAudio.m_bIsMobile[k]) {
- missionState = true;
+ missionState = TRUE;
break;
}
}
@@ -924,8 +933,8 @@ cAudioManager::ProcessActiveQueues()
SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag);
break; //continue for i
}
- sample.m_bIsProcessed = false;
- m_asActiveSamples[j].m_bIsProcessed = false;
+ sample.m_bIsProcessed = FALSE;
+ m_asActiveSamples[j].m_bIsProcessed = FALSE;
//continue for j
}
}
@@ -966,10 +975,10 @@ cAudioManager::ProcessActiveQueues()
}
if (SampleManager.InitialiseChannel(k, m_asActiveSamples[k].m_nSampleIndex, m_asActiveSamples[k].m_nBankIndex)) {
SampleManager.SetChannelFrequency(k, m_asActiveSamples[k].m_nFrequency);
- bool isMobile = false;
+ bool8 isMobile = FALSE;
for (int32 l = 0; l < ARRAY_SIZE(m_sMissionAudio.m_bIsMobile); l++) {
if (m_sMissionAudio.m_bIsMobile[l]) {
- isMobile = true;
+ isMobile = TRUE;
break;
}
}
@@ -1000,8 +1009,8 @@ cAudioManager::ProcessActiveQueues()
SampleManager.SetChannel3DDistances(k, m_asActiveSamples[k].m_fSoundIntensity, 0.25f * m_asActiveSamples[k].m_fSoundIntensity);
SampleManager.StartChannel(k);
}
- m_asActiveSamples[k].m_bIsProcessed = true;
- sample.m_bIsProcessed = true;
+ m_asActiveSamples[k].m_bIsProcessed = TRUE;
+ sample.m_bIsProcessed = TRUE;
sample.m_nVolumeChange = -1;
break;
}
@@ -1029,28 +1038,30 @@ cAudioManager::ClearActiveSamples()
m_asActiveSamples[i].m_nCounter = 0;
m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE;
m_asActiveSamples[i].m_nBankIndex = INVALID_SFX_BANK;
- m_asActiveSamples[i].m_bIs2D = false;
+ m_asActiveSamples[i].m_bIs2D = FALSE;
m_asActiveSamples[i].m_nReleasingVolumeModificator = 5;
m_asActiveSamples[i].m_nFrequency = 0;
m_asActiveSamples[i].m_nVolume = 0;
m_asActiveSamples[i].m_nEmittingVolume = 0;
m_asActiveSamples[i].m_fDistance = 0.0f;
- m_asActiveSamples[i].m_bIsProcessed = false;
- m_asActiveSamples[i].m_bLoopEnded = false;
+ m_asActiveSamples[i].m_bIsProcessed = FALSE;
+ m_asActiveSamples[i].m_bLoopEnded = FALSE;
m_asActiveSamples[i].m_nLoopCount = 1;
+#ifndef GTA_PS2
m_asActiveSamples[i].m_nLoopStart = 0;
m_asActiveSamples[i].m_nLoopEnd = -1;
+#endif
m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f;
m_asActiveSamples[i].m_fSoundIntensity = 200.0f;
m_asActiveSamples[i].m_nOffset = 63;
- m_asActiveSamples[i].m_bReleasingSoundFlag = false;
+ m_asActiveSamples[i].m_bReleasingSoundFlag = FALSE;
m_asActiveSamples[i].m_nCalculatedVolume = 0;
m_asActiveSamples[i].m_nReleasingVolumeDivider = 0;
m_asActiveSamples[i].m_nVolumeChange = -1;
m_asActiveSamples[i].m_vecPos = CVector(0.0f, 0.0f, 0.0f);
- m_asActiveSamples[i].m_bReverbFlag = false;
+ m_asActiveSamples[i].m_bReverbFlag = FALSE;
m_asActiveSamples[i].m_nLoopsRemaining = 0;
- m_asActiveSamples[i].m_bRequireReflection = false;
+ m_asActiveSamples[i].m_bRequireReflection = FALSE;
}
}
diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h
index 2eb2220b..d3f3fb81 100644
--- a/src/audio/AudioManager.h
+++ b/src/audio/AudioManager.h
@@ -2,7 +2,7 @@
#include "audio_enums.h"
#include "AudioCollision.h"
-#include "PoliceRadio.h"
+#include "PolRadio.h"
#include "VehicleModelInfo.h"
#include "Vehicle.h"
@@ -13,27 +13,29 @@ public:
int32 m_nCounter;
int32 m_nSampleIndex;
uint8 m_nBankIndex;
- bool m_bIs2D;
+ bool8 m_bIs2D;
int32 m_nReleasingVolumeModificator;
uint32 m_nFrequency;
uint8 m_nVolume;
float m_fDistance;
int32 m_nLoopCount;
+#ifndef GTA_PS2
int32 m_nLoopStart;
int32 m_nLoopEnd;
+#endif
uint8 m_nEmittingVolume;
float m_fSpeedMultiplier;
float m_fSoundIntensity;
- bool m_bReleasingSoundFlag;
+ bool8 m_bReleasingSoundFlag;
CVector m_vecPos;
- bool m_bReverbFlag;
+ bool8 m_bReverbFlag;
uint8 m_nLoopsRemaining;
- bool m_bRequireReflection; // Used for oneshots
+ bool8 m_bRequireReflection; // Used for oneshots
uint8 m_nOffset;
uint8 field_4C;
int32 m_nReleasingVolumeDivider;
- bool m_bIsProcessed;
- bool m_bLoopEnded;
+ bool8 m_bIsProcessed;
+ bool8 m_bLoopEnded;
int32 m_nCalculatedVolume;
int8 m_nVolumeChange;
};
@@ -48,7 +50,7 @@ class tAudioEntity
public:
eAudioType m_nType;
void *m_pEntity;
- bool m_bIsUsed;
+ bool8 m_bIsUsed;
uint8 m_bStatus;
int16 m_awAudioEvent[NUM_AUDIOENTITY_EVENTS];
float m_afVolume[NUM_AUDIOENTITY_EVENTS];
@@ -78,7 +80,7 @@ public:
uint8 m_nCommentsInBank[NUM_PED_COMMENTS_BANKS];
uint8 m_nActiveBank;
#ifdef GTA_PC
- bool m_bDelay;
+ bool8 m_bDelay;
uint32 m_nDelayTimer;
#endif
@@ -110,14 +112,14 @@ class cMissionAudio
{
public:
CVector m_vecPos[MISSION_AUDIO_SLOTS];
- bool m_bPredefinedProperties[MISSION_AUDIO_SLOTS];
+ bool8 m_bPredefinedProperties[MISSION_AUDIO_SLOTS];
int32 m_nSampleIndex[MISSION_AUDIO_SLOTS];
uint8 m_nLoadingStatus[MISSION_AUDIO_SLOTS];
uint8 m_nPlayStatus[MISSION_AUDIO_SLOTS];
- bool m_bIsPlaying[MISSION_AUDIO_SLOTS];
+ bool8 m_bIsPlaying[MISSION_AUDIO_SLOTS];
int32 m_nMissionAudioCounter[MISSION_AUDIO_SLOTS];
- bool m_bIsPlayed[MISSION_AUDIO_SLOTS];
- bool m_bIsMobile[MISSION_AUDIO_SLOTS];
+ bool8 m_bIsPlayed[MISSION_AUDIO_SLOTS];
+ bool8 m_bIsMobile[MISSION_AUDIO_SLOTS];
};
VALIDATE_SIZE(cMissionAudio, 0x38);
@@ -141,7 +143,7 @@ class CPed;
class cPedParams
{
public:
- bool m_bDistanceCalculated;
+ bool8 m_bDistanceCalculated;
float m_fDistance;
CPed *m_pPed;
@@ -157,7 +159,7 @@ class cVehicleParams
{
public:
int32 m_VehicleType;
- bool m_bDistanceCalculated;
+ bool8 m_bDistanceCalculated;
float m_fDistance;
CVehicle *m_pVehicle;
cTransmission *m_pTransmission;
@@ -193,22 +195,22 @@ enum {
class cAudioManager
{
public:
- bool m_bIsInitialised;
+ bool8 m_bIsInitialised;
uint8 m_bReverb; // unused
- bool m_bFifthFrameFlag;
+ bool8 m_bFifthFrameFlag;
uint8 m_nActiveSamples;
uint8 field_4; // unused
- bool m_bDynamicAcousticModelingStatus;
+ bool8 m_bDynamicAcousticModelingStatus;
int8 field_6;
float m_fSpeedOfSound;
- bool m_bTimerJustReset;
+ bool8 m_bTimerJustReset;
int32 m_nTimer;
tSound m_sQueueSample;
uint8 m_nActiveSampleQueue;
- tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS];
- uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS];
+ tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_CHANNELS_GENERIC];
+ uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_CHANNELS_GENERIC];
uint8 m_SampleRequestQueuesStatus[NUM_SOUNDS_SAMPLES_BANKS];
- tSound m_asActiveSamples[NUM_SOUNDS_SAMPLES_SLOTS];
+ tSound m_asActiveSamples[NUM_CHANNELS_GENERIC];
tAudioEntity m_asAudioEntities[NUM_AUDIOENTITIES];
int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES];
int32 m_nAudioEntitiesTotal;
@@ -217,11 +219,11 @@ public:
cAudioScriptObjectManager m_sAudioScriptObjectManager;
// miami
- uint8 m_bIsPlayerShutUp;
+ bool8 m_bIsPlayerShutUp;
uint8 m_nPlayerMood;
uint32 m_nPlayerMoodTimer;
uint8 field_rest[4];
- bool m_bGenericSfx;
+ bool8 m_bGenericSfx;
cPedComments m_sPedComments;
int32 m_nFireAudioEntity;
@@ -253,19 +255,19 @@ public:
float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; } // done
int32 GetRandomNumber(int32 idx) const { return m_anRandomTable[idx]; }
int32 GetRandomNumberInRange(int32 idx, int32 low, int32 high) const { return (m_anRandomTable[idx] % (high - low + 1)) + low; }
- bool IsMissionAudioSamplePlaying(uint8 slot) const; // { return m_sMissionAudio.m_nPlayStatus == 1; }
- bool ShouldDuckMissionAudio(uint8 slot) const;
+ bool8 IsMissionAudioSamplePlaying(uint8 slot) const; // { return m_sMissionAudio.m_nPlayStatus == 1; }
+ bool8 ShouldDuckMissionAudio(uint8 slot) const;
// "Should" be in alphabetic order, except "getXTalkSfx"
void AddDetailsToRequestedOrderList(uint8 sample); // done (inlined in vc)
- void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool notLooping); // done
+ void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping); // done
void AddReflectionsToRequestedQueue(); // done
void AddReleasingSounds(); // done
void AddSampleToRequestedQueue(); // done
void AgeCrimes(); // done (inlined in vc)
- void CalculateDistance(bool &condition, float dist); // done
- bool CheckForAnAudioFileOnCD() const; // done
+ void CalculateDistance(bool8 &condition, float dist); // done
+ bool8 CheckForAnAudioFileOnCD() const; // done
void ClearActiveSamples(); // done
void ClearMissionAudio(uint8 slot); // done (inlined in vc)
void ClearRequestedQueue(); // done (inlined in vc)
@@ -288,90 +290,93 @@ public:
uint32 GetMedicTalkSfx(CPed *ped, int16 sound);
uint32 GetFiremanTalkSfx(CPed *ped, int16 sound);
uint32 GetDefaultTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetHMYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetHMOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetHFORITalkSfx(CPed *ped, int16 sound);
- uint32 GetHMYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetHMORITalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetHFOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetHMYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetHMOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYBUTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYMDTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYCGTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFYPRTalkSfx(CPed *ped, int16 sound);
- uint32 GetHFOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetHMOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetHMYAPTalkSfx(CPed *ped, int16 sound);
- uint32 GetHMOCATalkSfx(CPed *ped, int16 sound);
- uint32 GetBMODKTalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYCRTalkSfx(CPed *ped, int16 sound);
- uint32 GetBFYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetBFOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetBMOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetBFYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetBFORITalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetBFYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetBFOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetBMOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYBUTalkSfx(CPed *ped, int16 sound);
- uint32 GetBFYPRTalkSfx(CPed *ped, int16 sound);
- uint32 GetBFOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetBMOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYPITalkSfx(CPed *ped, int16 sound);
- uint32 GetBMYBBTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYCRTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOSTTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetWFORITalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYRITalkSfx(CPed *ped, int16 sound);
- uint32 GetWMORITalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYBETalkSfx(CPed *ped, int16 sound);
- uint32 GetWFOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOBETalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYCWTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYGOTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFOGOTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOGOTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYLGTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYLGTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYBUTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYBUTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOBUTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYPRTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOTRTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYPITalkSfx(CPed *ped, int16 sound);
- uint32 GetWMOCATalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYJGTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYJGTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYSKTalkSfx(CPed *ped, int16 sound);
- uint32 GetWMYSKTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYSHTalkSfx(CPed *ped, int16 sound);
- uint32 GetWFOSHTalkSfx(CPed *ped, int16 sound);
- uint32 GetJFOTOTalkSfx(CPed *ped, int16 sound);
- uint32 GetJMOTOTalkSfx(CPed *ped, int16 sound);
- uint32 GetCBTalkSfx(CPed *ped, int16 sound);
- uint32 GetHNTalkSfx(CPed *ped, int16 sound);
- uint32 GetSGTalkSfx(CPed *ped, int16 sound);
- uint32 GetCLTalkSfx(CPed *ped, int16 sound);
- uint32 GetGDTalkSfx(CPed *ped, int16 sound);
- uint32 GetBKTalkSfx(CPed *ped, int16 sound);
- uint32 GetPGTalkSfx(CPed *ped, int16 sound);
- uint32 GetVICETalkSfx(CPed *ped, int16 sound, int16 model);
- uint32 GetWFYG1TalkSfx(CPed *ped, int16 sound);
- uint32 GetWFYG2TalkSfx(CPed *ped, int16 sound);
+
+ // LCS: Do not delete, some of these are still used
+
+ //uint32 GetHFYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFORITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMORITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYBUTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYMDTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYCGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFYPRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHFOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMYAPTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHMOCATalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMODKTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYCRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFORITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYBUTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFYPRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBFOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYPITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBMYBBTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYCRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOSTTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFORITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYRITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMORITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOBETalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYCWTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYGOTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFOGOTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOGOTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYLGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYLGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYBUTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYBUTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOBUTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYPRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOTRTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYPITalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMOCATalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYJGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYJGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYSKTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWMYSKTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYSHTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFOSHTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetJFOTOTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetJMOTOTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetCBTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetHNTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetSGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetCLTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetGDTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetBKTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetPGTalkSfx(CPed *ped, int16 sound);
+ //uint32 GetVICETalkSfx(CPed *ped, int16 sound, int16 model);
+ //uint32 GetWFYG1TalkSfx(CPed *ped, int16 sound);
+ //uint32 GetWFYG2TalkSfx(CPed *ped, int16 sound);
uint32 GetGenericMaleTalkSfx(CPed *ped, int16 sound); // todo names (inlined in vc)
uint32 GetGenericFemaleTalkSfx(CPed *ped, int16 sound); // todo names (inlined in vc)
@@ -379,7 +384,7 @@ public:
void GenerateIntegerRandomNumberTable(); // done
char *Get3DProviderName(uint8 id) const; // done
- uint8 GetCDAudioDriveLetter() const; // done
+ char GetCDAudioDriveLetter() const; // done
int8 GetCurrent3DProviderIndex() const; // done
int8 AutoDetect3DProviders() const; // done
float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used
@@ -396,17 +401,17 @@ public:
float velocityChange); // done
float GetVehicleNonDriveWheelSkidValue(CVehicle *veh, tWheelState wheelState, cTransmission *transmission, float velocityChange); // done
- bool HasAirBrakes(int32 model) const; // done
+ bool8 HasAirBrakes(int32 model) const; // done
void Initialise(); // done
void InitialisePoliceRadio(); // done
void InitialisePoliceRadioZones(); // done
void InterrogateAudioEntities(); // done (inlined)
- bool IsAudioInitialised() const; // done
- bool IsMissionAudioSampleFinished(uint8 slot); // done
- bool IsMP3RadioChannelAvailable() const; // done
+ bool8 IsAudioInitialised() const; // done
+ bool8 IsMissionAudioSampleFinished(uint8 slot); // done
+ bool8 IsMP3RadioChannelAvailable() const; // done
- bool MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; //done
+ bool8 MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; //done
void PlayLoadedMissionAudio(uint8 slot); // done
void PlayOneShot(int32 index, uint16 sound, float vol); // done
@@ -420,20 +425,20 @@ public:
void PreTerminateGameSpecificShutdown(); // done
/// processX - main logic of adding new sounds
void ProcessActiveQueues(); // done
- bool ProcessAirBrakes(cVehicleParams& params); // done
- bool ProcessBoatEngine(cVehicleParams& params);
- bool ProcessBoatMovingOverWater(cVehicleParams& params); //done
+ bool8 ProcessAirBrakes(cVehicleParams& params); // done
+ bool8 ProcessBoatEngine(cVehicleParams& params);
+ bool8 ProcessBoatMovingOverWater(cVehicleParams& params); //done
#ifdef GTA_BRIDGE
void ProcessBridge(); // done(bcs not exists in VC)
void ProcessBridgeMotor(); // done(bcs not exists in VC)
void ProcessBridgeOneShots(); // done(bcs not exists in VC)
void ProcessBridgeWarning(); // done(bcs not exists in VC)
#endif
- bool ProcessCarBombTick(cVehicleParams& params); // done
+ bool8 ProcessCarBombTick(cVehicleParams& params); // done
void ProcessCarHeli(cVehicleParams& params); // done
void ProcessCesna(cVehicleParams& params); // done
//void ProcessCrane(); // done(bcs not exists in VC)
- bool ProcessEngineDamage(cVehicleParams& params); // done
+ bool8 ProcessEngineDamage(cVehicleParams& params); // done
void ProcessEntity(int32 sound); // done
void ProcessExplosions(int32 explosion); // done
void ProcessFireHydrant(); // done
@@ -462,25 +467,25 @@ public:
void ProcessProjectiles(); // done
void ProcessRainOnVehicle(cVehicleParams& params); // done
void ProcessReverb() const; // done
- bool ProcessReverseGear(cVehicleParams& params); // done
+ bool8 ProcessReverseGear(cVehicleParams& params); // done
void ProcessScriptObject(int32 id); // done
void ProcessSpecial(); // done
#ifdef GTA_TRAIN
- bool ProcessTrainNoise(cVehicleParams &params); //done(bcs not exists in VC)
+ bool8 ProcessTrainNoise(cVehicleParams &params); //done(bcs not exists in VC)
#endif
void ProcessVehicle(CVehicle *vehicle); // done
- bool ProcessVehicleDoors(cVehicleParams &params); // done
+ bool8 ProcessVehicleDoors(cVehicleParams &params); // done
void ProcessVehicleEngine(cVehicleParams &params); // done
void ProcessVehicleFlatTyre(cVehicleParams &params); // done
- bool ProcessVehicleHorn(cVehicleParams &params); // done
+ bool8 ProcessVehicleHorn(cVehicleParams &params); // done
void ProcessVehicleOneShots(cVehicleParams &params); // done
- bool ProcessVehicleReverseWarning(cVehicleParams &params); // done
- bool ProcessVehicleRoadNoise(cVehicleParams &params); // done
- bool ProcessVehicleSirenOrAlarm(cVehicleParams &params); // done
- bool ProcessVehicleSkidding(cVehicleParams &params); // done
+ bool8 ProcessVehicleReverseWarning(cVehicleParams &params); // done
+ bool8 ProcessVehicleRoadNoise(cVehicleParams &params); // done
+ bool8 ProcessVehicleSirenOrAlarm(cVehicleParams &params); // done
+ bool8 ProcessVehicleSkidding(cVehicleParams &params); // done
void ProcessWaterCannon(int32); // done
void ProcessWeather(int32 id); // done
- bool ProcessWetRoadNoise(cVehicleParams& params); // done
+ bool8 ProcessWetRoadNoise(cVehicleParams& params); // done
void ProcessEscalators(); // done
void ProcessExtraSounds(); // done
@@ -499,26 +504,26 @@ public:
void ServicePoliceRadioChannel(uint8 wantedLevel); // done
void ServiceSoundEffects(); // done
int8 SetCurrent3DProvider(uint8 which); // done
- void SetDynamicAcousticModelingStatus(uint8 status); // done
+ void SetDynamicAcousticModelingStatus(bool8 status); // done
void SetEffectsFadeVol(uint8 volume) const; // done
void SetEffectsMasterVolume(uint8 volume) const; // done
void SetMP3BoostVolume(uint8 volume) const; // done
- void SetEntityStatus(int32 id, uint8 status); // done
+ void SetEntityStatus(int32 id, bool8 status); // done
uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); // done
void SetMissionAudioLocation(uint8 slot, float x, float y, float z); // done
void SetMissionScriptPoliceAudio(int32 sfx) const; // inlined and optimized
- void SetMonoMode(uint8 mono); // done
+ void SetMonoMode(bool8 mono); // done
void SetMusicFadeVol(uint8 volume) const; // done
void SetMusicMasterVolume(uint8 volume) const; // done
void SetSpeakerConfig(int32 conf) const; // done
void SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter); // done
void SetUpOneShotCollisionSound(const cAudioCollision &col); // done
- bool SetupCrimeReport(); // done
- bool SetupJumboEngineSound(uint8 vol, uint32 freq); // done
- bool SetupJumboFlySound(uint8 emittingVol); // done
- bool SetupJumboRumbleSound(uint8 emittingVol); // done
- bool SetupJumboTaxiSound(uint8 vol); // done
- bool SetupJumboWhineSound(uint8 emittingVol, uint32 freq); // done
+ bool8 SetupCrimeReport(); // done
+ bool8 SetupJumboEngineSound(uint8 vol, uint32 freq); // done
+ bool8 SetupJumboFlySound(uint8 emittingVol); // done
+ bool8 SetupJumboRumbleSound(uint8 emittingVol); // done
+ bool8 SetupJumboTaxiSound(uint8 vol); // done
+ bool8 SetupJumboWhineSound(uint8 emittingVol, uint32 freq); // done
void SetupPedComments(cPedParams &params, uint16 sound); // done
void SetupSuspectLastSeenReport();
@@ -527,12 +532,12 @@ public:
void UpdateGasPedalAudio(CVehicle *veh, int vehType); // done
void UpdateReflections(); // done
- bool UsesReverseWarning(int32 model) const; // done
- bool UsesSiren(cVehicleParams &params) const; // done
- bool UsesSirenSwitching(cVehicleParams &params) const; // done
+ bool8 UsesReverseWarning(int32 model) const; // done
+ bool8 UsesSiren(cVehicleParams &params) const; // done
+ bool8 UsesSirenSwitching(cVehicleParams &params) const; // done
CVehicle *FindVehicleOfPlayer(); // done
- void SetPedTalkingStatus(CPed *ped, uint8 status); // done
+ void SetPedTalkingStatus(CPed *ped, bool8 status); // done
void SetPlayersMood(uint8 mood, uint32 time); // done
float Sqrt(float v) const { return v <= 0.0f ? 0.0f : ::Sqrt(v); }
@@ -544,8 +549,26 @@ public:
#endif
};
-//#ifdef AUDIO_MSS
+/*
+ Manual loop points are not on PS2 so let's have these macros to avoid massive ifndefs.
+ Setting these manually was pointless anyway since they never change from sdt values.
+ What were they thinking?
+*/
+#ifndef GTA_PS2
+#define RESET_LOOP_OFFSETS \
+ m_sQueueSample.m_nLoopStart = 0; \
+ m_sQueueSample.m_nLoopEnd = -1;
+#define SET_LOOP_OFFSETS(sample) \
+ m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(sample); \
+ m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(sample);
+#else
+#define RESET_LOOP_OFFSETS
+#define SET_LOOP_OFFSETS(sample)
+#endif
+
+//#if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS)
//static_assert(sizeof(cAudioManager) == 0x5558, "cAudioManager: error");
//#endif
+
extern cAudioManager AudioManager;
diff --git a/src/audio/AudioSamples.h b/src/audio/AudioSamples.h
index 403ef684..15840dd3 100644
--- a/src/audio/AudioSamples.h
+++ b/src/audio/AudioSamples.h
@@ -4,398 +4,330 @@
enum eSfxSample
{
- SFX_CAR_HORN_JEEP = 0,
+ SFX_AIR_BRAKES,
+ SFX_AK47_LEFT,
+ SFX_AK47_RELOAD,
+ SFX_AK47_RIGHT,
+ SFX_ALARM,
+ SFX_AMBULANCE_SI,
+ SFX_AMMU_AA,
+ SFX_AMMU_AB,
+ SFX_AMMU_AC,
+ SFX_ARM_BOMB,
+ SFX_A_10,
+ SFX_BAT_HIT_LEFT,
+ SFX_BAT_HIT_RIGHT,
+ SFX_BEEP,
+ SFX_BOAT_CRUISER_LOOP,
+ SFX_BOAT_SPLASH_1,
+ SFX_BOAT_SPLASH_2,
+ SFX_BOAT_V12_LOOP,
+ SFX_BOAT_WATER_LOOP,
+ SFX_BODY_LAND,
+ SFX_BODY_LAND_AND_FALL,
+ SFX_BOMB_BEEP,
+ SFX_BRIDGE_OPEN_WARNING,
+ SFX_BULLET_CAR_1,
+ SFX_BULLET_CAR_2,
+ SFX_BULLET_CAR_3,
+ SFX_BULLET_PASS_1,
+ SFX_BULLET_PASS_2,
+ SFX_BULLET_PED,
+ SFX_BULLET_SHELL_HIT_GROUND_1,
+ SFX_BULLET_SHELL_HIT_GROUND_2,
+ SFX_BULLET_WALL_1,
+ SFX_BULLET_WALL_2,
+ SFX_BULLET_WALL_3,
+ SFX_CAMERA,
+ SFX_CARDBOARD_BOX_SMASH,
+ SFX_CAR_HELI_FAR,
+ SFX_CAR_HELI_MAI,
+ SFX_CAR_HELI_MAI2,
+ SFX_CAR_HELI_REA,
+ SFX_CAR_HELI_ROL,
+ SFX_CAR_HELI_ROT,
+ SFX_CAR_HELI_STA,
+ SFX_CAR_HORN_56CHEV,
SFX_CAR_HORN_BMW328,
SFX_CAR_HORN_BUS,
SFX_CAR_HORN_BUS2,
- SFX_CAR_HORN_56CHEV,
+ SFX_CAR_HORN_JEEP,
SFX_CAR_HORN_PICKUP,
SFX_CAR_HORN_PORSCHE,
SFX_CAR_HORN_TRUCK,
-
- SFX_CAR_HELI_MAI, // 8
- SFX_CAR_HELI_MAI2, // 9
- SFX_CAR_HELI_REA, // 10
- SFX_CAR_HELI_STA, // 11
- SFX_CAR_HELI_ROT, // 12
- SFX_CAR_HELI_FAR, // 13
- SFX_CAR_HELI_ROL, // 14
-
- SFX_OLD_CAR_DOOR_OPEN,
- SFX_OLD_CAR_DOOR_CLOSE,
- SFX_NEW_CAR_DOOR_OPEN,
- SFX_NEW_CAR_DOOR_CLOSE,
- SFX_TRUCK_DOOR_OPEN,
- SFX_TRUCK_DOOR_CLOSE,
- SFX_REVERSE_GEAR,
- SFX_REVERSE_GEAR_2,
- SFX_CAR_STARTER, // 23
- SFX_ROAD_NOISE, // 24
- SFX_SKID, // 25
- SFX_GRAVEL_SKID, // 26
- SFX_POLICE_SIREN_SLOW,
- SFX_SIREN_FAST, // 28
- SFX_AMBULANCE_SIREN_SLOW,
- SFX_REVERSE_WARNING,
- SFX_ICE_CREAM_TUNE,
- SFX_AIR_BRAKES, // 32
- SFX_TYRE_BUMP, // 33
- SFX_TYRE_BURST_B, // 34
- SFX_TYRE_BURST, // 35
- SFX_TYRE_BURST_L, // 36
- SFX_PALM_TREE_LO, // 37
- SFX_BULLET_PASS_1, // 38
- SFX_BULLET_PASS_2, // 39
- SFX_SKATE_1, // 40
- SFX_SKATE_2, // 41
- SFX_FOOTSTEP_CONCRETE_1,
- SFX_FOOTSTEP_CONCRETE_2,
- SFX_FOOTSTEP_CONCRETE_3,
- SFX_FOOTSTEP_CONCRETE_4,
- SFX_FOOTSTEP_CONCRETE_5,
- SFX_EXPLOSION_1, // 47
- SFX_EXPLOSION_2, // 48
- SFX_EXPLOSION_3, // 49
- SFX_COLT45_LEFT, // 50
- SFX_COLT45_RIGHT, // 51
- SFX_AK47_LEFT, // 52
- SFX_AK47_RIGHT, // 53
- SFX_UZI_LEFT, // 54
- SFX_UZI_RIGHT, // 55
- SFX_UZI_END_LEFT, // 56
- SFX_SNIPER_LEFT, // 57
- SFX_SNIPER_RIGHT, // 58
- SFX_ROCKET_LEFT, // 59
- SFX_ROCKET_RIGHT, // 60
- SFX_ROCKET_FLY, // 61
- SFX_FLAMETHROWER_LEFT, // 62
- SFX_FLAMETHROWER_RIGHT, // 63
- SFX_FLAMETHROWER_START_LEFT, // 64
- SFX_FLAMETHROWER_START_RIGHT, // 65
- SFX_SHOTGUN_LEFT, // 66
- SFX_SHOTGUN_RIGH, // 67
- SFX_M60_LEFT, // 68
- SFX_M60_RIGHT, // 69
- SFX_M60_TAIL_LEFT, // 70
- SFX_TEC_LEFT, // 71
- SFX_TEC_RIGHT, // 72
- SFX_TEC_TAIL, // 73
- SFX_RUGER_LEFT, // 74
- SFX_RUGER_RIGHT, // 75
- SFX_RUGER_TAIL, // 76
- SFX_PISTOL_RELOAD, // 77
- SFX_AK47_RELOAD, // 78
- SFX_ROCKET_RELOAD, // 79
- SFX_RIFLE_RELOAD, // 80
- SFX_GOLF_CLUB_SWING, // 81
- SFX_MINIGUN_FIRE_LEFT, // 82
- SFX_MINIGUN_FIRE_RIGHT, // 83
- SFX_MINIGUN_STOP, // 84
- SFX_SPAS12_LEFT, // 85
- SFX_SPAS12_RIGHT, // 86
- SFX_SPAS12_TAIL_LEFT, // 87
- SFX_PYTHON_LEFT, // 88
- SFX_PYTHON_RIGHT, // 89
- SFX_MP5_LEFT, // 90
- SFX_MP5_RIGHT, // 91
- SFX_COL_TARMAC_1, // 92
- SFX_COL_TARMAC_2, // 93
- SFX_COL_TARMAC_3, // 94
- SFX_COL_TARMAC_4, // 95
- SFX_COL_TARMAC_5, // 96
- SFX_COL_GRASS_1,
- SFX_COL_GRAVEL_1,
- SFX_COL_MUD_1,
- SFX_COL_GARAGE_DOOR_1,
+ SFX_CAR_IDLE_CADI,
+ SFX_CAR_IDLE_COBRA,
+ SFX_CAR_IDLE_GOLFCART,
+ SFX_CAR_IDLE_HONDA,
+ SFX_CAR_IDLE_HOTROD,
+ SFX_CAR_IDLE_MERC,
+ SFX_CAR_IDLE_PACARD,
+ SFX_CAR_IDLE_PATHFINDER,
+ SFX_CAR_IDLE_PONT,
+ SFX_CAR_IDLE_PONT2,
+ SFX_CAR_IDLE_PORSHE,
+ SFX_CAR_IDLE_SPIDER,
+ SFX_CAR_IDLE_SPORTCAR,
+ SFX_CAR_IDLE_TRUCK,
+ SFX_CAR_IDLE_UNUSED1,
+ SFX_CAR_IDLE_UNUSED2,
+ SFX_CAR_IDLE_UNUSED3,
+ SFX_CAR_IDLE_UNUSED4,
+ SFX_CAR_IDLE_VTWI,
+ SFXNEWCARDOOR,
+ SFX_CAR_ON_FIRE,
+ SFX_CAR_RAIN_1,
+ SFX_CAR_RAIN_2,
+ SFX_CAR_RAIN_3,
+ SFX_CAR_RAIN_4,
+ SFX_CAR_REV_CADI,
+ SFX_CAR_REV_COBRA,
+ SFX_CAR_REV_GOLFCART,
+ SFX_CAR_REV_HONDA,
+ SFX_CAR_REV_HOTROD,
+ SFX_CAR_REV_MERC,
+ SFX_CAR_REV_PACARD,
+ SFX_CAR_REV_PATHFINDER,
+ SFX_CAR_REV_PONT,
+ SFX_CAR_REV_PONT2,
+ SFX_CAR_REV_PORSHE,
+ SFX_CAR_REV_SPIDER,
+ SFX_CAR_REV_SPORTCAR,
+ SFX_CAR_REV_TRUCK,
+ SFX_CAR_REV_UNUSED1,
+ SFX_CAR_REV_UNUSED2,
+ SFX_CAR_REV_UNUSED3,
+ SFX_CAR_REV_UNUSED4,
+ SFX_CAR_REV_VTWI,
+ SFX_CAR_STARTER,
+ SFX_CENTRAL,
+ SFX_CESNA_IDLE,
+ SFX_CESNA_REV,
+ SFX_COLT45_LEFT,
+ SFX_COLT45_RIGHT,
+ SFX_COL_CARDBOARD_1,
+ SFX_COL_CARDBOARD_2,
+ SFX_COL_CAR_1,
+ SFX_COL_CAR_2,
+ SFX_COL_CAR_3,
+ SFX_COL_CAR_4,
+ SFX_COL_CAR_5,
SFX_COL_CAR_PANEL_1,
SFX_COL_CAR_PANEL_2,
SFX_COL_CAR_PANEL_3,
SFX_COL_CAR_PANEL_4,
SFX_COL_CAR_PANEL_5,
SFX_COL_CAR_PANEL_6,
- SFX_COL_THICK_METAL_PLATE_1,
- SFX_COL_SCAFFOLD_POLE_1,
- SFX_COL_LAMP_POST_1,
+ SFX_COL_CONTAINER_1,
+ SFX_COL_GARAGE_DOOR_1,
+ SFX_COL_GATE,
+ SFX_COL_GRASS_1,
+ SFX_COL_GRAVEL_1,
SFX_COL_HYDRANT_1,
+ SFX_COL_LAMP_POST_1,
SFX_COL_METAL_CHAIN_FENCE_1,
SFX_COL_METAL_CHAIN_FENCE_2,
SFX_COL_METAL_CHAIN_FENCE_3,
SFX_COL_METAL_CHAIN_FENCE_4,
- SFX_COL_PED_1, // 115
- SFX_COL_PED_2, // 116
+ SFX_COL_MUD_1,
+ SFX_COL_NEWS_VENDOR_1,
+ SFX_COL_NEWS_VENDOR_2,
+ SFX_COL_NEWS_VENDOR_3,
+ SFX_COL_PED_1,
+ SFX_COL_PED_2,
SFX_COL_SAND_1,
- SFX_COL_WOOD_CRATES_1,
- SFX_COL_WOOD_CRATES_2,
- SFX_COL_WOOD_CRATES_3,
- SFX_COL_WOOD_CRATES_4,
+ SFX_COL_SCAFFOLD_POLE_1,
+ SFX_COL_TARMAC_1,
+ SFX_COL_TARMAC_2,
+ SFX_COL_TARMAC_3,
+ SFX_COL_TARMAC_4,
+ SFX_COL_TARMAC_5,
+ SFX_COL_THICK_METAL_PLATE_1,
+ SFX_COL_VEG_1,
+ SFX_COL_VEG_2,
+ SFX_COL_VEG_3,
+ SFX_COL_VEG_4,
+ SFX_COL_VEG_5,
SFX_COL_WOOD_BENCH_1,
SFX_COL_WOOD_BENCH_2,
SFX_COL_WOOD_BENCH_3,
SFX_COL_WOOD_BENCH_4,
+ SFX_COL_WOOD_CRATES_1,
+ SFX_COL_WOOD_CRATES_2,
+ SFX_COL_WOOD_CRATES_3,
+ SFX_COL_WOOD_CRATES_4,
SFX_COL_WOOD_SOLID_1,
- SFX_COL_VEG_1, // 127
- SFX_COL_VEG_2, // 128
- SFX_COL_VEG_3, // 129
- SFX_COL_VEG_4, // 130
- SFX_COL_VEG_5, // 131
- SFX_COL_CONTAINER_1,
- SFX_COL_NEWS_VENDOR_1,
- SFX_COL_NEWS_VENDOR_2,
- SFX_COL_NEWS_VENDOR_3,
- SFX_COL_CAR_1, // 136
- SFX_COL_CAR_2, // 137
- SFX_COL_CAR_3, // 138
- SFX_COL_CAR_4, // 139
- SFX_COL_CAR_5, // 140
- SFX_COL_CARDBOARD_1,
- SFX_COL_CARDBOARD_2,
- SFX_COL_GATE, // 143
- SFX_SCRAPE_CAR_1, // 144
+ SFX_COUNTDOWN,
SFX_CRATE_SMASH,
- SFX_GLASS_CRACK, // 146
- SFX_GLASS_SMASH, // 147
+ SFX_C_OR_D_UNK_1,
+ SFX_C_OR_D_UNK_2,
+ SFX_C_OR_D_UNK_3,
+ SFX_C_OR_D_UNK_4,
+ SFX_C_OR_D_UNK_5,
+ SFX_C_OR_D_UNK_6,
+ SFX_DOCK_BA,
+ SFX_DOCK_BB,
+ SFX_EAST,
+ SFX_ERROR_FIRE_RIFLE,
+ SFX_ERROR_FIRE_ROCKET_LAUNCHER,
+ SFX_EXPLOSION_1,
+ SFX_EXPLOSION_2,
+ SFX_EXPLOSION_3,
+ SFX_FIGHT_1,
+ SFX_FIGHT_2,
+ SFX_FIGHT_4,
+ SFX_FIGHT_5,
+ SFX_FISHING_BOAT_IDLE,
+ SFX_FLAMETHROWER_LEFT,
+ SFX_FLAMETHROWER_RIGHT,
+ SFX_FLAMETHROWER_START_LEFT,
+ SFX_FLAMETHROWER_START_RIGHT,
+ SFX_FOOTSTEP_CONCRETE_1,
+ SFX_FOOTSTEP_CONCRETE_2,
+ SFX_FOOTSTEP_CONCRETE_3,
+ SFX_FOOTSTEP_CONCRETE_4,
+ SFX_FOOTSTEP_CONCRETE_5,
+ SFX_GARAGE_DOOR_LOOP,
+ SFX_GATE_START_CLU,
+ SFX_GATE_STOP_CLU,
+ SFX_GLASS_CRACK,
SFX_GLASS_SHARD_1,
SFX_GLASS_SHARD_2,
SFX_GLASS_SHARD_3,
SFX_GLASS_SHARD_4,
- SFX_PED_ON_FIRE, // 152
- SFX_CAR_ON_FIRE, // 153
- SFX_RAIN, // 154
- SFX_HURRICANE_MA, // 155
- SFX_BULLET_SHELL_HIT_GROUND_1,
- SFX_BULLET_SHELL_HIT_GROUND_2,
- SFX_BULLET_PED, // 158
- SFX_BULLET_CAR_1, // 159
- SFX_BULLET_CAR_2, // 160
- SFX_BULLET_CAR_3, // 161
- SFX_BULLET_WALL_1, // 162
- SFX_BULLET_WALL_2, // 163
- SFX_BULLET_WALL_3, // 164
- SFX_BAT_HIT_LEFT, // 165
- SFX_BAT_HIT_RIGH, // 166
- SFX_FIGHT_1, // 167
- SFX_FIGHT_2, // 168
- SFX_FIGHT_4, // 169
- SFX_FIGHT_5, // 170
- SFX_KNIFE_SWING, // 171
- SFX_KNIFE_SLASH, // 172
- SFX_KNIFE_STAB, // 173
- SFX_HAMMER_HIT_1, // 174
- SFX_HAMMER_HIT_2, // 175
- SFX_GARAGE_DOOR_LOOP, // 176
- SFX_COUNTDOWN, // 177
- SFX_ARM_BOMB, // 178
- SFX_POLICE_RADIO_CRACKLE, // 179
-
- SFX_WEVE_GOT,
- SFX_THERES,
- SFX_RESPOND_TO,
- SFX_A_10,
+ SFX_GLASS_SMASH,
+ SFX_GOLF_CLUB_SWING,
+ SFX_GO_CENTRE,
+ SFX_GO_LEFT,
+ SFX_GO_RIGHT,
+ SFX_GRAVEL_SKID,
+ SFX_HAMMER_HIT_1,
+ SFX_HAMMER_HIT_2,
+ SFX_HELI_1,
+ SFX_HIT_BALL,
+ SFX_HOSE,
+ SFX_H_UNK, // SFX_CAR_REV_UNUS
+ SFX_ICE_CREAM_TUNE,
SFX_IN,
- SFX_NORTH,
- SFX_EAST,
- SFX_SOUTH,
- SFX_WEST,
- SFX_CENTRAL,
- SFX_POLICE_RADIO_MESSAGE_NOISE_1,
- SFX_POLICE_RADIO_SUSPECT,
- SFX_POLICE_RADIO_LAST_SEEN,
- SFX_POLICE_RADIO_ON_FOOT,
- SFX_POLICE_RADIO_IN_A,
- SFX_POLICE_RADIO_DARK,
- SFX_POLICE_RADIO_LIGHT,
- SFX_POLICE_RADIO_BRIGHT,
-
- SFX_CRIME_1,
- SFX_CRIME_2,
- SFX_CRIME_3,
- SFX_CRIME_4,
- SFX_CRIME_5,
- SFX_CRIME_6,
- SFX_CRIME_7,
- SFX_CRIME_8,
- SFX_CRIME_9,
- SFX_CRIME_10,
- SFX_CRIME_11,
- SFX_CRIME_12,
- SFX_POLICE_RADIO_VICE_CITY,
- SFX_POLICE_RADIO_VICE_CITY_BEACH,
- SFX_POLICE_RADIO_VICE_CITY_MAINLAND,
- SFX_POLICE_RADIO_OCEAN_BEACH, //???
- SFX_POLICE_RADIO_WASHINGTON_BEACH,
- SFX_POLICE_RADIO_VICE_POINT,
- SFX_POLICE_RADIO_LEAF_LINKS,
- SFX_POLICE_RADIO_STRAFISH_ISLAND, //???????????
- SFX_POLICE_RADIO_VICE_PORT,
- SFX_POLICE_RADIO_LITTLE_HAVANA,
- SFX_POLICE_RADIO_LITTLE_HAITI,
- SFX_POLICE_RADIO_PRAWN_ISLAND, //??????????? IS THAT HOW SHE PRONOUNCES ISLAND?
- SFX_POLICE_RADIO_DOWNTOWN,
- SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL,
- SFX_POLICE_RADIO_BLACK,
- SFX_POLICE_RADIO_WHITE,
- SFX_POLICE_RADIO_BLUE,
- SFX_POLICE_RADIO_RED,
- SFX_POLICE_RADIO_PURPLE,
- SFX_POLICE_RADIO_YELLOW,
- SFX_POLICE_RADIO_GREY,
- SFX_POLICE_RADIO_ORANGE,
- SFX_POLICE_RADIO_GREEN,
- SFX_POLICE_RADIO_SILVER,
- SFX_POLICE_RADIO_AMBULANCE,
- SFX_POLICE_RADIO_2_DOOR,
- SFX_POLICE_RADIO_TRUCK,
- SFX_POLICE_RADIO_FIRE_TRUCK,
- SFX_POLICE_RADIO_PICKUP,
- SFX_POLICE_RADIO_POLICE_CAR,
- SFX_POLICE_RADIO_BOAT,
- SFX_POLICE_RADIO_BUGGY,
- SFX_POLICE_RADIO_BUS,
- SFX_POLICE_RADIO_COACH,
- SFX_POLICE_RADIO_CRUISER,
- SFX_POLICE_RADIO_DINGHY,
- SFX_POLICE_RADIO_GARBAGE_TRUCK,
- SFX_POLICE_RADIO_GOLF_CART,
- SFX_POLICE_RADIO_HEARSE,
- SFX_POLICE_RADIO_HELICOPTER,
- SFX_POLICE_RADIO_ICE_CREAM_VAN,
- SFX_POLICE_RADIO_LOWRIDER,
- SFX_POLICE_RADIO_MOPED,
- SFX_POLICE_RADIO_MOTOBIKE,
- SFX_POLICE_RADIO_OFFROAD,
- SFX_POLICE_RADIO_PLANE,
- SFX_POLICE_RADIO_RIG,
- SFX_POLICE_RADIO_SEDAN,
- SFX_POLICE_RADIO_SPEEDBOAT,
- SFX_POLICE_RADIO_SPORTS_CAR,
- SFX_POLICE_RADIO_STATION_WAGON,
- SFX_POLICE_RADIO_STRETCH,
- SFX_POLICE_RADIO_SWAT_VAN,
- SFX_POLICE_RADIO_TANK,
- SFX_POLICE_RADIO_TAXI,
- SFX_POLICE_RADIO_VAN,
-
- SFX_HELI_1, // 198
- SFX_PHONE_RING, // 199
- SFX_CAR_REV_1, // PONT
- SFX_CAR_REV_2, // PORSHE
- SFX_CAR_REV_3, // SPIDER
- SFX_CAR_REV_4, // MERC
- SFX_CAR_REV_5, // TRUC
- SFX_CAR_REV_6, // HOTROD
- SFX_CAR_REV_7, // COBRA
- SFX_CAR_REV_8, // PONT2
- SFX_CAR_REV_9, // CADI
- SFX_CAR_REV_10, // PATHFINDER
- SFX_CAR_REV_11, // PACARD
- SFX_CAR_REV_12, // GOLFCART
- SFX_CAR_REV_13, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_14, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_15, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_16, // SFX_CAR_IDLE_GOL
- SFX_CAR_REV_17, // VTWI
- SFX_MOPED_REV, // just moped
- SFX_CAR_REV_19, // HOND(A)
- SFX_CAR_REV_20, // SPOR(TCAR)
- SFX_CAR_IDLE_1, // PONT
- SFX_CAR_IDLE_2, // PORSHE
- SFX_CAR_IDLE_3, // SPIDER
- SFX_CAR_IDLE_4, // MERC
- SFX_CAR_IDLE_5, // TRUC
- SFX_CAR_IDLE_6, // HOTROD
- SFX_CAR_IDLE_7, // COBRA
- SFX_CAR_IDLE_8, // PONT2
- SFX_CAR_IDLE_9, // CADI
- SFX_CAR_IDLE_10, // PATHFINDER
- SFX_CAR_IDLE_11, // PACARD
- SFX_CAR_IDLE_12, // GOLFCART
- SFX_CAR_IDLE_13, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_14, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_15, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_16, // SFX_CAR_IDLE_GOL
- SFX_CAR_IDLE_17, // VTWI
- SFX_MOPED_IDLE, // 237
- SFX_CAR_IDLE_19, // HOND(A)
- SFX_CAR_IDLE_20, // SPOR(TCAR)
+ SFX_FE_INFO_LEFT,
+ SFX_FE_INFO_RIGHT,
SFX_JUMBO_DIST_FLY,
- SFX_JUMBO_TAXI, // 241
- SFX_JUMBO_WHINE, // 242
- SFX_JUMBO_ENGINE, // 243
- SFX_JUMBO_RUMBLE, // 244
+ SFX_JUMBO_ENGINE,
SFX_JUMBO_LAND_WHEELS,
- SFX_BOAT_CRUISER_LOOP, // 246
- SFX_BOAT_V12_LOOP, // 247
- SFX_BOAT_WATER_LOOP,
- SFX_BOAT_SPLASH_1,
- SFX_BOAT_SPLASH_2,
- SFX_FISHING_BOAT_IDLE,
- SFX_CAR_RAIN_1, // 252
- SFX_CAR_RAIN_2, // 253
- SFX_CAR_RAIN_3, // 254
- SFX_CAR_RAIN_4, // 255
- SFX_SPLASH_1, // 256
- SFX_PED_CRUNCH_1, // 257
- SFX_PED_CRUNCH_2, // 258
- SFX_WOODEN_BOX_SMASH,
- SFX_CARDBOARD_BOX_SMASH,
- SFX_ERROR_FIRE_ROCKET_LAUNCHER,
- SFX_ERROR_FIRE_RIFLE,
- SFX_TANK_TURRET, // 263
- SFX_BODY_LAND_AND_FALL,
- SFX_BODY_LAND, // 265
- SFX_BOMB_BEEP, // 266
- SFX_TIMER_BEEP, // 267
+ SFX_JUMBO_RUMBLE,
+ SFX_JUMBO_TAXI,
+ SFX_JUMBO_WHINE,
+ SFX_KNIFE_SLASH,
+ SFX_KNIFE_STAB,
+ SFX_KNIFE_SWING,
+ SFX_M60_LEFT,
+ SFX_M60_RIGHT,
+ SFX_MINIGUN_FIRE_LEFT,
+ SFX_MINIGUN_FIRE_RIGHT,
+ SFX_MINIGUN_STOP,
+ SFX_MONEY_LEFT,
+ SFX_MONEY_RIGHT,
+ SFX_MOPED_IDLE,
+ SFX_MOPED_REV,
+ SFX_MP5_LEFT,
+ SFX_MP5_RIGHT,
+ SFX_NEW_CAR_DOOR_CLOSE,
+ SFX_NEW_CAR_DOOR_OPEN,
+ SFX_NORTH, // cut
+ SFX_OLD_CAR_DOOR_CLOSE,
+ SFX_OLD_CAR_DOOR_OPEN,
+ SFX_PALM_TREE_LO,
+ SFX_PART_MISSION_COMPLETE_LEFT,
+ SFX_PART_MISSION_COMPLETE_RIGHT,
+ SFX_PART_MISSION_COMPLETE_CENTRE,
+ SFX_PAY_PHONE,
+ SFX_PED_CRUNCH_1,
+ SFX_PED_CRUNCH_2,
+ SFX_PED_ON_FIRE,
+ SFX_PISTOL_RELOAD,
+ SFX_PIZZA_THROW, // Throwpizza
+ SFX_POLICE_RADIO_BRIGHT,
+ SFX_POLICE_RADIO_CRACKLE, // 179
+ SFX_POLICE_RADIO_DARK,
+ SFX_POLICE_RADIO_IN_A,
+ SFX_POLICE_RADIO_LAST_SEEN,
+ SFX_POLICE_RADIO_LIGHT,
+ SFX_POLICE_RADIO_MESSAGE_NOISE_1,
+ SFX_POLICE_RADIO_ON_FOOT,
+ SFX_POLICE_RADIO_SUSPECT,
+ SFX_POLICE_SIREN_SLOW,
+ SFX_PYTHON_LEFT,
+ SFX_PYTHON_RIGHT,
+ SFX_RADIO_CLICK,
+ SFX_RADIO_DIAL_1,
+ SFX_RADIO_DIAL_2,
+ SFX_RADIO_DIAL_3,
+ SFX_RAIN,
+ SFX_RESPOND_TO, // cut
+ SFX_REVERSE_GEAR,
+ SFX_REVERSE_GEAR_2,
+ SFX_REVERSE_WARNING,
+ SFX_RIFLE_RELOAD,
+ SFX_ROAD_NOISE,
+ SFX_ROCKET_FLY,
+ SFX_ROCKET_LEFT,
+ SFX_ROCKET_RELOAD,
+ SFX_ROCKET_RIGHT,
+ SFX_RUGER_LEFT,
+ SFX_RUGER_RIGHT,
+ SFX_RUGER_TAIL,
+ SFX_R_OR_S_UNK1,
+ SFX_SCRAPE_CAR_1,
+ SFX_SHAG_SUSPENSION,
+ SFX_SHOTGUN_LEFT,
+ SFX_SHOTGUN_RIGHT,
+ SFX_SIREN_FAST,
+ SFX_SKATE_1, // cut
+ SFX_SKATE_2, // cut
+ SFX_SKID,
+ SFX_SNIPER_LEFT,
+ SFX_SNIPER_RIGHT,
+ SFX_SOUTH, // cut
+ SFX_SPAS12_LEFT,
+ SFX_SPAS12_RIGHT,
+ SFX_SPAS12_TAIL_LEFT,
+ SFX_SPLASH_1,
SFX_SUSPENSION_FAST_MOVE,
SFX_SUSPENSION_SLOW_MOVE_LOOP,
- SFX_SHAG_SUSPENSION,
- SFX_HIT_BALL, // 271
- SFX_ARCADE, // 272
- SFX_CESNA_IDLE, // 273
- SFX_CESNA_REV, // 274
- SFX_RADIO_CLICK, // 275
- SFX_RADIO_DIAL_1, // 276
- SFX_RADIO_DIAL_2, // 277
- SFX_RADIO_DIAL_3, // 278
-
- // pc only
- SFX_RADIO_DIAL_4,
- SFX_RADIO_DIAL_5,
- SFX_RADIO_DIAL_6,
- SFX_RADIO_DIAL_7,
- SFX_RADIO_DIAL_8,
- SFX_RADIO_DIAL_9,
- SFX_RADIO_DIAL_10,
- SFX_RADIO_DIAL_11,
- SFX_RADIO_DIAL_12,
-
- SFX_INFO_LEFT, // 279
- SFX_INFO_RIGHT, // 280
- SFX_INFO_CENTRE, // 281
- SFX_MONEY_LEFT, // 282
- SFX_MONEY_RIGHT, // 283
- SFX_WEAPON_LEFT, // 284
- SFX_WEAPON_RIGHT, // 285
- SFX_WEAPON_CENTRE, // 286
- SFX_PART_MISSION_COMPLETE_LEFT, // 287
- SFX_PART_MISSION_COMPLETE_RIGHT, // 288
- SFX_PART_MISSION_COMPLETE_CENTRE, // 289
- SFX_GO_LEFT, // 290
- SFX_GO_RIGHT, // 291
- SFX_GO_CENTRE, // 292
- SFX_TIMER, // 293
- SFX_EMPTY, // 294
-
- SFX_FE_HIGHLIGHT_LEFT, //
- SFX_FE_HIGHLIGHT_RIGHT, //
- SFX_FE_SELECT_LEFT, //
- SFX_FE_SELECT_RIGHT, //
- SFX_FE_BACK_LEFT, //
- SFX_FE_BACK_RIGHT, //
- SFX_FE_ERROR_LEFT, //
- SFX_FE_ERROR_RIGHT, //
+ SFX_TANK_TURRET,
+ SFX_TEC_LEFT,
+ SFX_TEC_RIGHT,
+ SFX_TEC_TAIL,
+ SFX_THERES, // cut
+ SFX_TIMER,
+ SFX_TIMER_BEEP,
+ SFX_TRAIN, // trainloop
+ SFX_TRUCK_DOOR_CLOSE,
+ SFX_TRUCK_DOOR_OPEN,
+ SFX_TYRE_BUMP,
+ SFX_TYRE_BURST,
+ SFX_TYRE_BURST_B,
+ SFX_TYRE_BURST_L,
+ SFX_UZI_END_LEFT,
+ SFX_UZI_LEFT,
+ SFX_UZI_RIGHT,
+ SFX_WEAPON_CENTRE,
+ SFX_WEAPON_LEFT,
+ SFX_WEAPON_RIGHT,
+ SFX_WEST, // cut
+ SFX_WEVE_GOT, // cut
+ SFX_WOODEN_BOX_SMASH,
+
+ SFX_EMPTY,
+
+ SFX_FE_BACK,
+ SFX_FE_ERROR_LEFT,
+ SFX_FE_ERROR_RIGHT,
+ SFX_FE_HIGHLIGHT,
SFX_FE_NOISE_BURST_1,
SFX_FE_NOISE_BURST_2,
SFX_FE_NOISE_BURST_3,
+ SFX_FE_SELECT,
SFX_CAR_ACCEL_1,
SFX_CAR_AFTER_ACCEL_1,
@@ -446,24 +378,21 @@ enum eSfxSample
SFX_CAR_FINGER_OFF_ACCEL_12,
// some CHAINSAW STUFF
- // SFX_CAR_CHAINSAW, //10973
- // SFX_CAR_CHAINSAW, //10974
- // SFX_CAR_CHAINSAW, //10975
- SFX_CAR_ACCEL_13,
- SFX_CAR_AFTER_ACCEL_13,
- SFX_CAR_FINGER_OFF_ACCEL_13,
+ SFX_CAR_CHAINSAW_IDLE,
+ SFX_CAR_CHAINSAW_ATTACK,
+ SFX_CAR_CHAINSAW_EMPTY, // unused
- SFX_RC_IDLE, // 10976
- SFX_RC_REV, // 10977
- SFX_RC_EMPTY, // 10978
+ SFX_RC_IDLE,
+ SFX_RC_REV,
+ SFX_RC_EMPTY,
- SFX_CAR_RC_HELI, // 10979
- SFX_CAR_AFTER_ACCEL_15, // empty
- SFX_CAR_FINGER_OFF_ACCEL_15, // empty
+ SFX_CAR_RC_HELI,
+ SFX_CAR_AFTER_ACCEL_15,
+ // SFX_CAR_FINGER_OFF_ACCEL_15,
- SFX_CAR_ACCEL_16, // empty
- SFX_CAR_AFTER_ACCEL_16, // empty
- SFX_CAR_FINGER_OFF_ACCEL_16, // empty
+ SFX_CAR_ACCEL_16,
+ // SFX_CAR_AFTER_ACCEL_16,
+ // SFX_CAR_FINGER_OFF_ACCEL_16,
// bike stuff apparently
SFX_CAR_ACCEL_17,
@@ -505,12 +434,12 @@ enum eSfxSample
SFX_HELI_UNUSED_3,
SFX_HELI_UNUSED_4,
- SFX_SEAPLANE_PRO1, // 11018
- SFX_SEAPLANE_PRO2, // 11019
- SFX_SEAPLANE_PRO3, // 11020
- SFX_SEAPLANE_PRO4, // 11021
// low fuel
- SFX_SEAPLANE_LOW, // 11022
+ SFX_SEAPLANE_LOW,
+ SFX_SEAPLANE_PRO1,
+ SFX_SEAPLANE_PRO2,
+ SFX_SEAPLANE_PRO3,
+ SFX_SEAPLANE_PRO4,
// something padded for more plane?
SFX_PLANE_UNUSED_1,
@@ -519,32 +448,32 @@ enum eSfxSample
SFX_PLANE_UNUSED_4,
// script objects
- SFX_BUILDINGS_BANK_ALARM, // 11027
- SFX_BUILDING_SNORE, // 11028
- SFX_BUILDING_BAR_1, // 11029
- SFX_BUILDING_BAR_2, // 11030
- SFX_BUILDING_BAR_3, // 11031
- SFX_BUILDING_BAR_4, // 11032
- SFX_BUILDING_MAL1, // 11033
- SFX_BUILDING_MAL2, // 11034
- SFX_BUILDING_MAL3, // 11035
- SFX_BUILDING_STR1, // 11036
- SFX_BUILDING_STR2, // 11037
- SFX_BUILDING_STR3, // 11038
- SFX_BUILDING_CHURCH, // 11039
- SFX_BUILDING_FAN_1, // 11040
- SFX_BUILDING_FAN_2, // 11041
- SFX_BUILDING_FAN_3, // 11042
- SFX_BUILDING_FAN_4, // 11043
- SFX_BUILDING_INSECTS_1, // 11044
- SFX_BUILDING_INSECTS_2, // 11045
- SFX_BUILDING_INSECTS_3, // 11046
- SFX_BUILDING_INSECTS_4, // 11047
- SFX_BUILDING_INSECTS_5, // 11048
- SFX_CLUB_1, // 11049
- SFX_CLUB_2, // 11050
- SFX_CLUB_3, // 11051
- SFX_CLUB_4, // 11052
+ SFX_BUILDINGS_BANK_ALARM,
+ SFX_BUILDING_SNORE,
+ SFX_BUILDING_BAR_1,
+ SFX_BUILDING_BAR_2,
+ SFX_BUILDING_BAR_3,
+ SFX_BUILDING_BAR_4,
+ SFX_BUILDING_MAL1,
+ SFX_BUILDING_MAL2,
+ SFX_BUILDING_MAL3,
+ SFX_BUILDING_STR1,
+ SFX_BUILDING_STR2,
+ SFX_BUILDING_STR3,
+ SFX_BUILDING_CHURCH,
+ SFX_BUILDING_FAN_1,
+ SFX_BUILDING_FAN_2,
+ SFX_BUILDING_FAN_3,
+ SFX_BUILDING_FAN_4,
+ SFX_BUILDING_INSECTS_1,
+ SFX_BUILDING_INSECTS_2,
+ SFX_BUILDING_INSECTS_3,
+ SFX_BUILDING_INSECTS_4,
+ SFX_BUILDING_INSECTS_5,
+ SFX_CLUB_1,
+ SFX_CLUB_2,
+ SFX_CLUB_3,
+ SFX_CLUB_4,
SFX_FOOTSTEP_GRASS_1,
SFX_FOOTSTEP_GRASS_2,
@@ -575,244 +504,5219 @@ enum eSfxSample
SFX_FOOTSTEP_SAND_3,
SFX_FOOTSTEP_SAND_4,
- // TODO: miami ped comments... THERE'S OVER 9000
- SFX_POLICE_BOAT_1 = 714,
- SFX_POLICE_BOAT_2,
- SFX_POLICE_BOAT_3,
- SFX_POLICE_BOAT_4,
- SFX_POLICE_BOAT_5,
- SFX_POLICE_BOAT_6,
- SFX_POLICE_BOAT_7,
- SFX_POLICE_BOAT_8,
- SFX_POLICE_BOAT_9,
- SFX_POLICE_BOAT_10,
- SFX_POLICE_BOAT_11,
- SFX_POLICE_BOAT_12,
- SFX_POLICE_BOAT_13,
- SFX_POLICE_BOAT_14,
- SFX_POLICE_BOAT_15,
- SFX_POLICE_BOAT_16,
- SFX_POLICE_BOAT_17,
- SFX_POLICE_BOAT_18,
- SFX_POLICE_BOAT_19,
- SFX_POLICE_BOAT_20,
- SFX_POLICE_BOAT_21,
- SFX_POLICE_BOAT_22,
- SFX_POLICE_BOAT_23,
-
- SFX_POLICE_HELI_1,
- SFX_POLICE_HELI_2,
- SFX_POLICE_HELI_3,
- SFX_POLICE_HELI_4,
- SFX_POLICE_HELI_5,
- SFX_POLICE_HELI_6,
- SFX_POLICE_HELI_7,
- SFX_POLICE_HELI_8,
- SFX_POLICE_HELI_9,
- SFX_POLICE_HELI_10,
- SFX_POLICE_HELI_11,
- SFX_POLICE_HELI_12,
- SFX_POLICE_HELI_13,
- SFX_POLICE_HELI_14,
- SFX_POLICE_HELI_15,
- SFX_POLICE_HELI_16,
- SFX_POLICE_HELI_17,
- SFX_POLICE_HELI_18,
- SFX_POLICE_HELI_19,
- SFX_POLICE_HELI_20,
-
- SFX_GENERIC_FEMALE_GRUNT_1 = 2953,
- SFX_GENERIC_FEMALE_GRUNT_2 = 2954,
- SFX_GENERIC_FEMALE_GRUNT_3 = 2955,
- SFX_GENERIC_FEMALE_GRUNT_4 = 2956,
- SFX_GENERIC_FEMALE_GRUNT_5 = 2957,
- SFX_GENERIC_FEMALE_GRUNT_6 = 2958,
- SFX_GENERIC_FEMALE_GRUNT_7 = 2959,
- SFX_GENERIC_FEMALE_GRUNT_8 = 2960,
- SFX_GENERIC_FEMALE_GRUNT_9 = 2961,
- SFX_GENERIC_FEMALE_GRUNT_10 = 2962,
- SFX_GENERIC_FEMALE_GRUNT_11 = 2963,
- SFX_GENERIC_FEMALE_GRUNT_12 = 2964,
- SFX_GENERIC_FEMALE_GRUNT_13 = 2965,
- SFX_GENERIC_FEMALE_GRUNT_14 = 2966,
- SFX_GENERIC_FEMALE_GRUNT_15 = 2967,
- SFX_GENERIC_FEMALE_GRUNT_16 = 2968,
- SFX_GENERIC_FEMALE_GRUNT_17 = 2969,
- SFX_GENERIC_FEMALE_GRUNT_18 = 2970,
- SFX_GENERIC_FEMALE_GRUNT_19 = 2971,
- SFX_GENERIC_FEMALE_GRUNT_20 = 2972,
- SFX_GENERIC_FEMALE_GRUNT_21 = 2973,
- SFX_GENERIC_FEMALE_GRUNT_22 = 2974,
- SFX_GENERIC_FEMALE_GRUNT_23 = 2975,
- SFX_GENERIC_FEMALE_GRUNT_24 = 2976,
- SFX_GENERIC_FEMALE_GRUNT_25 = 2977,
- SFX_GENERIC_FEMALE_GRUNT_26 = 2978,
- SFX_GENERIC_FEMALE_GRUNT_27 = 2979,
- SFX_GENERIC_FEMALE_GRUNT_28 = 2980,
- SFX_GENERIC_FEMALE_GRUNT_29 = 2981,
- SFX_GENERIC_FEMALE_GRUNT_30 = 2982,
- SFX_GENERIC_FEMALE_GRUNT_31 = 2983,
- SFX_GENERIC_FEMALE_GRUNT_32 = 2984,
- SFX_GENERIC_FEMALE_GRUNT_33 = 2985,
- SFX_GENERIC_MALE_FIRE_1 = 3013,
- SFX_GENERIC_MALE_FIRE_2 = 3014,
- SFX_GENERIC_MALE_FIRE_3 = 3015,
- SFX_GENERIC_MALE_FIRE_4 = 3016,
- SFX_GENERIC_MALE_FIRE_5 = 3017,
- SFX_GENERIC_MALE_FIRE_6 = 3018,
- SFX_GENERIC_MALE_FIRE_7 = 3019,
- SFX_GENERIC_MALE_FIRE_8 = 3020,
- SFX_GENERIC_MALE_FIRE_9 = 3021,
- SFX_GENERIC_MALE_FIRE_10 = 3022,
- SFX_GENERIC_MALE_FIRE_11 = 3023,
- SFX_GENERIC_MALE_FIRE_12 = 3024,
- SFX_GENERIC_MALE_FIRE_13 = 3025,
- SFX_GENERIC_MALE_FIRE_14 = 3026,
- SFX_GENERIC_MALE_FIRE_15 = 3027,
- SFX_GENERIC_MALE_FIRE_16 = 3028,
- SFX_GENERIC_MALE_FIRE_17 = 3029,
- SFX_GENERIC_MALE_FIRE_18 = 3030,
- SFX_GENERIC_MALE_FIRE_19 = 3031,
- SFX_GENERIC_MALE_FIRE_20 = 3032,
- SFX_GENERIC_MALE_FIRE_21 = 3033,
- SFX_GENERIC_MALE_FIRE_22 = 3034,
- SFX_GENERIC_MALE_FIRE_23 = 3035,
- SFX_GENERIC_MALE_FIRE_24 = 3036,
- SFX_GENERIC_MALE_FIRE_25 = 3037,
- SFX_GENERIC_MALE_FIRE_26 = 3038,
- SFX_GENERIC_MALE_FIRE_27 = 3039,
- SFX_GENERIC_MALE_FIRE_28 = 3040,
- SFX_GENERIC_MALE_FIRE_29 = 3041,
- SFX_GENERIC_MALE_FIRE_30 = 3042,
- SFX_GENERIC_MALE_FIRE_31 = 3043,
- SFX_GENERIC_MALE_FIRE_32 = 3044,
- SFX_GENERIC_MALE_DEATH_1 = 3045,
- SFX_GENERIC_MALE_DEATH_2 = 3046,
- SFX_GENERIC_MALE_DEATH_3 = 3047,
- SFX_GENERIC_MALE_DEATH_4 = 3048,
- SFX_GENERIC_MALE_DEATH_5 = 3049,
- SFX_GENERIC_MALE_DEATH_6 = 3050,
- SFX_GENERIC_MALE_DEATH_7 = 3051,
- SFX_GENERIC_MALE_DEATH_8 = 3052,
- SFX_GENERIC_MALE_DEATH_9 = 3053,
- SFX_GENERIC_MALE_DEATH_10 = 3054,
- SFX_GENERIC_MALE_DEATH_11 = 3055,
- SFX_GENERIC_MALE_DEATH_12 = 3056,
- SFX_GENERIC_MALE_DEATH_13 = 3057,
- SFX_GENERIC_MALE_DEATH_14 = 3058,
- SFX_GENERIC_MALE_DEATH_15 = 3059,
- SFX_GENERIC_MALE_DEATH_16 = 3060,
- SFX_GENERIC_MALE_DEATH_17 = 3061,
- SFX_GENERIC_MALE_DEATH_18 = 3062,
- SFX_GENERIC_MALE_DEATH_19 = 3063,
- SFX_GENERIC_MALE_DEATH_20 = 3064,
- SFX_GENERIC_MALE_DEATH_21 = 3065,
- SFX_GENERIC_MALE_DEATH_22 = 3066,
- SFX_GENERIC_MALE_DEATH_23 = 3067,
- SFX_GENERIC_MALE_DEATH_24 = 3068,
- SFX_GENERIC_MALE_DEATH_25 = 3069,
- SFX_GENERIC_MALE_DEATH_26 = 3070,
- SFX_GENERIC_MALE_DEATH_27 = 3071,
- SFX_GENERIC_MALE_DEATH_28 = 3072,
- SFX_GENERIC_MALE_DEATH_29 = 3073,
- SFX_GENERIC_MALE_DEATH_30 = 3074,
- SFX_GENERIC_MALE_DEATH_31 = 3075,
- SFX_GENERIC_MALE_DEATH_32 = 3076,
- SFX_GENERIC_MALE_DEATH_33 = 3077,
- SFX_GENERIC_MALE_DEATH_34 = 3078,
- SFX_GENERIC_MALE_DEATH_35 = 3079,
- SFX_GENERIC_MALE_DEATH_36 = 3080,
- SFX_GENERIC_MALE_DEATH_37 = 3081,
- SFX_GENERIC_MALE_DEATH_38 = 3082,
- SFX_GENERIC_MALE_DEATH_39 = 3083,
- SFX_GENERIC_MALE_DEATH_40 = 3084,
- SFX_GENERIC_MALE_DEATH_41 = 3085,
- SFX_GENERIC_MALE_GRUNT_1 = 3086,
- SFX_GENERIC_MALE_GRUNT_2 = 3087,
- SFX_GENERIC_MALE_GRUNT_3 = 3088,
- SFX_GENERIC_MALE_GRUNT_4 = 3089,
- SFX_GENERIC_MALE_GRUNT_5 = 3090,
- SFX_GENERIC_MALE_GRUNT_6 = 3091,
- SFX_GENERIC_MALE_GRUNT_7 = 3092,
- SFX_GENERIC_MALE_GRUNT_8 = 3093,
- SFX_GENERIC_MALE_GRUNT_9 = 3094,
- SFX_GENERIC_MALE_GRUNT_10 = 3095,
- SFX_GENERIC_MALE_GRUNT_11 = 3096,
- SFX_GENERIC_MALE_GRUNT_12 = 3097,
- SFX_GENERIC_MALE_GRUNT_13 = 3098,
- SFX_GENERIC_MALE_GRUNT_14 = 3099,
- SFX_GENERIC_MALE_GRUNT_15 = 3100,
- SFX_GENERIC_MALE_GRUNT_16 = 3101,
- SFX_GENERIC_MALE_GRUNT_17 = 3102,
- SFX_GENERIC_MALE_GRUNT_18 = 3103,
- SFX_GENERIC_MALE_GRUNT_19 = 3104,
- SFX_GENERIC_MALE_GRUNT_20 = 3105,
- SFX_GENERIC_MALE_GRUNT_21 = 3106,
- SFX_GENERIC_MALE_GRUNT_22 = 3107,
- SFX_GENERIC_MALE_GRUNT_23 = 3108,
- SFX_GENERIC_MALE_GRUNT_24 = 3109,
- SFX_GENERIC_MALE_GRUNT_25 = 3110,
- SFX_GENERIC_MALE_GRUNT_26 = 3111,
- SFX_GENERIC_MALE_GRUNT_27 = 3112,
- SFX_GENERIC_MALE_GRUNT_28 = 3113,
- SFX_GENERIC_MALE_GRUNT_29 = 3114,
- SFX_GENERIC_MALE_GRUNT_30 = 3115,
- SFX_GENERIC_MALE_GRUNT_31 = 3116,
- SFX_GENERIC_MALE_GRUNT_32 = 3117,
- SFX_GENERIC_MALE_GRUNT_33 = 3118,
- SFX_GENERIC_MALE_GRUNT_34 = 3119,
- SFX_GENERIC_MALE_GRUNT_35 = 3120,
- SFX_GENERIC_MALE_GRUNT_36 = 3121,
- SFX_GENERIC_MALE_GRUNT_37 = 3122,
- SFX_GENERIC_MALE_GRUNT_38 = 3123,
- SFX_GENERIC_MALE_GRUNT_39 = 3124,
- SFX_GENERIC_MALE_GRUNT_40 = 3125,
- SFX_GENERIC_MALE_GRUNT_41 = 3126,
- SFX_GENERIC_MALE_PANIC_1 = 3127,
- SFX_GENERIC_MALE_PANIC_2 = 3128,
- SFX_GENERIC_MALE_PANIC_3 = 3129,
- SFX_GENERIC_MALE_PANIC_4 = 3130,
- SFX_GENERIC_MALE_PANIC_5 = 3131,
- SFX_GENERIC_MALE_PANIC_6 = 3132,
- SFX_GENERIC_MALE_PANIC_7 = 3133,
- SFX_GENERIC_MALE_PANIC_8 = 3134,
- SFX_GENERIC_MALE_PANIC_9 = 3135,
- SFX_GENERIC_MALE_PANIC_10 = 3136,
- SFX_GENERIC_MALE_PANIC_11 = 3137,
- SFX_GENERIC_MALE_PANIC_12 = 3138,
- SFX_GENERIC_MALE_PANIC_13 = 3139,
- SFX_GENERIC_MALE_PANIC_14 = 3140,
- SFX_GENERIC_MALE_PANIC_15 = 3141,
- SFX_GENERIC_MALE_PANIC_16 = 3142,
- SFX_GENERIC_MALE_PANIC_17 = 3143,
- SFX_GENERIC_MALE_PANIC_18 = 3144,
- SFX_GENERIC_MALE_PANIC_19 = 3145,
- SFX_GENERIC_MALE_PANIC_20 = 3146,
- SFX_GENERIC_MALE_PANIC_21 = 3147,
- SFX_GENERIC_MALE_PANIC_22 = 3148,
- SFX_GENERIC_MALE_PANIC_23 = 3149,
- SFX_GENERIC_MALE_PANIC_24 = 3150,
- SFX_GENERIC_MALE_PANIC_25 = 3151,
- SFX_GENERIC_MALE_PANIC_26 = 3152,
- SFX_GENERIC_MALE_PANIC_27 = 3153,
- SFX_GENERIC_MALE_PANIC_28 = 3154,
- SFX_GENERIC_MALE_PANIC_29 = 3155,
- SFX_GENERIC_MALE_PANIC_30 = 3156,
- SFX_GENERIC_MALE_PANIC_31 = 3157,
- SFX_GENERIC_MALE_PANIC_32 = 3158,
- SFX_GENERIC_MALE_PANIC_33 = 3159,
- SFX_GENERIC_MALE_PANIC_34 = 3160,
- SFX_GENERIC_MALE_PANIC_35 = 3161,
-
- TOTAL_AUDIO_SAMPLES = 9941,
+ // ped comments
+
+ SFX_AMBULAN_VOICE_1_VAN_1,
+ SFX_AMBULAN_VOICE_1_VAN_2,
+ SFX_AMBULAN_VOICE_1_VAN_3,
+ SFX_AMBULAN_VOICE_1_VAN_4,
+ SFX_AMBULAN_VOICE_1_VICTIM_1,
+ SFX_AMBULAN_VOICE_1_VICTIM_2,
+ SFX_AMBULAN_VOICE_1_VICTIM_3,
+ SFX_AMBULAN_VOICE_1_VICTIM_4,
+ SFX_AMBULAN_VOICE_2_VAN_1,
+ SFX_AMBULAN_VOICE_2_VAN_2,
+ SFX_AMBULAN_VOICE_2_VAN_3,
+ SFX_AMBULAN_VOICE_2_VAN_4,
+ SFX_AMBULAN_VOICE_2_VICTIM_1,
+ SFX_AMBULAN_VOICE_2_VICTIM_2,
+ SFX_AMBULAN_VOICE_2_VICTIM_3,
+ SFX_AMBULAN_VOICE_2_VICTIM_4,
+ SFX_AVE1_AA,
+ SFX_AVE1_AB,
+ SFX_AVE1_AC,
+ SFX_AVE1_AD,
+ SFX_AVE1_AE,
+ SFX_AVE1_AF,
+ SFX_AVE1_AG,
+ SFX_AVE2_AA,
+ SFX_AVE2_AC,
+ SFX_AVE2_AD,
+ SFX_AVE2_AE,
+ SFX_AVE2_AG,
+ SFX_AVE2_AH,
+ SFX_AVE3_AA,
+ SFX_AVE3_AB,
+ SFX_AVE3_AC,
+ SFX_AVE3_AD,
+ SFX_AVE3_AE,
+ SFX_AVE3_AF,
+ SFX_AVE3_AG,
+ SFX_AVE4_AA,
+ SFX_AVE4_AB,
+ SFX_AVE4_AD,
+ SFX_AVE4_AE,
+ SFX_AVE4_AF,
+ SFX_AVE4_AG,
+ SFX_AVE4_AH,
+ SFX_AVE5_AA,
+ SFX_AVE5_AB,
+ SFX_AVE5_AC,
+ SFX_AVE5_AD,
+ SFX_AVE5_AE,
+ SFX_AVE5_AF,
+ SFX_AVE5_AG,
+ SFX_AVE6_AA,
+ SFX_AVE6_AB,
+ SFX_AVE6_AC,
+ SFX_AVE6_AD,
+ SFX_AVE6_AE,
+ SFX_AVEN_AA,
+ SFX_AVEN_AB,
+ SFX_AVEN_AC,
+ SFX_AVEN_AD,
+ SFX_AVEN_AE,
+ SFX_AVEN_AF,
+ SFX_AVEN_AG,
+ SFX_AVEN_AH,
+ SFX_AVEN_AI,
+ SFX_AVEN_AJ,
+ SFX_AVEN_AK,
+ SFX_AVEN_AL,
+ SFX_AVEN_AM,
+ SFX_AVEN_AN,
+ SFX_AVEN_AO,
+ SFX_AVEN_AP,
+ SFX_AVEN_AQ,
+ SFX_AVEN_AR,
+ SFX_AVEN_AS,
+ SFX_AVEN_AT,
+ SFX_AVEN_AU,
+ SFX_AVEN_AV,
+ SFX_AVEN_AW,
+ SFX_BIKER1_BUMP_1,
+ SFX_BIKER1_BUMP_2,
+ SFX_BIKER1_BUMP_3,
+ SFX_BIKER1_CHAT_1,
+ SFX_BIKER1_CHAT_2,
+ SFX_BIKER1_CHAT_3,
+ SFX_BIKER1_CHAT_4,
+ SFX_BIKER1_CRASH_CAR_1,
+ SFX_BIKER1_CRASH_CAR_2,
+ SFX_BIKER1_DODGE_1,
+ SFX_BIKER1_DODGE_2,
+ SFX_BIKER1_DRIVER_BLOCKED_1,
+ SFX_BIKER1_DRIVER_BLOCKED_2,
+ SFX_BIKER1_FIGHT_1,
+ SFX_BIKER1_FIGHT_2,
+ SFX_BIKER1_FIGHT_3,
+ SFX_BIKER1_GUN_THREATENED_1,
+ SFX_BIKER1_GUN_THREATENED_2,
+ SFX_BIKER1_JACKED_CAR_1,
+ SFX_BIKER1_JACKED_CAR_2,
+ SFX_BIKER1_JACKED_CAR_3,
+ SFX_BIKER2_BUMP_1,
+ SFX_BIKER2_BUMP_2,
+ SFX_BIKER2_BUMP_3,
+ SFX_BIKER2_CHAT_1,
+ SFX_BIKER2_CHAT_2,
+ SFX_BIKER2_CHAT_3,
+ SFX_BIKER2_CRASH_CAR_1,
+ SFX_BIKER2_CRASH_CAR_2,
+ SFX_BIKER2_DODGE_1,
+ SFX_BIKER2_DODGE_2,
+ SFX_BIKER2_DODGE_3,
+ SFX_BIKER2_DRIVER_BLOCKED_1,
+ SFX_BIKER2_DRIVER_BLOCKED_2,
+ SFX_BIKER2_FIGHT_1,
+ SFX_BIKER2_FIGHT_2,
+ SFX_BIKER2_FIGHT_3,
+ SFX_BIKER2_GUN_THREATENED_1,
+ SFX_BIKER2_GUN_THREATENED_2,
+ SFX_BIKER2_JACKED_CAR_1,
+ SFX_BIKER2_JACKED_CAR_2,
+ SFX_BIKER2_JACKED_CAR_3,
+ SFX_BIKER2_SHOCKED_1,
+ SFX_BONS2BA,
+ SFX_BONS2BB,
+ SFX_BONS2BC,
+ SFX_BONS2BD,
+ SFX_BONS2BE,
+ SFX_BRIDGE_BELL,
+ SFX_B_MAN1_BUMP_1,
+ SFX_B_MAN1_BUMP_2,
+ SFX_B_MAN1_BUMP_3,
+ SFX_B_MAN1_CHAT_1,
+ SFX_B_MAN1_CHAT_2,
+ SFX_B_MAN1_CHAT_3,
+ SFX_B_MAN1_CRASH_CAR_1,
+ SFX_B_MAN1_CRASH_CAR_2,
+ SFX_B_MAN1_DODGE_1,
+ SFX_B_MAN1_DODGE_2,
+ SFX_B_MAN1_DRIVER_BLOCKED_1,
+ SFX_B_MAN1_DRIVER_BLOCKED_2,
+ SFX_B_MAN1_FIGHT_1,
+ SFX_B_MAN1_FIGHT_2,
+ SFX_B_MAN1_FIGHT_3,
+ SFX_B_MAN1_GUN_THREATENED_1,
+ SFX_B_MAN1_GUN_THREATENED_2,
+ SFX_B_MAN1_JACKED_CAR_1,
+ SFX_B_MAN1_JACKED_CAR_2,
+ SFX_B_MAN1_JACKED_CAR_3,
+ SFX_B_MAN1_SHOCKED_1,
+ SFX_B_MAN2_BUMP_1,
+ SFX_B_MAN2_BUMP_2,
+ SFX_B_MAN2_BUMP_3,
+ SFX_B_MAN2_CHAT_1,
+ SFX_B_MAN2_CHAT_2,
+ SFX_B_MAN2_CHAT_3,
+ SFX_B_MAN2_CHAT_4,
+ SFX_B_MAN2_CRASH_CAR_1,
+ SFX_B_MAN2_CRASH_CAR_2,
+ SFX_B_MAN2_DODGE_1,
+ SFX_B_MAN2_DODGE_2,
+ SFX_B_MAN2_DRIVER_BLOCKED_1,
+ SFX_B_MAN2_DRIVER_BLOCKED_2,
+ SFX_B_MAN2_FIGHT_1,
+ SFX_B_MAN2_FIGHT_2,
+ SFX_B_MAN2_FIGHT_3,
+ SFX_B_MAN2_GUN_THREATENED_1,
+ SFX_B_MAN2_GUN_THREATENED_2,
+ SFX_B_MAN2_JACKED_CAR_1,
+ SFX_B_MAN2_JACKED_CAR_2,
+ SFX_B_MAN2_JACKED_CAR_3,
+ SFX_B_MAN2_SHOCKED_1,
+ SFX_B_MAN3_BUMP_1,
+ SFX_B_MAN3_BUMP_2,
+ SFX_B_MAN3_BUMP_3,
+ SFX_B_MAN3_CHAT_1,
+ SFX_B_MAN3_CHAT_2,
+ SFX_B_MAN3_CHAT_3,
+ SFX_B_MAN3_CHAT_4,
+ SFX_B_MAN3_CHAT_5,
+ SFX_B_MAN3_CRASH_CAR_1,
+ SFX_B_MAN3_CRASH_CAR_2,
+ SFX_B_MAN3_DODGE_1,
+ SFX_B_MAN3_DODGE_2,
+ SFX_B_MAN3_DRIVER_BLOCKED_1,
+ SFX_B_MAN3_DRIVER_BLOCKED_2,
+ SFX_B_MAN3_FIGHT_1,
+ SFX_B_MAN3_FIGHT_2,
+ SFX_B_MAN3_FIGHT_3,
+ SFX_B_MAN3_FIGHT_4,
+ SFX_B_MAN3_GUN_THREATENED_1,
+ SFX_B_MAN3_GUN_THREATENED_2,
+ SFX_B_MAN3_JACKED_CAR_1,
+ SFX_B_MAN3_JACKED_CAR_2,
+ SFX_B_MAN3_JACKED_CAR_3,
+ SFX_B_MAN3_SHOCKED_1,
+ SFX_B_WOM1_BUMP_1,
+ SFX_B_WOM1_BUMP_2,
+ SFX_B_WOM1_BUMP_3,
+ SFX_B_WOM1_CHAT_1,
+ SFX_B_WOM1_CHAT_2,
+ SFX_B_WOM1_CHAT_3,
+ SFX_B_WOM1_CRASH_CAR_1,
+ SFX_B_WOM1_CRASH_CAR_2,
+ SFX_B_WOM1_DODGE_1,
+ SFX_B_WOM1_DODGE_2,
+ SFX_B_WOM1_DRIVER_BLOCKED_1,
+ SFX_B_WOM1_DRIVER_BLOCKED_2,
+ SFX_B_WOM1_FIGHT_1,
+ SFX_B_WOM1_FIGHT_2,
+ SFX_B_WOM1_FIGHT_3,
+ SFX_B_WOM1_GUN_THREATENED_1,
+ SFX_B_WOM1_GUN_THREATENED_2,
+ SFX_B_WOM1_JACKED_CAR_1,
+ SFX_B_WOM1_JACKED_CAR_2,
+ SFX_B_WOM1_JACKED_CAR_3,
+ SFX_B_WOM1_SHOCKED_1,
+ SFX_B_WOM2_BUMP_1,
+ SFX_B_WOM2_BUMP_2,
+ SFX_B_WOM2_BUMP_3,
+ SFX_B_WOM2_CHAT_1,
+ SFX_B_WOM2_CHAT_2,
+ SFX_B_WOM2_CHAT_3,
+ SFX_B_WOM2_CHAT_4,
+ SFX_B_WOM2_CRASH_CAR_1,
+ SFX_B_WOM2_CRASH_CAR_2,
+ SFX_B_WOM2_DODGE_1,
+ SFX_B_WOM2_DODGE_2,
+ SFX_B_WOM2_DODGE_3,
+ SFX_B_WOM2_DRIVER_BLOCKED_1,
+ SFX_B_WOM2_DRIVER_BLOCKED_2,
+ SFX_B_WOM2_FIGHT_1,
+ SFX_B_WOM2_FIGHT_2,
+ SFX_B_WOM2_FIGHT_3,
+ SFX_B_WOM2_GUN_THREATENED_1,
+ SFX_B_WOM2_GUN_THREATENED_2,
+ SFX_B_WOM2_JACKED_CAR_1,
+ SFX_B_WOM2_JACKED_CAR_2,
+ SFX_B_WOM2_JACKED_CAR_3,
+ SFX_B_WOM2_SHOCKED_1,
+ SFX_B_WOM3_BUMP_1,
+ SFX_B_WOM3_BUMP_2,
+ SFX_B_WOM3_BUMP_3,
+ SFX_B_WOM3_CHAT_1,
+ SFX_B_WOM3_CHAT_2,
+ SFX_B_WOM3_CHAT_3,
+ SFX_B_WOM3_CRASH_CAR_1,
+ SFX_B_WOM3_CRASH_CAR_2,
+ SFX_B_WOM3_DODGE_1,
+ SFX_B_WOM3_DODGE_2,
+ SFX_B_WOM3_DRIVER_BLOCKED_1,
+ SFX_B_WOM3_DRIVER_BLOCKED_2,
+ SFX_B_WOM3_FIGHT_1,
+ SFX_B_WOM3_FIGHT_2,
+ SFX_B_WOM3_FIGHT_3,
+ SFX_B_WOM3_GUN_THREATENED_1,
+ SFX_B_WOM3_GUN_THREATENED_2,
+ SFX_B_WOM3_JACKED_CAR_1,
+ SFX_B_WOM3_JACKED_CAR_2,
+ SFX_B_WOM3_JACKED_CAR_3,
+ SFX_B_WOM3_SHOCKED_1,
+ SFX_CAD1_AA,
+ SFX_CAD1_AB,
+ SFX_CAD1_AC,
+ SFX_CAD1_AD,
+ SFX_CAD1_AE,
+ SFX_CAD2_AA,
+ SFX_CAD2_AB,
+ SFX_CAD2_AC,
+ SFX_CAD2_AD,
+ SFX_CAD2_AE,
+ SFX_CAD2_AF,
+ SFX_CAD3_AA,
+ SFX_CAD3_AB,
+ SFX_CAD3_AC,
+ SFX_CAD3_AD,
+ SFX_CAD3_AE,
+ SFX_CAD3_AF,
+ SFX_CAD4_AA,
+ SFX_CAD4_AB,
+ SFX_CAD4_AC,
+ SFX_CAD4_AD,
+ SFX_CAD4_AE,
+ SFX_CAD4_AF,
+ SFX_CAD5_AA,
+ SFX_CAD5_AB,
+ SFX_CAD5_AC,
+ SFX_CAD5_AD,
+ SFX_CAD5_AE,
+ SFX_CAD5_AF,
+ SFX_CAD6_AA,
+ SFX_CAD6_AB,
+ SFX_CAD6_AC,
+ SFX_CAD6_AD,
+ SFX_CAD6_AE,
+ SFX_CAD6_AF,
+ SFX_CAD7_AB,
+ SFX_CAD7_AC,
+ SFX_CAD7_AD,
+ SFX_CAD7_AE,
+ SFX_CAD8_AB,
+ SFX_CAD8_AC,
+ SFX_CAD8_AD,
+ SFX_CAD8_AE,
+ SFX_CAD8_AF,
+ SFX_CAD9_AA,
+ SFX_CAD9_AB,
+ SFX_CAD9_AC,
+ SFX_CAD9_AD,
+ SFX_CAD9_AE,
+ SFX_CAD9_AF,
+ SFX_CSHUTR,
+ SFX_CAMP_MAN_BUMP_1,
+ SFX_CAMP_MAN_BUMP_2,
+ SFX_CAMP_MAN_BUMP_3,
+ SFX_CAMP_MAN_CHAT_1,
+ SFX_CAMP_MAN_CHAT_2,
+ SFX_CAMP_MAN_CHAT_3,
+ SFX_CAMP_MAN_CHAT_4,
+ SFX_CAMP_MAN_CRASH_CAR_1,
+ SFX_CAMP_MAN_CRASH_CAR_2,
+ SFX_CAMP_MAN_CRASH_CAR_3,
+ SFX_CAMP_MAN_DODGE_1,
+ SFX_CAMP_MAN_DODGE_2,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_1,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_2,
+ SFX_CAMP_MAN_DRIVER_BLOCKED_3,
+ SFX_CAMP_MAN_FIGHT_1,
+ SFX_CAMP_MAN_FIGHT_2,
+ SFX_CAMP_MAN_FIGHT_3,
+ SFX_CAMP_MAN_GUN_THREATENED_1,
+ SFX_CAMP_MAN_GUN_THREATENED_2,
+ SFX_CAMP_MAN_JACKED_CAR_1,
+ SFX_CAMP_MAN_JACKED_CAR_2,
+ SFX_CAMP_MAN_JACKED_CAR_3,
+ SFX_CAMP_MAN_SHOCKED_1,
+ SFX_CAMP_WOM_BUMP_1,
+ SFX_CAMP_WOM_BUMP_2,
+ SFX_CAMP_WOM_BUMP_3,
+ SFX_CAMP_WOM_CHAT_1,
+ SFX_CAMP_WOM_CHAT_2,
+ SFX_CAMP_WOM_CHAT_3,
+ SFX_CAMP_WOM_CHAT_4,
+ SFX_CAMP_WOM_CHAT_5,
+ SFX_CAMP_WOM_CRASH_CAR_1,
+ SFX_CAMP_WOM_CRASH_CAR_2,
+ SFX_CAMP_WOM_DODGE_1,
+ SFX_CAMP_WOM_DODGE_2,
+ SFX_CAMP_WOM_DRIVER_BLOCKED_1,
+ SFX_CAMP_WOM_DRIVER_BLOCKED_2,
+ SFX_CAMP_WOM_FIGHT_1,
+ SFX_CAMP_WOM_FIGHT_2,
+ SFX_CAMP_WOM_FIGHT_3,
+ SFX_CAMP_WOM_GUN_THREATENED_1,
+ SFX_CAMP_WOM_GUN_THREATENED_2,
+ SFX_CAMP_WOM_JACKED_CAR_1,
+ SFX_CAMP_WOM_JACKED_CAR_2,
+ SFX_CAMP_WOM_JACKED_CAR_3,
+ SFX_CAMP_WOM_SHOCKED_1,
+ SFX_CAS_MAN_BUMP_1,
+ SFX_CAS_MAN_BUMP_2,
+ SFX_CAS_MAN_BUMP_3,
+ SFX_CAS_MAN_CHAT_1,
+ SFX_CAS_MAN_CHAT_2,
+ SFX_CAS_MAN_CHAT_3,
+ SFX_CAS_MAN_CHAT_4,
+ SFX_CAS_MAN_CRASH_CAR_1,
+ SFX_CAS_MAN_CRASH_CAR_2,
+ SFX_CAS_MAN_DODGE_1,
+ SFX_CAS_MAN_DODGE_2,
+ SFX_CAS_MAN_DRIVER_BLOCKED_1,
+ SFX_CAS_MAN_DRIVER_BLOCKED_2,
+ SFX_CAS_MAN_FIGHT_1,
+ SFX_CAS_MAN_FIGHT_2,
+ SFX_CAS_MAN_FIGHT_3,
+ SFX_CAS_MAN_GUN_THREATENED_1,
+ SFX_CAS_MAN_GUN_THREATENED_2,
+ SFX_CAS_MAN_JACKED_CAR_1,
+ SFX_CAS_MAN_JACKED_CAR_2,
+ SFX_CAS_MAN_JACKED_CAR_3,
+ SFX_CAS_MAN_SHOCKED_1,
+ SFX_CAS_WOM_BUMP_1,
+ SFX_CAS_WOM_BUMP_2,
+ SFX_CAS_WOM_BUMP_3,
+ SFX_CAS_WOM_CHAT_1,
+ SFX_CAS_WOM_CHAT_2,
+ SFX_CAS_WOM_CHAT_3,
+ SFX_CAS_WOM_CHAT_4,
+ SFX_CAS_WOM_CRASH_CAR_1,
+ SFX_CAS_WOM_CRASH_CAR_2,
+ SFX_CAS_WOM_DODGE_1,
+ SFX_CAS_WOM_DODGE_2,
+ SFX_CAS_WOM_DRIVER_BLOCKED_1,
+ SFX_CAS_WOM_DRIVER_BLOCKED_2,
+ SFX_CAS_WOM_FIGHT_1,
+ SFX_CAS_WOM_FIGHT_2,
+ SFX_CAS_WOM_FIGHT_3,
+ SFX_CAS_WOM_GUN_THREATENED_1,
+ SFX_CAS_WOM_GUN_THREATENED_2,
+ SFX_CAS_WOM_JACKED_CAR_1,
+ SFX_CAS_WOM_JACKED_CAR_2,
+ SFX_CAS_WOM_JACKED_CAR_3,
+ SFX_CAS_WOM_SHOCKED_1,
+ SFX_CAS_WOM_SPECIAL_CASE_1,
+ SFX_CAS_WOM_SPECIAL_CASE_2,
+ SFX_CAS_WOM_SPECIAL_CASE_3,
+ SFX_CHOP_1,
+ SFX_CHOP_2,
+ SFX_CLICK,
+ SFX_COLT_45,
+ SFX_CONST1_BUMP_1,
+ SFX_CONST1_BUMP_2,
+ SFX_CONST1_CHAT_1,
+ SFX_CONST1_CHAT_3,
+ SFX_CONST1_CHAT_4,
+ SFX_CONST1_CRASH_CAR_1,
+ SFX_CONST1_CRASH_CAR_2,
+ SFX_CONST1_DODGE_1,
+ SFX_CONST1_DODGE_2,
+ SFX_CONST1_DRIVER_BLOCKED_1,
+ SFX_CONST1_DRIVER_BLOCKED_2,
+ SFX_CONST1_FIGHT_1,
+ SFX_CONST1_FIGHT_2,
+ SFX_CONST1_FIGHT_3,
+ SFX_CONST1_GUN_THREATENED_1,
+ SFX_CONST1_GUN_THREATENED_2,
+ SFX_CONST1_JACKED_CAR_1,
+ SFX_CONST1_JACKED_CAR_2,
+ SFX_CONST1_JACKED_CAR_3,
+ SFX_CONST1_SHOCKED_1,
+ SFX_CONST1_SPECIAL_CASE_1,
+ SFX_CONST1_SPECIAL_CASE_2,
+ SFX_CONST1_SPECIAL_CASE_3,
+ SFX_CONST2_BUMP_1,
+ SFX_CONST2_BUMP_2,
+ SFX_CONST2_BUMP_3,
+ SFX_CONST2_CHAT_1,
+ SFX_CONST2_CHAT_2,
+ SFX_CONST2_CHAT_3,
+ SFX_CONST2_CHAT_4,
+ SFX_CONST2_CRASH_CAR_1,
+ SFX_CONST2_CRASH_CAR_2,
+ SFX_CONST2_DODGE_1,
+ SFX_CONST2_DODGE_2,
+ SFX_CONST2_DRIVER_BLOCKED_1,
+ SFX_CONST2_DRIVER_BLOCKED_2,
+ SFX_CONST2_FIGHT_1,
+ SFX_CONST2_FIGHT_2,
+ SFX_CONST2_FIGHT_3,
+ SFX_CONST2_GUN_THREATENED_1,
+ SFX_CONST2_GUN_THREATENED_2,
+ SFX_CONST2_JACKED_CAR_1,
+ SFX_CONST2_JACKED_CAR_2,
+ SFX_CONST2_SHOCKED_1,
+ SFX_COP1_ARREST_1,
+ SFX_COP1_ARREST_2,
+ SFX_COP1_BUMP_1,
+ SFX_COP1_BUMP_2,
+ SFX_COP1_BUMP_3,
+ SFX_COP1_CHASE_FOOT_1,
+ SFX_COP1_CHASE_FOOT_2,
+ SFX_COP1_CHASE_FOOT_3,
+ SFX_COP1_CHASE_FOOT_4,
+ SFX_COP1_CHASE_FOOT_5,
+ SFX_COP1_CHASE_FOOT_6,
+ SFX_COP1_DODGE_1,
+ SFX_COP1_DODGE_2,
+ SFX_COP1_FIGHT_1,
+ SFX_COP1_FIGHT_2,
+ SFX_COP1_FIGHT_3,
+ SFX_COP1_SHOOT_1,
+ SFX_COP1_SHOOT_2,
+ SFX_COP1_SHOOT_3,
+ SFX_COP1_SHOOT_4,
+ SFX_COP1_SHOOT_5,
+ SFX_COP1_SHOOT_6,
+ SFX_COP2_ARREST_1,
+ SFX_COP2_ARREST_2,
+ SFX_COP2_BUMP_1,
+ SFX_COP2_BUMP_2,
+ SFX_COP2_BUMP_3,
+ SFX_COP2_CHASE_FOOT_1,
+ SFX_COP2_CHASE_FOOT_2,
+ SFX_COP2_CHASE_FOOT_3,
+ SFX_COP2_CHASE_FOOT_4,
+ SFX_COP2_CHASE_FOOT_5,
+ SFX_COP2_CHASE_FOOT_6,
+ SFX_COP2_DODGE_1,
+ SFX_COP2_DODGE_2,
+ SFX_COP2_FIGHT_1,
+ SFX_COP2_FIGHT_2,
+ SFX_COP2_FIGHT_3,
+ SFX_COP2_SHOOT_1,
+ SFX_COP2_SHOOT_2,
+ SFX_COP2_SHOOT_3,
+ SFX_COP2_SHOOT_4,
+ SFX_COP2_SHOOT_5,
+ SFX_COP2_SHOOT_6,
+ SFX_COP3_ARREST_1,
+ SFX_COP3_ARREST_2,
+ SFX_COP3_BUMP_1,
+ SFX_COP3_BUMP_2,
+ SFX_COP3_BUMP_3,
+ SFX_COP3_CHASE_FOOT_1,
+ SFX_COP3_CHASE_FOOT_2,
+ SFX_COP3_CHASE_FOOT_3,
+ SFX_COP3_CHASE_FOOT_4,
+ SFX_COP3_CHASE_FOOT_5,
+ SFX_COP3_CHASE_FOOT_6,
+ SFX_COP3_DODGE_1,
+ SFX_COP3_DODGE_2,
+ SFX_COP3_FIGHT_1,
+ SFX_COP3_FIGHT_2,
+ SFX_COP3_FIGHT_3,
+ SFX_COP3_SHOOT_1,
+ SFX_COP3_SHOOT_2,
+ SFX_COP3_SHOOT_3,
+ SFX_COP3_SHOOT_4,
+ SFX_COP3_SHOOT_5,
+ SFX_COP3_SHOOT_6,
+ SFX_COP4_ARREST_1,
+ SFX_COP4_ARREST_2,
+ SFX_COP4_BUMP_1,
+ SFX_COP4_BUMP_2,
+ SFX_COP4_BUMP_3,
+ SFX_COP4_CHASE_FOOT_1,
+ SFX_COP4_CHASE_FOOT_2,
+ SFX_COP4_CHASE_FOOT_3,
+ SFX_COP4_CHASE_FOOT_4,
+ SFX_COP4_CHASE_FOOT_5,
+ SFX_COP4_CHASE_FOOT_6,
+ SFX_COP4_DODGE_1,
+ SFX_COP4_DODGE_2,
+ SFX_COP4_FIGHT_1,
+ SFX_COP4_FIGHT_2,
+ SFX_COP4_FIGHT_3,
+ SFX_COP4_SHOOT_1,
+ SFX_COP4_SHOOT_2,
+ SFX_COP4_SHOOT_3,
+ SFX_COP4_SHOOT_4,
+ SFX_COP4_SHOOT_5,
+ SFX_COP4_SHOOT_6,
+ SFX_COP5_ARREST_1,
+ SFX_COP5_ARREST_2,
+ SFX_COP5_BUMP_1,
+ SFX_COP5_BUMP_2,
+ SFX_COP5_BUMP_3,
+ SFX_COP5_CHASE_FOOT_1,
+ SFX_COP5_CHASE_FOOT_2,
+ SFX_COP5_CHASE_FOOT_3,
+ SFX_COP5_CHASE_FOOT_4,
+ SFX_COP5_CHASE_FOOT_5,
+ SFX_COP5_CHASE_FOOT_6,
+ SFX_COP5_DODGE_1,
+ SFX_COP5_DODGE_2,
+ SFX_COP5_FIGHT_1,
+ SFX_COP5_FIGHT_2,
+ SFX_COP5_FIGHT_3,
+ SFX_COP5_SHOOT_1,
+ SFX_COP5_SHOOT_2,
+ SFX_COP5_SHOOT_3,
+ SFX_COP5_SHOOT_4,
+ SFX_COP5_SHOOT_5,
+ SFX_COP5_SHOOT_6,
+ SFX_COP6_ARREST_1,
+ SFX_COP6_ARREST_2,
+ SFX_COP6_BUMP_1,
+ SFX_COP6_BUMP_2,
+ SFX_COP6_BUMP_3,
+ SFX_COP6_CHASE_FOOT_1,
+ SFX_COP6_CHASE_FOOT_2,
+ SFX_COP6_CHASE_FOOT_3,
+ SFX_COP6_CHASE_FOOT_4,
+ SFX_COP6_CHASE_FOOT_5,
+ SFX_COP6_CHASE_FOOT_6,
+ SFX_COP6_DODGE_1,
+ SFX_COP6_DODGE_2,
+ SFX_COP6_FIGHT_1,
+ SFX_COP6_FIGHT_2,
+ SFX_COP6_FIGHT_3,
+ SFX_COP6_SHOOT_1,
+ SFX_COP6_SHOOT_2,
+ SFX_COP6_SHOOT_3,
+ SFX_COP6_SHOOT_4,
+ SFX_COP6_SHOOT_5,
+ SFX_COP6_SHOOT_6,
+ SFX_CRIMINAL01_BUMP_1,
+ SFX_CRIMINAL01_BUMP_2,
+ SFX_CRIMINAL01_BUMP_3,
+ SFX_CRIMINAL01_CHAT_1,
+ SFX_CRIMINAL01_CHAT_2,
+ SFX_CRIMINAL01_CHAT_3,
+ SFX_CRIMINAL01_CHAT_4,
+ SFX_CRIMINAL01_CRASH_CAR_1,
+ SFX_CRIMINAL01_CRASH_CAR_2,
+ SFX_CRIMINAL01_DODGE_1,
+ SFX_CRIMINAL01_DODGE_2,
+ SFX_CRIMINAL01_DRIVER_BLOCKED_1,
+ SFX_CRIMINAL01_DRIVER_BLOCKED_2,
+ SFX_CRIMINAL01_FIGHT_1,
+ SFX_CRIMINAL01_FIGHT_2,
+ SFX_CRIMINAL01_FIGHT_3,
+ SFX_CRIMINAL01_GUN_THREATENED_1,
+ SFX_CRIMINAL01_GUN_THREATENED_2,
+ SFX_CRIMINAL01_JACKED_CAR_1,
+ SFX_CRIMINAL01_JACKED_CAR_2,
+ SFX_CRIMINAL01_JACKED_CAR_3,
+ SFX_CRIMINAL01_SHOCKED_1,
+ SFX_CRIMINAL02_BUMP_1,
+ SFX_CRIMINAL02_BUMP_2,
+ SFX_CRIMINAL02_BUMP_3,
+ SFX_CRIMINAL02_CHAT_1,
+ SFX_CRIMINAL02_CHAT_2,
+ SFX_CRIMINAL02_CHAT_3,
+ SFX_CRIMINAL02_CHAT_4,
+ SFX_CRIMINAL02_CRASH_CAR_1,
+ SFX_CRIMINAL02_CRASH_CAR_2,
+ SFX_CRIMINAL02_DODGE_1,
+ SFX_CRIMINAL02_DODGE_2,
+ SFX_CRIMINAL02_DRIVER_BLOCKED_1,
+ SFX_CRIMINAL02_DRIVER_BLOCKED_2,
+ SFX_CRIMINAL02_FIGHT_1,
+ SFX_CRIMINAL02_FIGHT_2,
+ SFX_CRIMINAL02_FIGHT_3,
+ SFX_CRIMINAL02_GUN_THREATENED_1,
+ SFX_CRIMINAL02_GUN_THREATENED_2,
+ SFX_CRIMINAL02_JACKED_CAR_1,
+ SFX_CRIMINAL02_JACKED_CAR_2,
+ SFX_CRIMINAL02_JACKED_CAR_3,
+ SFX_CRIMINAL02_SHOCKED_1,
+ SFX_CRIMINAL02_SPECIAL_CASE_1,
+ SFX_CRIMINAL02_SPECIAL_CASE_2,
+ SFX_CT_MAN1_BUMP_1,
+ SFX_CT_MAN1_BUMP_2,
+ SFX_CT_MAN1_BUMP_3,
+ SFX_CT_MAN1_CHAT_1,
+ SFX_CT_MAN1_CHAT_2,
+ SFX_CT_MAN1_CHAT_3,
+ SFX_CT_MAN1_CHAT_4,
+ SFX_CT_MAN1_CRASH_CAR_1,
+ SFX_CT_MAN1_CRASH_CAR_2,
+ SFX_CT_MAN1_DODGE_1,
+ SFX_CT_MAN1_DODGE_2,
+ SFX_CT_MAN1_DRIVER_BLOCKED_1,
+ SFX_CT_MAN1_DRIVER_BLOCKED_2,
+ SFX_CT_MAN1_FIGHT_1,
+ SFX_CT_MAN1_FIGHT_2,
+ SFX_CT_MAN1_FIGHT_3,
+ SFX_CT_MAN1_GUN_THREATENED_1,
+ SFX_CT_MAN1_GUN_THREATENED_2,
+ SFX_CT_MAN1_JACKED_CAR_1,
+ SFX_CT_MAN1_JACKED_CAR_2,
+ SFX_CT_MAN1_JACKED_CAR_3,
+ SFX_CT_MAN1_SHOCKED_1,
+ SFX_CT_MAN1_SPECIAL_CASE_1,
+ SFX_CT_MAN1_SPECIAL_CASE_2,
+ SFX_CT_MAN1_SPECIAL_CASE_3,
+ SFX_CT_MAN2_BUMP_1,
+ SFX_CT_MAN2_BUMP_2,
+ SFX_CT_MAN2_BUMP_3,
+ SFX_CT_MAN2_CHAT_1,
+ SFX_CT_MAN2_CHAT_2,
+ SFX_CT_MAN2_CHAT_3,
+ SFX_CT_MAN2_CHAT_4,
+ SFX_CT_MAN2_CRASH_CAR_1,
+ SFX_CT_MAN2_CRASH_CAR_2,
+ SFX_CT_MAN2_DODGE_1,
+ SFX_CT_MAN2_DODGE_2,
+ SFX_CT_MAN2_DRIVER_BLOCKED_1,
+ SFX_CT_MAN2_DRIVER_BLOCKED_2,
+ SFX_CT_MAN2_FIGHT_1,
+ SFX_CT_MAN2_FIGHT_2,
+ SFX_CT_MAN2_FIGHT_3,
+ SFX_CT_MAN2_GUN_THREATENED_1,
+ SFX_CT_MAN2_GUN_THREATENED_2,
+ SFX_CT_MAN2_JACKED_CAR_1,
+ SFX_CT_MAN2_JACKED_CAR_2,
+ SFX_CT_MAN2_JACKED_CAR_3,
+ SFX_CT_MAN2_SHOCKED_1,
+ SFX_CT_WOM1_BUMP_1,
+ SFX_CT_WOM1_BUMP_2,
+ SFX_CT_WOM1_BUMP_3,
+ SFX_CT_WOM1_CHAT_1,
+ SFX_CT_WOM1_CHAT_2,
+ SFX_CT_WOM1_CHAT_3,
+ SFX_CT_WOM1_CHAT_4,
+ SFX_CT_WOM1_CRASH_CAR_1,
+ SFX_CT_WOM1_CRASH_CAR_2,
+ SFX_CT_WOM1_DODGE_1,
+ SFX_CT_WOM1_DODGE_2,
+ SFX_CT_WOM1_DRIVER_BLOCKED_1,
+ SFX_CT_WOM1_DRIVER_BLOCKED_2,
+ SFX_CT_WOM1_FIGHT_1,
+ SFX_CT_WOM1_FIGHT_2,
+ SFX_CT_WOM1_FIGHT_3,
+ SFX_CT_WOM1_GUN_THREATENED_1,
+ SFX_CT_WOM1_GUN_THREATENED_2,
+ SFX_CT_WOM1_JACKED_CAR_1,
+ SFX_CT_WOM1_JACKED_CAR_2,
+ SFX_CT_WOM1_JACKED_CAR_3,
+ SFX_CT_WOM1_SHOCKED_1,
+ SFX_CT_WOM2_BUMP_1,
+ SFX_CT_WOM2_BUMP_2,
+ SFX_CT_WOM2_BUMP_3,
+ SFX_CT_WOM2_CHAT_1,
+ SFX_CT_WOM2_CHAT_2,
+ SFX_CT_WOM2_CHAT_3,
+ SFX_CT_WOM2_CHAT_4,
+ SFX_CT_WOM2_CRASH_CAR_1,
+ SFX_CT_WOM2_CRASH_CAR_2,
+ SFX_CT_WOM2_DODGE_1,
+ SFX_CT_WOM2_DODGE_2,
+ SFX_CT_WOM2_DRIVER_BLOCKED_1,
+ SFX_CT_WOM2_DRIVER_BLOCKED_2,
+ SFX_CT_WOM2_FIGHT_1,
+ SFX_CT_WOM2_FIGHT_2,
+ SFX_CT_WOM2_FIGHT_3,
+ SFX_CT_WOM2_GUN_THREATENED_1,
+ SFX_CT_WOM2_GUN_THREATENED_2,
+ SFX_CT_WOM2_JACKED_CAR_1,
+ SFX_CT_WOM2_JACKED_CAR_2,
+ SFX_CT_WOM2_JACKED_CAR_3,
+ SFX_CT_WOM2_SHOCKED_1,
+ SFX_DOCKER_BUMP_1,
+ SFX_DOCKER_BUMP_2,
+ SFX_DOCKER_BUMP_3,
+ SFX_DOCKER_CHAT_1,
+ SFX_DOCKER_CHAT_2,
+ SFX_DOCKER_CHAT_3,
+ SFX_DOCKER_CHAT_4,
+ SFX_DOCKER_CRASH_CAR_1,
+ SFX_DOCKER_CRASH_CAR_2,
+ SFX_DOCKER_DODGE_1,
+ SFX_DOCKER_DODGE_2,
+ SFX_DOCKER_DRIVER_BLOCKED_1,
+ SFX_DOCKER_DRIVER_BLOCKED_2,
+ SFX_DOCKER_FIGHT_1,
+ SFX_DOCKER_FIGHT_2,
+ SFX_DOCKER_FIGHT_3,
+ SFX_DOCKER_GUN_THREATENED_1,
+ SFX_DOCKER_GUN_THREATENED_2,
+ SFX_DOCKER_JACKED_CAR_1,
+ SFX_DOCKER_JACKED_CAR_2,
+ SFX_DOCKER_JACKED_CAR_3,
+ SFX_DOCKER_SHOCKED_1,
+ SFX_DOCKER_SPECIAL_CASE_1,
+ SFX_DOCKER_SPECIAL_CASE_2,
+ SFX_DOCKER_SPECIAL_CASE_3,
+ SFX_DONALD_CRASH_CAR_1,
+ SFX_DONALD_CRASH_CAR_2,
+ SFX_DONALD_CRASH_CAR_3,
+ SFX_DONALD_DRIVER_BLOCKED_1,
+ SFX_DONALD_DRIVER_BLOCKED_2,
+ SFX_DONALD_JACKED_CAR_1,
+ SFX_DONALD_JACKED_CAR_2,
+ SFX_DONALD_JACKED_CAR_3,
+ SFX_DONALD_SHOCKED_1,
+ SFX_DONALD_SHOCKED_2,
+ SFX_DONH1CA,
+ SFX_DONH1DA,
+ SFX_DONH1DB,
+ SFX_DONH1EA,
+ SFX_DONH1EB,
+ SFX_DONH1EC,
+ SFX_DONH1ED,
+ SFX_DONH1EE,
+ SFX_DONH1FA,
+ SFX_DONH1GA,
+ SFX_DONH1GB,
+ SFX_DONH1GC,
+ SFX_DONH1HA,
+ SFX_DONH1IA,
+ SFX_DONH1IB,
+ SFX_DONH1JA,
+ SFX_DONH1JB,
+ SFX_DONH1JC,
+ SFX_DONH1JD,
+ SFX_DONH1JE,
+ SFX_DONH2AA,
+ SFX_DONH2AB,
+ SFX_DONH2AC,
+ SFX_DONH2AD,
+ SFX_DONH2AF,
+ SFX_DONH2AG,
+ SFX_DONH2AH,
+ SFX_DONH2BA,
+ SFX_DONH2BB,
+ SFX_DONH2BC,
+ SFX_DONH2BD,
+ SFX_DONH2BE,
+ SFX_DONH2BF,
+ SFX_DONH2BG,
+ SFX_DONH2BH,
+ SFX_DONH2BI,
+ SFX_DONH2BJ,
+ SFX_DONH2BK,
+ SFX_DONH2BL,
+ SFX_DONH2CA,
+ SFX_DONH2CB,
+ SFX_DONH2CC,
+ SFX_DONH2CD,
+ SFX_DONH2CE,
+ SFX_DONH2CF,
+ SFX_DONH2CG,
+ SFX_DONH2DA,
+ SFX_DONH2DB,
+ SFX_DONH2DC,
+ SFX_DONH2EA,
+ SFX_DONH2EC,
+ SFX_DONH3AA,
+ SFX_DONH3AB,
+ SFX_DONH3AC,
+ SFX_DONH3AD,
+ SFX_DONH3AE,
+ SFX_DONH3AF,
+ SFX_DONH3AG,
+ SFX_DONH3AH,
+ SFX_DONH3AI,
+ SFX_DONH3BA,
+ SFX_DONH3BB,
+ SFX_DONH3CA,
+ SFX_DONH3DA,
+ SFX_DONH3EA,
+ SFX_DONH3EB,
+ SFX_DONH3EC,
+ SFX_DONH3ED,
+ SFX_DONH3EE,
+ SFX_DONH3EF,
+ SFX_DONH3FA,
+ SFX_DONH3GA,
+ SFX_DONH3GB,
+ SFX_DONH3GC,
+ SFX_DONH3GD,
+ SFX_DONH3GE,
+ SFX_DONH3GF,
+ SFX_DONH3HA,
+ SFX_DONH3HB,
+ SFX_DONH3IA,
+ SFX_DONH3JA,
+ SFX_DONH4AA,
+ SFX_DONH4AB,
+ SFX_DONH4AC,
+ SFX_DONH4AD,
+ SFX_DONH4AE,
+ SFX_DONH4AF,
+ SFX_DONH4AG,
+ SFX_DONH4AH,
+ SFX_DONH4AI,
+ SFX_DONH4AJ,
+ SFX_DONH5AA,
+ SFX_DONH5AB,
+ SFX_DONH5AC,
+ SFX_DONH5AD,
+ SFX_DONH5AE,
+ SFX_DONH5AF,
+ SFX_DONH5AG,
+ SFX_DONH5AH,
+ SFX_DONH5AI,
+ SFX_DONH5AJ,
+ SFX_DONH5BA,
+ SFX_DONH5CA,
+ SFX_DONH5CB,
+ SFX_DONH6BA,
+ SFX_DONH6CA,
+ SFX_DONH6CB,
+ SFX_DONH6DA,
+ SFX_DONH6DB,
+ SFX_DONH6EA,
+ SFX_DONH6EB,
+ SFX_DONH6EC,
+ SFX_DONH6FA,
+ SFX_DONH6GA,
+ SFX_DONH6GB,
+ SFX_DONH6GC,
+ SFX_DONH6GD,
+ SFX_DONH6GF,
+ SFX_DONS1AA,
+ SFX_DONS1AB,
+ SFX_DONS1AC,
+ SFX_DONS1BA,
+ SFX_DONS1BB,
+ SFX_DONS2AA,
+ SFX_DONS2AB,
+ SFX_DONS2AC,
+ SFX_DONS2AD,
+ SFX_DONS2AE,
+ SFX_DONS2AF,
+ SFX_DONS2BA,
+ SFX_DONS2BB,
+ SFX_DONS2BC,
+ SFX_DONS2BD,
+ SFX_DONS2BE,
+ SFX_DONS2CA,
+ SFX_DONS2CB,
+ SFX_DONS2CC,
+ SFX_DONS2CD,
+ SFX_DONS2CE,
+ SFX_DONS2CF,
+ SFX_DONS2CG,
+ SFX_DONS2CH,
+ SFX_DONS2CI,
+ SFX_DONS2CJ,
+ SFX_DONS2CK,
+ SFX_DONS2CL,
+ SFX_DONS2CM,
+ SFX_DONS2CN,
+ SFX_DONS4AA,
+ SFX_DONS4AB,
+ SFX_DONS4AC,
+ SFX_DONS4AD,
+ SFX_DONS4AE,
+ SFX_DONS4AF,
+ SFX_DONS5AA,
+ SFX_DONS5AB,
+ SFX_DONS5AC,
+ SFX_DONS5AD,
+ SFX_DONS5AE,
+ SFX_DONS5BA,
+ SFX_DONS5BB,
+ SFX_DONS5BC,
+ SFX_DONS5BD,
+ SFX_DONS5BE,
+ SFX_DONS5CA,
+ SFX_DONS5DA,
+ SFX_DONS5EA,
+ SFX_DONS5EB,
+ SFX_DONS6AA,
+ SFX_DONS6AB,
+ SFX_DONS6AC,
+ SFX_DONS6AD,
+ SFX_DONS6AE,
+ SFX_DONS6AF,
+ SFX_DONS6AG,
+ SFX_DONS7AA,
+ SFX_DONS7AB,
+ SFX_DONS7AC,
+ SFX_DONS7AD,
+ SFX_DONS7AE,
+ SFX_DONS7AF,
+ SFX_DONS7AG,
+ SFX_DONS7CA,
+ SFX_DONS7CB,
+ SFX_DONS7CC,
+ SFX_DONS7CD,
+ SFX_DONS7CE,
+ SFX_DRKNOCK,
+ SFX_FAN_MAN1_BUMP_1,
+ SFX_FAN_MAN1_BUMP_2,
+ SFX_FAN_MAN1_BUMP_3,
+ SFX_FAN_MAN1_CHAT_1,
+ SFX_FAN_MAN1_CHAT_2,
+ SFX_FAN_MAN1_CHAT_3,
+ SFX_FAN_MAN1_CHAT_4,
+ SFX_FAN_MAN1_CRASH_CAR_1,
+ SFX_FAN_MAN1_CRASH_CAR_2,
+ SFX_FAN_MAN1_DODGE_1,
+ SFX_FAN_MAN1_DRIVER_BLOCKED_1,
+ SFX_FAN_MAN1_DRIVER_BLOCKED_2,
+ SFX_FAN_MAN1_FIGHT_1,
+ SFX_FAN_MAN1_FIGHT_2,
+ SFX_FAN_MAN1_FIGHT_3,
+ SFX_FAN_MAN1_GUN_THREATENED_1,
+ SFX_FAN_MAN1_GUN_THREATENED_2,
+ SFX_FAN_MAN1_JACKED_CAR_1,
+ SFX_FAN_MAN1_JACKED_CAR_2,
+ SFX_FAN_MAN1_JACKED_CAR_3,
+ SFX_FAN_MAN1_SHOCKED_1,
+ SFX_FAN_MAN2_BUMP_1,
+ SFX_FAN_MAN2_BUMP_2,
+ SFX_FAN_MAN2_BUMP_3,
+ SFX_FAN_MAN2_CHAT_1,
+ SFX_FAN_MAN2_CHAT_2,
+ SFX_FAN_MAN2_CHAT_3,
+ SFX_FAN_MAN2_CHAT_4,
+ SFX_FAN_MAN2_CRASH_CAR_1,
+ SFX_FAN_MAN2_CRASH_CAR_2,
+ SFX_FAN_MAN2_DODGE_1,
+ SFX_FAN_MAN2_DODGE_2,
+ SFX_FAN_MAN2_DRIVER_BLOCKED_1,
+ SFX_FAN_MAN2_DRIVER_BLOCKED_2,
+ SFX_FAN_MAN2_FIGHT_1,
+ SFX_FAN_MAN2_FIGHT_2,
+ SFX_FAN_MAN2_FIGHT_3,
+ SFX_FAN_MAN2_GUN_THREATENED_1,
+ SFX_FAN_MAN2_GUN_THREATENED_2,
+ SFX_FAN_MAN2_JACKED_CAR_1,
+ SFX_FAN_MAN2_JACKED_CAR_2,
+ SFX_FAN_MAN2_JACKED_CAR_3,
+ SFX_FAN_MAN2_SHOCKED_1,
+ SFX_FAN_WOM_BUMP_1,
+ SFX_FAN_WOM_BUMP_2,
+ SFX_FAN_WOM_BUMP_3,
+ SFX_FAN_WOM_CHAT_1,
+ SFX_FAN_WOM_CHAT_2,
+ SFX_FAN_WOM_CHAT_3,
+ SFX_FAN_WOM_CHAT_4,
+ SFX_FAN_WOM_CRASH_CAR_1,
+ SFX_FAN_WOM_CRASH_CAR_2,
+ SFX_FAN_WOM_DODGE_1,
+ SFX_FAN_WOM_DODGE_2,
+ SFX_FAN_WOM_DRIVER_BLOCKED_1,
+ SFX_FAN_WOM_DRIVER_BLOCKED_2,
+ SFX_FAN_WOM_FIGHT_1,
+ SFX_FAN_WOM_FIGHT_2,
+ SFX_FAN_WOM_FIGHT_3,
+ SFX_FAN_WOM_GUN_THREATENED_1,
+ SFX_FAN_WOM_GUN_THREATENED_2,
+ SFX_FAN_WOM_JACKED_CAR_1,
+ SFX_FAN_WOM_JACKED_CAR_2,
+ SFX_FAN_WOM_JACKED_CAR_3,
+ SFX_FAN_WOM_SHOCKED_1,
+ SFX_FATFEMALE01_BUMP_1,
+ SFX_FATFEMALE01_BUMP_2,
+ SFX_FATFEMALE01_BUMP_3,
+ SFX_FATFEMALE01_CHAT_1,
+ SFX_FATFEMALE01_CHAT_2,
+ SFX_FATFEMALE01_CHAT_3,
+ SFX_FATFEMALE01_CHAT_4,
+ SFX_FATFEMALE01_CRASH_CAR_1,
+ SFX_FATFEMALE01_CRASH_CAR_2,
+ SFX_FATFEMALE01_DODGE_1,
+ SFX_FATFEMALE01_DODGE_2,
+ SFX_FATFEMALE01_DRIVER_BLOCKED_1,
+ SFX_FATFEMALE01_DRIVER_BLOCKED_2,
+ SFX_FATFEMALE01_FIGHT_1,
+ SFX_FATFEMALE01_FIGHT_2,
+ SFX_FATFEMALE01_FIGHT_3,
+ SFX_FATFEMALE01_FIGHT_4,
+ SFX_FATFEMALE01_GUN_THREATENED_1,
+ SFX_FATFEMALE01_GUN_THREATENED_2,
+ SFX_FATFEMALE01_JACKED_CAR_1,
+ SFX_FATFEMALE01_JACKED_CAR_2,
+ SFX_FATFEMALE01_JACKED_CAR_3,
+ SFX_FATFEMALE01_SHOCKED_1,
+ SFX_FATFEMALE02_BUMP_1,
+ SFX_FATFEMALE02_BUMP_2,
+ SFX_FATFEMALE02_BUMP_3,
+ SFX_FATFEMALE02_CHAT_1,
+ SFX_FATFEMALE02_CHAT_2,
+ SFX_FATFEMALE02_CHAT_3,
+ SFX_FATFEMALE02_CHAT_4,
+ SFX_FATFEMALE02_CRASH_CAR_1,
+ SFX_FATFEMALE02_CRASH_CAR_2,
+ SFX_FATFEMALE02_DODGE_1,
+ SFX_FATFEMALE02_DODGE_2,
+ SFX_FATFEMALE02_DRIVER_BLOCKED_1,
+ SFX_FATFEMALE02_DRIVER_BLOCKED_2,
+ SFX_FATFEMALE02_FIGHT_1,
+ SFX_FATFEMALE02_FIGHT_2,
+ SFX_FATFEMALE02_FIGHT_3,
+ SFX_FATFEMALE02_GUN_THREATENED_1,
+ SFX_FATFEMALE02_GUN_THREATENED_2,
+ SFX_FATFEMALE02_JACKED_CAR_1,
+ SFX_FATFEMALE02_JACKED_CAR_2,
+ SFX_FATFEMALE02_JACKED_CAR_3,
+ SFX_FATFEMALE02_SHOCKED_1,
+ SFX_FATMALE_BUMP_1,
+ SFX_FATMALE_BUMP_2,
+ SFX_FATMALE_BUMP_3,
+ SFX_FATMALE_CHAT_1,
+ SFX_FATMALE_CHAT_2,
+ SFX_FATMALE_CHAT_3,
+ SFX_FATMALE_CHAT_4,
+ SFX_FATMALE_CRASH_CAR_1,
+ SFX_FATMALE_CRASH_CAR_2,
+ SFX_FATMALE_DODGE_1,
+ SFX_FATMALE_DODGE_2,
+ SFX_FATMALE_DRIVER_BLOCKED_1,
+ SFX_FATMALE_DRIVER_BLOCKED_2,
+ SFX_FATMALE_FIGHT_1,
+ SFX_FATMALE_FIGHT_2,
+ SFX_FATMALE_FIGHT_3,
+ SFX_FATMALE_GUN_THREATENED_1,
+ SFX_FATMALE_GUN_THREATENED_2,
+ SFX_FATMALE_JACKED_CAR_1,
+ SFX_FATMALE_JACKED_CAR_2,
+ SFX_FATMALE_JACKED_CAR_3,
+ SFX_FATMALE_SHOCKED_1,
+ SFX_FBI_VOICE_1_SHOOT_1,
+ SFX_FBI_VOICE_1_SHOOT_2,
+ SFX_FBI_VOICE_1_SHOOT_3,
+ SFX_FBI_VOICE_1_SHOOT_4,
+ SFX_FBI_VOICE_1_SHOOT_5,
+ SFX_FBI_VOICE_1_VAN_1,
+ SFX_FBI_VOICE_1_VAN_2,
+ SFX_FBI_VOICE_2_SHOOT_1,
+ SFX_FBI_VOICE_2_SHOOT_2,
+ SFX_FBI_VOICE_2_SHOOT_3,
+ SFX_FBI_VOICE_2_SHOOT_4,
+ SFX_FBI_VOICE_2_SHOOT_5,
+ SFX_FBI_VOICE_2_VAN_1,
+ SFX_FBI_VOICE_2_VAN_2,
+ SFX_FEMALE01_BUMP_1,
+ SFX_FEMALE01_BUMP_2,
+ SFX_FEMALE01_BUMP_3,
+ SFX_FEMALE01_CHAT_1,
+ SFX_FEMALE01_CHAT_2,
+ SFX_FEMALE01_CHAT_3,
+ SFX_FEMALE01_CHAT_4,
+ SFX_FEMALE01_CRASH_CAR_1,
+ SFX_FEMALE01_CRASH_CAR_2,
+ SFX_FEMALE01_DODGE_1,
+ SFX_FEMALE01_DODGE_2,
+ SFX_FEMALE01_DRIVER_BLOCKED_1,
+ SFX_FEMALE01_DRIVER_BLOCKED_2,
+ SFX_FEMALE01_FIGHT_1,
+ SFX_FEMALE01_FIGHT_2,
+ SFX_FEMALE01_FIGHT_3,
+ SFX_FEMALE01_GUN_THREATENED_1,
+ SFX_FEMALE01_GUN_THREATENED_2,
+ SFX_FEMALE01_SHOCKED_1,
+ SFX_FEMALE01_SPECIAL_CASE_1,
+ SFX_FEMALE01_SPECIAL_CASE_2,
+ SFX_FEMALE01_SPECIAL_CASE_3,
+ SFX_FEMALE02_BUMP_1,
+ SFX_FEMALE02_BUMP_2,
+ SFX_FEMALE02_CHAT_1,
+ SFX_FEMALE02_CHAT_2,
+ SFX_FEMALE02_CHAT_3,
+ SFX_FEMALE02_CRASH_CAR_1,
+ SFX_FEMALE02_DODGE_1,
+ SFX_FEMALE02_DODGE_2,
+ SFX_FEMALE02_DRIVER_BLOCKED_1,
+ SFX_FEMALE02_DRIVER_BLOCKED_2,
+ SFX_FEMALE02_FIGHT_1,
+ SFX_FEMALE02_FIGHT_2,
+ SFX_FEMALE02_GUN_THREATENED_1,
+ SFX_FEMALE02_GUN_THREATENED_2,
+ SFX_FEMALE02_JACKED_CAR_1,
+ SFX_FEMALE02_JACKED_CAR_2,
+ SFX_FEMALE02_JACKED_CAR_3,
+ SFX_FEMALE02_SHOCKED_1,
+ SFX_FEMALE03_BUMP_1,
+ SFX_FEMALE03_BUMP_2,
+ SFX_FEMALE03_BUMP_3,
+ SFX_FEMALE03_CHAT_1,
+ SFX_FEMALE03_CHAT_2,
+ SFX_FEMALE03_CRASH_CAR_1,
+ SFX_FEMALE03_CRASH_CAR_2,
+ SFX_FEMALE03_CRASH_CAR_3,
+ SFX_FEMALE03_DODGE_1,
+ SFX_FEMALE03_DODGE_2,
+ SFX_FEMALE03_DRIVER_BLOCKED_1,
+ SFX_FEMALE03_FIGHT_1,
+ SFX_FEMALE03_FIGHT_2,
+ SFX_FEMALE03_FIGHT_3,
+ SFX_FEMALE03_GUN_THREATENED_1,
+ SFX_FEMALE03_GUN_THREATENED_2,
+ SFX_FEMALE03_JACKED_CAR_1,
+ SFX_FEMALE03_JACKED_CAR_2,
+ SFX_FEMALE03_JACKED_CAR_3,
+ SFX_FEMALE03_SHOCKED_1,
+ SFX_FEMALE_DEATH_01,
+ SFX_FEMALE_DEATH_02,
+ SFX_FEMALE_DEATH_03,
+ SFX_FEMALE_DEATH_04,
+ SFX_FEMALE_DEATH_05,
+ SFX_FEMALE_DEATH_06,
+ SFX_FEMALE_DEATH_07,
+ SFX_FEMALE_DEATH_08,
+ SFX_FEMALE_DEATH_09,
+ SFX_FEMALE_DEATH_10,
+ SFX_FEMALE_DEATH_11,
+ SFX_FEMALE_DEATH_12,
+ SFX_FEMALE_DEATH_13,
+ SFX_FEMALE_DEATH_14,
+ SFX_FEMALE_DEATH_15,
+ SFX_FEMALE_DEATH_16,
+ SFX_FEMALE_PAIN_01,
+ SFX_FEMALE_PAIN_02,
+ SFX_FEMALE_PAIN_03,
+ SFX_FEMALE_PAIN_04,
+ SFX_FEMALE_PAIN_05,
+ SFX_FEMALE_PAIN_06,
+ SFX_FEMALE_PAIN_07,
+ SFX_FEMALE_PAIN_08,
+ SFX_FEMALE_PAIN_09,
+ SFX_FEMALE_PAIN_10,
+ SFX_FEMALE_PAIN_11,
+ SFX_FEMALE_PAIN_12,
+ SFX_FEMALE_PAIN_13,
+ SFX_FEMALE_PAIN_14,
+ SFX_FEMALE_PAIN_15,
+ SFX_FEMALE_PAIN_16,
+ SFX_FEMALE_PAIN_17,
+ SFX_FEMALE_PAIN_18,
+ SFX_FEMALE_PAIN_19,
+ SFX_FEMALE_PAIN_20,
+ SFX_FEMALE_PAIN_21,
+ SFX_FEMALE_PAIN_22,
+ SFX_FEMALE_PAIN_23,
+ SFX_FEMALE_PAIN_24,
+ SFX_FEMALE_PAIN_25,
+ SFX_FEMALE_PAIN_26,
+ SFX_FEMALE_PAIN_27,
+ SFX_FEMALE_PAIN_28,
+ SFX_FEMALE_PAIN_29,
+ SFX_FEMALE_PAIN_30,
+ SFX_FEMALE_PAIN_31,
+ SFX_FEMALE_PAIN_32,
+ SFX_FEMALE_PAIN_33,
+ SFX_FEMALE_PAIN_34,
+ SFX_FEMALE_PAIN_ON_FIRE_01,
+ SFX_FEMALE_PAIN_ON_FIRE_02,
+ SFX_FEMALE_PAIN_ON_FIRE_03,
+ SFX_FEMALE_PAIN_ON_FIRE_04,
+ SFX_FEMALE_PAIN_ON_FIRE_05,
+ SFX_FEMALE_PAIN_ON_FIRE_06,
+ SFX_FEMALE_PAIN_ON_FIRE_07,
+ SFX_FEMALE_PAIN_ON_FIRE_08,
+ SFX_FEMALE_PAIN_ON_FIRE_09,
+ SFX_FEMALE_PAIN_ON_FIRE_10,
+ SFX_FEMALE_PAIN_ON_FIRE_11,
+ SFX_FEMALE_PANIC_01,
+ SFX_FEMALE_PANIC_02,
+ SFX_FEMALE_PANIC_03,
+ SFX_FEMALE_PANIC_04,
+ SFX_FEMALE_PANIC_05,
+ SFX_FEMALE_PANIC_06,
+ SFX_FEMALE_PANIC_07,
+ SFX_FEMALE_PANIC_08,
+ SFX_FEMALE_PANIC_09,
+ SFX_FEMALE_PANIC_10,
+ SFX_FEMALE_PANIC_11,
+ SFX_FEMALE_PANIC_12,
+ SFX_FEMALE_PANIC_13,
+ SFX_FEMALE_SEX_01,
+ SFX_FEMALE_SEX_02,
+ SFX_FEMALE_SEX_03,
+ SFX_FEMALE_SEX_04,
+ SFX_FEMALE_SEX_05,
+ SFX_FEMALE_SEX_06,
+ SFX_FEMALE_SEX_07,
+ SFX_FEMALE_SEX_08,
+ SFX_FEMALE_SEX_09,
+ SFX_FEMALE_SEX_10,
+ SFX_FEMALE_SEX_11,
+ SFX_GANG01_BUMP_1,
+ SFX_GANG01_BUMP_2,
+ SFX_GANG01_BUMP_3,
+ SFX_GANG01_CHAT_1,
+ SFX_GANG01_CHAT_2,
+ SFX_GANG01_CHAT_3,
+ SFX_GANG01_CRASH_CAR_1,
+ SFX_GANG01_CRASH_CAR_2,
+ SFX_GANG01_DODGE_1,
+ SFX_GANG01_DODGE_2,
+ SFX_GANG01_DRIVER_BLOCKED_1,
+ SFX_GANG01_DRIVER_BLOCKED_2,
+ SFX_GANG01_FIGHT_1,
+ SFX_GANG01_FIGHT_2,
+ SFX_GANG01_GUN_THREATENED_1,
+ SFX_GANG01_GUN_THREATENED_2,
+ SFX_GANG01_JACKED_CAR_1,
+ SFX_GANG01_JACKED_CAR_2,
+ SFX_GANG01_JACKING_1,
+ SFX_GANG01_JACKING_2,
+ SFX_GANG01_SHOOT_1,
+ SFX_GANG01_SHOOT_2,
+ SFX_GANG01_SHOOT_3,
+ SFX_GANG01_SHOOT_4,
+ SFX_GANG01_SHOOT_5,
+ SFX_GANG02_BUMP_1,
+ SFX_GANG02_BUMP_2,
+ SFX_GANG02_BUMP_3,
+ SFX_GANG02_CHAT_1,
+ SFX_GANG02_CHAT_2,
+ SFX_GANG02_CRASH_CAR_1,
+ SFX_GANG02_CRASH_CAR_2,
+ SFX_GANG02_DODGE_1,
+ SFX_GANG02_DODGE_2,
+ SFX_GANG02_DRIVER_BLOCKED_1,
+ SFX_GANG02_DRIVER_BLOCKED_2,
+ SFX_GANG02_FIGHT_1,
+ SFX_GANG02_FIGHT_2,
+ SFX_GANG02_GUN_THREATENED_1,
+ SFX_GANG02_GUN_THREATENED_2,
+ SFX_GANG02_JACKED_CAR_1,
+ SFX_GANG02_JACKED_CAR_2,
+ SFX_GANG02_JACKING_1,
+ SFX_GANG02_JACKING_2,
+ SFX_GANG02_SHOOT_1,
+ SFX_GANG02_SHOOT_2,
+ SFX_GANG02_SHOOT_3,
+ SFX_GANG02_SHOOT_4,
+ SFX_GANG02_SHOOT_5,
+ SFX_GANG03_BUMP_1,
+ SFX_GANG03_BUMP_2,
+ SFX_GANG03_BUMP_3,
+ SFX_GANG03_CHAT_1,
+ SFX_GANG03_CHAT_2,
+ SFX_GANG03_CHAT_3,
+ SFX_GANG03_CHAT_4,
+ SFX_GANG03_CRASH_CAR_1,
+ SFX_GANG03_CRASH_CAR_2,
+ SFX_GANG03_CRASH_CAR_3,
+ SFX_GANG03_DODGE_1,
+ SFX_GANG03_DODGE_2,
+ SFX_GANG03_DRIVER_BLOCKED_1,
+ SFX_GANG03_DRIVER_BLOCKED_2,
+ SFX_GANG03_FIGHT_1,
+ SFX_GANG03_FIGHT_2,
+ SFX_GANG03_FIGHT_3,
+ SFX_GANG03_GUN_THREATENED_1,
+ SFX_GANG03_GUN_THREATENED_2,
+ SFX_GANG03_JACKED_CAR_1,
+ SFX_GANG03_JACKED_CAR_2,
+ SFX_GANG03_SHOOT_1,
+ SFX_GANG03_SHOOT_2,
+ SFX_GANG03_SHOOT_3,
+ SFX_GANG03_SHOOT_4,
+ SFX_GANG04_BUMP_1,
+ SFX_GANG04_BUMP_2,
+ SFX_GANG04_BUMP_3,
+ SFX_GANG04_CHAT_1,
+ SFX_GANG04_CHAT_2,
+ SFX_GANG04_CRASH_CAR_1,
+ SFX_GANG04_CRASH_CAR_2,
+ SFX_GANG04_DODGE_1,
+ SFX_GANG04_DODGE_2,
+ SFX_GANG04_DRIVER_BLOCKED_1,
+ SFX_GANG04_DRIVER_BLOCKED_2,
+ SFX_GANG04_FIGHT_1,
+ SFX_GANG04_FIGHT_2,
+ SFX_GANG04_GUN_THREATENED_1,
+ SFX_GANG04_GUN_THREATENED_2,
+ SFX_GANG04_JACKED_CAR_1,
+ SFX_GANG04_JACKED_CAR_2,
+ SFX_GANG04_JACKING_1,
+ SFX_GANG04_JACKING_2,
+ SFX_GANG04_SHOOT_1,
+ SFX_GANG04_SHOOT_2,
+ SFX_GANG04_SHOOT_3,
+ SFX_GANG04_SHOOT_4,
+ SFX_GANG04_SHOOT_5,
+ SFX_GANG05_BUMP_1,
+ SFX_GANG05_BUMP_2,
+ SFX_GANG05_BUMP_3,
+ SFX_GANG05_CHAT_1,
+ SFX_GANG05_CHAT_2,
+ SFX_GANG05_CHAT_3,
+ SFX_GANG05_CRASH_CAR_1,
+ SFX_GANG05_CRASH_CAR_2,
+ SFX_GANG05_DODGE_1,
+ SFX_GANG05_DODGE_2,
+ SFX_GANG05_DRIVER_BLOCKED_1,
+ SFX_GANG05_DRIVER_BLOCKED_2,
+ SFX_GANG05_FIGHT_1,
+ SFX_GANG05_FIGHT_2,
+ SFX_GANG05_GUN_THREATENED_1,
+ SFX_GANG05_GUN_THREATENED_2,
+ SFX_GANG05_JACKED_CAR_1,
+ SFX_GANG05_JACKED_CAR_2,
+ SFX_GANG05_JACKING_1,
+ SFX_GANG05_JACKING_2,
+ SFX_GANG05_SHOOT_1,
+ SFX_GANG05_SHOOT_2,
+ SFX_GANG05_SHOOT_3,
+ SFX_GANG05_SHOOT_4,
+ SFX_GANG06_BUMP_1,
+ SFX_GANG06_BUMP_2,
+ SFX_GANG06_BUMP_3,
+ SFX_GANG06_CHAT_1,
+ SFX_GANG06_CHAT_2,
+ SFX_GANG06_CHAT_3,
+ SFX_GANG06_CRASH_CAR_1,
+ SFX_GANG06_CRASH_CAR_2,
+ SFX_GANG06_DODGE_1,
+ SFX_GANG06_DODGE_2,
+ SFX_GANG06_DRIVER_BLOCKED_1,
+ SFX_GANG06_DRIVER_BLOCKED_2,
+ SFX_GANG06_FIGHT_1,
+ SFX_GANG06_FIGHT_2,
+ SFX_GANG06_GUN_THREATENED_1,
+ SFX_GANG06_GUN_THREATENED_2,
+ SFX_GANG06_JACKED_CAR_1,
+ SFX_GANG06_JACKED_CAR_2,
+ SFX_GANG06_JACKING_1,
+ SFX_GANG06_JACKING_2,
+ SFX_GANG06_SHOOT_1,
+ SFX_GANG06_SHOOT_2,
+ SFX_GANG06_SHOOT_3,
+ SFX_GANG06_SHOOT_4,
+ SFX_GANG06_SHOOT_5,
+ SFX_GANG07_BUMP_1,
+ SFX_GANG07_BUMP_2,
+ SFX_GANG07_BUMP_3,
+ SFX_GANG07_CHAT_1,
+ SFX_GANG07_CHAT_2,
+ SFX_GANG07_CRASH_CAR_1,
+ SFX_GANG07_CRASH_CAR_2,
+ SFX_GANG07_DODGE_1,
+ SFX_GANG07_DODGE_2,
+ SFX_GANG07_DRIVER_BLOCKED_1,
+ SFX_GANG07_DRIVER_BLOCKED_2,
+ SFX_GANG07_FIGHT_1,
+ SFX_GANG07_FIGHT_2,
+ SFX_GANG07_GUN_THREATENED_1,
+ SFX_GANG07_GUN_THREATENED_2,
+ SFX_GANG07_JACKED_CAR_1,
+ SFX_GANG07_JACKED_CAR_2,
+ SFX_GANG07_JACKING_1,
+ SFX_GANG07_SHOOT_1,
+ SFX_GANG07_SHOOT_2,
+ SFX_GANG07_SHOOT_3,
+ SFX_GANG07_SHOOT_4,
+ SFX_GANG08_BUMP_1,
+ SFX_GANG08_BUMP_2,
+ SFX_GANG08_BUMP_3,
+ SFX_GANG08_CHAT_1,
+ SFX_GANG08_CHAT_2,
+ SFX_GANG08_CRASH_CAR_1,
+ SFX_GANG08_CRASH_CAR_2,
+ SFX_GANG08_DODGE_1,
+ SFX_GANG08_DODGE_2,
+ SFX_GANG08_DRIVER_BLOCKED_1,
+ SFX_GANG08_DRIVER_BLOCKED_2,
+ SFX_GANG08_FIGHT_1,
+ SFX_GANG08_FIGHT_2,
+ SFX_GANG08_GUN_THREATENED_1,
+ SFX_GANG08_GUN_THREATENED_2,
+ SFX_GANG08_JACKED_CAR_1,
+ SFX_GANG08_JACKED_CAR_2,
+ SFX_GANG08_JACKING_1,
+ SFX_GANG08_JACKING_2,
+ SFX_GANG08_SHOOT_1,
+ SFX_GANG08_SHOOT_2,
+ SFX_GANG08_SHOOT_3,
+ SFX_GANG08_SHOOT_4,
+ SFX_GANG08_SHOOT_5,
+ SFX_GANG09_BUMP_1,
+ SFX_GANG09_BUMP_2,
+ SFX_GANG09_BUMP_3,
+ SFX_GANG09_CHAT_1,
+ SFX_GANG09_CHAT_2,
+ SFX_GANG09_CHAT_3,
+ SFX_GANG09_CRASH_CAR_1,
+ SFX_GANG09_CRASH_CAR_2,
+ SFX_GANG09_DODGE_1,
+ SFX_GANG09_DODGE_2,
+ SFX_GANG09_DRIVER_BLOCKED_1,
+ SFX_GANG09_DRIVER_BLOCKED_2,
+ SFX_GANG09_FIGHT_1,
+ SFX_GANG09_FIGHT_2,
+ SFX_GANG09_GUN_THREATENED_1,
+ SFX_GANG09_GUN_THREATENED_2,
+ SFX_GANG09_JACKED_CAR_1,
+ SFX_GANG09_JACKED_CAR_2,
+ SFX_GANG09_JACKING_1,
+ SFX_GANG09_JACKING_2,
+ SFX_GANG09_SHOOT_1,
+ SFX_GANG09_SHOOT_2,
+ SFX_GANG09_SHOOT_3,
+ SFX_GANG09_SHOOT_4,
+ SFX_GANG09_SHOOT_5,
+ SFX_GANG10_BUMP_1,
+ SFX_GANG10_BUMP_2,
+ SFX_GANG10_BUMP_3,
+ SFX_GANG10_CHAT_1,
+ SFX_GANG10_CHAT_2,
+ SFX_GANG10_CHAT_3,
+ SFX_GANG10_CRASH_CAR_1,
+ SFX_GANG10_CRASH_CAR_2,
+ SFX_GANG10_DODGE_1,
+ SFX_GANG10_DODGE_2,
+ SFX_GANG10_DRIVER_BLOCKED_1,
+ SFX_GANG10_DRIVER_BLOCKED_2,
+ SFX_GANG10_FIGHT_1,
+ SFX_GANG10_FIGHT_2,
+ SFX_GANG10_GUN_THREATENED_1,
+ SFX_GANG10_GUN_THREATENED_2,
+ SFX_GANG10_JACKED_CAR_1,
+ SFX_GANG10_JACKED_CAR_2,
+ SFX_GANG10_JACKING_1,
+ SFX_GANG10_JACKING_2,
+ SFX_GANG10_SHOOT_1,
+ SFX_GANG10_SHOOT_2,
+ SFX_GANG10_SHOOT_3,
+ SFX_GANG10_SHOOT_4,
+ SFX_GANG10_SHOOT_5,
+ SFX_GANG11_BUMP_1,
+ SFX_GANG11_BUMP_2,
+ SFX_GANG11_BUMP_3,
+ SFX_GANG11_CHAT_1,
+ SFX_GANG11_CHAT_2,
+ SFX_GANG11_CRASH_CAR_1,
+ SFX_GANG11_CRASH_CAR_2,
+ SFX_GANG11_DODGE_1,
+ SFX_GANG11_DODGE_2,
+ SFX_GANG11_DRIVER_BLOCKED_1,
+ SFX_GANG11_DRIVER_BLOCKED_2,
+ SFX_GANG11_FIGHT_1,
+ SFX_GANG11_FIGHT_2,
+ SFX_GANG11_GUN_THREATENED_1,
+ SFX_GANG11_GUN_THREATENED_2,
+ SFX_GANG11_JACKED_CAR_1,
+ SFX_GANG11_JACKED_CAR_2,
+ SFX_GANG11_JACKING_1,
+ SFX_GANG11_JACKING_2,
+ SFX_GANG11_SHOOT_1,
+ SFX_GANG11_SHOOT_2,
+ SFX_GANG11_SHOOT_3,
+ SFX_GANG11_SHOOT_4,
+ SFX_GANG11_SHOOT_5,
+ SFX_GANG12_BUMP_1,
+ SFX_GANG12_BUMP_2,
+ SFX_GANG12_BUMP_3,
+ SFX_GANG12_CHAT_1,
+ SFX_GANG12_CHAT_2,
+ SFX_GANG12_CHAT_3,
+ SFX_GANG12_CRASH_CAR_1,
+ SFX_GANG12_CRASH_CAR_2,
+ SFX_GANG12_DODGE_1,
+ SFX_GANG12_DODGE_2,
+ SFX_GANG12_DRIVER_BLOCKED_1,
+ SFX_GANG12_DRIVER_BLOCKED_2,
+ SFX_GANG12_FIGHT_1,
+ SFX_GANG12_FIGHT_2,
+ SFX_GANG12_GUN_THREATENED_1,
+ SFX_GANG12_GUN_THREATENED_2,
+ SFX_GANG12_JACKED_CAR_1,
+ SFX_GANG12_JACKED_CAR_2,
+ SFX_GANG12_JACKING_1,
+ SFX_GANG12_JACKING_2,
+ SFX_GANG12_SHOOT_1,
+ SFX_GANG12_SHOOT_2,
+ SFX_GANG12_SHOOT_3,
+ SFX_GANG12_SHOOT_4,
+ SFX_GANG12_SHOOT_5,
+ SFX_GANG13_BUMP_1,
+ SFX_GANG13_BUMP_2,
+ SFX_GANG13_BUMP_3,
+ SFX_GANG13_CHAT_1,
+ SFX_GANG13_CHAT_2,
+ SFX_GANG13_CRASH_CAR_1,
+ SFX_GANG13_CRASH_CAR_2,
+ SFX_GANG13_DODGE_1,
+ SFX_GANG13_DODGE_2,
+ SFX_GANG13_DRIVER_BLOCKED_1,
+ SFX_GANG13_DRIVER_BLOCKED_2,
+ SFX_GANG13_FIGHT_1,
+ SFX_GANG13_FIGHT_2,
+ SFX_GANG13_GUN_THREATENED_1,
+ SFX_GANG13_GUN_THREATENED_2,
+ SFX_GANG13_JACKED_CAR_1,
+ SFX_GANG13_JACKED_CAR_2,
+ SFX_GANG13_JACKING_1,
+ SFX_GANG13_JACKING_2,
+ SFX_GANG13_SHOOT_1,
+ SFX_GANG13_SHOOT_2,
+ SFX_GANG13_SHOOT_3,
+ SFX_GANG13_SHOOT_4,
+ SFX_GANG13_SHOOT_5,
+ SFX_GANG14_BUMP_1,
+ SFX_GANG14_BUMP_2,
+ SFX_GANG14_BUMP_3,
+ SFX_GANG14_CHAT_1,
+ SFX_GANG14_CHAT_2,
+ SFX_GANG14_CHAT_3,
+ SFX_GANG14_CRASH_CAR_1,
+ SFX_GANG14_CRASH_CAR_2,
+ SFX_GANG14_DODGE_1,
+ SFX_GANG14_DODGE_2,
+ SFX_GANG14_DRIVER_BLOCKED_1,
+ SFX_GANG14_DRIVER_BLOCKED_2,
+ SFX_GANG14_FIGHT_1,
+ SFX_GANG14_FIGHT_2,
+ SFX_GANG14_GUN_THREATENED_1,
+ SFX_GANG14_GUN_THREATENED_2,
+ SFX_GANG14_JACKED_CAR_1,
+ SFX_GANG14_JACKED_CAR_2,
+ SFX_GANG14_JACKING_1,
+ SFX_GANG14_JACKING_2,
+ SFX_GANG14_SHOOT_1,
+ SFX_GANG14_SHOOT_2,
+ SFX_GANG14_SHOOT_3,
+ SFX_GANG14_SHOOT_4,
+ SFX_GANG14_SHOOT_5,
+ SFX_GANG15_BUMP_1,
+ SFX_GANG15_BUMP_2,
+ SFX_GANG15_BUMP_3,
+ SFX_GANG15_CHAT_1,
+ SFX_GANG15_CHAT_2,
+ SFX_GANG15_CHAT_3,
+ SFX_GANG15_CRASH_CAR_1,
+ SFX_GANG15_CRASH_CAR_2,
+ SFX_GANG15_DODGE_1,
+ SFX_GANG15_DODGE_2,
+ SFX_GANG15_DRIVER_BLOCKED_1,
+ SFX_GANG15_DRIVER_BLOCKED_2,
+ SFX_GANG15_FIGHT_1,
+ SFX_GANG15_FIGHT_2,
+ SFX_GANG15_GUN_THREATENED_1,
+ SFX_GANG15_GUN_THREATENED_2,
+ SFX_GANG15_JACKING_1,
+ SFX_GANG15_JACKING_2,
+ SFX_GANG15_JACKING_CAR_1,
+ SFX_GANG15_JACKING_CAR_2,
+ SFX_GANG15_SHOOT_1,
+ SFX_GANG15_SHOOT_2,
+ SFX_GANG15_SHOOT_3,
+ SFX_GANG15_SHOOT_4,
+ SFX_GANG16_BUMP_1,
+ SFX_GANG16_BUMP_2,
+ SFX_GANG16_BUMP_3,
+ SFX_GANG16_CHAT_1,
+ SFX_GANG16_CHAT_2,
+ SFX_GANG16_CRASH_CAR_1,
+ SFX_GANG16_CRASH_CAR_2,
+ SFX_GANG16_DODGE_1,
+ SFX_GANG16_DODGE_2,
+ SFX_GANG16_DRIVER_BLOCKED_1,
+ SFX_GANG16_DRIVER_BLOCKED_2,
+ SFX_GANG16_FIGHT_1,
+ SFX_GANG16_FIGHT_2,
+ SFX_GANG16_GUN_THREATENED_1,
+ SFX_GANG16_GUN_THREATENED_2,
+ SFX_GANG16_JACKED_CAR_1,
+ SFX_GANG16_JACKED_CAR_2,
+ SFX_GANG16_JACKING_1,
+ SFX_GANG16_JACKING_2,
+ SFX_GANG16_SHOOT_1,
+ SFX_GANG16_SHOOT_2,
+ SFX_GANG16_SHOOT_3,
+ SFX_GANG16_SHOOT_4,
+ SFX_GANG16_SHOOT_5,
+ SFX_GANG17_BUMP_1,
+ SFX_GANG17_BUMP_2,
+ SFX_GANG17_BUMP_3,
+ SFX_GANG17_CHAT_1,
+ SFX_GANG17_CHAT_2,
+ SFX_GANG17_CRASH_CAR_1,
+ SFX_GANG17_CRASH_CAR_2,
+ SFX_GANG17_DODGE_1,
+ SFX_GANG17_DODGE_2,
+ SFX_GANG17_DRIVER_BLOCKED_1,
+ SFX_GANG17_DRIVER_BLOCKED_2,
+ SFX_GANG17_FIGHT_1,
+ SFX_GANG17_FIGHT_2,
+ SFX_GANG17_GUN_THREATENED_1,
+ SFX_GANG17_GUN_THREATENED_2,
+ SFX_GANG17_JACKED_CAR_1,
+ SFX_GANG17_JACKED_CAR_2,
+ SFX_GANG17_JACKING_1,
+ SFX_GANG17_JACKING_2,
+ SFX_GANG17_SHOOT_1,
+ SFX_GANG17_SHOOT_2,
+ SFX_GANG17_SHOOT_3,
+ SFX_GANG17_SHOOT_4,
+ SFX_GANG17_SHOOT_5,
+ SFX_GANG18_BUMP_1,
+ SFX_GANG18_BUMP_2,
+ SFX_GANG18_BUMP_3,
+ SFX_GANG18_CHAT_1,
+ SFX_GANG18_CHAT_2,
+ SFX_GANG18_CHAT_3,
+ SFX_GANG18_CRASH_CAR_1,
+ SFX_GANG18_CRASH_CAR_2,
+ SFX_GANG18_DODGE_1,
+ SFX_GANG18_DODGE_2,
+ SFX_GANG18_DRIVER_BLOCKED_1,
+ SFX_GANG18_DRIVER_BLOCKED_2,
+ SFX_GANG18_FIGHT_1,
+ SFX_GANG18_FIGHT_2,
+ SFX_GANG18_GUN_THREATENED_1,
+ SFX_GANG18_GUN_THREATENED_2,
+ SFX_GANG18_JACKED_CAR_1,
+ SFX_GANG18_JACKED_CAR_2,
+ SFX_GANG18_JACKING_1,
+ SFX_GANG18_JACKING_2,
+ SFX_GANG18_SHOOT_1,
+ SFX_GANG18_SHOOT_2,
+ SFX_GANG18_SHOOT_3,
+ SFX_GANG18_SHOOT_4,
+ SFX_GRDANG1_BUMP_1,
+ SFX_GRDANG1_BUMP_2,
+ SFX_GRDANG1_BUMP_3,
+ SFX_GRDANG1_CHAT_1,
+ SFX_GRDANG1_CHAT_2,
+ SFX_GRDANG1_CHAT_3,
+ SFX_GRDANG1_CRASH_CAR_1,
+ SFX_GRDANG1_CRASH_CAR_2,
+ SFX_GRDANG1_DODGE_1,
+ SFX_GRDANG1_DODGE_2,
+ SFX_GRDANG1_DRIVER_BLOCKED_1,
+ SFX_GRDANG1_DRIVER_BLOCKED_2,
+ SFX_GRDANG1_FIGHT_1,
+ SFX_GRDANG1_FIGHT_2,
+ SFX_GRDANG1_FIGHT_3,
+ SFX_GRDANG1_GUN_THREATENED_1,
+ SFX_GRDANG1_GUN_THREATENED_2,
+ SFX_GRDANG1_JACKED_CAR_1,
+ SFX_GRDANG1_JACKED_CAR_2,
+ SFX_GRDANG1_JACKED_CAR_3,
+ SFX_GRDANG1_SHOCKED_1,
+ SFX_GRDANG1_SPECIAL_CASE_1,
+ SFX_GRDANG1_SPECIAL_CASE_2,
+ SFX_GRDANG1_SPECIAL_CASE_3,
+ SFX_GRDANG2_BUMP_1,
+ SFX_GRDANG2_BUMP_2,
+ SFX_GRDANG2_BUMP_3,
+ SFX_GRDANG2_CHAT_1,
+ SFX_GRDANG2_CHAT_2,
+ SFX_GRDANG2_CHAT_3,
+ SFX_GRDANG2_CHAT_4,
+ SFX_GRDANG2_CRASH_CAR_1,
+ SFX_GRDANG2_CRASH_CAR_2,
+ SFX_GRDANG2_DODGE_1,
+ SFX_GRDANG2_DODGE_2,
+ SFX_GRDANG2_DRIVER_BLOCKED_1,
+ SFX_GRDANG2_DRIVER_BLOCKED_2,
+ SFX_GRDANG2_FIGHT_1,
+ SFX_GRDANG2_FIGHT_2,
+ SFX_GRDANG2_FIGHT_3,
+ SFX_GRDANG2_GUN_THREATENED_1,
+ SFX_GRDANG2_GUN_THREATENED_2,
+ SFX_GRDANG2_JACKED_CAR_1,
+ SFX_GRDANG2_JACKED_CAR_2,
+ SFX_GRDANG2_JACKED_CAR_3,
+ SFX_GRDANG2_SHOCKED_1,
+ SFX_HIT1_AA,
+ SFX_HIT1_AB,
+ SFX_HIT1_AC,
+ SFX_HIT1_AD,
+ SFX_HIT1_AE,
+ SFX_HIT1_AF,
+ SFX_HIT1_AG,
+ SFX_HIT2_AA,
+ SFX_HIT2_AB,
+ SFX_HIT2_AC,
+ SFX_HIT2_AD,
+ SFX_HIT2_AE,
+ SFX_HIT2_AF,
+ SFX_HIT2_AG,
+ SFX_HIT2_AH,
+ SFX_HIT3_AA,
+ SFX_HIT3_AB,
+ SFX_HIT3_AC,
+ SFX_HIT3_AD,
+ SFX_HIT3_AE,
+ SFX_HIT3_AF,
+ SFX_HIT3_AG,
+ SFX_HITM_AA,
+ SFX_HITM_AB,
+ SFX_HITM_AC,
+ SFX_HITM_AD,
+ SFX_HOS_MAN_BUMP_1,
+ SFX_HOS_MAN_BUMP_2,
+ SFX_HOS_MAN_BUMP_3,
+ SFX_HOS_MAN_CHAT_1,
+ SFX_HOS_MAN_CHAT_2,
+ SFX_HOS_MAN_CHAT_3,
+ SFX_HOS_MAN_CRASH_CAR_1,
+ SFX_HOS_MAN_CRASH_CAR_2,
+ SFX_HOS_MAN_DODGE_1,
+ SFX_HOS_MAN_DODGE_2,
+ SFX_HOS_MAN_DRIVER_BLOCKED_1,
+ SFX_HOS_MAN_DRIVER_BLOCKED_2,
+ SFX_HOS_MAN_FIGHT_1,
+ SFX_HOS_MAN_FIGHT_2,
+ SFX_HOS_MAN_FIGHT_3,
+ SFX_HOS_MAN_GUN_THREATENED_1,
+ SFX_HOS_MAN_GUN_THREATENED_2,
+ SFX_HOS_MAN_JACKED_CAR_1,
+ SFX_HOS_MAN_JACKED_CAR_2,
+ SFX_HOS_MAN_JACKED_CAR_3,
+ SFX_HOS_MAN_SHOCKED_1,
+ SFX_HOS_WOM_BUMP_1,
+ SFX_HOS_WOM_BUMP_2,
+ SFX_HOS_WOM_BUMP_3,
+ SFX_HOS_WOM_CHAT_1,
+ SFX_HOS_WOM_CHAT_2,
+ SFX_HOS_WOM_CHAT_3,
+ SFX_HOS_WOM_CRASH_CAR_1,
+ SFX_HOS_WOM_CRASH_CAR_2,
+ SFX_HOS_WOM_DODGE_1,
+ SFX_HOS_WOM_DODGE_2,
+ SFX_HOS_WOM_DRIVER_BLOCKED_1,
+ SFX_HOS_WOM_DRIVER_BLOCKED_2,
+ SFX_HOS_WOM_FIGHT_1,
+ SFX_HOS_WOM_FIGHT_2,
+ SFX_HOS_WOM_FIGHT_3,
+ SFX_HOS_WOM_GUN_THREATENED_1,
+ SFX_HOS_WOM_GUN_THREATENED_2,
+ SFX_HOS_WOM_JACKED_CAR_1,
+ SFX_HOS_WOM_JACKED_CAR_2,
+ SFX_HOS_WOM_JACKED_CAR_3,
+ SFX_HOS_WOM_SHOCKED_1,
+ SFX_JDT1_BA,
+ SFX_JDT1_BB,
+ SFX_JDT1_CA,
+ SFX_JDT1_CB,
+ SFX_JDT1_DA,
+ SFX_JDT1_DB,
+ SFX_JDT1_DC,
+ SFX_JDT1_DD,
+ SFX_JDT1_DE,
+ SFX_JDT1_DF,
+ SFX_JDT1_DG,
+ SFX_JDT1_DH,
+ SFX_JDT1_DI,
+ SFX_JDT1_DJ,
+ SFX_JDT1_EA,
+ SFX_JDT1_EB,
+ SFX_JDT1_EC,
+ SFX_JDT1_ED,
+ SFX_JDT1_EE,
+ SFX_JDT1_FA,
+ SFX_JDT1_FB,
+ SFX_JDT1_FC,
+ SFX_JDT1_FD,
+ SFX_JDT1_FE,
+ SFX_JDT1_FF,
+ SFX_JDT1_GA,
+ SFX_JDT1_HA,
+ SFX_JDT1_HB,
+ SFX_JDT1_HC,
+ SFX_JDT1_HD,
+ SFX_JDT1_HE,
+ SFX_JDT1_HF,
+ SFX_JDT1_IA,
+ SFX_JDT1_JA,
+ SFX_JDT1_JB,
+ SFX_JDT1_KA,
+ SFX_JDT1_KB,
+ SFX_JDT1_KC,
+ SFX_JDT1_KD,
+ SFX_JDT1_KE,
+ SFX_JDT1_KF,
+ SFX_JDT1_LA,
+ SFX_JDT1_LB,
+ SFX_JDT1_MA,
+ SFX_JDT1_MB,
+ SFX_JDT1_MC,
+ SFX_JDT1_MD,
+ SFX_JDT1_ME,
+ SFX_JDT1_MF,
+ SFX_JDT1_MG,
+ SFX_JDT1_MH,
+ SFX_JDT2_AA,
+ SFX_JDT2_AB,
+ SFX_JDT2_AC,
+ SFX_JDT2_AD,
+ SFX_JDT2_AE,
+ SFX_JDT2_AF,
+ SFX_JDT2_AG,
+ SFX_JDT2_AH,
+ SFX_JDT2_BA,
+ SFX_JDT2_BB,
+ SFX_JDT2_BC,
+ SFX_JDT2_CA,
+ SFX_JDT2_CB,
+ SFX_JDT2_DA,
+ SFX_JDT2_DC,
+ SFX_JDT2_DD,
+ SFX_JDT2_DE,
+ SFX_JDT2_DF,
+ SFX_JDT3_AA,
+ SFX_JDT3_AB,
+ SFX_JDT3_AC,
+ SFX_JDT3_AD,
+ SFX_JDT3_AE,
+ SFX_JDT3_AG,
+ SFX_JDT3_AH,
+ SFX_JDT3_BA,
+ SFX_JDT3_BB,
+ SFX_JDT3_BC,
+ SFX_JDT3_BD,
+ SFX_JDT3_BE,
+ SFX_JDT3_BF,
+ SFX_JDT4_AA,
+ SFX_JDT4_AB,
+ SFX_JDT4_AC,
+ SFX_JDT4_AD,
+ SFX_JDT4_AE,
+ SFX_JDT4_AF,
+ SFX_JDT4_BA,
+ SFX_JDT4_BB,
+ SFX_JDT4_BC,
+ SFX_JDT5_BA,
+ SFX_JDT5_CA,
+ SFX_JDT5_CC,
+ SFX_JDT5_CD,
+ SFX_JDT5_CE,
+ SFX_JDT5_CG,
+ SFX_JDT5_CI,
+ SFX_JDT5_DA,
+ SFX_JDT5_EA,
+ SFX_JDT5_EB,
+ SFX_JDT5_EC,
+ SFX_JDT5_ED,
+ SFX_JDT5_EE,
+ SFX_JDT5_FA,
+ SFX_JDT5_FB,
+ SFX_JDT5_FC,
+ SFX_JDT5_GA,
+ SFX_JDT5_GB,
+ SFX_JDT6_AA,
+ SFX_JDT6_AB,
+ SFX_JDT6_AC,
+ SFX_JDT6_AE,
+ SFX_JDT6_AF,
+ SFX_JDT6_AG,
+ SFX_JDT6_AH,
+ SFX_JDT6_BA,
+ SFX_JDT6_BB,
+ SFX_JDT6_BC,
+ SFX_JDT6_BD,
+ SFX_JDT6_BE,
+ SFX_JDT6_BF,
+ SFX_JDT6_BG,
+ SFX_JDT6_CA,
+ SFX_JDT6_CB,
+ SFX_JDT6_DA,
+ SFX_JDT7_AA,
+ SFX_JDT7_AB,
+ SFX_JDT7_AC,
+ SFX_JDT7_AD,
+ SFX_JDT7_AE,
+ SFX_JDT7_AF,
+ SFX_JDT7_AG,
+ SFX_JDT7_BA,
+ SFX_JDT7_BB,
+ SFX_JDT7_BC,
+ SFX_JDT7_CA,
+ SFX_JDT7_CB,
+ SFX_JDT7_CC,
+ SFX_JDT7_CD,
+ SFX_JDT8_AA,
+ SFX_JDT8_AB,
+ SFX_JDT8_AC,
+ SFX_JDT8_AD,
+ SFX_JDT8_AE,
+ SFX_JDT8_AF,
+ SFX_JDT8_AG,
+ SFX_JDT8_AH,
+ SFX_JDT8_AI,
+ SFX_JDT8_BA,
+ SFX_JDT8_CA,
+ SFX_JDT8_CB,
+ SFX_JDT8_DA,
+ SFX_JDT8_DB,
+ SFX_JDT8_DC,
+ SFX_JDT8_DD,
+ SFX_JDT8_DE,
+ SFX_JDT8_DF,
+ SFX_JDT8_DG,
+ SFX_JDT8_EA,
+ SFX_JDT8_EB,
+ SFX_JDT8_EC,
+ SFX_JDT8_ED,
+ SFX_JDT8_EE,
+ SFX_JDT8_FA,
+ SFX_JDT8_FB,
+ SFX_JDT8_FC,
+ SFX_JDT8_FD,
+ SFX_JDT8_FE,
+ SFX_JDT8_FF,
+ SFX_JDT8_FG,
+ SFX_JDT8_FH,
+ SFX_JDT8_GA,
+ SFX_JDT8_HA,
+ SFX_JDT8_HB,
+ SFX_JDX_AA,
+ SFX_JDX_AB,
+ SFX_JDX_AC,
+ SFX_JD_CRASH_CAR_1,
+ SFX_JD_CRASH_CAR_2,
+ SFX_JD_CRASH_CAR_3,
+ SFX_JD_JACKED_CAR_1,
+ SFX_JD_JACKED_CAR_2,
+ SFX_JD_JACKED_CAR_3,
+ SFX_JD_SHOCKED_1,
+ SFX_JD_SHOCKED_2,
+ SFX_JD_SLPN,
+ SFX_LCN_AA,
+ SFX_LCN_AB,
+ SFX_LEAR,
+ SFX_LEON_CRASH_CAR_1,
+ SFX_LEON_CRASH_CAR_2,
+ SFX_LEON_CRASH_CAR_3,
+ SFX_LEON_CRASH_CAR_4,
+ SFX_LEON_CRASH_CAR_5,
+ SFX_LEON_DRIVER_BLOCKED_1,
+ SFX_LEON_DRIVER_BLOCKED_2,
+ SFX_LEON_DRIVER_BLOCKED_3,
+ SFX_LEON_DRIVER_BLOCKED_4,
+ SFX_LEON_JACKED_CAR_1,
+ SFX_LEON_JACKED_CAR_2,
+ SFX_LEON_JACKED_CAR_3,
+ SFX_LEON_SHOCKED_1,
+ SFX_LEON_SHOCKED_2,
+ SFX_LI_MAN1_BUMP_1,
+ SFX_LI_MAN1_BUMP_2,
+ SFX_LI_MAN1_BUMP_3,
+ SFX_LI_MAN1_CHAT_1,
+ SFX_LI_MAN1_CHAT_2,
+ SFX_LI_MAN1_CHAT_3,
+ SFX_LI_MAN1_CHAT_4,
+ SFX_LI_MAN1_CRASH_CAR_1,
+ SFX_LI_MAN1_CRASH_CAR_2,
+ SFX_LI_MAN1_DODGE_1,
+ SFX_LI_MAN1_DODGE_2,
+ SFX_LI_MAN1_DRIVER_BLOCKED_1,
+ SFX_LI_MAN1_DRIVER_BLOCKED_2,
+ SFX_LI_MAN1_FIGHT_1,
+ SFX_LI_MAN1_FIGHT_2,
+ SFX_LI_MAN1_FIGHT_3,
+ SFX_LI_MAN1_GUN_THREATENED_1,
+ SFX_LI_MAN1_GUN_THREATENED_2,
+ SFX_LI_MAN1_JACKED_CAR_1,
+ SFX_LI_MAN1_JACKED_CAR_2,
+ SFX_LI_MAN1_JACKED_CAR_3,
+ SFX_LI_MAN2_BUMP_1,
+ SFX_LI_MAN2_BUMP_2,
+ SFX_LI_MAN2_BUMP_3,
+ SFX_LI_MAN2_CHAT_1,
+ SFX_LI_MAN2_CHAT_2,
+ SFX_LI_MAN2_CHAT_3,
+ SFX_LI_MAN2_CHAT_4,
+ SFX_LI_MAN2_CRASH_CAR_1,
+ SFX_LI_MAN2_CRASH_CAR_2,
+ SFX_LI_MAN2_DODGE_1,
+ SFX_LI_MAN2_DODGE_2,
+ SFX_LI_MAN2_DRIVER_BLOCKED_1,
+ SFX_LI_MAN2_DRIVER_BLOCKED_2,
+ SFX_LI_MAN2_FIGHT_1,
+ SFX_LI_MAN2_FIGHT_2,
+ SFX_LI_MAN2_FIGHT_3,
+ SFX_LI_MAN2_GUN_THREATENED_1,
+ SFX_LI_MAN2_GUN_THREATENED_2,
+ SFX_LI_MAN2_JACKED_CAR_1,
+ SFX_LI_MAN2_JACKED_CAR_2,
+ SFX_LI_MAN2_JACKED_CAR_3,
+ SFX_LI_MAN2_SHOCKED_1,
+ SFX_LI_WOM1_BUMP_1,
+ SFX_LI_WOM1_BUMP_2,
+ SFX_LI_WOM1_BUMP_3,
+ SFX_LI_WOM1_CHAT_1,
+ SFX_LI_WOM1_CHAT_2,
+ SFX_LI_WOM1_CHAT_3,
+ SFX_LI_WOM1_CRASH_CAR_1,
+ SFX_LI_WOM1_CRASH_CAR_2,
+ SFX_LI_WOM1_DODGE_1,
+ SFX_LI_WOM1_DODGE_2,
+ SFX_LI_WOM1_DRIVER_BLOCKED_1,
+ SFX_LI_WOM1_DRIVER_BLOCKED_2,
+ SFX_LI_WOM1_FIGHT_1,
+ SFX_LI_WOM1_FIGHT_2,
+ SFX_LI_WOM1_FIGHT_3,
+ SFX_LI_WOM1_GUN_THREATENED_1,
+ SFX_LI_WOM1_GUN_THREATENED_2,
+ SFX_LI_WOM1_JACKED_CAR_1,
+ SFX_LI_WOM1_JACKED_CAR_2,
+ SFX_LI_WOM1_SHOCKED_1,
+ SFX_LI_WOM2_BUMP_1,
+ SFX_LI_WOM2_BUMP_2,
+ SFX_LI_WOM2_BUMP_3,
+ SFX_LI_WOM2_CHAT_1,
+ SFX_LI_WOM2_CHAT_2,
+ SFX_LI_WOM2_CHAT_3,
+ SFX_LI_WOM2_CHAT_4,
+ SFX_LI_WOM2_CRASH_CAR_1,
+ SFX_LI_WOM2_CRASH_CAR_2,
+ SFX_LI_WOM2_DODGE_1,
+ SFX_LI_WOM2_DODGE_2,
+ SFX_LI_WOM2_DRIVER_BLOCKED_1,
+ SFX_LI_WOM2_DRIVER_BLOCKED_2,
+ SFX_LI_WOM2_FIGHT_1,
+ SFX_LI_WOM2_FIGHT_2,
+ SFX_LI_WOM2_FIGHT_3,
+ SFX_LI_WOM2_GUN_THREATENED_1,
+ SFX_LI_WOM2_GUN_THREATENED_2,
+ SFX_LI_WOM2_JACKED_CAR_1,
+ SFX_LI_WOM2_JACKED_CAR_2,
+ SFX_LI_WOM2_JACKED_CAR_3,
+ SFX_LI_WOM2_SHOCKED_1,
+ SFX_M8B1AA,
+ SFX_M8B1AB,
+ SFX_MAC1_AA,
+ SFX_MAC1_AB,
+ SFX_MAC1_AC,
+ SFX_MAC1_AD,
+ SFX_MAC1_AE,
+ SFX_MAC1_AF,
+ SFX_MAC1_AG,
+ SFX_MAC1_AH,
+ SFX_MAC1_AI,
+ SFX_MAC1_AJ,
+ SFX_MAC1_AK,
+ SFX_MAC1_AL,
+ SFX_MAC1_AM,
+ SFX_MAC1_AN,
+ SFX_MAC1_AO,
+ SFX_MAC1_BA,
+ SFX_MAC1_BB,
+ SFX_MAC1_BC,
+ SFX_MAC1_BD,
+ SFX_MAC1_BE,
+ SFX_MAC1_BF,
+ SFX_MAC1_BG,
+ SFX_MAC1_CA,
+ SFX_MAC1_CB,
+ SFX_MAC1_DA,
+ SFX_MAC1_EA,
+ SFX_MAC1_FA,
+ SFX_MAC1_FB,
+ SFX_MAC1_GA,
+ SFX_MAC1_GB,
+ SFX_MAC1_HA,
+ SFX_MAC1_IA,
+ SFX_MAC1_IB,
+ SFX_MAC1_JA,
+ SFX_MAC1_JB,
+ SFX_MAC1_JC,
+ SFX_MAC2_AA,
+ SFX_MAC2_AB,
+ SFX_MAC2_AC,
+ SFX_MAC2_AD,
+ SFX_MAC2_AE,
+ SFX_MAC2_AF,
+ SFX_MAC2_AG,
+ SFX_MAC2_AH,
+ SFX_MAC2_AI,
+ SFX_MAC2_BA,
+ SFX_MAC2_BB,
+ SFX_MAC2_BC,
+ SFX_MAC3_AA,
+ SFX_MAC3_AB,
+ SFX_MAC3_AC,
+ SFX_MAC3_AD,
+ SFX_MAC3_AE,
+ SFX_MAC3_AF,
+ SFX_MAC3_AG,
+ SFX_MAC3_AH,
+ SFX_MAC3_AI,
+ SFX_MAC3_AJ,
+ SFX_MAC3_AK,
+ SFX_MAC3_AL,
+ SFX_MAC3_AM,
+ SFX_MAC3_AN,
+ SFX_MAC3_BA,
+ SFX_MAC4_AA,
+ SFX_MAC4_AB,
+ SFX_MAC4_AC,
+ SFX_MAC4_AD,
+ SFX_MAC4_AE,
+ SFX_MAC4_AF,
+ SFX_MAC4_AG,
+ SFX_MAC4_AH,
+ SFX_MAC4_AI,
+ SFX_MAC4_AJ,
+ SFX_MAC4_AK,
+ SFX_MAC4_AL,
+ SFX_MAC4_BA,
+ SFX_MAC4_BB,
+ SFX_MAC4_BC,
+ SFX_MAC4_BD,
+ SFX_MAC4_BE,
+ SFX_MAC4_BF,
+ SFX_MAC4_BG,
+ SFX_MAC4_BI,
+ SFX_MAC4_BJ,
+ SFX_MAC4_BL,
+ SFX_MAC4_BM,
+ SFX_MAC4_BO,
+ SFX_MAC4_BP,
+ SFX_MAC4_BQ,
+ SFX_MAC4_BR,
+ SFX_MAC4_BS,
+ SFX_MAC4_BT,
+ SFX_MAC4_BU,
+ SFX_MAC4_CA,
+ SFX_MAC4_CB,
+ SFX_MAC4_CC,
+ SFX_MAC4_CD,
+ SFX_MAC4_CE,
+ SFX_MAC4_CF,
+ SFX_MAC4_CG,
+ SFX_MAC4_CH,
+ SFX_MAC4_CI,
+ SFX_MAC4_CK,
+ SFX_MAC4_CM,
+ SFX_MAC4_CN,
+ SFX_MAC4_CO,
+ SFX_MAC4_CP,
+ SFX_MAC4_CQ,
+ SFX_MAC4_CR,
+ SFX_MAC4_CS,
+ SFX_MAC4_DA,
+ SFX_MAC4_DB,
+ SFX_MAC4_DC,
+ SFX_MAC4_DD,
+ SFX_MAC4_DE,
+ SFX_MAC4_DF,
+ SFX_MAC4_DG,
+ SFX_MAC4_DH,
+ SFX_MAC5_AA,
+ SFX_MAC5_AB,
+ SFX_MAC5_AC,
+ SFX_MAC5_AD,
+ SFX_MAC5_AE,
+ SFX_MAC5_AF,
+ SFX_MAC5_AG,
+ SFX_MAC5_AH,
+ SFX_MAC5_AI,
+ SFX_MAC5_AJ,
+ SFX_MAC5_AK,
+ SFX_MAC5_AL,
+ SFX_MAC5_AM,
+ SFX_MAC5_AN,
+ SFX_MALE01_BUMP_1,
+ SFX_MALE01_BUMP_2,
+ SFX_MALE01_BUMP_3,
+ SFX_MALE01_CHAT_1,
+ SFX_MALE01_CHAT_2,
+ SFX_MALE01_CHAT_3,
+ SFX_MALE01_CHAT_4,
+ SFX_MALE01_CRASH_CAR_1,
+ SFX_MALE01_CRASH_CAR_2,
+ SFX_MALE01_DRIVER_BLOCKED_1,
+ SFX_MALE01_DRIVER_BLOCKED_2,
+ SFX_MALE01_FIGHT_1,
+ SFX_MALE01_FIGHT_2,
+ SFX_MALE01_FIGHT_3,
+ SFX_MALE01_GUN_THREATENED_1,
+ SFX_MALE01_GUN_THREATENED_2,
+ SFX_MALE01_JACKED_CAR_1,
+ SFX_MALE01_JACKED_CAR_2,
+ SFX_MALE01_SHOCKED_1,
+ SFX_MALE02_BUMP_1,
+ SFX_MALE02_BUMP_2,
+ SFX_MALE02_BUMP_3,
+ SFX_MALE02_CHAT_1,
+ SFX_MALE02_CHAT_2,
+ SFX_MALE02_CHAT_3,
+ SFX_MALE02_CHAT_4,
+ SFX_MALE02_CRASH_CAR_1,
+ SFX_MALE02_CRASH_CAR_2,
+ SFX_MALE02_DODGE_1,
+ SFX_MALE02_DODGE_2,
+ SFX_MALE02_DRIVER_BLOCKED_1,
+ SFX_MALE02_DRIVER_BLOCKED_2,
+ SFX_MALE02_FIGHT_1,
+ SFX_MALE02_FIGHT_2,
+ SFX_MALE02_FIGHT_3,
+ SFX_MALE02_GUN_THREATENED_1,
+ SFX_MALE02_GUN_THREATENED_2,
+ SFX_MALE02_JACKED_CAR_1,
+ SFX_MALE02_JACKED_CAR_2,
+ SFX_MALE02_JACKED_CAR_3,
+ SFX_MALE02_SHOCKED_1,
+ SFX_MALE02_SPECIAL_CASE_1,
+ SFX_MALE02_SPECIAL_CASE_2,
+ SFX_MALE03_BUMP_1,
+ SFX_MALE03_BUMP_2,
+ SFX_MALE03_BUMP_3,
+ SFX_MALE03_CHAT_1,
+ SFX_MALE03_CHAT_2,
+ SFX_MALE03_CHAT_3,
+ SFX_MALE03_CRASH_CAR_1,
+ SFX_MALE03_CRASH_CAR_2,
+ SFX_MALE03_DODGE_1,
+ SFX_MALE03_DODGE_2,
+ SFX_MALE03_DRIVER_BLOCKED_1,
+ SFX_MALE03_DRIVER_BLOCKED_2,
+ SFX_MALE03_FIGHT_1,
+ SFX_MALE03_FIGHT_2,
+ SFX_MALE03_FIGHT_3,
+ SFX_MALE03_GUN_THREATENED_1,
+ SFX_MALE03_GUN_THREATENED_2,
+ SFX_MALE03_JACKED_CAR_1,
+ SFX_MALE03_JACKED_CAR_2,
+ SFX_MALE03_JACKED_CAR_3,
+ SFX_MALE03_SHOCKED_1,
+ SFX_MALE_DEATH_01,
+ SFX_MALE_DEATH_02,
+ SFX_MALE_DEATH_03,
+ SFX_MALE_DEATH_04,
+ SFX_MALE_DEATH_05,
+ SFX_MALE_DEATH_06,
+ SFX_MALE_DEATH_07,
+ SFX_MALE_DEATH_08,
+ SFX_MALE_DEATH_09,
+ SFX_MALE_DEATH_10,
+ SFX_MALE_DEATH_11,
+ SFX_MALE_DEATH_12,
+ SFX_MALE_DEATH_13,
+ SFX_MALE_DEATH_14,
+ SFX_MALE_DEATH_15,
+ SFX_MALE_DEATH_16,
+ SFX_MALE_DEATH_17,
+ SFX_MALE_DEATH_18,
+ SFX_MALE_DEATH_19,
+ SFX_MALE_DEATH_20,
+ SFX_MALE_DEATH_21,
+ SFX_MALE_DEATH_22,
+ SFX_MALE_DEATH_23,
+ SFX_MALE_DEATH_24,
+ SFX_MALE_DEATH_25,
+ SFX_MALE_DEATH_26,
+ SFX_MALE_DEATH_27,
+ SFX_MALE_DEATH_28,
+ SFX_MALE_PAIN_01,
+ SFX_MALE_PAIN_02,
+ SFX_MALE_PAIN_03,
+ SFX_MALE_PAIN_04,
+ SFX_MALE_PAIN_05,
+ SFX_MALE_PAIN_06,
+ SFX_MALE_PAIN_07,
+ SFX_MALE_PAIN_08,
+ SFX_MALE_PAIN_09,
+ SFX_MALE_PAIN_10,
+ SFX_MALE_PAIN_11,
+ SFX_MALE_PAIN_12,
+ SFX_MALE_PAIN_13,
+ SFX_MALE_PAIN_16,
+ SFX_MALE_PAIN_17,
+ SFX_MALE_PAIN_18,
+ SFX_MALE_PAIN_19,
+ SFX_MALE_PAIN_20,
+ SFX_MALE_PAIN_21,
+ SFX_MALE_PAIN_22,
+ SFX_MALE_PAIN_23,
+ SFX_MALE_PAIN_24,
+ SFX_MALE_PAIN_25,
+ SFX_MALE_PAIN_26,
+ SFX_MALE_PAIN_27,
+ SFX_MALE_PAIN_28,
+ SFX_MALE_PAIN_29,
+ SFX_MALE_PAIN_30,
+ SFX_MALE_PAIN_31,
+ SFX_MALE_PAIN_32,
+ SFX_MALE_PAIN_33,
+ SFX_MALE_PAIN_34,
+ SFX_MALE_PAIN_35,
+ SFX_MALE_PAIN_36,
+ SFX_MALE_PAIN_37,
+ SFX_MALE_PAIN_38,
+ SFX_MALE_PAIN_39,
+ SFX_MALE_PAIN_40,
+ SFX_MALE_PAIN_41,
+ SFX_MALE_PAIN_42,
+ SFX_MALE_PAIN_43,
+ SFX_MALE_PAIN_44,
+ SFX_MALE_PAIN_45,
+ SFX_MALE_PAIN_46,
+ SFX_MALE_PAIN_47,
+ SFX_MALE_PAIN_48,
+ SFX_MALE_PAIN_49,
+ SFX_MALE_PAIN_50,
+ SFX_MALE_PAIN_51,
+ SFX_MALE_PAIN_52,
+ SFX_MALE_PAIN_53,
+ SFX_MALE_PAIN_ON_FIRE_01,
+ SFX_MALE_PAIN_ON_FIRE_02,
+ SFX_MALE_PAIN_ON_FIRE_03,
+ SFX_MALE_PAIN_ON_FIRE_04,
+ SFX_MALE_PAIN_ON_FIRE_05,
+ SFX_MALE_PAIN_ON_FIRE_06,
+ SFX_MALE_PAIN_ON_FIRE_07,
+ SFX_MALE_PAIN_ON_FIRE_08,
+ SFX_MALE_PAIN_ON_FIRE_09,
+ SFX_MALE_PAIN_ON_FIRE_10,
+ SFX_MALE_PAIN_ON_FIRE_11,
+ SFX_MALE_PAIN_ON_FIRE_12,
+ SFX_MALE_PAIN_ON_FIRE_13,
+ SFX_MALE_PAIN_ON_FIRE_14,
+ SFX_MALE_PAIN_ON_FIRE_15,
+ SFX_MALE_PAIN_ON_FIRE_16,
+ SFX_MALE_PAIN_ON_FIRE_17,
+ SFX_MALE_PAIN_ON_FIRE_18,
+ SFX_MALE_PAIN_ON_FIRE_19,
+ SFX_MALE_PAIN_ON_FIRE_20,
+ SFX_MALE_PAIN_ON_FIRE_21,
+ SFX_MALE_PANIC_01,
+ SFX_MALE_PANIC_02,
+ SFX_MALE_PANIC_03,
+ SFX_MALE_PANIC_04,
+ SFX_MALE_PANIC_05,
+ SFX_MALE_PANIC_06,
+ SFX_MALE_PANIC_07,
+ SFX_MALE_PANIC_08,
+ SFX_MALE_PANIC_09,
+ SFX_MALE_PANIC_10,
+ SFX_MALE_PANIC_11,
+ SFX_MALE_PANIC_12,
+ SFX_MALE_PANIC_13,
+ SFX_MALE_PANIC_14,
+ SFX_MALE_PANIC_15,
+ SFX_MALE_PANIC_16,
+ SFX_MALE_PANIC_17,
+ SFX_MALE_PANIC_18,
+ SFX_MALE_PANIC_19,
+ SFX_MALE_PANIC_20,
+ SFX_MALE_PANIC_21,
+ SFX_MALE_PANIC_22,
+ SFX_MALE_PANIC_23,
+ SFX_MAR1_AA,
+ SFX_MAR1_AB,
+ SFX_MAR1_AC,
+ SFX_MAR1_AD,
+ SFX_MAR1_AE,
+ SFX_MAR1_BA,
+ SFX_MAR1_CA,
+ SFX_MAR1_DA,
+ SFX_MAR1_DB,
+ SFX_MAR1_EA,
+ SFX_MAR1_FA,
+ SFX_MAR1_FB,
+ SFX_MAR1_FC,
+ SFX_MAR1_FD,
+ SFX_MAR1_GA,
+ SFX_MAR1_GB,
+ SFX_MAR1_GC,
+ SFX_MAR1_HA,
+ SFX_MAR1_HB,
+ SFX_MAR1_HC,
+ SFX_MAR1_HD,
+ SFX_MAR1_IA,
+ SFX_MAR1_IB,
+ SFX_MAR1_IC,
+ SFX_MAR2_AA,
+ SFX_MAR2_AB,
+ SFX_MAR2_AC,
+ SFX_MAR2_AD,
+ SFX_MAR2_AE,
+ SFX_MAR2_AF,
+ SFX_MAR2_AG,
+ SFX_MAR2_AH,
+ SFX_MAR2_BA,
+ SFX_MAR2_BB,
+ SFX_MAR2_BC,
+ SFX_MAR2_CA,
+ SFX_MAR2_CB,
+ SFX_MAR2_CC,
+ SFX_MAR2_CD,
+ SFX_MAR2_CE,
+ SFX_MAR2_DA,
+ SFX_MAR2_EA,
+ SFX_MAR2_EB,
+ SFX_MAR2_EC,
+ SFX_MAR2_FA,
+ SFX_MAR2_FB,
+ SFX_MAR2_GA,
+ SFX_MAR2_GB,
+ SFX_MAR2_GC,
+ SFX_MAR2_GE,
+ SFX_MAR2_GF,
+ SFX_MAR2_GG,
+ SFX_MAR2_GH,
+ SFX_MAR2_HA,
+ SFX_MAR2_HB,
+ SFX_MAR2_HC,
+ SFX_MAR3_AA,
+ SFX_MAR3_AB,
+ SFX_MAR3_AC,
+ SFX_MAR3_AD,
+ SFX_MAR3_BA,
+ SFX_MAR3_BB,
+ SFX_MAR3_BC,
+ SFX_MAR3_BD,
+ SFX_MAR3_BE,
+ SFX_MAR3_BF,
+ SFX_MAR4_BA,
+ SFX_MAR4_BC,
+ SFX_MAR4_BD,
+ SFX_MAR4_BF,
+ SFX_MAR5_AA,
+ SFX_MAR5_AB,
+ SFX_MAR5_AC,
+ SFX_MAR5_AD,
+ SFX_MAR5_AE,
+ SFX_MAR5_BA,
+ SFX_MAR5_BB,
+ SFX_MAR5_CA,
+ SFX_MAR5_CB,
+ SFX_MAR5_CC,
+ SFX_MAR5_CD,
+ SFX_MAR5_CE,
+ SFX_MAR5_DA,
+ SFX_MAR5_DB,
+ SFX_MAR5_DC,
+ SFX_MAR5_EA,
+ SFX_MAR5_EB,
+ SFX_MAR5_EC,
+ SFX_MAR5_ED,
+ SFX_MAR5_FA,
+ SFX_MAR5_FB,
+ SFX_MAR5_FC,
+ SFX_MAR5_FD,
+ SFX_MAR5_FE,
+ SFX_MAR5_FF,
+ SFX_MARIA_CRASH_CAR_1,
+ SFX_MARIA_CRASH_CAR_2,
+ SFX_MARIA_CRASH_CAR_3,
+ SFX_MARIA_CRASH_CAR_4,
+ SFX_MARIA_DRIVER_BLOCKED_1,
+ SFX_MARIA_DRIVER_BLOCKED_2,
+ SFX_MARIA_JACKED_CAR_1,
+ SFX_MARIA_JACKED_CAR_2,
+ SFX_MARIA_JACKED_CAR_3,
+ SFX_MARIA_SHOCKED_1,
+ SFX_MARIA_SHOCKED_2,
+ SFX_MARX_AA,
+ SFX_MARX_AB,
+ SFX_MARX_AC,
+ SFX_MDON1AA,
+ SFX_MDON1AB,
+ SFX_MDON1AC,
+ SFX_MDON2AA,
+ SFX_MDON2AB,
+ SFX_MDON2AC,
+ SFX_MDON2AD,
+ SFX_MDON2AE,
+ SFX_MDON2AF,
+ SFX_MDON2AG,
+ SFX_MDON2AH,
+ SFX_MDON3AA,
+ SFX_MDON3AB,
+ SFX_MDON3AC,
+ SFX_MDON3AD,
+ SFX_MDON3AE,
+ SFX_MDON3AF,
+ SFX_MDON3AG,
+ SFX_MDON3AH,
+ SFX_MICKEY_BUMP_1,
+ SFX_MICKEY_BUMP_2,
+ SFX_MICKEY_BUMP_3,
+ SFX_MICKEY_BUMP_4,
+ SFX_MICKEY_CHAT_1,
+ SFX_MICKEY_CHAT_2,
+ SFX_MICKEY_CRASH_CAR_1,
+ SFX_MICKEY_CRASH_CAR_2,
+ SFX_MICKEY_DODGE_1,
+ SFX_MICKEY_DODGE_2,
+ SFX_MICKEY_DRIVER_BLOCKED_1,
+ SFX_MICKEY_DRIVER_BLOCKED_2,
+ SFX_MICKEY_FIGHT_1,
+ SFX_MICKEY_FIGHT_2,
+ SFX_MICKEY_GUN_THREATENED_1,
+ SFX_MICKEY_GUN_THREATENED_2,
+ SFX_MICKEY_JACKED_CAR_1,
+ SFX_MICKEY_JACKED_CAR_2,
+ SFX_MICKEY_JACKING_1,
+ SFX_MICKEY_JACKING_2,
+ SFX_MICKEY_SHOOT_1,
+ SFX_MICKEY_SHOOT_2,
+ SFX_MICKEY_SHOOT_3,
+ SFX_MICKEY_SHOOT_4,
+ SFX_MICKEY_SHOOT_5,
+ SFX_MJDT1AA,
+ SFX_MJDT1AB,
+ SFX_MJDT1AC,
+ SFX_MJDT1AE,
+ SFX_MMA1AA,
+ SFX_MMA1AB,
+ SFX_MMA1AC,
+ SFX_MMA1AD,
+ SFX_MMA1AE,
+ SFX_MMA2AA,
+ SFX_MMA2AB,
+ SFX_MMA2AC,
+ SFX_MMA2AD,
+ SFX_MMA2AE,
+ SFX_MMA2AF,
+ SFX_MMA2AG,
+ SFX_MMA2AH,
+ SFX_MMA2AI,
+ SFX_MMA2AJ,
+ SFX_MMAR1AA,
+ SFX_MMAR1AB,
+ SFX_MMAR1AC,
+ SFX_MMAR1AD,
+ SFX_MMCA1AA,
+ SFX_MMCA1AB,
+ SFX_MMCA1AC,
+ SFX_MMCA1AD,
+ SFX_MMCA2AA,
+ SFX_MMCA2AB,
+ SFX_MMCA2AC,
+ SFX_MMCA2AD,
+ SFX_MMCA2AE,
+ SFX_MMCA2AF,
+ SFX_MOD_MAN_BUMP_1,
+ SFX_MOD_MAN_BUMP_2,
+ SFX_MOD_MAN_BUMP_3,
+ SFX_MOD_MAN_CHAT_1,
+ SFX_MOD_MAN_CHAT_2,
+ SFX_MOD_MAN_CHAT_3,
+ SFX_MOD_MAN_CHAT_4,
+ SFX_MOD_MAN_CRASH_CAR_1,
+ SFX_MOD_MAN_CRASH_CAR_2,
+ SFX_MOD_MAN_DODGE_1,
+ SFX_MOD_MAN_DODGE_2,
+ SFX_MOD_MAN_DRIVER_BLOCKED_1,
+ SFX_MOD_MAN_DRIVER_BLOCKED_2,
+ SFX_MOD_MAN_FIGHT_1,
+ SFX_MOD_MAN_FIGHT_2,
+ SFX_MOD_MAN_FIGHT_3,
+ SFX_MOD_MAN_GUN_THREATENED_1,
+ SFX_MOD_MAN_GUN_THREATENED_2,
+ SFX_MOD_MAN_JACKED_CAR_1,
+ SFX_MOD_MAN_JACKED_CAR_2,
+ SFX_MOD_MAN_JACKED_CAR_3,
+ SFX_MOD_MAN_SHOCKED_1,
+ SFX_MOD_WOM_BUMP_1,
+ SFX_MOD_WOM_BUMP_2,
+ SFX_MOD_WOM_BUMP_3,
+ SFX_MOD_WOM_CHAT_1,
+ SFX_MOD_WOM_CHAT_2,
+ SFX_MOD_WOM_CHAT_3,
+ SFX_MOD_WOM_CHAT_4,
+ SFX_MOD_WOM_CRASH_CAR_1,
+ SFX_MOD_WOM_CRASH_CAR_2,
+ SFX_MOD_WOM_DODGE_1,
+ SFX_MOD_WOM_DODGE_2,
+ SFX_MOD_WOM_DRIVER_BLOCKED_1,
+ SFX_MOD_WOM_DRIVER_BLOCKED_2,
+ SFX_MOD_WOM_FIGHT_1,
+ SFX_MOD_WOM_FIGHT_2,
+ SFX_MOD_WOM_FIGHT_3,
+ SFX_MOD_WOM_GUN_THREATENED_1,
+ SFX_MOD_WOM_GUN_THREATENED_2,
+ SFX_MOD_WOM_JACKED_CAR_1,
+ SFX_MOD_WOM_JACKED_CAR_2,
+ SFX_MOD_WOM_JACKED_CAR_3,
+ SFX_MOD_WOM_SHOCKED_1,
+ SFX_MSA10AA,
+ SFX_MSA10AB,
+ SFX_MSA10AC,
+ SFX_MSA10AD,
+ SFX_MSA11AA,
+ SFX_MSA11AB,
+ SFX_MSA11AC,
+ SFX_MSA11AD,
+ SFX_MSA12AA,
+ SFX_MSA12AC,
+ SFX_MSA12AD,
+ SFX_MSA13AA,
+ SFX_MSA13AB,
+ SFX_MSA13AC,
+ SFX_MSA13AD,
+ SFX_MSA13AE,
+ SFX_MSA13AF,
+ SFX_MSA13AG,
+ SFX_MSA13AH,
+ SFX_MSA14AA,
+ SFX_MSA14AB,
+ SFX_MSA14AC,
+ SFX_MSA14AD,
+ SFX_MSAL5AA,
+ SFX_MSAL5AB,
+ SFX_MSAL6AA,
+ SFX_MSAL6AB,
+ SFX_MSAL6AC,
+ SFX_MSAL6AD,
+ SFX_MSAL7AA,
+ SFX_MSAL7AB,
+ SFX_MSAL7AC,
+ SFX_MSAL7AD,
+ SFX_MSAL7AE,
+ SFX_MSAL7AF,
+ SFX_MSAL7AG,
+ SFX_MSAL8AA,
+ SFX_MSAL8AB,
+ SFX_MSAL8AC,
+ SFX_MSAL8AD,
+ SFX_MSAL8AF,
+ SFX_MSAL8AG,
+ SFX_MSAL9AA,
+ SFX_MSAL9AB,
+ SFX_MSAL9AC,
+ SFX_MSAL9AD,
+ SFX_MSAL9AE,
+ SFX_MSAL9AF,
+ SFX_MTOS1AA,
+ SFX_MTOS1AB,
+ SFX_MTOS1AC,
+ SFX_MTOS1AD,
+ SFX_MTOS1AE,
+ SFX_MTOS1AF,
+ SFX_MTOS1AG,
+ SFX_MTOS2AA,
+ SFX_MTOS2AB,
+ SFX_MTOS2AC,
+ SFX_MTOS2AD,
+ SFX_MTOS2AE,
+ SFX_MTOS2AF,
+ SFX_MTOS2AG,
+ SFX_MVIC1AA,
+ SFX_MVIC1AB,
+ SFX_MVIC1AC,
+ SFX_MVIC1AD,
+ SFX_MVIC1AE,
+ SFX_MVIC1AF,
+ SFX_MVIC1AG,
+ SFX_MVIC1AH,
+ SFX_MVIC1AI,
+ SFX_MVIC1AJ,
+ SFX_MVIC1AK,
+ SFX_NEDS1AA,
+ SFX_NEDS1AB,
+ SFX_NEDS1AC,
+ SFX_NEDS1AD,
+ SFX_NEDS1AE,
+ SFX_NEDS1AF,
+ SFX_NEDS1AG,
+ SFX_NEDS1BA,
+ SFX_NEDS1BB,
+ SFX_NEDS1BC,
+ SFX_NEDS1BD,
+ SFX_NEDS1BE,
+ SFX_NEDS1BF,
+ SFX_NEDS2AA,
+ SFX_NEDS2AB,
+ SFX_NEDS2AC,
+ SFX_NEDS2AD,
+ SFX_NEDS2AE,
+ SFX_NEDS2AF,
+ SFX_NEDS2BA,
+ SFX_NEDS3AA,
+ SFX_NEDS3AB,
+ SFX_NEDS3AC,
+ SFX_NEDS3AD,
+ SFX_NEDS4AA,
+ SFX_NEDS4AB,
+ SFX_NEDS4AC,
+ SFX_NEDS4AD,
+ SFX_NEDS4AE,
+ SFX_NEDS4BA,
+ SFX_NEDS4BB,
+ SFX_NEDS4BC,
+ SFX_NEDS4BD,
+ SFX_NEDS4BE,
+ SFX_NEDS4BF,
+ SFX_NEDS4CA,
+ SFX_NOOD_AA,
+ SFX_NOOD_AB,
+ SFX_NOOD_AC,
+ SFX_NOOD_AD,
+ SFX_NOOD_AE,
+ SFX_NOOD_AF,
+ SFX_NOOD_AG,
+ SFX_NOOD_AH,
+ SFX_NOOD_AI,
+ SFX_NOOD_AJ,
+ SFX_NOOD_AK,
+ SFX_NOOD_AL,
+ SFX_NOOD_AM,
+ SFX_NOOD_AN,
+ SFX_NOOD_AO,
+ SFX_NOOD_AP,
+ SFX_NOOD_AQ,
+ SFX_NOOD_AR,
+ SFX_NOOD_AS,
+ SFX_NOOD_AT,
+ SFX_PBCHAT1,
+ SFX_PBCHAT10,
+ SFX_PBCHAT11,
+ SFX_PBCHAT12,
+ SFX_PBCHAT13,
+ SFX_PBCHAT14,
+ SFX_PBCHAT15,
+ SFX_PBCHAT16,
+ SFX_PBCHAT17,
+ SFX_PBCHAT18,
+ SFX_PBCHAT19,
+ SFX_PBCHAT2,
+ SFX_PBCHAT20,
+ SFX_PBCHAT21,
+ SFX_PBCHAT22,
+ SFX_PBCHAT23,
+ SFX_PBCHAT24,
+ SFX_PBCHAT25,
+ SFX_PBCHAT26,
+ SFX_PBCHAT27,
+ SFX_PBCHAT28,
+ SFX_PBCHAT29,
+ SFX_PBCHAT3,
+ SFX_PBCHAT4,
+ SFX_PBCHAT5,
+ SFX_PBCHAT6,
+ SFX_PBCHAT7,
+ SFX_PBCHAT8,
+ SFX_PBCHAT9,
+ SFX_PHCHAT1,
+ SFX_PHCHAT10,
+ SFX_PHCHAT11,
+ SFX_PHCHAT12,
+ SFX_PHCHAT13,
+ SFX_PHCHAT14,
+ SFX_PHCHAT15,
+ SFX_PHCHAT16,
+ SFX_PHCHAT17,
+ SFX_PHCHAT18,
+ SFX_PHCHAT19,
+ SFX_PHCHAT2,
+ SFX_PHCHAT20,
+ SFX_PHCHAT21,
+ SFX_PHCHAT22,
+ SFX_PHCHAT23,
+ SFX_PHCHAT24,
+ SFX_PHCHAT25,
+ SFX_PHCHAT26,
+ SFX_PHCHAT27,
+ SFX_PHCHAT28,
+ SFX_PHCHAT29,
+ SFX_PHCHAT3,
+ SFX_PHCHAT4,
+ SFX_PHCHAT5,
+ SFX_PHCHAT6,
+ SFX_PHCHAT7,
+ SFX_PHCHAT8,
+ SFX_PHCHAT9,
+ SFX_PIMP_BUMP_1,
+ SFX_PIMP_BUMP_2,
+ SFX_PIMP_BUMP_3,
+ SFX_PIMP_CHAT_1,
+ SFX_PIMP_CHAT_2,
+ SFX_PIMP_CHAT_3,
+ SFX_PIMP_CHAT_4,
+ SFX_PIMP_CRASH_CAR_1,
+ SFX_PIMP_CRASH_CAR_2,
+ SFX_PIMP_DODGE_1,
+ SFX_PIMP_DODGE_2,
+ SFX_PIMP_DRIVER_BLOCKED_1,
+ SFX_PIMP_DRIVER_BLOCKED_2,
+ SFX_PIMP_FIGHT_1,
+ SFX_PIMP_FIGHT_2,
+ SFX_PIMP_FIGHT_3,
+ SFX_PIMP_GUN_THREATENED_1,
+ SFX_PIMP_GUN_THREATENED_2,
+ SFX_PIMP_JACKED_CAR_1,
+ SFX_PIMP_JACKED_CAR_2,
+ SFX_PIMP_JACKED_CAR_3,
+ SFX_PIMP_SHOCKED_1,
+ SFX_PIMP_SPECIAL_CASE_1,
+ SFX_PIMP_SPECIAL_CASE_2,
+ SFX_PIMP_SPECIAL_CASE_3,
+ SFX_PIZZ_AA,
+ SFX_PIZZ_AB,
+ SFX_PIZZ_AC,
+ SFX_PIZZ_AD,
+ SFX_PIZZ_AE,
+ SFX_PIZZ_AF,
+ SFX_PIZZ_AG,
+ SFX_PIZZ_AH,
+ SFX_PIZZ_AI,
+ SFX_PIZZ_AJ,
+ SFX_PIZZ_AK,
+ SFX_PIZZ_AL,
+ SFX_PIZZ_AM,
+ SFX_PIZZ_AN,
+ SFX_PIZZ_AO,
+ SFX_PIZZ_AP,
+ SFX_PIZZ_AQ,
+ SFX_PIZZ_AR,
+ SFX_PIZZ_AS,
+ SFX_PIZZ_AT,
+ SFX_PROSTITUTE2_BUMP_1,
+ SFX_PROSTITUTE2_BUMP_2,
+ SFX_PROSTITUTE2_BUMP_3,
+ SFX_PROSTITUTE2_CHAT_1,
+ SFX_PROSTITUTE2_CHAT_2,
+ SFX_PROSTITUTE2_CHAT_3,
+ SFX_PROSTITUTE2_CHAT_4,
+ SFX_PROSTITUTE2_CRASH_CAR_1,
+ SFX_PROSTITUTE2_CRASH_CAR_2,
+ SFX_PROSTITUTE2_DODGE_1,
+ SFX_PROSTITUTE2_DODGE_2,
+ SFX_PROSTITUTE2_DRIVER_BLOCKED_1,
+ SFX_PROSTITUTE2_DRIVER_BLOCKED_2,
+ SFX_PROSTITUTE2_FIGHT_1,
+ SFX_PROSTITUTE2_FIGHT_2,
+ SFX_PROSTITUTE2_FIGHT_3,
+ SFX_PROSTITUTE2_GUN_THREATENED_1,
+ SFX_PROSTITUTE2_GUN_THREATENED_2,
+ SFX_PROSTITUTE2_JACKED_CAR_1,
+ SFX_PROSTITUTE2_JACKED_CAR_2,
+ SFX_PROSTITUTE2_JACKED_CAR_3,
+ SFX_PROSTITUTE2_SPECIAL_CASE_1,
+ SFX_PROSTITUTE2_SPECIAL_CASE_2,
+ SFX_PROSTITUTE2_SPECIAL_CASE_3,
+ SFX_PROSTITUTE_BUMP_1,
+ SFX_PROSTITUTE_BUMP_2,
+ SFX_PROSTITUTE_BUMP_3,
+ SFX_PROSTITUTE_CHAT_1,
+ SFX_PROSTITUTE_CHAT_2,
+ SFX_PROSTITUTE_CHAT_3,
+ SFX_PROSTITUTE_CHAT_4,
+ SFX_PROSTITUTE_CRASH_CAR_1,
+ SFX_PROSTITUTE_CRASH_CAR_2,
+ SFX_PROSTITUTE_DODGE_1,
+ SFX_PROSTITUTE_DODGE_2,
+ SFX_PROSTITUTE_DRIVER_BLOCKED_1,
+ SFX_PROSTITUTE_DRIVER_BLOCKED_2,
+ SFX_PROSTITUTE_FIGHT_1,
+ SFX_PROSTITUTE_FIGHT_2,
+ SFX_PROSTITUTE_GUN_THREATENED_1,
+ SFX_PROSTITUTE_GUN_THREATENED_2,
+ SFX_PROSTITUTE_JACKED_CAR_1,
+ SFX_PROSTITUTE_JACKED_CAR_2,
+ SFX_PROSTITUTE_JACKED_CAR_3,
+ SFX_PROSTITUTE_JACKED_CAR_4,
+ SFX_PROSTITUTE_SHOCKED_1,
+ SFX_PROSTITUTE_SHOCKED_2,
+ SFX_PROSTITUTE_SHOCKED_3,
+ SFX_P_MAN1_BUMP_1,
+ SFX_P_MAN1_BUMP_2,
+ SFX_P_MAN1_BUMP_3,
+ SFX_P_MAN1_CHAT_1,
+ SFX_P_MAN1_CHAT_2,
+ SFX_P_MAN1_CHAT_3,
+ SFX_P_MAN1_CRASH_CAR_1,
+ SFX_P_MAN1_CRASH_CAR_2,
+ SFX_P_MAN1_DODGE_1,
+ SFX_P_MAN1_DODGE_2,
+ SFX_P_MAN1_DRIVER_BLOCKED_1,
+ SFX_P_MAN1_DRIVER_BLOCKED_2,
+ SFX_P_MAN1_FIGHT_1,
+ SFX_P_MAN1_FIGHT_2,
+ SFX_P_MAN1_FIGHT_3,
+ SFX_P_MAN1_GUN_THREATENED_1,
+ SFX_P_MAN1_GUN_THREATENED_2,
+ SFX_P_MAN1_JACKED_CAR_1,
+ SFX_P_MAN1_JACKED_CAR_2,
+ SFX_P_MAN1_JACKED_CAR_3,
+ SFX_P_MAN2_BUMP_1,
+ SFX_P_MAN2_BUMP_2,
+ SFX_P_MAN2_BUMP_3,
+ SFX_P_MAN2_CHAT_1,
+ SFX_P_MAN2_CHAT_2,
+ SFX_P_MAN2_CHAT_3,
+ SFX_P_MAN2_CHAT_4,
+ SFX_P_MAN2_CRASH_CAR_1,
+ SFX_P_MAN2_CRASH_CAR_2,
+ SFX_P_MAN2_DODGE_1,
+ SFX_P_MAN2_DODGE_2,
+ SFX_P_MAN2_DRIVER_BLOCKED_1,
+ SFX_P_MAN2_DRIVER_BLOCKED_2,
+ SFX_P_MAN2_FIGHT_1,
+ SFX_P_MAN2_FIGHT_2,
+ SFX_P_MAN2_FIGHT_3,
+ SFX_P_MAN2_FIGHT_4,
+ SFX_P_MAN2_GUN_THREATENED_1,
+ SFX_P_MAN2_GUN_THREATENED_2,
+ SFX_P_MAN2_JACKED_CAR_1,
+ SFX_P_MAN2_JACKED_CAR_2,
+ SFX_P_MAN2_JACKED_CAR_3,
+ SFX_P_MAN2_SHOCKED_1,
+ SFX_P_WOM1_BUMP_1,
+ SFX_P_WOM1_BUMP_2,
+ SFX_P_WOM1_BUMP_3,
+ SFX_P_WOM1_CHAT_1,
+ SFX_P_WOM1_CHAT_2,
+ SFX_P_WOM1_CHAT_3,
+ SFX_P_WOM1_CHAT_4,
+ SFX_P_WOM1_CRASH_CAR_1,
+ SFX_P_WOM1_CRASH_CAR_2,
+ SFX_P_WOM1_DODGE_1,
+ SFX_P_WOM1_DODGE_2,
+ SFX_P_WOM1_DRIVER_BLOCKED_1,
+ SFX_P_WOM1_DRIVER_BLOCKED_2,
+ SFX_P_WOM1_FIGHT_1,
+ SFX_P_WOM1_FIGHT_2,
+ SFX_P_WOM1_FIGHT_3,
+ SFX_P_WOM1_GUN_THREATENED_1,
+ SFX_P_WOM1_GUN_THREATENED_2,
+ SFX_P_WOM1_JACKED_CAR_1,
+ SFX_P_WOM1_JACKED_CAR_2,
+ SFX_P_WOM1_JACKED_CAR_3,
+ SFX_P_WOM1_SHOCKED_1,
+ SFX_P_WOM2_BUMP_1,
+ SFX_P_WOM2_BUMP_2,
+ SFX_P_WOM2_BUMP_3,
+ SFX_P_WOM2_CHAT_1,
+ SFX_P_WOM2_CHAT_2,
+ SFX_P_WOM2_CHAT_3,
+ SFX_P_WOM2_CHAT_4,
+ SFX_P_WOM2_CRASH_CAR_1,
+ SFX_P_WOM2_CRASH_CAR_2,
+ SFX_P_WOM2_DODGE_1,
+ SFX_P_WOM2_DODGE_2,
+ SFX_P_WOM2_DRIVER_BLOCKED_1,
+ SFX_P_WOM2_DRIVER_BLOCKED_2,
+ SFX_P_WOM2_FIGHT_1,
+ SFX_P_WOM2_FIGHT_2,
+ SFX_P_WOM2_FIGHT_3,
+ SFX_P_WOM2_GUN_THREATENED_1,
+ SFX_P_WOM2_GUN_THREATENED_2,
+ SFX_P_WOM2_JACKED_CAR_1,
+ SFX_P_WOM2_JACKED_CAR_2,
+ SFX_P_WOM2_SHOCKED_1,
+ SFX_RAC1_AA,
+ SFX_RAC1_AB,
+ SFX_RAC1_AC,
+ SFX_RAC1_AD,
+ SFX_RAC1_AE,
+ SFX_RAC1_AF,
+ SFX_RAC1_AG,
+ SFX_RAC2_AA,
+ SFX_RAC2_AB,
+ SFX_RAC2_AC,
+ SFX_RAC2_AD,
+ SFX_RAC2_AE,
+ SFX_RAC2_AF,
+ SFX_RAC3_AB,
+ SFX_RAC3_AC,
+ SFX_RAC3_AD,
+ SFX_RAC3_AE,
+ SFX_RAC3_AF,
+ SFX_RAC3_AG,
+ SFX_RAYS1AA,
+ SFX_RAYS1AB,
+ SFX_RAYS1AC,
+ SFX_RAYS1BA,
+ SFX_RAYS1BB,
+ SFX_RAYS1CA,
+ SFX_RAYS1CB,
+ SFX_RAYS1CC,
+ SFX_RAYS1CD,
+ SFX_RAYS1CE,
+ SFX_RAYS1CF,
+ SFX_RAYS1DA,
+ SFX_RAYS1DB,
+ SFX_RAYS1DC,
+ SFX_RAYS2AA,
+ SFX_RAYS2AB,
+ SFX_RAYS2AD,
+ SFX_RAYS2AE,
+ SFX_RAYS2AF,
+ SFX_RAYS2AG,
+ SFX_RAYS2AH,
+ SFX_RAYS2AI,
+ SFX_RAYS2BA,
+ SFX_RAYS2BB,
+ SFX_RAYS2CA,
+ SFX_RAYS2CB,
+ SFX_RAYS2DA,
+ SFX_RAYS2DB,
+ SFX_RAYS2EA,
+ SFX_RAYS2EB,
+ SFX_RAYS4AA,
+ SFX_RAYS4AB,
+ SFX_RAYS4AC,
+ SFX_RAYS4AD,
+ SFX_RAYS4AE,
+ SFX_RAYS4AF,
+ SFX_RAYS4BA,
+ SFX_RAYS4BB,
+ SFX_RAYS4BC,
+ SFX_RAYS4BD,
+ SFX_RAYS4BE,
+ SFX_RAYS4BF,
+ SFX_RAYS4BG,
+ SFX_RAYS5AA,
+ SFX_RAYS5AB,
+ SFX_RAYS5AC,
+ SFX_RAYS5AD,
+ SFX_RAYS5AE,
+ SFX_RAYS5AF,
+ SFX_RAYS5AG,
+ SFX_RAYS5AH,
+ SFX_RAYS5AI,
+ SFX_RAYS5BA,
+ SFX_RAYS5BB,
+ SFX_RMN_AA,
+ SFX_RMN_AB,
+ SFX_RMN_AC,
+ SFX_RMN_AD,
+ SFX_RMN_AE,
+ SFX_RMN_AF,
+ SFX_RMN_AG,
+ SFX_RMN_AH,
+ SFX_RMN_AI,
+ SFX_RMN_AJ,
+ SFX_RMN_AK,
+ SFX_RUNPAST,
+ SFX_SAL1_AA,
+ SFX_SAL1_AB,
+ SFX_SAL1_AC,
+ SFX_SAL1_AE,
+ SFX_SAL1_BA,
+ SFX_SAL1_BB,
+ SFX_SAL1_BC,
+ SFX_SAL1_BD,
+ SFX_SAL2_AA,
+ SFX_SAL2_AB,
+ SFX_SAL2_AC,
+ SFX_SAL2_AD,
+ SFX_SAL2_AF,
+ SFX_SAL2_AG,
+ SFX_SAL2_BA,
+ SFX_SAL2_BB,
+ SFX_SAL2_BC,
+ SFX_SAL2_BD,
+ SFX_SAL2_CA,
+ SFX_SAL2_CB,
+ SFX_SAL2_CC,
+ SFX_SAL2_CD,
+ SFX_SAL2_CE,
+ SFX_SAL2_CF,
+ SFX_SAL2_CG,
+ SFX_SAL2_CH,
+ SFX_SAL2_CI,
+ SFX_SAL2_CJ,
+ SFX_SAL2_CK,
+ SFX_SAL2_CL,
+ SFX_SAL2_CM,
+ SFX_SAL2_CN,
+ SFX_SAL2_CO,
+ SFX_SAL2_CP,
+ SFX_SAL2_CQ,
+ SFX_SAL2_CR,
+ SFX_SAL2_CS,
+ SFX_SAL2_CT,
+ SFX_SAL2_CU,
+ SFX_SAL2_CV,
+ SFX_SAL2_DA,
+ SFX_SAL2_DB,
+ SFX_SAL2_DC,
+ SFX_SAL2_DD,
+ SFX_SAL2_DE,
+ SFX_SAL2_EA,
+ SFX_SAL3_AA,
+ SFX_SAL3_AD,
+ SFX_SAL3_AE,
+ SFX_SAL3_AF,
+ SFX_SAL3_AG,
+ SFX_SAL3_AI,
+ SFX_SAL3_BA,
+ SFX_SAL3_BB,
+ SFX_SAL3_CA,
+ SFX_SAL3_CB,
+ SFX_SAL3_DA,
+ SFX_SAL4_AA,
+ SFX_SAL4_AB,
+ SFX_SAL4_AC,
+ SFX_SAL4_AD,
+ SFX_SAL4_AE,
+ SFX_SAL4_AF,
+ SFX_SAL4_AH,
+ SFX_SAL4_AI,
+ SFX_SAL4_AJ,
+ SFX_SAL4_BA,
+ SFX_SAL4_CA,
+ SFX_SAL4_CB,
+ SFX_SAL4_CC,
+ SFX_SAL4_CD,
+ SFX_SAL4_CE,
+ SFX_SAL4_CF,
+ SFX_SAL4_CG,
+ SFX_SAL4_CH,
+ SFX_SAL4_CI,
+ SFX_SAL4_CJ,
+ SFX_SAL4_CK,
+ SFX_SAL4_CL,
+ SFX_SAL4_CM,
+ SFX_SAL4_CN,
+ SFX_SAL4_CO,
+ SFX_SAL4_CP,
+ SFX_SAL4_CQ,
+ SFX_SAL4_DA,
+ SFX_SAL4_EA,
+ SFX_SAL5_AA,
+ SFX_SAL5_AB,
+ SFX_SAL5_AD,
+ SFX_SAL5_AE,
+ SFX_SAL5_AF,
+ SFX_SAL5_AG,
+ SFX_SAL5_AH,
+ SFX_SAL5_AI,
+ SFX_SAL5_AJ,
+ SFX_SAL6_AA,
+ SFX_SAL6_AB,
+ SFX_SAL6_AC,
+ SFX_SAL6_AE,
+ SFX_SAL6_AF,
+ SFX_SAL6_AG,
+ SFX_SAL6_AH,
+ SFX_SAL6_AI,
+ SFX_SAL6_AJ,
+ SFX_SAL6_BA,
+ SFX_SAL6_BB,
+ SFX_SAL6_BC,
+ SFX_SAL6_BD,
+ SFX_SAL6_BE,
+ SFX_SAL6_BF,
+ SFX_SAL6_BH,
+ SFX_SAL6_BJ,
+ SFX_SAL6_BK,
+ SFX_SAL6_CA,
+ SFX_SAL6_CB,
+ SFX_SAL6_CC,
+ SFX_SAL6_CD,
+ SFX_SAL7_AA,
+ SFX_SAL7_AB,
+ SFX_SAL7_AC,
+ SFX_SAL7_AD,
+ SFX_SAL7_AE,
+ SFX_SAL7_AF,
+ SFX_SAL7_AG,
+ SFX_SAL7_AI,
+ SFX_SAL7_AJ,
+ SFX_SAL7_AK,
+ SFX_SAL7_BA,
+ SFX_SAL7_BB,
+ SFX_SAL7_BC,
+ SFX_SAL7_BD,
+ SFX_SAL7_BE,
+ SFX_SAL7_BF,
+ SFX_SAL7_BG,
+ SFX_SAL7_BH,
+ SFX_SAL7_CA,
+ SFX_SAL7_CB,
+ SFX_SAL7_CC,
+ SFX_SAL7_CD,
+ SFX_SAL8_AA,
+ SFX_SAL8_AB,
+ SFX_SAL8_AC,
+ SFX_SAL8_BA,
+ SFX_SAL8_BC,
+ SFX_SAL8_BD,
+ SFX_SAL8_BE,
+ SFX_SAL8_BF,
+ SFX_SAL8_CA,
+ SFX_SAL8_CC,
+ SFX_SAL8_DA,
+ SFX_SAL8_DB,
+ SFX_SAL8_DC,
+ SFX_SAL8_EA,
+ SFX_SAL8_EC,
+ SFX_SAL8_ED,
+ SFX_SAL8_EE,
+ SFX_SAL8_FA,
+ SFX_SAL8_GA,
+ SFX_SAL8_GB,
+ SFX_SAL8_HA,
+ SFX_SAL8_HB,
+ SFX_SAL8_HC,
+ SFX_SAL8_HD,
+ SFX_SAL8_HE,
+ SFX_SAL8_HF,
+ SFX_SAL8_HG,
+ SFX_SAL8_HH,
+ SFX_SALH1AA,
+ SFX_SALH1AB,
+ SFX_SALH1BA,
+ SFX_SALH1BB,
+ SFX_SALH1CA,
+ SFX_SALH1CB,
+ SFX_SALH1DA,
+ SFX_SALH1EA,
+ SFX_SALH1EB,
+ SFX_SALH1FB,
+ SFX_SALH1FC,
+ SFX_SALH1FG,
+ SFX_SALH1GA,
+ SFX_SALH1GB,
+ SFX_SALH1HA,
+ SFX_SALH1HB,
+ SFX_SALH2AA,
+ SFX_SALH2AB,
+ SFX_SALH2AC,
+ SFX_SALH2AD,
+ SFX_SALH2AE,
+ SFX_SALH2AF,
+ SFX_SALH2AG,
+ SFX_SALH2AH,
+ SFX_SALH2BA,
+ SFX_SALH2BB,
+ SFX_SALH2BC,
+ SFX_SALH2BD,
+ SFX_SALH2BE,
+ SFX_SALH2BF,
+ SFX_SALH2BG,
+ SFX_SALH2BH,
+ SFX_SALH2BI,
+ SFX_SALH2CA,
+ SFX_SALH3AA,
+ SFX_SALH3AB,
+ SFX_SALH3AC,
+ SFX_SALH3AD,
+ SFX_SALH3AE,
+ SFX_SALH3AF,
+ SFX_SALH3AG,
+ SFX_SALH3AH,
+ SFX_SALH3AI,
+ SFX_SALH3AJ,
+ SFX_SALH3AK,
+ SFX_SALH3BA,
+ SFX_SALH3BB,
+ SFX_SALH3CA,
+ SFX_SALH3CC,
+ SFX_SALH3CD,
+ SFX_SALH4AA,
+ SFX_SALH4AB,
+ SFX_SALH4AC,
+ SFX_SALH4AD,
+ SFX_SALH4AE,
+ SFX_SALH4AF,
+ SFX_SALH4AG,
+ SFX_SALH4AH,
+ SFX_SALH4AI,
+ SFX_SALH4AJ,
+ SFX_SALH4BA,
+ SFX_SALH4BB,
+ SFX_SALH4BC,
+ SFX_SALH4CA,
+ SFX_SALH4CB,
+ SFX_SALH5CA,
+ SFX_SALH5CB,
+ SFX_SALH5CC,
+ SFX_SALH5DA,
+ SFX_SALH5DB,
+ SFX_SALH5EA,
+ SFX_SALH5EB,
+ SFX_SALH5FA,
+ SFX_SALH5GA,
+ SFX_SALH5GB,
+ SFX_SALH5GC,
+ SFX_SALH5HA,
+ SFX_SALH5IA,
+ SFX_SALH5IB,
+ SFX_SALH5JA,
+ SFX_SALH5KA,
+ SFX_SALH5KB,
+ SFX_SALH5LA,
+ SFX_SALH5LB,
+ SFX_SALH5MA,
+ SFX_SALH5MB,
+ SFX_SALH5MC,
+ SFX_SALH5NA,
+ SFX_SALH5OA,
+ SFX_SALH5OB,
+ SFX_SALH5OC,
+ SFX_SALH5OD,
+ SFX_SALH5OE,
+ SFX_SALH5OF,
+ SFX_SALH5OG,
+ SFX_SALH5OH,
+ SFX_SALH5OI,
+ SFX_SALH5OJ,
+ SFX_SALH5OK,
+ SFX_SALS1AA,
+ SFX_SALS1AB,
+ SFX_SALS1AC,
+ SFX_SALS1AD,
+ SFX_SALS1AE,
+ SFX_SALS1AF,
+ SFX_SALS1AG,
+ SFX_SALS1AH,
+ SFX_SALS1AI,
+ SFX_SALS1BA,
+ SFX_SALS1BB,
+ SFX_SALS1BC,
+ SFX_SALS1BD,
+ SFX_SALS2AA,
+ SFX_SALS2AB,
+ SFX_SALS2AC,
+ SFX_SALS2AD,
+ SFX_SALS2BA,
+ SFX_SALS2BB,
+ SFX_SALS2BC,
+ SFX_SALS2BD,
+ SFX_SALS2BE,
+ SFX_SALS2BF,
+ SFX_SALS2CA,
+ SFX_SALS2CB,
+ SFX_SALS2CC,
+ SFX_SALS2CD,
+ SFX_SALS2CE,
+ SFX_SALS3AA,
+ SFX_SALS3AB,
+ SFX_SALS3AC,
+ SFX_SALS3BA,
+ SFX_SALS3BB,
+ SFX_SALS3BC,
+ SFX_SALS3BD,
+ SFX_SALS3CA,
+ SFX_SALS3CB,
+ SFX_SALS3CC,
+ SFX_SALS3CD,
+ SFX_SALS3CE,
+ SFX_SALS3CF,
+ SFX_SALS3CG,
+ SFX_SALS3DA,
+ SFX_SALS3DB,
+ SFX_SALS3DC,
+ SFX_SALS3DD,
+ SFX_SALS3DE,
+ SFX_SALS3DF,
+ SFX_SALS3DG,
+ SFX_SALS3DH,
+ SFX_SALS3DI,
+ SFX_SALS4AA,
+ SFX_SALS4AB,
+ SFX_SALS4AC,
+ SFX_SALS4AD,
+ SFX_SALS4AE,
+ SFX_SALS4AF,
+ SFX_SALS4BA,
+ SFX_SALS4BB,
+ SFX_SALS4BC,
+ SFX_SALS4BD,
+ SFX_SALS4BE,
+ SFX_SALS4BF,
+ SFX_SALS4BG,
+ SFX_SALS4BH,
+ SFX_SALS5AA,
+ SFX_SALS5AB,
+ SFX_SALS5AC,
+ SFX_SALS5AD,
+ SFX_SALS5AE,
+ SFX_SALS5AF,
+ SFX_SALS5BA,
+ SFX_SALS5BB,
+ SFX_SALS5BC,
+ SFX_SALS5BD,
+ SFX_SALS5BE,
+ SFX_SALS5BF,
+ SFX_SALS5BG,
+ SFX_SALS5CA,
+ SFX_SALS5CB,
+ SFX_SALS5CC,
+ SFX_SALS5CD,
+ SFX_SALS5CE,
+ SFX_SALS5CF,
+ SFX_SALS5CG,
+ SFX_SALS6AA,
+ SFX_SALS6AB,
+ SFX_SALS6AD,
+ SFX_SALS6AE,
+ SFX_SALS6AF,
+ SFX_SALS6AG,
+ SFX_SALS6AH,
+ SFX_SALVATORE_CRASH_CAR_1,
+ SFX_SALVATORE_CRASH_CAR_2,
+ SFX_SALVATORE_CRASH_CAR_3,
+ SFX_SALVATORE_CRASH_CAR_4,
+ SFX_SALVATORE_DRIVER_BLOCKED_1,
+ SFX_SALVATORE_DRIVER_BLOCKED_2,
+ SFX_SALVATORE_DRIVER_BLOCKED_3,
+ SFX_SALVATORE_JACKED_CAR_1,
+ SFX_SALVATORE_JACKED_CAR_2,
+ SFX_SALVATORE_SHOCKED_1,
+ SFX_SALVATORE_SHOCKED_2,
+ SFX_SALX_AA,
+ SFX_SALX_AB,
+ SFX_SALX_AC,
+ SFX_SALX_AD,
+ SFX_SALX_AE,
+ SFX_SALX_AF,
+ SFX_SALX_AG,
+ SFX_SALX_AH,
+ SFX_SALX_AI,
+ SFX_SALX_AK,
+ SFX_SALX_AL,
+ SFX_SALX_AM,
+ SFX_SALX_AN,
+ SFX_SALX_AO,
+ SFX_SALX_AP,
+ SFX_SALX_AQ,
+ SFX_SALX_AR,
+ SFX_SALX_AS,
+ SFX_SCUM_MAN_BUMP_1,
+ SFX_SCUM_MAN_BUMP_2,
+ SFX_SCUM_MAN_BUMP_3,
+ SFX_SCUM_MAN_CHAT_1,
+ SFX_SCUM_MAN_CHAT_2,
+ SFX_SCUM_MAN_CHAT_3,
+ SFX_SCUM_MAN_CHAT_4,
+ SFX_SCUM_MAN_CRASH_CAR_1,
+ SFX_SCUM_MAN_CRASH_CAR_2,
+ SFX_SCUM_MAN_DODGE_1,
+ SFX_SCUM_MAN_DODGE_2,
+ SFX_SCUM_MAN_DRIVER_BLOCKED_1,
+ SFX_SCUM_MAN_DRIVER_BLOCKED_2,
+ SFX_SCUM_MAN_FIGHT_1,
+ SFX_SCUM_MAN_FIGHT_2,
+ SFX_SCUM_MAN_FIGHT_3,
+ SFX_SCUM_MAN_GUN_THREATENED_1,
+ SFX_SCUM_MAN_GUN_THREATENED_2,
+ SFX_SCUM_MAN_JACKED_CAR_1,
+ SFX_SCUM_MAN_JACKED_CAR_2,
+ SFX_SCUM_MAN_JACKED_CAR_3,
+ SFX_SCUM_MAN_SHOCKED_1,
+ SFX_SCUM_MAN_SPECIAL_CASE_1,
+ SFX_SCUM_MAN_SPECIAL_CASE_2,
+ SFX_SCUM_MAN_SPECIAL_CASE_3,
+ SFX_SCUM_WOM_BUMP_1,
+ SFX_SCUM_WOM_BUMP_2,
+ SFX_SCUM_WOM_BUMP_3,
+ SFX_SCUM_WOM_CAR_JACKED_1,
+ SFX_SCUM_WOM_CAR_JACKED_2,
+ SFX_SCUM_WOM_CHAT_1,
+ SFX_SCUM_WOM_CHAT_2,
+ SFX_SCUM_WOM_CHAT_3,
+ SFX_SCUM_WOM_CHAT_4,
+ SFX_SCUM_WOM_CRASH_CAR_1,
+ SFX_SCUM_WOM_CRASH_CAR_2,
+ SFX_SCUM_WOM_DODGE_1,
+ SFX_SCUM_WOM_DODGE_2,
+ SFX_SCUM_WOM_DRIVER_BLOCKED_1,
+ SFX_SCUM_WOM_DRIVER_BLOCKED_2,
+ SFX_SCUM_WOM_FIGHT_1,
+ SFX_SCUM_WOM_FIGHT_2,
+ SFX_SCUM_WOM_FIGHT_3,
+ SFX_SCUM_WOM_GUN_THREATENED_1,
+ SFX_SCUM_WOM_GUN_THREATENED_2,
+ SFX_SCUM_WOM_SHOCKED_1,
+ SFX_SFX_AIRHORN_LEFT,
+ SFX_SFX_AIRHORN_RIGH,
+ SFX_SFX_ANG1_AA,
+ SFX_SFX_ANG1_AB,
+ SFX_SFX_ANG1_AC,
+ SFX_SFX_ANG1_AD,
+ SFX_SFX_ANG1_AE,
+ SFX_SFX_ANG1_AF,
+ SFX_SFX_ANG1_AG,
+ SFX_SFX_ANG1_AH,
+ SFX_SFX_ANG1_AI,
+ SFX_SFX_ANG1_AJ,
+ SFX_SFX_ANG1_AK,
+ SFX_SFX_ANG1_AL,
+ SFX_SFX_ANG1_AM,
+ SFX_SFX_ANG1_AN,
+ SFX_SFX_ANG1_AO,
+ SFX_SFX_ANG1_AP,
+ SFX_SFX_ANG1_AQ,
+ SFX_SFX_ANG1_AR,
+ SFX_SFX_ANG1_AS,
+ SFX_SFX_ANG1_AT,
+ SFX_SFX_ANG1_AU,
+ SFX_SFX_ANG1_AV,
+ SFX_SFX_ANG1_AW,
+ SFX_SFX_BLOW_ROOF,
+ SFX_SFX_BNK1_12,
+ SFX_SFX_CAMERA_LEFT,
+ SFX_SFX_CAMERA_RIGHT,
+ SFX_SFX_CHEER1,
+ SFX_SFX_CHEER2,
+ SFX_SFX_CHEER3,
+ SFX_SFX_CHEER4,
+ SFX_SFX_CRIME_1,
+ SFX_SFX_CRIME_10,
+ SFX_SFX_CRIME_11,
+ SFX_SFX_CRIME_12,
+ SFX_SFX_CRIME_2,
+ SFX_SFX_CRIME_3,
+ SFX_SFX_CRIME_4,
+ SFX_SFX_CRIME_5,
+ SFX_SFX_CRIME_6,
+ SFX_SFX_CRIME_7,
+ SFX_SFX_CRIME_8,
+ SFX_SFX_CRIME_9,
+ SFX_SFX_IN_LIFT,
+ SFX_SFX_JDT3_AA,
+ SFX_SFX_JDT3_AB,
+ SFX_SFX_JDT3_AC,
+ SFX_SFX_JDT3_AD,
+ SFX_SFX_JDT3_AE,
+ SFX_SFX_JDT3_AG,
+ SFX_SFX_JDT3_AH,
+ SFX_SFX_JDT3_BA,
+ SFX_SFX_JDT3_BB,
+ SFX_SFX_JDT3_BC,
+ SFX_SFX_JDT3_BD,
+ SFX_SFX_JDT3_BE,
+ SFX_SFX_JDT3_BF,
+ SFX_SFX_LANAMU1,
+ SFX_SFX_LANAMU2,
+ SFX_SFX_LANSTP1,
+ SFX_SFX_LANSTP2,
+ SFX_SFX_LIFT_BELL,
+ SFX_SFX_LIFT_CLOSE,
+ SFX_SFX_LIFT_OPEN,
+ SFX_SFX_LIFT_RUNNING,
+ SFX_SFX_MAR4_AA,
+ SFX_SFX_MAR4_AB,
+ SFX_SFX_MAR4_AC,
+ SFX_SFX_MAR4_AD,
+ SFX_SFX_MAR4_BA,
+ SFX_SFX_MAR4_BB,
+ SFX_SFX_MAR4_BC,
+ SFX_SFX_MAR4_BD,
+ SFX_SFX_MAR4_BE,
+ SFX_SFX_MAR4_BF,
+ SFX_SFX_MAR4_BG,
+ SFX_SFX_RING,
+ SFX_SFX_OOH1,
+ SFX_SFX_OOH2,
+ SFX_SFX_PAGER_RING,
+ SFX_SFX_POLICE_RADIO_AMBULANCE,
+ SFX_SFX_POLICE_RADIO_BLACK,
+ SFX_SFX_POLICE_RADIO_BLUE,
+ SFX_SFX_POLICE_RADIO_BOAT,
+ SFX_SFX_POLICE_RADIO_BUGGY,
+ SFX_SFX_POLICE_RADIO_BUS,
+ SFX_SFX_POLICE_RADIO_COACH,
+ SFX_SFX_POLICE_RADIO_CRUISER,
+ SFX_SFX_POLICE_RADIO_DINGHY,
+ SFX_SFX_POLICE_RADIO_DOWNTOWN,
+ SFX_SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL,
+ SFX_SFX_POLICE_RADIO_FIRE_TRUCK,
+ SFX_SFX_POLICE_RADIO_GARBAGE_TRUCK,
+ SFX_SFX_POLICE_RADIO_GOLF_CART,
+ SFX_SFX_POLICE_RADIO_GREEN,
+ SFX_SFX_POLICE_RADIO_GREY,
+ SFX_SFX_POLICE_RADIO_HEARSE,
+ SFX_SFX_POLICE_RADIO_HELICOPTER,
+ SFX_SFX_POLICE_RADIO_ICE_CREAM_VAN,
+ SFX_SFX_POLICE_RADIO_LEAF_LINKS,
+ SFX_SFX_POLICE_RADIO_LITTLE_HAITI,
+ SFX_SFX_POLICE_RADIO_LITTLE_HAVANA,
+ SFX_SFX_POLICE_RADIO_LOWRIDER,
+ SFX_SFX_POLICE_RADIO_MOPED,
+ SFX_SFX_POLICE_RADIO_MOTOBIKE,
+ SFX_SFX_POLICE_RADIO_OCEAN_BEACH,
+ SFX_SFX_POLICE_RADIO_OFFROAD,
+ SFX_SFX_POLICE_RADIO_ORANGE,
+ SFX_SFX_POLICE_RADIO_PICKUP,
+ SFX_SFX_POLICE_RADIO_PLANE,
+ SFX_SFX_POLICE_RADIO_POLICE_CAR,
+ SFX_SFX_POLICE_RADIO_PRAWN_ISLAND,
+ SFX_SFX_POLICE_RADIO_PURPLE,
+ SFX_SFX_POLICE_RADIO_RED,
+ SFX_SFX_POLICE_RADIO_RIG,
+ SFX_SFX_POLICE_RADIO_SEDAN,
+ SFX_SFX_POLICE_RADIO_SILVER,
+ SFX_SFX_POLICE_RADIO_SPEEDBOAT,
+ SFX_SFX_POLICE_RADIO_SPORTS_CAR,
+ SFX_SFX_POLICE_RADIO_STARFISH_ISLAND,
+ SFX_SFX_POLICE_RADIO_STATION_WAGON,
+ SFX_SFX_POLICE_RADIO_STRETCH,
+ SFX_SFX_POLICE_RADIO_SWAT_VAN,
+ SFX_SFX_POLICE_RADIO_TANK,
+ SFX_SFX_POLICE_RADIO_TAXI,
+ SFX_SFX_POLICE_RADIO_TRUCK,
+ SFX_SFX_POLICE_RADIO_TUDOOR,
+ SFX_SFX_POLICE_RADIO_VAN,
+ SFX_SFX_POLICE_RADIO_VICEPORT,
+ SFX_SFX_POLICE_RADIO_VICE_CITY,
+ SFX_SFX_POLICE_RADIO_VICE_CITY_BEACH,
+ SFX_SFX_POLICE_RADIO_VICE_CITY_MAINLAND,
+ SFX_SFX_POLICE_RADIO_VICE_POINT,
+ SFX_SFX_POLICE_RADIO_WASHINGTON_BEACH,
+ SFX_SFX_POLICE_RADIO_WHITE,
+ SFX_SFX_POLICE_RADIO_YELLOW,
+ SFX_SFX_PSYCH_1,
+ SFX_SFX_PSYCH_2,
+ SFX_SFX_SAL7_BA,
+ SFX_SFX_SAL7_BB,
+ SFX_SFX_SAL7_BC,
+ SFX_SFX_SAL7_BD,
+ SFX_SFX_SAL7_BE,
+ SFX_SFX_SAL7_BF,
+ SFX_SFX_SAL7_BG,
+ SFX_SFX_SAL7_BH,
+ SFX_SFX_SAL7_CA,
+ SFX_SFX_SAL7_CB,
+ SFX_SFX_SAL7_CC,
+ SFX_SFX_SAL7_CD,
+ SFX_SFX_SFX_01,
+ SFX_SFX_SFX_02,
+ SFX_SFX_SNIPER_SHOT_1,
+ SFX_SFX_SNIPER_SHOT_2,
+ SFX_SFX_TAX1_1,
+ SFX_SFX_TAX1_2,
+ SFX_SFX_TAX1_3,
+ SFX_SFX_TAX1_4,
+ SFX_SFX_TAX1_5,
+ SFX_SFX_TAX2_1,
+ SFX_SFX_TAX2_2,
+ SFX_SFX_TAX2_3,
+ SFX_SFX_TAX2_4,
+ SFX_SFX_TAX2_5,
+ SFX_SFX_TAX2_6,
+ SFX_SFX_TAX2_7,
+ SFX_SFX_TAX3_1,
+ SFX_SFX_TAX3_2,
+ SFX_SFX_TAX3_3,
+ SFX_SFX_TAX3_4,
+ SFX_SFX_TAX3_5,
+ SFX_SFX_VICE_VOICE_1_ARREST_1,
+ SFX_SFX_VICE_VOICE_1_ARREST_2,
+ SFX_SFX_VICE_VOICE_1_ARREST_3,
+ SFX_SFX_VICE_VOICE_1_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_2_ARREST_1,
+ SFX_SFX_VICE_VOICE_2_ARREST_2,
+ SFX_SFX_VICE_VOICE_2_ARREST_3,
+ SFX_SFX_VICE_VOICE_2_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_3_ARREST_1,
+ SFX_SFX_VICE_VOICE_3_ARREST_2,
+ SFX_SFX_VICE_VOICE_3_ARREST_3,
+ SFX_SFX_VICE_VOICE_3_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_4_ARREST_1,
+ SFX_SFX_VICE_VOICE_4_ARREST_2,
+ SFX_SFX_VICE_VOICE_4_ARREST_3,
+ SFX_SFX_VICE_VOICE_4_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_5_ARREST_1,
+ SFX_SFX_VICE_VOICE_5_ARREST_2,
+ SFX_SFX_VICE_VOICE_5_ARREST_3,
+ SFX_SFX_VICE_VOICE_5_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_VICE_VOICE_6_ARREST_1,
+ SFX_SFX_VICE_VOICE_6_ARREST_2,
+ SFX_SFX_VICE_VOICE_6_ARREST_3,
+ SFX_SFX_VICE_VOICE_6_MIAMIVICE_EXITING_CAR_1,
+ SFX_SFX_WILLIE_BIKE_REV,
+ SFX_SFX_WILLIE_CAR_REV,
+ SFX_SHOPBELL,
+ SFX_SHOPPER1_BUMP_1,
+ SFX_SHOPPER1_BUMP_2,
+ SFX_SHOPPER1_BUMP_3,
+ SFX_SHOPPER1_CHAT_1,
+ SFX_SHOPPER1_CHAT_2,
+ SFX_SHOPPER1_CHAT_3,
+ SFX_SHOPPER1_CHAT_4,
+ SFX_SHOPPER1_CRASH_CAR_1,
+ SFX_SHOPPER1_CRASH_CAR_2,
+ SFX_SHOPPER1_DODGE_1,
+ SFX_SHOPPER1_DODGE_2,
+ SFX_SHOPPER1_DRIVER_BLOCKED_1,
+ SFX_SHOPPER1_DRIVER_BLOCKED_2,
+ SFX_SHOPPER1_FIGHT_1,
+ SFX_SHOPPER1_FIGHT_2,
+ SFX_SHOPPER1_FIGHT_3,
+ SFX_SHOPPER1_GUN_THREATENED_1,
+ SFX_SHOPPER1_GUN_THREATENED_2,
+ SFX_SHOPPER1_JACKED_CAR_1,
+ SFX_SHOPPER1_JACKED_CAR_2,
+ SFX_SHOPPER1_JACKED_CAR_3,
+ SFX_SHOPPER1_SHOCKED_1,
+ SFX_SHOPPER2_BUMP_1,
+ SFX_SHOPPER2_BUMP_2,
+ SFX_SHOPPER2_BUMP_3,
+ SFX_SHOPPER2_CHAT_1,
+ SFX_SHOPPER2_CHAT_2,
+ SFX_SHOPPER2_CHAT_3,
+ SFX_SHOPPER2_CRASH_CAR_1,
+ SFX_SHOPPER2_CRASH_CAR_2,
+ SFX_SHOPPER2_DODGE_1,
+ SFX_SHOPPER2_DODGE_2,
+ SFX_SHOPPER2_DRIVER_BLOCKED_1,
+ SFX_SHOPPER2_DRIVER_BLOCKED_2,
+ SFX_SHOPPER2_FIGHT_1,
+ SFX_SHOPPER2_FIGHT_2,
+ SFX_SHOPPER2_FIGHT_3,
+ SFX_SHOPPER2_GUN_THREATENED_1,
+ SFX_SHOPPER2_GUN_THREATENED_2,
+ SFX_SHOPPER2_JACKED_CAR_1,
+ SFX_SHOPPER2_JACKED_CAR_2,
+ SFX_SHOPPER2_JACKED_CAR_3,
+ SFX_SHOPPER2_SHOCKED_1,
+ SFX_SHOPPER3_BUMP_1,
+ SFX_SHOPPER3_BUMP_2,
+ SFX_SHOPPER3_BUMP_3,
+ SFX_SHOPPER3_CHAT_1,
+ SFX_SHOPPER3_CHAT_2,
+ SFX_SHOPPER3_CHAT_3,
+ SFX_SHOPPER3_CRASH_CAR_1,
+ SFX_SHOPPER3_CRASH_CAR_2,
+ SFX_SHOPPER3_DODGE_1,
+ SFX_SHOPPER3_DODGE_2,
+ SFX_SHOPPER3_DRIVER_BLOCKED_1,
+ SFX_SHOPPER3_DRIVER_BLOCKED_2,
+ SFX_SHOPPER3_FIGHT_1,
+ SFX_SHOPPER3_FIGHT_2,
+ SFX_SHOPPER3_FIGHT_3,
+ SFX_SHOPPER3_GUN_THREATENED_1,
+ SFX_SHOPPER3_GUN_THREATENED_2,
+ SFX_SHOPPER3_JACKED_CAR_1,
+ SFX_SHOPPER3_JACKED_CAR_2,
+ SFX_SHOPPER3_JACKED_CAR_3,
+ SFX_SHOPPER3_SHOCKED_1,
+ SFX_STRE_AA,
+ SFX_STRE_AB,
+ SFX_STRE_AC,
+ SFX_STRE_AD,
+ SFX_STRE_AE,
+ SFX_STRE_AF,
+ SFX_STRE_AG,
+ SFX_STRE_BA,
+ SFX_STRE_BB,
+ SFX_STRE_BC,
+ SFX_STRE_BD,
+ SFX_STRE_BE,
+ SFX_STRE_BF,
+ SFX_STRE_BG,
+ SFX_STRE_CA,
+ SFX_STRE_CB,
+ SFX_STRE_CC,
+ SFX_STUD_MAN_CHAT_1,
+ SFX_STUD_MAN_CHAT_2,
+ SFX_STUD_MAN_CHAT_3,
+ SFX_STUD_MAN_CHAT_4,
+ SFX_STUD_MAN_CRASH_CAR_1,
+ SFX_STUD_MAN_CRASH_CAR_2,
+ SFX_STUD_MAN_DODGE_1,
+ SFX_STUD_MAN_DODGE_2,
+ SFX_STUD_MAN_DRIVER_BLOCKED_1,
+ SFX_STUD_MAN_DRIVER_BLOCKED_2,
+ SFX_STUD_MAN_FIGHT_1,
+ SFX_STUD_MAN_FIGHT_2,
+ SFX_STUD_MAN_FIGHT_3,
+ SFX_STUD_MAN_GUN_THREATENED_1,
+ SFX_STUD_MAN_GUN_THREATENED_2,
+ SFX_STUD_MAN_JACKED_CAR_1,
+ SFX_STUD_MAN_JACKED_CAR_2,
+ SFX_STUD_MAN_JACKED_CAR_3,
+ SFX_STUD_MAN_SHOCKED_1,
+ SFX_STUD_MAN_SPECIAL_CASE_1,
+ SFX_STUD_MAN_SPECIAL_CASE_2,
+ SFX_STUD_MAN_SPECIAL_CASE_3,
+ SFX_STUD_WOM_BUMP_1,
+ SFX_STUD_WOM_BUMP_2,
+ SFX_STUD_WOM_BUMP_3,
+ SFX_STUD_WOM_CHAT_1,
+ SFX_STUD_WOM_CHAT_2,
+ SFX_STUD_WOM_CHAT_3,
+ SFX_STUD_WOM_CHAT_4,
+ SFX_STUD_WOM_CRASH_CAR_1,
+ SFX_STUD_WOM_CRASH_CAR_2,
+ SFX_STUD_WOM_DODGE_1,
+ SFX_STUD_WOM_DODGE_2,
+ SFX_STUD_WOM_DRIVER_BLOCKED_1,
+ SFX_STUD_WOM_DRIVER_BLOCKED_2,
+ SFX_STUD_WOM_FIGHT_1,
+ SFX_STUD_WOM_FIGHT_2,
+ SFX_STUD_WOM_GUN_THREATENED_1,
+ SFX_STUD_WOM_GUN_THREATENED_2,
+ SFX_STUD_WOM_JACKED_CAR_1,
+ SFX_STUD_WOM_JACKED_CAR_2,
+ SFX_STUD_WOM_JACKED_CAR_3,
+ SFX_STUD_WOM_SHOCKED_1,
+ SFX_ST_MAN_BUMP_1,
+ SFX_ST_MAN_BUMP_2,
+ SFX_ST_MAN_BUMP_3,
+ SFX_ST_MAN_CHAT_1,
+ SFX_ST_MAN_CHAT_2,
+ SFX_ST_MAN_CHAT_3,
+ SFX_ST_MAN_CRASH_CAR_1,
+ SFX_ST_MAN_CRASH_CAR_2,
+ SFX_ST_MAN_DODGE_1,
+ SFX_ST_MAN_DODGE_2,
+ SFX_ST_MAN_DRIVER_BLOCKED_1,
+ SFX_ST_MAN_DRIVER_BLOCKED_2,
+ SFX_ST_MAN_FIGHT_1,
+ SFX_ST_MAN_FIGHT_2,
+ SFX_ST_MAN_GUN_THREATENED_1,
+ SFX_ST_MAN_GUN_THREATENED_2,
+ SFX_ST_MAN_JACKED_CAR_1,
+ SFX_ST_MAN_JACKED_CAR_2,
+ SFX_ST_MAN_JACKED_CAR_3,
+ SFX_ST_WOM_BUMP_1,
+ SFX_ST_WOM_BUMP_2,
+ SFX_ST_WOM_BUMP_3,
+ SFX_ST_WOM_CHAT_1,
+ SFX_ST_WOM_CHAT_2,
+ SFX_ST_WOM_CHAT_3,
+ SFX_ST_WOM_CHAT_4,
+ SFX_ST_WOM_CRASH_CAR_1,
+ SFX_ST_WOM_CRASH_CAR_2,
+ SFX_ST_WOM_DODGE_1,
+ SFX_ST_WOM_DODGE_2,
+ SFX_ST_WOM_DRIVER_BLOCKED_1,
+ SFX_ST_WOM_DRIVER_BLOCKED_2,
+ SFX_ST_WOM_FIGHT_1,
+ SFX_ST_WOM_FIGHT_2,
+ SFX_ST_WOM_FIGHT_3,
+ SFX_ST_WOM_GUN_THREATENED_1,
+ SFX_ST_WOM_GUN_THREATENED_2,
+ SFX_ST_WOM_JACKED_CAR_1,
+ SFX_ST_WOM_JACKED_CAR_2,
+ SFX_ST_WOM_JACKED_CAR_3,
+ SFX_ST_WOM_SHOCKED_1,
+ SFX_SWAT_VOICE_1_ROPE_1,
+ SFX_SWAT_VOICE_1_ROPE_2,
+ SFX_SWAT_VOICE_1_SHOOT_1,
+ SFX_SWAT_VOICE_1_SHOOT_2,
+ SFX_SWAT_VOICE_1_SHOOT_3,
+ SFX_SWAT_VOICE_1_SHOOT_4,
+ SFX_SWAT_VOICE_1_SHOOT_5,
+ SFX_SWAT_VOICE_2_ROPE_1,
+ SFX_SWAT_VOICE_2_ROPE_2,
+ SFX_SWAT_VOICE_2_SHOOT_1,
+ SFX_SWAT_VOICE_2_SHOOT_2,
+ SFX_SWAT_VOICE_2_SHOOT_3,
+ SFX_SWAT_VOICE_2_SHOOT_4,
+ SFX_SWAT_VOICE_2_SHOOT_5,
+ SFX_TAN1_AA,
+ SFX_TAN1_AB,
+ SFX_TAN1_AD,
+ SFX_TAN1_AE,
+ SFX_TAN1_AF,
+ SFX_TAN1_AG,
+ SFX_TAN1_AH,
+ SFX_TAN1_AI,
+ SFX_TAN1_AJ,
+ SFX_TAN2_AA,
+ SFX_TAN2_AB,
+ SFX_TAN2_AC,
+ SFX_TAN2_AE,
+ SFX_TAN2_AF,
+ SFX_TAN2_AG,
+ SFX_TAN2_AH,
+ SFX_TAN2_AJ,
+ SFX_TAN3_AA,
+ SFX_TAN3_AB,
+ SFX_TAN3_AC,
+ SFX_TAN3_AD,
+ SFX_TAN3_AE,
+ SFX_TAN3_AF,
+ SFX_TAN3_AG,
+ SFX_TAN3_AH,
+ SFX_TING,
+ SFX_TONI_ANGRY_BUSTED_01,
+ SFX_TONI_ANGRY_BUSTED_02,
+ SFX_TONI_ANGRY_BUSTED_03,
+ SFX_TONI_ANGRY_BUSTED_04,
+ SFX_TONI_ANGRY_BUSTED_05,
+ SFX_TONI_ANGRY_BUSTED_06,
+ SFX_TONI_ANGRY_BUSTED_07,
+ SFX_TONI_ANGRY_BUSTED_08,
+ SFX_TONI_ANGRY_BUSTED_09,
+ SFX_TONI_ANGRY_BUSTED_10,
+ SFX_TONI_ANGRY_BUSTED_11,
+ SFX_TONI_ANGRY_BUSTED_12,
+ SFX_TONI_ANGRY_BUSTED_13,
+ SFX_TONI_ANGRY_BUSTED_14,
+ SFX_TONI_ANGRY_BUSTED_15,
+ SFX_TONI_ANGRY_BUSTED_16,
+ SFX_TONI_ANGRY_CHASED_01,
+ SFX_TONI_ANGRY_CHASED_02,
+ SFX_TONI_ANGRY_CHASED_03,
+ SFX_TONI_ANGRY_CHASED_04,
+ SFX_TONI_ANGRY_CHASED_05,
+ SFX_TONI_ANGRY_CHASED_06,
+ SFX_TONI_ANGRY_CHASED_07,
+ SFX_TONI_ANGRY_CHASED_08,
+ SFX_TONI_ANGRY_CHASED_09,
+ SFX_TONI_ANGRY_CHASED_10,
+ SFX_TONI_ANGRY_CHASED_11,
+ SFX_TONI_ANGRY_CHASED_12,
+ SFX_TONI_ANGRY_CHASED_13,
+ SFX_TONI_ANGRY_CHASED_14,
+ SFX_TONI_ANGRY_CHASED_15,
+ SFX_TONI_ANGRY_CHASED_16,
+ SFX_TONI_ANGRY_CHASED_17,
+ SFX_TONI_ANGRY_CHASED_18,
+ SFX_TONI_ANGRY_CHASED_19,
+ SFX_TONI_ANGRY_CHASED_20,
+ SFX_TONI_ANGRY_CHASED_21,
+ SFX_TONI_ANGRY_CHASED_22,
+ SFX_TONI_ANGRY_CHASED_23,
+ SFX_TONI_ANGRY_CHASED_24,
+ SFX_TONI_ANGRY_CHASED_25,
+ SFX_TONI_ANGRY_CRASH_01,
+ SFX_TONI_ANGRY_CRASH_02,
+ SFX_TONI_ANGRY_CRASH_03,
+ SFX_TONI_ANGRY_CRASH_04,
+ SFX_TONI_ANGRY_CRASH_05,
+ SFX_TONI_ANGRY_CRASH_06,
+ SFX_TONI_ANGRY_CRASH_07,
+ SFX_TONI_ANGRY_CRASH_08,
+ SFX_TONI_ANGRY_CRASH_09,
+ SFX_TONI_ANGRY_CRASH_10,
+ SFX_TONI_ANGRY_CRASH_11,
+ SFX_TONI_ANGRY_CRASH_12,
+ SFX_TONI_ANGRY_CRASH_13,
+ SFX_TONI_ANGRY_CRASH_14,
+ SFX_TONI_ANGRY_CRASH_15,
+ SFX_TONI_ANGRY_CRASH_16,
+ SFX_TONI_ANGRY_CRASH_17,
+ SFX_TONI_ANGRY_CRASH_18,
+ SFX_TONI_ANGRY_CRASH_19,
+ SFX_TONI_ANGRY_CRASH_20,
+ SFX_TONI_ANGRY_CRASH_21,
+ SFX_TONI_ANGRY_CRASH_22,
+ SFX_TONI_ANGRY_CRASH_23,
+ SFX_TONI_ANGRY_CRASH_24,
+ SFX_TONI_ANGRY_CRASH_25,
+ SFX_TONI_ANGRY_CRASH_26,
+ SFX_TONI_ANGRY_CRASH_27,
+ SFX_TONI_ANGRY_CRASH_28,
+ SFX_TONI_ANGRY_CRASH_29,
+ SFX_TONI_ANGRY_FIGHT_01,
+ SFX_TONI_ANGRY_FIGHT_02,
+ SFX_TONI_ANGRY_FIGHT_03,
+ SFX_TONI_ANGRY_FIGHT_04,
+ SFX_TONI_ANGRY_FIGHT_05,
+ SFX_TONI_ANGRY_FIGHT_06,
+ SFX_TONI_ANGRY_FIGHT_07,
+ SFX_TONI_ANGRY_FIGHT_08,
+ SFX_TONI_ANGRY_FIGHT_09,
+ SFX_TONI_ANGRY_FIGHT_10,
+ SFX_TONI_ANGRY_FIGHT_11,
+ SFX_TONI_ANGRY_FIGHT_12,
+ SFX_TONI_ANGRY_FIGHT_13,
+ SFX_TONI_ANGRY_FIGHT_14,
+ SFX_TONI_ANGRY_FIGHT_15,
+ SFX_TONI_ANGRY_FIGHT_16,
+ SFX_TONI_ANGRY_FIGHT_17,
+ SFX_TONI_ANGRY_FIGHT_18,
+ SFX_TONI_ANGRY_FIGHT_19,
+ SFX_TONI_ANGRY_FIGHT_20,
+ SFX_TONI_ANGRY_FIGHT_21,
+ SFX_TONI_ANGRY_FIGHT_22,
+ SFX_TONI_ANGRY_FIGHT_23,
+ SFX_TONI_ANGRY_FIGHT_24,
+ SFX_TONI_ANGRY_FIGHT_25,
+ SFX_TONI_ANGRY_FIGHT_26,
+ SFX_TONI_ANGRY_FIGHT_27,
+ SFX_TONI_ANGRY_FIGHT_28,
+ SFX_TONI_ANGRY_FIGHT_29,
+ SFX_TONI_ANGRY_FIGHT_30,
+ SFX_TONI_ANGRY_FIGHT_31,
+ SFX_TONI_ANGRY_FIGHT_32,
+ SFX_TONI_ANGRY_FIGHT_33,
+ SFX_TONI_ANGRY_FIGHT_34,
+ SFX_TONI_ANGRY_FIGHT_35,
+ SFX_TONI_ANGRY_FIGHT_36,
+ SFX_TONI_ANGRY_FIGHT_37,
+ SFX_TONI_ANGRY_FIGHT_38,
+ SFX_TONI_ANGRY_FIGHT_39,
+ SFX_TONI_ANGRY_JACKED_01,
+ SFX_TONI_ANGRY_JACKED_02,
+ SFX_TONI_ANGRY_JACKED_03,
+ SFX_TONI_ANGRY_JACKED_04,
+ SFX_TONI_ANGRY_JACKED_05,
+ SFX_TONI_ANGRY_JACKED_06,
+ SFX_TONI_ANGRY_JACKED_07,
+ SFX_TONI_ANGRY_JACKED_08,
+ SFX_TONI_ANGRY_JACKED_09,
+ SFX_TONI_ANGRY_JACKED_10,
+ SFX_TONI_ANGRY_JACKED_11,
+ SFX_TONI_ANGRY_JACKED_12,
+ SFX_TONI_ANGRY_JACKED_13,
+ SFX_TONI_ANGRY_JACKED_14,
+ SFX_TONI_ANGRY_JACKED_15,
+ SFX_TONI_ANGRY_JACKED_16,
+ SFX_TONI_ANGRY_JACKING_01,
+ SFX_TONI_ANGRY_JACKING_02,
+ SFX_TONI_ANGRY_JACKING_03,
+ SFX_TONI_ANGRY_JACKING_04,
+ SFX_TONI_ANGRY_JACKING_05,
+ SFX_TONI_ANGRY_JACKING_06,
+ SFX_TONI_ANGRY_JACKING_07,
+ SFX_TONI_ANGRY_JACKING_08,
+ SFX_TONI_ANGRY_JACKING_09,
+ SFX_TONI_ANGRY_JACKING_10,
+ SFX_TONI_ANGRY_JACKING_11,
+ SFX_TONI_ANGRY_JACKING_12,
+ SFX_TONI_ANGRY_JACKING_13,
+ SFX_TONI_ANGRY_JACKING_14,
+ SFX_TONI_ANGRY_JACKING_15,
+ SFX_TONI_ANGRY_JACKING_16,
+ SFX_TONI_ANGRY_JACKING_17,
+ SFX_TONI_ANGRY_JACKING_18,
+ SFX_TONI_ANGRY_JACKING_19,
+ SFX_TONI_ANGRY_JACKING_20,
+ SFX_TONI_ANGRY_JACKING_21,
+ SFX_TONI_ANGRY_JACKING_22,
+ SFX_TONI_ANGRY_JACKING_23,
+ SFX_TONI_ANGRY_JACKING_24,
+ SFX_TONI_ANGRY_JACKING_25,
+ SFX_TONI_ANGRY_JACKING_26,
+ SFX_TONI_ANGRY_JACKING_27,
+ SFX_TONI_ANGRY_JACKING_28,
+ SFX_TONI_ANGRY_JACKING_29,
+ SFX_TONI_ANGRY_JACKING_30,
+ SFX_TONI_ANGRY_JACKING_31,
+ SFX_TONI_ANGRY_JACKING_32,
+ SFX_TONI_ANGRY_JACKING_33,
+ SFX_TONI_ANGRY_PICK_UP_CASH_01,
+ SFX_TONI_ANGRY_PICK_UP_CASH_02,
+ SFX_TONI_ANGRY_PICK_UP_CASH_03,
+ SFX_TONI_ANGRY_PICK_UP_CASH_04,
+ SFX_TONI_ANGRY_PICK_UP_CASH_05,
+ SFX_TONI_ANGRY_PICK_UP_CASH_06,
+ SFX_TONI_ANGRY_PICK_UP_CASH_07,
+ SFX_TONI_ANGRY_PICK_UP_CASH_08,
+ SFX_TONI_ANGRY_PICK_UP_CASH_09,
+ SFX_TONI_ANGRY_PICK_UP_CASH_10,
+ SFX_TONI_ANGRY_PICK_UP_CASH_11,
+ SFX_TONI_ANGRY_PICK_UP_CASH_12,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_01,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_02,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_03,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_04,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_05,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_06,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_07,
+ SFX_TONI_ANGRY_PICK_UP_HOOKER_08,
+ SFX_TONI_ANGRY_PULL_GUN_01,
+ SFX_TONI_ANGRY_PULL_GUN_02,
+ SFX_TONI_ANGRY_PULL_GUN_03,
+ SFX_TONI_ANGRY_PULL_GUN_04,
+ SFX_TONI_ANGRY_PULL_GUN_05,
+ SFX_TONI_ANGRY_PULL_GUN_06,
+ SFX_TONI_ANGRY_PULL_GUN_07,
+ SFX_TONI_ANGRY_PULL_GUN_08,
+ SFX_TONI_ANGRY_PULL_GUN_09,
+ SFX_TONI_ANGRY_PULL_GUN_10,
+ SFX_TONI_ANGRY_PULL_GUN_11,
+ SFX_TONI_ANGRY_PULL_GUN_12,
+ SFX_TONI_ANGRY_PULL_GUN_13,
+ SFX_TONI_ANGRY_PULL_GUN_14,
+ SFX_TONI_ANGRY_PULL_GUN_15,
+ SFX_TONI_ANGRY_PULL_GUN_16,
+ SFX_TONI_ANGRY_PULL_GUN_17,
+ SFX_TONI_ANGRY_PULL_GUN_18,
+ SFX_TONI_ANGRY_PULL_GUN_19,
+ SFX_TONI_ANGRY_PULL_GUN_20,
+ SFX_TONI_ANGRY_PULL_GUN_21,
+ SFX_TONI_ANGRY_PULL_GUN_22,
+ SFX_TONI_ANGRY_PULL_GUN_23,
+ SFX_TONI_ANGRY_PULL_GUN_24,
+ SFX_TONI_ANGRY_PULL_GUN_25,
+ SFX_TONI_ANGRY_PULL_GUN_26,
+ SFX_TONI_ANGRY_PULL_GUN_27,
+ SFX_TONI_ANGRY_PULL_GUN_28,
+ SFX_TONI_ANGRY_PULL_GUN_29,
+ SFX_TONI_ANGRY_SEX_01,
+ SFX_TONI_ANGRY_SEX_02,
+ SFX_TONI_ANGRY_SEX_03,
+ SFX_TONI_ANGRY_SEX_04,
+ SFX_TONI_ANGRY_SEX_05,
+ SFX_TONI_ANGRY_SEX_06,
+ SFX_TONI_ANGRY_SEX_07,
+ SFX_TONI_ANGRY_SEX_08,
+ SFX_TONI_ANGRY_SEX_09,
+ SFX_TONI_ANGRY_SEX_10,
+ SFX_TONI_ANGRY_SHOOT_01,
+ SFX_TONI_ANGRY_SHOOT_02,
+ SFX_TONI_ANGRY_SHOOT_03,
+ SFX_TONI_ANGRY_SHOOT_04,
+ SFX_TONI_ANGRY_SHOOT_05,
+ SFX_TONI_ANGRY_SHOOT_06,
+ SFX_TONI_ANGRY_SHOOT_07,
+ SFX_TONI_ANGRY_SHOOT_08,
+ SFX_TONI_ANGRY_SHOOT_09,
+ SFX_TONI_ANGRY_SHOOT_10,
+ SFX_TONI_ANGRY_SHOOT_11,
+ SFX_TONI_ANGRY_SHOOT_12,
+ SFX_TONI_ANGRY_SHOOT_13,
+ SFX_TONI_ANGRY_SHOOT_14,
+ SFX_TONI_ANGRY_SHOOT_15,
+ SFX_TONI_ANGRY_SHOOT_16,
+ SFX_TONI_ANGRY_SHOOT_17,
+ SFX_TONI_ANGRY_SHOOT_18,
+ SFX_TONI_ANGRY_SHOOT_19,
+ SFX_TONI_ANGRY_SHOOT_20,
+ SFX_TONI_ANGRY_SHOOT_21,
+ SFX_TONI_ANGRY_SHOOT_22,
+ SFX_TONI_ANGRY_SHOOT_23,
+ SFX_TONI_ANGRY_SHOOT_24,
+ SFX_TONI_ANGRY_SHOOT_25,
+ SFX_TONI_ANGRY_SHOOT_26,
+ SFX_TONI_ANGRY_SHOOT_27,
+ SFX_TONI_ANGRY_SHOOT_28,
+ SFX_TONI_ANGRY_SHOOT_29,
+ SFX_TONI_ANGRY_SHOOT_30,
+ SFX_TONI_ANGRY_SHOOT_31,
+ SFX_TONI_ANGRY_SHOOT_32,
+ SFX_TONI_ANGRY_SHOOT_33,
+ SFX_TONI_ANGRY_SHOOT_34,
+ SFX_TONI_ANGRY_SHOOT_35,
+ SFX_TONI_ANGRY_SHOOT_36,
+ SFX_TONI_CALM_BUSTED_01,
+ SFX_TONI_CALM_BUSTED_02,
+ SFX_TONI_CALM_BUSTED_03,
+ SFX_TONI_CALM_BUSTED_04,
+ SFX_TONI_CALM_BUSTED_05,
+ SFX_TONI_CALM_BUSTED_06,
+ SFX_TONI_CALM_BUSTED_07,
+ SFX_TONI_CALM_BUSTED_08,
+ SFX_TONI_CALM_BUSTED_10,
+ SFX_TONI_CALM_BUSTED_11,
+ SFX_TONI_CALM_BUSTED_12,
+ SFX_TONI_CALM_BUSTED_13,
+ SFX_TONI_CALM_BUSTED_14,
+ SFX_TONI_CALM_BUSTED_15,
+ SFX_TONI_CALM_BUSTED_16,
+ SFX_TONI_CALM_BUSTED_17,
+ SFX_TONI_CALM_BUSTED_18,
+ SFX_TONI_CALM_BUSTED_19,
+ SFX_TONI_CALM_BUSTED_20,
+ SFX_TONI_CALM_BUSTED_21,
+ SFX_TONI_CALM_BUSTED_22,
+ SFX_TONI_CALM_BUSTED_23,
+ SFX_TONI_CALM_BUSTED_24,
+ SFX_TONI_CALM_BUSTED_25,
+ SFX_TONI_CALM_CHASED_01,
+ SFX_TONI_CALM_CHASED_02,
+ SFX_TONI_CALM_CHASED_03,
+ SFX_TONI_CALM_CHASED_04,
+ SFX_TONI_CALM_CHASED_05,
+ SFX_TONI_CALM_CHASED_06,
+ SFX_TONI_CALM_CHASED_07,
+ SFX_TONI_CALM_CHASED_08,
+ SFX_TONI_CALM_CHASED_09,
+ SFX_TONI_CALM_CHASED_10,
+ SFX_TONI_CALM_CHASED_11,
+ SFX_TONI_CALM_CHASED_12,
+ SFX_TONI_CALM_CHASED_13,
+ SFX_TONI_CALM_CHASED_14,
+ SFX_TONI_CALM_CHASED_15,
+ SFX_TONI_CALM_CHASED_16,
+ SFX_TONI_CALM_CHASED_17,
+ SFX_TONI_CALM_CHASED_18,
+ SFX_TONI_CALM_CHASED_19,
+ SFX_TONI_CALM_CHASED_20,
+ SFX_TONI_CALM_CRASH_01,
+ SFX_TONI_CALM_CRASH_02,
+ SFX_TONI_CALM_CRASH_03,
+ SFX_TONI_CALM_CRASH_04,
+ SFX_TONI_CALM_CRASH_05,
+ SFX_TONI_CALM_CRASH_06,
+ SFX_TONI_CALM_CRASH_07,
+ SFX_TONI_CALM_CRASH_08,
+ SFX_TONI_CALM_CRASH_09,
+ SFX_TONI_CALM_CRASH_10,
+ SFX_TONI_CALM_CRASH_11,
+ SFX_TONI_CALM_CRASH_12,
+ SFX_TONI_CALM_CRASH_13,
+ SFX_TONI_CALM_CRASH_14,
+ SFX_TONI_CALM_CRASH_15,
+ SFX_TONI_CALM_CRASH_16,
+ SFX_TONI_CALM_CRASH_17,
+ SFX_TONI_CALM_CRASH_18,
+ SFX_TONI_CALM_CRASH_19,
+ SFX_TONI_CALM_CRASH_20,
+ SFX_TONI_CALM_CRASH_21,
+ SFX_TONI_CALM_CRASH_22,
+ SFX_TONI_CALM_CRASH_23,
+ SFX_TONI_CALM_CRASH_24,
+ SFX_TONI_CALM_CRASH_25,
+ SFX_TONI_CALM_CRASH_26,
+ SFX_TONI_CALM_CRASH_27,
+ SFX_TONI_CALM_CRASH_28,
+ SFX_TONI_CALM_CRASH_29,
+ SFX_TONI_CALM_CRASH_30,
+ SFX_TONI_CALM_CRASH_31,
+ SFX_TONI_CALM_FIGHT_01,
+ SFX_TONI_CALM_FIGHT_02,
+ SFX_TONI_CALM_FIGHT_03,
+ SFX_TONI_CALM_FIGHT_04,
+ SFX_TONI_CALM_FIGHT_05,
+ SFX_TONI_CALM_FIGHT_06,
+ SFX_TONI_CALM_FIGHT_07,
+ SFX_TONI_CALM_FIGHT_08,
+ SFX_TONI_CALM_FIGHT_09,
+ SFX_TONI_CALM_FIGHT_10,
+ SFX_TONI_CALM_FIGHT_11,
+ SFX_TONI_CALM_FIGHT_12,
+ SFX_TONI_CALM_FIGHT_13,
+ SFX_TONI_CALM_FIGHT_14,
+ SFX_TONI_CALM_FIGHT_15,
+ SFX_TONI_CALM_FIGHT_16,
+ SFX_TONI_CALM_FIGHT_17,
+ SFX_TONI_CALM_FIGHT_18,
+ SFX_TONI_CALM_FIGHT_19,
+ SFX_TONI_CALM_FIGHT_20,
+ SFX_TONI_CALM_FIGHT_21,
+ SFX_TONI_CALM_FIGHT_22,
+ SFX_TONI_CALM_FIGHT_23,
+ SFX_TONI_CALM_FIGHT_24,
+ SFX_TONI_CALM_FIGHT_25,
+ SFX_TONI_CALM_FIGHT_26,
+ SFX_TONI_CALM_FIGHT_27,
+ SFX_TONI_CALM_FIGHT_28,
+ SFX_TONI_CALM_FIGHT_29,
+ SFX_TONI_CALM_FIGHT_30,
+ SFX_TONI_CALM_FIGHT_31,
+ SFX_TONI_CALM_FIGHT_32,
+ SFX_TONI_CALM_FIGHT_33,
+ SFX_TONI_CALM_FIGHT_34,
+ SFX_TONI_CALM_FIGHT_35,
+ SFX_TONI_CALM_FIGHT_36,
+ SFX_TONI_CALM_FIGHT_37,
+ SFX_TONI_CALM_FIGHT_38,
+ SFX_TONI_CALM_FIGHT_39,
+ SFX_TONI_CALM_FIGHT_40,
+ SFX_TONI_CALM_FIGHT_41,
+ SFX_TONI_CALM_FIGHT_42,
+ SFX_TONI_CALM_JACKED_01,
+ SFX_TONI_CALM_JACKED_02,
+ SFX_TONI_CALM_JACKED_03,
+ SFX_TONI_CALM_JACKED_04,
+ SFX_TONI_CALM_JACKED_05,
+ SFX_TONI_CALM_JACKED_06,
+ SFX_TONI_CALM_JACKED_07,
+ SFX_TONI_CALM_JACKED_08,
+ SFX_TONI_CALM_JACKED_09,
+ SFX_TONI_CALM_JACKED_10,
+ SFX_TONI_CALM_JACKED_11,
+ SFX_TONI_CALM_JACKED_12,
+ SFX_TONI_CALM_JACKED_13,
+ SFX_TONI_CALM_JACKED_14,
+ SFX_TONI_CALM_JACKED_15,
+ SFX_TONI_CALM_JACKED_16,
+ SFX_TONI_CALM_JACKED_17,
+ SFX_TONI_CALM_JACKED_18,
+ SFX_TONI_CALM_JACKED_19,
+ SFX_TONI_CALM_JACKED_20,
+ SFX_TONI_CALM_JACKED_21,
+ SFX_TONI_CALM_JACKED_22,
+ SFX_TONI_CALM_JACKED_23,
+ SFX_TONI_CALM_JACKING_01,
+ SFX_TONI_CALM_JACKING_02,
+ SFX_TONI_CALM_JACKING_03,
+ SFX_TONI_CALM_JACKING_04,
+ SFX_TONI_CALM_JACKING_05,
+ SFX_TONI_CALM_JACKING_06,
+ SFX_TONI_CALM_JACKING_07,
+ SFX_TONI_CALM_JACKING_08,
+ SFX_TONI_CALM_JACKING_09,
+ SFX_TONI_CALM_JACKING_10,
+ SFX_TONI_CALM_JACKING_11,
+ SFX_TONI_CALM_JACKING_12,
+ SFX_TONI_CALM_JACKING_13,
+ SFX_TONI_CALM_JACKING_14,
+ SFX_TONI_CALM_JACKING_15,
+ SFX_TONI_CALM_JACKING_16,
+ SFX_TONI_CALM_JACKING_17,
+ SFX_TONI_CALM_JACKING_18,
+ SFX_TONI_CALM_JACKING_19,
+ SFX_TONI_CALM_JACKING_20,
+ SFX_TONI_CALM_JACKING_21,
+ SFX_TONI_CALM_JACKING_22,
+ SFX_TONI_CALM_JACKING_23,
+ SFX_TONI_CALM_JACKING_24,
+ SFX_TONI_CALM_JACKING_25,
+ SFX_TONI_CALM_JACKING_26,
+ SFX_TONI_CALM_JACKING_27,
+ SFX_TONI_CALM_JACKING_28,
+ SFX_TONI_CALM_JACKING_29,
+ SFX_TONI_CALM_JACKING_30,
+ SFX_TONI_CALM_JACKING_31,
+ SFX_TONI_CALM_JACKING_32,
+ SFX_TONI_CALM_JACKING_33,
+ SFX_TONI_CALM_JACKING_34,
+ SFX_TONI_CALM_JACKING_35,
+ SFX_TONI_CALM_JACKING_36,
+ SFX_TONI_CALM_JACKING_37,
+ SFX_TONI_CALM_JACKING_38,
+ SFX_TONI_CALM_JACKING_39,
+ SFX_TONI_CALM_PICK_UP_CASH_01,
+ SFX_TONI_CALM_PICK_UP_CASH_02,
+ SFX_TONI_CALM_PICK_UP_CASH_03,
+ SFX_TONI_CALM_PICK_UP_CASH_04,
+ SFX_TONI_CALM_PICK_UP_CASH_05,
+ SFX_TONI_CALM_PICK_UP_CASH_06,
+ SFX_TONI_CALM_PICK_UP_CASH_07,
+ SFX_TONI_CALM_PICK_UP_CASH_08,
+ SFX_TONI_CALM_PICK_UP_CASH_09,
+ SFX_TONI_CALM_PICK_UP_CASH_10,
+ SFX_TONI_CALM_PICK_UP_CASH_11,
+ SFX_TONI_CALM_PICK_UP_CASH_12,
+ SFX_TONI_CALM_PICK_UP_CASH_13,
+ SFX_TONI_CALM_PICK_UP_CASH_14,
+ SFX_TONI_CALM_PICK_UP_CASH_15,
+ SFX_TONI_CALM_PICK_UP_CASH_16,
+ SFX_TONI_CALM_PICK_UP_HOOKER_01,
+ SFX_TONI_CALM_PICK_UP_HOOKER_02,
+ SFX_TONI_CALM_PICK_UP_HOOKER_03,
+ SFX_TONI_CALM_PICK_UP_HOOKER_04,
+ SFX_TONI_CALM_PICK_UP_HOOKER_05,
+ SFX_TONI_CALM_PICK_UP_HOOKER_06,
+ SFX_TONI_CALM_PICK_UP_HOOKER_07,
+ SFX_TONI_CALM_PICK_UP_HOOKER_08,
+ SFX_TONI_CALM_PICK_UP_HOOKER_09,
+ SFX_TONI_CALM_PICK_UP_HOOKER_10,
+ SFX_TONI_CALM_PICK_UP_HOOKER_11,
+ SFX_TONI_CALM_PICK_UP_HOOKER_12,
+ SFX_TONI_CALM_PICK_UP_HOOKER_13,
+ SFX_TONI_CALM_PICK_UP_HOOKER_14,
+ SFX_TONI_CALM_PICK_UP_HOOKER_15,
+ SFX_TONI_CALM_PICK_UP_HOOKER_16,
+ SFX_TONI_CALM_PICK_UP_HOOKER_17,
+ SFX_TONI_CALM_PICK_UP_HOOKER_18,
+ SFX_TONI_CALM_PULL_GUN_01,
+ SFX_TONI_CALM_PULL_GUN_02,
+ SFX_TONI_CALM_PULL_GUN_03,
+ SFX_TONI_CALM_PULL_GUN_04,
+ SFX_TONI_CALM_PULL_GUN_05,
+ SFX_TONI_CALM_PULL_GUN_06,
+ SFX_TONI_CALM_PULL_GUN_07,
+ SFX_TONI_CALM_PULL_GUN_08,
+ SFX_TONI_CALM_PULL_GUN_09,
+ SFX_TONI_CALM_PULL_GUN_10,
+ SFX_TONI_CALM_PULL_GUN_11,
+ SFX_TONI_CALM_PULL_GUN_12,
+ SFX_TONI_CALM_PULL_GUN_13,
+ SFX_TONI_CALM_PULL_GUN_14,
+ SFX_TONI_CALM_PULL_GUN_15,
+ SFX_TONI_CALM_PULL_GUN_16,
+ SFX_TONI_CALM_PULL_GUN_17,
+ SFX_TONI_CALM_PULL_GUN_18,
+ SFX_TONI_CALM_PULL_GUN_19,
+ SFX_TONI_CALM_PULL_GUN_20,
+ SFX_TONI_CALM_PULL_GUN_21,
+ SFX_TONI_CALM_PULL_GUN_22,
+ SFX_TONI_CALM_PULL_GUN_23,
+ SFX_TONI_CALM_PULL_GUN_24,
+ SFX_TONI_CALM_PULL_GUN_25,
+ SFX_TONI_CALM_PULL_GUN_26,
+ SFX_TONI_CALM_PULL_GUN_27,
+ SFX_TONI_CALM_PULL_GUN_28,
+ SFX_TONI_CALM_PULL_GUN_29,
+ SFX_TONI_CALM_PULL_GUN_30,
+ SFX_TONI_CALM_PULL_GUN_31,
+ SFX_TONI_CALM_PULL_GUN_32,
+ SFX_TONI_CALM_PULL_GUN_33,
+ SFX_TONI_CALM_PULL_GUN_34,
+ SFX_TONI_CALM_PULL_GUN_35,
+ SFX_TONI_CALM_SEX_01,
+ SFX_TONI_CALM_SEX_02,
+ SFX_TONI_CALM_SEX_03,
+ SFX_TONI_CALM_SEX_04,
+ SFX_TONI_CALM_SEX_05,
+ SFX_TONI_CALM_SEX_06,
+ SFX_TONI_CALM_SEX_07,
+ SFX_TONI_CALM_SEX_08,
+ SFX_TONI_CALM_SEX_09,
+ SFX_TONI_CALM_SEX_10,
+ SFX_TONI_CALM_SEX_11,
+ SFX_TONI_CALM_SHOOT_01,
+ SFX_TONI_CALM_SHOOT_02,
+ SFX_TONI_CALM_SHOOT_03,
+ SFX_TONI_CALM_SHOOT_04,
+ SFX_TONI_CALM_SHOOT_05,
+ SFX_TONI_CALM_SHOOT_06,
+ SFX_TONI_CALM_SHOOT_07,
+ SFX_TONI_CALM_SHOOT_08,
+ SFX_TONI_CALM_SHOOT_09,
+ SFX_TONI_CALM_SHOOT_10,
+ SFX_TONI_CALM_SHOOT_11,
+ SFX_TONI_CALM_SHOOT_12,
+ SFX_TONI_CALM_SHOOT_13,
+ SFX_TONI_CALM_SHOOT_14,
+ SFX_TONI_CALM_SHOOT_15,
+ SFX_TONI_CALM_SHOOT_16,
+ SFX_TONI_CALM_SHOOT_17,
+ SFX_TONI_CALM_SHOOT_18,
+ SFX_TONI_CALM_SHOOT_19,
+ SFX_TONI_CALM_SHOOT_20,
+ SFX_TONI_CALM_SHOOT_21,
+ SFX_TONI_CALM_SHOOT_22,
+ SFX_TONI_CALM_SHOOT_23,
+ SFX_TONI_CALM_SHOOT_24,
+ SFX_TONI_CALM_SHOOT_25,
+ SFX_TONI_CALM_SHOOT_26,
+ SFX_TONI_CALM_SHOOT_27,
+ SFX_TONI_CALM_SHOOT_28,
+ SFX_TONI_CALM_SHOOT_29,
+ SFX_TONI_CALM_SHOOT_30,
+ SFX_TONI_GENERAL_AFTER_SEX_01,
+ SFX_TONI_GENERAL_AFTER_SEX_02,
+ SFX_TONI_GENERAL_AFTER_SEX_03,
+ SFX_TONI_GENERAL_AFTER_SEX_04,
+ SFX_TONI_GENERAL_AFTER_SEX_05,
+ SFX_TONI_GENERAL_AFTER_SEX_06,
+ SFX_TONI_GENERAL_AFTER_SEX_07,
+ SFX_TONI_GENERAL_AFTER_SEX_08,
+ SFX_TONI_GENERAL_AFTER_SEX_09,
+ SFX_TONI_GENERAL_AFTER_SEX_10,
+ SFX_TONI_GENERAL_AFTER_SEX_11,
+ SFX_TONI_GENERAL_AFTER_SEX_12,
+ SFX_TONI_GENERAL_AFTER_SEX_13,
+ SFX_TONI_GENERAL_AFTER_SEX_14,
+ SFX_TONI_GENERAL_HIT_GROUND_01,
+ SFX_TONI_GENERAL_HIT_GROUND_02,
+ SFX_TONI_GENERAL_HIT_GROUND_03,
+ SFX_TONI_GENERAL_HIT_GROUND_04,
+ SFX_TONI_GENERAL_HIT_GROUND_08,
+ SFX_TONI_GENERAL_HIT_GROUND_09,
+ SFX_TONI_GENERAL_HIT_GROUND_10,
+ SFX_TONI_GENERAL_HIT_GROUND_11,
+ SFX_TONI_GENERAL_HIT_GROUND_12,
+ SFX_TONI_GENERAL_HIT_GROUND_13,
+ SFX_TONI_GENERAL_HIT_GROUND_14,
+ SFX_TONI_GENERAL_HIT_GROUND_15,
+ SFX_TONI_GENERAL_IMP_HI_01,
+ SFX_TONI_GENERAL_IMP_HI_02,
+ SFX_TONI_GENERAL_IMP_HI_03,
+ SFX_TONI_GENERAL_IMP_HI_04,
+ SFX_TONI_GENERAL_IMP_HI_05,
+ SFX_TONI_GENERAL_IMP_HI_06,
+ SFX_TONI_GENERAL_IMP_HI_07,
+ SFX_TONI_GENERAL_IMP_HI_08,
+ SFX_TONI_GENERAL_IMP_HI_09,
+ SFX_TONI_GENERAL_IMP_HI_10,
+ SFX_TONI_GENERAL_IMP_HI_11,
+ SFX_TONI_GENERAL_IMP_HI_12,
+ SFX_TONI_GENERAL_IMP_HI_13,
+ SFX_TONI_GENERAL_IMP_HI_14,
+ SFX_TONI_GENERAL_IMP_HI_15,
+ SFX_TONI_GENERAL_IMP_HI_16,
+ SFX_TONI_GENERAL_IMP_LOW_01,
+ SFX_TONI_GENERAL_IMP_LOW_02,
+ SFX_TONI_GENERAL_IMP_LOW_03,
+ SFX_TONI_GENERAL_IMP_LOW_04,
+ SFX_TONI_GENERAL_IMP_LOW_05,
+ SFX_TONI_GENERAL_IMP_LOW_06,
+ SFX_TONI_GENERAL_IMP_LOW_07,
+ SFX_TONI_GENERAL_IMP_LOW_08,
+ SFX_TONI_GENERAL_IMP_LOW_09,
+ SFX_TONI_GENERAL_IMP_LOW_10,
+ SFX_TONI_GENERAL_IMP_LOW_11,
+ SFX_TONI_GENERAL_IMP_LOW_12,
+ SFX_TONI_GENERAL_IMP_LOW_13,
+ SFX_TONI_GENERAL_IMP_LOW_14,
+ SFX_TONI_GENERAL_IMP_LOW_15,
+ SFX_TONI_GENERAL_ON_FIRE_01,
+ SFX_TONI_GENERAL_ON_FIRE_02,
+ SFX_TONI_GENERAL_ON_FIRE_03,
+ SFX_TONI_GENERAL_ON_FIRE_04,
+ SFX_TONI_GENERAL_ON_FIRE_05,
+ SFX_TONI_GENERAL_ON_FIRE_06,
+ SFX_TONI_GENERAL_ON_FIRE_08,
+ SFX_TONI_PISSED_OFF_BUSTED_01,
+ SFX_TONI_PISSED_OFF_BUSTED_02,
+ SFX_TONI_PISSED_OFF_BUSTED_03,
+ SFX_TONI_PISSED_OFF_BUSTED_04,
+ SFX_TONI_PISSED_OFF_BUSTED_05,
+ SFX_TONI_PISSED_OFF_BUSTED_06,
+ SFX_TONI_PISSED_OFF_BUSTED_07,
+ SFX_TONI_PISSED_OFF_BUSTED_08,
+ SFX_TONI_PISSED_OFF_BUSTED_09,
+ SFX_TONI_PISSED_OFF_BUSTED_10,
+ SFX_TONI_PISSED_OFF_BUSTED_11,
+ SFX_TONI_PISSED_OFF_BUSTED_12,
+ SFX_TONI_PISSED_OFF_CHASED_01,
+ SFX_TONI_PISSED_OFF_CHASED_02,
+ SFX_TONI_PISSED_OFF_CHASED_03,
+ SFX_TONI_PISSED_OFF_CHASED_04,
+ SFX_TONI_PISSED_OFF_CHASED_05,
+ SFX_TONI_PISSED_OFF_CHASED_06,
+ SFX_TONI_PISSED_OFF_CHASED_07,
+ SFX_TONI_PISSED_OFF_CHASED_08,
+ SFX_TONI_PISSED_OFF_CHASED_09,
+ SFX_TONI_PISSED_OFF_CHASED_10,
+ SFX_TONI_PISSED_OFF_CHASED_11,
+ SFX_TONI_PISSED_OFF_CHASED_12,
+ SFX_TONI_PISSED_OFF_CHASED_13,
+ SFX_TONI_PISSED_OFF_CHASED_14,
+ SFX_TONI_PISSED_OFF_CHASED_15,
+ SFX_TONI_PISSED_OFF_CHASED_16,
+ SFX_TONI_PISSED_OFF_CHASED_17,
+ SFX_TONI_PISSED_OFF_CHASED_18,
+ SFX_TONI_PISSED_OFF_CHASED_19,
+ SFX_TONI_PISSED_OFF_CHASED_20,
+ SFX_TONI_PISSED_OFF_CHASED_21,
+ SFX_TONI_PISSED_OFF_CHASED_22,
+ SFX_TONI_PISSED_OFF_CHASED_23,
+ SFX_TONI_PISSED_OFF_CHASED_24,
+ SFX_TONI_PISSED_OFF_CHASED_25,
+ SFX_TONI_PISSED_OFF_CRASH_01,
+ SFX_TONI_PISSED_OFF_CRASH_02,
+ SFX_TONI_PISSED_OFF_CRASH_03,
+ SFX_TONI_PISSED_OFF_CRASH_04,
+ SFX_TONI_PISSED_OFF_CRASH_05,
+ SFX_TONI_PISSED_OFF_CRASH_06,
+ SFX_TONI_PISSED_OFF_CRASH_07,
+ SFX_TONI_PISSED_OFF_CRASH_08,
+ SFX_TONI_PISSED_OFF_CRASH_09,
+ SFX_TONI_PISSED_OFF_CRASH_10,
+ SFX_TONI_PISSED_OFF_CRASH_11,
+ SFX_TONI_PISSED_OFF_CRASH_12,
+ SFX_TONI_PISSED_OFF_CRASH_13,
+ SFX_TONI_PISSED_OFF_CRASH_14,
+ SFX_TONI_PISSED_OFF_CRASH_15,
+ SFX_TONI_PISSED_OFF_CRASH_16,
+ SFX_TONI_PISSED_OFF_CRASH_17,
+ SFX_TONI_PISSED_OFF_CRASH_18,
+ SFX_TONI_PISSED_OFF_CRASH_19,
+ SFX_TONI_PISSED_OFF_CRASH_20,
+ SFX_TONI_PISSED_OFF_CRASH_21,
+ SFX_TONI_PISSED_OFF_CRASH_22,
+ SFX_TONI_PISSED_OFF_CRASH_23,
+ SFX_TONI_PISSED_OFF_CRASH_24,
+ SFX_TONI_PISSED_OFF_CRASH_25,
+ SFX_TONI_PISSED_OFF_FIGHT_01,
+ SFX_TONI_PISSED_OFF_FIGHT_02,
+ SFX_TONI_PISSED_OFF_FIGHT_03,
+ SFX_TONI_PISSED_OFF_FIGHT_04,
+ SFX_TONI_PISSED_OFF_FIGHT_05,
+ SFX_TONI_PISSED_OFF_FIGHT_06,
+ SFX_TONI_PISSED_OFF_FIGHT_07,
+ SFX_TONI_PISSED_OFF_FIGHT_08,
+ SFX_TONI_PISSED_OFF_FIGHT_09,
+ SFX_TONI_PISSED_OFF_FIGHT_10,
+ SFX_TONI_PISSED_OFF_FIGHT_11,
+ SFX_TONI_PISSED_OFF_FIGHT_12,
+ SFX_TONI_PISSED_OFF_FIGHT_13,
+ SFX_TONI_PISSED_OFF_FIGHT_14,
+ SFX_TONI_PISSED_OFF_FIGHT_15,
+ SFX_TONI_PISSED_OFF_FIGHT_16,
+ SFX_TONI_PISSED_OFF_FIGHT_17,
+ SFX_TONI_PISSED_OFF_FIGHT_18,
+ SFX_TONI_PISSED_OFF_JACKED_01,
+ SFX_TONI_PISSED_OFF_JACKED_02,
+ SFX_TONI_PISSED_OFF_JACKED_03,
+ SFX_TONI_PISSED_OFF_JACKED_04,
+ SFX_TONI_PISSED_OFF_JACKED_05,
+ SFX_TONI_PISSED_OFF_JACKED_06,
+ SFX_TONI_PISSED_OFF_JACKED_07,
+ SFX_TONI_PISSED_OFF_JACKED_08,
+ SFX_TONI_PISSED_OFF_JACKED_09,
+ SFX_TONI_PISSED_OFF_JACKED_10,
+ SFX_TONI_PISSED_OFF_JACKED_11,
+ SFX_TONI_PISSED_OFF_JACKING_01,
+ SFX_TONI_PISSED_OFF_JACKING_02,
+ SFX_TONI_PISSED_OFF_JACKING_03,
+ SFX_TONI_PISSED_OFF_JACKING_04,
+ SFX_TONI_PISSED_OFF_JACKING_05,
+ SFX_TONI_PISSED_OFF_JACKING_06,
+ SFX_TONI_PISSED_OFF_JACKING_07,
+ SFX_TONI_PISSED_OFF_JACKING_08,
+ SFX_TONI_PISSED_OFF_JACKING_09,
+ SFX_TONI_PISSED_OFF_JACKING_10,
+ SFX_TONI_PISSED_OFF_JACKING_11,
+ SFX_TONI_PISSED_OFF_JACKING_12,
+ SFX_TONI_PISSED_OFF_JACKING_13,
+ SFX_TONI_PISSED_OFF_JACKING_14,
+ SFX_TONI_PISSED_OFF_JACKING_15,
+ SFX_TONI_PISSED_OFF_JACKING_16,
+ SFX_TONI_PISSED_OFF_JACKING_17,
+ SFX_TONI_PISSED_OFF_JACKING_18,
+ SFX_TONI_PISSED_OFF_JACKING_19,
+ SFX_TONI_PISSED_OFF_JACKING_20,
+ SFX_TONI_PISSED_OFF_JACKING_21,
+ SFX_TONI_PISSED_OFF_JACKING_22,
+ SFX_TONI_PISSED_OFF_JACKING_23,
+ SFX_TONI_PISSED_OFF_JACKING_24,
+ SFX_TONI_PISSED_OFF_JACKING_25,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_01,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_02,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_03,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_04,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_05,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_06,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_07,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_08,
+ SFX_TONI_PISSED_OFF_PICK_UP_CASH_09,
+ SFX_TONI_PISSED_OFF_PULL_GUN_01,
+ SFX_TONI_PISSED_OFF_PULL_GUN_02,
+ SFX_TONI_PISSED_OFF_PULL_GUN_03,
+ SFX_TONI_PISSED_OFF_PULL_GUN_04,
+ SFX_TONI_PISSED_OFF_PULL_GUN_05,
+ SFX_TONI_PISSED_OFF_PULL_GUN_06,
+ SFX_TONI_PISSED_OFF_PULL_GUN_07,
+ SFX_TONI_PISSED_OFF_PULL_GUN_08,
+ SFX_TONI_PISSED_OFF_PULL_GUN_09,
+ SFX_TONI_PISSED_OFF_PULL_GUN_10,
+ SFX_TONI_PISSED_OFF_PULL_GUN_11,
+ SFX_TONI_PISSED_OFF_PULL_GUN_12,
+ SFX_TONI_PISSED_OFF_PULL_GUN_13,
+ SFX_TONI_PISSED_OFF_PULL_GUN_14,
+ SFX_TONI_PISSED_OFF_PULL_GUN_15,
+ SFX_TONI_PISSED_OFF_PULL_GUN_16,
+ SFX_TONI_PISSED_OFF_PULL_GUN_17,
+ SFX_TONI_PISSED_OFF_PULL_GUN_18,
+ SFX_TONI_PISSED_OFF_SHOOT_01,
+ SFX_TONI_PISSED_OFF_SHOOT_02,
+ SFX_TONI_PISSED_OFF_SHOOT_03,
+ SFX_TONI_PISSED_OFF_SHOOT_04,
+ SFX_TONI_PISSED_OFF_SHOOT_05,
+ SFX_TONI_PISSED_OFF_SHOOT_06,
+ SFX_TONI_PISSED_OFF_SHOOT_07,
+ SFX_TONI_PISSED_OFF_SHOOT_08,
+ SFX_TONI_PISSED_OFF_SHOOT_09,
+ SFX_TONI_PISSED_OFF_SHOOT_10,
+ SFX_TONI_PISSED_OFF_SHOOT_11,
+ SFX_TONI_PISSED_OFF_SHOOT_12,
+ SFX_TONI_PISSED_OFF_SHOOT_13,
+ SFX_TONI_PISSED_OFF_SHOOT_14,
+ SFX_TONI_PISSED_OFF_SHOOT_15,
+ SFX_TONI_PISSED_OFF_SHOOT_16,
+ SFX_TONI_PISSED_OFF_SHOOT_17,
+ SFX_TONI_PISSED_OFF_SHOOT_18,
+ SFX_TONI_PISSED_OFF_SHOOT_19,
+ SFX_TONI_PISSED_OFF_SHOOT_20,
+ SFX_TONI_PISSED_OFF_SHOOT_21,
+ SFX_TONI_PISSED_OFF_SHOOT_22,
+ SFX_TONI_PISSED_OFF_SHOOT_23,
+ SFX_TONI_PISSED_OFF_SHOOT_24,
+ SFX_TONI_PISSED_OFF_SHOOT_25,
+ SFX_TONI_PISSED_OFF_SHOOT_26,
+ SFX_TONI_PISSED_OFF_SHOOT_27,
+ SFX_TONI_PISSED_OFF_SHOOT_28,
+ SFX_TONI_PISSED_OFF_SHOOT_29,
+ SFX_TONI_PISSED_OFF_SHOOT_30,
+ SFX_TONI_PISSED_OFF_SHOOT_31,
+ SFX_TONI_WISECRACKING_CRASH_01,
+ SFX_TONI_WISECRACKING_CRASH_02,
+ SFX_TONI_WISECRACKING_CRASH_03,
+ SFX_TONI_WISECRACKING_CRASH_04,
+ SFX_TONI_WISECRACKING_CRASH_05,
+ SFX_TONI_WISECRACKING_CRASH_06,
+ SFX_TONI_WISECRACKING_CRASH_07,
+ SFX_TONI_WISECRACKING_CRASH_08,
+ SFX_TONI_WISECRACKING_CRASH_09,
+ SFX_TONI_WISECRACKING_CRASH_10,
+ SFX_TONI_WISECRACKING_CRASH_11,
+ SFX_TONI_WISECRACKING_CRASH_12,
+ SFX_TONI_WISECRACKING_CRASH_13,
+ SFX_TONI_WISECRACKING_CRASH_14,
+ SFX_TONI_WISECRACKING_CRASH_15,
+ SFX_TONI_WISECRACKING_CRASH_16,
+ SFX_TONI_WISECRACKING_CRASH_17,
+ SFX_TONI_WISECRACKING_FIGHT_01,
+ SFX_TONI_WISECRACKING_FIGHT_02,
+ SFX_TONI_WISECRACKING_FIGHT_03,
+ SFX_TONI_WISECRACKING_FIGHT_04,
+ SFX_TONI_WISECRACKING_FIGHT_05,
+ SFX_TONI_WISECRACKING_FIGHT_06,
+ SFX_TONI_WISECRACKING_FIGHT_07,
+ SFX_TONI_WISECRACKING_FIGHT_08,
+ SFX_TONI_WISECRACKING_FIGHT_09,
+ SFX_TONI_WISECRACKING_FIGHT_10,
+ SFX_TONI_WISECRACKING_FIGHT_11,
+ SFX_TONI_WISECRACKING_FIGHT_12,
+ SFX_TONI_WISECRACKING_FIGHT_13,
+ SFX_TONI_WISECRACKING_FIGHT_14,
+ SFX_TONI_WISECRACKING_FIGHT_15,
+ SFX_TONI_WISECRACKING_FIGHT_16,
+ SFX_TONI_WISECRACKING_FIGHT_17,
+ SFX_TONI_WISECRACKING_FIGHT_18,
+ SFX_TONI_WISECRACKING_FIGHT_19,
+ SFX_TONI_WISECRACKING_FIGHT_20,
+ SFX_TONI_WISECRACKING_JACKED_01,
+ SFX_TONI_WISECRACKING_JACKED_02,
+ SFX_TONI_WISECRACKING_JACKED_03,
+ SFX_TONI_WISECRACKING_JACKED_04,
+ SFX_TONI_WISECRACKING_JACKED_05,
+ SFX_TONI_WISECRACKING_JACKED_06,
+ SFX_TONI_WISECRACKING_JACKED_07,
+ SFX_TONI_WISECRACKING_JACKED_08,
+ SFX_TONI_WISECRACKING_JACKED_09,
+ SFX_TONI_WISECRACKING_JACKED_10,
+ SFX_TONI_WISECRACKING_JACKED_11,
+ SFX_TONI_WISECRACKING_JACKED_12,
+ SFX_TONI_WISECRACKING_JACKED_13,
+ SFX_TONI_WISECRACKING_JACKED_14,
+ SFX_TONI_WISECRACKING_JACKED_15,
+ SFX_TONI_WISECRACKING_JACKED_16,
+ SFX_TONI_WISECRACKING_JACKED_17,
+ SFX_TONI_WISECRACKING_JACKING_01,
+ SFX_TONI_WISECRACKING_JACKING_02,
+ SFX_TONI_WISECRACKING_JACKING_03,
+ SFX_TONI_WISECRACKING_JACKING_04,
+ SFX_TONI_WISECRACKING_JACKING_05,
+ SFX_TONI_WISECRACKING_JACKING_06,
+ SFX_TONI_WISECRACKING_JACKING_07,
+ SFX_TONI_WISECRACKING_JACKING_08,
+ SFX_TONI_WISECRACKING_JACKING_09,
+ SFX_TONI_WISECRACKING_JACKING_10,
+ SFX_TONI_WISECRACKING_JACKING_11,
+ SFX_TONI_WISECRACKING_JACKING_12,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_01,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_02,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_03,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_04,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_05,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_06,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_07,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_08,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_09,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_10,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_11,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_12,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_13,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_14,
+ SFX_TONI_WISECRACKING_PICK_UP_CASH_15,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_01,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_02,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_03,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_04,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_05,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_06,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_07,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_08,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_09,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_10,
+ SFX_TONI_WISECRACKING_PICK_UP_HOOKER_11,
+ SFX_TONI_WISECRACKING_PULL_GUN_01,
+ SFX_TONI_WISECRACKING_PULL_GUN_02,
+ SFX_TONI_WISECRACKING_PULL_GUN_03,
+ SFX_TONI_WISECRACKING_PULL_GUN_04,
+ SFX_TONI_WISECRACKING_PULL_GUN_05,
+ SFX_TONI_WISECRACKING_PULL_GUN_06,
+ SFX_TONI_WISECRACKING_PULL_GUN_07,
+ SFX_TONI_WISECRACKING_PULL_GUN_08,
+ SFX_TONI_WISECRACKING_PULL_GUN_09,
+ SFX_TONI_WISECRACKING_PULL_GUN_10,
+ SFX_TONI_WISECRACKING_PULL_GUN_11,
+ SFX_TONI_WISECRACKING_PULL_GUN_12,
+ SFX_TONI_WISECRACKING_PULL_GUN_13,
+ SFX_TONI_WISECRACKING_PULL_GUN_14,
+ SFX_TONI_WISECRACKING_PULL_GUN_15,
+ SFX_TONI_WISECRACKING_PULL_GUN_16,
+ SFX_TONI_WISECRACKING_PULL_GUN_17,
+ SFX_TONI_WISECRACKING_PULL_GUN_18,
+ SFX_TONI_WISECRACKING_PULL_GUN_19,
+ SFX_TONI_WISECRACKING_SEX_01,
+ SFX_TONI_WISECRACKING_SEX_02,
+ SFX_TONI_WISECRACKING_SEX_03,
+ SFX_TONI_WISECRACKING_SEX_04,
+ SFX_TONI_WISECRACKING_SEX_05,
+ SFX_TONI_WISECRACKING_SEX_06,
+ SFX_TONI_WISECRACKING_SEX_07,
+ SFX_TONI_WISECRACKING_SEX_08,
+ SFX_TONI_WISECRACKING_SEX_09,
+ SFX_TONI_WISECRACKING_SEX_10,
+ SFX_TONI_WISECRACKING_SHOOT_01,
+ SFX_TONI_WISECRACKING_SHOOT_02,
+ SFX_TONI_WISECRACKING_SHOOT_03,
+ SFX_TONI_WISECRACKING_SHOOT_04,
+ SFX_TONI_WISECRACKING_SHOOT_05,
+ SFX_TONI_WISECRACKING_SHOOT_06,
+ SFX_TONI_WISECRACKING_SHOOT_07,
+ SFX_TONI_WISECRACKING_SHOOT_08,
+ SFX_TONI_WISECRACKING_SHOOT_09,
+ SFX_TONI_WISECRACKING_SHOOT_10,
+ SFX_TONI_WISECRACKING_SHOOT_11,
+ SFX_TONI_WISECRACKING_SHOOT_12,
+ SFX_TONI_WISECRACKING_SHOOT_13,
+ SFX_TONI_WISECRACKING_SHOOT_14,
+ SFX_TONI_WISECRACKING_SHOOT_15,
+ SFX_TONI_WISECRACKING_SHOOT_16,
+ SFX_TONI_WISECRACKING_SHOOT_17,
+ SFX_TONI_WISECRACKING_SHOOT_18,
+ SFX_TONI_WISECRACKING_SHOOT_19,
+ SFX_TONI_WISECRACKING_SHOOT_20,
+ SFX_TONI_WISECRACKING_SHOOT_21,
+ SFX_TONI_WISECRACKING_SHOOT_22,
+ SFX_TONI_WISECRACKING_SHOOT_23,
+ SFX_TONI_WISECRACKING_SHOOT_24,
+ SFX_TONI_WISECRACKING_SHOOT_25,
+ SFX_TONI_WISECRACKING_SHOOT_26,
+ SFX_TOSH1AA,
+ SFX_TOSH1AB,
+ SFX_TOSH1AC,
+ SFX_TOSH1AD,
+ SFX_TOSH1BA,
+ SFX_TOSH1BB,
+ SFX_TOSH1BC,
+ SFX_TOSH1BD,
+ SFX_TOSH2AA,
+ SFX_TOSH2AB,
+ SFX_TOSH2AC,
+ SFX_TOSH2AE,
+ SFX_TOSH2AF,
+ SFX_TOSH2AG,
+ SFX_TOSH2AH,
+ SFX_TOSH2AI,
+ SFX_TOSH2AJ,
+ SFX_TOSH2AK,
+ SFX_TOSH2AL,
+ SFX_TOSH2AM,
+ SFX_TOSH3AA,
+ SFX_TOSH3AB,
+ SFX_TOSH3AC,
+ SFX_TOSH3AD,
+ SFX_TOSH3AE,
+ SFX_TOSH3AF,
+ SFX_TOSH3AG,
+ SFX_TOSH3AH,
+ SFX_TOSH3AI,
+ SFX_TOSH3AJ,
+ SFX_TOSH3AK,
+ SFX_TOSH3BA,
+ SFX_TOSH3BB,
+ SFX_TOSH3CA,
+ SFX_TOSH3CB,
+ SFX_TOSH3CC,
+ SFX_TOSH3CD,
+ SFX_TOSH3CE,
+ SFX_TOSH3CF,
+ SFX_TOSH3CG,
+ SFX_TOSH3CH,
+ SFX_TOSH3CI,
+ SFX_TOSH3CJ,
+ SFX_TOSH3CK,
+ SFX_TOSH3DA,
+ SFX_TOSH3EA,
+ SFX_TOSH3FA,
+ SFX_TOSH3FB,
+ SFX_TOSH3FC,
+ SFX_TOSH3FD,
+ SFX_TOSH3FE,
+ SFX_TOSH3FF,
+ SFX_TOSH3GA,
+ SFX_TOSH3GB,
+ SFX_TOSH3HA,
+ SFX_TOSH3IA,
+ SFX_TOSH3IB,
+ SFX_TOSH4AA,
+ SFX_TOSH4AB,
+ SFX_TOSH4AC,
+ SFX_TOSH4AD,
+ SFX_TOSH4AE,
+ SFX_TOSH4AF,
+ SFX_TOSH4AG,
+ SFX_TOSH4AH,
+ SFX_TOSH4AI,
+ SFX_TOSH4AJ,
+ SFX_TOSH4BA,
+ SFX_TOSH4BB,
+ SFX_TOSH4BC,
+ SFX_TOSH4CA,
+ SFX_TOSH4CB,
+ SFX_TOSH4CC,
+ SFX_TOSH4CD,
+ SFX_TOSH4CE,
+ SFX_TOSH4DA,
+ SFX_TOSH4DB,
+ SFX_TOSH4DC,
+ SFX_TOSHIKO_CRASH_CAR_1,
+ SFX_TOSHIKO_CRASH_CAR_2,
+ SFX_TOSHIKO_CRASH_CAR_3,
+ SFX_TOSHIKO_CRASH_CAR_4,
+ SFX_TOSHIKO_DRIVER_BLOCKED_1,
+ SFX_TOSHIKO_DRIVER_BLOCKED_2,
+ SFX_TOSHIKO_DRIVER_BLOCKED_3,
+ SFX_TOSHIKO_DRIVER_BLOCKED_4,
+ SFX_TOSHIKO_JACKED_CAR_1,
+ SFX_TOSHIKO_JACKED_CAR_2,
+ SFX_TOSHIKO_JACKED_CAR_3,
+ SFX_TOSHIKO_JACKED_CAR_4,
+ SFX_TOSHIKO_JACKED_CAR_5,
+ SFX_TOSHIKO_SHOCKED_1,
+ SFX_TOSHIKO_SHOCKED_2,
+ SFX_TOSHIKO_SHOCKED_3,
+ SFX_VAL1_AA,
+ SFX_VAL1_AB,
+ SFX_VAL1_AC,
+ SFX_VAL1_AD,
+ SFX_VAL1_AE,
+ SFX_VAL1_AF,
+ SFX_VAL1_AG,
+ SFX_VAL1_AH,
+ SFX_VAL1_AI,
+ SFX_VAL2_AA,
+ SFX_VAL2_AB,
+ SFX_VAL2_AC,
+ SFX_VAL2_AD,
+ SFX_VAL2_AE,
+ SFX_VAL2_AF,
+ SFX_VAL2_AG,
+ SFX_VAL2_AH,
+ SFX_VAL2_AI,
+ SFX_VAL3_AA,
+ SFX_VAL3_AB,
+ SFX_VAL3_AC,
+ SFX_VAL3_AD,
+ SFX_VAL3_AE,
+ SFX_VAL3_AF,
+ SFX_VIC1_BA,
+ SFX_VIC1_BB,
+ SFX_VIC1_BC,
+ SFX_VIC1_BD,
+ SFX_VIC1_BE,
+ SFX_VIC1_BF,
+ SFX_VIC1_CA,
+ SFX_VIC1_CB,
+ SFX_VIC1_CC,
+ SFX_VIC1_CD,
+ SFX_VIC1_CE,
+ SFX_VIC1_DA,
+ SFX_VIC1_DB,
+ SFX_VIC1_DC,
+ SFX_VIC1_DD,
+ SFX_VIC1_DE,
+ SFX_VIC1_DF,
+ SFX_VIC1_DG,
+ SFX_VIC1_DH,
+ SFX_VIC2_AA,
+ SFX_VIC2_AB,
+ SFX_VIC2_AC,
+ SFX_VIC2_AD,
+ SFX_VIC2_AF,
+ SFX_VIC2_AG,
+ SFX_VIC2_AH,
+ SFX_VIC2_BA,
+ SFX_VIC2_BB,
+ SFX_VIC2_BC,
+ SFX_VIC2_BD,
+ SFX_VIC2_BE,
+ SFX_VIC2_BF,
+ SFX_VIC2_BH,
+ SFX_VIC2_BI,
+ SFX_VIC2_BJ,
+ SFX_VIC2_CA,
+ SFX_VIC2_DA,
+ SFX_VIC2_DB,
+ SFX_VIC2_DC,
+ SFX_VIC3_AA,
+ SFX_VIC3_AB,
+ SFX_VIC3_AD,
+ SFX_VIC3_AE,
+ SFX_VIC3_AF,
+ SFX_VIC3_AG,
+ SFX_VIC3_AH,
+ SFX_VIC3_AJ,
+ SFX_VIC3_AK,
+ SFX_VIC3_AL,
+ SFX_VIC3_AM,
+ SFX_VIC3_AN,
+ SFX_VIC3_AO,
+ SFX_VIC3_BA,
+ SFX_VIC3_BB,
+ SFX_VIC3_BC,
+ SFX_VIC4_AA,
+ SFX_VIC4_AB,
+ SFX_VIC4_AC,
+ SFX_VIC4_AD,
+ SFX_VIC4_AE,
+ SFX_VIC4_AF,
+ SFX_VIC4_AG,
+ SFX_VIC4_AH,
+ SFX_VIC4_AI,
+ SFX_VIC4_AJ,
+ SFX_VIC4_AK,
+ SFX_VIC4_AL,
+ SFX_VIC4_AM,
+ SFX_VIC4_AN,
+ SFX_VIC4_BA,
+ SFX_VIC4_BB,
+ SFX_VIC4_BC,
+ SFX_VIC4_BD,
+ SFX_VIC4_BE,
+ SFX_VIC4_BF,
+ SFX_VIC4_BG,
+ SFX_VIC4_BH,
+ SFX_VIC4_CA,
+ SFX_VIC4_CB,
+ SFX_VIC5_AA,
+ SFX_VIC5_AB,
+ SFX_VIC5_AC,
+ SFX_VIC5_AD,
+ SFX_VIC5_AE,
+ SFX_VIC5_AF,
+ SFX_VIC5_AG,
+ SFX_VIC5_AH,
+ SFX_VIC5_AI,
+ SFX_VIC5_AJ,
+ SFX_VIC5_AK,
+ SFX_VIC5_AL,
+ SFX_VIC5_DA,
+ SFX_VIC5_DB,
+ SFX_VIC5_DC,
+ SFX_VIC5_EA,
+ SFX_VIC5_EB,
+ SFX_VIC5_EC,
+ SFX_VIC5_FA,
+ SFX_VIC5_FB,
+ SFX_VIC5_FC,
+ SFX_VIC5_FD,
+ SFX_VIC5_FE,
+ SFX_VIC5_FF,
+ SFX_VIC5_FG,
+ SFX_VIC5_FH,
+ SFX_VIC5_FI,
+ SFX_VIC5_FJ,
+ SFX_VIC5_FK,
+ SFX_VIC6_AA,
+ SFX_VIC6_AB,
+ SFX_VIC6_AC,
+ SFX_VIC6_AD,
+ SFX_VIC6_AE,
+ SFX_VIC6_AF,
+ SFX_VIC6_AG,
+ SFX_VIC6_AH,
+ SFX_VIC6_AI,
+ SFX_VIC6_AJ,
+ SFX_VIC6_AK,
+ SFX_VIC6_AL,
+ SFX_VIC6_AM,
+ SFX_VIC6_AN,
+ SFX_VIC6_AO,
+ SFX_VIC6_BA,
+ SFX_VIC6_BB,
+ SFX_VIC7_AA,
+ SFX_VIC7_AB,
+ SFX_VIC7_AC,
+ SFX_VIC7_AD,
+ SFX_VIC7_AE,
+ SFX_VIC7_AG,
+ SFX_VIC7_AH,
+ SFX_VIC7_AJ,
+ SFX_VIC7_AL,
+ SFX_VIC7_AM,
+ SFX_VIC7_AN,
+ SFX_VIC7_AO,
+ SFX_VIC7_BA,
+ SFX_VIC7_BB,
+ SFX_VIC7_BC,
+ SFX_VIC7_BD,
+ SFX_VIC7_BE,
+ SFX_VIC7_BF,
+ SFX_VIC7_BG,
+ SFX_VIC7_BH,
+ SFX_VIC7_BI,
+ SFX_VIC7_CA,
+ SFX_VIC7_CB,
+ SFX_VIC7_CC,
+ SFX_WAC1_AA,
+ SFX_WAC1_AB,
+ SFX_WAC1_AC,
+ SFX_WAC1_AD,
+ SFX_WAC1_AE,
+ SFX_WAC1_AF,
+ SFX_WAC1_AG,
+ SFX_WAC1_AH,
+ SFX_WAC2_AA,
+ SFX_WAC2_AB,
+ SFX_WAC2_AC,
+ SFX_WAC2_AD,
+ SFX_WAC2_AE,
+ SFX_WAC2_AF,
+ SFX_WAC2_AG,
+ SFX_WED1_AA,
+ SFX_WED1_AB,
+ SFX_WED1_AC,
+ SFX_WED1_AD,
+ SFX_WED1_AE,
+ SFX_WED1_AF,
+ SFX_WED1_AG,
+ SFX_WED2_AA,
+ SFX_WED2_AB,
+ SFX_WED2_AC,
+ SFX_WED2_AD,
+ SFX_WED2_AE,
+ SFX_WED2_AF,
+ SFX_WED2_AG,
+ SFX_WED2_AH,
+ SFX_WED3_AA,
+ SFX_WED3_AB,
+ SFX_WED3_AC,
+ SFX_WED3_AD,
+ SFX_WED3_AE,
+ SFX_WED3_AF,
+ SFX_WED3_AG,
+ SFX_WED3_AH,
+ SFX_WED3_AI,
+ SFX_WED3_AJ,
+ SFX_WED3_AK,
+ SFX_WED3_AL,
+ SFX_WORKER1_BUMP_1,
+ SFX_WORKER1_BUMP_2,
+ SFX_WORKER1_BUMP_3,
+ SFX_WORKER1_CHAT_1,
+ SFX_WORKER1_CHAT_2,
+ SFX_WORKER1_CHAT_3,
+ SFX_WORKER1_CHAT_4,
+ SFX_WORKER1_CRASH_CAR_1,
+ SFX_WORKER1_CRASH_CAR_2,
+ SFX_WORKER1_DODGE_1,
+ SFX_WORKER1_DODGE_2,
+ SFX_WORKER1_DRIVER_BLOCKED_1,
+ SFX_WORKER1_DRIVER_BLOCKED_2,
+ SFX_WORKER1_FIGHT_1,
+ SFX_WORKER1_FIGHT_2,
+ SFX_WORKER1_FIGHT_3,
+ SFX_WORKER1_GUN_THREATENED_1,
+ SFX_WORKER1_GUN_THREATENED_2,
+ SFX_WORKER1_JACKED_CAR_1,
+ SFX_WORKER1_JACKED_CAR_2,
+ SFX_WORKER1_JACKED_CAR_3,
+ SFX_WORKER1_SHOCKED_1,
+ SFX_WORKER1_SPECIAL_CASE_1,
+ SFX_WORKER1_SPECIAL_CASE_2,
+ SFX_WORKER1_SPECIAL_CASE_3,
+ SFX_WORKER2_BUMP_1,
+ SFX_WORKER2_BUMP_2,
+ SFX_WORKER2_BUMP_3,
+ SFX_WORKER2_CHAT_1,
+ SFX_WORKER2_CHAT_2,
+ SFX_WORKER2_CHAT_3,
+ SFX_WORKER2_CHAT_4,
+ SFX_WORKER2_CRASH_CAR_1,
+ SFX_WORKER2_CRASH_CAR_2,
+ SFX_WORKER2_DODGE_1,
+ SFX_WORKER2_DODGE_2,
+ SFX_WORKER2_DRIVER_BLOCKED_1,
+ SFX_WORKER2_DRIVER_BLOCKED_2,
+ SFX_WORKER2_FIGHT_1,
+ SFX_WORKER2_FIGHT_2,
+ SFX_WORKER2_FIGHT_3,
+ SFX_WORKER2_GUN_THREATENED_1,
+ SFX_WORKER2_GUN_THREATENED_2,
+ SFX_WORKER2_JACKED_CAR_1,
+ SFX_WORKER2_JACKED_CAR_2,
+ SFX_WORKER2_JACKED_CAR_3,
+ SFX_WORKER2_SHOCKED_1,
+ SFX_WORKER2_SPECIAL_CASE_1,
+ SFX_WORKER2_SPECIAL_CASE_2,
+ SFX_WORKER2_SPECIAL_CASE_3,
+
+ TOTAL_AUDIO_SAMPLES,
NO_SAMPLE,
// shorthands
- SAMPLEBANK_START = SFX_CAR_HORN_JEEP,
+ SAMPLEBANK_START = SFX_AIR_BRAKES,
SAMPLEBANK_END = SFX_FOOTSTEP_SAND_4,
SAMPLEBANK_MAX = SFX_FOOTSTEP_SAND_4 + 1,
SAMPLEBANK_PED_START = SFX_FOOTSTEP_SAND_4 + 1,
- SAMPLEBANK_PED_END = 9940,
+ SAMPLEBANK_PED_END = SFX_WORKER2_SPECIAL_CASE_3,
SAMPLEBANK_PED_MAX = SAMPLEBANK_PED_END + 1,
// LCS: TODO
diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp
index ac30f757..48c78c88 100644
--- a/src/audio/AudioScriptObject.cpp
+++ b/src/audio/AudioScriptObject.cpp
@@ -23,25 +23,25 @@ cAudioScriptObject::Reset()
}
void *
-cAudioScriptObject::operator new(size_t sz)
+cAudioScriptObject::operator new(size_t sz) throw()
{
return CPools::GetAudioScriptObjectPool()->New();
}
void *
-cAudioScriptObject::operator new(size_t sz, int handle)
+cAudioScriptObject::operator new(size_t sz, int handle) throw()
{
return CPools::GetAudioScriptObjectPool()->New(handle);
}
void
-cAudioScriptObject::operator delete(void *p, size_t sz)
+cAudioScriptObject::operator delete(void *p, size_t sz) throw()
{
CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p);
}
void
-cAudioScriptObject::operator delete(void *p, int handle)
+cAudioScriptObject::operator delete(void *p, int handle) throw()
{
CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p);
}
@@ -90,6 +90,8 @@ cAudioScriptObject::SaveAllAudioScriptObjects(uint8 *buf, uint32 *size)
void
PlayOneShotScriptObject(uint8 id, CVector const &pos)
{
+ if (!DMAudio.IsAudioInitialised()) return;
+
cAudioScriptObject *audioScriptObject = new cAudioScriptObject();
audioScriptObject->Posn = pos;
audioScriptObject->AudioId = id;
diff --git a/src/audio/AudioScriptObject.h b/src/audio/AudioScriptObject.h
index 8110b2bb..b9a7e61b 100644
--- a/src/audio/AudioScriptObject.h
+++ b/src/audio/AudioScriptObject.h
@@ -12,10 +12,10 @@ public:
void Reset(); /// ok
- static void* operator new(size_t);
- static void* operator new(size_t, int);
- static void operator delete(void*, size_t);
- static void operator delete(void*, int);
+ static void* operator new(size_t) throw();
+ static void* operator new(size_t, int) throw();
+ static void operator delete(void*, size_t) throw();
+ static void operator delete(void*, int) throw();
static void LoadAllAudioScriptObjects(uint8 *buf, uint32 size);
static void SaveAllAudioScriptObjects(uint8 *buf, uint32 *size);
diff --git a/src/audio/DMAudio.cpp b/src/audio/DMAudio.cpp
index 7c99e89f..bc77361f 100644
--- a/src/audio/DMAudio.cpp
+++ b/src/audio/DMAudio.cpp
@@ -39,7 +39,7 @@ cDMAudio::DestroyEntity(int32 audioEntity)
}
void
-cDMAudio::SetEntityStatus(int32 audioEntity, uint8 status)
+cDMAudio::SetEntityStatus(int32 audioEntity, bool8 status)
{
AudioManager.SetEntityStatus(audioEntity, status);
}
@@ -57,7 +57,7 @@ cDMAudio::DestroyAllGameCreatedEntities(void)
}
void
-cDMAudio::SetMonoMode(uint8 mono)
+cDMAudio::SetMonoMode(bool8 mono)
{
AudioManager.SetMonoMode(mono);
}
@@ -142,7 +142,7 @@ cDMAudio::SetSpeakerConfig(int32 config)
AudioManager.SetSpeakerConfig(config);
}
-bool
+bool8
cDMAudio::IsMP3RadioChannelAvailable(void)
{
return AudioManager.IsMP3RadioChannelAvailable();
@@ -161,12 +161,12 @@ cDMAudio::ReacquireDigitalHandle(void)
}
void
-cDMAudio::SetDynamicAcousticModelingStatus(uint8 status)
+cDMAudio::SetDynamicAcousticModelingStatus(bool8 status)
{
AudioManager.SetDynamicAcousticModelingStatus(status);
}
-bool
+bool8
cDMAudio::CheckForAnAudioFileOnCD(void)
{
return AudioManager.CheckForAnAudioFileOnCD();
@@ -178,7 +178,7 @@ cDMAudio::GetCDAudioDriveLetter(void)
return AudioManager.GetCDAudioDriveLetter();
}
-bool
+bool8
cDMAudio::IsAudioInitialised(void)
{
return AudioManager.IsAudioInitialised();
@@ -196,7 +196,7 @@ cDMAudio::CreateLoopingScriptObject(cAudioScriptObject *scriptObject)
int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, scriptObject);
if ( AEHANDLE_IS_OK(audioEntity) )
- AudioManager.SetEntityStatus(audioEntity, true);
+ AudioManager.SetEntityStatus(audioEntity, TRUE);
return audioEntity;
}
@@ -214,7 +214,7 @@ cDMAudio::CreateOneShotScriptObject(cAudioScriptObject *scriptObject)
if ( AEHANDLE_IS_OK(audioEntity) )
{
- AudioManager.SetEntityStatus(audioEntity, true);
+ AudioManager.SetEntityStatus(audioEntity, TRUE);
AudioManager.PlayOneShot(audioEntity, scriptObject->AudioId, 0.0f);
}
}
@@ -244,7 +244,7 @@ cDMAudio::PlayRadioAnnouncement(uint32 announcement)
}
void
-cDMAudio::PlayFrontEndTrack(uint32 track, uint8 frontendFlag)
+cDMAudio::PlayFrontEndTrack(uint32 track, bool8 frontendFlag)
{
MusicManager.PlayFrontEndTrack(track, frontendFlag);
}
@@ -309,7 +309,7 @@ cDMAudio::PlayLoadedMissionAudio(uint8 slot)
AudioManager.PlayLoadedMissionAudio(slot);
}
-bool
+bool8
cDMAudio::IsMissionAudioSampleFinished(uint8 slot)
{
return AudioManager.IsMissionAudioSampleFinished(slot);
@@ -340,7 +340,7 @@ cDMAudio::SetRadioChannel(uint32 radio, int32 pos)
}
void
-cDMAudio::SetStartingTrackPositions(uint8 isStartGame)
+cDMAudio::SetStartingTrackPositions(bool8 isStartGame)
{
MusicManager.SetStartingTrackPositions(isStartGame);
}
@@ -364,7 +364,7 @@ cDMAudio::GetRadioPosition(uint32 station)
}
void
-cDMAudio::SetPedTalkingStatus(CPed *ped, uint8 status)
+cDMAudio::SetPedTalkingStatus(CPed *ped, bool8 status)
{
return AudioManager.SetPedTalkingStatus(ped, status);
}
@@ -376,7 +376,7 @@ cDMAudio::SetPlayersMood(uint8 mood, uint32 time)
}
void
-cDMAudio::ShutUpPlayerTalking(uint8 state)
+cDMAudio::ShutUpPlayerTalking(bool8 state)
{
AudioManager.m_bIsPlayerShutUp = state;
} \ No newline at end of file
diff --git a/src/audio/DMAudio.h b/src/audio/DMAudio.h
index 2c10043f..5b684fd3 100644
--- a/src/audio/DMAudio.h
+++ b/src/audio/DMAudio.h
@@ -25,11 +25,11 @@ public:
int32 CreateEntity(eAudioType type, void *UID);
void DestroyEntity(int32 audioEntity);
- void SetEntityStatus(int32 audioEntity, uint8 status);
+ void SetEntityStatus(int32 audioEntity, bool8 status);
void PlayOneShot(int32 audioEntity, uint16 oneShot, float volume);
void DestroyAllGameCreatedEntities(void);
- void SetMonoMode(uint8 mono);
+ void SetMonoMode(bool8 mono);
void SetMP3BoostVolume(uint8 volume);
void SetEffectsMasterVolume(uint8 volume);
void SetMusicMasterVolume(uint8 volume);
@@ -46,17 +46,17 @@ public:
void SetSpeakerConfig(int32 config);
- bool IsMP3RadioChannelAvailable(void);
+ bool8 IsMP3RadioChannelAvailable(void);
void ReleaseDigitalHandle(void);
void ReacquireDigitalHandle(void);
- void SetDynamicAcousticModelingStatus(uint8 status);
+ void SetDynamicAcousticModelingStatus(bool8 status);
- bool CheckForAnAudioFileOnCD(void);
+ bool8 CheckForAnAudioFileOnCD(void);
char GetCDAudioDriveLetter(void);
- bool IsAudioInitialised(void);
+ bool8 IsAudioInitialised(void);
void ReportCrime(eCrimeType crime, CVector const &pos);
@@ -70,7 +70,7 @@ public:
void PlayFrontEndSound(uint16 frontend, uint32 volume);
void PlayRadioAnnouncement(uint32 announcement);
- void PlayFrontEndTrack(uint32 track, uint8 frontendFlag);
+ void PlayFrontEndTrack(uint32 track, bool8 frontendFlag);
void StopFrontEndTrack(void);
void ResetTimers(uint32 time);
@@ -85,19 +85,19 @@ public:
uint8 GetMissionAudioLoadingStatus(uint8 slot);
void SetMissionAudioLocation(uint8 slot, float x, float y, float z);
void PlayLoadedMissionAudio(uint8 slot);
- bool IsMissionAudioSampleFinished(uint8 slot);
+ bool8 IsMissionAudioSampleFinished(uint8 slot);
void ClearMissionAudio(uint8 slot);
uint8 GetRadioInCar(void);
void SetRadioInCar(uint32 radio);
void SetRadioChannel(uint32 radio, int32 pos);
- void SetStartingTrackPositions(uint8 isStartGame);
+ void SetStartingTrackPositions(bool8 isStartGame);
float *GetListenTimeArray();
uint32 GetFavouriteRadioStation();
int32 GetRadioPosition(uint32 station);
- void SetPedTalkingStatus(class CPed *ped, uint8 status);
+ void SetPedTalkingStatus(class CPed *ped, bool8 status);
void SetPlayersMood(uint8 mood, uint32 time);
- void ShutUpPlayerTalking(uint8 state);
+ void ShutUpPlayerTalking(bool8 state);
};
extern cDMAudio DMAudio;
diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp
index 0a28421d..dad45371 100644
--- a/src/audio/MusicManager.cpp
+++ b/src/audio/MusicManager.cpp
@@ -21,10 +21,14 @@
#include "DMAudio.h"
#include "GenericGameStorage.h"
+#if !defined FIX_BUGS && (defined RADIO_SCROLL_TO_PREV_STATION || defined RADIO_OFF_TEXT)
+static_assert(false, "R*'s radio implementation is quite buggy, RADIO_SCROLL_TO_PREV_STATION and RADIO_OFF_TEXT won't work without FIX_BUGS");
+#endif
+
cMusicManager MusicManager;
int32 gNumRetunePresses;
int32 gRetuneCounter;
-bool g_bAnnouncementReadPosAlready;
+bool8 g_bAnnouncementReadPosAlready;
uint8 RadioStaticCounter = 5;
uint32 RadioStaticTimer;
@@ -46,13 +50,13 @@ uint32 NewGameRadioTimers[10] =
cMusicManager::cMusicManager()
{
- m_bIsInitialised = false;
- m_bDisabled = false;
+ m_bIsInitialised = FALSE;
+ m_bDisabled = FALSE;
m_nFrontendTrack = NO_TRACK;
m_nPlayingTrack = NO_TRACK;
m_nUpcomingMusicMode = MUSICMODE_DISABLED;
m_nMusicMode = MUSICMODE_DISABLED;
- field_2 = false;
+ m_bSetNextStation = FALSE;
for (int i = 0; i < NUM_RADIOS; i++)
aListenTimeArray[i] = 0.0f;
@@ -62,7 +66,7 @@ cMusicManager::cMusicManager()
m_nCurrentVolume = 0;
m_nMaxVolume = 0;
m_nAnnouncement = NO_TRACK;
- m_bAnnouncementInProgress = false;
+ m_bAnnouncementInProgress = FALSE;
}
void
@@ -70,45 +74,45 @@ cMusicManager::ResetMusicAfterReload()
{
float afRadioTime[NUM_RADIOS];
- m_bRadioSetByScript = false;
- m_nRadioStation = WILDSTYLE;
+ m_bRadioSetByScript = FALSE;
+ m_nRadioStationScript = WILDSTYLE;
m_nRadioPosition = -1;
m_nAnnouncement = NO_TRACK;
- m_bAnnouncementInProgress = false;
- field_2 = false;
+ m_bAnnouncementInProgress = FALSE;
+ m_bSetNextStation = FALSE;
RadioStaticTimer = 0;
gNumRetunePresses = 0;
gRetuneCounter = 0;
m_nFrontendTrack = NO_TRACK;
m_nPlayingTrack = NO_TRACK;
- field_398E = false;
- field_398F = false;
- m_nStreamedTrack = NO_TRACK;
- field_3994 = false;
- field_3995 = false;
- field_3996 = false;
- field_3997 = false;
+ m_FrontendLoopFlag = FALSE;
+ m_bTrackChangeStarted = FALSE;
+ m_nNextTrack = NO_TRACK;
+ m_nNextLoopFlag = FALSE;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
+ m_bGameplayAllowsRadio = FALSE;
+ m_bRadioStreamReady = FALSE;
nFramesSinceCutsceneEnded = -1;
- field_3999 = false;
- field_399A = false;
- field_399C = false;
+ m_bUserResumedGame = FALSE;
+ m_bMusicModeChangeStarted = FALSE;
+ m_bEarlyFrontendTrack = FALSE;
m_nVolumeLatency = 0;
m_nCurrentVolume = 0;
m_nMaxVolume = 0;
- bool bRadioWasEverListened = false;
+ bool8 bRadioWasEverListened = FALSE;
for (int i = 0; i < NUM_RADIOS; i++) {
afRadioTime[i] = CStats::GetFavoriteRadioStationList(i);
if (!bRadioWasEverListened && afRadioTime[i] != 0.0f)
- bRadioWasEverListened = true;
+ bRadioWasEverListened = TRUE;
}
if (!bRadioWasEverListened) return;
for (int i = 0; i < NUM_RADIOS; i++) {
aListenTimeArray[i] = afRadioTime[i];
- uint32 trackPos = GetSavedRadioStationPosition(i);
+ int32 trackPos = GetSavedRadioStationPosition(i);
if (trackPos != -1) {
if (trackPos > m_aTracks[i].m_nLength) {
debug("Radio Track %d saved position is %d, Length is only %d\n", i, trackPos, m_aTracks[i].m_nLength);
@@ -121,7 +125,7 @@ cMusicManager::ResetMusicAfterReload()
}
void
-cMusicManager::SetStartingTrackPositions(uint8 isNewGameTimer)
+cMusicManager::SetStartingTrackPositions(bool8 isNewGameTimer)
{
int pos;
@@ -170,16 +174,16 @@ cMusicManager::SetStartingTrackPositions(uint8 isNewGameTimer)
}
}
-bool
+bool8
cMusicManager::Initialise()
{
if (!IsInitialised()) {
- m_bIsInitialised = true;
- SetStartingTrackPositions(false);
- m_bResetTimers = false;
+ m_bIsInitialised = TRUE;
+ SetStartingTrackPositions(FALSE);
+ m_bResetTimers = FALSE;
m_nResetTime = 0;
- m_bRadioSetByScript = false;
- m_nRadioStation = WILDSTYLE;
+ m_bRadioSetByScript = FALSE;
+ m_nRadioStationScript = WILDSTYLE;
m_nRadioPosition = -1;
m_nRadioInCar = NO_TRACK;
gRetuneCounter = 0;
@@ -188,18 +192,18 @@ cMusicManager::Initialise()
m_nPlayingTrack = NO_TRACK;
m_nUpcomingMusicMode = MUSICMODE_DISABLED;
m_nMusicMode = MUSICMODE_DISABLED;
- field_398E = false;
- field_398F = false;
- m_nStreamedTrack = NO_TRACK;
- field_3994 = false;
- field_3995 = false;
- field_3996 = false;
- field_3997 = false;
+ m_FrontendLoopFlag = FALSE;
+ m_bTrackChangeStarted = FALSE;
+ m_nNextTrack = NO_TRACK;
+ m_nNextLoopFlag = FALSE;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
+ m_bGameplayAllowsRadio = FALSE;
+ m_bRadioStreamReady = FALSE;
nFramesSinceCutsceneEnded = -1;
- field_3999 = false;
- field_399A = false;
+ m_bUserResumedGame = FALSE;
+ m_bMusicModeChangeStarted = FALSE;
m_nMusicModeToBeSet = MUSICMODE_DISABLED;
- field_399C = false;
+ m_bEarlyFrontendTrack = FALSE;
m_nVolumeLatency = 0;
m_nCurrentVolume = 0;
m_nMaxVolume = 0;
@@ -212,11 +216,11 @@ cMusicManager::Terminate()
{
if (!IsInitialised()) return;
- if (SampleManager.IsStreamPlaying(0)) {
- SampleManager.StopStreamedFile(0);
+ if (SampleManager.IsStreamPlaying()) {
+ SampleManager.StopStreamedFile();
m_nPlayingTrack = NO_TRACK;
}
- m_bIsInitialised = false;
+ m_bIsInitialised = FALSE;
}
void
@@ -226,29 +230,29 @@ cMusicManager::SetRadioChannelByScript(uint32 station, int32 pos)
if (station == STREAMED_SOUND_RADIO_MP3_PLAYER)
station = STREAMED_SOUND_CITY_AMBIENT;
if (station <= STREAMED_SOUND_RADIO_POLICE) {
- m_bRadioSetByScript = true;
- m_nRadioStation = station;
+ m_bRadioSetByScript = TRUE;
+ m_nRadioStationScript = station;
m_nRadioPosition = pos == -1 ? -1 : pos % m_aTracks[station].m_nLength;
}
}
}
-bool
+bool8
cMusicManager::PlayerInCar()
{
CVehicle *vehicle = AudioManager.FindVehicleOfPlayer();
if(!vehicle)
- return false;
+ return FALSE;
int32 State = FindPlayerPed()->m_nPedState;
if(State == PED_DRAG_FROM_CAR || State == PED_EXIT_CAR || State == PED_ARRESTED)
- return false;
+ return FALSE;
if (vehicle->GetStatus() == STATUS_WRECKED)
- return false;
+ return FALSE;
- return true;
+ return TRUE;
}
uint32
@@ -292,7 +296,7 @@ cMusicManager::SetRadioInCar(uint32 station)
void
cMusicManager::RecordRadioStats()
{
- if (m_nPlayingTrack < STREAMED_SOUND_CITY_AMBIENT) {
+ if (m_nPlayingTrack < NUM_RADIOS) {
double time /*Rusty*/ = CTimer::GetTimeInMillisecondsPauseMode();
if (time > m_nLastTrackServiceTime)
aListenTimeArray[m_nPlayingTrack] += time - m_nLastTrackServiceTime;
@@ -310,27 +314,27 @@ cMusicManager::ChangeMusicMode(uint8 mode)
case MUSICMODE_GAME: m_nUpcomingMusicMode = MUSICMODE_GAME; break;
case MUSICMODE_CUTSCENE:
m_nUpcomingMusicMode = MUSICMODE_CUTSCENE;
- if (SampleManager.IsStreamPlaying(0)) {
+ if (SampleManager.IsStreamPlaying()) {
if (m_nPlayingTrack != NO_TRACK) {
RecordRadioStats();
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
}
}
- SampleManager.StopStreamedFile(0);
- while (SampleManager.IsStreamPlaying(0))
- SampleManager.StopStreamedFile(0);
+ SampleManager.StopStreamedFile();
+ while (SampleManager.IsStreamPlaying())
+ SampleManager.StopStreamedFile();
m_nMusicMode = m_nUpcomingMusicMode;
- field_399A = false;
- field_398F = false;
- m_nStreamedTrack = NO_TRACK;
- field_3994 = false;
- field_3995 = false;
+ m_bMusicModeChangeStarted = FALSE;
+ m_bTrackChangeStarted = FALSE;
+ m_nNextTrack = NO_TRACK;
+ m_nNextLoopFlag = FALSE;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
m_nPlayingTrack = NO_TRACK;
m_nFrontendTrack = NO_TRACK;
- m_bAnnouncementInProgress = false;
+ m_bAnnouncementInProgress = FALSE;
m_nAnnouncement = NO_TRACK;
- g_bAnnouncementReadPosAlready = false;
+ g_bAnnouncementReadPosAlready = FALSE;
break;
case MUSICMODE_DISABLE: m_nUpcomingMusicMode = MUSICMODE_DISABLED; break;
default: return;
@@ -340,7 +344,7 @@ cMusicManager::ChangeMusicMode(uint8 mode)
void
cMusicManager::ResetTimers(int32 time)
{
- m_bResetTimers = true;
+ m_bResetTimers = TRUE;
m_nResetTime = time;
}
@@ -348,15 +352,15 @@ void
cMusicManager::Service()
{
if (m_bResetTimers) {
- m_bResetTimers = false;
+ m_bResetTimers = FALSE;
m_nLastTrackServiceTime = m_nResetTime;
}
- static bool bRadioStatsRecorded = false;
+ static bool8 bRadioStatsRecorded = FALSE;
if (!m_bIsInitialised || m_bDisabled) return;
- if (!field_399A)
+ if (!m_bMusicModeChangeStarted)
m_nMusicModeToBeSet = m_nUpcomingMusicMode;
if (m_nMusicModeToBeSet == m_nMusicMode) {
if (!AudioManager.m_nUserPause || AudioManager.m_nPreviousUserPause || m_nMusicMode != MUSICMODE_FRONTEND)
@@ -365,39 +369,39 @@ cMusicManager::Service()
{
case MUSICMODE_FRONTEND: ServiceFrontEndMode(); break;
case MUSICMODE_GAME: ServiceGameMode(); break;
- case MUSICMODE_CUTSCENE: SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 0); break;
+ case MUSICMODE_CUTSCENE: SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE); break;
}
}
else
m_nMusicMode = MUSICMODE_DISABLED;
} else {
- field_399A = true;
- if (!field_3999 && !AudioManager.m_nUserPause && AudioManager.m_nPreviousUserPause)
- field_3999 = true;
+ m_bMusicModeChangeStarted = TRUE;
+ if (!m_bUserResumedGame && !AudioManager.m_nUserPause && AudioManager.m_nPreviousUserPause)
+ m_bUserResumedGame = TRUE;
if (AudioManager.m_FrameCounter % 4 == 0) {
gNumRetunePresses = 0;
gRetuneCounter = 0;
- field_2 = false;
- if (SampleManager.IsStreamPlaying(0)) {
+ m_bSetNextStation = FALSE;
+ if (SampleManager.IsStreamPlaying()) {
if (m_nPlayingTrack != NO_TRACK && !bRadioStatsRecorded)
{
RecordRadioStats();
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
- bRadioStatsRecorded = true;
+ bRadioStatsRecorded = TRUE;
}
- SampleManager.StopStreamedFile(0);
+ SampleManager.StopStreamedFile();
} else {
- bRadioStatsRecorded = false;
+ bRadioStatsRecorded = FALSE;
m_nMusicMode = m_nMusicModeToBeSet;
- field_399A = false;
- field_398F = false;
- m_nStreamedTrack = NO_TRACK;
- field_3994 = false;
- field_3995 = false;
+ m_bMusicModeChangeStarted = FALSE;
+ m_bTrackChangeStarted = FALSE;
+ m_nNextTrack = NO_TRACK;
+ m_nNextLoopFlag = FALSE;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
m_nPlayingTrack = NO_TRACK;
- if (field_399C)
- field_399C = false;
+ if (m_bEarlyFrontendTrack)
+ m_bEarlyFrontendTrack = FALSE;
else
m_nFrontendTrack = NO_TRACK;
}
@@ -408,72 +412,72 @@ cMusicManager::Service()
void
cMusicManager::ServiceFrontEndMode()
{
- static bool bRadioStatsRecorded = false;
+ static bool8 bRadioStatsRecorded = FALSE;
if (m_bAnnouncementInProgress) {
- SampleManager.StopStreamedFile(0);
- if (SampleManager.IsStreamPlaying(0))
+ SampleManager.StopStreamedFile();
+ if (SampleManager.IsStreamPlaying())
return;
- g_bAnnouncementReadPosAlready = false;
+ g_bAnnouncementReadPosAlready = FALSE;
m_nAnnouncement = NO_TRACK;
- m_bAnnouncementInProgress = false;
- m_nStreamedTrack = NO_TRACK;
+ m_bAnnouncementInProgress = FALSE;
+ m_nNextTrack = NO_TRACK;
m_nFrontendTrack = NO_TRACK;
m_nPlayingTrack = NO_TRACK;
}
if (AudioManager.m_FrameCounter % 4 != 0) return;
- if (!field_398F && !field_3995) {
- m_nStreamedTrack = m_nFrontendTrack;
- field_3994 = field_398E;
+ if (!m_bTrackChangeStarted && !m_bVerifyNextTrackStartedToPlay) {
+ m_nNextTrack = m_nFrontendTrack;
+ m_nNextLoopFlag = m_FrontendLoopFlag;
}
- if (m_nStreamedTrack == m_nPlayingTrack) {
- if (SampleManager.IsStreamPlaying(0)) {
+ if (m_nNextTrack == m_nPlayingTrack) {
+ if (SampleManager.IsStreamPlaying()) {
if (m_nVolumeLatency > 0) m_nVolumeLatency--;
else {
if (m_nCurrentVolume < m_nMaxVolume)
m_nCurrentVolume = Min(m_nMaxVolume, m_nCurrentVolume + 6);
- SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, FALSE);
}
} else {
if (m_nPlayingTrack == STREAMED_SOUND_RADIO_MP3_PLAYER)
- SampleManager.StartStreamedFile(STREAMED_SOUND_RADIO_MP3_PLAYER, 0, 0);
+ SampleManager.StartStreamedFile(STREAMED_SOUND_RADIO_MP3_PLAYER, 0);
else if (m_nPlayingTrack == STREAMED_SOUND_MISSION_COMPLETED && AudioManager.m_nUserPause == 0)
ChangeMusicMode(MUSICMODE_GAME);
}
} else {
- field_398F = true;
- if (field_3995 || !SampleManager.IsStreamPlaying(0)) {
- bRadioStatsRecorded = false;
- if (SampleManager.IsStreamPlaying(0) || m_nStreamedTrack == NO_TRACK) {
- m_nPlayingTrack = m_nStreamedTrack;
- field_3995 = false;
- field_398F = false;
+ m_bTrackChangeStarted = TRUE;
+ if (m_bVerifyNextTrackStartedToPlay || !SampleManager.IsStreamPlaying()) {
+ bRadioStatsRecorded = FALSE;
+ if (SampleManager.IsStreamPlaying() || m_nNextTrack == NO_TRACK) {
+ m_nPlayingTrack = m_nNextTrack;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
+ m_bTrackChangeStarted = FALSE;
} else {
- uint32 trackStartPos = (m_nStreamedTrack > STREAMED_SOUND_RADIO_POLICE) ? 0 : GetTrackStartPos(m_nStreamedTrack);
- if (m_nStreamedTrack != NO_TRACK) {
- SampleManager.SetStreamedFileLoopFlag(field_3994, 0);
- SampleManager.StartStreamedFile(m_nStreamedTrack, trackStartPos, 0);
+ uint32 trackStartPos = (m_nNextTrack > STREAMED_SOUND_RADIO_POLICE) ? 0 : GetTrackStartPos(m_nNextTrack);
+ if (m_nNextTrack != NO_TRACK) {
+ SampleManager.SetStreamedFileLoopFlag(m_nNextLoopFlag);
+ SampleManager.StartStreamedFile(m_nNextTrack, trackStartPos);
m_nVolumeLatency = 3;
m_nCurrentVolume = 0;
m_nMaxVolume = 100;
- SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0);
- if (m_nStreamedTrack < STREAMED_SOUND_CITY_AMBIENT)
+ SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, FALSE);
+ if (m_nNextTrack < STREAMED_SOUND_CITY_AMBIENT)
m_nLastTrackServiceTime = CTimer::GetTimeInMillisecondsPauseMode();
- field_3995 = true;
+ m_bVerifyNextTrackStartedToPlay = TRUE;
}
}
} else {
if (m_nPlayingTrack != NO_TRACK && !bRadioStatsRecorded) {
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
RecordRadioStats();
- bRadioStatsRecorded = true;
+ bRadioStatsRecorded = TRUE;
}
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
- SampleManager.StopStreamedFile(0);
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
+ SampleManager.StopStreamedFile();
}
}
}
@@ -483,8 +487,8 @@ cMusicManager::ServiceGameMode()
{
CPed *ped = FindPlayerPed();
CVehicle *vehicle = AudioManager.FindVehicleOfPlayer();
- field_3997 = field_3996;
- field_3996 = false;
+ m_bRadioStreamReady = m_bGameplayAllowsRadio;
+ m_bGameplayAllowsRadio = FALSE;
switch (CGame::currArea)
{
@@ -495,29 +499,28 @@ cMusicManager::ServiceGameMode()
case AREA_BLOOD:
case AREA_OVALRING:
case AREA_MALIBU_CLUB:
- field_3996 = false;
+ m_bGameplayAllowsRadio = FALSE;
break;
default:
if (SampleManager.GetMusicVolume()) {
if (PlayerInCar())
- field_3996 = true;
+ m_bGameplayAllowsRadio = TRUE;
} else
- field_3996 = false;
+ m_bGameplayAllowsRadio = FALSE;
break;
}
- if (!field_3996) {
+ if (!m_bGameplayAllowsRadio) {
nFramesSinceCutsceneEnded = -1;
gNumRetunePresses = 0;
gRetuneCounter = 0;
- field_2 = false;
+ m_bSetNextStation = FALSE;
} else if (ped) {
- if(!ped->DyingOrDead()) {
+ if(!ped->DyingOrDead() && vehicle) {
#ifdef GTA_PC
if (SampleManager.IsMP3RadioChannelAvailable()
&& vehicle->m_nRadioStation < USERTRACK
- && ControlsManager.GetIsKeyboardKeyJustDown(rsF9)
- && vehicle)
+ && ControlsManager.GetIsKeyboardKeyJustDown(rsF9))
{
if (!UsesPoliceRadio(vehicle) && !UsesTaxiRadio(vehicle)) {
gNumRetunePresses = 0;
@@ -532,7 +535,7 @@ cMusicManager::ServiceGameMode()
}
}
#endif
- if (CPad::GetPad(0)->ChangeStationJustDown() && vehicle)
+ if (CPad::GetPad(0)->ChangeStationJustDown())
{
if (!UsesPoliceRadio(vehicle) && !UsesTaxiRadio(vehicle)) {
gNumRetunePresses++;
@@ -540,159 +543,195 @@ cMusicManager::ServiceGameMode()
RadioStaticCounter = 0;
}
}
-
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ else if(CPad::GetPad(0)->GetMouseWheelDownJustDown() || CPad::GetPad(0)->GetMouseWheelUpJustDown()) {
+ if(!UsesPoliceRadio(vehicle) && !UsesTaxiRadio(vehicle)) {
+ int scrollNext = ControlsManager.GetControllerKeyAssociatedWithAction(VEHICLE_CHANGE_RADIO_STATION, MOUSE);
+ int scrollPrev = scrollNext == rsMOUSEWHEELUPBUTTON ? rsMOUSEWHEELDOWNBUTTON
+ : scrollNext == rsMOUSEWHEELDOWNBUTTON ? rsMOUSEWHEELUPBUTTON : -1;
+
+ if(scrollPrev != -1 && !ControlsManager.IsAnyVehicleActionAssignedToMouseKey(scrollPrev)) {
+ gNumRetunePresses--;
+ gRetuneCounter = 20;
+ RadioStaticCounter = 0;
+ int track = gNumRetunePresses + vehicle->m_nRadioStation;
+ while(track < 0) track += NUM_RADIOS + 1;
+ while(track >= NUM_RADIOS + 1) track -= NUM_RADIOS + 1;
+ if(!DMAudio.IsMP3RadioChannelAvailable() && track == USERTRACK) gNumRetunePresses--;
+ }
+ }
+ }
+#endif
}
}
- if (field_3999)
+ if (m_bUserResumedGame)
{
- field_3997 = false;
- field_3999 = false;
+ m_bRadioStreamReady = FALSE;
+ m_bUserResumedGame = FALSE;
}
if (m_nPlayingTrack == NO_TRACK && m_nFrontendTrack == NO_TRACK)
- field_3997 = false;
+ m_bRadioStreamReady = FALSE;
- if (field_3996)
+ if (m_bGameplayAllowsRadio)
{
- if (field_3997)
+ if (!m_bRadioStreamReady)
{
- if (m_nAnnouncement < NO_TRACK) {
- if ((m_bAnnouncementInProgress || m_nFrontendTrack == m_nPlayingTrack) && ServiceAnnouncement()) {
- if (m_bAnnouncementInProgress) {
- field_2 = false;
- gNumRetunePresses = 0;
- gRetuneCounter = 0;
- return;
- }
- if(m_nAnnouncement == NO_TRACK) {
- m_nStreamedTrack = NO_TRACK;
- m_nFrontendTrack = GetCarTuning();
- field_2 = false;
- gRetuneCounter = 0;
- gNumRetunePresses = 0;
- }
+ if(vehicle == nil) {
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_LCFR; // huh?
+ return;
+ }
+ if(m_bRadioSetByScript) {
+ if(UsesPoliceRadio(vehicle))
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_POLICE;
+ else if(UsesTaxiRadio(vehicle))
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_TAXI;
+ else {
+ m_nFrontendTrack = m_nRadioStationScript;
+ vehicle->m_nRadioStation = m_nRadioStationScript;
+ }
+ if(m_nRadioPosition != -1) {
+ m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition;
+ m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
}
+ m_bRadioSetByScript = FALSE;
+ return;
}
- if (!m_bAnnouncementInProgress
- && m_nAnnouncement == NO_TRACK
- && m_nPlayingTrack == STREAMED_SOUND_RADIO_MP3_PLAYER
- && !SampleManager.IsStreamPlaying(0))
- {
- SampleManager.StartStreamedFile(STREAMED_SOUND_RADIO_MP3_PLAYER, 0, 0);
+
+ // This starts the radio when you enter the car.
+ m_nFrontendTrack = GetCarTuning();
+ return;
+ }
+ if (m_nAnnouncement < NO_TRACK) {
+ if ((m_bAnnouncementInProgress || m_nFrontendTrack == m_nPlayingTrack) && ServiceAnnouncement()) {
+ if (m_bAnnouncementInProgress) {
+ m_bSetNextStation = FALSE;
+ gNumRetunePresses = 0;
+ gRetuneCounter = 0;
+ return;
+ }
+ if(m_nAnnouncement == NO_TRACK) {
+ m_nNextTrack = NO_TRACK;
+ m_nFrontendTrack = GetCarTuning();
+ m_bSetNextStation = FALSE;
+ gRetuneCounter = 0;
+ gNumRetunePresses = 0;
+ }
}
+ }
+ if (!m_bAnnouncementInProgress
+ && m_nAnnouncement == NO_TRACK
+ && m_nPlayingTrack == STREAMED_SOUND_RADIO_MP3_PLAYER
+ && !SampleManager.IsStreamPlaying())
+ {
+ SampleManager.StartStreamedFile(STREAMED_SOUND_RADIO_MP3_PLAYER, 0);
+ }
- if (!m_bRadioSetByScript)
+ if (!m_bRadioSetByScript)
+ {
+ // Because when you switch radio back and forth, gNumRetunePresses will be 0 but gRetuneCounter won't.
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ if(gRetuneCounter != 0) {
+ if(gRetuneCounter > 1)
+ gRetuneCounter--;
+ else if(gRetuneCounter == 1) {
+ m_bSetNextStation = TRUE;
+ gRetuneCounter = 0;
+ }
+ }
+#else
+ if (gNumRetunePresses != 0)
{
- if (gNumRetunePresses != 0)
+ if (--gRetuneCounter == 0)
{
- if (--gRetuneCounter == 0)
- {
- field_2 = true;
- gRetuneCounter = 0;
- }
+ m_bSetNextStation = TRUE;
+ gRetuneCounter = 0;
}
- if (gRetuneCounter)
- {
- int32 station = gNumRetunePresses + vehicle->m_nRadioStation;
- while (station >= RADIO_OFF) station -= RADIO_OFF;
+ }
+#endif
+ if (gRetuneCounter)
+ {
+ int32 station = gNumRetunePresses + vehicle->m_nRadioStation;
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ while (station < 0) station += NUM_RADIOS + 1;
+#endif
+ while (station >= NUM_RADIOS + 1) station -= NUM_RADIOS + 1;
- if (!DMAudio.IsMP3RadioChannelAvailable() && station == USERTRACK)
- {
- ++gNumRetunePresses;
- station = NUM_RADIOS;
- }
- if (station == NUM_RADIOS)
- {
- if (gRetuneCounter == NUM_RADIOS + 9)
- {
- AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_NO_RADIO, 0.0f);
- RadioStaticCounter = 5;
- }
- }
- else
+ // Scrolling back won't hit here, so increasing isn't problem
+ if (!DMAudio.IsMP3RadioChannelAvailable() && station == USERTRACK)
+ {
+ ++gNumRetunePresses;
+ station = RADIO_OFF;
+ }
+ if (station == RADIO_OFF)
+ {
+ if (gRetuneCounter == 19) // One less then what switching radio sets, so runs right after turning off radio
{
- if (station == WILDSTYLE && gRetuneCounter == NUM_RADIOS + 9)
- AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 0.0f);
- AudioManager.DoPoliceRadioCrackle();
+ AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_TURN_OFF, 0.0f);
+ RadioStaticCounter = 5;
}
}
- if (RadioStaticCounter < 2 && CTimer::GetTimeInMilliseconds() > RadioStaticTimer + 800)
+ else
{
- AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_RADIO_CHANGE, 0.0f);
- RadioStaticCounter++;
- RadioStaticTimer = CTimer::GetTimeInMilliseconds();
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ if (vehicle->m_nRadioStation == RADIO_OFF && gRetuneCounter == 19) // Right after turning on the radio
+#else
+ if (station == 0 && gRetuneCounter == 19) // Right after turning on the radio
+#endif
+ AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_TURN_ON, 0.0f);
+ AudioManager.DoPoliceRadioCrackle();
}
- if (field_2)
- m_nFrontendTrack = GetNextCarTuning();
- if (m_nFrontendTrack >= STREAMED_SOUND_CITY_AMBIENT && m_nFrontendTrack <= STREAMED_SOUND_AMBSIL_AMBIENT)
- SetUpCorrectAmbienceTrack();
- ServiceTrack(vehicle, ped);
- if (field_2)
- field_2 = false;
- return;
- }
- if (UsesPoliceRadio(vehicle))
- m_nFrontendTrack = STREAMED_SOUND_RADIO_POLICE;
- else if (UsesTaxiRadio(vehicle))
- m_nFrontendTrack = STREAMED_SOUND_RADIO_TAXI;
- else {
- m_nFrontendTrack = m_nRadioStation;
- vehicle->m_nRadioStation = m_nRadioStation;
}
-
- if (m_nRadioPosition != -1) {
- m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition;
- m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
+ if (RadioStaticCounter < 2 && CTimer::GetTimeInMilliseconds() > RadioStaticTimer + 800)
+ {
+ AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_RADIO_CHANGE, 0.0f);
+ RadioStaticCounter++;
+ RadioStaticTimer = CTimer::GetTimeInMilliseconds();
}
-
- gRetuneCounter = 0;
- gNumRetunePresses = 0;
- field_2 = false;
- m_bRadioSetByScript = false;
+ if (m_bSetNextStation)
+ m_nFrontendTrack = GetNextCarTuning();
if (m_nFrontendTrack >= STREAMED_SOUND_CITY_AMBIENT && m_nFrontendTrack <= STREAMED_SOUND_AMBSIL_AMBIENT)
SetUpCorrectAmbienceTrack();
ServiceTrack(vehicle, ped);
- if (field_2)
- field_2 = false;
+ if (m_bSetNextStation)
+ m_bSetNextStation = FALSE;
return;
}
- if (vehicle == nil)
- {
- m_nFrontendTrack = STREAMED_SOUND_RADIO_LCFR; // huh?
- return;
+ if (UsesPoliceRadio(vehicle))
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_POLICE;
+ else if (UsesTaxiRadio(vehicle))
+ m_nFrontendTrack = STREAMED_SOUND_RADIO_TAXI;
+ else {
+ m_nFrontendTrack = m_nRadioStationScript;
+ vehicle->m_nRadioStation = m_nRadioStationScript;
}
- if (m_bRadioSetByScript)
- {
- if (UsesPoliceRadio(vehicle))
- m_nFrontendTrack = STREAMED_SOUND_RADIO_POLICE;
- else if (UsesTaxiRadio(vehicle))
- m_nFrontendTrack = STREAMED_SOUND_RADIO_TAXI;
- else {
- m_nFrontendTrack = m_nRadioStation;
- vehicle->m_nRadioStation = m_nRadioStation;
- }
- if (m_nRadioPosition != -1)
- {
- m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition;
- m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
- }
- m_bRadioSetByScript = false;
- return;
+
+ if (m_nRadioPosition != -1) {
+ m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition;
+ m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
}
- m_nFrontendTrack = GetCarTuning();
+ gRetuneCounter = 0;
+ gNumRetunePresses = 0;
+ m_bSetNextStation = FALSE;
+ m_bRadioSetByScript = FALSE;
+ if (m_nFrontendTrack >= STREAMED_SOUND_CITY_AMBIENT && m_nFrontendTrack <= STREAMED_SOUND_AMBSIL_AMBIENT)
+ SetUpCorrectAmbienceTrack();
+ ServiceTrack(vehicle, ped);
+ if (m_bSetNextStation)
+ m_bSetNextStation = FALSE;
return;
}
if (m_bAnnouncementInProgress)
{
- SampleManager.StopStreamedFile(0);
- if (SampleManager.IsStreamPlaying(0))
+ SampleManager.StopStreamedFile();
+ if (SampleManager.IsStreamPlaying())
return;
- g_bAnnouncementReadPosAlready = false;
+ g_bAnnouncementReadPosAlready = FALSE;
m_nAnnouncement = NO_TRACK;
- m_bAnnouncementInProgress = false;
- m_nStreamedTrack = NO_TRACK;
+ m_bAnnouncementInProgress = FALSE;
+ m_nNextTrack = NO_TRACK;
m_nFrontendTrack = NO_TRACK;
m_nPlayingTrack = NO_TRACK;
}
@@ -769,7 +808,7 @@ GetHeightScale()
}
void
-cMusicManager::ComputeAmbienceVol(uint8 reset, uint8& outVolume)
+cMusicManager::ComputeAmbienceVol(bool8 reset, uint8& outVolume)
{
static float fVol = 0.0f;
@@ -829,103 +868,110 @@ cMusicManager::ComputeAmbienceVol(uint8 reset, uint8& outVolume)
outVolume = (90.0f - fHeightScale) / 50.0f * fVol;
}
-bool
+bool8
cMusicManager::ServiceAnnouncement()
{
if (m_bAnnouncementInProgress) {
- if (SampleManager.IsStreamPlaying(0))
- m_nPlayingTrack = m_nStreamedTrack;
+ if (SampleManager.IsStreamPlaying())
+ m_nPlayingTrack = m_nNextTrack;
else if (m_nPlayingTrack != NO_TRACK) {
m_nAnnouncement = NO_TRACK;
- m_bAnnouncementInProgress = false;
+ m_bAnnouncementInProgress = FALSE;
m_nPlayingTrack = NO_TRACK;
}
- return true;
- } else if (SampleManager.IsStreamPlaying(0)) {
+ return TRUE;
+ } else if (SampleManager.IsStreamPlaying()) {
if (m_nPlayingTrack != NO_TRACK && !g_bAnnouncementReadPosAlready) {
RecordRadioStats();
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
- g_bAnnouncementReadPosAlready = true;
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
+ g_bAnnouncementReadPosAlready = TRUE;
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
}
- SampleManager.StopStreamedFile(0);
+ SampleManager.StopStreamedFile();
} else {
- g_bAnnouncementReadPosAlready = false;
+ g_bAnnouncementReadPosAlready = FALSE;
m_nPlayingTrack = NO_TRACK;
- m_nStreamedTrack = m_nAnnouncement;
- SampleManager.SetStreamedFileLoopFlag(0, false);
- SampleManager.StartStreamedFile(m_nStreamedTrack, 0, 0);
- SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 0, 0);
- m_bAnnouncementInProgress = true;
+ m_nNextTrack = m_nAnnouncement;
+ SampleManager.SetStreamedFileLoopFlag(FALSE);
+ SampleManager.StartStreamedFile(m_nNextTrack, 0);
+ SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, FALSE);
+ m_bAnnouncementInProgress = TRUE;
}
- return true;
+ return TRUE;
}
void
cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
{
- static bool bRadioStatsRecorded = false;
- static bool bRadioStatsRecorded2 = false;
+ static bool8 bRadioStatsRecorded = FALSE;
+ static bool8 bRadioStatsRecorded2 = FALSE;
uint8 volume;
- if (!field_398F)
- m_nStreamedTrack = m_nFrontendTrack;
- if (gRetuneCounter != 0 || field_2) {
- if (SampleManager.IsStreamPlaying(0)) {
+ if (!m_bTrackChangeStarted)
+ m_nNextTrack = m_nFrontendTrack;
+ if (gRetuneCounter != 0 || m_bSetNextStation) {
+ if (SampleManager.IsStreamPlaying()) {
if (m_nPlayingTrack != NO_TRACK && !bRadioStatsRecorded) {
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
RecordRadioStats();
- bRadioStatsRecorded = true;
+ bRadioStatsRecorded = TRUE;
}
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
- SampleManager.StopStreamedFile(0);
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
+ SampleManager.StopStreamedFile();
}
return;
}
if (bRadioStatsRecorded) {
- bRadioStatsRecorded = false;
+ bRadioStatsRecorded = FALSE;
m_nPlayingTrack = NO_TRACK;
}
- if (m_nStreamedTrack != m_nPlayingTrack)
+ if (m_nNextTrack != m_nPlayingTrack)
{
- field_398F = true;
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
+ m_bTrackChangeStarted = TRUE;
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
if (!(AudioManager.m_FrameCounter & 1)) {
- if (field_3995 || !SampleManager.IsStreamPlaying(0)) {
- bRadioStatsRecorded2 = false;
- if (SampleManager.IsStreamPlaying(0)) {
- m_nPlayingTrack = m_nStreamedTrack;
- field_3995 = false;
- field_398F = false;
+ if (m_bVerifyNextTrackStartedToPlay || !SampleManager.IsStreamPlaying()) {
+ bRadioStatsRecorded2 = FALSE;
+ if (SampleManager.IsStreamPlaying()) {
+ m_nPlayingTrack = m_nNextTrack;
+ m_bVerifyNextTrackStartedToPlay = FALSE;
+ m_bTrackChangeStarted = FALSE;
if (veh) {
- if (veh->m_nRadioStation < STREAMED_SOUND_CITY_AMBIENT || veh->m_nRadioStation > STREAMED_SOUND_AMBSIL_AMBIENT)
+#ifdef FIX_BUGS
+ if (m_nPlayingTrack >= STREAMED_SOUND_CITY_AMBIENT && m_nPlayingTrack <= STREAMED_SOUND_AMBSIL_AMBIENT)
+ veh->m_nRadioStation = RADIO_OFF;
+ else if (m_nPlayingTrack < STREAMED_SOUND_CITY_AMBIENT)
veh->m_nRadioStation = m_nPlayingTrack;
+#else
+ if (veh->m_nRadioStation >= STREAMED_SOUND_CITY_AMBIENT && veh->m_nRadioStation <= STREAMED_SOUND_AMBSIL_AMBIENT)
+ veh->m_nRadioStation = RADIO_OFF;
else
- veh->m_nRadioStation = STREAMED_SOUND_CITY_AMBIENT;
+ veh->m_nRadioStation = m_nPlayingTrack;
+#endif
}
} else {
- uint32 pos = GetTrackStartPos(m_nStreamedTrack);
- if (m_nStreamedTrack != NO_TRACK) {
- SampleManager.SetStreamedFileLoopFlag(1, 0);
- SampleManager.StartStreamedFile(m_nStreamedTrack, pos, 0);
+ uint32 pos = GetTrackStartPos(m_nNextTrack);
+ if (m_nNextTrack != NO_TRACK) {
+ SampleManager.SetStreamedFileLoopFlag(TRUE);
+ SampleManager.StartStreamedFile(m_nNextTrack, pos);
if (m_nFrontendTrack < STREAMED_SOUND_CITY_AMBIENT || m_nFrontendTrack > STREAMED_SOUND_AMBSIL_AMBIENT)
{
m_nVolumeLatency = 10;
m_nCurrentVolume = 0;
m_nMaxVolume = 100;
- SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, FALSE);
}
else
{
- ComputeAmbienceVol(true, volume);
- SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0);
+ ComputeAmbienceVol(TRUE, volume);
+ SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE);
}
- if (m_nStreamedTrack < STREAMED_SOUND_CITY_AMBIENT)
+ if (m_nNextTrack < STREAMED_SOUND_CITY_AMBIENT)
m_nLastTrackServiceTime = CTimer::GetTimeInMillisecondsPauseMode();
- field_3995 = true;
+ m_bVerifyNextTrackStartedToPlay = TRUE;
}
}
} else {
@@ -933,18 +979,18 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
debug("m_nPlayingTrack == NO_TRACK, yet track playing - tidying up\n");
else if (!bRadioStatsRecorded2)
{
- m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0);
+ m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition();
m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode();
- bRadioStatsRecorded2 = true;
+ bRadioStatsRecorded2 = TRUE;
RecordRadioStats();
if (m_nPlayingTrack >= STREAMED_SOUND_HAVANA_CITY_AMBIENT && m_nPlayingTrack <= STREAMED_SOUND_HAVANA_BEACH_AMBIENT)
{
- if (m_nStreamedTrack >= STREAMED_SOUND_HAVANA_CITY_AMBIENT && m_nStreamedTrack <= STREAMED_SOUND_HAVANA_BEACH_AMBIENT)
- AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE_2, 0.0);
+ if (m_nNextTrack >= STREAMED_SOUND_HAVANA_CITY_AMBIENT && m_nNextTrack <= STREAMED_SOUND_HAVANA_BEACH_AMBIENT)
+ AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_HURRICANE, 0.0);
}
}
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
- SampleManager.StopStreamedFile(0);
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
+ SampleManager.StopStreamedFile();
}
}
return;
@@ -952,8 +998,8 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
if (m_nPlayingTrack >= STREAMED_SOUND_CITY_AMBIENT && m_nPlayingTrack <= STREAMED_SOUND_AMBSIL_AMBIENT)
{
- ComputeAmbienceVol(false, volume);
- SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0);
+ ComputeAmbienceVol(FALSE, volume);
+ SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE);
return;
}
if (CTimer::GetIsSlowMotionActive())
@@ -963,7 +1009,7 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
float DistToTargetSq = (TheCamera.pTargetEntity->GetPosition() - TheCamera.GetPosition()).MagnitudeSqr();
if (DistToTargetSq >= SQR(55.0f))
{
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
}
else if (DistToTargetSq >= SQR(10.0f))
{
@@ -980,17 +1026,17 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
}
if (gRetuneCounter != 0)
volume = 0;
- SampleManager.SetStreamedVolumeAndPan(volume, pan, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(volume, pan, FALSE);
}
else if (AudioManager.ShouldDuckMissionAudio(0) || AudioManager.ShouldDuckMissionAudio(1))
- SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, FALSE);
else if (gRetuneCounter != 0)
- SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE);
else
- SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, FALSE);
}
} else if (AudioManager.ShouldDuckMissionAudio(0) || AudioManager.ShouldDuckMissionAudio(1)) {
- SampleManager.SetStreamedVolumeAndPan(Min(m_nCurrentVolume, 25), 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(Min(m_nCurrentVolume, 25), 63, FALSE);
nFramesSinceCutsceneEnded = 0;
} else {
if (nFramesSinceCutsceneEnded == -1)
@@ -1012,7 +1058,7 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped)
}
if (gRetuneCounter != 0)
volume = 0;
- SampleManager.SetStreamedVolumeAndPan(volume, 63, 0, 0);
+ SampleManager.SetStreamedVolumeAndPan(volume, 63, FALSE);
}
if (m_nVolumeLatency > 0)
m_nVolumeLatency--;
@@ -1025,10 +1071,10 @@ cMusicManager::PreloadCutSceneMusic(uint32 track)
{
if (IsInitialised() && !m_bDisabled && track < TOTAL_STREAMED_SOUNDS && m_nMusicMode == MUSICMODE_CUTSCENE) {
AudioManager.ResetPoliceRadio();
- while (SampleManager.IsStreamPlaying(0))
- SampleManager.StopStreamedFile(0);
- SampleManager.PreloadStreamedFile(track, 0);
- SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 0);
+ while (SampleManager.IsStreamPlaying())
+ SampleManager.StopStreamedFile();
+ SampleManager.PreloadStreamedFile(track);
+ SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE);
m_nPlayingTrack = track;
}
}
@@ -1037,27 +1083,27 @@ void
cMusicManager::PlayPreloadedCutSceneMusic(void)
{
if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_CUTSCENE)
- SampleManager.StartPreloadedStreamedFile(0);
+ SampleManager.StartPreloadedStreamedFile();
}
void
cMusicManager::StopCutSceneMusic(void)
{
if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_CUTSCENE) {
- SampleManager.StopStreamedFile(0);
+ SampleManager.StopStreamedFile();
m_nPlayingTrack = NO_TRACK;
}
}
void
-cMusicManager::PlayFrontEndTrack(uint32 track, uint8 bPlayInFrontend)
+cMusicManager::PlayFrontEndTrack(uint32 track, bool8 loopFlag)
{
if (IsInitialised() && !m_bDisabled && track < TOTAL_STREAMED_SOUNDS && (m_nUpcomingMusicMode == MUSICMODE_FRONTEND || m_nMusicMode == MUSICMODE_FRONTEND))
{
m_nFrontendTrack = track;
- field_398E = bPlayInFrontend;
+ m_FrontendLoopFlag = loopFlag;
if (m_nMusicMode != MUSICMODE_FRONTEND)
- field_399C = true;
+ m_bEarlyFrontendTrack = TRUE;
}
}
@@ -1083,10 +1129,18 @@ cMusicManager::GetNextCarTuning()
if (UsesPoliceRadio(veh)) return STREAMED_SOUND_RADIO_POLICE;
if (UsesTaxiRadio(veh)) return STREAMED_SOUND_RADIO_TAXI;
if (gNumRetunePresses != 0) {
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ // m_nRadioStation is unsigned, so...
+ int station = veh->m_nRadioStation + gNumRetunePresses;
+ while(station < 0) station += NUM_RADIOS + 1;
+ while(station >= NUM_RADIOS + 1) station -= NUM_RADIOS + 1;
+ veh->m_nRadioStation = station;
+#else
veh->m_nRadioStation += gNumRetunePresses;
- while (veh->m_nRadioStation >= RADIO_OFF)
- veh->m_nRadioStation -= RADIO_OFF;
- DMAudio.IsMP3RadioChannelAvailable(); // woof, just call and do nothing =P
+ while(veh->m_nRadioStation >= NUM_RADIOS + 1)
+ veh->m_nRadioStation -= NUM_RADIOS + 1;
+#endif
+ DMAudio.IsMP3RadioChannelAvailable(); // woof, just call and do nothing =P they manipulate gNumRetunePresses on DisplayRadioStationName in this case
gNumRetunePresses = 0;
}
return veh->m_nRadioStation;
@@ -1129,7 +1183,7 @@ cMusicManager::GetTrackStartPos(uint32 track)
uint32
cMusicManager::GetRadioPosition(uint32 station)
{
- if (station < STREAMED_SOUND_CITY_AMBIENT)
+ if (station < NUM_RADIOS)
return GetTrackStartPos(station);
return 0;
}
@@ -1147,7 +1201,7 @@ cMusicManager::GetFavouriteRadioStation()
return favstation;
}
-bool
+bool8
cMusicManager::CheckForMusicInterruptions()
{
return (m_nPlayingTrack == STREAMED_SOUND_MISSION_COMPLETED) || (m_nPlayingTrack == STREAMED_SOUND_CUTSCENE_FINALE);
@@ -1158,7 +1212,7 @@ cMusicManager::SetMalibuClubTrackPos(uint8 scriptObject)
{
if (!IsInitialised())
m_aTracks[STREAMED_SOUND_MALIBU_AMBIENT].m_nPosition = 8640;
- if (m_nStreamedTrack != STREAMED_SOUND_MALIBU_AMBIENT && m_nPlayingTrack != STREAMED_SOUND_MALIBU_AMBIENT) {
+ if (m_nNextTrack != STREAMED_SOUND_MALIBU_AMBIENT && m_nPlayingTrack != STREAMED_SOUND_MALIBU_AMBIENT) {
switch (scriptObject)
{
case SCRIPT_SOUND_NEW_BUILDING_MALIBU_1:
@@ -1180,7 +1234,7 @@ cMusicManager::SetStripClubTrackPos(uint8 scriptObject)
{
if (!IsInitialised())
m_aTracks[STREAMED_SOUND_STRIPCLUB_AMBIENT].m_nPosition = 0;
- if (m_nStreamedTrack != STREAMED_SOUND_STRIPCLUB_AMBIENT && m_nPlayingTrack != STREAMED_SOUND_STRIPCLUB_AMBIENT)
+ if (m_nNextTrack != STREAMED_SOUND_STRIPCLUB_AMBIENT && m_nPlayingTrack != STREAMED_SOUND_STRIPCLUB_AMBIENT)
{
switch (scriptObject)
{
@@ -1201,7 +1255,7 @@ cMusicManager::SetStripClubTrackPos(uint8 scriptObject)
void
cMusicManager::DisplayRadioStationName()
{
- int8 gStreamedSound;
+ uint8 gStreamedSound;
static wchar *pCurrentStation = nil;
static uint8 cDisplay = 0;
@@ -1211,21 +1265,33 @@ cMusicManager::DisplayRadioStationName()
if (vehicle)
{
+ // Prev scroll needs it to be signed, and m_nFrontendTrack can be NO_TRACK thus FIX_BUGS
+#if defined RADIO_SCROLL_TO_PREV_STATION || defined FIX_BUGS
+ int track;
+#else
uint8 track;
+#endif
gStreamedSound = vehicle->m_nRadioStation;
if (gStreamedSound >= STREAMED_SOUND_CITY_AMBIENT && gStreamedSound <= STREAMED_SOUND_AMBSIL_AMBIENT)
- gStreamedSound = STREAMED_SOUND_CITY_AMBIENT;
+ gStreamedSound = RADIO_OFF;
if (gNumRetunePresses != 0)
{
track = gNumRetunePresses + gStreamedSound;
- while (track >= RADIO_OFF) track -= RADIO_OFF;
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ while (track < 0) track += NUM_RADIOS + 1;
+#endif
+ while (track >= NUM_RADIOS + 1) track -= NUM_RADIOS + 1;
+
+ // On scrolling back we handle this condition on key press. No need to change this.
if (!DMAudio.IsMP3RadioChannelAvailable() && track == USERTRACK)
gNumRetunePresses++;
}
else
+#ifdef RADIO_OFF_TEXT
+ track = GetCarTuning(); // gStreamedSound or veh->m_nRadioStation would also work, but these don't cover police/taxi radios
+#else
track = m_nFrontendTrack;
-
-
+#endif
wchar* string = nil;
switch (track) {
case WILDSTYLE: string = TheText.Get("FEA_FM0"); break;
@@ -1251,7 +1317,11 @@ cMusicManager::DisplayRadioStationName()
}
else {
if (cDisplay == 0) return;
+#ifdef FIX_BUGS
+ cDisplay -= CTimer::GetLogicalFramesPassed();
+#else
cDisplay--;
+#endif
}
CFont::SetJustifyOff();
@@ -1274,9 +1344,14 @@ cMusicManager::DisplayRadioStationName()
CFont::SetCentreSize(SCREEN_STRETCH_X(DEFAULT_SCREEN_WIDTH));
}
}
+ // Always show station text after entering car. Same behaviour as III and SA.
+#ifdef FIX_BUGS
+ else
+ pCurrentStation = nil;
+#endif
}
-bool
+bool8
cMusicManager::UsesPoliceRadio(CVehicle *veh)
{
switch (veh->GetModelIndex())
@@ -1286,18 +1361,18 @@ cMusicManager::UsesPoliceRadio(CVehicle *veh)
case MI_COASTG:
case MI_RHINO:
case MI_BARRACKS:
- return true;
+ return TRUE;
case MI_MRWHOOP:
case MI_HUNTER:
- return false;
+ return FALSE;
}
return veh->UsesSiren();
}
-bool
+bool8
cMusicManager::UsesTaxiRadio(CVehicle *veh)
{
- if (veh->GetModelIndex() != MI_CABBIE) return false;
+ if (veh->GetModelIndex() != MI_CABBIE) return FALSE;
return CTheScripts::bPlayerHasMetDebbieHarry;
}
@@ -1306,10 +1381,10 @@ cMusicManager::ServiceAmbience()
{
}
-bool
+bool8
cMusicManager::ChangeRadioChannel()
{
- return true;
+ return TRUE;
}
// these two are empty
diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h
index f103e84e..3d2b7cee 100644
--- a/src/audio/MusicManager.h
+++ b/src/audio/MusicManager.h
@@ -16,59 +16,59 @@ class CPed;
class cMusicManager
{
public:
- bool m_bIsInitialised;
- bool m_bDisabled;
- bool field_2;
+ bool8 m_bIsInitialised;
+ bool8 m_bDisabled;
+ bool8 m_bSetNextStation;
uint8 m_nVolumeLatency;
uint8 m_nCurrentVolume;
uint8 m_nMaxVolume;
uint32 m_nAnnouncement;
- bool m_bAnnouncementInProgress;
+ bool8 m_bAnnouncementInProgress;
tStreamedSample m_aTracks[TOTAL_STREAMED_SOUNDS];
- bool m_bResetTimers;
+ bool8 m_bResetTimers;
uint32 m_nResetTime;
- bool m_bRadioSetByScript;
- uint8 m_nRadioStation;
- uint32 m_nRadioPosition;
+ bool8 m_bRadioSetByScript;
+ uint8 m_nRadioStationScript;
+ int32 m_nRadioPosition;
uint32 m_nRadioInCar;
uint32 m_nFrontendTrack;
uint32 m_nPlayingTrack;
uint8 m_nUpcomingMusicMode;
uint8 m_nMusicMode;
- bool field_398E;
- bool field_398F;
- uint32 m_nStreamedTrack;
- bool field_3994;
- bool field_3995;
- bool field_3996;
- bool field_3997;
+ bool8 m_FrontendLoopFlag;
+ bool8 m_bTrackChangeStarted;
+ uint32 m_nNextTrack;
+ bool8 m_nNextLoopFlag;
+ bool8 m_bVerifyNextTrackStartedToPlay;
+ bool8 m_bGameplayAllowsRadio;
+ bool8 m_bRadioStreamReady;
int8 nFramesSinceCutsceneEnded;
- bool field_3999;
- bool field_399A;
+ bool8 m_bUserResumedGame;
+ bool8 m_bMusicModeChangeStarted;
uint8 m_nMusicModeToBeSet;
- bool field_399C;
+ bool8 m_bEarlyFrontendTrack;
float aListenTimeArray[NUM_RADIOS];
float m_nLastTrackServiceTime;
public:
cMusicManager();
- bool IsInitialised() { return m_bIsInitialised; }
+ bool8 IsInitialised() { return m_bIsInitialised; }
uint8 GetMusicMode() { return m_nMusicMode; }
uint32 GetCurrentTrack() { return m_nPlayingTrack; }
void ResetMusicAfterReload();
- void SetStartingTrackPositions(uint8 isNewGameTimer);
- bool Initialise();
+ void SetStartingTrackPositions(bool8 isNewGameTimer);
+ bool8 Initialise();
void Terminate();
void ChangeMusicMode(uint8 mode);
void StopFrontEndTrack();
- bool PlayerInCar();
+ bool8 PlayerInCar();
void DisplayRadioStationName();
void PlayAnnouncement(uint32);
- void PlayFrontEndTrack(uint32, uint8);
+ void PlayFrontEndTrack(uint32, bool8);
void PreloadCutSceneMusic(uint32);
void PlayPreloadedCutSceneMusic(void);
void StopCutSceneMusic(void);
@@ -83,16 +83,16 @@ public:
void ServiceAmbience();
void ServiceTrack(CVehicle *veh, CPed *ped);
- bool UsesPoliceRadio(CVehicle *veh);
- bool UsesTaxiRadio(CVehicle *veh);
+ bool8 UsesPoliceRadio(CVehicle *veh);
+ bool8 UsesTaxiRadio(CVehicle *veh);
uint32 GetTrackStartPos(uint32 track);
- void ComputeAmbienceVol(uint8 reset, uint8& outVolume);
- bool ServiceAnnouncement();
+ void ComputeAmbienceVol(bool8 reset, uint8& outVolume);
+ bool8 ServiceAnnouncement();
uint32 GetCarTuning();
uint32 GetNextCarTuning();
- bool ChangeRadioChannel();
+ bool8 ChangeRadioChannel();
void RecordRadioStats();
void SetUpCorrectAmbienceTrack();
float *GetListenTimeArray();
@@ -100,7 +100,7 @@ public:
uint32 GetFavouriteRadioStation();
void SetMalibuClubTrackPos(uint8 pos);
void SetStripClubTrackPos(uint8 pos);
- bool CheckForMusicInterruptions();
+ bool8 CheckForMusicInterruptions();
void Enable();
void Disable();
@@ -109,5 +109,5 @@ public:
VALIDATE_SIZE(cMusicManager, 0x95C);
extern cMusicManager MusicManager;
-extern bool g_bAnnouncementReadPosAlready; // we have a symbol of this so it was declared in .h
+extern bool8 g_bAnnouncementReadPosAlready; // we have a symbol of this so it was declared in .h
float GetHeightScale();
diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PolRadio.cpp
index b8f44f60..fb2b06b4 100644
--- a/src/audio/PoliceRadio.cpp
+++ b/src/audio/PolRadio.cpp
@@ -7,7 +7,7 @@
#include "AudioSamples.h"
#include "MusicManager.h"
#include "PlayerPed.h"
-#include "PoliceRadio.h"
+#include "PolRadio.h"
#include "Replay.h"
#include "Vehicle.h"
#include "World.h"
@@ -15,9 +15,6 @@
#include "sampman.h"
#include "Wanted.h"
-const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples);
-const int policeChannel = channels + 1;
-
struct tPoliceRadioZone {
char m_aName[8];
uint32 m_nSampleIndex;
@@ -41,20 +38,20 @@ cAudioManager::InitialisePoliceRadioZones()
strcpy(ZoneSfx[i].m_aName, name); \
ZoneSfx[i].m_nSampleIndex = sample;
- SETZONESFX(0, "VICE_C", SFX_POLICE_RADIO_VICE_CITY);
- SETZONESFX(1, "IND_ZON", SFX_POLICE_RADIO_VICE_CITY_BEACH);
- SETZONESFX(2, "COM_ZON", SFX_POLICE_RADIO_VICE_CITY_MAINLAND);
- SETZONESFX(3, "BEACH1", SFX_POLICE_RADIO_OCEAN_BEACH);
- SETZONESFX(4, "BEACH2", SFX_POLICE_RADIO_WASHINGTON_BEACH);
- SETZONESFX(5, "BEACH3", SFX_POLICE_RADIO_VICE_POINT);
- SETZONESFX(6, "GOLFC", SFX_POLICE_RADIO_LEAF_LINKS);
- SETZONESFX(7, "STARI", SFX_POLICE_RADIO_STRAFISH_ISLAND);
- SETZONESFX(8, "DOCKS", SFX_POLICE_RADIO_VICE_PORT);
- SETZONESFX(9, "HAVANA", SFX_POLICE_RADIO_LITTLE_HAVANA);
- SETZONESFX(10, "HAITI", SFX_POLICE_RADIO_LITTLE_HAITI);
- SETZONESFX(11, "PORNI", SFX_POLICE_RADIO_PRAWN_ISLAND);
- SETZONESFX(12, "DTOWN", SFX_POLICE_RADIO_DOWNTOWN);
- SETZONESFX(13, "A_PORT", SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL);
+ SETZONESFX(0, "VICE_C", SFX_SFX_POLICE_RADIO_VICE_CITY);
+ SETZONESFX(1, "IND_ZON", SFX_SFX_POLICE_RADIO_VICE_CITY_BEACH);
+ SETZONESFX(2, "COM_ZON", SFX_SFX_POLICE_RADIO_VICE_CITY_MAINLAND);
+ SETZONESFX(3, "BEACH1", SFX_SFX_POLICE_RADIO_OCEAN_BEACH);
+ SETZONESFX(4, "BEACH2", SFX_SFX_POLICE_RADIO_WASHINGTON_BEACH);
+ SETZONESFX(5, "BEACH3", SFX_SFX_POLICE_RADIO_VICE_POINT);
+ SETZONESFX(6, "GOLFC", SFX_SFX_POLICE_RADIO_LEAF_LINKS);
+ SETZONESFX(7, "STARI", SFX_SFX_POLICE_RADIO_STARFISH_ISLAND);
+ SETZONESFX(8, "DOCKS", SFX_SFX_POLICE_RADIO_VICEPORT);
+ SETZONESFX(9, "HAVANA", SFX_SFX_POLICE_RADIO_LITTLE_HAVANA);
+ SETZONESFX(10, "HAITI", SFX_SFX_POLICE_RADIO_LITTLE_HAITI);
+ SETZONESFX(11, "PORNI", SFX_SFX_POLICE_RADIO_PRAWN_ISLAND);
+ SETZONESFX(12, "DTOWN", SFX_SFX_POLICE_RADIO_DOWNTOWN);
+ SETZONESFX(13, "A_PORT", SFX_SFX_POLICE_RADIO_ESCOBAR_INTERNATIONAL);
#undef SETZONESFX
}
@@ -68,8 +65,8 @@ cAudioManager::InitialisePoliceRadio()
for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++)
m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE;
- SampleManager.SetChannelReverbFlag(policeChannel, false);
- gSpecialSuspectLastSeenReport = false;
+ SampleManager.SetChannelReverbFlag(CHANNEL_POLICE_RADIO, FALSE);
+ gSpecialSuspectLastSeenReport = FALSE;
for (int32 i = 0; i < ARRAY_SIZE(gMinTimeToNextReport); i++)
gMinTimeToNextReport[i] = m_FrameCounter;
}
@@ -78,7 +75,7 @@ void
cAudioManager::ResetPoliceRadio()
{
if (!m_bIsInitialised) return;
- if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel);
+ if (SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
InitialisePoliceRadio();
}
@@ -105,19 +102,18 @@ cAudioManager::DoPoliceRadioCrackle()
m_sQueueSample.m_nCounter = 0;
m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE;
m_sQueueSample.m_nBankIndex = SFX_BANK_0;
- m_sQueueSample.m_bIs2D = true;
+ m_sQueueSample.m_bIs2D = TRUE;
m_sQueueSample.m_nReleasingVolumeModificator = 10;
m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE);
m_sQueueSample.m_nVolume = m_anRandomTable[2] % 20 + 15;
m_sQueueSample.m_nLoopCount = 0;
m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume;
- m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE);
- m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE);
- m_sQueueSample.m_bReleasingSoundFlag = false;
- m_sQueueSample.m_bReverbFlag = false;
+ SET_LOOP_OFFSETS(SFX_POLICE_RADIO_CRACKLE)
+ m_sQueueSample.m_bReleasingSoundFlag = FALSE;
+ m_sQueueSample.m_bReverbFlag = FALSE;
m_sQueueSample.m_nOffset = 63;
m_sQueueSample.m_nReleasingVolumeDivider = 3;
- m_sQueueSample.m_bRequireReflection = false;
+ m_sQueueSample.m_bRequireReflection = FALSE;
AddSampleToRequestedQueue();
}
@@ -130,7 +126,7 @@ cAudioManager::ServicePoliceRadio()
if(!m_bIsInitialised) return;
if(m_nUserPause == 0) {
- bool crimeReport = SetupCrimeReport();
+ bool8 crimeReport = SetupCrimeReport();
#ifdef FIX_BUGS // Crash at 0x5fe6ef
if(CReplay::IsPlayingBack() || !FindPlayerPed() || !FindPlayerPed()->m_pWanted)
return;
@@ -141,7 +137,11 @@ cAudioManager::ServicePoliceRadio()
if (!crimeReport) {
if (wantedLevel != 0) {
if (nLastSeen != 0)
+#ifdef FIX_BUGS
+ nLastSeen -= CTimer::GetLogicalFramesPassed();
+#else
--nLastSeen;
+#endif
else {
nLastSeen = m_anRandomTable[1] % 1000 + 2000;
SetupSuspectLastSeenReport();
@@ -156,31 +156,35 @@ cAudioManager::ServicePoliceRadio()
void
cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel)
{
- bool processed = false;
+ bool8 processed = FALSE;
uint32 sample;
int32 freq;
static int cWait = 0;
- static bool bChannelOpen = false;
+ static bool8 bChannelOpen = FALSE;
static uint8 bMissionAudioPhysicalPlayingStatus = 0;
static int32 PoliceChannelFreq = 22050;
if (!m_bIsInitialised) return;
if (m_nUserPause != 0) {
- if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel);
+ if (SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) SampleManager.StopChannel(CHANNEL_POLICE_RADIO);
if (g_nMissionAudioSfx != NO_SAMPLE && bMissionAudioPhysicalPlayingStatus == 1 &&
SampleManager.IsStreamPlaying(1)) {
- SampleManager.PauseStream(1, 1);
+ SampleManager.PauseStream(TRUE, 1);
}
} else {
if (m_nPreviousUserPause && g_nMissionAudioSfx != NO_SAMPLE &&
bMissionAudioPhysicalPlayingStatus == 1) {
- SampleManager.PauseStream(0, 1);
+ SampleManager.PauseStream(FALSE, 1);
}
- if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = false;
+ if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = FALSE;
if (cWait) {
+#ifdef FIX_BUGS
+ cWait -= CTimer::GetLogicalFramesPassed();
+#else
--cWait;
+#endif
return;
}
if (g_nMissionAudioSfx != NO_SAMPLE && !bChannelOpen) {
@@ -200,9 +204,9 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel)
}
return;
}
- } else if (!SampleManager.GetChannelUsedFlag(policeChannel)) {
+ } else if (!SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) {
SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1);
- SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 1);
+ SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 1);
SampleManager.StartPreloadedStreamedFile(1);
g_nMissionAudioPlayingStatus = 1;
bMissionAudioPhysicalPlayingStatus = 0;
@@ -211,7 +215,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel)
}
if (bChannelOpen) DoPoliceRadioCrackle();
if ((g_nMissionAudioSfx == NO_SAMPLE || g_nMissionAudioPlayingStatus != 1) &&
- !SampleManager.GetChannelUsedFlag(policeChannel) && m_sPoliceRadioQueue.policeChannelTimer) {
+ !SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO) && m_sPoliceRadioQueue.policeChannelTimer) {
if (m_sPoliceRadioQueue.policeChannelTimer) {
sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds];
m_sPoliceRadioQueue.policeChannelTimer--;
@@ -223,35 +227,35 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel)
if (gSpecialSuspectLastSeenReport) {
gSpecialSuspectLastSeenReport = 0;
} else if (sample == SFX_POLICE_RADIO_MESSAGE_NOISE_1) {
- bChannelOpen = false;
- processed = true;
+ bChannelOpen = FALSE;
+ processed = TRUE;
}
}
if (sample == NO_SAMPLE) {
if (!processed) cWait = 30;
} else {
- SampleManager.InitialiseChannel(policeChannel, sample, 0);
+ SampleManager.InitialiseChannel(CHANNEL_POLICE_RADIO, sample, SFX_BANK_0);
switch (sample) {
case SFX_POLICE_RADIO_MESSAGE_NOISE_1:
freq = m_anRandomTable[4] % 2000 + 10025;
- bChannelOpen = bChannelOpen == false;
+ bChannelOpen = bChannelOpen == FALSE;
break;
default: freq = SampleManager.GetSampleBaseFrequency(sample); break;
}
PoliceChannelFreq = freq;
- SampleManager.SetChannelFrequency(policeChannel, freq);
- SampleManager.SetChannelVolume(policeChannel, 100);
- SampleManager.SetChannelPan(policeChannel, 63);
- SampleManager.SetChannelLoopCount(policeChannel, 1);
- SampleManager.SetChannelLoopPoints(policeChannel, 0, -1);
- SampleManager.StartChannel(policeChannel);
+ SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, freq);
+ SampleManager.SetChannelVolume(CHANNEL_POLICE_RADIO, 100);
+ SampleManager.SetChannelPan(CHANNEL_POLICE_RADIO, 63);
+ SampleManager.SetChannelLoopCount(CHANNEL_POLICE_RADIO, 1);
+ SampleManager.SetChannelLoopPoints(CHANNEL_POLICE_RADIO, 0, -1);
+ SampleManager.StartChannel(CHANNEL_POLICE_RADIO);
}
if (processed) ResetPoliceRadio();
}
}
}
-bool
+bool8
cAudioManager::SetupCrimeReport()
{
int16 audioZoneId;
@@ -264,13 +268,13 @@ cAudioManager::SetupCrimeReport()
float quarterY;
int i;
int32 sampleIndex;
- bool processed = false;
+ bool8 processed = FALSE;
- if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return false;
+ if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return FALSE;
if (60 - m_sPoliceRadioQueue.policeChannelTimer <= 9) {
AgeCrimes();
- return true;
+ return TRUE;
}
for (i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) {
@@ -278,7 +282,7 @@ cAudioManager::SetupCrimeReport()
break;
}
- if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return false;
+ if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return FALSE;
audioZoneId = CTheZones::FindAudioZone(&m_sPoliceRadioQueue.crimes[i].position);
if (audioZoneId >= 0 && audioZoneId < NUMAUDIOZONES) {
zone = CTheZones::GetAudioZone(audioZoneId);
@@ -303,9 +307,9 @@ cAudioManager::SetupCrimeReport()
default: break;
}
#ifdef FIX_BUGS
- m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_CRIME_1 - 1);
+ m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_SFX_CRIME_1 - 1);
#else
- m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_CRIME_1);
+ m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_SFX_CRIME_1);
#endif
m_sPoliceRadioQueue.Add(SFX_IN);
rangeX = zone->maxx - zone->minx;
@@ -317,10 +321,10 @@ cAudioManager::SetupCrimeReport()
if (m_sPoliceRadioQueue.crimes[i].position.y > halfY + quarterY) {
m_sPoliceRadioQueue.Add(SFX_NORTH);
- processed = true;
+ processed = TRUE;
} else if (m_sPoliceRadioQueue.crimes[i].position.y < halfY - quarterY) {
m_sPoliceRadioQueue.Add(SFX_SOUTH);
- processed = true;
+ processed = TRUE;
}
if (m_sPoliceRadioQueue.crimes[i].position.x > halfX + quarterX)
@@ -339,7 +343,7 @@ cAudioManager::SetupCrimeReport()
}
m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE;
AgeCrimes();
- return true;
+ return TRUE;
}
void
@@ -354,85 +358,85 @@ cAudioManager::SetupSuspectLastSeenReport()
int32 color_post_modifier;
const int32 gCarColourTable[][3] = {
- {NO_SAMPLE, SFX_POLICE_RADIO_BLACK, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_WHITE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {SFX_POLICE_RADIO_BRIGHT, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {SFX_POLICE_RADIO_LIGHT, SFX_POLICE_RADIO_BLUE, SFX_POLICE_RADIO_GREY},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLACK, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_WHITE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {SFX_POLICE_RADIO_DARK, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {SFX_POLICE_RADIO_BRIGHT, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {SFX_POLICE_RADIO_LIGHT, SFX_SFX_POLICE_RADIO_BLUE, SFX_SFX_POLICE_RADIO_GREY},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {SFX_POLICE_RADIO_DARK, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {SFX_POLICE_RADIO_DARK, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_RED, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_ORANGE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_YELLOW, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_GREEN, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_BLUE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_PURPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_DARK, NO_SAMPLE, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
- {NO_SAMPLE, SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
+ {NO_SAMPLE, SFX_SFX_POLICE_RADIO_SILVER, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
{SFX_POLICE_RADIO_LIGHT, NO_SAMPLE, NO_SAMPLE},
@@ -468,7 +472,7 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_RANCHER:
case MI_FBIRANCH:
case MI_SANDKING:
- sample = SFX_POLICE_RADIO_OFFROAD;
+ sample = SFX_SFX_POLICE_RADIO_OFFROAD;
break;
case MI_IDAHO:
case MI_MANANA:
@@ -479,7 +483,7 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_SABRETUR:
case MI_VIRGO:
case MI_BLISTAC:
- sample = SFX_POLICE_RADIO_2_DOOR;
+ sample = SFX_SFX_POLICE_RADIO_TUDOOR;
break;
case MI_STINGER:
case MI_INFERNUS:
@@ -489,14 +493,14 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_COMET:
case MI_DELUXO:
case MI_HOTRING:
- sample = SFX_POLICE_RADIO_SPORTS_CAR;
+ sample = SFX_SFX_POLICE_RADIO_SPORTS_CAR;
break;
case MI_LINERUN:
- sample = SFX_POLICE_RADIO_RIG;
+ sample = SFX_SFX_POLICE_RADIO_RIG;
break;
case MI_PEREN:
case MI_REGINA:
- sample = SFX_POLICE_RADIO_STATION_WAGON;
+ sample = SFX_SFX_POLICE_RADIO_STATION_WAGON;
break;
case MI_SENTINEL:
case MI_FBICAR:
@@ -507,23 +511,23 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_OCEANIC:
case MI_HERMES:
case MI_GREENWOO:
- sample = SFX_POLICE_RADIO_SEDAN;
+ sample = SFX_SFX_POLICE_RADIO_SEDAN;
break;
case MI_RIO:
- sample = SFX_POLICE_RADIO_CRUISER;
+ sample = SFX_SFX_POLICE_RADIO_CRUISER;
break;
case MI_FIRETRUCK:
- sample = SFX_POLICE_RADIO_FIRE_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_FIRE_TRUCK;
break;
case MI_TRASH:
- sample = SFX_POLICE_RADIO_GARBAGE_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_GARBAGE_TRUCK;
break;
case MI_STRETCH:
case MI_LOVEFIST:
- sample = SFX_POLICE_RADIO_STRETCH;
+ sample = SFX_SFX_POLICE_RADIO_STRETCH;
break;
case MI_VOODOO:
- sample = SFX_POLICE_RADIO_LOWRIDER;
+ sample = SFX_SFX_POLICE_RADIO_LOWRIDER;
break;
case MI_PONY:
case MI_MOONBEAM:
@@ -534,31 +538,31 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_TOPFUN:
case MI_BURRITO:
case MI_SPAND:
- sample = SFX_POLICE_RADIO_VAN;
+ sample = SFX_SFX_POLICE_RADIO_VAN;
break;
case MI_MULE:
case MI_BARRACKS:
case MI_PACKER:
case MI_FLATBED:
- sample = SFX_POLICE_RADIO_TRUCK;
+ sample = SFX_SFX_POLICE_RADIO_TRUCK;
break;
case MI_AMBULAN:
- sample = SFX_POLICE_RADIO_AMBULANCE;
+ sample = SFX_SFX_POLICE_RADIO_AMBULANCE;
break;
case MI_TAXI:
case MI_CABBIE:
case MI_BORGNINE:
- sample = SFX_POLICE_RADIO_TAXI;
+ sample = SFX_SFX_POLICE_RADIO_TAXI;
break;
case MI_BOBCAT:
case MI_WALTON:
- sample = SFX_POLICE_RADIO_PICKUP;
+ sample = SFX_SFX_POLICE_RADIO_PICKUP;
break;
case MI_MRWHOOP:
- sample = SFX_POLICE_RADIO_ICE_CREAM_VAN;
+ sample = SFX_SFX_POLICE_RADIO_ICE_CREAM_VAN;
break;
case MI_BFINJECT:
- sample = SFX_POLICE_RADIO_BUGGY;
+ sample = SFX_SFX_POLICE_RADIO_BUGGY;
break;
case MI_HUNTER:
case MI_CHOPPER:
@@ -567,57 +571,57 @@ cAudioManager::SetupSuspectLastSeenReport()
case MI_MAVERICK:
case MI_VCNMAV:
case MI_POLMAV:
- sample = SFX_POLICE_RADIO_HELICOPTER;
+ sample = SFX_SFX_POLICE_RADIO_HELICOPTER;
break;
case MI_POLICE:
- sample = SFX_POLICE_RADIO_POLICE_CAR;
+ sample = SFX_SFX_POLICE_RADIO_POLICE_CAR;
break;
case MI_ENFORCER:
- sample = SFX_POLICE_RADIO_SWAT_VAN;
+ sample = SFX_SFX_POLICE_RADIO_SWAT_VAN;
break;
case MI_PREDATOR:
case MI_SQUALO:
case MI_SPEEDER:
- sample = SFX_POLICE_RADIO_SPEEDBOAT;
+ sample = SFX_SFX_POLICE_RADIO_SPEEDBOAT;
break;
case MI_BUS:
- sample = SFX_POLICE_RADIO_BUS;
+ sample = SFX_SFX_POLICE_RADIO_BUS;
break;
case MI_RHINO:
- sample = SFX_POLICE_RADIO_TANK;
+ sample = SFX_SFX_POLICE_RADIO_TANK;
break;
case MI_ANGEL:
case MI_PCJ600:
case MI_FREEWAY:
case MI_SANCHEZ:
- sample = SFX_POLICE_RADIO_MOTOBIKE;
+ sample = SFX_SFX_POLICE_RADIO_MOTOBIKE;
break;
case MI_COACH:
- sample = SFX_POLICE_RADIO_COACH;
+ sample = SFX_SFX_POLICE_RADIO_COACH;
break;
case MI_ROMERO:
- sample = SFX_POLICE_RADIO_HEARSE;
+ sample = SFX_SFX_POLICE_RADIO_HEARSE;
break;
case MI_PIZZABOY:
case MI_FAGGIO:
- sample = SFX_POLICE_RADIO_MOPED;
+ sample = SFX_SFX_POLICE_RADIO_MOPED;
break;
case MI_DEADDODO:
case MI_SKIMMER:
- sample = SFX_POLICE_RADIO_PLANE;
+ sample = SFX_SFX_POLICE_RADIO_PLANE;
break;
case MI_REEFER:
case MI_TROPIC:
case MI_COASTG:
case MI_MARQUIS:
case MI_JETMAX:
- sample = SFX_POLICE_RADIO_BOAT;
+ sample = SFX_SFX_POLICE_RADIO_BOAT;
break;
case MI_CADDY:
- sample = SFX_POLICE_RADIO_GOLF_CART;
+ sample = SFX_SFX_POLICE_RADIO_GOLF_CART;
break;
case MI_DINGHY:
- sample = SFX_POLICE_RADIO_DINGHY;
+ sample = SFX_SFX_POLICE_RADIO_DINGHY;
break;
default:
//debug("\n *** UNKNOWN CAR MODEL INDEX %d *** ", veh->GetModelIndex());
@@ -687,7 +691,7 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z)
float quarterX;
float quarterY;
int32 sample;
- bool processed = false;
+ bool8 processed = FALSE;
CVector vec = CVector(x, y, z);
if (!m_bIsInitialised) return;
@@ -712,10 +716,10 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z)
if (vec.y > halfY + quarterY) {
m_sPoliceRadioQueue.Add(SFX_NORTH);
- processed = true;
+ processed = TRUE;
} else if (vec.y < halfY - quarterY) {
m_sPoliceRadioQueue.Add(SFX_SOUTH);
- processed = true;
+ processed = TRUE;
}
if (vec.x > halfX + quarterX)
@@ -727,7 +731,7 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z)
m_sPoliceRadioQueue.Add(sample);
m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_MESSAGE_NOISE_1);
m_sPoliceRadioQueue.Add(NO_SAMPLE);
- gSpecialSuspectLastSeenReport = true;
+ gSpecialSuspectLastSeenReport = TRUE;
break;
}
}
diff --git a/src/audio/PoliceRadio.h b/src/audio/PolRadio.h
index d7c928e2..d7c928e2 100644
--- a/src/audio/PoliceRadio.h
+++ b/src/audio/PolRadio.h
diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h
index b2fb627c..192eafac 100644
--- a/src/audio/audio_enums.h
+++ b/src/audio/audio_enums.h
@@ -14,8 +14,8 @@ enum eRadioStation
USERTRACK,
NUM_RADIOS = 11,
POLICE_RADIO = 11,
+ RADIO_OFF = 10,
//TAXI_RADIO,
- RADIO_OFF,
};
enum eMusicMode
@@ -137,3 +137,28 @@ enum eAudioType
AUDIOTYPE_POLICERADIO,
TOTAL_AUDIO_TYPES,
};
+
+#ifdef GTA_PS2
+enum
+{
+ NUM_CHANNELS_GENERIC = 40,
+ CHANNEL_POLICE_RADIO = NUM_CHANNELS_GENERIC,
+ CHANNEL_MISSION_AUDIO_1,
+ CHANNEL_MISSION_AUDIO_2,
+ CHANNEL_PLAYER_VEHICLE_ENGINE,
+ NUM_CHANNELS
+};
+#else
+enum
+{
+#ifdef PS2_AUDIO_CHANNELS
+ NUM_CHANNELS_GENERIC = 40,
+#else
+ NUM_CHANNELS_GENERIC = 20,
+#endif
+ CHANNEL_POLICE_RADIO,
+ CHANNEL_MISSION_AUDIO_1,
+ CHANNEL_MISSION_AUDIO_2,
+ NUM_CHANNELS
+};
+#endif
diff --git a/src/audio/oal/aldlist.cpp b/src/audio/oal/aldlist.cpp
index 881418c1..6024adf2 100644
--- a/src/audio/oal/aldlist.cpp
+++ b/src/audio/oal/aldlist.cpp
@@ -24,12 +24,6 @@
#include "aldlist.h"
-#ifndef _WIN32
-#define _stricmp strcasecmp
-#define _strnicmp strncasecmp
-#define _strdup strdup
-#endif
-
#ifdef AUDIO_OAL
/*
* Init call
@@ -47,8 +41,8 @@ ALDeviceList::ALDeviceList()
defaultDeviceIndex = 0;
if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT")) {
- devices = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER);
- defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
+ devices = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
+ defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_ALL_DEVICES_SPECIFIER);
index = 0;
// go through device list (each device terminated with a single NULL, list terminated with double NULL)
@@ -62,17 +56,11 @@ ALDeviceList::ALDeviceList()
if (context) {
alcMakeContextCurrent(context);
// if new actual device name isn't already in the list, then add it...
- actualDeviceName = alcGetString(device, ALC_DEVICE_SPECIFIER);
- bool bNewName = true;
- for (unsigned int i = 0; i < GetNumDevices(); i++) {
- if (strcmp(GetDeviceName(i), actualDeviceName) == 0) {
- bNewName = false;
- }
- }
- if ((bNewName) && (actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) {
- ALDEVICEINFO ALDeviceInfo;
+ actualDeviceName = alcGetString(device, ALC_ALL_DEVICES_SPECIFIER);
+ if ((actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) {
+ ALDEVICEINFO &ALDeviceInfo = aDeviceInfo[nNumOfDevices++];
ALDeviceInfo.bSelected = true;
- ALDeviceInfo.strDeviceName = _strdup(actualDeviceName);
+ ALDeviceInfo.SetName(actualDeviceName);
alcGetIntegerv(device, ALC_MAJOR_VERSION, sizeof(int), &ALDeviceInfo.iMajorVersion);
alcGetIntegerv(device, ALC_MINOR_VERSION, sizeof(int), &ALDeviceInfo.iMinorVersion);
@@ -105,8 +93,6 @@ ALDeviceList::ALDeviceList()
// Get Source Count
ALDeviceInfo.uiSourceCount = GetMaxNumSources();
-
- aDeviceInfo[nNumOfDevices++] = ALDeviceInfo;
}
alcMakeContextCurrent(NULL);
alcDestroyContext(context);
diff --git a/src/audio/oal/aldlist.h b/src/audio/oal/aldlist.h
index 417bd314..bebb6791 100644
--- a/src/audio/oal/aldlist.h
+++ b/src/audio/oal/aldlist.h
@@ -21,7 +21,7 @@ enum
};
struct ALDEVICEINFO {
- const char *strDeviceName;
+ char *strDeviceName;
int iMajorVersion;
int iMinorVersion;
unsigned int uiSourceCount;
@@ -33,6 +33,19 @@ struct ALDEVICEINFO {
strDeviceName = NULL;
Extensions = 0;
}
+
+ ~ALDEVICEINFO()
+ {
+ delete[] strDeviceName;
+ strDeviceName = NULL;
+ }
+
+ void SetName(const char *name)
+ {
+ if(strDeviceName) delete[] strDeviceName;
+ strDeviceName = new char[strlen(name) + 1];
+ strcpy(strDeviceName, name);
+ }
};
typedef ALDEVICEINFO *LPALDEVICEINFO;
diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp
index 673a4aed..04e7e529 100644
--- a/src/audio/oal/channel.cpp
+++ b/src/audio/oal/channel.cpp
@@ -10,18 +10,22 @@
extern bool IsFXSupported();
-ALuint alSources[MAXCHANNELS+MAX2DCHANNELS];
-ALuint alFilters[MAXCHANNELS+MAX2DCHANNELS];
-ALuint alBuffers[MAXCHANNELS+MAX2DCHANNELS];
+ALuint alSources[NUM_CHANNELS];
+ALuint alFilters[NUM_CHANNELS];
+ALuint alBuffers[NUM_CHANNELS];
bool bChannelsCreated = false;
+int32 CChannel::channelsThatNeedService = 0;
+
+uint8 tempStereoBuffer[PED_BLOCKSIZE * 2];
+
void
CChannel::InitChannels()
{
- alGenSources(MAXCHANNELS+MAX2DCHANNELS, alSources);
- alGenBuffers(MAXCHANNELS+MAX2DCHANNELS, alBuffers);
+ alGenSources(NUM_CHANNELS, alSources);
+ alGenBuffers(NUM_CHANNELS, alBuffers);
if (IsFXSupported())
- alGenFilters(MAXCHANNELS + MAX2DCHANNELS, alFilters);
+ alGenFilters(NUM_CHANNELS, alFilters);
bChannelsCreated = true;
}
@@ -30,13 +34,13 @@ CChannel::DestroyChannels()
{
if (bChannelsCreated)
{
- alDeleteSources(MAXCHANNELS + MAX2DCHANNELS, alSources);
+ alDeleteSources(NUM_CHANNELS, alSources);
memset(alSources, 0, sizeof(alSources));
- alDeleteBuffers(MAXCHANNELS + MAX2DCHANNELS, alBuffers);
+ alDeleteBuffers(NUM_CHANNELS, alBuffers);
memset(alBuffers, 0, sizeof(alBuffers));
if (IsFXSupported())
{
- alDeleteFilters(MAXCHANNELS + MAX2DCHANNELS, alFilters);
+ alDeleteFilters(NUM_CHANNELS, alFilters);
memset(alFilters, 0, sizeof(alFilters));
}
bChannelsCreated = false;
@@ -48,6 +52,7 @@ CChannel::CChannel()
{
Data = nil;
DataSize = 0;
+ bIs2D = false;
SetDefault();
}
@@ -59,7 +64,9 @@ void CChannel::SetDefault()
Position[0] = 0.0f; Position[1] = 0.0f; Position[2] = 0.0f;
Distances[0] = 0.0f; Distances[1] = FLT_MAX;
- LoopCount = 1;
+
+ LoopCount = 1;
+ LastProcessedOffset = UINT32_MAX;
LoopPoints[0] = 0; LoopPoints[1] = -1;
Frequency = MAX_FREQ;
@@ -67,6 +74,10 @@ void CChannel::SetDefault()
void CChannel::Reset()
{
+ // Here is safe because ctor don't call this
+ if (LoopCount > 1)
+ channelsThatNeedService--;
+
ClearBuffer();
SetDefault();
}
@@ -82,6 +93,7 @@ void CChannel::Init(uint32 _id, bool Is2D)
if ( Is2D )
{
+ bIs2D = true;
alSource3f(alSources[id], AL_POSITION, 0.0f, 0.0f, 0.0f);
alSourcef(alSources[id], AL_GAIN, 1.0f);
}
@@ -105,7 +117,20 @@ void CChannel::Start()
if ( !HasSource() ) return;
if ( !Data ) return;
- alBufferData(alBuffers[id], AL_FORMAT_MONO16, Data, DataSize, Frequency);
+ if ( bIs2D )
+ {
+ // convert mono data to stereo
+ int16 *monoData = (int16*)Data;
+ int16 *stereoData = (int16*)tempStereoBuffer;
+ for (size_t i = 0; i < DataSize / 2; i++)
+ {
+ *(stereoData++) = *monoData;
+ *(stereoData++) = *(monoData++);
+ }
+ alBufferData(alBuffers[id], AL_FORMAT_STEREO16, tempStereoBuffer, DataSize * 2, Frequency);
+ }
+ else
+ alBufferData(alBuffers[id], AL_FORMAT_MONO16, Data, DataSize, Frequency);
if ( LoopPoints[0] != 0 && LoopPoints[0] != -1 )
alBufferiv(alBuffers[id], AL_LOOP_POINTS_SOFT, LoopPoints);
alSourcei(alSources[id], AL_BUFFER, alBuffers[id]);
@@ -165,10 +190,51 @@ void CChannel::SetCurrentFreq(uint32 freq)
SetPitch(ALfloat(freq) / Frequency);
}
-void CChannel::SetLoopCount(int32 loopCount) // fake. TODO:
+void CChannel::SetLoopCount(int32 count)
{
if ( !HasSource() ) return;
- alSourcei(alSources[id], AL_LOOPING, loopCount == 1 ? AL_FALSE : AL_TRUE);
+
+ // 0: loop indefinitely, 1: play one time, 2: play two times etc...
+ // only > 1 needs manual processing
+
+ if (LoopCount > 1 && count < 2)
+ channelsThatNeedService--;
+ else if (LoopCount < 2 && count > 1)
+ channelsThatNeedService++;
+
+ alSourcei(alSources[id], AL_LOOPING, count == 1 ? AL_FALSE : AL_TRUE);
+ LoopCount = count;
+}
+
+bool CChannel::Update()
+{
+ if (!HasSource()) return false;
+ if (LoopCount < 2) return false;
+
+ ALint state;
+ alGetSourcei(alSources[id], AL_SOURCE_STATE, &state);
+ if (state == AL_STOPPED) {
+ debug("Looping channels(%d in this case) shouldn't report AL_STOPPED, but nvm\n", id);
+ SetLoopCount(1);
+ return true;
+ }
+
+ assert(channelsThatNeedService > 0 && "Ref counting is broken");
+
+ ALint offset;
+ alGetSourcei(alSources[id], AL_SAMPLE_OFFSET, &offset);
+
+ // Rewound
+ if (offset < LastProcessedOffset) {
+ LoopCount--;
+ if (LoopCount == 1) {
+ // Playing last tune...
+ channelsThatNeedService--;
+ alSourcei(alSources[id], AL_LOOPING, AL_FALSE);
+ }
+ }
+ LastProcessedOffset = offset;
+ return true;
}
void CChannel::SetLoopPoints(ALint start, ALint end)
@@ -200,6 +266,7 @@ void CChannel::SetPan(int32 pan)
void CChannel::ClearBuffer()
{
if ( !HasSource() ) return;
+ alSourcei(alSources[id], AL_LOOPING, AL_FALSE);
alSourcei(alSources[id], AL_BUFFER, AL_NONE);
Data = nil;
DataSize = 0;
diff --git a/src/audio/oal/channel.h b/src/audio/oal/channel.h
index 81817a32..872646c8 100644
--- a/src/audio/oal/channel.h
+++ b/src/audio/oal/channel.h
@@ -19,7 +19,11 @@ class CChannel
float Distances[2];
int32 LoopCount;
ALint LoopPoints[2];
+ ALint LastProcessedOffset;
+ bool bIs2D;
public:
+ static int32 channelsThatNeedService;
+
static void InitChannels();
static void DestroyChannels();
@@ -37,7 +41,7 @@ public:
void SetVolume(int32 vol);
void SetSampleData(void *_data, size_t _DataSize, int32 freq);
void SetCurrentFreq(uint32 freq);
- void SetLoopCount(int32 loopCount); // fake
+ void SetLoopCount(int32 count);
void SetLoopPoints(ALint start, ALint end);
void SetPosition(float x, float y, float z);
void SetDistances(float max, float min);
@@ -45,6 +49,7 @@ public:
void ClearBuffer();
void SetReverbMix(ALuint slot, float mix);
void UpdateReverb(ALuint slot);
+ bool Update();
};
#endif \ No newline at end of file
diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp
index 19fa4ec4..ed73e940 100644
--- a/src/audio/oal/stream.cpp
+++ b/src/audio/oal/stream.cpp
@@ -464,8 +464,8 @@ public:
#endif
#ifdef AUDIO_OAL_USE_MPG123
-// fuzzy seek eliminates stutter when playing ADF but spams errors a lot (nothing breaks though)
-#define MP3_USE_FUZZY_SEEK
+// fuzzy seek eliminates stutter when playing ADF but spams errors a lot (and breaks radio sometimes)
+//#define MP3_USE_FUZZY_SEEK
class CMP3File : public IDecoder
{
@@ -492,6 +492,8 @@ public:
{
#ifdef MP3_USE_FUZZY_SEEK
mpg123_param(m_pMH, MPG123_FLAGS, MPG123_FUZZY | MPG123_SEEKBUFFER | MPG123_GAPLESS | MPG123_QUIET, 0.0);
+#else
+ mpg123_param(m_pMH, MPG123_FLAGS, MPG123_SEEKBUFFER | MPG123_GAPLESS, 0.0);
#endif
long rate = 0;
int channels = 0;
@@ -499,6 +501,7 @@ public:
m_bOpened = mpg123_open(m_pMH, path) == MPG123_OK
&& mpg123_getformat(m_pMH, &rate, &channels, &encoding) == MPG123_OK;
+
m_nRate = rate;
m_nChannels = channels;
@@ -601,6 +604,8 @@ public:
{
#ifdef MP3_USE_FUZZY_SEEK
mpg123_param(m_pMH, MPG123_FLAGS, MPG123_FUZZY | MPG123_SEEKBUFFER | MPG123_GAPLESS | MPG123_QUIET, 0.0);
+#else
+ mpg123_param(m_pMH, MPG123_FLAGS, MPG123_SEEKBUFFER | MPG123_GAPLESS, 0.0);
#endif
long rate = 0;
int channels = 0;
@@ -980,7 +985,8 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU
m_bReset(false),
m_nVolume(0),
m_nPan(0),
- m_nPosBeforeReset(0)
+ m_nPosBeforeReset(0),
+ m_nLoopCount(1)
{
// Be case-insensitive on linux (from https://github.com/OneSadCookie/fcaseopen/)
@@ -1078,7 +1084,7 @@ bool CStream::IsPlaying()
ALint sourceState[2];
alGetSourcei(m_pAlSources[0], AL_SOURCE_STATE, &sourceState[0]);
alGetSourcei(m_pAlSources[1], AL_SOURCE_STATE, &sourceState[1]);
- if ( m_bActive || sourceState[0] == AL_PLAYING || sourceState[1] == AL_PLAYING)
+ if (sourceState[0] == AL_PLAYING || sourceState[1] == AL_PLAYING)
return true;
}
@@ -1150,6 +1156,7 @@ void CStream::SetPan(uint8 nPan)
m_nPan = nPan;
}
+// Should only be called if source is stopped
void CStream::SetPosMS(uint32 nPos)
{
if ( !IsOpened() ) return;
@@ -1232,10 +1239,16 @@ void CStream::ClearBuffers()
alSourceUnqueueBuffers(m_pAlSources[1], 1, &value);
}
-bool CStream::Setup()
+bool CStream::Setup(bool imSureQueueIsEmpty)
{
if ( IsOpened() )
{
+ alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE);
+ alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE);
+ if (!imSureQueueIsEmpty) {
+ SetPlay(false);
+ ClearBuffers();
+ }
m_pSoundFile->Seek(0);
//SetPosition(0.0f, 0.0f, 0.0f);
SetPitch(1.0f);
@@ -1246,6 +1259,13 @@ bool CStream::Setup()
return IsOpened();
}
+void CStream::SetLoopCount(int32 count)
+{
+ if ( !HasSource() ) return;
+
+ m_nLoopCount = count;
+}
+
void CStream::SetPlay(bool state)
{
if ( !HasSource() ) return;
@@ -1305,7 +1325,7 @@ void CStream::Update()
if ( !m_bPaused )
{
- ALint sourceState[2];
+ ALint totalBuffers[2] = { 0, 0 };
ALint buffersProcessed[2] = { 0, 0 };
// Relying a lot on left buffer states in here
@@ -1313,44 +1333,51 @@ void CStream::Update()
do
{
//alSourcef(m_pAlSources[0], AL_ROLLOFF_FACTOR, 0.0f);
- alGetSourcei(m_pAlSources[0], AL_SOURCE_STATE, &sourceState[0]);
+ alGetSourcei(m_pAlSources[0], AL_BUFFERS_QUEUED, &totalBuffers[0]);
alGetSourcei(m_pAlSources[0], AL_BUFFERS_PROCESSED, &buffersProcessed[0]);
//alSourcef(m_pAlSources[1], AL_ROLLOFF_FACTOR, 0.0f);
- alGetSourcei(m_pAlSources[1], AL_SOURCE_STATE, &sourceState[1]);
+ alGetSourcei(m_pAlSources[1], AL_BUFFERS_QUEUED, &totalBuffers[1]);
alGetSourcei(m_pAlSources[1], AL_BUFFERS_PROCESSED, &buffersProcessed[1]);
} while (buffersProcessed[0] != buffersProcessed[1]);
- ALint looping = AL_FALSE;
- alGetSourcei(m_pAlSources[0], AL_LOOPING, &looping);
-
- if ( looping == AL_TRUE )
- {
- TRACE("stream set looping");
- alSourcei(m_pAlSources[0], AL_LOOPING, AL_TRUE);
- alSourcei(m_pAlSources[1], AL_LOOPING, AL_TRUE);
- }
-
assert(buffersProcessed[0] == buffersProcessed[1]);
- while( buffersProcessed[0]-- )
+ // Correcting OpenAL concepts here:
+ // AL_BUFFERS_QUEUED = Number of *all* buffers in queue, including processed, processing and pending
+ // AL_BUFFERS_PROCESSED = Index of the buffer being processing right now. Buffers coming after that(have greater index) are pending buffers.
+ // which means: totalBuffers[0] - buffersProcessed[0] = pending buffers
+
+ bool buffersRefilled = false;
+
+ // We should wait queue to be cleared to loop track, because position calculation relies on queue.
+ if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0)
{
- ALuint buffer[2];
-
- alSourceUnqueueBuffers(m_pAlSources[0], 1, &buffer[0]);
- alSourceUnqueueBuffers(m_pAlSources[1], 1, &buffer[1]);
-
- if (m_bActive && FillBuffer(buffer))
- {
- alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]);
- alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]);
- }
+ Setup(true);
+ buffersRefilled = FillBuffers() != 0;
+ if (m_nLoopCount != 0)
+ m_nLoopCount--;
}
-
- if ( sourceState[0] != AL_PLAYING )
+ else
{
- alGetSourcei(m_pAlSources[0], AL_BUFFERS_PROCESSED, &buffersProcessed[0]);
- SetPlay(buffersProcessed[0]!=0);
+ while( buffersProcessed[0]-- )
+ {
+ ALuint buffer[2];
+
+ alSourceUnqueueBuffers(m_pAlSources[0], 1, &buffer[0]);
+ alSourceUnqueueBuffers(m_pAlSources[1], 1, &buffer[1]);
+
+ if (m_bActive && FillBuffer(buffer))
+ {
+ buffersRefilled = true;
+ alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]);
+ alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]);
+ }
+ }
}
+
+ // Two reasons: 1-Source may be starved to audio and stopped itself, 2- We're already waiting it to starve and die for looping track!
+ if (m_bActive && (buffersRefilled || (totalBuffers[1] - buffersProcessed[1] != 0)))
+ SetPlay(true);
}
}
@@ -1358,10 +1385,11 @@ void CStream::ProviderInit()
{
if ( m_bReset )
{
- if ( Setup() )
+ if ( Setup(true) )
{
SetPan(m_nPan);
SetVolume(m_nVolume);
+ SetLoopCount(m_nLoopCount);
SetPosMS(m_nPosBeforeReset);
if (m_bActive)
FillBuffers();
diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h
index bcbc5e54..9a2a2fbe 100644
--- a/src/audio/oal/stream.h
+++ b/src/audio/oal/stream.h
@@ -69,6 +69,7 @@ class CStream
uint32 m_nVolume;
uint8 m_nPan;
uint32 m_nPosBeforeReset;
+ int32 m_nLoopCount;
IDecoder *m_pSoundFile;
@@ -99,10 +100,12 @@ public:
uint32 GetPosMS();
uint32 GetLengthMS();
- bool Setup();
+ bool Setup(bool imSureQueueIsEmpty = false);
void Start();
void Stop();
void Update(void);
+ void SetLoopCount(int32);
+
void ProviderInit();
void ProviderTerm();
diff --git a/src/audio/sampman.h b/src/audio/sampman.h
index 697a7aa8..cc73e5c2 100644
--- a/src/audio/sampman.h
+++ b/src/audio/sampman.h
@@ -1,5 +1,6 @@
#pragma once
#include "AudioSamples.h"
+#include "audio_enums.h"
#define MAX_VOLUME 127
#define MAX_FREQ DIGITALRATE
@@ -111,22 +112,29 @@ enum
#endif
};
#define MAX_PEDSFX 7
-#define PED_BLOCKSIZE 79000
+#define PED_BLOCKSIZE 160000
#define MAXPROVIDERS 64
-#define MAXCHANNELS 28
-#define MAXCHANNELS_SURROUND 24
-#define MAX2DCHANNELS 1
-#define CHANNEL2D MAXCHANNELS
+#define MAXCHANNELS (NUM_CHANNELS_GENERIC+1)
+#define MAXCHANNELS_SURROUND (MAXCHANNELS-4)
+#define MAX2DCHANNELS 3
-#define MAX_STREAMS 3
+#define MAX_STREAMS 1
#define DIGITALRATE 32000
#define DIGITALBITS 16
#define DIGITALCHANNELS 2
-#define MAX_DIGITAL_MIXER_CHANNELS 32
+#ifdef FIX_BUGS
+#define MAX_DIGITAL_MIXER_CHANNELS (MAXCHANNELS+MAX_STREAMS*2+MAX2DCHANNELS)
+#else
+#define MAX_DIGITAL_MIXER_CHANNELS (MAXCHANNELS+MAX_STREAMS*2)
+#endif
+
+static_assert( NUM_CHANNELS == MAXCHANNELS + MAX2DCHANNELS, "The number of channels doesn't match with an enum" );
+
+extern int gBankStartOffset[67];
class cSampleManager
{
@@ -135,9 +143,9 @@ class cSampleManager
uint8 m_nMP3BoostVolume;
uint8 m_nEffectsFadeVolume;
uint8 m_nMusicFadeVolume;
- uint8 m_nMonoMode;
+ bool8 m_nMonoMode;
char m_szCDRomRootPath[80];
- bool m_bInitialised;
+ bool8 m_bInitialised;
uint8 m_nNumberOfProviders;
char *m_aAudioProviders[MAXPROVIDERS];
tSample m_aSamples[TOTAL_AUDIO_SAMPLES];
@@ -167,16 +175,16 @@ public:
int8 AutoDetect3DProviders();
- bool IsMP3RadioChannelAvailable(void);
+ bool8 IsMP3RadioChannelAvailable(void);
void ReleaseDigitalHandle (void);
void ReacquireDigitalHandle(void);
- bool Initialise(void);
- void Terminate (void);
+ bool8 Initialise(void);
+ void Terminate (void);
- bool CheckForAnAudioFileOnCD(void);
- char GetCDAudioDriveLetter (void);
+ bool8 CheckForAnAudioFileOnCD(void);
+ char GetCDAudioDriveLetter (void);
void UpdateEffectsVolume(void);
@@ -185,14 +193,14 @@ public:
void SetMP3BoostVolume (uint8 nVolume);
void SetEffectsFadeVolume (uint8 nVolume);
void SetMusicFadeVolume (uint8 nVolume);
- void SetMonoMode (uint8 nMode);
+ void SetMonoMode (bool8 nMode);
- bool LoadSampleBank (uint8 nBank);
- void UnloadSampleBank (uint8 nBank);
- bool IsSampleBankLoaded(uint8 nBank);
+ bool8 LoadSampleBank (uint8 nBank);
+ void UnloadSampleBank (uint8 nBank);
+ bool8 IsSampleBankLoaded(uint8 nBank);
- bool IsPedCommentLoaded(uint32 nComment);
- bool LoadPedComment (uint32 nComment);
+ bool8 IsPedCommentLoaded(uint32 nComment);
+ bool8 LoadPedComment (uint32 nComment);
int32 GetBankContainingSound(uint32 offset);
int32 _GetPedCommentSlot(uint32 nComment);
@@ -202,10 +210,10 @@ public:
int32 GetSampleLoopEndOffset (uint32 nSample);
uint32 GetSampleLength (uint32 nSample);
- bool UpdateReverb(void);
+ bool8 UpdateReverb(void);
- void SetChannelReverbFlag (uint32 nChannel, uint8 nReverbFlag);
- bool InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank);
+ void SetChannelReverbFlag (uint32 nChannel, bool8 nReverbFlag);
+ bool8 InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank);
void SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume);
void SetChannel3DPosition (uint32 nChannel, float fX, float fY, float fZ);
void SetChannel3DDistances (uint32 nChannel, float fMax, float fMin);
@@ -214,241 +222,96 @@ public:
void SetChannelFrequency (uint32 nChannel, uint32 nFreq);
void SetChannelLoopPoints (uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd);
void SetChannelLoopCount (uint32 nChannel, uint32 nLoopCount);
- bool GetChannelUsedFlag (uint32 nChannel);
+ bool8 GetChannelUsedFlag (uint32 nChannel);
void StartChannel (uint32 nChannel);
void StopChannel (uint32 nChannel);
- void PreloadStreamedFile (uint32 nFile, uint8 nStream);
- void PauseStream (uint8 nPauseFlag, uint8 nStream);
- void StartPreloadedStreamedFile (uint8 nStream);
- bool StartStreamedFile (uint32 nFile, uint32 nPos, uint8 nStream);
- void StopStreamedFile (uint8 nStream);
- int32 GetStreamedFilePosition (uint8 nStream);
- void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream);
- int32 GetStreamedFileLength (uint8 nStream);
- bool IsStreamPlaying (uint8 nStream);
+ void PreloadStreamedFile (uint32 nFile, uint8 nStream = 0);
+ void PauseStream (bool8 nPauseFlag, uint8 nStream = 0);
+ void StartPreloadedStreamedFile (uint8 nStream = 0);
+ bool8 StartStreamedFile (uint32 nFile, uint32 nPos, uint8 nStream = 0);
+ void StopStreamedFile (uint8 nStream = 0);
+ int32 GetStreamedFilePosition (uint8 nStream = 0);
+ void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream = 0);
+ int32 GetStreamedFileLength (uint8 nStream = 0);
+ bool8 IsStreamPlaying (uint8 nStream = 0);
+ void SetStreamedFileLoopFlag (bool8 nLoopFlag, uint8 nStream = 0);
#ifdef AUDIO_OAL
void Service(void);
#endif
- bool InitialiseSampleBanks(void);
+ bool8 InitialiseSampleBanks(void);
uint8 GetMusicVolume() const { return m_nMusicVolume; }
- void SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nStream);
};
extern cSampleManager SampleManager;
extern uint32 BankStartOffset[MAX_SFX_BANKS];
-#if defined(OPUS_AUDIO_PATHS)
-static char StreamedNameTable[][25] = {
- "AUDIO\\HEAD.OPUS", "AUDIO\\CLASS.OPUS", "AUDIO\\KJAH.OPUS", "AUDIO\\RISE.OPUS", "AUDIO\\LIPS.OPUS", "AUDIO\\GAME.OPUS",
- "AUDIO\\MSX.OPUS", "AUDIO\\FLASH.OPUS", "AUDIO\\CHAT.OPUS", "AUDIO\\HEAD.OPUS", "AUDIO\\POLICE.OPUS", "AUDIO\\CITY.OPUS",
- "AUDIO\\WATER.OPUS", "AUDIO\\COMOPEN.OPUS", "AUDIO\\SUBOPEN.OPUS", "AUDIO\\JB.OPUS", "AUDIO\\BET.OPUS", "AUDIO\\L1_LG.OPUS",
- "AUDIO\\L2_DSB.OPUS", "AUDIO\\L3_DM.OPUS", "AUDIO\\L4_PAP.OPUS", "AUDIO\\L5_TFB.OPUS", "AUDIO\\J0_DM2.OPUS", "AUDIO\\J1_LFL.OPUS",
- "AUDIO\\J2_KCL.OPUS", "AUDIO\\J3_VH.OPUS", "AUDIO\\J4_ETH.OPUS", "AUDIO\\J5_DST.OPUS", "AUDIO\\J6_TBJ.OPUS", "AUDIO\\T1_TOL.OPUS",
- "AUDIO\\T2_TPU.OPUS", "AUDIO\\T3_MAS.OPUS", "AUDIO\\T4_TAT.OPUS", "AUDIO\\T5_BF.OPUS", "AUDIO\\S0_MAS.OPUS", "AUDIO\\S1_PF.OPUS",
- "AUDIO\\S2_CTG.OPUS", "AUDIO\\S3_RTC.OPUS", "AUDIO\\S5_LRQ.OPUS", "AUDIO\\S4_BDBA.OPUS", "AUDIO\\S4_BDBB.OPUS", "AUDIO\\S2_CTG2.OPUS",
- "AUDIO\\S4_BDBD.OPUS", "AUDIO\\S5_LRQB.OPUS", "AUDIO\\S5_LRQC.OPUS", "AUDIO\\A1_SSO.OPUS", "AUDIO\\A2_PP.OPUS", "AUDIO\\A3_SS.OPUS",
- "AUDIO\\A4_PDR.OPUS", "AUDIO\\A5_K2FT.OPUS", "AUDIO\\K1_KBO.OPUS", "AUDIO\\K2_GIS.OPUS", "AUDIO\\K3_DS.OPUS", "AUDIO\\K4_SHI.OPUS",
- "AUDIO\\K5_SD.OPUS", "AUDIO\\R0_PDR2.OPUS", "AUDIO\\R1_SW.OPUS", "AUDIO\\R2_AP.OPUS", "AUDIO\\R3_ED.OPUS", "AUDIO\\R4_GF.OPUS",
- "AUDIO\\R5_PB.OPUS", "AUDIO\\R6_MM.OPUS", "AUDIO\\D1_STOG.OPUS", "AUDIO\\D2_KK.OPUS", "AUDIO\\D3_ADO.OPUS", "AUDIO\\D5_ES.OPUS",
- "AUDIO\\D7_MLD.OPUS", "AUDIO\\D4_GTA.OPUS", "AUDIO\\D4_GTA2.OPUS", "AUDIO\\D6_STS.OPUS", "AUDIO\\A6_BAIT.OPUS", "AUDIO\\A7_ETG.OPUS",
- "AUDIO\\A8_PS.OPUS", "AUDIO\\A9_ASD.OPUS", "AUDIO\\K4_SHI2.OPUS", "AUDIO\\C1_TEX.OPUS", "AUDIO\\EL_PH1.OPUS", "AUDIO\\EL_PH2.OPUS",
- "AUDIO\\EL_PH3.OPUS", "AUDIO\\EL_PH4.OPUS", "AUDIO\\YD_PH1.OPUS", "AUDIO\\YD_PH2.OPUS", "AUDIO\\YD_PH3.OPUS", "AUDIO\\YD_PH4.OPUS",
- "AUDIO\\HD_PH1.OPUS", "AUDIO\\HD_PH2.OPUS", "AUDIO\\HD_PH3.OPUS", "AUDIO\\HD_PH4.OPUS", "AUDIO\\HD_PH5.OPUS", "AUDIO\\MT_PH1.OPUS",
- "AUDIO\\MT_PH2.OPUS", "AUDIO\\MT_PH3.OPUS", "AUDIO\\MT_PH4.OPUS", "AUDIO\\MISCOM.OPUS", "AUDIO\\END.OPUS", "AUDIO\\lib_a1.OPUS",
- "AUDIO\\lib_a2.OPUS", "AUDIO\\lib_a.OPUS", "AUDIO\\lib_b.OPUS", "AUDIO\\lib_c.OPUS", "AUDIO\\lib_d.OPUS", "AUDIO\\l2_a.OPUS",
- "AUDIO\\j4t_1.OPUS", "AUDIO\\j4t_2.OPUS", "AUDIO\\j4t_3.OPUS", "AUDIO\\j4t_4.OPUS", "AUDIO\\j4_a.OPUS", "AUDIO\\j4_b.OPUS",
- "AUDIO\\j4_c.OPUS", "AUDIO\\j4_d.OPUS", "AUDIO\\j4_e.OPUS", "AUDIO\\j4_f.OPUS", "AUDIO\\j6_1.OPUS", "AUDIO\\j6_a.OPUS",
- "AUDIO\\j6_b.OPUS", "AUDIO\\j6_c.OPUS", "AUDIO\\j6_d.OPUS", "AUDIO\\t4_a.OPUS", "AUDIO\\s1_a.OPUS", "AUDIO\\s1_a1.OPUS",
- "AUDIO\\s1_b.OPUS", "AUDIO\\s1_c.OPUS", "AUDIO\\s1_c1.OPUS", "AUDIO\\s1_d.OPUS", "AUDIO\\s1_e.OPUS", "AUDIO\\s1_f.OPUS",
- "AUDIO\\s1_g.OPUS", "AUDIO\\s1_h.OPUS", "AUDIO\\s1_i.OPUS", "AUDIO\\s1_j.OPUS", "AUDIO\\s1_k.OPUS", "AUDIO\\s1_l.OPUS",
- "AUDIO\\s3_a.OPUS", "AUDIO\\s3_b.OPUS", "AUDIO\\el3_a.OPUS", "AUDIO\\mf1_a.OPUS", "AUDIO\\mf2_a.OPUS", "AUDIO\\mf3_a.OPUS",
- "AUDIO\\mf3_b.OPUS", "AUDIO\\mf3_b1.OPUS", "AUDIO\\mf3_c.OPUS", "AUDIO\\mf4_a.OPUS", "AUDIO\\mf4_b.OPUS", "AUDIO\\mf4_c.OPUS",
- "AUDIO\\a1_a.OPUS", "AUDIO\\a3_a.OPUS", "AUDIO\\a5_a.OPUS", "AUDIO\\a4_a.OPUS", "AUDIO\\a4_b.OPUS", "AUDIO\\a4_c.OPUS",
- "AUDIO\\a4_d.OPUS", "AUDIO\\k1_a.OPUS", "AUDIO\\k3_a.OPUS", "AUDIO\\r1_a.OPUS", "AUDIO\\r2_a.OPUS", "AUDIO\\r2_b.OPUS",
- "AUDIO\\r2_c.OPUS", "AUDIO\\r2_d.OPUS", "AUDIO\\r2_e.OPUS", "AUDIO\\r2_f.OPUS", "AUDIO\\r2_g.OPUS", "AUDIO\\r2_h.OPUS",
- "AUDIO\\r5_a.OPUS", "AUDIO\\r6_a.OPUS", "AUDIO\\r6_a1.OPUS", "AUDIO\\r6_b.OPUS", "AUDIO\\lo2_a.OPUS", "AUDIO\\lo6_a.OPUS",
- "AUDIO\\yd2_a.OPUS", "AUDIO\\yd2_b.OPUS", "AUDIO\\yd2_c.OPUS", "AUDIO\\yd2_c1.OPUS", "AUDIO\\yd2_d.OPUS", "AUDIO\\yd2_e.OPUS",
- "AUDIO\\yd2_f.OPUS", "AUDIO\\yd2_g.OPUS", "AUDIO\\yd2_h.OPUS", "AUDIO\\yd2_ass.OPUS", "AUDIO\\yd2_ok.OPUS", "AUDIO\\h5_a.OPUS",
- "AUDIO\\h5_b.OPUS", "AUDIO\\h5_c.OPUS", "AUDIO\\ammu_a.OPUS", "AUDIO\\ammu_b.OPUS", "AUDIO\\ammu_c.OPUS", "AUDIO\\door_1.OPUS",
- "AUDIO\\door_2.OPUS", "AUDIO\\door_3.OPUS", "AUDIO\\door_4.OPUS", "AUDIO\\door_5.OPUS", "AUDIO\\door_6.OPUS", "AUDIO\\t3_a.OPUS",
- "AUDIO\\t3_b.OPUS", "AUDIO\\t3_c.OPUS", "AUDIO\\k1_b.OPUS", "AUDIO\\cat1.OPUS"};
-#elif defined(PS2_AUDIO_PATHS)
-static char StreamedNameTable[][40] =
-{
- "AUDIO\\MUSIC\\HEAD.VB",
- "AUDIO\\MUSIC\\DOUBLE.VB",
- "AUDIO\\MUSIC\\KJAH.VB",
- "AUDIO\\MUSIC\\RISE.VB",
- "AUDIO\\MUSIC\\LIPS.VB",
- "AUDIO\\MUSIC\\MUNDO.VB",
- "AUDIO\\MUSIC\\MSX.VB",
- "AUDIO\\MUSIC\\FLASH.VB",
- "AUDIO\\MUSIC\\LCJ.VB",
- "AUDIO\\MUSIC\\LCFR.VB",
- "AUDIO\\MUSIC\\MISCOM2.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\WATER.VB",
- "AUDIO\\MUSIC\\SAWMILL.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\WATER.VB",
- "AUDIO\\MUSIC\\WATER.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\CITY.VB",
- "AUDIO\\MUSIC\\POLICE.VB",
- "AUDIO\\MUSIC\\TAXI.VB",
- "AUDIO\\NEWS\\NEWS_A.VB",
- "AUDIO\\NEWS\\NEWS_B.VB",
- "AUDIO\\NEWS\\NEWS_C.VB",
- "AUDIO\\NEWS\\NEWS_D.VB",
- "AUDIO\\NEWS\\NEWS_E.VB",
- "AUDIO\\NEWS\\NEWS_F.VB",
- "AUDIO\\NEWS\\NEWS_G.VB",
- "AUDIO\\NEWS\\NEWS_H.VB",
- "AUDIO\\NEWS\\NEWS_I.VB",
- "AUDIO\\NEWS\\NEWS_J.VB",
- "AUDIO\\NEWS\\NEWS_K.VB",
- "AUDIO\\NEWS\\NEWS_L.VB",
- "AUDIO\\NEWS\\NEWS_M.VB",
- "AUDIO\\NEWS\\NEWS_N.VB",
- "AUDIO\\CUTSCENE\\BIKER.VB",
- "AUDIO\\CUTSCENE\\BONEVOY.VB",
- "AUDIO\\CUTSCENE\\CAMPAIN.VB",
- "AUDIO\\CUTSCENE\\CASHCHP.VB",
- "AUDIO\\CUTSCENE\\CONTBAN.VB",
- "AUDIO\\CUTSCENE\\CRAZY69.VB",
- "AUDIO\\CUTSCENE\\CRAZY69.VB",
- "AUDIO\\CUTSCENE\\DEADLY.VB",
- "AUDIO\\CUTSCENE\\DONPROB.VB",
- "AUDIO\\CUTSCENE\\DRIVNMR.VB",
- "AUDIO\\CUTSCENE\\ELECTON.VB",
- "AUDIO\\CUTSCENE\\FINAL.VB",
- "AUDIO\\CUTSCENE\\FINAL_2.VB",
- "AUDIO\\CUTSCENE\\HOMSWET.VB",
- "AUDIO\\CUTSCENE\\HOTWHEL.VB",
- "AUDIO\\CUTSCENE\\KIDNAPP.VB",
- "AUDIO\\CUTSCENE\\LANDGRB.VB",
- "AUDIO\\CUTSCENE\\MORGUE.VB",
- "AUDIO\\CUTSCENE\\OVERDOS.VB",
- "AUDIO\\CUTSCENE\\RUFJUST.VB",
- "AUDIO\\CUTSCENE\\SAYONAR.VB",
- "AUDIO\\CUTSCENE\\SICILAN.VB",
- "AUDIO\\CUTSCENE\\THEOFER.VB",
- "AUDIO\\CUTSCENE\\INTRO.VB",
- "AUDIO\\MUSIC\\FINALE.VB",
- "AUDIO\\MUSIC\\MISCOM2.VB"
-#else
-static char StreamedNameTable[][25] =
-{
- "AUDIO\\WILD.ADF",
- "AUDIO\\FLASH.ADF",
- "AUDIO\\KCHAT.ADF",
- "AUDIO\\FEVER.ADF",
- "AUDIO\\VROCK.ADF",
- "AUDIO\\VCPR.ADF",
- "AUDIO\\ESPANT.ADF",
- "AUDIO\\EMOTION.ADF",
- "AUDIO\\WAVE.ADF",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\CITY.MP3",
- "AUDIO\\WATER.MP3",
- "AUDIO\\BEACHAMB.MP3",
- "AUDIO\\HCITY.MP3",
- "AUDIO\\HWATER.MP3",
- "AUDIO\\HBEACH.MP3",
- "AUDIO\\MALLAMB.MP3",
- "AUDIO\\STRIP.MP3",
- "AUDIO\\MALIBU.MP3",
- "AUDIO\\HOTEL.MP3",
- "AUDIO\\DIRTRING.MP3",
- "AUDIO\\LAW4RIOT.MP3",
- "AUDIO\\AMBSIL.MP3",
- "AUDIO\\POLICE.MP3",
- "AUDIO\\TAXI.MP3",
- "AUDIO\\BCLOSED.MP3",
- "AUDIO\\BOPEN.MP3",
- "AUDIO\\ASS_1.MP3",
- "AUDIO\\ASS_2.MP3",
- "AUDIO\\BANK_1.MP3",
- "AUDIO\\BANK_2A.MP3",
- "AUDIO\\BANK_2B.MP3",
- "AUDIO\\BANK_3A.MP3",
- "AUDIO\\BANK_3B.MP3",
- "AUDIO\\BANK_4.MP3",
- "AUDIO\\BIKE_1.MP3",
- "AUDIO\\BIKE_2.MP3",
- "AUDIO\\BIKE_3.MP3",
- "AUDIO\\BUD_1.MP3",
- "AUDIO\\BUD_2.MP3",
- "AUDIO\\BUD_3.MP3",
- "AUDIO\\CAP_1.MP3",
- "AUDIO\\CAR_1.MP3",
- "AUDIO\\CNT_1A.MP3",
- "AUDIO\\CNT_1B.MP3",
- "AUDIO\\CNT_2.MP3",
- "AUDIO\\COK_1.MP3",
- "AUDIO\\COK_2A.MP3",
- "AUDIO\\COK_2B.MP3",
- "AUDIO\\COK_3.MP3",
- "AUDIO\\COK_4A.MP3",
- "AUDIO\\COK_4A2.MP3",
- "AUDIO\\COK_4B.MP3",
- "AUDIO\\COL_1.MP3",
- "AUDIO\\COL_2.MP3",
- "AUDIO\\COL_3A.MP3",
- "AUDIO\\COL_4A.MP3",
- "AUDIO\\COL_5A.MP3",
- "AUDIO\\COL_5B.MP3",
- "AUDIO\\CUB_1.MP3",
- "AUDIO\\CUB_2.MP3",
- "AUDIO\\CUB_3.MP3",
- "AUDIO\\CUB_4.MP3",
- "AUDIO\\DRUG_1.MP3",
- "AUDIO\\FIN.MP3",
- "AUDIO\\FIN2.MP3",
- "AUDIO\\FINALE.MP3",
- "AUDIO\\HAT_1.MP3",
- "AUDIO\\HAT_2.MP3",
- "AUDIO\\HAT_3.MP3",
- "AUDIO\\ICE_1.MP3",
- "AUDIO\\INT_A.MP3",
- "AUDIO\\INT_B.MP3",
- "AUDIO\\INT_D.MP3",
- "AUDIO\\INT_M.MP3",
- "AUDIO\\LAW_1A.MP3",
- "AUDIO\\LAW_1B.MP3",
- "AUDIO\\LAW_2A.MP3",
- "AUDIO\\LAW_2B.MP3",
- "AUDIO\\LAW_2C.MP3",
- "AUDIO\\LAW_3.MP3",
- "AUDIO\\LAW_4.MP3",
- "AUDIO\\PHIL_1.MP3",
- "AUDIO\\PHIL_2.MP3",
- "AUDIO\\PORN_1.MP3",
- "AUDIO\\PORN_2.MP3",
- "AUDIO\\PORN_3.MP3",
- "AUDIO\\PORN_4.MP3",
- "AUDIO\\RESC_1A.MP3",
- "AUDIO\\ROK_1.MP3",
- "AUDIO\\ROK_2.MP3",
- "AUDIO\\ROK_3A.MP3",
- "AUDIO\\STRIPA.MP3",
- "AUDIO\\TAX_1.MP3",
- "AUDIO\\TEX_1.MP3",
- "AUDIO\\TEX_2.MP3",
- "AUDIO\\TEX_3.MP3",
- "AUDIO\\GLIGHT.MP3",
- "AUDIO\\FIST.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
- "AUDIO\\MISCOM.MP3",
-#endif
-
+static char StreamedNameTable[][40] = {
+ "AUDIO\\MUSIC\\HEAD",
+ "AUDIO\\MUSIC\\DOUBLE",
+ "AUDIO\\MUSIC\\KJAH",
+ "AUDIO\\MUSIC\\RISE",
+ "AUDIO\\MUSIC\\LIPS",
+ "AUDIO\\MUSIC\\MUNDO",
+ "AUDIO\\MUSIC\\MSX",
+ "AUDIO\\MUSIC\\FLASH",
+ "AUDIO\\MUSIC\\LCJ",
+ "AUDIO\\MUSIC\\LCFR",
+ "AUDIO\\MUSIC\\MISCOM2",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\SAWMILL",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\WATER",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\CITY",
+ "AUDIO\\MUSIC\\POLICE",
+ "AUDIO\\MUSIC\\TAXI",
+ "AUDIO\\NEWS\\NEWS_A",
+ "AUDIO\\NEWS\\NEWS_B",
+ "AUDIO\\NEWS\\NEWS_C",
+ "AUDIO\\NEWS\\NEWS_D",
+ "AUDIO\\NEWS\\NEWS_E",
+ "AUDIO\\NEWS\\NEWS_F",
+ "AUDIO\\NEWS\\NEWS_G",
+ "AUDIO\\NEWS\\NEWS_H",
+ "AUDIO\\NEWS\\NEWS_I",
+ "AUDIO\\NEWS\\NEWS_J",
+ "AUDIO\\NEWS\\NEWS_K",
+ "AUDIO\\NEWS\\NEWS_L",
+ "AUDIO\\NEWS\\NEWS_M",
+ "AUDIO\\NEWS\\NEWS_N",
+ "AUDIO\\CUTSCENE\\BIKER",
+ "AUDIO\\CUTSCENE\\BONEVOY",
+ "AUDIO\\CUTSCENE\\CAMPAIN",
+ "AUDIO\\CUTSCENE\\CASHCHP",
+ "AUDIO\\CUTSCENE\\CONTBAN",
+ "AUDIO\\CUTSCENE\\CRAZY69",
+ "AUDIO\\CUTSCENE\\CRAZY69",
+ "AUDIO\\CUTSCENE\\DEADLY",
+ "AUDIO\\CUTSCENE\\DONPROB",
+ "AUDIO\\CUTSCENE\\DRIVNMR",
+ "AUDIO\\CUTSCENE\\ELECTON",
+ "AUDIO\\CUTSCENE\\FINAL",
+ "AUDIO\\CUTSCENE\\FINAL_2",
+ "AUDIO\\CUTSCENE\\HOMSWET",
+ "AUDIO\\CUTSCENE\\HOTWHEL",
+ "AUDIO\\CUTSCENE\\KIDNAPP",
+ "AUDIO\\CUTSCENE\\LANDGRB",
+ "AUDIO\\CUTSCENE\\MORGUE",
+ "AUDIO\\CUTSCENE\\OVERDOS",
+ "AUDIO\\CUTSCENE\\RUFJUST",
+ "AUDIO\\CUTSCENE\\SAYONAR",
+ "AUDIO\\CUTSCENE\\SICILAN",
+ "AUDIO\\CUTSCENE\\THEOFER",
+ "AUDIO\\CUTSCENE\\INTRO",
+ "AUDIO\\MUSIC\\FINALE",
+ "AUDIO\\MUSIC\\MISCOM2"
}; \ No newline at end of file
diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp
index bf91a874..5e2b348b 100644
--- a/src/audio/sampman_miles.cpp
+++ b/src/audio/sampman_miles.cpp
@@ -28,7 +28,7 @@ char SampleBankDataFilename[] = "AUDIO\\SFX.RAW";
FILE *fpSampleDescHandle;
FILE *fpSampleDataHandle;
-bool bSampleBankLoaded [MAX_SFX_BANKS];
+bool8 bSampleBankLoaded [MAX_SFX_BANKS];
int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS];
int32 nSampleBankSize [MAX_SFX_BANKS];
int32 nSampleBankMemoryStartAddress[MAX_SFX_BANKS];
@@ -60,14 +60,14 @@ char _mp3DirectoryPath[MAX_PATH];
HSTREAM mp3Stream [MAX_STREAMS];
int8 nStreamPan [MAX_STREAMS];
int8 nStreamVolume[MAX_STREAMS];
-uint8 nStreamLoopedFlag[MAX_STREAMS];
+bool8 nStreamLoopedFlag[MAX_STREAMS];
uint32 _CurMP3Index;
int32 _CurMP3Pos;
-bool _bIsMp3Active;
+bool8 _bIsMp3Active;
///////////////////////////////////////////////////////////////
-bool _bSampmanInitialised = false;
+bool8 _bSampmanInitialised = FALSE;
//
// Miscellaneous globals / defines
@@ -94,7 +94,7 @@ S32 speaker_type=0;
U32 _maxSamples;
float _fPrevEaxRatioDestination;
-bool _usingMilesFast2D;
+bool8 _usingMilesFast2D;
float _fEffectsLevel;
@@ -166,17 +166,17 @@ release_existing()
}
_fPrevEaxRatioDestination = 0.0f;
- _usingMilesFast2D = false;
+ _usingMilesFast2D = FALSE;
_fEffectsLevel = 0.0f;
}
-static bool
+static bool8
set_new_provider(S32 index)
{
DWORD result;
if ( curprovider == index )
- return true;
+ return TRUE;
//close the already opened provider
curprovider = index;
@@ -203,7 +203,7 @@ set_new_provider(S32 index)
release_existing();
- return false;
+ return FALSE;
}
else
{
@@ -234,7 +234,7 @@ set_new_provider(S32 index)
AIL_set_3D_room_type(opened_provider, ENVIRONMENT_CAVE);
if ( !strcmp(providers[index].name, "Miles Fast 2D Positional Audio") )
- _usingMilesFast2D = true;
+ _usingMilesFast2D = TRUE;
}
AIL_3D_provider_attribute(opened_provider, "Maximum supported samples", &_maxSamples);
@@ -252,11 +252,11 @@ set_new_provider(S32 index)
AIL_set_3D_sample_effects_level(opened_samples[i], 0.0f);
}
- return true;
+ return TRUE;
}
}
- return false;
+ return FALSE;
}
U32 RadioHandlers[9];
@@ -323,6 +323,80 @@ cSampleManager::~cSampleManager(void)
}
+int gBankStartOffset[67];
+
+void
+SetUpDebugBanksInfo()
+{
+ gBankStartOffset[3] = SFX_FE_BACK;
+ gBankStartOffset[4] = SFX_CAR_ACCEL_1;
+ gBankStartOffset[5] = SFX_CAR_ACCEL_2;
+ gBankStartOffset[9] = SFX_CAR_ACCEL_6;
+ gBankStartOffset[10] = SFX_CAR_ACCEL_7;
+ gBankStartOffset[1] = SFX_EMPTY;
+ gBankStartOffset[11] = SFX_CAR_ACCEL_8;
+ gBankStartOffset[7] = SFX_CAR_ACCEL_4;
+ gBankStartOffset[15] = SFX_CAR_ACCEL_12;
+ gBankStartOffset[13] = SFX_CAR_ACCEL_10;
+ gBankStartOffset[16] = SFX_CAR_CHAINSAW_IDLE;
+ gBankStartOffset[0] = SFX_AIR_BRAKES;
+ gBankStartOffset[17] = SFX_RC_IDLE;
+ gBankStartOffset[6] = SFX_CAR_ACCEL_3;
+ gBankStartOffset[19] = SFX_CAR_ACCEL_16;
+ gBankStartOffset[12] = SFX_CAR_ACCEL_9;
+ gBankStartOffset[2] = SFX_AMBULAN_VOICE_1_VAN_1;
+ gBankStartOffset[21] = SFX_CAR_ACCEL_18;
+ gBankStartOffset[22] = SFX_CAR_ACCEL_19;
+ gBankStartOffset[8] = SFX_CAR_ACCEL_5;
+ gBankStartOffset[23] = SFX_CAR_ACCEL_20;
+ gBankStartOffset[14] = SFX_CAR_ACCEL_11;
+ gBankStartOffset[20] = SFX_CAR_ACCEL_17;
+ gBankStartOffset[18] = SFX_CAR_RC_HELI;
+ gBankStartOffset[25] = SFX_CAR_AFTER_ACCEL_21;
+ gBankStartOffset[26] = SFX_CAR_FINGER_OFF_ACCEL_21;
+ gBankStartOffset[27] = SFX_CAR_ACCEL_22;
+ gBankStartOffset[28] = SFX_CAR_AFTER_ACCEL_22;
+ gBankStartOffset[29] = SFX_CAR_FINGER_OFF_ACCEL_22;
+ gBankStartOffset[24] = SFX_CAR_ACCEL_21;
+ gBankStartOffset[30] = SFX_HELI_APACHE_1;
+ gBankStartOffset[31] = SFX_HELI_UNUSED_1;
+ gBankStartOffset[32] = SFX_HELI_UNUSED_2;
+ gBankStartOffset[33] = SFX_HELI_UNUSED_3;
+ gBankStartOffset[34] = SFX_HELI_UNUSED_4;
+ gBankStartOffset[35] = SFX_SEAPLANE_LOW;
+ gBankStartOffset[37] = SFX_PLANE_UNUSED_2;
+ gBankStartOffset[38] = SFX_PLANE_UNUSED_3;
+ gBankStartOffset[39] = SFX_PLANE_UNUSED_4;
+ gBankStartOffset[40] = SFX_BUILDINGS_BANK_ALARM;
+ gBankStartOffset[41] = SFX_BUILDING_SNORE;
+ gBankStartOffset[36] = SFX_PLANE_UNUSED_1;
+ gBankStartOffset[43] = SFX_BUILDING_BAR_2;
+ gBankStartOffset[44] = SFX_BUILDING_BAR_3;
+ gBankStartOffset[45] = SFX_BUILDING_BAR_4;
+ gBankStartOffset[46] = SFX_BUILDING_MAL1;
+ gBankStartOffset[47] = SFX_BUILDING_MAL2;
+ gBankStartOffset[42] = SFX_BUILDING_BAR_1;
+ gBankStartOffset[49] = SFX_BUILDING_STR1;
+ gBankStartOffset[50] = SFX_BUILDING_STR2;
+ gBankStartOffset[51] = SFX_BUILDING_STR3;
+ gBankStartOffset[52] = SFX_BUILDING_CHURCH;
+ gBankStartOffset[53] = SFX_BUILDING_FAN_1;
+ gBankStartOffset[48] = SFX_BUILDING_MAL3;
+ gBankStartOffset[55] = SFX_BUILDING_INSECTS_1;
+ gBankStartOffset[56] = SFX_BUILDING_INSECTS_2;
+ gBankStartOffset[54] = SFX_BUILDING_FAN_2;
+ gBankStartOffset[57] = SFX_CLUB_1;
+ gBankStartOffset[58] = SFX_CLUB_2;
+ gBankStartOffset[59] = SFX_CLUB_3;
+ gBankStartOffset[60] = SFX_CLUB_4;
+ gBankStartOffset[61] = SFX_FOOTSTEP_GRASS_1;
+ gBankStartOffset[62] = SFX_FOOTSTEP_GRAVEL_1;
+ gBankStartOffset[63] = SFX_FOOTSTEP_WOOD_1;
+ gBankStartOffset[64] = SFX_FOOTSTEP_METAL_1;
+ gBankStartOffset[65] = SFX_FOOTSTEP_WATER_1;
+ gBankStartOffset[66] = SFX_FOOTSTEP_SAND_1;
+}
+
void
cSampleManager::SetSpeakerConfig(int32 which)
{
@@ -459,7 +533,7 @@ cSampleManager::AutoDetect3DProviders()
return -1;
}
-static bool
+static bool8
_ResolveLink(char const *path, char *out)
{
IShellLink* psl;
@@ -495,7 +569,7 @@ _ResolveLink(char const *path, char *out)
ppf->Release();
psl->Release();
#endif
- return true;
+ return TRUE;
}
}
}
@@ -505,15 +579,15 @@ _ResolveLink(char const *path, char *out)
psl->Release();
}
- return false;
+ return FALSE;
}
static void
_FindMP3s(void)
{
tMP3Entry *pList;
- bool bShortcut;
- bool bInitFirstEntry;
+ bool8 bShortcut;
+ bool8 bInitFirstEntry;
HANDLE hFind;
char path[MAX_PATH];
char filepath[MAX_PATH*2];
@@ -565,10 +639,10 @@ _FindMP3s(void)
OutputDebugString(filepath);
}
- bShortcut = true;
+ bShortcut = TRUE;
}
else
- bShortcut = false;
+ bShortcut = FALSE;
}
mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
@@ -608,7 +682,7 @@ _FindMP3s(void)
{
_pMP3List->pLinkPath = NULL;
}
- bInitFirstEntry = false;
+ bInitFirstEntry = FALSE;
}
else
{
@@ -616,10 +690,10 @@ _FindMP3s(void)
OutputDebugString(filepath);
- bInitFirstEntry = true;
+ bInitFirstEntry = TRUE;
}
- while ( true )
+ while ( TRUE )
{
if ( !FindNextFile(hFind, &fd) )
break;
@@ -643,11 +717,11 @@ _FindMP3s(void)
OutputDebugString(filepath);
}
- bShortcut = true;
+ bShortcut = TRUE;
}
else
{
- bShortcut = false;
+ bShortcut = FALSE;
if ( filepathlen > MAX_PATH )
{
@@ -690,7 +764,7 @@ _FindMP3s(void)
pList = _pMP3List;
- bInitFirstEntry = false;
+ bInitFirstEntry = FALSE;
}
else
{
@@ -718,11 +792,11 @@ _FindMP3s(void)
OutputDebugString(filepath);
}
- bShortcut = true;
+ bShortcut = TRUE;
}
else
{
- bShortcut = false;
+ bShortcut = FALSE;
}
}
@@ -834,7 +908,7 @@ _GetMP3EntryByIndex(uint32 idx)
return NULL;
}
-static inline bool
+static inline bool8
_GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
{
_CurMP3Index = 0;
@@ -847,7 +921,7 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
*pPosition -= (*pEntry)->nTrackStreamPos;
_CurMP3Pos = *pPosition;
- return true;
+ return TRUE;
}
_CurMP3Index++;
@@ -858,10 +932,10 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
_CurMP3Pos = 0;
_CurMP3Index = 0;
- return false;
+ return FALSE;
}
-bool
+bool8
cSampleManager::IsMP3RadioChannelAvailable(void)
{
return nNumMP3s != 0;
@@ -890,13 +964,13 @@ cSampleManager::ReacquireDigitalHandle(void)
}
}
-bool
+bool8
cSampleManager::Initialise(void)
{
TRACE("start");
if ( _bSampmanInitialised )
- return true;
+ return TRUE;
{
for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ )
@@ -922,7 +996,7 @@ cSampleManager::Initialise(void)
curprovider = -1;
prevprovider = -1;
- _usingMilesFast2D = false;
+ _usingMilesFast2D = FALSE;
usingEAX=0;
usingEAX3=0;
@@ -947,7 +1021,7 @@ cSampleManager::Initialise(void)
for ( int32 i = 0; i < MAX_SFX_BANKS; i++ )
{
- bSampleBankLoaded[i] = false;
+ bSampleBankLoaded[i] = FALSE;
nSampleBankDiscStartOffset[i] = 0;
nSampleBankSize[i] = 0;
nSampleBankMemoryStartAddress[i] = 0;
@@ -988,24 +1062,24 @@ cSampleManager::Initialise(void)
#ifdef AUDIO_CACHE
TRACE("cache");
FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb");
- bool CreateCache = false;
+ bool8 CreateCache = FALSE;
if (cacheFile) {
fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile);
fclose(cacheFile);
}else
- CreateCache = true;
+ CreateCache = TRUE;
#endif
char filepath[MAX_PATH];
- bool bFileNotFound;
+ bool8 bFileNotFound;
S32 tatalms;
TRACE("cdrom");
{
- m_bInitialised = false;
+ m_bInitialised = FALSE;
- while (true)
+ while (TRUE)
{
// Find path of WAVs (originally in HDD)
@@ -1026,9 +1100,18 @@ cSampleManager::Initialise(void)
{
strcpy(filepath, m_szCDRomRootPath);
strcat(filepath, StreamedNameTable[0]);
+ strcat(filepath, ".VB");
FILE *f = fopen(filepath, "rb");
+ if ( !f )
+ {
+ strcpy(filepath, m_szCDRomRootPath);
+ strcat(filepath, StreamedNameTable[0]);
+ strcat(filepath, ".MP3");
+ f = fopen(filepath, "rb");
+ }
+
if ( f )
{
fclose(f);
@@ -1046,7 +1129,7 @@ cSampleManager::Initialise(void)
{
OutputDebugString(AIL_last_error());
Terminate();
- return false;
+ return FALSE;
}
add_providers();
@@ -1076,9 +1159,9 @@ cSampleManager::Initialise(void)
}
else
{
- m_bInitialised = false;
+ m_bInitialised = FALSE;
Terminate();
- return false;
+ return FALSE;
}
}
*/
@@ -1103,8 +1186,16 @@ cSampleManager::Initialise(void)
{
strcpy(filepath, m_MP3FilesPath);
strcat(filepath, StreamedNameTable[i]);
+ strcat(filepath, ".VB");
mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
+ if (!mp3Stream[0])
+ {
+ strcpy(filepath, m_MP3FilesPath);
+ strcat(filepath, StreamedNameTable[i]);
+ strcat(filepath, ".MP3");
+ mp3Stream[0] = AIL_open_stream(DIG, filepath, 0);
+ }
if (mp3Stream[0])
{
@@ -1113,7 +1204,7 @@ cSampleManager::Initialise(void)
AIL_close_stream(mp3Stream[0]);
mp3Stream[0] = NULL;
- bFileNotFound = false;
+ bFileNotFound = FALSE;
#ifdef AUDIO_CACHE
if (!CreateCache)
break;
@@ -1124,7 +1215,7 @@ cSampleManager::Initialise(void)
}
else
{
- bFileNotFound = true;
+ bFileNotFound = TRUE;
break;
}
}
@@ -1159,11 +1250,11 @@ cSampleManager::Initialise(void)
mp3Stream[0] = NULL;
nStreamLength[i] = tatalms;
- bFileNotFound = false;
+ bFileNotFound = FALSE;
}
else
{
- bFileNotFound = true;
+ bFileNotFound = TRUE;
break;
}
}*/
@@ -1178,11 +1269,11 @@ cSampleManager::Initialise(void)
if ( FrontEndMenuManager.m_bQuitGameNoCD )
{
Terminate();
- return false;
+ return FALSE;
}
continue;
#else
- m_bInitialised = true;
+ m_bInitialised = TRUE;
#endif
}
@@ -1201,14 +1292,14 @@ cSampleManager::Initialise(void)
if ( !InitialiseSampleBanks() )
{
Terminate();
- return false;
+ return FALSE;
}
nSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(nSampleBankSize[SFX_BANK_0]);
if ( !nSampleBankMemoryStartAddress[SFX_BANK_0] )
{
Terminate();
- return false;
+ return FALSE;
}
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX);
@@ -1237,7 +1328,7 @@ cSampleManager::Initialise(void)
TRACE("providerset");
{
- _bSampmanInitialised = true;
+ _bSampmanInitialised = TRUE;
U32 n = 0;
@@ -1254,7 +1345,7 @@ cSampleManager::Initialise(void)
if ( n == m_nNumberOfProviders )
{
Terminate();
- return false;
+ return FALSE;
}
}
@@ -1279,13 +1370,13 @@ cSampleManager::Initialise(void)
time_t t = time(NULL);
tm *localtm;
- bool bUseRandomTable;
+ bool8 bUseRandomTable;
if ( t == -1 )
- bUseRandomTable = true;
+ bUseRandomTable = TRUE;
else
{
- bUseRandomTable = false;
+ bUseRandomTable = FALSE;
localtm = localtime(&t);
}
@@ -1317,12 +1408,12 @@ cSampleManager::Initialise(void)
else
_CurMP3Pos = 0;
- _bIsMp3Active = false;
+ _bIsMp3Active = FALSE;
}
TRACE("end");
- return true;
+ return TRUE;
}
void
@@ -1371,10 +1462,10 @@ cSampleManager::Terminate(void)
AIL_shutdown();
- _bSampmanInitialised = false;
+ _bSampmanInitialised = FALSE;
}
-bool
+bool8
cSampleManager::CheckForAnAudioFileOnCD(void)
{
#if !defined(NO_CDCHECK) // TODO: check steam, probably GTAVC_STEAM_PATCH needs to be added
@@ -1392,17 +1483,17 @@ cSampleManager::CheckForAnAudioFileOnCD(void)
DMAudio.SetEffectsMasterVolume(FrontEndMenuManager.m_PrefsSfxVolume);
DMAudio.Service();
- return true;
+ return TRUE;
}
DMAudio.SetMusicMasterVolume(0);
DMAudio.SetEffectsMasterVolume(0);
DMAudio.Service();
- return false;
+ return FALSE;
#else
- return true;
+ return TRUE;
#endif // #if !defined(NO_CDCHECK)
}
@@ -1484,48 +1575,48 @@ cSampleManager::SetMusicFadeVolume(uint8 nVolume)
}
void
-cSampleManager::SetMonoMode(uint8 nMode)
+cSampleManager::SetMonoMode(bool8 nMode)
{
m_nMonoMode = nMode;
}
-bool
+bool8
cSampleManager::LoadSampleBank(uint8 nBank)
{
if ( CTimer::GetIsCodePaused() )
- return false;
+ return FALSE;
if ( MusicManager.IsInitialised()
&& MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE
&& nBank != SFX_BANK_0 )
{
- return false;
+ return FALSE;
}
if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 )
- return false;
+ return FALSE;
if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank],fpSampleDataHandle) != nSampleBankSize[nBank] )
- return false;
+ return FALSE;
- bSampleBankLoaded[nBank] = true;
+ bSampleBankLoaded[nBank] = TRUE;
- return true;
+ return TRUE;
}
void
cSampleManager::UnloadSampleBank(uint8 nBank)
{
- bSampleBankLoaded[nBank] = false;
+ bSampleBankLoaded[nBank] = FALSE;
}
-bool
+bool8
cSampleManager::IsSampleBankLoaded(uint8 nBank)
{
return bSampleBankLoaded[nBank];
}
-bool
+bool8
cSampleManager::IsPedCommentLoaded(uint32 nComment)
{
int8 slot;
@@ -1538,10 +1629,10 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment)
slot += ARRAY_SIZE(nPedSlotSfx);
#endif
if ( nComment == nPedSlotSfx[slot] )
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
int32
@@ -1563,11 +1654,11 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment)
return -1;
}
-bool
+bool8
cSampleManager::LoadPedComment(uint32 nComment)
{
if ( CTimer::GetIsCodePaused() )
- return false;
+ return FALSE;
// no talking peds during cutsenes or the game end
if ( MusicManager.IsInitialised() )
@@ -1576,7 +1667,7 @@ cSampleManager::LoadPedComment(uint32 nComment)
{
case MUSICMODE_CUTSCENE:
{
- return false;
+ return FALSE;
break;
}
@@ -1584,10 +1675,10 @@ cSampleManager::LoadPedComment(uint32 nComment)
}
if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 )
- return false;
+ return FALSE;
if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize )
- return false;
+ return FALSE;
nPedSlotSfxAddr[nCurrentPedSlot] = nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot;
nPedSlotSfx [nCurrentPedSlot] = nComment;
@@ -1595,7 +1686,7 @@ cSampleManager::LoadPedComment(uint32 nComment)
if ( ++nCurrentPedSlot >= MAX_PEDSFX )
nCurrentPedSlot = 0;
- return true;
+ return TRUE;
}
int32
@@ -1634,14 +1725,14 @@ cSampleManager::GetSampleLength(uint32 nSample)
return m_aSamples[nSample].nSize >> 1;
}
-bool
+bool8
cSampleManager::UpdateReverb(void)
{
if ( !usingEAX )
- return false;
+ return FALSE;
if ( AudioManager.GetFrameCounter() & 15 )
- return false;
+ return FALSE;
float fRatio = 0.0f;
@@ -1662,7 +1753,7 @@ cSampleManager::UpdateReverb(void)
fRatio = clamp(fRatio, 0.0f, 0.6f);
if ( fRatio == _fPrevEaxRatioDestination )
- return false;
+ return FALSE;
if ( usingEAX3 )
{
@@ -1684,26 +1775,28 @@ cSampleManager::UpdateReverb(void)
_fPrevEaxRatioDestination = fRatio;
- return true;
+ return TRUE;
}
void
-cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
+cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
if ( usingEAX )
{
- if ( nReverbFlag != 0 )
+ if ( nReverbFlag != FALSE )
{
if ( !b2d )
AIL_set_3D_sample_effects_level(opened_samples[nChannel], _fEffectsLevel);
@@ -1716,16 +1809,18 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
}
}
-bool
+bool8
cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -1735,14 +1830,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
if ( nSfx < SAMPLEBANK_MAX )
{
if ( !IsSampleBankLoaded(nBank) )
- return false;
+ return FALSE;
addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset;
}
else
{
if ( !IsPedCommentLoaded(nSfx) )
- return false;
+ return FALSE;
int32 slot = _GetPedCommentSlot(nSfx);
@@ -1754,10 +1849,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
if ( opened_2dsamples[nChannel - MAXCHANNELS] )
{
AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize);
- return true;
+ return TRUE;
}
else
- return false;
+ return FALSE;
}
else
{
@@ -1773,10 +1868,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
if ( AIL_set_3D_sample_info(opened_samples[nChannel], &info) == 0 )
{
OutputDebugString(AIL_last_error());
- return false;
+ return FALSE;
}
- return true;
+ return TRUE;
}
}
@@ -1823,7 +1918,9 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
nChannelVolume[nChannel] = vol;
@@ -1850,7 +1947,9 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
{
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
#ifndef FIX_BUGS
if ( opened_samples[nChannel - MAXCHANNELS] ) // BUG
@@ -1867,13 +1966,15 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
void
cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -1893,13 +1994,15 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq)
void
cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -1919,13 +2022,15 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n
void
cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -1942,16 +2047,18 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount)
}
}
-bool
+bool8
cSampleManager::GetChannelUsedFlag(uint32 nChannel)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -1961,14 +2068,14 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel)
if ( opened_2dsamples[nChannel - MAXCHANNELS] )
return AIL_sample_status(opened_2dsamples[nChannel - MAXCHANNELS]) == SMP_PLAYING;
else
- return false;
+ return FALSE;
}
else
{
if ( opened_samples[nChannel] )
return AIL_3D_sample_status(opened_samples[nChannel]) == SMP_PLAYING;
else
- return false;
+ return FALSE;
}
}
@@ -1976,13 +2083,15 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel)
void
cSampleManager::StartChannel(uint32 nChannel)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -2002,13 +2111,15 @@ cSampleManager::StartChannel(uint32 nChannel)
void
cSampleManager::StopChannel(uint32 nChannel)
{
- bool b2d = false;
+ bool8 b2d = FALSE;
switch ( nChannel )
{
- case CHANNEL2D:
+ case CHANNEL_POLICE_RADIO:
+ case CHANNEL_MISSION_AUDIO_1:
+ case CHANNEL_MISSION_AUDIO_2:
{
- b2d = true;
+ b2d = TRUE;
break;
}
}
@@ -2045,8 +2156,17 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
strcpy(filepath, m_MP3FilesPath);
strcat(filepath, StreamedNameTable[nFile]);
+ strcat(filepath, ".VB");
mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0);
+
+ if(!mp3Stream[nStream])
+ {
+ strcpy(filepath, m_MP3FilesPath);
+ strcat(filepath, StreamedNameTable[nFile]);
+ strcat(filepath, ".MP3");
+ mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0);
+ }
if ( mp3Stream[nStream] )
{
@@ -2060,12 +2180,12 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
}
void
-cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream)
+cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream)
{
if ( m_bInitialised )
{
if ( mp3Stream[nStream] )
- AIL_pause_stream(mp3Stream[nStream], nPauseFlag != 0);
+ AIL_pause_stream(mp3Stream[nStream], nPauseFlag != FALSE);
}
}
@@ -2079,146 +2199,165 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream)
}
}
-bool
+bool8
cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
{
+ int i = 0;
uint32 position = nPos;
char filename[MAX_PATH];
- if ( m_bInitialised && nFile < TOTAL_STREAMED_SOUNDS )
+ if ( !m_bInitialised || nFile >= TOTAL_STREAMED_SOUNDS )
+ return FALSE;
+
+ if ( mp3Stream[nStream] )
{
- if ( mp3Stream[nStream] )
- {
- AIL_pause_stream(mp3Stream[nStream], 1);
- AIL_close_stream(mp3Stream[nStream]);
- }
-
- if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
+ AIL_pause_stream(mp3Stream[nStream], 1);
+ AIL_close_stream(mp3Stream[nStream]);
+ }
+ if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
+ {
+ do
{
- uint32 i = 0;
- do {
- if(i != 0 || _bIsMp3Active) {
- if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
-
- _CurMP3Pos = 0;
-
- tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
-
- if(mp3) {
- mp3 = _pMP3List;
- if(mp3 == NULL) {
- _bIsMp3Active = false;
- nFile = 0;
- strcpy(filename, m_MiscomPath);
- strcat(filename, StreamedNameTable[nFile]);
-
- mp3Stream[nStream] =
- AIL_open_stream(DIG, filename, 0);
- if(mp3Stream[nStream]) {
- AIL_set_stream_loop_count(
- mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
- nStreamLoopedFlag[nStream] = true;
- AIL_set_stream_ms_position(
- mp3Stream[nStream], position);
- AIL_pause_stream(mp3Stream[nStream],
- 0);
- return true;
- }
-
- return false;
- }
+ // Just switched to MP3 player
+ if ( !_bIsMp3Active && i == 0 )
+ {
+ if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
+ position = 0;
+ tMP3Entry *e = _pMP3List;
+
+ // Try to continue from previous song, if already started
+ if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
+ nFile = 0;
+ strcpy(filename, m_MiscomPath);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
+ mp3Stream[nStream] =
+ AIL_open_stream(DIG, filename, 0);
+
+ if(!mp3Stream[nStream])
+ {
+ strcpy(filename, m_MP3FilesPath);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".MP3");
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
}
+ if(mp3Stream[nStream]) {
+ AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ AIL_set_stream_ms_position(mp3Stream[nStream], position);
+ AIL_pause_stream(mp3Stream[nStream], 0);
+ return TRUE;
+ }
+ return FALSE;
- if(mp3->pLinkPath != NULL)
- mp3Stream[nStream] =
- AIL_open_stream(DIG, mp3->pLinkPath, 0);
+ } else {
+ if ( e->pLinkPath != NULL )
+ mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0);
else {
strcpy(filename, _mp3DirectoryPath);
- strcat(filename, mp3->aFilename);
-
- mp3Stream[nStream] =
- AIL_open_stream(DIG, filename, 0);
+ strcat(filename, e->aFilename);
+
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
}
-
- if(mp3Stream[nStream]) {
+
+ if ( mp3Stream[nStream] ) {
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
- AIL_set_stream_ms_position(mp3Stream[nStream], 0);
+ AIL_set_stream_ms_position(mp3Stream[nStream], position);
AIL_pause_stream(mp3Stream[nStream], 0);
- return true;
+
+ _bIsMp3Active = TRUE;
+
+ return TRUE;
}
-
- _bIsMp3Active = false;
- continue;
+ // fall through, start playing from another song
}
- if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
- position = 0;
-
- tMP3Entry *e;
- if ( !_GetMP3PosFromStreamPos(&position, &e) )
+ } else {
+ if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
+
+ _CurMP3Pos = 0;
+
+ tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
+ if ( !mp3 )
{
- if ( e == NULL )
+ mp3 = _pMP3List;
+ if ( !_pMP3List )
{
nFile = 0;
+ _bIsMp3Active = 0;
strcpy(filename, m_MiscomPath);
strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
+
mp3Stream[nStream] =
AIL_open_stream(DIG, filename, 0);
+ if(!mp3Stream[nStream])
+ {
+ strcpy(filename, m_MiscomPath);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".MP3");
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
+ }
if(mp3Stream[nStream]) {
- AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
- nStreamLoopedFlag[nStream] = true;
- AIL_set_stream_ms_position(mp3Stream[nStream], position);
- AIL_pause_stream(mp3Stream[nStream], 0);
- return true;
+ AIL_set_stream_loop_count(
+ mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ AIL_set_stream_ms_position(
+ mp3Stream[nStream], position);
+ AIL_pause_stream(mp3Stream[nStream],
+ 0);
+ return TRUE;
}
-
- return false;
+ return FALSE;
}
}
-
- if ( e->pLinkPath != NULL )
- mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0);
- else
- {
+ if(mp3->pLinkPath != NULL)
+ mp3Stream[nStream] = AIL_open_stream(DIG, mp3->pLinkPath, 0);
+ else {
strcpy(filename, _mp3DirectoryPath);
- strcat(filename, e->aFilename);
-
- mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
+ strcat(filename, mp3->aFilename);
+
+ mp3Stream[nStream] =
+ AIL_open_stream(DIG, filename, 0);
}
-
- if ( mp3Stream[nStream] )
- {
+
+ if(mp3Stream[nStream]) {
AIL_set_stream_loop_count(mp3Stream[nStream], 1);
- AIL_set_stream_ms_position(mp3Stream[nStream], position);
+ AIL_set_stream_ms_position(mp3Stream[nStream], 0);
AIL_pause_stream(mp3Stream[nStream], 0);
-
- _bIsMp3Active = true;
-
- return true;
+#ifdef FIX_BUGS
+ _bIsMp3Active = TRUE;
+#endif
+ return TRUE;
}
-
- _bIsMp3Active = false;
-
- } while(++i < nNumMP3s);
- position = 0;
- nFile = 0;
+ }
+ _bIsMp3Active = 0;
}
-
+ while ( ++i < nNumMP3s );
+ position = 0;
+ nFile = 0;
+ }
+ strcpy(filename, m_MiscomPath);
+ strcat(filename, StreamedNameTable[nFile]);
+ strcat(filename, ".VB");
+
+ mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
+ if( !mp3Stream[nStream] )
+ {
strcpy(filename, m_MiscomPath);
strcat(filename, StreamedNameTable[nFile]);
-
+ strcat(filename, ".MP3");
mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0);
- if ( mp3Stream[nStream] )
- {
- AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
- nStreamLoopedFlag[nStream] = true;
- AIL_set_stream_ms_position(mp3Stream[nStream], position);
- AIL_pause_stream(mp3Stream[nStream], 0);
- return true;
- }
}
-
- return false;
+ if ( mp3Stream[nStream] )
+ {
+ AIL_set_stream_loop_count(mp3Stream[nStream], nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ AIL_set_stream_ms_position(mp3Stream[nStream], position);
+ AIL_pause_stream(mp3Stream[nStream], 0);
+ return TRUE;
+ }
+ return FALSE;
}
void
@@ -2234,7 +2373,7 @@ cSampleManager::StopStreamedFile(uint8 nStream)
mp3Stream[nStream] = NULL;
if ( nStream == 0 )
- _bIsMp3Active = false;
+ _bIsMp3Active = FALSE;
}
}
}
@@ -2272,7 +2411,7 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream)
}
void
-cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream)
+cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream)
{
uint8 vol = nVolume;
float boostMult = 0.0f;
@@ -2313,7 +2452,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream)
return 0;
}
-bool
+bool8
cSampleManager::IsStreamPlaying(uint8 nStream)
{
if ( m_bInitialised )
@@ -2321,23 +2460,25 @@ cSampleManager::IsStreamPlaying(uint8 nStream)
if ( mp3Stream[nStream] )
{
if ( AIL_stream_status(mp3Stream[nStream]) == SMP_PLAYING )
- return true;
+ return TRUE;
else
- return false;
+ return FALSE;
}
}
- return false;
+ return FALSE;
}
-bool
+bool8
cSampleManager::InitialiseSampleBanks(void)
{
+ SetUpDebugBanksInfo();
+
int32 nBank = SFX_BANK_0;
fpSampleDescHandle = fopen(SampleBankDescFilename, "rb");
if ( fpSampleDescHandle == NULL )
- return false;
+ return FALSE;
fpSampleDataHandle = fopen(SampleBankDataFilename, "rb");
if ( fpSampleDataHandle == NULL )
@@ -2345,7 +2486,7 @@ cSampleManager::InitialiseSampleBanks(void)
fclose(fpSampleDescHandle);
fpSampleDescHandle = NULL;
- return false;
+ return FALSE;
}
fseek(fpSampleDataHandle, 0, SEEK_END);
@@ -2356,7 +2497,7 @@ cSampleManager::InitialiseSampleBanks(void)
fclose(fpSampleDescHandle);
fpSampleDescHandle = NULL;
-
+
for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ )
{
#ifdef FIX_BUGS
@@ -2372,12 +2513,12 @@ cSampleManager::InitialiseSampleBanks(void)
nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0];
nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS];
- return true;
+ return TRUE;
}
void
-cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
+cSampleManager::SetStreamedFileLoopFlag(bool8 nLoopFlag, uint8 nChannel)
{
if (m_bInitialised)
nStreamLoopedFlag[nChannel] = nLoopFlag;
diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp
index e9a9eaa1..a5ed2889 100644
--- a/src/audio/sampman_null.cpp
+++ b/src/audio/sampman_null.cpp
@@ -4,7 +4,7 @@
#include "AudioManager.h"
cSampleManager SampleManager;
-bool _bSampmanInitialised = false;
+bool8 _bSampmanInitialised = FALSE;
uint32 BankStartOffset[MAX_SFX_BANKS];
uint32 nNumMP3s;
@@ -60,7 +60,7 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider)
return 0;
}
-bool
+bool8
cSampleManager::IsMP3RadioChannelAvailable(void)
{
return nNumMP3s != 0;
@@ -75,10 +75,10 @@ void cSampleManager::ReacquireDigitalHandle(void)
{
}
-bool
+bool8
cSampleManager::Initialise(void)
{
- return true;
+ return TRUE;
}
void
@@ -87,9 +87,9 @@ cSampleManager::Terminate(void)
}
-bool cSampleManager::CheckForAnAudioFileOnCD(void)
+bool8 cSampleManager::CheckForAnAudioFileOnCD(void)
{
- return true;
+ return TRUE;
}
char cSampleManager::GetCDAudioDriveLetter(void)
@@ -129,15 +129,15 @@ cSampleManager::SetMusicFadeVolume(uint8 nVolume)
}
void
-cSampleManager::SetMonoMode(uint8 nMode)
+cSampleManager::SetMonoMode(bool8 nMode)
{
}
-bool
+bool8
cSampleManager::LoadSampleBank(uint8 nBank)
{
ASSERT( nBank < MAX_SFX_BANKS );
- return false;
+ return FALSE;
}
void
@@ -146,20 +146,20 @@ cSampleManager::UnloadSampleBank(uint8 nBank)
ASSERT( nBank < MAX_SFX_BANKS );
}
-bool
+bool8
cSampleManager::IsSampleBankLoaded(uint8 nBank)
{
ASSERT( nBank < MAX_SFX_BANKS );
- return false;
+ return FALSE;
}
-bool
+bool8
cSampleManager::IsPedCommentLoaded(uint32 nComment)
{
ASSERT( nComment < TOTAL_AUDIO_SAMPLES );
- return false;
+ return FALSE;
}
@@ -169,11 +169,11 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment)
return -1;
}
-bool
+bool8
cSampleManager::LoadPedComment(uint32 nComment)
{
ASSERT( nComment < TOTAL_AUDIO_SAMPLES );
- return false;
+ return FALSE;
}
int32
@@ -210,22 +210,22 @@ cSampleManager::GetSampleLength(uint32 nSample)
return 0;
}
-bool cSampleManager::UpdateReverb(void)
+bool8 cSampleManager::UpdateReverb(void)
{
- return false;
+ return FALSE;
}
void
-cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
+cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag)
{
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
-bool
+bool8
cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
{
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
- return false;
+ return FALSE;
}
void
@@ -281,12 +281,12 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount)
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
}
-bool
+bool8
cSampleManager::GetChannelUsedFlag(uint32 nChannel)
{
ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
- return false;
+ return FALSE;
}
void
@@ -308,7 +308,7 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
}
void
-cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream)
+cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
}
@@ -319,12 +319,12 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream)
ASSERT( nStream < MAX_STREAMS );
}
-bool
+bool8
cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
- return false;
+ return FALSE;
}
void
@@ -342,7 +342,7 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream)
}
void
-cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream)
+cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
}
@@ -355,23 +355,23 @@ cSampleManager::GetStreamedFileLength(uint8 nStream)
return 1;
}
-bool
+bool8
cSampleManager::IsStreamPlaying(uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
- return false;
+ return FALSE;
}
-bool
+bool8
cSampleManager::InitialiseSampleBanks(void)
{
- return true;
+ return TRUE;
}
void
-cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
+cSampleManager::SetStreamedFileLoopFlag(bool8 nLoopFlag, uint8 nChannel)
{
}
diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp
index 7da871a5..186990a4 100644
--- a/src/audio/sampman_oal.cpp
+++ b/src/audio/sampman_oal.cpp
@@ -45,11 +45,9 @@
#endif
//TODO: fix eax3 reverb
-//TODO: max channels
-//TODO: loop count
cSampleManager SampleManager;
-bool _bSampmanInitialised = false;
+bool8 _bSampmanInitialised = FALSE;
uint32 BankStartOffset[MAX_SFX_BANKS];
@@ -61,16 +59,18 @@ int usingEAX3=0;
ALCdevice *ALDevice = NULL;
ALCcontext *ALContext = NULL;
unsigned int _maxSamples;
-float _fPrevEaxRatioDestination;
+float _fPrevEaxRatioDestination;
+bool _effectsSupported = false;
bool _usingEFX;
float _fEffectsLevel;
ALuint ALEffect = AL_EFFECT_NULL;
ALuint ALEffectSlot = AL_EFFECTSLOT_NULL;
struct
-{
- char id[256];
+{
+ const char *id;
char name[256];
int sources;
+ bool bSupportsFx;
}providers[MAXPROVIDERS];
int defaultProvider;
@@ -85,7 +85,7 @@ OggOpusFile *fpSampleDataHandle;
#else
FILE *fpSampleDataHandle;
#endif
-bool bSampleBankLoaded [MAX_SFX_BANKS];
+bool8 bSampleBankLoaded [MAX_SFX_BANKS];
int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS];
int32 nSampleBankSize [MAX_SFX_BANKS];
uintptr nSampleBankMemoryStartAddress[MAX_SFX_BANKS];
@@ -95,8 +95,8 @@ int32 nPedSlotSfx [MAX_PEDSFX];
int32 nPedSlotSfxAddr[MAX_PEDSFX];
uint8 nCurrentPedSlot;
-CChannel aChannel[MAXCHANNELS+MAX2DCHANNELS];
-uint8 nChannelVolume[MAXCHANNELS+MAX2DCHANNELS];
+CChannel aChannel[NUM_CHANNELS];
+uint8 nChannelVolume[NUM_CHANNELS];
uint32 nStreamLength[TOTAL_STREAMED_SOUNDS];
ALuint ALStreamSources[MAX_STREAMS][2];
@@ -119,10 +119,10 @@ char _mp3DirectoryPath[MAX_PATH];
CStream *aStream[MAX_STREAMS];
uint8 nStreamPan [MAX_STREAMS];
uint8 nStreamVolume[MAX_STREAMS];
-uint8 nStreamLoopedFlag[MAX_STREAMS];
+bool8 nStreamLoopedFlag[MAX_STREAMS];
uint32 _CurMP3Index;
int32 _CurMP3Pos;
-bool _bIsMp3Active;
+bool8 _bIsMp3Active;
///////////////////////////////////////////////////////////////
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
EAXLISTENERPROPERTIES StartEAX3 =
@@ -136,7 +136,7 @@ EAXLISTENERPROPERTIES EAX3Params;
bool IsFXSupported()
{
- return usingEAX || usingEAX3 || _usingEFX;
+ return _effectsSupported; // usingEAX || usingEAX3 || _usingEFX;
}
void EAX_SetAll(const EAXLISTENERPROPERTIES *allparameters)
@@ -151,21 +151,22 @@ static void
add_providers()
{
SampleManager.SetNum3DProvidersAvailable(0);
-
- ALDeviceList *pDeviceList = NULL;
- pDeviceList = new ALDeviceList();
+
+ static ALDeviceList DeviceList;
+ ALDeviceList *pDeviceList = &DeviceList;
if ((pDeviceList) && (pDeviceList->GetNumDevices()))
{
const int devNumber = Min(pDeviceList->GetNumDevices(), MAXPROVIDERS);
int n = 0;
- for (int i = 0; i < devNumber; i++)
+ //for (int i = 0; i < devNumber; i++)
+ int i = pDeviceList->GetDefaultDevice();
{
if ( n < MAXPROVIDERS )
- {
- strcpy(providers[n].id, pDeviceList->GetDeviceName(i));
- strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name));
+ {
+ providers[n].id = pDeviceList->GetDeviceName(i);
+ strcpy(providers[n].name, "OPENAL SOFT");
providers[n].sources = pDeviceList->GetMaxNumSources(i);
SampleManager.Set3DProviderName(n, providers[n].name);
n++;
@@ -176,23 +177,24 @@ add_providers()
|| pDeviceList->IsExtensionSupported(i, ADEXT_EAX3)
|| pDeviceList->IsExtensionSupported(i, ADEXT_EAX4)
|| pDeviceList->IsExtensionSupported(i, ADEXT_EAX5) )
- {
+ {
+ providers[n - 1].bSupportsFx = true;
if ( n < MAXPROVIDERS )
- {
- strcpy(providers[n].id, pDeviceList->GetDeviceName(i));
- strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name));
- strcat(providers[n].name, " EAX");
+ {
+ providers[n].id = pDeviceList->GetDeviceName(i);
+ strcpy(providers[n].name, "OPENAL SOFT EAX");
providers[n].sources = pDeviceList->GetMaxNumSources(i);
+ providers[n].bSupportsFx = true;
SampleManager.Set3DProviderName(n, providers[n].name);
n++;
}
if ( n < MAXPROVIDERS )
- {
- strcpy(providers[n].id, pDeviceList->GetDeviceName(i));
- strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name));
- strcat(providers[n].name, " EAX3");
+ {
+ providers[n].id = pDeviceList->GetDeviceName(i);
+ strcpy(providers[n].name, "OPENAL SOFT EAX3");
providers[n].sources = pDeviceList->GetMaxNumSources(i);
+ providers[n].bSupportsFx = true;
SampleManager.Set3DProviderName(n, providers[n].name);
n++;
}
@@ -202,76 +204,38 @@ add_providers()
for(int j=n;j<MAXPROVIDERS;j++)
SampleManager.Set3DProviderName(j, NULL);
-
- defaultProvider = pDeviceList->GetDefaultDevice();
- if ( defaultProvider > MAXPROVIDERS )
- defaultProvider = 0;
+
+ // devices are gone now
+ //defaultProvider = pDeviceList->GetDefaultDevice();
+ //if ( defaultProvider > MAXPROVIDERS )
+ defaultProvider = 0;
}
-
- delete pDeviceList;
}
static void
release_existing()
{
- for ( int32 i = 0; i < MAXCHANNELS; i++ )
- aChannel[i].Term();
- aChannel[CHANNEL2D].Term();
-
if ( IsFXSupported() )
{
if ( alIsEffect(ALEffect) )
{
alEffecti(ALEffect, AL_EFFECT_TYPE, AL_EFFECT_NULL);
- alDeleteEffects(1, &ALEffect);
- ALEffect = AL_EFFECT_NULL;
}
if (alIsAuxiliaryEffectSlot(ALEffectSlot))
{
alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, AL_EFFECT_NULL);
-
- alDeleteAuxiliaryEffectSlots(1, &ALEffectSlot);
- ALEffectSlot = AL_EFFECTSLOT_NULL;
}
}
-
- for ( int32 i = 0; i < MAX_STREAMS; i++ )
- {
- CStream *stream = aStream[i];
- if (stream)
- stream->ProviderTerm();
-
- alDeleteBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]);
- }
- alDeleteSources(MAX_STREAMS*2, ALStreamSources[0]);
-
- CChannel::DestroyChannels();
-
- if ( ALContext )
- {
- alcMakeContextCurrent(NULL);
- alcSuspendContext(ALContext);
- alcDestroyContext(ALContext);
- }
- if ( ALDevice )
- alcCloseDevice(ALDevice);
-
- ALDevice = NULL;
- ALContext = NULL;
-
- _fPrevEaxRatioDestination = 0.0f;
- _usingEFX = false;
- _fEffectsLevel = 0.0f;
-
+
DEV("release_existing()\n");
}
-static bool
+static bool8
set_new_provider(int index)
{
if ( curprovider == index )
- return true;
+ return TRUE;
curprovider = index;
@@ -281,61 +245,6 @@ set_new_provider(int index)
{
DEV("set_new_provider()\n");
- //TODO:
- _maxSamples = MAXCHANNELS;
-
- ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ,
- ALC_MONO_SOURCES, MAX_STREAMS * 2 + MAXCHANNELS,
- 0,
- };
-
- ALDevice = alcOpenDevice(providers[index].id);
- ASSERT(ALDevice != NULL);
-
- ALContext = alcCreateContext(ALDevice, attr);
- ASSERT(ALContext != NULL);
-
- alcMakeContextCurrent(ALContext);
-
- const char* ext=(const char*)alGetString(AL_EXTENSIONS);
- ASSERT(strstr(ext,"AL_SOFT_loop_points")!=NULL);
- if ( strstr(ext,"AL_SOFT_loop_points")==NULL )
- {
- curprovider=-1;
- release_existing();
- return false;
- }
-
- alListenerf (AL_GAIN, 1.0f);
- alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f);
- alListener3f(AL_VELOCITY, 0.0f, 0.0f, 0.0f);
- ALfloat orientation[6] = { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f };
- alListenerfv(AL_ORIENTATION, orientation);
-
- alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED);
-
- if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) )
- {
- alGenAuxiliaryEffectSlots(1, &ALEffectSlot);
- alGenEffects(1, &ALEffect);
- }
-
- alGenSources(MAX_STREAMS*2, ALStreamSources[0]);
- for ( int32 i = 0; i < MAX_STREAMS; i++ )
- {
- alGenBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]);
- alSourcei(ALStreamSources[i][0], AL_SOURCE_RELATIVE, AL_TRUE);
- alSource3f(ALStreamSources[i][0], AL_POSITION, 0.0f, 0.0f, 0.0f);
- alSourcef(ALStreamSources[i][0], AL_GAIN, 1.0f);
- alSourcei(ALStreamSources[i][1], AL_SOURCE_RELATIVE, AL_TRUE);
- alSource3f(ALStreamSources[i][1], AL_POSITION, 0.0f, 0.0f, 0.0f);
- alSourcef(ALStreamSources[i][1], AL_GAIN, 1.0f);
-
- CStream *stream = aStream[i];
- if (stream)
- stream->ProviderInit();
- }
-
usingEAX = 0;
usingEAX3 = 0;
_usingEFX = false;
@@ -343,16 +252,16 @@ set_new_provider(int index)
if ( !strcmp(&providers[index].name[strlen(providers[index].name) - strlen(" EAX3")], " EAX3")
&& alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) )
{
- EAX_SetAll(&FinishEAX3);
usingEAX = 1;
usingEAX3 = 1;
+ alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect);
+ EAX_SetAll(&FinishEAX3);
DEV("EAX3\n");
}
else if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) )
{
- EAX_SetAll(&EAX30_ORIGINAL_PRESETS[EAX_ENVIRONMENT_CAVE]);
if ( !strcmp(&providers[index].name[strlen(providers[index].name) - strlen(" EAX")], " EAX"))
{
@@ -364,33 +273,25 @@ set_new_provider(int index)
_usingEFX = true;
DEV("EFX\n");
}
+ alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect);
+ EAX_SetAll(&EAX30_ORIGINAL_PRESETS[EAX_ENVIRONMENT_CAVE]);
}
//SampleManager.SetSpeakerConfig(speaker_type);
- CChannel::InitChannels();
-
- for ( int32 i = 0; i < MAXCHANNELS; i++ )
- aChannel[i].Init(i);
- aChannel[CHANNEL2D].Init(CHANNEL2D, true);
-
if ( IsFXSupported() )
{
- /**/
- alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect);
- /**/
-
for ( int32 i = 0; i < MAXCHANNELS; i++ )
aChannel[i].SetReverbMix(ALEffectSlot, 0.0f);
}
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
-static bool
+static bool8
IsThisTrackAt16KHz(uint32 track)
{
return false;// track == STREAMED_SOUND_RADIO_KCHAT || track == STREAMED_SOUND_RADIO_VCPR || track == STREAMED_SOUND_RADIO_POLICE;
@@ -406,6 +307,80 @@ cSampleManager::~cSampleManager(void)
}
+int gBankStartOffset[67];
+
+void
+SetUpDebugBanksInfo()
+{
+ gBankStartOffset[3] = SFX_FE_BACK;
+ gBankStartOffset[4] = SFX_CAR_ACCEL_1;
+ gBankStartOffset[5] = SFX_CAR_ACCEL_2;
+ gBankStartOffset[9] = SFX_CAR_ACCEL_6;
+ gBankStartOffset[10] = SFX_CAR_ACCEL_7;
+ gBankStartOffset[1] = SFX_EMPTY;
+ gBankStartOffset[11] = SFX_CAR_ACCEL_8;
+ gBankStartOffset[7] = SFX_CAR_ACCEL_4;
+ gBankStartOffset[15] = SFX_CAR_ACCEL_12;
+ gBankStartOffset[13] = SFX_CAR_ACCEL_10;
+ gBankStartOffset[16] = SFX_CAR_CHAINSAW_IDLE;
+ gBankStartOffset[0] = SFX_AIR_BRAKES;
+ gBankStartOffset[17] = SFX_RC_IDLE;
+ gBankStartOffset[6] = SFX_CAR_ACCEL_3;
+ gBankStartOffset[19] = SFX_CAR_ACCEL_16;
+ gBankStartOffset[12] = SFX_CAR_ACCEL_9;
+ gBankStartOffset[2] = SFX_AMBULAN_VOICE_1_VAN_1;
+ gBankStartOffset[21] = SFX_CAR_ACCEL_18;
+ gBankStartOffset[22] = SFX_CAR_ACCEL_19;
+ gBankStartOffset[8] = SFX_CAR_ACCEL_5;
+ gBankStartOffset[23] = SFX_CAR_ACCEL_20;
+ gBankStartOffset[14] = SFX_CAR_ACCEL_11;
+ gBankStartOffset[20] = SFX_CAR_ACCEL_17;
+ gBankStartOffset[18] = SFX_CAR_RC_HELI;
+ gBankStartOffset[25] = SFX_CAR_AFTER_ACCEL_21;
+ gBankStartOffset[26] = SFX_CAR_FINGER_OFF_ACCEL_21;
+ gBankStartOffset[27] = SFX_CAR_ACCEL_22;
+ gBankStartOffset[28] = SFX_CAR_AFTER_ACCEL_22;
+ gBankStartOffset[29] = SFX_CAR_FINGER_OFF_ACCEL_22;
+ gBankStartOffset[24] = SFX_CAR_ACCEL_21;
+ gBankStartOffset[30] = SFX_HELI_APACHE_1;
+ gBankStartOffset[31] = SFX_HELI_UNUSED_1;
+ gBankStartOffset[32] = SFX_HELI_UNUSED_2;
+ gBankStartOffset[33] = SFX_HELI_UNUSED_3;
+ gBankStartOffset[34] = SFX_HELI_UNUSED_4;
+ gBankStartOffset[35] = SFX_SEAPLANE_LOW;
+ gBankStartOffset[37] = SFX_PLANE_UNUSED_2;
+ gBankStartOffset[38] = SFX_PLANE_UNUSED_3;
+ gBankStartOffset[39] = SFX_PLANE_UNUSED_4;
+ gBankStartOffset[40] = SFX_BUILDINGS_BANK_ALARM;
+ gBankStartOffset[41] = SFX_BUILDING_SNORE;
+ gBankStartOffset[36] = SFX_PLANE_UNUSED_1;
+ gBankStartOffset[43] = SFX_BUILDING_BAR_2;
+ gBankStartOffset[44] = SFX_BUILDING_BAR_3;
+ gBankStartOffset[45] = SFX_BUILDING_BAR_4;
+ gBankStartOffset[46] = SFX_BUILDING_MAL1;
+ gBankStartOffset[47] = SFX_BUILDING_MAL2;
+ gBankStartOffset[42] = SFX_BUILDING_BAR_1;
+ gBankStartOffset[49] = SFX_BUILDING_STR1;
+ gBankStartOffset[50] = SFX_BUILDING_STR2;
+ gBankStartOffset[51] = SFX_BUILDING_STR3;
+ gBankStartOffset[52] = SFX_BUILDING_CHURCH;
+ gBankStartOffset[53] = SFX_BUILDING_FAN_1;
+ gBankStartOffset[48] = SFX_BUILDING_MAL3;
+ gBankStartOffset[55] = SFX_BUILDING_INSECTS_1;
+ gBankStartOffset[56] = SFX_BUILDING_INSECTS_2;
+ gBankStartOffset[54] = SFX_BUILDING_FAN_2;
+ gBankStartOffset[57] = SFX_CLUB_1;
+ gBankStartOffset[58] = SFX_CLUB_2;
+ gBankStartOffset[59] = SFX_CLUB_3;
+ gBankStartOffset[60] = SFX_CLUB_4;
+ gBankStartOffset[61] = SFX_FOOTSTEP_GRASS_1;
+ gBankStartOffset[62] = SFX_FOOTSTEP_GRAVEL_1;
+ gBankStartOffset[63] = SFX_FOOTSTEP_WOOD_1;
+ gBankStartOffset[64] = SFX_FOOTSTEP_METAL_1;
+ gBankStartOffset[65] = SFX_FOOTSTEP_WATER_1;
+ gBankStartOffset[66] = SFX_FOOTSTEP_SAND_1;
+}
+
void cSampleManager::SetSpeakerConfig(int32 nConfig)
{
@@ -483,13 +458,13 @@ cSampleManager::AutoDetect3DProviders()
return -1;
}
-static bool
+static bool8
_ResolveLink(char const *path, char *out)
{
#ifdef _WIN32
size_t len = strlen(path);
if (len < 4 || strcmp(&path[len - 4], ".lnk") != 0)
- return false;
+ return FALSE;
IShellLink* psl;
WIN32_FIND_DATA fd;
@@ -524,7 +499,7 @@ _ResolveLink(char const *path, char *out)
ppf->Release();
psl->Release();
#endif
- return true;
+ return TRUE;
}
}
}
@@ -534,31 +509,31 @@ _ResolveLink(char const *path, char *out)
psl->Release();
}
- return false;
+ return FALSE;
#else
struct stat sb;
if (lstat(path, &sb) == -1) {
perror("lstat: ");
- return false;
+ return FALSE;
}
if (S_ISLNK(sb.st_mode)) {
char* linkname = (char*)alloca(sb.st_size + 1);
if (linkname == NULL) {
fprintf(stderr, "insufficient memory\n");
- return false;
+ return FALSE;
}
if (readlink(path, linkname, sb.st_size + 1) < 0) {
perror("readlink: ");
- return false;
+ return FALSE;
}
linkname[sb.st_size] = '\0';
strcpy(out, linkname);
- return true;
+ return TRUE;
} else {
- return false;
+ return FALSE;
}
#endif
}
@@ -567,8 +542,8 @@ static void
_FindMP3s(void)
{
tMP3Entry *pList;
- bool bShortcut;
- bool bInitFirstEntry;
+ bool8 bShortcut;
+ bool8 bInitFirstEntry;
HANDLE hFind;
char path[MAX_PATH];
char filepath[MAX_PATH*2];
@@ -611,9 +586,9 @@ _FindMP3s(void)
{
OutputDebugString("Resolving Link");
OutputDebugString(filepath);
- bShortcut = true;
+ bShortcut = TRUE;
} else
- bShortcut = false;
+ bShortcut = FALSE;
aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]);
@@ -653,7 +628,7 @@ _FindMP3s(void)
_pMP3List->pLinkPath = NULL;
}
- bInitFirstEntry = false;
+ bInitFirstEntry = FALSE;
}
else
{
@@ -661,10 +636,10 @@ _FindMP3s(void)
OutputDebugString(filepath);
- bInitFirstEntry = true;
+ bInitFirstEntry = TRUE;
}
- while ( true )
+ while ( TRUE )
{
if ( !FindNextFile(hFind, &fd) )
break;
@@ -682,9 +657,9 @@ _FindMP3s(void)
{
OutputDebugString("Resolving Link");
OutputDebugString(filepath);
- bShortcut = true;
+ bShortcut = TRUE;
} else {
- bShortcut = false;
+ bShortcut = FALSE;
if (filepathlen > MAX_PATH) {
continue;
}
@@ -723,7 +698,7 @@ _FindMP3s(void)
pList = _pMP3List;
- bInitFirstEntry = false;
+ bInitFirstEntry = FALSE;
}
else
{
@@ -745,9 +720,9 @@ _FindMP3s(void)
{
OutputDebugString("Resolving Link");
OutputDebugString(filepath);
- bShortcut = true;
+ bShortcut = TRUE;
} else
- bShortcut = false;
+ bShortcut = FALSE;
aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]);
@@ -859,7 +834,7 @@ _GetMP3EntryByIndex(uint32 idx)
return NULL;
}
-static inline bool
+static inline bool8
_GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
{
_CurMP3Index = 0;
@@ -872,7 +847,7 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
*pPosition -= (*pEntry)->nTrackStreamPos;
_CurMP3Pos = *pPosition;
- return true;
+ return TRUE;
}
_CurMP3Index++;
@@ -883,10 +858,10 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry)
_CurMP3Pos = 0;
_CurMP3Index = 0;
- return false;
+ return FALSE;
}
-bool
+bool8
cSampleManager::IsMP3RadioChannelAvailable(void)
{
return nNumMP3s != 0;
@@ -895,29 +870,20 @@ cSampleManager::IsMP3RadioChannelAvailable(void)
void cSampleManager::ReleaseDigitalHandle(void)
{
- if ( ALDevice )
- {
- prevprovider = curprovider;
- release_existing();
- curprovider = -1;
- }
+ // TODO? alcSuspendContext
}
void cSampleManager::ReacquireDigitalHandle(void)
{
- if ( ALDevice )
- {
- if ( prevprovider != -1 )
- set_new_provider(prevprovider);
- }
+ // TODO? alcProcessContext
}
-bool
+bool8
cSampleManager::Initialise(void)
{
if ( _bSampmanInitialised )
- return true;
-
+ return TRUE;
+ SetUpDebugBanksInfo();
EFXInit();
CStream::Initialise();
@@ -926,7 +892,7 @@ cSampleManager::Initialise(void)
{
m_aSamples[i].nOffset = 0;
m_aSamples[i].nSize = 0;
- m_aSamples[i].nFrequency = MAX_FREQ;
+ m_aSamples[i].nFrequency = 22050;
m_aSamples[i].nLoopStart = 0;
m_aSamples[i].nLoopEnd = -1;
}
@@ -961,7 +927,7 @@ cSampleManager::Initialise(void)
for ( int32 i = 0; i < MAX_SFX_BANKS; i++ )
{
- bSampleBankLoaded[i] = false;
+ bSampleBankLoaded[i] = FALSE;
nSampleBankDiscStartOffset[i] = 0;
nSampleBankSize[i] = 0;
nSampleBankMemoryStartAddress[i] = 0;
@@ -979,16 +945,87 @@ cSampleManager::Initialise(void)
}
{
- for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ )
+ for ( int32 i = 0; i < NUM_CHANNELS; i++ )
nChannelVolume[i] = 0;
}
+
+ add_providers();
+
+ {
+ int index = 0;
+ _maxSamples = Min(MAXCHANNELS, providers[index].sources);
+
+ ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ,
+ ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS - MAX2DCHANNELS,
+ ALC_STEREO_SOURCES, MAX2DCHANNELS,
+ 0,
+ };
+
+ ALDevice = alcOpenDevice(providers[index].id);
+ ASSERT(ALDevice != NULL);
+
+ ALContext = alcCreateContext(ALDevice, attr);
+ ASSERT(ALContext != NULL);
+
+ alcMakeContextCurrent(ALContext);
+ const char* ext=(const char*)alGetString(AL_EXTENSIONS);
+ ASSERT(strstr(ext,"AL_SOFT_loop_points")!=NULL);
+ if ( strstr(ext,"AL_SOFT_loop_points")==NULL )
+ {
+ Terminate();
+ return FALSE;
+ }
+
+ alListenerf (AL_GAIN, 1.0f);
+ alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f);
+ alListener3f(AL_VELOCITY, 0.0f, 0.0f, 0.0f);
+ ALfloat orientation[6] = { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f };
+ alListenerfv(AL_ORIENTATION, orientation);
+
+ alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED);
+
+ if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) )
+ {
+ _effectsSupported = providers[index].bSupportsFx;
+ alGenAuxiliaryEffectSlots(1, &ALEffectSlot);
+ alGenEffects(1, &ALEffect);
+ }
+
+ alGenSources(MAX_STREAMS*2, ALStreamSources[0]);
+ for ( int32 i = 0; i < MAX_STREAMS; i++ )
+ {
+ alGenBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]);
+ alSourcei(ALStreamSources[i][0], AL_SOURCE_RELATIVE, AL_TRUE);
+ alSource3f(ALStreamSources[i][0], AL_POSITION, 0.0f, 0.0f, 0.0f);
+ alSourcef(ALStreamSources[i][0], AL_GAIN, 1.0f);
+ alSourcei(ALStreamSources[i][1], AL_SOURCE_RELATIVE, AL_TRUE);
+ alSource3f(ALStreamSources[i][1], AL_POSITION, 0.0f, 0.0f, 0.0f);
+ alSourcef(ALStreamSources[i][1], AL_GAIN, 1.0f);
+ }
+
+ CChannel::InitChannels();
+
+ for ( int32 i = 0; i < MAXCHANNELS; i++ )
+ aChannel[i].Init(i);
+ for ( int32 i = 0; i < MAX2DCHANNELS; i++ )
+ aChannel[MAXCHANNELS+i].Init(MAXCHANNELS+i, true);
+
+ if ( IsFXSupported() )
+ {
+ /**/
+ alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect);
+ /**/
+
+ for ( int32 i = 0; i < MAXCHANNELS; i++ )
+ aChannel[i].SetReverbMix(ALEffectSlot, 0.0f);
+ }
+ }
+
{
for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ )
nStreamLength[i] = 0;
}
-
- add_providers();
#ifdef AUDIO_CACHE
FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb");
@@ -1003,7 +1040,25 @@ cSampleManager::Initialise(void)
for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ )
{
- aStream[0] = new CStream(StreamedNameTable[i], ALStreamSources[0], ALStreamBuffers[0], IsThisTrackAt16KHz(i) ? 16000 : 32000);
+ char filename[MAX_PATH];
+ sprintf(filename, "%s.VB", StreamedNameTable[i]);
+ aStream[0] = new CStream(filename, ALStreamSources[0], ALStreamBuffers[0], IsThisTrackAt16KHz(i) ? 16000 : 32000);
+ if ( aStream[0] && !aStream[0]->IsOpened() )
+ {
+ delete aStream[0];
+ aStream[0] = NULL;
+ }
+
+ if ( !aStream[0] )
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[i]);
+ aStream[0] = new CStream(filename, ALStreamSources[0], ALStreamBuffers[0], IsThisTrackAt16KHz(i) ? 16000 : 32000);
+ if ( aStream[0] && !aStream[0]->IsOpened() )
+ {
+ delete aStream[0];
+ aStream[0] = NULL;
+ }
+ }
if ( aStream[0] && aStream[0]->IsOpened() )
{
@@ -1032,7 +1087,7 @@ cSampleManager::Initialise(void)
if ( !InitialiseSampleBanks() )
{
Terminate();
- return false;
+ return FALSE;
}
nSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(nSampleBankSize[SFX_BANK_0]);
@@ -1041,7 +1096,7 @@ cSampleManager::Initialise(void)
if ( nSampleBankMemoryStartAddress[SFX_BANK_0] == 0 )
{
Terminate();
- return false;
+ return FALSE;
}
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BLOCKSIZE*MAX_PEDSFX);
@@ -1060,7 +1115,7 @@ cSampleManager::Initialise(void)
}
{
- _bSampmanInitialised = true;
+ _bSampmanInitialised = TRUE;
if ( defaultProvider >= 0 && defaultProvider < m_nNumberOfProviders )
{
@@ -1069,7 +1124,7 @@ cSampleManager::Initialise(void)
else
{
Terminate();
- return false;
+ return FALSE;
}
}
@@ -1092,13 +1147,13 @@ cSampleManager::Initialise(void)
time_t t = time(NULL);
tm *localtm;
- bool bUseRandomTable;
+ bool8 bUseRandomTable;
if ( t == -1 )
- bUseRandomTable = true;
+ bUseRandomTable = TRUE;
else
{
- bUseRandomTable = false;
+ bUseRandomTable = FALSE;
localtm = localtime(&t);
}
@@ -1130,10 +1185,10 @@ cSampleManager::Initialise(void)
else
_CurMP3Pos = 0;
- _bIsMp3Active = false;
+ _bIsMp3Active = FALSE;
}
- return true;
+ return TRUE;
}
void
@@ -1149,8 +1204,51 @@ cSampleManager::Terminate(void)
}
}
- release_existing();
+ for ( int32 i = 0; i < NUM_CHANNELS; i++ )
+ aChannel[i].Term();
+ if ( IsFXSupported() )
+ {
+ if ( alIsEffect(ALEffect) )
+ {
+ alEffecti(ALEffect, AL_EFFECT_TYPE, AL_EFFECT_NULL);
+ alDeleteEffects(1, &ALEffect);
+ ALEffect = AL_EFFECT_NULL;
+ }
+
+ if (alIsAuxiliaryEffectSlot(ALEffectSlot))
+ {
+ alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, AL_EFFECT_NULL);
+
+ alDeleteAuxiliaryEffectSlots(1, &ALEffectSlot);
+ ALEffectSlot = AL_EFFECTSLOT_NULL;
+ }
+ }
+
+ for ( int32 i = 0; i < MAX_STREAMS; i++ )
+ {
+ alDeleteBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]);
+ }
+ alDeleteSources(MAX_STREAMS*2, ALStreamSources[0]);
+
+ CChannel::DestroyChannels();
+
+ if ( ALContext )
+ {
+ alcMakeContextCurrent(NULL);
+ alcSuspendContext(ALContext);
+ alcDestroyContext(ALContext);
+ }
+ if ( ALDevice )
+ alcCloseDevice(ALDevice);
+
+ ALDevice = NULL;
+ ALContext = NULL;
+
+ _fPrevEaxRatioDestination = 0.0f;
+ _usingEFX = false;
+ _fEffectsLevel = 0.0f;
+
_DeleteMP3Entries();
CStream::Terminate();
@@ -1167,12 +1265,12 @@ cSampleManager::Terminate(void)
nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0;
}
- _bSampmanInitialised = false;
+ _bSampmanInitialised = FALSE;
}
-bool cSampleManager::CheckForAnAudioFileOnCD(void)
+bool8 cSampleManager::CheckForAnAudioFileOnCD(void)
{
- return true;
+ return TRUE;
}
char cSampleManager::GetCDAudioDriveLetter(void)
@@ -1185,7 +1283,7 @@ cSampleManager::UpdateEffectsVolume(void)
{
if ( _bSampmanInitialised )
{
- for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ )
+ for ( int32 i = 0; i < NUM_CHANNELS; i++ )
{
if ( GetChannelUsedFlag(i) )
{
@@ -1229,24 +1327,24 @@ cSampleManager::SetMusicFadeVolume(uint8 nVolume)
}
void
-cSampleManager::SetMonoMode(uint8 nMode)
+cSampleManager::SetMonoMode(bool8 nMode)
{
m_nMonoMode = nMode;
}
-bool
+bool8
cSampleManager::LoadSampleBank(uint8 nBank)
{
ASSERT( nBank < MAX_SFX_BANKS);
if ( CTimer::GetIsCodePaused() )
- return false;
+ return FALSE;
if ( MusicManager.IsInitialised()
&& MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE
&& nBank != SFX_BANK_0 )
{
- return false;
+ return FALSE;
}
#ifdef OPUS_SFX
@@ -1265,14 +1363,14 @@ cSampleManager::LoadSampleBank(uint8 nBank)
}
#else
if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 )
- return false;
+ return FALSE;
if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank], fpSampleDataHandle) != nSampleBankSize[nBank] )
- return false;
+ return FALSE;
#endif
- bSampleBankLoaded[nBank] = true;
+ bSampleBankLoaded[nBank] = TRUE;
- return true;
+ return TRUE;
}
void
@@ -1280,10 +1378,10 @@ cSampleManager::UnloadSampleBank(uint8 nBank)
{
ASSERT( nBank < MAX_SFX_BANKS);
- bSampleBankLoaded[nBank] = false;
+ bSampleBankLoaded[nBank] = FALSE;
}
-bool
+bool8
cSampleManager::IsSampleBankLoaded(uint8 nBank)
{
ASSERT( nBank < MAX_SFX_BANKS);
@@ -1291,7 +1389,7 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank)
return bSampleBankLoaded[nBank];
}
-bool
+bool8
cSampleManager::IsPedCommentLoaded(uint32 nComment)
{
ASSERT( nComment < TOTAL_AUDIO_SAMPLES );
@@ -1306,10 +1404,10 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment)
slot += ARRAY_SIZE(nPedSlotSfx);
#endif
if ( nComment == nPedSlotSfx[slot] )
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
@@ -1332,13 +1430,13 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment)
return -1;
}
-bool
+bool8
cSampleManager::LoadPedComment(uint32 nComment)
{
ASSERT( nComment < TOTAL_AUDIO_SAMPLES );
if ( CTimer::GetIsCodePaused() )
- return false;
+ return FALSE;
// no talking peds during cutsenes or the game end
if ( MusicManager.IsInitialised() )
@@ -1347,7 +1445,7 @@ cSampleManager::LoadPedComment(uint32 nComment)
{
case MUSICMODE_CUTSCENE:
{
- return false;
+ return FALSE;
break;
}
@@ -1362,17 +1460,17 @@ cSampleManager::LoadPedComment(uint32 nComment)
int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[SAMPLEBANK_PED] + PED_BLOCKSIZE * nCurrentPedSlot + samplesRead),
samplesSize, NULL);
if (size <= 0) {
- return false;
+ return FALSE;
}
samplesRead += size * 2;
samplesSize -= size;
}
#else
if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 )
- return false;
+ return FALSE;
if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize )
- return false;
+ return FALSE;
#endif
nPedSlotSfx[nCurrentPedSlot] = nComment;
@@ -1380,7 +1478,7 @@ cSampleManager::LoadPedComment(uint32 nComment)
if ( ++nCurrentPedSlot >= MAX_PEDSFX )
nCurrentPedSlot = 0;
- return true;
+ return TRUE;
}
int32
@@ -1423,13 +1521,13 @@ cSampleManager::GetSampleLength(uint32 nSample)
return m_aSamples[nSample].nSize / sizeof(uint16);
}
-bool cSampleManager::UpdateReverb(void)
+bool8 cSampleManager::UpdateReverb(void)
{
if ( !usingEAX && !_usingEFX )
- return false;
+ return FALSE;
if ( AudioManager.GetFrameCounter() & 15 )
- return false;
+ return FALSE;
float fRatio = 0.0f;
@@ -1450,7 +1548,7 @@ bool cSampleManager::UpdateReverb(void)
fRatio = clamp(fRatio, 0.0f, 0.6f);
if ( fRatio == _fPrevEaxRatioDestination )
- return false;
+ return FALSE;
#ifdef JUICY_OAL
if ( usingEAX3 || _usingEFX )
@@ -1487,13 +1585,13 @@ bool cSampleManager::UpdateReverb(void)
_fPrevEaxRatioDestination = fRatio;
- return true;
+ return TRUE;
}
void
-cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
+cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
if ( usingEAX || _usingEFX )
{
@@ -1501,7 +1599,7 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
{
alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect);
- if ( nReverbFlag != 0 )
+ if ( nReverbFlag != FALSE )
aChannel[nChannel].SetReverbMix(ALEffectSlot, _fEffectsLevel);
else
aChannel[nChannel].SetReverbMix(ALEffectSlot, 0.0f);
@@ -1509,24 +1607,24 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag)
}
}
-bool
+bool8
cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
uintptr addr;
if ( nSfx < SAMPLEBANK_MAX )
{
if ( !IsSampleBankLoaded(nBank) )
- return false;
+ return FALSE;
addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset;
}
else
{
if ( !IsPedCommentLoaded(nSfx) )
- return false;
+ return FALSE;
int32 slot = _GetPedCommentSlot(nSfx);
addr = (nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * slot);
@@ -1544,17 +1642,16 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank)
aChannel[nChannel].SetSampleData ((void*)addr, m_aSamples[nSfx].nSize, m_aSamples[nSfx].nFrequency);
aChannel[nChannel].SetLoopPoints (0, -1);
aChannel[nChannel].SetPitch (1.0f);
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
void
cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume)
{
- ASSERT( nChannel != CHANNEL2D );
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < MAXCHANNELS );
uint32 vol = nVolume;
if ( vol > MAX_VOLUME ) vol = MAX_VOLUME;
@@ -1575,8 +1672,7 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume)
void
cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float fZ)
{
- ASSERT( nChannel != CHANNEL2D );
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < MAXCHANNELS );
aChannel[nChannel].SetPosition(-fX, fY, fZ);
}
@@ -1584,18 +1680,17 @@ cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float
void
cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin)
{
- ASSERT( nChannel != CHANNEL2D );
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < MAXCHANNELS );
aChannel[nChannel].SetDistances(fMax, fMin);
}
void
cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
{
- ASSERT( nChannel == CHANNEL2D );
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel >= MAXCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
- if ( nChannel == CHANNEL2D )
+ if( nChannel >= CHANNEL_POLICE_RADIO )
{
uint32 vol = nVolume;
if ( vol > MAX_VOLUME ) vol = MAX_VOLUME;
@@ -1617,10 +1712,10 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume)
void
cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
{
- ASSERT(nChannel == CHANNEL2D);
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel >= MAXCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
- if ( nChannel == CHANNEL2D )
+ if ( nChannel >= CHANNEL_POLICE_RADIO )
{
aChannel[nChannel].SetPan(nPan);
}
@@ -1629,7 +1724,7 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan)
void
cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
aChannel[nChannel].SetCurrentFreq(nFreq);
}
@@ -1637,7 +1732,7 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq)
void
cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
aChannel[nChannel].SetLoopPoints(nLoopStart / (DIGITALBITS / 8), nLoopEnd / (DIGITALBITS / 8));
}
@@ -1645,15 +1740,15 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n
void
cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
aChannel[nChannel].SetLoopCount(nLoopCount);
}
-bool
+bool8
cSampleManager::GetChannelUsedFlag(uint32 nChannel)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
return aChannel[nChannel].IsUsed();
}
@@ -1661,7 +1756,7 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel)
void
cSampleManager::StartChannel(uint32 nChannel)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
aChannel[nChannel].Start();
}
@@ -1669,7 +1764,7 @@ cSampleManager::StartChannel(uint32 nChannel)
void
cSampleManager::StopChannel(uint32 nChannel)
{
- ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS );
+ ASSERT( nChannel < NUM_CHANNELS );
aChannel[nChannel].Stop();
}
@@ -1688,14 +1783,32 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
delete aStream[nStream];
aStream[nStream] = NULL;
}
-
- strcpy(filename, StreamedNameTable[nFile]);
-
+
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
+
+ if (!stream)
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
+ }
+
+
ASSERT(stream != NULL);
aStream[nStream] = stream;
- if ( !stream->IsOpened() )
+ if ( !stream->Setup() )
{
delete stream;
aStream[nStream] = NULL;
@@ -1704,7 +1817,7 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream)
}
void
-cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream)
+cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
@@ -1712,7 +1825,7 @@ cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream)
if ( stream )
{
- stream->SetPause(nPauseFlag != 0);
+ stream->SetPause(nPauseFlag != FALSE);
}
}
@@ -1725,181 +1838,220 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream)
if ( stream )
{
- if ( stream->Setup() )
+ if ( stream->IsOpened() )
{
stream->Start();
}
}
}
-bool
+bool8
cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream)
{
+ int i = 0;
uint32 position = nPos;
- char filename[256];
-
- ASSERT( nStream < MAX_STREAMS );
+ char filename[MAX_PATH];
- if ( nFile < TOTAL_STREAMED_SOUNDS )
+ if ( nFile >= TOTAL_STREAMED_SOUNDS )
+ return FALSE;
+
+ if ( aStream[nStream] )
{
- if ( aStream[nStream] )
- {
- delete aStream[nStream];
- aStream[nStream] = NULL;
- }
-
- if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
+ delete aStream[nStream];
+ aStream[nStream] = NULL;
+ }
+ if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER )
+ {
+ do
{
- uint32 i = 0;
- do {
- if(i != 0 || _bIsMp3Active) {
- if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
-
- _CurMP3Pos = 0;
-
- tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
-
- if(mp3) {
- mp3 = _pMP3List;
- if(mp3 == NULL) {
- _bIsMp3Active = false;
- nFile = 0;
- strcat(filename, StreamedNameTable[nFile]);
+ // Just switched to MP3 player
+ if ( !_bIsMp3Active && i == 0 )
+ {
+ if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
+ position = 0;
+ tMP3Entry *e = _pMP3List;
- CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- ASSERT(stream != NULL);
+ // Try to continue from previous song, if already started
+ if(!_GetMP3PosFromStreamPos(&position, &e) && !e) {
+ nFile = 0;
- aStream[nStream] = stream;
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+ CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
- if (stream->IsOpened()) {
- if (stream->Setup()) {
- if (position != 0)
- stream->SetPosMS(position);
+ if (!stream)
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
+ }
+ aStream[nStream] = stream;
- stream->Start();
- }
+ if (stream->Setup()) {
+ stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ if (position != 0)
+ stream->SetPosMS(position);
- return true;
- } else {
- delete stream;
- aStream[nStream] = NULL;
- }
+ stream->Start();
- return false;
- }
+ return TRUE;
+ } else {
+ delete stream;
+ aStream[nStream] = NULL;
}
+ return FALSE;
- if (mp3->pLinkPath != NULL)
- aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ } else {
+
+ if (e->pLinkPath != NULL)
+ aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
else {
strcpy(filename, _mp3DirectoryPath);
- strcat(filename, mp3->aFilename);
+ strcat(filename, e->aFilename);
- aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]);
}
- if (aStream[nStream]->IsOpened()) {
- if (aStream[nStream]->Setup()) {
- aStream[nStream]->Start();
- }
+ if (aStream[nStream]->Setup()) {
+ if (position != 0)
+ aStream[nStream]->SetPosMS(position);
+
+ aStream[nStream]->Start();
- return true;
+ _bIsMp3Active = TRUE;
+ return TRUE;
} else {
delete aStream[nStream];
aStream[nStream] = NULL;
}
-
- _bIsMp3Active = false;
- continue;
+ // fall through, start playing from another song
}
- if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] )
- position = 0;
-
- tMP3Entry *e;
- if ( !_GetMP3PosFromStreamPos(&position, &e) )
+ } else {
+ if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0;
+
+ _CurMP3Pos = 0;
+
+ tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
+ if ( !mp3 )
{
- if ( e == NULL )
+ mp3 = _pMP3List;
+ if ( !_pMP3List )
{
nFile = 0;
- strcat(filename, StreamedNameTable[nFile]);
+ _bIsMp3Active = 0;
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+
CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- ASSERT(stream != NULL);
+
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
+
+ if (!stream)
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
+ }
aStream[nStream] = stream;
- if (stream->IsOpened()) {
- if (stream->Setup()) {
- if (position != 0)
- stream->SetPosMS(position);
+ if (stream->Setup()) {
+ stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ if (position != 0)
+ stream->SetPosMS(position);
- stream->Start();
- }
+ stream->Start();
- return true;
+ return TRUE;
} else {
delete stream;
aStream[nStream] = NULL;
}
-
- return false;
+ return FALSE;
}
}
-
- if (e->pLinkPath != NULL)
- aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if (mp3->pLinkPath != NULL)
+ aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
else {
strcpy(filename, _mp3DirectoryPath);
- strcat(filename, e->aFilename);
+ strcat(filename, mp3->aFilename);
- aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]);
+ aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
}
- if (aStream[nStream]->IsOpened()) {
- if (aStream[nStream]->Setup()) {
- if (position != 0)
- aStream[nStream]->SetPosMS(position);
-
- aStream[nStream]->Start();
- }
-
- _bIsMp3Active = true;
- return true;
+ if (aStream[nStream]->Setup()) {
+ aStream[nStream]->Start();
+#ifdef FIX_BUGS
+ _bIsMp3Active = TRUE;
+#endif
+ return TRUE;
} else {
delete aStream[nStream];
aStream[nStream] = NULL;
}
-
- _bIsMp3Active = false;
- } while(++i < nNumMP3s);
-
- position = 0;
- nFile = 0;
+ }
+ _bIsMp3Active = 0;
}
+ while ( ++i < nNumMP3s );
+ position = 0;
+ nFile = 0;
+ }
+ sprintf(filename, "%s.VB", StreamedNameTable[nFile]);
+
+ CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- strcpy(filename, StreamedNameTable[nFile]);
-
- CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
- ASSERT(stream != NULL);
-
- aStream[nStream] = stream;
-
- if ( stream->IsOpened() ) {
- if ( stream->Setup() ) {
- if (position != 0)
- stream->SetPosMS(position);
+ if ( stream && !stream->IsOpened() )
+ {
+ delete stream;
+ stream = NULL;
+ }
- stream->Start();
- }
-
- return true;
- } else {
+ if (!stream)
+ {
+ sprintf(filename, "%s.MP3", StreamedNameTable[nFile]);
+ stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000);
+ if ( stream && !stream->IsOpened() )
+ {
delete stream;
- aStream[nStream] = NULL;
+ stream = NULL;
}
}
+
+ aStream[nStream] = stream;
- return false;
+ if ( stream->Setup() ) {
+ stream->SetLoopCount(nStreamLoopedFlag[nStream] ? 0 : 1);
+ nStreamLoopedFlag[nStream] = TRUE;
+ if (position != 0)
+ stream->SetPosMS(position);
+
+ stream->Start();
+
+ return TRUE;
+ } else {
+ delete stream;
+ aStream[nStream] = NULL;
+ }
+ return FALSE;
}
void
@@ -1913,6 +2065,9 @@ cSampleManager::StopStreamedFile(uint8 nStream)
{
delete stream;
aStream[nStream] = NULL;
+
+ if ( nStream == 0 )
+ _bIsMp3Active = FALSE;
}
}
@@ -1925,14 +2080,28 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream)
if ( stream )
{
- return stream->GetPosMS();
+ if ( _bIsMp3Active )
+ {
+ tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index);
+
+ if ( mp3 != NULL )
+ {
+ return stream->GetPosMS() + mp3->nTrackStreamPos;
+ }
+ else
+ return 0;
+ }
+ else
+ {
+ return stream->GetPosMS();
+ }
}
return 0;
}
void
-cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream)
+cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
@@ -1975,7 +2144,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream)
return nStreamLength[nStream];
}
-bool
+bool8
cSampleManager::IsStreamPlaying(uint8 nStream)
{
ASSERT( nStream < MAX_STREAMS );
@@ -1985,10 +2154,10 @@ cSampleManager::IsStreamPlaying(uint8 nStream)
if ( stream )
{
if ( stream->IsPlaying() )
- return true;
+ return TRUE;
}
- return false;
+ return FALSE;
}
void
@@ -2001,16 +2170,22 @@ cSampleManager::Service(void)
if ( stream )
stream->Update();
}
+ int refCount = CChannel::channelsThatNeedService;
+ for ( int32 i = 0; refCount && i < NUM_CHANNELS; i++ )
+ {
+ if ( aChannel[i].Update() )
+ refCount--;
+ }
}
-bool
+bool8
cSampleManager::InitialiseSampleBanks(void)
{
int32 nBank = SFX_BANK_0;
fpSampleDescHandle = fcaseopen(SampleBankDescFilename, "rb");
if ( fpSampleDescHandle == NULL )
- return false;
+ return FALSE;
#ifndef OPUS_SFX
fpSampleDataHandle = fcaseopen(SampleBankDataFilename, "rb");
if ( fpSampleDataHandle == NULL )
@@ -2018,7 +2193,7 @@ cSampleManager::InitialiseSampleBanks(void)
fclose(fpSampleDescHandle);
fpSampleDescHandle = NULL;
- return false;
+ return FALSE;
}
fseek(fpSampleDataHandle, 0, SEEK_END);
@@ -2050,11 +2225,11 @@ cSampleManager::InitialiseSampleBanks(void)
nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0];
nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS];
- return true;
+ return TRUE;
}
void
-cSampleManager::SetStreamedFileLoopFlag(uint8 nLoopFlag, uint8 nChannel)
+cSampleManager::SetStreamedFileLoopFlag(bool8 nLoopFlag, uint8 nChannel)
{
nStreamLoopedFlag[nChannel] = nLoopFlag;
}
diff --git a/src/audio/soundlist.h b/src/audio/soundlist.h
index 4d88590e..c6dbb634 100644
--- a/src/audio/soundlist.h
+++ b/src/audio/soundlist.h
@@ -54,8 +54,8 @@ enum eSound
SOUND_49,
SOUND_WEAPON_BAT_ATTACK,
SOUND_WEAPON_KNIFE_ATTACK,
- SOUND_WEAPON_CHAINSAW_ATTACK,
SOUND_WEAPON_CHAINSAW_IDLE,
+ SOUND_WEAPON_CHAINSAW_ATTACK,
SOUND_WEAPON_CHAINSAW_MADECONTACT,
SOUND_WEAPON_SHOT_FIRED,
SOUND_WEAPON_RELOAD,
@@ -116,8 +116,8 @@ enum eSound
SOUND_PED_MIAMIVICE_EXITING_CAR,
SOUND_PED_COP_HELIPILOTPHRASE,
SOUND_PED_PULLOUTWEAPON,
- SOUND_PED_HELI_PLAYER_FOUND = 114,
- SOUND_PED_VCPA_PLAYER_FOUND = 115,
+ SOUND_PED_HELI_PLAYER_FOUND,
+ SOUND_PED_VCPA_PLAYER_FOUND,
SOUND_PED_ON_FIRE,
SOUND_PED_AIMING,
SOUND_PED_HANDS_UP,
@@ -128,15 +128,15 @@ enum eSound
SOUND_PED_CAR_JACKED,
SOUND_PED_ROBBED,
SOUND_PED_ACCIDENTREACTION1,
- SOUND_PED_UNK_126,
+ SOUND_PED_INNOCENT,
SOUND_PED_PLAYER_AFTERSEX,
SOUND_PED_PLAYER_BEFORESEX,
- SOUND_PED_COP_UNK_129, // also used for medics
+ SOUND_PED_COP_TARGETING, // also used for medics
SOUND_PED_COP_MANYCOPSAROUND, // also used for medics
SOUND_PED_GUNAIMEDAT2,
SOUND_PED_COP_ALONE, // also used for medics
SOUND_PED_GUNAIMEDAT3,
- SOUND_PED_COP_REACTION,
+ SOUND_PED_COP_ASK_FOR_ID,
SOUND_PED_COP_LITTLECOPSAROUND, // also used for medics
SOUND_PED_PLAYER_FARFROMCOPS, // also used for medics
SOUND_PED_TAXI_WAIT,
@@ -151,12 +151,12 @@ enum eSound
SOUND_PED_ANNOYED_DRIVER,
SOUND_PED_147,
SOUND_PED_SOLICIT,
- SOUND_PED_149,
+ SOUND_PED_JEER,
SOUND_PED_150,
SOUND_PED_EXTINGUISHING_FIRE,
SOUND_PED_WAIT_DOUBLEBACK,
- SOUND_153,
- SOUND_PED_CHAT_SEXY,
+ SOUND_PED_CHAT_SEXY_FEMALE,
+ SOUND_PED_CHAT_SEXY_MALE,
SOUND_PED_CHAT_EVENT,
SOUND_PED_PED_COLLISION,
SOUND_PED_CHAT,
@@ -171,22 +171,22 @@ enum eSound
SOUND_CAR_PED_COLLISION,
SOUND_CLOCK_TICK,
SOUND_PART_MISSION_COMPLETE,
- SOUND_FRONTEND_MENU_STARTING, // same with SOUND_HUD_SOUND
+ SOUND_FRONTEND_MENU_STARTING, // same sound as SOUND_HUD
// TODO(Miami): What are 170-175??
- SOUND_FRONTEND_NO_RADIO = 176, // those 3 are all same sound
- SOUND_FRONTEND_RADIO_CHANGE,
- SOUND_FRONTEND_RADIO_CHANGE_2,
- SOUND_HUD_SOUND,
+ SOUND_FRONTEND_RADIO_TURN_OFF = 176, // those 2 are same sound
+ SOUND_FRONTEND_RADIO_TURN_ON,
+ SOUND_FRONTEND_HURRICANE, // yes, frontend
+ SOUND_HUD,
SOUND_180,
SOUND_181,
SOUND_182,
SOUND_LIGHTNING,
SOUND_BULLETTRACE_1,
SOUND_BULLETTRACE_2,
- SOUND_186, // makes same sound with 40
- SOUND_187, // makes same sound with 46
+ SOUND_186, // makes same sound as 40
+ SOUND_187, // makes same sound as 46
SOUND_MELEE_ATTACK_START,
SOUND_SKATING,
SOUND_WEAPON_MINIGUN_ATTACK,
diff --git a/src/buildings/Building.cpp b/src/buildings/Building.cpp
index 8035cf25..92c787e5 100644
--- a/src/buildings/Building.cpp
+++ b/src/buildings/Building.cpp
@@ -4,8 +4,8 @@
#include "Streaming.h"
#include "Pools.h"
-void *CBuilding::operator new(size_t sz) { return CPools::GetBuildingPool()->New(); }
-void CBuilding::operator delete(void *p, size_t sz) { CPools::GetBuildingPool()->Delete((CBuilding*)p); }
+void *CBuilding::operator new(size_t sz) throw() { return CPools::GetBuildingPool()->New(); }
+void CBuilding::operator delete(void *p, size_t sz) throw() { CPools::GetBuildingPool()->Delete((CBuilding*)p); }
void
CBuilding::ReplaceWithNewModel(int32 id)
diff --git a/src/buildings/Building.h b/src/buildings/Building.h
index 2c2dfb1f..f8ddfa46 100644
--- a/src/buildings/Building.h
+++ b/src/buildings/Building.h
@@ -9,8 +9,8 @@ public:
m_type = ENTITY_TYPE_BUILDING;
bUsesCollision = true;
}
- static void *operator new(size_t);
- static void operator delete(void*, size_t);
+ static void *operator new(size_t) throw();
+ static void operator delete(void*, size_t) throw();
void ReplaceWithNewModel(int32 id);
diff --git a/src/buildings/Treadable.cpp b/src/buildings/Treadable.cpp
index 00abbe13..d84603a6 100644
--- a/src/buildings/Treadable.cpp
+++ b/src/buildings/Treadable.cpp
@@ -4,5 +4,5 @@
#include "Treadable.h"
#include "Pools.h"
-void *CTreadable::operator new(size_t sz) { return CPools::GetTreadablePool()->New(); }
-void CTreadable::operator delete(void *p, size_t sz) { CPools::GetTreadablePool()->Delete((CTreadable*)p); }
+void *CTreadable::operator new(size_t sz) throw() { return CPools::GetTreadablePool()->New(); }
+void CTreadable::operator delete(void *p, size_t sz) throw() { CPools::GetTreadablePool()->Delete((CTreadable*)p); }
diff --git a/src/buildings/Treadable.h b/src/buildings/Treadable.h
index c3ab755e..6a183c63 100644
--- a/src/buildings/Treadable.h
+++ b/src/buildings/Treadable.h
@@ -5,8 +5,8 @@
class CTreadable : public CBuilding
{
public:
- static void *operator new(size_t);
- static void operator delete(void*, size_t);
+ static void *operator new(size_t) throw();
+ static void operator delete(void*, size_t) throw();
bool GetIsATreadable(void) { return true; }
};
diff --git a/src/collision/ColModel.cpp b/src/collision/ColModel.cpp
index 2071369e..944f76d8 100644
--- a/src/collision/ColModel.cpp
+++ b/src/collision/ColModel.cpp
@@ -36,7 +36,7 @@ CColModel::~CColModel(void)
//--LCS: no pool used, but maybe we better keep it?
void*
-CColModel::operator new(size_t)
+CColModel::operator new(size_t) throw()
{
CColModel* node = CPools::GetColModelPool()->New();
assert(node);
@@ -44,7 +44,7 @@ CColModel::operator new(size_t)
}
void
-CColModel::operator delete(void *p, size_t)
+CColModel::operator delete(void *p, size_t) throw()
{
CPools::GetColModelPool()->Delete((CColModel*)p);
}
diff --git a/src/collision/ColModel.h b/src/collision/ColModel.h
index 64911db8..ce6dcd6d 100644
--- a/src/collision/ColModel.h
+++ b/src/collision/ColModel.h
@@ -35,8 +35,8 @@ struct CColModel
void SetLinkPtr(CLink<CColModel*>*);
void GetTrianglePoint(CVector &v, int i) const;
- void *operator new(size_t);
- void operator delete(void *p, size_t);
+ void *operator new(size_t) throw();
+ void operator delete(void *p, size_t) throw();
CColModel& operator=(const CColModel& other);
bool Write(base::cRelocatableChunkWriter &writer, bool allocSpace);
diff --git a/src/collision/Collision.cpp b/src/collision/Collision.cpp
index 82681645..bb2c2e71 100644
--- a/src/collision/Collision.cpp
+++ b/src/collision/Collision.cpp
@@ -148,11 +148,10 @@ CCollision::SortOutCollisionAfterLoad(void)
void
CCollision::LoadCollisionScreen(eLevelName level)
{
- static Const char *levelNames[4] = {
+ static Const char *levelNames[] = {
"",
"IND_ZON",
"COM_ZON",
- "SUB_ZON"
};
// Why twice?
@@ -311,8 +310,16 @@ CCollision::TestLineTriangle(const CColLine &line, const CompressedVector *verts
if(plane.CalcPoint(line.p0) * plane.CalcPoint(line.p1) > 0.0f)
return false;
+ float p0dist = DotProduct(line.p1 - line.p0, normal);
+
+#ifdef FIX_BUGS
+ // line lines in the plane, assume no collision
+ if (p0dist == 0.0f)
+ return false;
+#endif
+
// intersection parameter on line
- t = -plane.CalcPoint(line.p0) / DotProduct(line.p1 - line.p0, normal);
+ t = -plane.CalcPoint(line.p0) / p0dist;
// find point of intersection
CVector p = line.p0 + (line.p1-line.p0)*t;
@@ -1131,8 +1138,17 @@ CCollision::ProcessLineTriangle(const CColLine &line,
if(plane.CalcPoint(line.p0) * plane.CalcPoint(line.p1) > 0.0f)
return false;
+ float p0dist = DotProduct(line.p1 - line.p0, normal);
+
+#ifdef FIX_BUGS
+ // line lines in the plane, assume no collision
+ if (p0dist == 0.0f)
+ return false;
+#endif
+
// intersection parameter on line
- t = -plane.CalcPoint(line.p0) / DotProduct(line.p1 - line.p0, normal);
+ t = -plane.CalcPoint(line.p0) / p0dist;
+
// early out if we're beyond the mindist
if(t >= mindist)
return false;
diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp
index e92f26c9..44e7ae40 100644
--- a/src/control/CarCtrl.cpp
+++ b/src/control/CarCtrl.cpp
@@ -1603,8 +1603,8 @@ void CCarCtrl::WeaveForOtherCar(CEntity* pOtherEntity, CVehicle* pVehicle, float
forward.Normalise();
float forwardAngle = GetATanOfXY(forward.x, forward.y);
float angleDiff = angleBetweenVehicles - forwardAngle;
- float lenProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.y * sin(angleDiff));
- float widthProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.x * cos(angleDiff));
+ float lenProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.y * Sin(angleDiff));
+ float widthProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.x * Cos(angleDiff));
float lengthToEvade = (2 * (lenProjection + widthProjection) + WIDTH_COEF_TO_WEAVE_SAFELY * 2 * pVehicle->GetColModel()->boundingBox.max.x) / distance;
float diffToLeftAngle = LimitRadianAngle(angleBetweenVehicles - *pAngleToWeaveLeft);
diffToLeftAngle = ABS(diffToLeftAngle);
@@ -2790,7 +2790,7 @@ void CCarCtrl::SteerAIPlaneTowardsTargetCoors(CAutomobile* pPlane)
up.Normalise();
CVector forward(Cos(pPlane->m_fOrientation), Sin(pPlane->m_fOrientation), fForwardZ);
forward.Normalise();
- CVector right = CrossProduct(forward, up);
+ CVector right = CrossProduct(up, forward);
right.z -= 5.0f * pPlane->m_fPlaneSteer;
right.Normalise();
up = CrossProduct(forward, right);
@@ -3273,7 +3273,7 @@ bool CCarCtrl::GenerateOneEmergencyServicesCar(uint32 mi, CVector vecPos)
attempts += 1;
}
if (attempts >= 5)
- return nil;
+ return false;
CAutomobile* pVehicle = new CAutomobile(mi, RANDOM_VEHICLE);
pVehicle->AutoPilot.m_vecDestinationCoors = vecPos;
pVehicle->SetPosition(spawnPos);
diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp
index a3e91f85..0b65dde7 100644
--- a/src/control/Garages.cpp
+++ b/src/control/Garages.cpp
@@ -163,7 +163,7 @@ void CGarages::Init(void)
}
hGarages = DMAudio.CreateEntity(AUDIOTYPE_GARAGE, (void*)1);
if (hGarages >= 0)
- DMAudio.SetEntityStatus(hGarages, true);
+ DMAudio.SetEntityStatus(hGarages, TRUE);
}
void CGarages::Shutdown(void)
@@ -2357,7 +2357,11 @@ float CGarages::FindDoorHeightForMI(int32 mi)
void CGarage::TidyUpGarage()
{
uint32 i = CPools::GetVehiclePool()->GetSize();
+#ifdef FIX_BUGS
while (i--) {
+#else
+ while (--i) {
+#endif
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (pVehicle && (pVehicle->IsCar() || pVehicle->IsBike())) {
if (IsPointInsideGarage(pVehicle->GetPosition())) {
@@ -2373,7 +2377,11 @@ void CGarage::TidyUpGarage()
void CGarage::TidyUpGarageClose()
{
uint32 i = CPools::GetVehiclePool()->GetSize();
+#ifdef FIX_BUGS
while (i--) {
+#else
+ while (--i) {
+#endif
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
if (!pVehicle)
continue;
diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp
index bc9af2e9..f9d58687 100644
--- a/src/control/PathFind.cpp
+++ b/src/control/PathFind.cpp
@@ -200,8 +200,8 @@ CPedPath::AddBlockade(CEntity *pEntity, CPedPathNode(*pathNodes)[40], CVector *p
const float fBoundMaxY = boundingBox.max.y + 0.3f;
const float fBoundMinY = boundingBox.min.y - 0.3f;
const float fBoundMaxX = boundingBox.max.x + 0.3f;
- const float fDistanceX = pPosition->x - pEntity->m_matrix.GetPosition().x;
- const float fDistanceY = pPosition->y - pEntity->m_matrix.GetPosition().y;
+ const float fDistanceX = pPosition->x - pEntity->GetMatrix().GetPosition().x;
+ const float fDistanceY = pPosition->y - pEntity->GetMatrix().GetPosition().y;
const float fBoundRadius = pEntity->GetBoundRadius();
CVector vecBoundCentre;
pEntity->GetBoundCentre(vecBoundCentre);
@@ -215,8 +215,8 @@ CPedPath::AddBlockade(CEntity *pEntity, CPedPathNode(*pathNodes)[40], CVector *p
if (!pathNodes[x][y].bBlockade) {
const float pointY = y * 0.7f + fDistanceY;
CVector2D point(pointX, pointY);
- if (fBoundMaxX > Abs(DotProduct2D(point, pEntity->m_matrix.GetRight()))) {
- float fDotProduct = DotProduct2D(point, pEntity->m_matrix.GetForward());
+ if (fBoundMaxX > Abs(DotProduct2D(point, pEntity->GetMatrix().GetRight()))) {
+ float fDotProduct = DotProduct2D(point, pEntity->GetMatrix().GetForward());
if (fBoundMaxY > fDotProduct && fBoundMinY < fDotProduct)
pathNodes[x][y].bBlockade = true;
}
@@ -859,7 +859,7 @@ CPathFind::PreparePathDataForType(uint8 type, CTempNode *tempnodes, CPathInfoFor
mag = Sqrt(dx*dx + dy*dy);
dx /= mag;
dy /= mag;
- int width = Max(m_pathNodes[i].width, m_pathNodes[j].width);
+ uint8 width = Max(m_pathNodes[i].width, m_pathNodes[j].width);
if(i < j){
dx = -dx;
dy = -dy;
diff --git a/src/control/PathFind.h b/src/control/PathFind.h
index acf9929a..99759590 100644
--- a/src/control/PathFind.h
+++ b/src/control/PathFind.h
@@ -120,7 +120,7 @@ struct CCarPathLink
uint8 trafficLightDirection : 1;
uint8 trafficLightType : 2;
uint8 bBridgeLights : 1; // at least in LCS...
- int8 width;
+ uint8 width;
CVector2D GetPosition(void) { return CVector2D(x/8.0f, y/8.0f); }
CVector2D GetDirection(void) { return CVector2D(dirX/100.0f, dirY/100.0f); }
@@ -151,7 +151,7 @@ struct CPathInfoForObject
int8 numLeftLanes;
int8 numRightLanes;
int8 speedLimit;
- int8 width;
+ uint8 width;
uint8 crossing : 1;
uint8 onlySmallBoats : 1;
@@ -177,7 +177,7 @@ struct CTempNode
int16 link2;
int8 numLeftLanes;
int8 numRightLanes;
- int8 width;
+ uint8 width;
bool isCross;
int8 linkState;
};
@@ -188,7 +188,7 @@ struct CTempNodeExternal // made up name
int16 next;
int8 numLeftLanes;
int8 numRightLanes;
- int8 width;
+ uint8 width;
bool isCross;
};
diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp
index 411dc8c3..9b50a7ec 100644
--- a/src/control/Phones.cpp
+++ b/src/control/Phones.cpp
@@ -48,9 +48,9 @@ CPhoneInfo::Update(void)
TheCamera.SetWideScreenOff();
pPhoneDisplayingMessages = nil;
bDisplayingPhoneMessage = false;
- CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(player->GetClump(), ANIM_PHONE_TALK);
+ CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(player->GetClump(), ANIM_STD_PHONE_TALK);
if (talkAssoc && talkAssoc->blendAmount > 0.5f) {
- CAnimBlendAssociation *endAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_PHONE_OUT, 8.0f);
+ CAnimBlendAssociation *endAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_OUT, 8.0f);
endAssoc->flags &= ~ASSOC_DELETEFADEDOUT;
endAssoc->SetFinishCallback(PhonePutDownCB, player);
} else {
@@ -107,7 +107,7 @@ CPhoneInfo::Update(void)
CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_PHONE);
TheCamera.SetWideScreenOn();
playerInfo->MakePlayerSafe(true);
- CAnimBlendAssociation *phonePickAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_PHONE_IN, 4.0f);
+ CAnimBlendAssociation *phonePickAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_IN, 4.0f);
phonePickAssoc->SetFinishCallback(PhonePickUpCB, &m_aPhones[phoneId]);
bPickingUpPhone = true;
pCallBackPed = player;
@@ -363,10 +363,10 @@ PhonePickUpCB(CAnimBlendAssociation *assoc, void *arg)
CPed *ped = CPhoneInfo::pCallBackPed;
ped->m_nMoveState = PEDMOVE_STILL;
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 8.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE, 8.0f);
if (assoc->blendAmount > 0.5f && ped)
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_PHONE_TALK, 8.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_TALK, 8.0f);
CPhoneInfo::pCallBackPed = nil;
}
diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp
index 9dff91dd..6d0aa415 100644
--- a/src/control/Pickups.cpp
+++ b/src/control/Pickups.cpp
@@ -274,10 +274,11 @@ CPickup::CanBePickedUp(CPlayerPed *player, int playerId)
{
assert(m_pObject != nil);
bool cannotBePickedUp =
- (m_pObject->GetModelIndex() == MI_PICKUP_BODYARMOUR && player->m_fArmour > CWorld::Players[playerId].m_nMaxArmour - 0.5f)
- || (m_pObject->GetModelIndex() == MI_PICKUP_HEALTH && player->m_fHealth > CWorld::Players[playerId].m_nMaxHealth - 0.5f)
+ (m_pObject->GetModelIndex() == MI_PICKUP_BODYARMOUR && player->m_fArmour > CWorld::Players[playerId].m_nMaxArmour - 0.2f)
+ || (m_pObject->GetModelIndex() == MI_PICKUP_HEALTH && player->m_fHealth > CWorld::Players[playerId].m_nMaxHealth - 0.2f)
|| (m_pObject->GetModelIndex() == MI_PICKUP_BRIBE && player->m_pWanted->GetWantedLevel() == 0)
- || (m_pObject->GetModelIndex() == MI_PICKUP_KILLFRENZY && (CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame));
+ || (m_pObject->GetModelIndex() == MI_PICKUP_KILLFRENZY && (CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame))
+ || (m_eType == PICKUP_ASSET_REVENUE && m_fRevenue < 10.0f);
return !cannotBePickedUp;
}
@@ -1007,8 +1008,7 @@ CPickups::DoPickUpEffects(CEntity *entity)
entity->bDoNotRender = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame;
if (!entity->bDoNotRender) {
- float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800));
- float modifiedSin = 0.3f * (s + 1.0f);
+ float modifiedSin = 0.3f * (Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)) + 1.0f);
#ifdef FIX_BUGS
int16 colorId = 0;
@@ -1148,7 +1148,20 @@ CPickups::DoPickUpEffects(CEntity *entity)
if (model == MI_MINIGUN || model == MI_MINIGUN2)
scale = 1.2f;
- entity->GetMatrix().SetRotateZOnlyScaled((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800), scale);
+ float angle = (float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800);
+ float c = Cos(angle) * scale;
+ float s = Sin(angle) * scale;
+
+ // we know from SA they were setting each field manually like this
+ entity->GetMatrix().rx = c;
+ entity->GetMatrix().ry = s;
+ entity->GetMatrix().rz = 0.0f;
+ entity->GetMatrix().fx = -s;
+ entity->GetMatrix().fy = c;
+ entity->GetMatrix().fz = 0.0f;
+ entity->GetMatrix().ux = 0.0f;
+ entity->GetMatrix().uy = 0.0f;
+ entity->GetMatrix().uz = scale;
if (entity->GetModelIndex() == MI_MINIGUN2) {
CMatrix matrix1;
diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp
index 5f481234..22347b92 100644
--- a/src/control/Replay.cpp
+++ b/src/control/Replay.cpp
@@ -521,7 +521,7 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState
state->aFunctionCallbackID[i] = 0;
}
}else{
- state->aAnimId[i] = NUM_STD_ANIMS;
+ state->aAnimId[i] = ANIM_STD_NUM;
state->aCurTime[i] = 0;
state->aSpeed[i] = 85;
state->aFunctionCallbackID[i] = 0;
@@ -548,7 +548,7 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState
}
}
else {
- state->aAnimId2[i] = NUM_STD_ANIMS;
+ state->aAnimId2[i] = ANIM_STD_NUM;
state->aCurTime2[i] = 0;
state->aSpeed2[i] = 85;
state->aFunctionCallbackID2[i] = 0;
@@ -611,13 +611,13 @@ bool HasAnimGroupLoaded(uint8 group)
void CReplay::RetrievePedAnimation(CPed *ped, CStoredAnimationState *state)
{
CAnimBlendAssociation* anim1;
- if (state->animId <= 3)
+ if (state->animId <= ANIM_STD_IDLE)
anim1 = CAnimManager::BlendAnimation(
(RpClump*)ped->m_rwObject, ped->m_animGroup, (AnimationId)state->animId, 100.0f);
else if (HasAnimGroupLoaded(state->groupId))
anim1 = CAnimManager::BlendAnimation((RpClump*)ped->m_rwObject, (AssocGroupId)state->groupId, (AnimationId)state->animId, 100.0f);
else
- anim1 = CAnimManager::BlendAnimation((RpClump*)ped->m_rwObject, ASSOCGRP_STD, ANIM_WALK, 100.0f);
+ anim1 = CAnimManager::BlendAnimation((RpClump*)ped->m_rwObject, ASSOCGRP_STD, ANIM_STD_WALK, 100.0f);
anim1->SetCurrentTime(state->time * 4.0f / 255.0f);
anim1->speed = state->speed * 3.0f / 255.0f;
@@ -629,7 +629,7 @@ void CReplay::RetrievePedAnimation(CPed *ped, CStoredAnimationState *state)
float blend = state->blendAmount * 2.0f / 255.0f;
CAnimBlendAssociation* anim2 = CAnimManager::BlendAnimation(
(RpClump*)ped->m_rwObject,
- (state->secAnimId > 3) ? (AssocGroupId)state->secGroupId : ped->m_animGroup,
+ (state->secAnimId > ANIM_STD_IDLE) ? (AssocGroupId)state->secGroupId : ped->m_animGroup,
(AnimationId)state->secAnimId, 100.0f);
anim2->SetCurrentTime(time);
anim2->speed = speed;
@@ -641,7 +641,7 @@ void CReplay::RetrievePedAnimation(CPed *ped, CStoredAnimationState *state)
float time = state->partAnimTime * 4.0f / 255.0f;
float speed = state->partAnimSpeed * 3.0f / 255.0f;
float blend = state->partBlendAmount * 2.0f / 255.0f;
- if (blend > 0.0f && state->partAnimId != ANIM_IDLE_STANCE && HasAnimGroupLoaded(state->partGroupId)){
+ if (blend > 0.0f && state->partAnimId != ANIM_STD_IDLE && HasAnimGroupLoaded(state->partGroupId)){
CAnimBlendAssociation* anim3 = CAnimManager::BlendAnimation(
(RpClump*)ped->m_rwObject, (AssocGroupId)state->partGroupId, (AnimationId)state->partAnimId, 1000.0f);
anim3->SetCurrentTime(time);
@@ -659,10 +659,10 @@ void CReplay::RetrieveDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationSt
for (int i = 0; ((assoc = RpAnimBlendClumpGetMainPartialAssociation_N(ped->GetClump(), i))); i++)
assoc->SetBlend(0.0f, -1.0f);
for (int i = 0; i < NUM_MAIN_ANIMS_IN_REPLAY; i++) {
- if (state->aAnimId[i] == NUM_STD_ANIMS)
+ if (state->aAnimId[i] == ANIM_STD_NUM)
continue;
CAnimBlendAssociation* anim = CAnimManager::AddAnimation(ped->GetClump(),
- state->aAnimId[i] > 3 ? (AssocGroupId)state->aGroupId[i] : ped->m_animGroup,
+ state->aAnimId[i] > ANIM_STD_IDLE ? (AssocGroupId)state->aGroupId[i] : ped->m_animGroup,
(AnimationId)state->aAnimId[i]);
anim->SetCurrentTime(state->aCurTime[i] * 4.0f / 255.0f);
anim->speed = state->aSpeed[i] * 3.0f / 255.0f;
@@ -677,10 +677,10 @@ void CReplay::RetrieveDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationSt
anim->SetDeleteCallback(FindCBFunction(callback & 0x7F), ped);
}
for (int i = 0; i < NUM_PARTIAL_ANIMS_IN_REPLAY; i++) {
- if (state->aAnimId2[i] == NUM_STD_ANIMS)
+ if (state->aAnimId2[i] == ANIM_STD_NUM)
continue;
CAnimBlendAssociation* anim = CAnimManager::AddAnimation(ped->GetClump(),
- state->aAnimId2[i] > 3 ? (AssocGroupId)state->aGroupId2[i] : ped->m_animGroup,
+ state->aAnimId2[i] > ANIM_STD_IDLE ? (AssocGroupId)state->aGroupId2[i] : ped->m_animGroup,
(AnimationId)state->aAnimId2[i]);
anim->SetCurrentTime(state->aCurTime2[i] * 4.0f / 255.0f);
anim->speed = state->aSpeed2[i] * 3.0f / 255.0f;
@@ -1463,7 +1463,7 @@ void CReplay::RestoreStuffFromMem(void)
ped->SetModelIndex(mi);
ped->m_pVehicleAnim = nil;
ped->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, ped);
- DMAudio.SetEntityStatus(ped->m_audioEntityId, true);
+ DMAudio.SetEntityStatus(ped->m_audioEntityId, TRUE);
CPopulation::UpdatePedCount((ePedType)ped->m_nPedType, false);
for (int j = 0; j < TOTAL_WEAPON_SLOTS; j++) {
int mi1 = CWeaponInfo::GetWeaponInfo(ped->m_weapons[j].m_eWeaponType)->m_nModelId;
@@ -1529,7 +1529,7 @@ void CReplay::RestoreStuffFromMem(void)
car->SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT, true);
}
vehicle->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, vehicle);
- DMAudio.SetEntityStatus(vehicle->m_audioEntityId, true);
+ DMAudio.SetEntityStatus(vehicle->m_audioEntityId, TRUE);
CCarCtrl::UpdateCarCount(vehicle, false);
if ((mi == MI_AIRTRAIN || mi == MI_DEADDODO) && vehicle->m_rwObject){
CVehicleModelInfo* info = (CVehicleModelInfo*)CModelInfo::GetModelInfo(mi);
diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp
index 4f714e80..46eee71f 100644
--- a/src/control/RoadBlocks.cpp
+++ b/src/control/RoadBlocks.cpp
@@ -64,7 +64,7 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType
float fRadius = pVehicle->GetBoundRadius() / pPoliceColModel->boundingSphere.radius;
for (int32 i = 0; i < 2; i++) {
const int32 roadBlockIndex = i + 2 * roadBlockType;
- CVector posForZ = pVehicle->m_matrix * (fRadius * vecRoadBlockOffets[roadBlockIndex]);
+ CVector posForZ = pVehicle->GetMatrix() * (fRadius * vecRoadBlockOffets[roadBlockIndex]);
int32 modelInfoId = MI_COP;
eCopType copType = COP_STREET;
switch (pVehicle->GetModelIndex())
@@ -239,10 +239,10 @@ CRoadBlocks::CreateRoadBlockBetween2Points(CVector point1, CVector point2)
pVehicle->SetStatus(STATUS_ABANDONED);
// pVehicle->GetHeightAboveRoad(); // called but return value is ignored?
tmp.GetPosition().z += fModelRadius - 0.6f;
- pVehicle->m_matrix = tmp;
+ pVehicle->SetMatrix(tmp);
pVehicle->PlaceOnRoadProperly();
pVehicle->SetIsStatic(false);
- pVehicle->m_matrix.UpdateRW();
+ pVehicle->GetMatrix().UpdateRW();
pVehicle->m_nDoorLock = CARLOCK_UNLOCKED;
CCarCtrl::JoinCarWithRoadSystem(pVehicle);
pVehicle->bIsLocked = false;
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 609827ca..89877452 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -2104,7 +2104,7 @@ void CMissionCleanup::Process()
CWorld::Players[0].m_bDriveByAllowed = true;
CPad::GetPad(0)->unk_B4 = 1.0f;
CPad::GetPad(0)->unk_B8 = 0.5f;
- DMAudio.ShutUpPlayerTalking(0);
+ DMAudio.ShutUpPlayerTalking(FALSE);
CVehicle::bDisableRemoteDetonation = false;
CVehicle::bDisableRemoteDetonationOnContact = false;
CTheScripts::RiotIntensity = 0;
@@ -5165,7 +5165,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
pPlayer->m_pPed->m_pVehicleAnim->blendDelta = -1000.0f;
pPlayer->m_pPed->m_pVehicleAnim = nil;
pPlayer->m_pPed->SetMoveState(PEDMOVE_NONE);
- CAnimManager::BlendAnimation(pPlayer->m_pPed->GetClump(), pPlayer->m_pPed->m_animGroup, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(pPlayer->m_pPed->GetClump(), pPlayer->m_pPed->m_animGroup, ANIM_STD_IDLE, 1000.0f);
pPlayer->m_pPed->RestartNonPartialAnims();
AudioManager.PlayerJustLeftCar();
pos.z += pPlayer->m_pPed->GetDistanceFromCentreOfMassToBaseOfModel();
diff --git a/src/control/Script10.cpp b/src/control/Script10.cpp
index ac3961a7..c619a9dd 100644
--- a/src/control/Script10.cpp
+++ b/src/control/Script10.cpp
@@ -278,7 +278,7 @@ int8 CRunningScript::ProcessCommands1600To1699(int32 command)
CollectParameters(&m_nIp, 3);
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
if (pPed)
- pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) >= 0 ? (void*)GET_INTEGER_PARAM(0) : nil); // + true
+ pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2) >= 0 ? (void*)GET_INTEGER_PARAM(2) : nil, true);
return 0;
}
case COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO:
diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp
index e4c71403..6f6e89cc 100644
--- a/src/control/Script2.cpp
+++ b/src/control/Script2.cpp
@@ -467,8 +467,8 @@ int8 CRunningScript::ProcessCommands300To399(int32 command)
float length = GET_FLOAT_PARAM(5);
float x, y;
if (angle != 0.0f){
- y = cos(angle) * length;
- x = sin(angle) * length;
+ y = Cos(angle) * length;
+ x = Sin(angle) * length;
}else{
y = length;
x = 0.0f;
diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp
index d1dba350..33042bac 100644
--- a/src/control/Script4.cpp
+++ b/src/control/Script4.cpp
@@ -817,7 +817,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
}
}
pPed->m_pMyVehicle->m_nGettingOutFlags &= ~flags;
- pPed->m_pMyVehicle->ProcessOpenDoor(pPed->m_vehDoor, NUM_STD_ANIMS, 0.0f);
+ pPed->m_pMyVehicle->ProcessOpenDoor(pPed->m_vehDoor, ANIM_STD_NUM, 0.0f);
}
}
}
@@ -834,7 +834,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
pPed->m_pVehicleAnim = nil;
pPed->RestartNonPartialAnims();
pPed->SetMoveState(PEDMOVE_NONE);
- CAnimManager::BlendAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_STD_IDLE, 1000.0f);
pos.z += pPed->GetDistanceFromCentreOfMassToBaseOfModel();
pPed->Teleport(pos);
CTheScripts::ClearSpaceForMissionEntity(pos, pPed);
@@ -1396,7 +1396,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
{
CollectParameters(&m_nIp, 1);
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
- DMAudio.PlayFrontEndTrack(GET_INTEGER_PARAM(0) + STREAMED_SOUND_MISSION_COMPLETED - 1, 0);
+ DMAudio.PlayFrontEndTrack(GET_INTEGER_PARAM(0) + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE);
//DMAudio.SaveAnnouncementsWhenMissionPassedPlayed(); // TODO!
return 0;
}
@@ -2012,8 +2012,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_HAS_MISSION_AUDIO_LOADED:
{
CollectParameters(&m_nIp, 1);
- //UpdateCompareFlag(DMAudio.GetMissionAudioLoadingStatus(GET_INTEGER_PARAM(0) - 1) == 1);
- UpdateCompareFlag(true); // TODO
+ UpdateCompareFlag(DMAudio.GetMissionAudioLoadingStatus(GET_INTEGER_PARAM(0) - 1) == 1);
return 0;
}
case COMMAND_PLAY_MISSION_AUDIO:
@@ -2023,8 +2022,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
case COMMAND_HAS_MISSION_AUDIO_FINISHED:
{
CollectParameters(&m_nIp, 1);
- //UpdateCompareFlag(DMAudio.IsMissionAudioSampleFinished(GET_INTEGER_PARAM(0) - 1)); // TODO
- UpdateCompareFlag(true);
+ UpdateCompareFlag(DMAudio.IsMissionAudioSampleFinished(GET_INTEGER_PARAM(0) - 1));
return 0;
}
case COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING:
diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp
index 502bc005..d9991388 100644
--- a/src/control/Script5.cpp
+++ b/src/control/Script5.cpp
@@ -1002,10 +1002,10 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp)
initAngle -= TWOPI;
// it looks like the idea is to use a rectangle using the diagonal of the rectangle as
// the side of new rectangle, with "length" being the length of second side
- float rotatedSupX = supX + side2length * sin(initAngle);
- float rotatedSupY = supY - side2length * cos(initAngle);
- float rotatedInfX = infX + side2length * sin(initAngle);
- float rotatedInfY = infY - side2length * cos(initAngle);
+ float rotatedSupX = supX + side2length * Sin(initAngle);
+ float rotatedSupY = supY - side2length * Cos(initAngle);
+ float rotatedInfX = infX + side2length * Sin(initAngle);
+ float rotatedInfY = infY - side2length * Cos(initAngle);
float side1X = supX - infX;
float side1Y = supY - infY;
float side1Length = CVector2D(side1X, side1Y).Magnitude();
@@ -2674,10 +2674,10 @@ bool CTheScripts::IsPlayerStopped(CPlayerInfo* pPlayer)
CPed* pPed = pPlayer->m_pPed;
if (pPed->InVehicle())
return IsVehicleStopped(pPed->m_pMyVehicle);
- if (RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_RUN_STOP) ||
- RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_RUN_STOP_R) ||
- RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_JUMP_LAUNCH) ||
- RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_JUMP_GLIDE))
+ if (RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_RUNSTOP1) ||
+ RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_RUNSTOP2) ||
+ RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_JUMP_LAUNCH) ||
+ RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_JUMP_GLIDE))
return false;
return (pPed->m_nMoveState == PEDMOVE_NONE || pPed->m_nMoveState == PEDMOVE_STILL) &&
!pPed->bIsInTheAir && !pPed->bIsLanding && pPed->bIsStanding && pPed->m_vecAnimMoveDelta.x == 0.0f && pPed->m_vecAnimMoveDelta.y == 0.0f;
diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp
index 6dd6e281..de389a13 100644
--- a/src/control/Script7.cpp
+++ b/src/control/Script7.cpp
@@ -452,12 +452,12 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
if (GET_INTEGER_PARAM(1)) {
- pPed->bIsDucking = true;
+ pPed->bCrouchWhenShooting = true;
pPed->SetDuck(GET_INTEGER_PARAM(2), true);
}
else {
pPed->ClearDuck(true);
- pPed->bIsDucking = false;
+ pPed->bCrouchWhenShooting = false;
}
return 0;
}
@@ -771,7 +771,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
CHud::SetHelpMessage(text, false, true); // + true
if (text != CHud::gLastPrintForeverString) {
CHud::gLastPrintForeverString = text;
- DMAudio.PlayFrontEndSound(SOUND_HUD_SOUND, 0);
+ DMAudio.PlayFrontEndSound(SOUND_HUD, 0);
}
return 0;
}
diff --git a/src/control/Script8.cpp b/src/control/Script8.cpp
index 8a1612fb..38c28069 100644
--- a/src/control/Script8.cpp
+++ b/src/control/Script8.cpp
@@ -53,7 +53,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
((CPlayerPed*)pPed)->m_fMoveSpeed = 0.0f;
else
pPed->m_nStoredMoveState = PEDMOVE_STILL;
- CAnimManager::AddAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_IDLE_STANCE);
+ CAnimManager::AddAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_STD_IDLE);
pPed->bIsPedDieAnimPlaying = false;
}
return 0;
@@ -346,7 +346,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
CollectParameters(&m_nIp, 1);
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
script_assert(pPed);
- UpdateCompareFlag(RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_DUCK_DOWN) != nil);
+ UpdateCompareFlag(RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_DUCK_DOWN) != nil);
return 0;
}
case COMMAND_CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI:
@@ -386,7 +386,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
}
case COMMAND_IS_JAPANESE_GAME:
#ifdef MORE_LANGUAGES
- UpdateCompareFlag(FrontEndMenuManager.m_PrefsLanguage == LANGUAGE_JAPANESE);
+ UpdateCompareFlag(FrontEndMenuManager.m_PrefsLanguage == CMenuManager::LANGUAGE_JAPANESE);
#elif (defined GTAVC_JP_PATCH)
UpdateCompareFlag(true);
#else
diff --git a/src/control/Script9.cpp b/src/control/Script9.cpp
index b55a1df5..579626f3 100644
--- a/src/control/Script9.cpp
+++ b/src/control/Script9.cpp
@@ -453,8 +453,8 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
CollectParameters(&m_nIp, 1);
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
assert(pVehicle);
- pVehicle->ProcessOpenDoor(CAR_DOOR_RR, ANIM_VAN_OPEN, 1.0f);
- pVehicle->ProcessOpenDoor(CAR_DOOR_LR, ANIM_VAN_OPEN_L, 1.0f);
+ pVehicle->ProcessOpenDoor(CAR_DOOR_RR, ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, 1.0f);
+ pVehicle->ProcessOpenDoor(CAR_DOOR_LR, ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, 1.0f);
return 0;
}
case COMMAND_GET_CHAR_THREAT_CHAR:
@@ -568,11 +568,11 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
}
case COMMAND_LOAD_NON_STANDARD_PED_ANIM:
CollectParameters(&m_nIp, 1);
- // CPed::LoadNonStandardPedAnim(GET_INTEGER_PARAM(0));
+ CPed::LoadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
return 0;
case COMMAND_UNLOAD_NON_STANDARD_PED_ANIM:
CollectParameters(&m_nIp, 1);
- // CPed::UnloadNonStandardPedAnim(SET_INTEGER_PARAM(0));
+ CPed::UnloadNonStandardPedAnim((eWaitState)GET_INTEGER_PARAM(0));
return 0;
case COMMAND_1566:
CollectParameters(&m_nIp, 1);
diff --git a/src/control/SetPieces.cpp b/src/control/SetPieces.cpp
index 143115b8..0409a8bf 100644
--- a/src/control/SetPieces.cpp
+++ b/src/control/SetPieces.cpp
@@ -260,8 +260,8 @@ void CSetPiece::Update(void)
CCarAI::AddPoliceCarOccupants(pVehicle1);
CVehicle* pVehicle2 = TryToGenerateCopCar(m_vSpawn2, m_vTarget2);
if (!pVehicle2) {
- CWorld::Remove(pVehicle2);
- delete pVehicle2;
+ CWorld::Remove(pVehicle1);
+ delete pVehicle1;
return;
}
pVehicle2->SetStatus(STATUS_PHYSICS);
diff --git a/src/core/AnimViewer.cpp b/src/core/AnimViewer.cpp
index 1a7facc1..dc9b44cb 100644
--- a/src/core/AnimViewer.cpp
+++ b/src/core/AnimViewer.cpp
@@ -245,7 +245,7 @@ CAnimViewer::Update(void)
if (modelInfo->GetModelType() == MITYPE_PED) {
int animGroup = ((CPedModelInfo*)modelInfo)->m_animGroup;
- if (animId > ANIM_IDLE_STANCE)
+ if (animId > ANIM_STD_IDLE)
animGroup = ASSOCGRP_STD;
if (reloadIFP) {
@@ -334,14 +334,14 @@ CAnimViewer::Update(void)
CMessages::AddMessage(gUString, 1000, 0);
} else if (pad->GetCircleJustDown()) {
- PlayAnimation(pTarget->GetClump(), animGroup, ANIM_IDLE_STANCE);
+ PlayAnimation(pTarget->GetClump(), animGroup, ANIM_STD_IDLE);
AsciiToUnicode("Idle animation playing", gUString);
CMessages::AddMessage(gUString, 1000, 0);
} else if (pad->GetDPadUpJustDown()) {
animId--;
if (animId < 0) {
- animId = NUM_STD_ANIMS - 1;
+ animId = ANIM_STD_NUM - 1;
}
PlayAnimation(pTarget->GetClump(), animGroup, (AnimationId)animId);
@@ -350,7 +350,7 @@ CAnimViewer::Update(void)
CMessages::AddMessage(gUString, 1000, 0);
} else if (pad->GetDPadDownJustDown()) {
- animId = (animId == (NUM_STD_ANIMS - 1) ? 0 : animId + 1);
+ animId = (animId == (ANIM_STD_NUM - 1) ? 0 : animId + 1);
PlayAnimation(pTarget->GetClump(), animGroup, (AnimationId)animId);
sprintf(gString, "Current anim: %d", animId);
diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp
index 4895ef6e..56409af4 100644
--- a/src/core/Cam.cpp
+++ b/src/core/Cam.cpp
@@ -4956,9 +4956,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
AlphaSpeed = 0.0;
Distance = 1000.0;
- Front.x = -(cos(Beta) * cos(Alpha));
- Front.y = -(sin(Beta) * cos(Alpha));
- Front.z = sin(Alpha);
+ Front.x = -(Cos(Beta) * Cos(Alpha));
+ Front.y = -(Sin(Beta) * Cos(Alpha));
+ Front.z = Sin(Alpha);
m_aTargetHistoryPosOne = TargetCoors - nextDistance * Front;
@@ -5232,9 +5232,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
lastBeta = Beta;
- Front.x = -(cos(Beta) * cos(Alpha));
- Front.y = -(sin(Beta) * cos(Alpha));
- Front.z = sin(Alpha);
+ Front.x = -(Cos(Beta) * Cos(Alpha));
+ Front.y = -(Sin(Beta) * Cos(Alpha));
+ Front.z = Sin(Alpha);
GetVectorsReadyForRW();
TheCamera.m_bCamDirectlyBehind = false;
TheCamera.m_bCamDirectlyInFront = false;
@@ -5244,9 +5244,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
m_cvecTargetCoorsForFudgeInter = TargetCoors;
m_aTargetHistoryPosThree = m_aTargetHistoryPosOne;
float nextAlpha = alphaWithSpeedAccounted + zoomModeAlphaOffset;
- float nextFrontX = -(cos(Beta) * cos(nextAlpha));
- float nextFrontY = -(sin(Beta) * cos(nextAlpha));
- float nextFrontZ = sin(nextAlpha);
+ float nextFrontX = -(Cos(Beta) * Cos(nextAlpha));
+ float nextFrontY = -(Sin(Beta) * Cos(nextAlpha));
+ float nextFrontZ = Sin(nextAlpha);
m_aTargetHistoryPosOne.x = TargetCoors.x - nextFrontX * nextDistance;
m_aTargetHistoryPosOne.y = TargetCoors.y - nextFrontY * nextDistance;
@@ -5399,7 +5399,7 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation,
float alphaToFace = Atan2(hi.z, hi.Magnitude2D()) + DEGTORAD(15.0f);
float neededAlphaTurn = alphaToFace - carGunUD;
- float alphaTurnPerFrame = CTimer::GetTimeStep() * 0.02f;
+ float alphaTurnPerFrame = CTimer::GetTimeStepInSeconds();
if (neededAlphaTurn > alphaTurnPerFrame) {
neededTurn = alphaTurnPerFrame;
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp
index f9f4a88f..987efe04 100644
--- a/src/core/Camera.cpp
+++ b/src/core/Camera.cpp
@@ -214,7 +214,7 @@ CCamera::Init(void)
m_iModeToGoTo = CCam::MODE_FOLLOWPED;
m_bJust_Switched = false;
m_bUseTransitionBeta = false;
- m_matrix.SetScale(1.0f);
+ GetMatrix().SetScale(1.0f);
m_bTargetJustBeenOnTrain = false;
m_bInitialNoNodeStaticsSet = false;
m_uiLongestTimeInMill = 5000;
@@ -1769,7 +1769,7 @@ CCamera::CamControl(void)
(m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) &&
!m_WideScreenOn &&
(WhoIsInControlOfTheCamera != CAMCONTROL_OBBE || bSwitchedToObbeCam))
- DMAudio.PlayFrontEndSound(SOUND_HUD_SOUND, 0);
+ DMAudio.PlayFrontEndSound(SOUND_HUD, 0);
}
// What a mess!
@@ -4019,7 +4019,7 @@ CCamera::SetRwCamera(RwCamera *cam)
void
CCamera::CalculateDerivedValues(void)
{
- m_cameraMatrix = Invert(m_matrix);
+ m_cameraMatrix = Invert(GetMatrix());
float hfov = DEGTORAD(CDraw::GetScaledFOV()/2.0f);
float c = Cos(hfov);
@@ -4103,16 +4103,11 @@ CCamera::IsSphereVisible(const CVector &center, float radius, const CMatrix *mat
bool
CCamera::IsSphereVisible(const CVector &center, float radius)
{
- CMatrix mat = m_cameraMatrix;
- return IsSphereVisible(center, radius, &mat);
+ return IsSphereVisible(center, radius, &GetCameraMatrix());
}
bool
-#ifdef GTA_PS2
-CCamera::IsBoxVisible(CVuVector *box, const CMatrix *mat)
-#else
-CCamera::IsBoxVisible(CVector *box, const CMatrix *mat)
-#endif
+CCamera::IsBoxVisible(CVUVECTOR *box, const CMatrix *mat)
{
int i;
int frustumTests[6] = { 0 };
diff --git a/src/core/Camera.h b/src/core/Camera.h
index 9354e8ed..66a89f21 100644
--- a/src/core/Camera.h
+++ b/src/core/Camera.h
@@ -634,11 +634,7 @@ public:
bool IsPointVisible(const CVector &center, const CMatrix *mat);
bool IsSphereVisible(const CVector &center, float radius, const CMatrix *mat);
bool IsSphereVisible(const CVector &center, float radius);
-#ifdef GTA_PS2
- bool IsBoxVisible(CVuVector *box, const CMatrix *mat);
-#else
- bool IsBoxVisible(CVector *box, const CMatrix *mat);
-#endif
+ bool IsBoxVisible(CVUVECTOR *box, const CMatrix *mat);
};
VALIDATE_SIZE(CCamera, 0xE9D8);
diff --git a/src/core/CdStream.cpp b/src/core/CdStream.cpp
index da85a238..977f16c2 100644
--- a/src/core/CdStream.cpp
+++ b/src/core/CdStream.cpp
@@ -14,9 +14,9 @@ struct CdReadInfo
void *pBuffer;
char field_C;
bool bLocked;
- bool bInUse;
+ bool bReading;
int32 nStatus;
- HANDLE hSemaphore; // used for CdStreamSync
+ HANDLE pDoneSemaphore; // used for CdStreamSync
HANDLE hFile;
OVERLAPPED Overlapped;
};
@@ -53,9 +53,9 @@ CdStreamInitThread(void)
{
for ( int32 i = 0; i < gNumChannels; i++ )
{
- gpReadInfo[i].hSemaphore = CreateSemaphore(nil, 0, 2, nil);
+ gpReadInfo[i].pDoneSemaphore = CreateSemaphore(nil, 0, 2, nil);
- if ( gpReadInfo[i].hSemaphore == nil )
+ if ( gpReadInfo[i].pDoneSemaphore == nil )
{
printf("%s: failed to create sync semaphore\n", "cdvd_stream");
ASSERT(0);
@@ -183,7 +183,7 @@ CdStreamShutdown(void)
CloseHandle(_gCdStreamThread);
for ( int32 i = 0; i < gNumChannels; i++ )
- CloseHandle(gpReadInfo[i].hSemaphore);
+ CloseHandle(gpReadInfo[i].pDoneSemaphore);
}
LocalFree(gpReadInfo);
@@ -213,7 +213,7 @@ CdStreamRead(int32 channel, void *buffer, uint32 offset, uint32 size)
if ( _gbCdStreamAsync )
{
- if ( pChannel->nSectorsToRead != 0 || pChannel->bInUse )
+ if ( pChannel->nSectorsToRead != 0 || pChannel->bReading )
return STREAM_NONE;
pChannel->nStatus = STREAM_NONE;
@@ -271,7 +271,7 @@ CdStreamGetStatus(int32 channel)
if ( _gbCdStreamAsync )
{
- if ( pChannel->bInUse )
+ if ( pChannel->bReading )
return STREAM_READING;
if ( pChannel->nSectorsToRead != 0 )
@@ -321,12 +321,21 @@ CdStreamSync(int32 channel)
{
pChannel->bLocked = true;
- ASSERT( pChannel->hSemaphore != nil );
+ ASSERT( pChannel->pDoneSemaphore != nil );
- WaitForSingleObject(pChannel->hSemaphore, INFINITE);
+ // Deadlock fix 1
+#ifdef FIX_BUGS
+ // This is while loop on Posix streamer, for spurious wakeups
+ if (pChannel->bLocked && pChannel->nSectorsToRead != 0){
+ WaitForSingleObject(pChannel->pDoneSemaphore, INFINITE);
+ }
+ pChannel->bLocked = false;
+#else
+ WaitForSingleObject(pChannel->pDoneSemaphore, INFINITE);
+#endif
}
- pChannel->bInUse = false;
+ pChannel->bReading = false;
return pChannel->nStatus;
}
@@ -398,7 +407,7 @@ WINAPI CdStreamThread(LPVOID lpThreadParameter)
CdReadInfo *pChannel = &gpReadInfo[channel];
ASSERT( pChannel != nil );
- pChannel->bInUse = true;
+ pChannel->bReading = true;
if ( pChannel->nStatus == STREAM_NONE )
{
@@ -455,11 +464,15 @@ WINAPI CdStreamThread(LPVOID lpThreadParameter)
if ( pChannel->bLocked )
{
- ASSERT( pChannel->hSemaphore != nil );
- ReleaseSemaphore(pChannel->hSemaphore, 1, NULL);
+ ASSERT( pChannel->pDoneSemaphore != nil );
+ // Deadlock fix 2
+#ifdef FIX_BUGS
+ pChannel->bLocked = 0;
+#endif
+ ReleaseSemaphore(pChannel->pDoneSemaphore, 1, NULL);
}
- pChannel->bInUse = false;
+ pChannel->bReading = false;
}
}
diff --git a/src/core/CdStream.h b/src/core/CdStream.h
index d0f9a855..516cef48 100644
--- a/src/core/CdStream.h
+++ b/src/core/CdStream.h
@@ -43,6 +43,6 @@ char *CdStreamGetImageName(int32 cd);
void CdStreamRemoveImages(void);
int32 CdStreamGetNumImages(void);
-#ifndef _WIN32
+#ifdef FLUSHABLE_STREAMING
extern bool flushStream[MAX_CDCHANNELS];
#endif
diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp
index 0854d850..30fe06a0 100644
--- a/src/core/CdStreamPosix.cpp
+++ b/src/core/CdStreamPosix.cpp
@@ -1,8 +1,8 @@
#ifndef _WIN32
#include "common.h"
#include "crossplatform.h"
-#include <pthread.h>
#include <signal.h>
+#include <pthread.h>
#include <semaphore.h>
#include <sys/types.h>
#include <unistd.h>
@@ -12,7 +12,11 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/resource.h>
+#include <stdarg.h>
+
+#ifdef __linux__
#include <sys/syscall.h>
+#endif
#include "CdStream.h"
#include "rwcore.h"
@@ -21,9 +25,61 @@
#define CDDEBUG(f, ...) debug ("%s: " f "\n", "cdvd_stream", ## __VA_ARGS__)
#define CDTRACE(f, ...) printf("%s: " f "\n", "cdvd_stream", ## __VA_ARGS__)
-// #define ONE_THREAD_PER_CHANNEL // Don't use if you're not on SSD/Flash. (Also you may want to benefit from this via using all channels in Streaming.cpp)
-
+#ifdef FLUSHABLE_STREAMING
bool flushStream[MAX_CDCHANNELS];
+#endif
+
+#ifdef USE_UNNAMED_SEM
+
+#define RE3_SEM_OPEN(name, ...) re3_sem_open()
+sem_t*
+re3_sem_open(void)
+{
+ sem_t* sem = (sem_t*)malloc(sizeof(sem_t));
+ if (sem_init(sem, 0, 1) == -1) {
+ sem = SEM_FAILED;
+ }
+
+ return sem;
+}
+
+#define RE3_SEM_CLOSE(sem, format, ...) re3_sem_close(sem)
+void
+re3_sem_close(sem_t* sem)
+{
+ sem_destroy(sem);
+ free(sem);
+}
+
+#else
+
+#define RE3_SEM_OPEN re3_sem_open
+sem_t*
+re3_sem_open(const char* format, ...)
+{
+ char semName[21];
+ va_list va;
+ va_start(va, format);
+ vsprintf(semName, format, va);
+
+ return sem_open(semName, O_CREAT, 0644, 1);
+}
+
+#define RE3_SEM_CLOSE re3_sem_close
+void
+re3_sem_close(sem_t* sem, const char* format, ...)
+{
+ sem_close(sem);
+
+ char semName[21];
+ va_list va;
+ va_start(va, format);
+ vsprintf(semName, format, va);
+
+ sem_unlink(semName);
+}
+
+#endif
struct CdReadInfo
{
@@ -69,14 +125,13 @@ void
CdStreamInitThread(void)
{
int status;
- char semName[20];
#ifndef ONE_THREAD_PER_CHANNEL
gChannelRequestQ.items = (int32 *)calloc(gNumChannels + 1, sizeof(int32));
gChannelRequestQ.head = 0;
gChannelRequestQ.tail = 0;
gChannelRequestQ.size = gNumChannels + 1;
ASSERT(gChannelRequestQ.items != nil );
- gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 1);
+ gCdStreamSema = RE3_SEM_OPEN("/semaphore_cd_stream");
if (gCdStreamSema == SEM_FAILED) {
@@ -90,8 +145,7 @@ CdStreamInitThread(void)
{
for ( int32 i = 0; i < gNumChannels; i++ )
{
- sprintf(semName,"/semaphore_done%d",i);
- gpReadInfo[i].pDoneSemaphore = sem_open(semName, O_CREAT, 0644, 1);
+ gpReadInfo[i].pDoneSemaphore = RE3_SEM_OPEN("/semaphore_done%d", i);
if (gpReadInfo[i].pDoneSemaphore == SEM_FAILED)
{
@@ -99,9 +153,9 @@ CdStreamInitThread(void)
ASSERT(0);
return;
}
+
#ifdef ONE_THREAD_PER_CHANNEL
- sprintf(semName,"/semaphore_start%d",i);
- gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 1);
+ gpReadInfo[i].pStartSemaphore = RE3_SEM_OPEN("/semaphore_start%d", i);
if (gpReadInfo[i].pStartSemaphore == SEM_FAILED)
{
@@ -170,6 +224,7 @@ CdStreamInit(int32 numChannels)
gNumImages = 0;
gNumChannels = numChannels;
+ ASSERT( gNumChannels != 0 );
gpReadInfo = (CdReadInfo *)calloc(numChannels, sizeof(CdReadInfo));
ASSERT( gpReadInfo != nil );
@@ -245,10 +300,12 @@ CdStreamRead(int32 channel, void *buffer, uint32 offset, uint32 size)
if ( pChannel->nSectorsToRead != 0 || pChannel->bReading ) {
if (pChannel->hFile == hImage - 1 && pChannel->nSectorOffset == _GET_OFFSET(offset) && pChannel->nSectorsToRead >= size)
return STREAM_SUCCESS;
-
+#ifdef FLUSHABLE_STREAMING
flushStream[channel] = 1;
CdStreamSync(channel);
- //return STREAM_NONE;
+#else
+ return STREAM_NONE;
+#endif
}
pChannel->hFile = hImage - 1;
@@ -316,34 +373,34 @@ CdStreamSync(int32 channel)
CdReadInfo *pChannel = &gpReadInfo[channel];
ASSERT( pChannel != nil );
+#ifdef FLUSHABLE_STREAMING
if (flushStream[channel]) {
-#ifdef ONE_THREAD_PER_CHANNEL
pChannel->nSectorsToRead = 0;
+#ifdef ONE_THREAD_PER_CHANNEL
pthread_kill(pChannel->pChannelThread, SIGUSR1);
if (pChannel->bReading) {
pChannel->bLocked = true;
- while (pChannel->bLocked)
- sem_wait(pChannel->pDoneSemaphore);
- }
#else
- pChannel->nSectorsToRead = 0;
if (pChannel->bReading) {
pChannel->bLocked = true;
pthread_kill(_gCdStreamThread, SIGUSR1);
+#endif
while (pChannel->bLocked)
sem_wait(pChannel->pDoneSemaphore);
}
-#endif
pChannel->bReading = false;
flushStream[channel] = false;
return STREAM_NONE;
}
+#endif
if ( pChannel->nSectorsToRead != 0 )
{
pChannel->bLocked = true;
- while (pChannel->bLocked)
+ while (pChannel->bLocked && pChannel->nSectorsToRead != 0){
sem_wait(pChannel->pDoneSemaphore);
+ }
+ pChannel->bLocked = false;
}
pChannel->bReading = false;
@@ -395,7 +452,12 @@ void *CdStreamThread(void *param)
#ifndef ONE_THREAD_PER_CHANNEL
while (gCdStreamThreadStatus != 2) {
sem_wait(gCdStreamSema);
+
int32 channel = GetFirstInQueue(&gChannelRequestQ);
+
+ // spurious wakeup
+ if (channel == -1)
+ continue;
#else
int channel = *((int*)param);
while (gpReadInfo[channel].nThreadStatus != 2){
@@ -447,7 +509,7 @@ void *CdStreamThread(void *param)
if ( pChannel->bLocked )
{
pChannel->bLocked = 0;
- sem_post(pChannel->pDoneSemaphore);
+ sem_post(pChannel->pDoneSemaphore);
}
pChannel->bReading = false;
}
@@ -455,21 +517,14 @@ void *CdStreamThread(void *param)
#ifndef ONE_THREAD_PER_CHANNEL
for ( int32 i = 0; i < gNumChannels; i++ )
{
- sem_close(gpReadInfo[i].pDoneSemaphore);
- sprintf(semName,"/semaphore_done%d",i);
- sem_unlink(semName);
+ RE3_SEM_CLOSE(gpReadInfo[i].pDoneSemaphore, "/semaphore_done%d", i);
}
- sem_close(gCdStreamSema);
- sem_unlink("/semaphore_cd_stream");
+ RE3_SEM_CLOSE(gCdStreamSema, "/semaphore_cd_stream");
free(gChannelRequestQ.items);
#else
- sem_close(gpReadInfo[channel].pStartSemaphore);
- sprintf(semName,"/semaphore_start%d",channel);
- sem_unlink(semName);
+ RE3_SEM_CLOSE(gpReadInfo[channel].pStartSemaphore, "/semaphore_start%d", channel);
- sem_close(gpReadInfo[channel].pDoneSemaphore);
- sprintf(semName,"/semaphore_done%d",channel);
- sem_unlink(semName);
+ RE3_SEM_CLOSE(gpReadInfo[channel].pDoneSemaphore, "/semaphore_done%d", channel);
#endif
if (gpReadInfo)
free(gpReadInfo);
@@ -524,7 +579,9 @@ void
CdStreamRemoveImages(void)
{
for ( int32 i = 0; i < gNumChannels; i++ ) {
+#ifdef FLUSHABLE_STREAMING
flushStream[i] = 1;
+#endif
CdStreamSync(i);
}
diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp
index 23e86a79..72d31137 100644
--- a/src/core/ControllerConfig.cpp
+++ b/src/core/ControllerConfig.cpp
@@ -131,6 +131,9 @@ void CControllerConfigManager::LoadSettings(int32 file)
{
bool bValid = true;
int nVersion = 0;
+#ifdef BIND_VEHICLE_FIREWEAPON
+ bool skipVehicleFireWeapon = false;
+#endif
if (file)
{
@@ -148,11 +151,26 @@ void CControllerConfigManager::LoadSettings(int32 file)
if (bValid && nVersion >= 3)
{
ControlsManager.MakeControllerActionsBlank();
+#ifdef BIND_VEHICLE_FIREWEAPON
+ skipVehicleFireWeapon = nVersion < 4;
+ // Set the default settings of VEHICLE_FIREWEAPON
+ if (skipVehicleFireWeapon) {
+ SetControllerKeyAssociatedWithAction(VEHICLE_FIREWEAPON, rsPADINS, KEYBOARD);
+ SetControllerKeyAssociatedWithAction(VEHICLE_FIREWEAPON, rsLCTRL, OPTIONAL_EXTRA);
+ if (m_bMouseAssociated)
+ SetMouseButtonAssociatedWithAction(VEHICLE_FIREWEAPON, 1);
+ }
+#endif
for (int32 i = 0; i < MAX_CONTROLLERTYPES; i++)
{
for (int32 j = 0; j < MAX_CONTROLLERACTIONS; j++)
{
+#ifdef BIND_VEHICLE_FIREWEAPON
+ // Skip file read
+ if (skipVehicleFireWeapon && j == VEHICLE_FIREWEAPON)
+ continue;
+#endif
CFileMgr::Read(file, (char *)&ControlsManager.m_aSettings[j][i], sizeof(tControllerConfigBind));
}
}
@@ -326,6 +344,11 @@ uint32 CControllerConfigManager::ms_padButtonsInited = 0;
void CControllerConfigManager::InitDefaultControlConfigJoyPad(uint32 buttons)
{
+#ifdef XINPUT
+ // No manual bindings for you, honey.
+ return;
+#endif
+
m_bFirstCapture = true;
uint32 btn = buttons;
@@ -1765,6 +1788,51 @@ void CControllerConfigManager::DeleteMatching1rstPersonControls(e_ControllerActi
#undef CLEAR_ACTION_IF_NEEDED
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+#define CHECK_ACTION(action) \
+if (key == GetControllerKeyAssociatedWithAction(action, type))\
+ return true;
+
+bool CControllerConfigManager::IsAnyVehicleActionAssignedToMouseKey(int32 key)
+{
+ const eControllerType type = MOUSE;
+ if (!GetIsKeyBlank(key, type))
+ {
+#ifdef BIND_VEHICLE_FIREWEAPON
+ CHECK_ACTION(VEHICLE_FIREWEAPON);
+#endif
+ CHECK_ACTION(VEHICLE_LOOKBEHIND);
+ CHECK_ACTION(VEHICLE_LOOKLEFT);
+ CHECK_ACTION(VEHICLE_LOOKRIGHT);
+ CHECK_ACTION(VEHICLE_HORN);
+ CHECK_ACTION(VEHICLE_HANDBRAKE);
+ CHECK_ACTION(VEHICLE_ACCELERATE);
+ CHECK_ACTION(VEHICLE_BRAKE);
+ CHECK_ACTION(VEHICLE_CHANGE_RADIO_STATION);
+ CHECK_ACTION(TOGGLE_SUBMISSIONS);
+ CHECK_ACTION(VEHICLE_TURRETLEFT);
+ CHECK_ACTION(VEHICLE_TURRETRIGHT);
+ CHECK_ACTION(VEHICLE_TURRETUP);
+ CHECK_ACTION(VEHICLE_TURRETDOWN);
+ CHECK_ACTION(VEHICLE_ENTER_EXIT);
+ CHECK_ACTION(CAMERA_CHANGE_VIEW_ALL_SITUATIONS);
+#ifndef BIND_VEHICLE_FIREWEAPON
+ CHECK_ACTION(PED_FIREWEAPON);
+#endif
+ CHECK_ACTION(GO_LEFT);
+ CHECK_ACTION(GO_RIGHT);
+ CHECK_ACTION(NETWORK_TALK);
+ CHECK_ACTION(SWITCH_DEBUG_CAM_ON);
+ CHECK_ACTION(TOGGLE_DPAD);
+ CHECK_ACTION(TAKE_SCREEN_SHOT);
+ CHECK_ACTION(SHOW_MOUSE_POINTER_TOGGLE);
+ }
+ return false;
+}
+
+#undef CHECK_ACTION
+#endif
+
void CControllerConfigManager::DeleteMatchingActionInitiators(e_ControllerAction action, int32 key, eControllerType type)
{
if (!GetIsKeyBlank(key, type))
@@ -2371,7 +2439,7 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
#define VFB(b)
#endif
-#define CONTROLLER_BUTTONS(T, O, X, Q, L1, L2, L3, R1, R2, R3, SELECT, RSL, RSR) \
+#define CONTROLLER_BUTTONS(T, O, X, Q, L1, L2, L3, R1, R2, R3, SELECT, RSU, RSD, RSL, RSR) \
{{ \
O, /* PED_FIREWEAPON */ \
R2, /* PED_CYCLE_WEAPON_RIGHT */ \
@@ -2482,7 +2550,7 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
O, /* PED_SPRINT */ \
R3, /* PED_LOOKBEHIND */ \
L3, /* PED_DUCK */ \
- L1, /* PED_ANSWER_PHONE */ \
+ T, /* PED_ANSWER_PHONE */ \
VFB(O) /* VEHICLE_FIREWEAPON */ \
X, /* VEHICLE_ACCELERATE */ \
Q, /* VEHICLE_BRAKE */ \
@@ -2529,10 +2597,10 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
X, /* PED_SPRINT */ \
R3, /* PED_LOOKBEHIND */ \
L3, /* PED_DUCK */ \
- L1, /* PED_ANSWER_PHONE */ \
+ O, /* PED_ANSWER_PHONE */ \
VFB(R1) /* VEHICLE_FIREWEAPON */ \
- nil, /* VEHICLE_ACCELERATE */ \
- nil, /* VEHICLE_BRAKE */ \
+ RSU, /* VEHICLE_ACCELERATE */ \
+ RSD, /* VEHICLE_BRAKE */ \
O, /* VEHICLE_CHANGE_RADIO_STATION */ \
L3, /* VEHICLE_HORN */ \
Q, /* TOGGLE_SUBMISSIONS */ \
@@ -2573,10 +2641,10 @@ int32 CControllerConfigManager::GetNumOfSettingsForAction(e_ControllerAction act
#define RIGHT "RIGHT"
#endif
-const char *XboxButtons_noIcons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("Y", "B", "A", "X", "LB", "LT", "LS", "RB", "RT", "RS", "BACK", "right stick left", "right stick right");
+const char *XboxButtons_noIcons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("Y", "B", "A", "X", "LB", "LT", "LS", "RB", "RT", "RS", "BACK", "right stick up", "right stick down", "right stick left", "right stick right");
#ifdef BUTTON_ICONS
-const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "BACK", "~(~", "~)~");
+const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "BACK", "~H~", "~L~", "~(~", "~)~");
#endif
@@ -2585,11 +2653,6 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O
#define PS2_CIRCLE "|"
#define PS2_CROSS "/"
#define PS2_SQUARE "^"
-#elif defined(BUTTON_ICONS)
-#define PS2_TRIANGLE "~T~"
-#define PS2_CIRCLE "~O~"
-#define PS2_CROSS "~X~"
-#define PS2_SQUARE "~Q~"
#else
#define PS2_TRIANGLE "TRIANGLE"
#define PS2_CIRCLE "CIRCLE"
@@ -2598,11 +2661,11 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O
#endif
const char *PlayStationButtons_noIcons[][MAX_CONTROLLERACTIONS] =
- CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "L1", "L2", "L3", "R1", "R2", "R3", "SELECT", "right stick left", "right stick right");
+ CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "L1", "L2", "L3", "R1", "R2", "R3", "SELECT", "right stick up", "right stick down", "right stick left", "right stick right");
#ifdef BUTTON_ICONS
const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] =
- CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT", "~(~", "~)~");
+ CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT", "~H~", "~L~", "~(~", "~)~");
#endif
#undef PS2_TRIANGLE
@@ -2624,11 +2687,36 @@ void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar *
if (CPad::GetPad(0)->IsAffectedByController) {
wchar wstr[16];
- // TODO: INI and/or menu setting for Xbox/PS switch
+ const char* (*Buttons)[MAX_CONTROLLERACTIONS];
+
#ifdef BUTTON_ICONS
- const char *(*Buttons)[MAX_CONTROLLERACTIONS] = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons;
+ #ifdef GAMEPAD_MENU
+ switch (FrontEndMenuManager.m_PrefsControllerType)
+ {
+ case CMenuManager::CONTROLLER_DUALSHOCK2:
+ case CMenuManager::CONTROLLER_DUALSHOCK3:
+ case CMenuManager::CONTROLLER_DUALSHOCK4:
+ Buttons = CFont::ButtonsSlot != -1 ? PlayStationButtons : PlayStationButtons_noIcons;
+ break;
+ default:
+ #endif
+ Buttons = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons;
+ #ifdef GAMEPAD_MENU
+ break;
+ }
+ #endif
#else
- const char *(*Buttons)[MAX_CONTROLLERACTIONS] = XboxButtons_noIcons;
+ switch (FrontEndMenuManager.m_PrefsControllerType)
+ {
+ case CMenuManager::CONTROLLER_DUALSHOCK2:
+ case CMenuManager::CONTROLLER_DUALSHOCK3:
+ case CMenuManager::CONTROLLER_DUALSHOCK4:
+ Buttons = PlayStationButtons_noIcons;
+ break;
+ default:
+ Buttons = XboxButtons_noIcons;
+ break;
+ }
#endif
assert(Buttons[CPad::GetPad(0)->Mode][action] != nil); // we cannot use these
diff --git a/src/core/ControllerConfig.h b/src/core/ControllerConfig.h
index 604fb5cc..d61e23e6 100644
--- a/src/core/ControllerConfig.h
+++ b/src/core/ControllerConfig.h
@@ -195,6 +195,10 @@ public:
void DeleteMatching1rstPersonControls (e_ControllerAction action, int32 key, eControllerType type);
void DeleteMatchingActionInitiators (e_ControllerAction action, int32 key, eControllerType type);
+#ifdef RADIO_SCROLL_TO_PREV_STATION
+ bool IsAnyVehicleActionAssignedToMouseKey(int32 key);
+#endif
+
bool GetIsKeyBlank(int32 key, eControllerType type);
e_ControllerActionType GetActionType(e_ControllerAction action);
diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp
index e5d13b2f..d57bdd92 100644
--- a/src/core/FileLoader.cpp
+++ b/src/core/FileLoader.cpp
@@ -1279,7 +1279,7 @@ CFileLoader::LoadObjectInstance(const char *line)
if(!CStreaming::IsObjectInCdImage(id))
debug("Not in cdimage %s\n", mi->GetModelName());
- angle = -RADTODEG(2.0f * acosf(angle));
+ angle = -RADTODEG(2.0f * Acos(angle));
xform = RwMatrixCreate();
RwMatrixRotate(xform, &axis, angle, rwCOMBINEREPLACE);
RwMatrixTranslate(xform, &trans, rwCOMBINEPOSTCONCAT);
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index df00efde..9f78d483 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -139,6 +139,10 @@ bool CMenuManager::m_PrefsMarketing = false;
bool CMenuManager::m_PrefsDisableTutorials = false;
#endif // !MASTER
+#ifdef GAMEPAD_MENU
+uint32 TimeToStopPadShaking;
+#endif
+
const char* FrontendFilenames[][2] = {
{"background", ""},
{"vc_logo", "vc_logom"},
@@ -165,7 +169,14 @@ const char* FrontendFilenames[][2] = {
{"downOff", "buttonA"},
{"downOn", "buttonA"},
{"upOff", "buttonA"},
- {"upOn", "buttonA"}
+ {"upOn", "buttonA"},
+#ifdef GAMEPAD_MENU
+ {"fe_controller", "" },
+ {"fe_arrows1", "" },
+ {"fe_arrows2", "" },
+ {"fe_arrows3", "" },
+ {"fe_arrows4", "" },
+#endif
};
#define MENU_X_RIGHT_ALIGNED(x) SCALE_AND_CENTER_X(DEFAULT_SCREEN_WIDTH - (x))
@@ -184,7 +195,7 @@ const char* FrontendFilenames[][2] = {
#ifdef XBOX_MESSAGE_SCREEN
bool CMenuManager::m_bDialogOpen = false;
uint32 CMenuManager::m_nDialogHideTimer = 0;
-PauseModeTime CMenuManager::m_nDialogHideTimerPauseMode = 0;
+uint32 CMenuManager::m_nDialogHideTimerPauseMode = 0;
bool CMenuManager::m_bSaveWasSuccessful = false;
wchar* CMenuManager::m_pDialogText = nil;
#endif
@@ -540,6 +551,10 @@ CMenuManager::CMenuManager()
#ifdef NO_ISLAND_LOADING
m_PrefsIslandLoading = ISLAND_LOADING_LOW;
#endif
+
+#ifdef GAMEPAD_MENU
+ m_PrefsControllerType = CONTROLLER_XBOXONE;
+#endif
}
void
@@ -749,7 +764,7 @@ CMenuManager::DisplayHelperText(char *text)
return;
// there was a unused static bool
- static PauseModeTime LastFlash = 0;
+ static uint32 LastFlash = 0;
int32 alpha = 255;
CFont::SetRightJustifyOn();
@@ -1091,7 +1106,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
}
switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) {
-#ifdef LEGACY_MENU_OPTIONS
+#ifdef GAMEPAD_MENU
case MENUACTION_CTRLVIBRATION:
if (m_PrefsUseVibration)
rightText = TheText.Get("FEM_ON");
@@ -1140,18 +1155,34 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
#else
switch (m_PrefsUseWideScreen) {
case AR_AUTO:
- sprintf(asciiTemp, "AUTO");
+ rightText = TheText.Get("FEM_AUT");
break;
case AR_4_3:
sprintf(asciiTemp, "4:3");
+ AsciiToUnicode(asciiTemp, unicodeTemp);
+ rightText = unicodeTemp;
+ break;
+ case AR_5_4:
+ sprintf(asciiTemp, "5:4");
+ AsciiToUnicode(asciiTemp, unicodeTemp);
+ rightText = unicodeTemp;
+ break;
+ case AR_16_10:
+ sprintf(asciiTemp, "16:10");
+ AsciiToUnicode(asciiTemp, unicodeTemp);
+ rightText = unicodeTemp;
break;
case AR_16_9:
sprintf(asciiTemp, "16:9");
+ AsciiToUnicode(asciiTemp, unicodeTemp);
+ rightText = unicodeTemp;
+ break;
+ case AR_21_9:
+ sprintf(asciiTemp, "21:9");
+ AsciiToUnicode(asciiTemp, unicodeTemp);
+ rightText = unicodeTemp;
break;
}
-
- AsciiToUnicode(asciiTemp, unicodeTemp);
- rightText = unicodeTemp;
#endif
break;
@@ -1411,19 +1442,21 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
}
}*/
- static PauseModeTime lastBlendChange = 0;
+ static uint32 lastBlendChange = 0;
if (m_nOptionHighlightTransitionBlend <= 255) {
static uint32 blendChangeCounter = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastBlendChange > 20
-#ifndef FIX_HIGH_FPS_BUGS_ON_FRONTEND // Dirty dirty hack
|| blendChangeCounter > 20
-#endif
) {
m_nOptionHighlightTransitionBlend += 50;
lastBlendChange = CTimer::GetTimeInMillisecondsPauseMode();
blendChangeCounter = 0;
}
+#ifdef FIX_BUGS
+ blendChangeCounter += CTimer::GetLogicalFramesPassed();
+#else
++blendChangeCounter;
+#endif
}
}
@@ -1556,6 +1589,11 @@ CMenuManager::DrawStandardMenus(bool activeScreen)
#endif
switch (m_nCurrScreen) {
+#ifdef GAMEPAD_MENU
+ case MENUPAGE_CONTROLLER_SETTINGS:
+ PrintController();
+ break;
+#endif
case MENUPAGE_STATS:
case MENUPAGE_CONTROLLER_PC:
case MENUPAGE_SOUND_SETTINGS:
@@ -1845,8 +1883,13 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8
}
// Print bindings, including seperator (-) between them
+
CFont::SetScale(MENU_X(0.25f), MENU_Y(LISTITEM_Y_SCALE));
+#ifdef FIX_BUGS
+ for (; contSetOrder < MAX_SETORDERS && controllerAction >= 0; contSetOrder++) {
+#else
for (; contSetOrder < MAX_SETORDERS && controllerAction != -1; contSetOrder++) {
+#endif
wchar *settingText = ControlsManager.GetControllerSettingTextWithOrderNumber((e_ControllerAction)controllerAction, (eContSetOrder)contSetOrder);
if (settingText) {
++bindingsForThisOpt;
@@ -1904,7 +1947,7 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8
CFont::PrintString(nextX, nextY, seperator);
nextX += CFont::GetStringWidth(seperator, true) + bindingMargin;
}
- static PauseModeTime lastWaitingTextFlash = 0;
+ static uint32 lastWaitingTextFlash = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastWaitingTextFlash > 150) {
showWaitingText = !showWaitingText;
lastWaitingTextFlash = CTimer::GetTimeInMillisecondsPauseMode();
@@ -1969,7 +2012,7 @@ CMenuManager::DrawControllerScreenExtraText(int yStart, int xStart, int lineHeig
CFont::PrintString(nextX, MENU_Y(yStart), TheText.Get("FEC_IBT"));
nextX = CFont::GetStringWidth(TheText.Get("FEC_IBT"), true) + spacing + nextX;
}
- static PauseModeTime lastStateChange = 0;
+ static uint32 lastStateChange = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastStateChange > 150) {
waitingTextVisible = !waitingTextVisible;
lastStateChange = CTimer::GetTimeInMillisecondsPauseMode();
@@ -2353,22 +2396,27 @@ CMenuManager::DrawBackground(bool transitionCall)
m_nOptionHighlightTransitionBlend = 0;
}
- static PauseModeTime LastFade = 0;
+ static uint32 LastFade = 0;
if (m_nMenuFadeAlpha < 255) {
static uint8 forceFadeInCounter = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - LastFade > 30
-#ifndef FIX_HIGH_FPS_BUGS_ON_FRONTEND // Dirty dirty hack
|| forceFadeInCounter > 30
-#endif
) {
m_nMenuFadeAlpha += 50;
if (m_firstStartCounter < 255) {
m_firstStartCounter = Min(m_firstStartCounter + 50, 255);
}
LastFade = CTimer::GetTimeInMillisecondsPauseMode();
+#ifdef FIX_BUGS
+ forceFadeInCounter = 0;
+#endif
}
+#ifdef FIX_BUGS
+ forceFadeInCounter += CTimer::GetLogicalFramesPassed();
+#else
forceFadeInCounter++;
+#endif
} else if (m_nMenuFadeAlpha > 255)
m_nMenuFadeAlpha = 255;
@@ -2424,7 +2472,7 @@ CMenuManager::DrawBackground(bool transitionCall)
// }
if (m_ShowEmptyBindingError) {
- static PauseModeTime lastBindingError = CTimer::GetTimeInMillisecondsPauseMode();
+ static uint32 lastBindingError = CTimer::GetTimeInMillisecondsPauseMode();
static bool bindingErrorShown = false;
if (bindingErrorShown) {
lastBindingError = CTimer::GetTimeInMillisecondsPauseMode();
@@ -2965,12 +3013,19 @@ CMenuManager::LoadAllTextures()
CTxdStore::AddRef(frontendTxdSlot2);
CTxdStore::SetCurrentTxd(frontendTxdSlot2);
+#ifdef GAMEPAD_MENU
+ for (int i = 3; i < MENUSPRITE_CONTROLLER; i++) {
+#else
for (int i = 3; i < NUM_MENU_SPRITES; i++) {
+#endif
m_aFrontEndSprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]);
m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER);
}
CTxdStore::PopCurrentTxd();
+#ifdef GAMEPAD_MENU
+ LoadController(m_PrefsControllerType);
+#endif
CStreaming::IHaveUsedStreamingMemory();
}
@@ -3066,11 +3121,10 @@ CMenuManager::LoadSettings()
#ifdef LOAD_INI_SETTINGS
if (LoadINISettings()) {
LoadINIControllerSettings();
- } else {
- // no re3.ini, create it
- SaveINISettings();
- SaveINIControllerSettings();
}
+ // if no reVC.ini, create it, or update it with new values
+ SaveINISettings();
+ SaveINIControllerSettings();
#endif
#ifdef FIX_BUGS
@@ -3125,7 +3179,11 @@ CMenuManager::SaveSettings()
{
#ifndef LOAD_INI_SETTINGS
static char RubbishString[48] = "stuffmorestuffevenmorestuff etc";
+#ifdef BIND_VEHICLE_FIREWEAPON
+ static int SomeVersion = 4;
+#else
static int SomeVersion = 3;
+#endif
CFileMgr::SetDirMyDocuments();
@@ -3298,7 +3356,7 @@ CMenuManager::PrintStats()
else
CFont::SetScale(MENU_X(0.37f), MENU_Y(0.75f));
- static PauseModeTime lastCheck = 0;
+ static uint32 lastCheck = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastCheck > 40) {
@@ -3439,7 +3497,7 @@ CMenuManager::AdditionalOptionInput(bool &goBack)
switch (m_nCurrScreen) {
case MENUPAGE_MAP:
{
- static PauseModeTime lastMapTick = 0;
+ static uint32 lastMapTick = 0;
// FIX: All those macros were hardcoded values originally.
@@ -3768,7 +3826,7 @@ CMenuManager::ExportStats()
void
CMenuManager::PrintRadioSelector(void)
{
- static PauseModeTime lastRadioChange = 0;
+ static uint32 lastRadioChange = 0;
CSprite2d::Draw2DPolygon(MENU_X_LEFT_ALIGNED(418.f), MENU_Y(MENURADIO_SELECTOR_START_Y + MENURADIO_SELECTOR_HEIGHT),
MENU_X_LEFT_ALIGNED(228.f), MENU_Y(MENURADIO_SELECTOR_START_Y + MENURADIO_SELECTOR_HEIGHT),
@@ -3891,7 +3949,7 @@ CMenuManager::PrintRadioSelector(void)
#endif
static bool radioChangeRequested = false;
- static PauseModeTime lastScrollCheck = 0;
+ static uint32 lastScrollCheck = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastScrollCheck > 17) {
if (m_ScrollRadioBy == 1) {
if (m_LeftMostRadioX > MENU_X_LEFT_ALIGNED(MENURADIO_ICON_FIRST_X - MENURADIO_ICON_SIZE)) {
@@ -3934,7 +3992,7 @@ CMenuManager::PrintRadioSelector(void)
if (radioChangeRequested) {
if (CTimer::GetTimeInMillisecondsPauseMode() - lastRadioChange > 50) {
DMAudio.SetRadioInCar(m_PrefsRadioStation);
- DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1);
+ DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE);
OutputDebugString("FRONTEND RADIO STATION CHANGED");
lastRadioChange = CTimer::GetTimeInMillisecondsPauseMode();
radioChangeRequested = false;
@@ -3975,7 +4033,7 @@ CMenuManager::ProcessList(bool &optionSelected, bool &goBack)
field_159 = false;
}
- static PauseModeTime lastTimeClickedScrollButton = 0;
+ static uint32 lastTimeClickedScrollButton = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastTimeClickedScrollButton >= 200) {
m_bPressedPgUpOnList = false;
@@ -4361,7 +4419,7 @@ CMenuManager::UserInput(void)
int curAction = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action;
if (CPad::GetPad(0)->GetLeft() || CPad::GetPad(0)->GetPedWalkLeftRight() < 0 || CPad::GetPad(0)->GetDPadLeft()) {
- static PauseModeTime lastSliderDecrease = 0;
+ static uint32 lastSliderDecrease = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastSliderDecrease > 150) {
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
@@ -4372,7 +4430,7 @@ CMenuManager::UserInput(void)
lastSliderDecrease = CTimer::GetTimeInMillisecondsPauseMode();
}
} else if (CPad::GetPad(0)->GetRight() || CPad::GetPad(0)->GetPedWalkLeftRight() > 0 || CPad::GetPad(0)->GetDPadRight()) {
- static PauseModeTime lastSliderIncrease = 0;
+ static uint32 lastSliderIncrease = 0;
if (CTimer::GetTimeInMillisecondsPauseMode() - lastSliderIncrease > 150) {
if (curAction == MENUACTION_BRIGHTNESS || curAction == MENUACTION_MUSICVOLUME ||
curAction == MENUACTION_SFXVOLUME || curAction == MENUACTION_RADIO ||
@@ -4668,7 +4726,7 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
case MENUACTION_LOADRADIO:
if (m_nPrefsAudio3DProviderIndex != NO_AUDIO_PROVIDER) {
SwitchToNewScreen(MENUPAGE_SOUND_SETTINGS);
- DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1);
+ DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE);
OutputDebugString("STARTED PLAYING FRONTEND AUDIO TRACK");
}
break;
@@ -4774,7 +4832,7 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume);
DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume);
DMAudio.SetRadioInCar(m_PrefsRadioStation);
- DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1);
+ DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE);
SaveSettings();
} else if (m_nCurrScreen == MENUPAGE_DISPLAY_SETTINGS) {
m_PrefsBrightness = DEFAULT_BRIGHTNESS;
@@ -4914,6 +4972,16 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
if (changeAmount != 0) {
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
+#ifdef GAMEPAD_MENU
+ case MENUACTION_CTRLCONFIG:
+ CPad::GetPad(0)->Mode += changeAmount;
+ if (CPad::GetPad(0)->Mode > 3)
+ CPad::GetPad(0)->Mode = 0;
+ else if (CPad::GetPad(0)->Mode < 0)
+ CPad::GetPad(0)->Mode = 3;
+ SaveSettings();
+ break;
+#endif
case MENUACTION_RADIO:
ChangeRadioStation(changeAmount);
break;
@@ -4928,12 +4996,12 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u
case MENUACTION_WIDESCREEN:
if (changeAmount > 0) {
m_PrefsUseWideScreen++;
- if (m_PrefsUseWideScreen > 2)
+ if (m_PrefsUseWideScreen > AR_MAX - 1)
m_PrefsUseWideScreen = 0;
} else {
m_PrefsUseWideScreen--;
if (m_PrefsUseWideScreen < 0)
- m_PrefsUseWideScreen = 2;
+ m_PrefsUseWideScreen = AR_MAX - 1;
}
SaveSettings();
break;
@@ -5055,14 +5123,14 @@ void
CMenuManager::ProcessOnOffMenuOptions()
{
switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) {
-#ifdef LEGACY_MENU_OPTIONS
+#ifdef GAMEPAD_MENU
case MENUACTION_CTRLVIBRATION:
m_PrefsUseVibration = !m_PrefsUseVibration;
- break;
- case MENUACTION_CTRLCONFIG:
- CPad::GetPad(0)->Mode++;
- if (CPad::GetPad(0)->Mode > 3)
- CPad::GetPad(0)->Mode = 0;
+ if (m_PrefsUseVibration) {
+ CPad::GetPad(0)->StartShake(350, 150);
+ TimeToStopPadShaking = CTimer::GetTimeInMillisecondsPauseMode() + 500;
+ }
+ SaveSettings();
break;
#endif
case MENUACTION_INVERTPADY:
@@ -5353,7 +5421,7 @@ CMenuManager::ProcessFileActions()
{
#ifdef XBOX_MESSAGE_SCREEN
if (m_bDialogOpen && DialogTextCmp("FESZ_WR")) {
- PauseModeTime startTime = CTimer::GetTimeInMillisecondsPauseMode();
+ uint32 startTime = CTimer::GetTimeInMillisecondsPauseMode();
int8 SaveSlot = PcSaveHelper.SaveSlot(m_nCurrSaveSlot);
PcSaveHelper.PopulateSlotInfo();
@@ -5446,6 +5514,9 @@ CMenuManager::SwitchMenuOnAndOff()
}
Initialise();
LoadAllTextures();
+#ifdef FIX_BUGS
+ CPad::StopPadsShaking();
+#endif
} else {
#ifdef EXTENDED_COLOURFILTER
// we always expect CPostFX to be open
@@ -5528,6 +5599,14 @@ CMenuManager::SwitchMenuOnAndOff()
m_bStartUpFrontEndRequested = false;
m_bShutDownFrontEndRequested = false;
+
+#ifdef GAMEPAD_MENU
+ // Reset pad shaking.
+ if (TimeToStopPadShaking && TimeToStopPadShaking < CTimer::GetTimeInMillisecondsPauseMode()) {
+ CPad::StopPadsShaking();
+ TimeToStopPadShaking = 0;
+ }
+#endif
}
void
@@ -5552,6 +5631,13 @@ CMenuManager::UnloadTextures()
m_aFrontEndSprites[i].Delete();
CTxdStore::RemoveTxd(frontend2);
+
+#ifdef GAMEPAD_MENU
+ // Unload controller txd
+ int frontend_controller = CTxdStore::FindTxdSlot("frontend_controller");
+ if (frontend_controller != -1)
+ CTxdStore::RemoveTxd(frontend_controller);
+#endif
}
m_bSpritesLoaded = false;
@@ -5585,33 +5671,40 @@ void
CMenuManager::DrawQuitGameScreen(void)
{
static int32 exitSignalTimer = 0;
+
+#ifdef FIX_BUGS
+ int alpha = clamp(m_nMenuFadeAlpha, 0, 255);
+#else
+ int alpha = m_nMenuFadeAlpha;
+#endif
+
#ifndef MUCH_SHORTER_OUTRO_SCREEN
- static PauseModeTime lastTickIncrease = 0;
- if (m_nMenuFadeAlpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - lastTickIncrease > 10) {
+ static uint32 lastTickIncrease = 0;
+ if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - lastTickIncrease > 10) {
exitSignalTimer++;
lastTickIncrease = CTimer::GetTimeInMillisecondsPauseMode();
}
#else
- static PauseModeTime sincePress = 0;
- sincePress += frameTime;
- if (sincePress > 500)
+ static uint32 firstTick = CTimer::GetTimeInMillisecondsPauseMode();
+ if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - firstTick > 750) {
exitSignalTimer = 150;
+ }
#endif
static CSprite2d *splash = nil;
if (splash == nil)
splash = LoadSplash("sceelee");
- m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(MENU_X(28.0f), MENU_Y(8.0f), MENU_X(157.0f), MENU_Y(138.0f)), CRGBA(255, 255, 255, -(m_nMenuFadeAlpha + 1)));
+ m_aFrontEndSprites[MENUSPRITE_VCLOGO].Draw(CRect(SCREEN_STRETCH_X(28.0f), MENU_Y(8.0f), SCREEN_STRETCH_X(27.0f) + MENU_X(130.f), MENU_Y(138.0f)), CRGBA(255, 255, 255, 255 - alpha));
// Or we can see menu background from sides
#ifdef ASPECT_RATIO_SCALE
- CSprite2d::DrawRect(CRect(0, 0, MENU_X_LEFT_ALIGNED(0.f), SCREEN_HEIGHT), CRGBA(0, 0, 0, m_nMenuFadeAlpha));
- CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(0.f), 0, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(0, 0, 0, m_nMenuFadeAlpha));
+ CSprite2d::DrawRect(CRect(0, 0, MENU_X_LEFT_ALIGNED(0.f), SCREEN_HEIGHT), CRGBA(0, 0, 0, alpha));
+ CSprite2d::DrawRect(CRect(MENU_X_RIGHT_ALIGNED(0.f), 0, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(0, 0, 0, alpha));
#endif
- splash->Draw(CRect(MENU_X_LEFT_ALIGNED(0.f), 0, MENU_X_RIGHT_ALIGNED(0.f), SCREEN_HEIGHT), CRGBA(255, 255, 255, m_nMenuFadeAlpha));
- if (m_nMenuFadeAlpha == 255 && exitSignalTimer == 150)
+ splash->Draw(CRect(MENU_X_LEFT_ALIGNED(0.f), 0, MENU_X_RIGHT_ALIGNED(0.f), SCREEN_HEIGHT), CRGBA(255, 255, 255, alpha));
+ if (alpha == 255 && exitSignalTimer == 150)
RsEventHandler(rsQUITAPP, nil);
m_bShowMouse = false;
@@ -5792,5 +5885,753 @@ uint8 CMenuManager::GetNumberOfMenuOptions()
}
#endif
+#ifdef GAMEPAD_MENU
+const char* controllerTypesPaths[] = {
+ "MODELS/FRONTEND_DS2.TXD",
+ "MODELS/FRONTEND_DS3.TXD",
+ "MODELS/FRONTEND_DS4.TXD",
+ "MODELS/FRONTEND_X360.TXD",
+ "MODELS/FRONTEND_XONE.TXD",
+};
+
+void
+CMenuManager::PrintController(void)
+{
+ // Don't print anything if controller texture is missing
+ if (!m_aFrontEndSprites[MENUSPRITE_CONTROLLER].m_pTexture) return;
+
+ const float scale = 0.9f;
+ const float CONTROLLER_SIZE_X = 235.2f;
+ const float CONTROLLER_SIZE_Y = 175.2f;
+ const float CONTROLLER_POS_X = (DEFAULT_SCREEN_WIDTH - CONTROLLER_SIZE_X) / 2.0f;
+ const float CONTROLLER_POS_Y = 220.0f;
+
+ float centerX = CONTROLLER_POS_X + CONTROLLER_SIZE_X / 2;
+ float centerY = CONTROLLER_POS_Y + CONTROLLER_SIZE_Y / 2;
+
+#define X(f) ((f)*scale + centerX)
+#define Y(f) ((f)*scale + centerY)
+
+ m_aFrontEndSprites[MENUSPRITE_CONTROLLER].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, FadeIn(255)));
+ if (m_DisplayControllerOnFoot) {
+ if ((int)CTimer::GetTimeInMillisecondsPauseMode() & 0x400)
+ m_aFrontEndSprites[MENUSPRITE_ARROWS1].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, FadeIn(255)));
+ else
+ m_aFrontEndSprites[MENUSPRITE_ARROWS3].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, FadeIn(255)));
+ }
+ else {
+ if ((int)CTimer::GetTimeInMillisecondsPauseMode() & 0x400)
+ m_aFrontEndSprites[MENUSPRITE_ARROWS2].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, FadeIn(255)));
+ else
+ m_aFrontEndSprites[MENUSPRITE_ARROWS4].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, FadeIn(255)));
+ }
+
+ CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
+
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.9f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.9f)); // X
+
+ CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255)));
+ CFont::SetDropShadowPosition(0);
+ CFont::SetColor(CRGBA(0, 0, 0, FadeIn(255)));
+ CFont::SetWrapx(SCREEN_WIDTH);
+
+ float TEXT_L2_X = 85.0f + CONTROLLER_POS_X - centerX, TEXT_L2_Y = -14.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_L1_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_L1_Y = 27.0f + CONTROLLER_POS_Y - centerY, TEXT_L1_Y_VEH = 3.0f + TEXT_L1_Y;
+ float TEXT_DPAD_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_DPAD_Y = 67.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_LSTICK_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_LSTICK_Y = 97.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_SELECT_X = 170.0f + CONTROLLER_POS_X - centerX, TEXT_SELECT_Y = 141.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_START_X = 130.0f + CONTROLLER_POS_X - centerX, TEXT_START_Y = 128.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_R2_X = 164.0f + CONTROLLER_POS_X - centerX, TEXT_R2_Y = -14.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_R1_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_R1_Y = 27.0f + CONTROLLER_POS_Y - centerY;
+
+ float TEXT_SQUARE_X = 147.0f + CONTROLLER_POS_X - centerX, TEXT_SQUARE_Y = 30.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_TRIANGLE_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_TRIANGLE_Y = 55.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_CIRCLE_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_CIRCLE_Y = 67.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_CROSS_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_CROSS_Y = 80.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_RSTICK_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_RSTICK_Y = 97.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_R3_X = 242.0f + CONTROLLER_POS_X - centerX, TEXT_R3_Y = 110.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_L3_X = 94.0f + CONTROLLER_POS_X - centerX, TEXT_L3_Y = 162.0f + CONTROLLER_POS_Y - centerY;
+ float TEXT_L2R2_X = 120.0f + CONTROLLER_POS_X - centerX, TEXT_L2R2_Y = -4.0f + CONTROLLER_POS_Y - centerY;
+
+ switch (m_PrefsControllerType)
+ {
+ case CONTROLLER_DUALSHOCK4:
+ TEXT_L1_Y += 7.0f;
+ TEXT_L1_Y_VEH = TEXT_L1_Y;
+ TEXT_R1_Y += 7.0f;
+ TEXT_TRIANGLE_Y -= 1.0f;
+ TEXT_CIRCLE_Y -= 1.0f;
+ TEXT_CROSS_Y -= 1.0f;
+ TEXT_RSTICK_Y -= 4.0f;
+ TEXT_R3_Y -= 4.0f;
+ TEXT_DPAD_Y -= 2.0f;
+ TEXT_LSTICK_Y -= 6.0f;
+ TEXT_L3_X -= 2.0f;
+ break;
+ case CONTROLLER_XBOXONE:
+ TEXT_L2_X -= 2.0f;
+ TEXT_R2_X += 2.0f;
+ TEXT_L1_Y += 15.0f;
+ TEXT_L1_Y_VEH = TEXT_L1_Y;
+ TEXT_R1_Y += 15.0f;
+ TEXT_TRIANGLE_Y += 4.0f;
+ TEXT_CIRCLE_Y += 4.0f;
+ TEXT_CROSS_Y += 4.0f;
+ TEXT_RSTICK_Y += 1.0f;
+ TEXT_R3_Y += 1.0f;
+ TEXT_DPAD_Y += 29.0f;
+ TEXT_LSTICK_Y -= 20.0f;
+ TEXT_L3_X -= 36.0f;
+ TEXT_L2R2_Y += 5.0f;
+ TEXT_SELECT_X += 4.0f;
+ break;
+ case CONTROLLER_XBOX360:
+ TEXT_L2_X += 8.0f;
+ TEXT_R2_X -= 8.0f;
+ TEXT_L1_Y += 15.0f;
+ TEXT_L1_Y_VEH = TEXT_L1_Y;
+ TEXT_R1_Y += 15.0f;
+ TEXT_TRIANGLE_Y += 4.0f;
+ TEXT_CIRCLE_Y += 4.0f;
+ TEXT_CROSS_Y += 4.0f;
+ TEXT_RSTICK_Y += 4.0f;
+ TEXT_R3_Y += 4.0f;
+ TEXT_DPAD_Y += 30.0f;
+ TEXT_LSTICK_Y -= 19.0f;
+ TEXT_L3_X -= 36.0f;
+ TEXT_L2R2_Y += 5.0f;
+ TEXT_SELECT_X += 3.0f;
+ break;
+ };
+
+ if (m_DisplayControllerOnFoot) {
+ switch (CPad::GetPad(0)->Mode) {
+ case 0:
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_L2_X -= 45.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)) - SCREEN_SCALE_X(85));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(0);
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
+ CFont::SetRightJustifyWrap(0);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_CR3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_R2_X += 30.0f;
+ CFont::SetJustifyOff();
+ CFont::SetWrapx(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)) + SCREEN_SCALE_X(120));
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
+ CFont::SetJustifyOn();
+ CFont::SetWrapx(SCREEN_WIDTH);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
+ break;
+ case 1:
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_L2_X -= 45.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)) - SCREEN_SCALE_X(85));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(0);
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
+ CFont::SetRightJustifyWrap(0);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_CR3"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_NA"));
+ break;
+ default:
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X - 50)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_NA"));
+ break;
+ }
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_R2_X += 30.0f;
+ CFont::SetJustifyOff();
+ CFont::SetWrapx(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)) + SCREEN_SCALE_X(120));
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
+ CFont::SetJustifyOn();
+ CFont::SetWrapx(SCREEN_WIDTH);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
+ break;
+ case 2:
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_L2_X -= 45.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)) - SCREEN_SCALE_X(85));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(0);
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
+ CFont::SetRightJustifyWrap(0);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_ENV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_CR3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_R2_X += 30.0f;
+ CFont::SetJustifyOff();
+ CFont::SetWrapx(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)) + SCREEN_SCALE_X(120));
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
+ CFont::SetJustifyOn();
+ CFont::SetWrapx(SCREEN_WIDTH);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
+ break;
+ case 3:
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_L2_X -= 45.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)) - SCREEN_SCALE_X(85));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(0);
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL"));
+ CFont::SetRightJustifyWrap(0);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_TAR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_NA"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_CR3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_SPANISH:
+ TEXT_R2_X += 30.0f;
+ CFont::SetJustifyOff();
+ CFont::SetWrapx(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)) + SCREEN_SCALE_X(120));
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR"));
+ CFont::SetJustifyOn();
+ CFont::SetWrapx(SCREEN_WIDTH);
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_ATT"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_LOF"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3"));
+ break;
+ default:
+ return;
+ }
+ }
+ else {
+ CFont::SetCentreOn();
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_ITALIAN:
+ if (m_PrefsControllerType != CONTROLLER_XBOX360)
+ break;
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_GERMAN:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ break;
+ default:
+ break;
+ }
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(0.0f)), MENU_Y(Y(TEXT_L2R2_Y)), TheText.Get("FEC_LB"));
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.9f), MENU_Y(SMALLESTTEXT_Y_SCALE* scale * 0.9f));
+ switch (CPad::GetPad(0)->Mode) {
+ case 0:
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_RSC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SELECT_X -= 5.0f;
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)) - SCREEN_SCALE_X(80));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsControllerType)
+ {
+ case CONTROLLER_XBOXONE:
+ case CONTROLLER_XBOX360:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X += 3.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ case LANGUAGE_GERMAN:
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 18.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ }
+ break;
+ default:
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 5.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 10.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE* scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 15.0f;
+ case LANGUAGE_ITALIAN:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(100));
+ break;
+ }
+ break;
+ }
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
+ break;
+ case 1:
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HOR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_NA"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 12.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)) - SCREEN_SCALE_X(80));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_RSC"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsControllerType)
+ {
+ case CONTROLLER_XBOXONE:
+ case CONTROLLER_XBOX360:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X += 3.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ case LANGUAGE_GERMAN:
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 18.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ }
+ break;
+ default:
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 5.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 10.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 15.0f;
+ case LANGUAGE_ITALIAN:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(100));
+ break;
+ }
+ break;
+ }
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
+ break;
+ case 2:
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_EXV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_RS3"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SELECT_X -= 5.0f;
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)) - SCREEN_SCALE_X(80));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HOR"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_HAB"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3"));
+ CFont::SetRightJustifyOn();
+ switch (m_PrefsControllerType)
+ {
+ case CONTROLLER_XBOXONE:
+ case CONTROLLER_XBOX360:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X += 3.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ case LANGUAGE_GERMAN:
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 18.0f;
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(90));
+ break;
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ }
+ break;
+ default:
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 5.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SQUARE_X -= 15.0f;
+ TEXT_SQUARE_Y += 10.0f;
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(60));
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SQUARE_X += 15.0f;
+ case LANGUAGE_ITALIAN:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ default:
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)) - SCREEN_SCALE_X(100));
+ break;
+ }
+ break;
+ }
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA"));
+ break;
+ case 3:
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HAB"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_TUC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES"));
+ CFont::SetRightJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3"));
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_FRENCH:
+ TEXT_SELECT_X -= 5.0f;
+ break;
+ case LANGUAGE_GERMAN:
+ TEXT_SELECT_X += 20.0f;
+ break;
+ case LANGUAGE_SPANISH:
+ TEXT_SELECT_X += 15.0f;
+ break;
+ default:
+ break;
+ }
+ CFont::SetRightJustifyWrap(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)) - SCREEN_SCALE_X(80));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_CAW"));
+ CFont::SetJustifyOn();
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RSC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_NA"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_ACC"));
+ CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_BRA"));
+ CFont::SetRightJustifyOn();
+ CFont::SetRightJustifyWrap(0);
+ switch (m_PrefsControllerType)
+ {
+ case CONTROLLER_XBOXONE:
+ case CONTROLLER_XBOX360:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT"));
+ break;
+ default:
+ switch (m_PrefsLanguage)
+ {
+ case LANGUAGE_GERMAN:
+ TEXT_SQUARE_X += 5.0f;
+ case LANGUAGE_FRENCH:
+ case LANGUAGE_ITALIAN:
+ CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * 2 * scale * 0.65f), MENU_Y(SMALLESTTEXT_Y_SCALE * scale * 0.65f));
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT"));
+ break;
+ default:
+ CFont::PrintStringFromBottom(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X + 16.0f)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT"));
+ break;
+ }
+ break;
+ }
+ break;
+ default:
+ return;
+ }
+ }
+
+ CFont::SetDropShadowPosition(0); // X
+
+#undef X
+#undef Y
+}
+
+
+void
+CMenuManager::LoadController(int8 type)
+{
+ switch (type)
+ {
+ case CONTROLLER_DUALSHOCK2:
+ case CONTROLLER_DUALSHOCK3:
+ case CONTROLLER_DUALSHOCK4:
+ CFont::LoadButtons("MODELS/PS3BTNS.TXD");
+ break;
+ default:
+ CFont::LoadButtons("MODELS/X360BTNS.TXD");
+ break;
+ }
+
+ // Unload current textures
+ for (int i = MENUSPRITE_CONTROLLER; i <= MENUSPRITE_ARROWS4; i++)
+ m_aFrontEndSprites[i].Delete();
+
+ // Unload txd
+ int frontend_controller = CTxdStore::FindTxdSlot("frontend_controller");
+ if (frontend_controller != -1)
+ CTxdStore::RemoveTxd(frontend_controller);
+
+ // Find the new txd to load
+ bool bTxdMissing = true;
+ if (controllerTypesPaths[type])
+ if (int file = CFileMgr::OpenFile(controllerTypesPaths[type])) {
+ CFileMgr::CloseFile(file);
+ bTxdMissing = false;
+ }
+
+ int txdSlot = -1;
+
+ if (bTxdMissing)
+ // Not found, fall back to original textures
+ txdSlot = CTxdStore::FindTxdSlot("frontend2");
+ else {
+ // Found, load txd
+ txdSlot = frontend_controller;
+ if (txdSlot == -1)
+ txdSlot = CTxdStore::AddTxdSlot("frontend_controller");
+ CTxdStore::LoadTxd(txdSlot, controllerTypesPaths[type]);
+ CTxdStore::AddRef(txdSlot);
+ }
+
+ assert(txdSlot != -1);
+ // Load new textures
+ CTxdStore::SetCurrentTxd(txdSlot);
+ for (int i = MENUSPRITE_CONTROLLER; i <= MENUSPRITE_ARROWS4; i++) {
+ m_aFrontEndSprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]);
+ m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER);
+ }
+}
+#endif // GAMEPAD_MENU
+
#undef GetBackJustUp
#undef GetBackJustDown
diff --git a/src/core/Frontend.h b/src/core/Frontend.h
index c1c3983e..b4e70613 100644
--- a/src/core/Frontend.h
+++ b/src/core/Frontend.h
@@ -137,6 +137,13 @@ enum eMenuSprites
MENUSPRITE_DOWNON,
MENUSPRITE_UPOFF,
MENUSPRITE_UPON,
+#ifdef GAMEPAD_MENU
+ MENUSPRITE_CONTROLLER,
+ MENUSPRITE_ARROWS1,
+ MENUSPRITE_ARROWS2,
+ MENUSPRITE_ARROWS3,
+ MENUSPRITE_ARROWS4,
+#endif
NUM_MENU_SPRITES
};
@@ -192,8 +199,10 @@ enum eMenuScreen
MENUPAGE_MOUSE_CONTROLS = 31,
MENUPAGE_PAUSE_MENU = 32,
MENUPAGE_NONE = 33, // Then chooses main menu or pause menu
-#ifdef LEGACY_MENU_OPTIONS
+#ifdef GAMEPAD_MENU
MENUPAGE_CONTROLLER_SETTINGS,
+#endif
+#ifdef LEGACY_MENU_OPTIONS
MENUPAGE_DEBUG_MENU,
MENUPAGE_CONTROLLER_PC_OLD1,
MENUPAGE_CONTROLLER_PC_OLD2,
@@ -206,7 +215,7 @@ enum eMenuScreen
#ifdef GRAPHICS_MENU_OPTIONS
MENUPAGE_GRAPHICS_SETTINGS,
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
MENUPAGE_DETECT_JOYSTICK,
#endif
@@ -275,7 +284,7 @@ enum eMenuAction
MENUACTION_DRAWDIST,
MENUACTION_MOUSESENS,
MENUACTION_MP3VOLUMEBOOST,
-#ifdef LEGACY_MENU_OPTIONS
+#ifdef GAMEPAD_MENU
MENUACTION_CTRLVIBRATION,
MENUACTION_CTRLCONFIG,
#endif
@@ -668,6 +677,18 @@ public:
int8 m_nDisplayMSAALevel;
#endif
+#ifdef GAMEPAD_MENU
+ enum
+ {
+ CONTROLLER_DUALSHOCK2 = 0,
+ CONTROLLER_DUALSHOCK3,
+ CONTROLLER_DUALSHOCK4,
+ CONTROLLER_XBOX360,
+ CONTROLLER_XBOXONE,
+ };
+
+ int8 m_PrefsControllerType;
+#endif
enum LANGUAGE
{
LANGUAGE_AMERICAN,
@@ -714,7 +735,7 @@ public:
#ifdef XBOX_MESSAGE_SCREEN
static uint32 m_nDialogHideTimer;
- static PauseModeTime m_nDialogHideTimerPauseMode;
+ static uint32 m_nDialogHideTimerPauseMode;
static bool m_bDialogOpen;
static wchar *m_pDialogText;
static bool m_bSaveWasSuccessful;
@@ -788,6 +809,10 @@ public:
int8 GetPreviousPageOption();
// uint8 GetNumberOfMenuOptions();
+#ifdef GAMEPAD_MENU
+ void LoadController(int8 type);
+ void PrintController(void);
+#endif
};
#ifndef IMPROVED_VIDEOMODE
diff --git a/src/core/FrontendTriggers.h b/src/core/FrontendTriggers.h
index b2bde09c..bbafb4be 100644
--- a/src/core/FrontendTriggers.h
+++ b/src/core/FrontendTriggers.h
@@ -779,7 +779,7 @@ TriggerAudio_RadioStation(CMenuMultiChoicePicturedTriggered *widget)
if ( CMenuManager::m_PrefsRadioStation != widget->GetMenuSelection() )
{
CMenuManager::m_PrefsRadioStation = widget->GetMenuSelection();
- DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1);
+ DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, TRUE);
DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation);
}
}
diff --git a/src/core/Frontend_PS2.cpp b/src/core/Frontend_PS2.cpp
index c0fcc652..c635c21f 100644
--- a/src/core/Frontend_PS2.cpp
+++ b/src/core/Frontend_PS2.cpp
@@ -2858,7 +2858,7 @@ CMenuManager::ProcessDPadCrossJustDown(void)
{
if ( !gMusicPlaying )
{
- DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1);
+ DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE);
gMusicPlaying = true;
}
}
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index c97a63a7..a370c9d4 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -246,10 +246,16 @@ CGame::InitialiseRenderWare(void)
#ifdef LIBRW
#ifdef PS2_MATFX
- rw::MatFX::modulateEnvMap = true;
+ rw::MatFX::envMapApplyLight = true;
+ rw::MatFX::envMapUseMatColor = true;
+ rw::MatFX::envMapFlipU = true;
#else
- rw::MatFX::modulateEnvMap = false;
+ rw::MatFX::envMapApplyLight = false;
+ rw::MatFX::envMapUseMatColor = false;
+ rw::MatFX::envMapFlipU = false;
#endif
+ rw::RGBA envcol = { 64, 64, 64, 255 };
+ rw::MatFX::envMapColor = envcol;
#else
#ifdef PS2_MATFX
ReplaceMatFxCallback();
@@ -385,6 +391,11 @@ bool CGame::Initialise(const char* datFile)
CTxdStore::Create(gameTxdSlot);
CTxdStore::AddRef(gameTxdSlot);
+#ifdef EXTENDED_PIPELINES
+ // for generic fallback
+ CustomPipes::SetTxdFindCallback();
+#endif
+
LoadingScreen("Loading the Game", "Loading particles", nil);
int particleTxdSlot = CTxdStore::AddTxdSlot("particle");
CTxdStore::LoadTxd(particleTxdSlot, "MODELS/PARTICLE.TXD");
@@ -444,10 +455,7 @@ bool CGame::Initialise(const char* datFile)
// CFileLoader::LoadLevel("DATA\\DEFAULT.DAT");
CFileLoader::LoadLevel(datFile);
-#ifdef EXTENDED_PIPELINES
- // for generic fallback
- CustomPipes::SetTxdFindCallback();
-#endif
+
LoadingScreen("Loading the Game", "Add Particles", nil);
CWorld::AddParticles();
CVehicleModelInfo::LoadVehicleColours();
@@ -574,7 +582,7 @@ bool CGame::Initialise(const char* datFile)
#endif
- DMAudio.SetStartingTrackPositions(true);
+ DMAudio.SetStartingTrackPositions(TRUE);
DMAudio.ChangeMusicMode(MUSICMODE_GAME);
return true;
}
@@ -596,7 +604,6 @@ bool CGame::ShutDown(void)
gPhoneInfo.Shutdown();
CWeapon::ShutdownWeapons();
CPedType::Shutdown();
- CMBlur::MotionBlurClose();
for (int32 i = 0; i < NUMPLAYERS; i++)
{
@@ -622,7 +629,7 @@ bool CGame::ShutDown(void)
CStreaming::Shutdown();
CTxdStore::GameShutdown();
CCollision::Shutdown();
- CWaterLevel::DestroyWavyAtomic();
+ CWaterLevel::Shutdown();
CRubbish::Shutdown();
CClouds::Shutdown();
CShadows::Shutdown();
@@ -631,6 +638,7 @@ bool CGame::ShutDown(void)
CWeaponEffects::Shutdown();
CParticle::Shutdown();
CPools::ShutDown();
+ CHud::ReInitialise();
CTxdStore::RemoveTxdSlot(gameTxdSlot);
CMBlur::MotionBlurClose();
CdStreamRemoveImages();
diff --git a/src/core/MenuScreens.cpp b/src/core/MenuScreens.cpp
index 72e19c49..20484389 100644
--- a/src/core/MenuScreens.cpp
+++ b/src/core/MenuScreens.cpp
@@ -277,13 +277,6 @@ CMenuScreen aScreens[] = {
{ "", 0, 0, },
#ifdef LEGACY_MENU_OPTIONS
- // MENUPAGE_CONTROLLER_SETTINGS
- { "FET_CON", MENUPAGE_OPTIONS, 0,
- MENUACTION_CTRLCONFIG, "FEC_CCF", SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS, 0, 0, 0,
- MENUACTION_CTRLVIBRATION, "FEC_VIB", SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS, 0, 0, 0,
- MENUACTION_GOBACK, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, 0, 0, 0,
- },
-
// MENUPAGE_DEBUG_MENU
{ "FED_DBG", MENUPAGE_NONE, 0,
MENUACTION_RELOADIDE, "FED_RID", SAVESLOT_NONE, MENUPAGE_NONE, 0, 0, 0,
diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp
index 770e8ec1..0534e34a 100644
--- a/src/core/MenuScreensCustom.cpp
+++ b/src/core/MenuScreensCustom.cpp
@@ -1,4 +1,13 @@
#include "common.h"
+#if defined DETECT_JOYSTICK_MENU && defined XINPUT
+#include <windows.h>
+#include <xinput.h>
+#if !defined(PSAPI_VERSION) || (PSAPI_VERSION > 1)
+#pragma comment( lib, "Xinput9_1_0.lib" )
+#else
+#pragma comment( lib, "Xinput.lib" )
+#endif
+#endif
#include "platform.h"
#include "crossplatform.h"
#include "Renderer.h"
@@ -69,11 +78,17 @@
#endif
#ifdef INVERT_LOOK_FOR_PAD
- #define INVERT_PAD_SELECTOR MENUACTION_CFO_SELECT, "FEC_ILU", { new CCFOSelect((int8*)&CPad::bInvertLook4Pad, "Controller", "InvertPad", off_on, 2, false) }, 150, 0, MENUALIGN_LEFT,
+ #define INVERT_PAD_SELECTOR MENUACTION_CFO_SELECT, "FEC_ILU", { new CCFOSelect((int8*)&CPad::bInvertLook4Pad, "Controller", "InvertPad", off_on, 2, false) }, 0, 0, MENUALIGN_LEFT,
#else
#define INVERT_PAD_SELECTOR
#endif
+#ifdef GAMEPAD_MENU
+ #define SELECT_CONTROLLER_TYPE MENUACTION_CFO_SELECT, "FEC_TYP", { new CCFOSelect((int8*)&FrontEndMenuManager.m_PrefsControllerType, "Controller", "Type", controllerTypes, ARRAY_SIZE(controllerTypes), false, ControllerTypeAfterChange) }, 0, 0, MENUALIGN_LEFT,
+#else
+ #define SELECT_CONTROLLER_TYPE
+#endif
+
const char *filterNames[] = { "FEM_NON", "FEM_SIM", "FEM_NRM", "FEM_MOB" };
const char *off_on[] = { "FEM_OFF", "FEM_ON" };
@@ -166,38 +181,6 @@ void IslandLoadingAfterChange(int8 before, int8 after) {
}
#endif
-#ifdef MORE_LANGUAGES
-void LangPolSelect(int8 action)
-{
- if (action == FEOPTION_ACTION_SELECT) {
- FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_POLISH;
- FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
- FrontEndMenuManager.InitialiseChangedLanguageSettings();
- FrontEndMenuManager.SaveSettings();
- }
-}
-
-void LangRusSelect(int8 action)
-{
- if (action == FEOPTION_ACTION_SELECT) {
- FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_RUSSIAN;
- FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
- FrontEndMenuManager.InitialiseChangedLanguageSettings();
- FrontEndMenuManager.SaveSettings();
- }
-}
-
-void LangJapSelect(int8 action)
-{
- if (action == FEOPTION_ACTION_SELECT) {
- FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_JAPANESE;
- FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
- FrontEndMenuManager.InitialiseChangedLanguageSettings();
- FrontEndMenuManager.SaveSettings();
- }
-}
-#endif
-
#ifndef MULTISAMPLING
void GraphicsGoBack() {
}
@@ -277,11 +260,13 @@ void ScreenModeAfterChange(int8 before, int8 after)
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
wchar selectedJoystickUnicode[128];
int cachedButtonNum = -1;
wchar* DetectJoystickDraw(bool* disabled, bool userHovering) {
+
+#if defined RW_GL3 && !defined LIBRW_SDL2
int numButtons;
int found = -1;
const char *joyname;
@@ -312,6 +297,37 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) {
}
}
if (PSGLOBAL(joy1id) == -1)
+#elif defined XINPUT
+ int found = -1;
+ XINPUT_STATE xstate;
+ memset(&xstate, 0, sizeof(XINPUT_STATE));
+ if (userHovering) {
+ for (int i = 0; i <= 3; i++) {
+ if (XInputGetState(i, &xstate) == ERROR_SUCCESS) {
+ if (xstate.Gamepad.bLeftTrigger || xstate.Gamepad.bRightTrigger) {
+ found = i;
+ break;
+ }
+ for (int j = XINPUT_GAMEPAD_DPAD_UP; j != XINPUT_GAMEPAD_Y << 1; j = (j << 1)) {
+ if (xstate.Gamepad.wButtons & j) {
+ found = i;
+ break;
+ }
+ }
+ if (found != -1)
+ break;
+ }
+ }
+ if (found != -1 && CPad::XInputJoy1 != found) {
+ // We should never leave pads -1, so we can process them when they're connected and kinda support hotplug.
+ CPad::XInputJoy2 = (CPad::XInputJoy1 == -1 ? (found + 1) % 4 : CPad::XInputJoy1);
+ CPad::XInputJoy1 = found;
+ cachedButtonNum = 0; // fake too, because xinput bypass CControllerConfig
+ }
+ }
+ sprintf(gSelectedJoystickName, "%d", CPad::XInputJoy1); // fake, on xinput we only store gamepad ids(thanks MS) so this is a temp variable to be used below
+ if (CPad::XInputJoy1 == -1)
+#endif
AsciiToUnicode("Not found", selectedJoystickUnicode);
else
AsciiToUnicode(gSelectedJoystickName, selectedJoystickUnicode);
@@ -332,6 +348,14 @@ void DetectJoystickGoBack() {
}
#endif
+#ifdef GAMEPAD_MENU
+const char* controllerTypes[] = { "FEC_DS2", "FEC_DS3", "FEC_DS4", "FEC_360", "FEC_ONE" };
+void ControllerTypeAfterChange(int8 before, int8 after)
+{
+ FrontEndMenuManager.LoadController(after);
+}
+#endif
+
CMenuScreenCustom aScreens[] = {
// MENUPAGE_STATS = 0
{ "FEH_STA", MENUPAGE_NONE, nil, nil,
@@ -415,11 +439,6 @@ CMenuScreenCustom aScreens[] = {
MENUACTION_LANG_GER, "FEL_GER", {nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS}, 0, 0, MENUALIGN_CENTER,
MENUACTION_LANG_ITA, "FEL_ITA", {nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS}, 0, 0, MENUALIGN_CENTER,
MENUACTION_LANG_SPA, "FEL_SPA", {nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS}, 0, 0, MENUALIGN_CENTER,
-#ifdef MORE_LANGUAGES
- MENUACTION_CFO_DYNAMIC, "FEL_POL", { new CCFODynamic(nil, nil, nil, nil, LangPolSelect) }, 0, 0, MENUALIGN_CENTER,
- MENUACTION_CFO_DYNAMIC, "FEL_RUS", { new CCFODynamic(nil, nil, nil, nil, LangRusSelect) }, 0, 0, MENUALIGN_CENTER
- MENUACTION_CFO_DYNAMIC, "FEL_JAP", { new CCFODynamic(nil, nil, nil, nil, LangJapSelect) }, 0, 0, MENUALIGN_CENTER,
-#endif
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, MENUALIGN_CENTER,
},
@@ -567,11 +586,13 @@ CMenuScreenCustom aScreens[] = {
#else
MENUACTION_KEYBOARDCTRLS,"FEC_RED", {nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS}, 320, 150, MENUALIGN_CENTER,
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef GAMEPAD_MENU
+ MENUACTION_CHANGEMENU, "FET_AGS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, MENUALIGN_CENTER,
+#endif
+#ifdef DETECT_JOYSTICK_MENU
MENUACTION_CHANGEMENU, "FEC_JOD", {nil, SAVESLOT_NONE, MENUPAGE_DETECT_JOYSTICK}, 0, 0, MENUALIGN_CENTER,
#endif
MENUACTION_CHANGEMENU, "FEC_MOU", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 0, 0, MENUALIGN_CENTER,
- INVERT_PAD_SELECTOR
MENUACTION_RESTOREDEF, "FET_DEF", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC}, 320, 0, MENUALIGN_CENTER,
MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 0, MENUALIGN_CENTER,
},
@@ -582,7 +603,7 @@ CMenuScreenCustom aScreens[] = {
MENUACTION_LOADRADIO, "FEO_AUD", {nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS}, 0, 0, MENUALIGN_CENTER,
MENUACTION_CHANGEMENU, "FEO_DIS", {nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS}, 0, 0, MENUALIGN_CENTER,
#ifdef GRAPHICS_MENU_OPTIONS
- MENUACTION_CHANGEMENU, "FET_GRA", {nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS}, 0, 0, MENUALIGN_CENTER,
+ MENUACTION_CHANGEMENU, "FET_GFX", {nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS}, 0, 0, MENUALIGN_CENTER,
#endif
MENUACTION_CHANGEMENU, "FEO_LAN", {nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS}, 0, 0, MENUALIGN_CENTER,
MENUACTION_PLAYERSETUP, "FET_PS", {nil, SAVESLOT_NONE, MENUPAGE_SKIN_SELECT}, 0, 0, MENUALIGN_CENTER,
@@ -611,8 +632,12 @@ CMenuScreenCustom aScreens[] = {
{ "FEC_MOU", MENUPAGE_CONTROLLER_PC, nil, nil,
MENUACTION_MOUSESENS, "FEC_MSH", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 40, 170, MENUALIGN_LEFT,
MENUACTION_INVVERT, "FEC_IVV", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 0, 0, MENUALIGN_LEFT,
+#ifndef GAMEPAD_MENU
+ INVERT_PAD_SELECTOR
+#endif
MENUACTION_MOUSESTEER, "FET_MST", {nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS}, 0, 0, MENUALIGN_LEFT,
- MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 260, MENUALIGN_CENTER,
+ MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 0, MENUALIGN_CENTER,
+ //MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, 0}, 320, 260, MENUALIGN_CENTER, // original y
},
// MENUPAGE_PAUSE_MENU = 32
@@ -629,15 +654,17 @@ CMenuScreenCustom aScreens[] = {
// MENUPAGE_NONE = 33
{ "", 0, nil, nil, },
-
+#ifdef GAMEPAD_MENU
+ { "FET_AGS", MENUPAGE_CONTROLLER_PC, new CCustomScreenLayout({40, 78, 25, true, true}), nil,
+ MENUACTION_CTRLCONFIG, "FEC_CCF", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, 40, 76, MENUALIGN_LEFT,
+ MENUACTION_CTRLDISPLAY, "FEC_CDP", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, 0, 0, MENUALIGN_LEFT,
+ INVERT_PAD_SELECTOR
+ MENUACTION_CTRLVIBRATION, "FEC_VIB", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, 0, 0, MENUALIGN_LEFT,
+ SELECT_CONTROLLER_TYPE
+ MENUACTION_GOBACK, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, 0, 0, MENUALIGN_LEFT,
+ },
+#endif
#ifdef LEGACY_MENU_OPTIONS
- // MENUPAGE_CONTROLLER_SETTINGS = 4
- { "FET_CON", MENUPAGE_OPTIONS, nil, nil,
- MENUACTION_CTRLCONFIG, "FEC_CCF", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, 0,
- MENUACTION_CTRLVIBRATION, "FEC_VIB", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, 0,
- MENUACTION_GOBACK, "FEDS_TB", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
- },
-
// MENUPAGE_DEBUG_MENU = 18
{ "FED_DBG", MENUPAGE_NONE, nil, nil,
MENUACTION_RELOADIDE, "FED_RID", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0,
@@ -692,7 +719,7 @@ CMenuScreenCustom aScreens[] = {
#ifdef GRAPHICS_MENU_OPTIONS
// MENUPAGE_GRAPHICS_SETTINGS
- { "FET_GRA", MENUPAGE_OPTIONS, new CCustomScreenLayout({40, 78, 25, true, true}), GraphicsGoBack,
+ { "FET_GFX", MENUPAGE_OPTIONS, new CCustomScreenLayout({40, 78, 25, true, true}), GraphicsGoBack,
MENUACTION_SCREENRES, "FED_RES", { nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS }, 0, 0, MENUALIGN_LEFT,
MENUACTION_WIDESCREEN, "FED_WIS", { nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS }, 0, 0, MENUALIGN_LEFT,
@@ -715,7 +742,7 @@ CMenuScreenCustom aScreens[] = {
},
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
// MENUPAGE_DETECT_JOYSTICK
{ "FEC_JOD", MENUPAGE_CONTROLLER_PC, new CCustomScreenLayout({0, 0, 0, false, false, 30}), DetectJoystickGoBack,
MENUACTION_LABEL, "FEC_JPR", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, 0, 0, 0,
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp
index 5c4ffbf8..86c218fa 100644
--- a/src/core/Pad.cpp
+++ b/src/core/Pad.cpp
@@ -1594,8 +1594,14 @@ void CPad::AddToPCCheatString(char c)
}
#ifdef XINPUT
+int CPad::XInputJoy1 = 0;
+int CPad::XInputJoy2 = 1;
void CPad::AffectFromXinput(uint32 pad)
{
+ pad = pad == 0 ? XInputJoy1 : XInputJoy2;
+ if (pad == -1) // LoadINIControllerSettings can set it to -1
+ return;
+
XINPUT_STATE xstate;
memset(&xstate, 0, sizeof(XINPUT_STATE));
if (XInputGetState(pad, &xstate) == ERROR_SUCCESS)
diff --git a/src/core/Pad.h b/src/core/Pad.h
index d913c16f..748482e7 100644
--- a/src/core/Pad.h
+++ b/src/core/Pad.h
@@ -288,6 +288,8 @@ public:
int16 GetSkipCutscene() { return GetCrossJustDown(); }
#ifdef XINPUT
+ static int XInputJoy1;
+ static int XInputJoy2;
void AffectFromXinput(uint32 pad);
#endif
diff --git a/src/core/Placeable.h b/src/core/Placeable.h
index b0f9a15a..9c8c292a 100644
--- a/src/core/Placeable.h
+++ b/src/core/Placeable.h
@@ -2,12 +2,13 @@
class CPlaceable
{
+protected:
+ CMatrix m_matrix;
+
public:
// disable allocation
static void *operator new(size_t);
- CMatrix m_matrix;
-
CPlaceable(void);
const CVector &GetPosition(void) { return m_matrix.GetPosition(); }
void SetPosition(float x, float y, float z) {
@@ -20,6 +21,7 @@ public:
CVector &GetForward(void) { return m_matrix.GetForward(); }
CVector &GetUp(void) { return m_matrix.GetUp(); }
CMatrix &GetMatrix(void) { return m_matrix; }
+ void SetMatrix(CMatrix &newMatrix) { m_matrix = newMatrix; }
void SetTransform(RwMatrix *m) { m_matrix = CMatrix(m, false); }
void SetHeading(float angle);
void SetOrientation(float x, float y, float z){
diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp
index bf35f8ef..d824d498 100644
--- a/src/core/Pools.cpp
+++ b/src/core/Pools.cpp
@@ -105,7 +105,7 @@ CPools::CheckPoolsEmpty()
printf("pools have been cleared\n");
}
-
+// Thankfully unused, it would break the game!
void
CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot)
{
diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp
index f1bc1655..b8c3d717 100644
--- a/src/core/Radar.cpp
+++ b/src/core/Radar.cpp
@@ -239,6 +239,75 @@ void GetTextureCorners(int32 x, int32 y, CVector2D *out)
out[3].y = RADAR_TILE_SIZE * (y);
}
+uint8 CRadar::CalculateBlipAlpha(float dist)
+{
+ if (FrontEndMenuManager.m_bMenuMapActive)
+ return 255;
+
+ if (dist <= 1.0f)
+ return 255;
+
+ if (dist <= 10.0f)
+ return (128.0f * ((dist - 1.0f) / 9.0f)) + ((1.0f - (dist - 1.0f) / 9.0f) * 255.0f);
+
+ return 128;
+}
+
+void CRadar::ChangeBlipBrightness(int32 i, int32 bright)
+{
+ int index = GetActualBlipArrayIndex(i);
+ if (index != -1)
+ ms_RadarTrace[index].m_bDim = bright != 1;
+}
+
+void CRadar::ChangeBlipColour(int32 i, int32 color)
+{
+ int index = GetActualBlipArrayIndex(i);
+ if (index != -1)
+ ms_RadarTrace[index].m_nColor = color;
+}
+
+void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display)
+{
+ int index = GetActualBlipArrayIndex(i);
+ if (index != -1)
+ ms_RadarTrace[index].m_eBlipDisplay = display;
+}
+
+void CRadar::ChangeBlipScale(int32 i, int32 scale)
+{
+ int index = GetActualBlipArrayIndex(i);
+ if (index != -1)
+ ms_RadarTrace[index].m_wScale = scale;
+}
+
+void CRadar::ClearBlip(int32 i)
+{
+ int index = GetActualBlipArrayIndex(i);
+ if (index != -1) {
+ SetRadarMarkerState(index, false);
+ ms_RadarTrace[index].m_bInUse = false;
+ ms_RadarTrace[index].m_eBlipType = BLIP_NONE;
+ ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER;
+ ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE;
+ }
+}
+
+void CRadar::ClearBlipForEntity(eBlipType type, int32 id)
+{
+ for (int i = 0; i < NUMRADARBLIPS; i++) {
+ if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) {
+ SetRadarMarkerState(i, false);
+ ms_RadarTrace[i].m_bInUse = false;
+ ms_RadarTrace[i].m_eBlipType = BLIP_NONE;
+ ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER;
+ ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE;
+ }
+ };
+}
+
+// Why not a proper clipping algorithm?
+#ifdef THIS_IS_STUPID
bool IsPointInsideRadar(const CVector2D &point)
{
@@ -319,74 +388,6 @@ int LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D &
return edge;
}
-uint8 CRadar::CalculateBlipAlpha(float dist)
-{
- if (FrontEndMenuManager.m_bMenuMapActive)
- return 255;
-
- if (dist <= 1.0f)
- return 255;
-
- if (dist <= 10.0f)
- return (128.0f * ((dist - 1.0f) / 9.0f)) + ((1.0f - (dist - 1.0f) / 9.0f) * 255.0f);
-
- return 128;
-}
-
-void CRadar::ChangeBlipBrightness(int32 i, int32 bright)
-{
- int index = GetActualBlipArrayIndex(i);
- if (index != -1)
- ms_RadarTrace[index].m_bDim = bright != 1;
-}
-
-void CRadar::ChangeBlipColour(int32 i, int32 color)
-{
- int index = GetActualBlipArrayIndex(i);
- if (index != -1)
- ms_RadarTrace[index].m_nColor = color;
-}
-
-void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display)
-{
- int index = GetActualBlipArrayIndex(i);
- if (index != -1)
- ms_RadarTrace[index].m_eBlipDisplay = display;
-}
-
-void CRadar::ChangeBlipScale(int32 i, int32 scale)
-{
- int index = GetActualBlipArrayIndex(i);
- if (index != -1)
- ms_RadarTrace[index].m_wScale = scale;
-}
-
-void CRadar::ClearBlip(int32 i)
-{
- int index = GetActualBlipArrayIndex(i);
- if (index != -1) {
- SetRadarMarkerState(index, false);
- ms_RadarTrace[index].m_bInUse = false;
- ms_RadarTrace[index].m_eBlipType = BLIP_NONE;
- ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER;
- ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE;
- }
-}
-
-void CRadar::ClearBlipForEntity(eBlipType type, int32 id)
-{
- for (int i = 0; i < NUMRADARBLIPS; i++) {
- if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) {
- SetRadarMarkerState(i, false);
- ms_RadarTrace[i].m_bInUse = false;
- ms_RadarTrace[i].m_eBlipType = BLIP_NONE;
- ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER;
- ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE;
- }
- };
-}
-
-// Why not a proper clipping algorithm?
int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect)
{
CVector2D corners[4] = {
@@ -465,6 +466,50 @@ int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect)
return n;
}
+#else
+
+int
+ClipPolyPlane(const CVector2D *in, int nin, CVector2D *out, CVector *plane)
+{
+ int j;
+ int nout;
+ int x1, x2;
+ float d1, d2, t;
+
+ nout = 0;
+ for(j = 0; j < nin; j++){
+ x1 = j;
+ x2 = (j+1) % nin;
+
+ d1 = plane->x*in[x1].x + plane->y*in[x1].y + plane->z;
+ d2 = plane->x*in[x2].x + plane->y*in[x2].y + plane->z;
+ if(d1*d2 < 0.0f){
+ t = d1/(d1 - d2);
+ out[nout++] = in[x1]*(1.0f-t) + in[x2]*t;
+ }
+ if(d2 >= 0.0f)
+ out[nout++] = in[x2];
+ }
+ return nout;
+}
+
+int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect)
+{
+ CVector planes[4] = {
+ CVector(-1.0f, 0.0f, 1.0f),
+ CVector( 1.0f, 0.0f, 1.0f),
+ CVector(0.0f, -1.0f, 1.0f),
+ CVector(0.0f, 1.0f, 1.0f)
+ };
+ CVector2D tmp[8];
+ int n;
+ if(n = ClipPolyPlane(rect, 4, tmp, &planes[0]), n == 0) return 0;
+ if(n = ClipPolyPlane(tmp, n, poly, &planes[1]), n == 0) return 0;
+ if(n = ClipPolyPlane(poly, n, tmp, &planes[2]), n == 0) return 0;
+ if(n = ClipPolyPlane(tmp, n, poly, &planes[3]), n == 0) return 0;
+ return n;
+}
+#endif
bool CRadar::DisplayThisBlip(int32 counter)
{
@@ -488,7 +533,7 @@ void CRadar::Draw3dMarkers()
if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) {
CVector pos = entity->GetPosition();
pos.z += 1.2f * CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 2.5f;
- C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 2.5f, CARBLIP_MARKER_COLOR_R, CARBLIP_MARKER_COLOR_G, CARBLIP_MARKER_COLOR_B, CARBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
+ C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 2.5f, CARBLIP_MARKER_COLOR_R, CARBLIP_MARKER_COLOR_G, CARBLIP_MARKER_COLOR_B, CARBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
}
break;
}
@@ -502,7 +547,7 @@ void CRadar::Draw3dMarkers()
if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) {
CVector pos = entity->GetPosition();
pos.z += 3.0f;
- C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.5f, CHARBLIP_MARKER_COLOR_R, CHARBLIP_MARKER_COLOR_G, CHARBLIP_MARKER_COLOR_B, CHARBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
+ C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 1.5f, CHARBLIP_MARKER_COLOR_R, CHARBLIP_MARKER_COLOR_G, CHARBLIP_MARKER_COLOR_B, CHARBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
}
break;
}
@@ -512,7 +557,7 @@ void CRadar::Draw3dMarkers()
if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) {
CVector pos = entity->GetPosition();
pos.z += CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 1.0f + 1.0f;
- C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.0f, OBJECTBLIP_MARKER_COLOR_R, OBJECTBLIP_MARKER_COLOR_G, OBJECTBLIP_MARKER_COLOR_B, OBJECTBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
+ C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 1.0f, OBJECTBLIP_MARKER_COLOR_R, OBJECTBLIP_MARKER_COLOR_G, OBJECTBLIP_MARKER_COLOR_B, OBJECTBLIP_MARKER_COLOR_A, 1024, 0.2f, 5);
}
break;
}
@@ -521,7 +566,7 @@ void CRadar::Draw3dMarkers()
case BLIP_CONTACT_POINT:
if (!CTheScripts::IsPlayerOnAMission()) {
if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY)
- C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), 4, ms_RadarTrace[i].m_vecPos, 2.0f, COORDBLIP_MARKER_COLOR_R, COORDBLIP_MARKER_COLOR_G, COORDBLIP_MARKER_COLOR_B, COORDBLIP_MARKER_COLOR_A, 2048, 0.2f, 0);
+ C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_CYLINDER, ms_RadarTrace[i].m_vecPos, 2.0f, COORDBLIP_MARKER_COLOR_R, COORDBLIP_MARKER_COLOR_G, COORDBLIP_MARKER_COLOR_B, COORDBLIP_MARKER_COLOR_A, 2048, 0.2f, 0);
}
break;
}
@@ -879,7 +924,7 @@ int32 CRadar::GetNewUniqueBlipIndex(int32 i)
uint32 CRadar::GetRadarTraceColour(uint32 color, bool bright)
{
- int32 c;
+ uint32 c;
switch (color) {
case RADAR_TRACE_RED:
if (bright)
@@ -1458,7 +1503,7 @@ CRadar::InitFrontEndMap()
void
CRadar::DrawYouAreHereSprite(float x, float y)
{
- static PauseModeTime lastChange = 0;
+ static uint32 lastChange = 0;
static bool show = true;
if (show) {
@@ -1658,7 +1703,7 @@ void
CRadar::DrawLegend(int32 x, int32 y, int32 sprite)
{
if (sprite < 0) {
- static PauseModeTime lastChange = 0;
+ static uint32 lastChange = 0;
static int8 blipMode = 0;
CRGBA color;
diff --git a/src/core/References.cpp b/src/core/References.cpp
index dc83d96d..09913817 100644
--- a/src/core/References.cpp
+++ b/src/core/References.cpp
@@ -39,9 +39,7 @@ CEntity::RegisterReference(CEntity **pent)
ref->pentity = pent;
ref->next = m_pFirstReference;
m_pFirstReference = ref;
- return;
}
- return;
}
// Clean up the reference from *pent -> 'this'
diff --git a/src/core/Ropes.cpp b/src/core/Ropes.cpp
index ffce36f9..e390a917 100644
--- a/src/core/Ropes.cpp
+++ b/src/core/Ropes.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "Timer.h"
#include "ModelIndices.h"
#include "Streaming.h"
@@ -91,9 +92,11 @@ void
CRopes::Render(void)
{
int i;
+ PUSH_RENDERGROUP("CRopes::Render");
for(i = 0; i < ARRAY_SIZE(aRopes); i++)
if(aRopes[i].m_bActive)
aRopes[i].Render();
+ POP_RENDERGROUP();
}
bool
@@ -167,7 +170,7 @@ CRopes::CreateRopeWithSwatComingDown(CVector pos)
swat->bUsesCollision = false;
swat->m_pRopeEntity = (CEntity*)1;
swat->m_nRopeID = 100 + ropeId;
- CAnimManager::BlendAnimation(swat->GetClump(), ASSOCGRP_STD, ANIM_ABSEIL, 4.0f);
+ CAnimManager::BlendAnimation(swat->GetClump(), ASSOCGRP_STD, ANIM_STD_ABSEIL, 4.0f);
ropeId++;
return true;
}
diff --git a/src/core/Streaming.cpp b/src/core/Streaming.cpp
index 8cdc3a66..03b78392 100644
--- a/src/core/Streaming.cpp
+++ b/src/core/Streaming.cpp
@@ -214,11 +214,15 @@ CStreaming::Init2(void)
// allocate streaming buffers
if(ms_streamingBufferSize & 1) ms_streamingBufferSize++;
+#ifndef ONE_THREAD_PER_CHANNEL
ms_pStreamingBuffer[0] = (int8*)RwMallocAlign(ms_streamingBufferSize*CDSTREAM_SECTOR_SIZE, CDSTREAM_SECTOR_SIZE);
ms_streamingBufferSize /= 2;
ms_pStreamingBuffer[1] = ms_pStreamingBuffer[0] + ms_streamingBufferSize*CDSTREAM_SECTOR_SIZE;
-#ifdef ONE_THREAD_PER_CHANNEL
- ms_pStreamingBuffer[2] = (int8*)RwMallocAlign(ms_streamingBufferSize*2*CDSTREAM_SECTOR_SIZE, CDSTREAM_SECTOR_SIZE);
+#else
+ ms_pStreamingBuffer[0] = (int8*)RwMallocAlign(ms_streamingBufferSize*2*CDSTREAM_SECTOR_SIZE, CDSTREAM_SECTOR_SIZE);
+ ms_streamingBufferSize /= 2;
+ ms_pStreamingBuffer[1] = ms_pStreamingBuffer[0] + ms_streamingBufferSize*CDSTREAM_SECTOR_SIZE;
+ ms_pStreamingBuffer[2] = ms_pStreamingBuffer[1] + ms_streamingBufferSize*CDSTREAM_SECTOR_SIZE;
ms_pStreamingBuffer[3] = ms_pStreamingBuffer[2] + ms_streamingBufferSize*CDSTREAM_SECTOR_SIZE;
#endif
debug("Streaming buffer size is %d sectors", ms_streamingBufferSize);
@@ -1759,7 +1763,13 @@ CStreaming::StreamVehiclesAndPeds(void)
for(i = 0; i < CCarCtrl::TOTAL_CUSTOM_CLASSES; i++){
if(CCarCtrl::NumRequestsOfCarRating[i] > maxReq &&
((i == 0 && zone.carThreshold[0] != 0) ||
+#ifdef FIX_BUGS
+ (i < CCarCtrl::NUM_CAR_CLASSES && zone.carThreshold[i] != zone.carThreshold[i-1]) ||
+ (i == CCarCtrl::NUM_CAR_CLASSES && zone.boatThreshold[i - CCarCtrl::NUM_CAR_CLASSES] != 0) ||
+ (i > CCarCtrl::NUM_CAR_CLASSES && i < CCarCtrl::TOTAL_CUSTOM_CLASSES && zone.boatThreshold[i - CCarCtrl::NUM_CAR_CLASSES] != zone.boatThreshold[i - CCarCtrl::NUM_CAR_CLASSES - 1]))) {
+#else
(i != 0 && zone.carThreshold[i] != zone.carThreshold[i-1]))) {
+#endif
maxReq = CCarCtrl::NumRequestsOfCarRating[i];
mostRequestedRating = i;
}
@@ -1902,8 +1912,7 @@ CStreaming::RemoveCurrentZonesModels(void)
if (ms_currentPedGrp != -1)
for (i = 0; i < NUMMODELSPERPEDGROUP; i++) {
ms_bIsPedFromPedGroupLoaded[i] = false;
- if (CPopulation::ms_pPedGroups[ms_currentPedGrp].models[i] != -1 &&
- CPopulation::ms_pPedGroups[ms_currentPedGrp].models[i] != MI_MALE01) {
+ if (CPopulation::ms_pPedGroups[ms_currentPedGrp].models[i] != -1) {
SetModelIsDeletable(CPopulation::ms_pPedGroups[ms_currentPedGrp].models[i]);
SetModelTxdIsDeletable(CPopulation::ms_pPedGroups[ms_currentPedGrp].models[i]);
}
@@ -2344,9 +2353,10 @@ CStreaming::LoadRequestedModels(void)
}
-// Let's load models first, then process it. Unfortunately processing models are still single-threaded.
+// Let's load models in 4 threads; when one of them becomes idle, process the file, and fill thread with another file. Unfortunately processing models are still single-threaded.
// Currently only supported on POSIX streamer.
-#ifdef ONE_THREAD_PER_CHANNEL
+// WIP - some files are loaded swapped (CdStreamPosix problem?)
+#if 0 //def ONE_THREAD_PER_CHANNEL
void
CStreaming::LoadAllRequestedModels(bool priority)
{
@@ -2365,14 +2375,18 @@ CStreaming::LoadAllRequestedModels(bool priority)
int streamIds[ARRAY_SIZE(ms_pStreamingBuffer)];
int streamSizes[ARRAY_SIZE(ms_pStreamingBuffer)];
int streamPoses[ARRAY_SIZE(ms_pStreamingBuffer)];
- bool first = true;
+ int readOrder[4] = {-1}; // Channel IDs ordered by read time
+ int readI = 0;
int processI = 0;
+ bool first = true;
+
+ // All those "first" checks are because of variables aren't initialized in first pass.
while (true) {
- // Enumerate files and start reading
for (int i=0; i<ARRAY_SIZE(ms_pStreamingBuffer); i++) {
+
+ // Channel has file to load
if (!first && streamIds[i] != -1) {
- processI = i;
continue;
}
@@ -2385,12 +2399,16 @@ CStreaming::LoadAllRequestedModels(bool priority)
if (ms_aInfoForModel[streamId].GetCdPosnAndSize(posn, size)) {
streamIds[i] = -1;
+
+ // Big file, needs 2 buffer
if (size > (uint32)ms_streamingBufferSize) {
if (i + 1 == ARRAY_SIZE(ms_pStreamingBuffer))
- continue;
+ break;
else if (!first && streamIds[i+1] != -1)
continue;
+
} else {
+ // Buffer of current channel is part of a "big file", pass
if (i != 0 && streamIds[i-1] != -1 && streamSizes[i-1] > (uint32)ms_streamingBufferSize)
continue;
}
@@ -2400,8 +2418,18 @@ CStreaming::LoadAllRequestedModels(bool priority)
streamIds[i] = streamId;
streamSizes[i] = size;
streamPoses[i] = posn;
+
+ if (!first)
+ assert(readOrder[readI] == -1);
+
+ //printf("read: order %d, ch %d, id %d, size %d\n", readI, i, streamId, size);
+
CdStreamRead(i, ms_pStreamingBuffer[i], imgOffset+posn, size);
- processI = i;
+ readOrder[readI] = i;
+ if (first && readI+1 != ARRAY_SIZE(readOrder))
+ readOrder[readI+1] = -1;
+
+ readI = (readI + 1) % ARRAY_SIZE(readOrder);
} else {
ms_aInfoForModel[streamId].RemoveFromList();
DecrementRef(streamId);
@@ -2409,33 +2437,40 @@ CStreaming::LoadAllRequestedModels(bool priority)
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED;
streamIds[i] = -1;
}
- } else
+ } else {
streamIds[i] = -1;
+ break;
+ }
}
first = false;
+ int nextChannel = readOrder[processI];
- // Now process
- if (streamIds[processI] == -1)
+ // Now start processing
+ if (nextChannel == -1 || streamIds[nextChannel] == -1)
break;
+ //printf("process: order %d, ch %d, id %d\n", processI, nextChannel, streamIds[nextChannel]);
+
// Try again on error
- while (CdStreamSync(processI) != STREAM_NONE) {
- CdStreamRead(processI, ms_pStreamingBuffer[processI], imgOffset+streamPoses[processI], streamSizes[processI]);
+ while (CdStreamSync(nextChannel) != STREAM_NONE) {
+ CdStreamRead(nextChannel, ms_pStreamingBuffer[nextChannel], imgOffset+streamPoses[nextChannel], streamSizes[nextChannel]);
}
- ms_aInfoForModel[streamIds[processI]].m_loadState = STREAMSTATE_READING;
-
- MakeSpaceFor(streamSizes[processI] * CDSTREAM_SECTOR_SIZE);
- ConvertBufferToObject(ms_pStreamingBuffer[processI], streamIds[processI]);
- if(ms_aInfoForModel[streamIds[processI]].m_loadState == STREAMSTATE_STARTED)
- FinishLoadingLargeFile(ms_pStreamingBuffer[processI], streamIds[processI]);
+ ms_aInfoForModel[streamIds[nextChannel]].m_loadState = STREAMSTATE_READING;
- if(streamIds[processI] < STREAM_OFFSET_TXD){
- CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(streamIds[processI]);
+ MakeSpaceFor(streamSizes[nextChannel] * CDSTREAM_SECTOR_SIZE);
+ ConvertBufferToObject(ms_pStreamingBuffer[nextChannel], streamIds[nextChannel]);
+ if(ms_aInfoForModel[streamIds[nextChannel]].m_loadState == STREAMSTATE_STARTED)
+ FinishLoadingLargeFile(ms_pStreamingBuffer[nextChannel], streamIds[nextChannel]);
+
+ if(streamIds[nextChannel] < STREAM_OFFSET_TXD){
+ CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(streamIds[nextChannel]);
if(mi->IsSimple())
mi->m_alpha = 255;
}
- streamIds[processI] = -1;
+ streamIds[nextChannel] = -1;
+ readOrder[processI] = -1;
+ processI = (processI + 1) % ARRAY_SIZE(readOrder);
}
ms_bLoadingBigModel = false;
@@ -2482,7 +2517,7 @@ CStreaming::LoadAllRequestedModels(bool priority)
status = CdStreamRead(0, ms_pStreamingBuffer[0], imgOffset+posn, size);
while(CdStreamSync(0) || status == STREAM_NONE);
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_READING;
-
+
MakeSpaceFor(size * CDSTREAM_SECTOR_SIZE);
ConvertBufferToObject(ms_pStreamingBuffer[0], streamId);
if(ms_aInfoForModel[streamId].m_loadState == STREAMSTATE_STARTED)
@@ -2539,7 +2574,7 @@ CStreaming::FlushRequestList(void)
next = si->m_next;
RemoveModel(si - ms_aInfoForModel);
}
-#ifndef _WIN32
+#ifdef FLUSHABLE_STREAMING
if(ms_channel[0].state == CHANNELSTATE_READING) {
flushStream[0] = 1;
}
@@ -3295,4 +3330,4 @@ CStreaming::PrintStreamingBufferState()
DoRWStuffEndOfFrame();
}
CTimer::Update();
-} \ No newline at end of file
+}
diff --git a/src/core/Streaming.h b/src/core/Streaming.h
index 4b9502e9..1ca43671 100644
--- a/src/core/Streaming.h
+++ b/src/core/Streaming.h
@@ -91,7 +91,11 @@ public:
static int32 ms_oldSectorX;
static int32 ms_oldSectorY;
static int32 ms_streamingBufferSize;
+#ifndef ONE_THREAD_PER_CHANNEL
static int8 *ms_pStreamingBuffer[2];
+#else
+ static int8 *ms_pStreamingBuffer[4];
+#endif
static size_t ms_memoryUsed;
static CStreamingChannel ms_channel[2];
static int32 ms_channelError;
diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp
index 5ebe3f53..77f26a8b 100644
--- a/src/core/Timer.cpp
+++ b/src/core/Timer.cpp
@@ -8,7 +8,7 @@
#include "SpecialFX.h"
uint32 CTimer::m_snTimeInMilliseconds;
-PauseModeTime CTimer::m_snTimeInMillisecondsPauseMode = 1;
+uint32 CTimer::m_snTimeInMillisecondsPauseMode = 1;
uint32 CTimer::m_snTimeInMillisecondsNonClipped;
uint32 CTimer::m_snPreviousTimeInMilliseconds;
@@ -17,7 +17,11 @@ float CTimer::ms_fTimeScale;
float CTimer::ms_fTimeStep;
float CTimer::ms_fTimeStepNonClipped;
bool CTimer::m_UserPause;
-bool CTimer::m_CodePause;
+bool CTimer::m_CodePause;
+#ifdef FIX_BUGS
+uint32 CTimer::m_LogicalFrameCounter;
+uint32 CTimer::m_LogicalFramesPassed;
+#endif
uint32 _nCyclesPerMS = 1;
@@ -35,10 +39,6 @@ RsTimerType suspendPcTimer;
uint32 suspendDepth;
-#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND
-double frameTime;
-#endif
-
void CTimer::Initialise(void)
{
debug("Initialising CTimer...\n");
@@ -51,6 +51,10 @@ void CTimer::Initialise(void)
m_snTimeInMillisecondsNonClipped = 0;
m_snPreviousTimeInMilliseconds = 0;
m_snTimeInMilliseconds = 1;
+#ifdef FIX_BUGS
+ m_LogicalFrameCounter = 0;
+ m_LogicalFramesPassed = 0;
+#endif
#ifdef _WIN32
LARGE_INTEGER perfFreq;
@@ -82,8 +86,15 @@ void CTimer::Shutdown(void)
;
}
+#ifdef FIX_BUGS
void CTimer::Update(void)
-{
+{
+ static double frameTimeLogical = 0.0;
+ static double frameTimeFraction = 0.0;
+ static double frameTimeFractionScaled = 0.0;
+ double frameTime;
+ double dblUpdInMs;
+
m_snPreviousTimeInMilliseconds = m_snTimeInMilliseconds;
#ifdef _WIN32
@@ -98,12 +109,89 @@ void CTimer::Update(void)
float updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale;
- // We need that real frame time to fix transparent menu bug.
-#ifndef FIX_HIGH_FPS_BUGS_ON_FRONTEND
- double
-#endif
frameTime = updInCyclesScaled / (double)_nCyclesPerMS;
+ dblUpdInMs = (double)updInCycles / (double)_nCyclesPerMS;
+ }
+ else
+#endif
+ {
+ RsTimerType timer = RsTimer();
+
+ RsTimerType updInMs = timer - oldPcTimer;
+
+ frameTime = (double)updInMs * ms_fTimeScale;
+
+ oldPcTimer = timer;
+
+ dblUpdInMs = (double)updInMs;
+ }
+
+ // count frames as if we're running at 30 fps
+ m_LogicalFramesPassed = 0;
+ frameTimeLogical += dblUpdInMs;
+ while (frameTimeLogical >= 1000.0 / 30.0) {
+ frameTimeLogical -= 1000.0 / 30.0;
+ m_LogicalFramesPassed++;
+ }
+ m_LogicalFrameCounter += m_LogicalFramesPassed;
+
+ frameTimeFraction += dblUpdInMs;
+ frameTimeFractionScaled += frameTime;
+
+ m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction);
+
+ if ( GetIsPaused() )
+ ms_fTimeStep = 0.0f;
+ else
+ {
+ m_snTimeInMilliseconds += uint32(frameTimeFractionScaled);
+ m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled);
+ ms_fTimeStep = frameTime / 1000.0f * 50.0f;
+ }
+ frameTimeFraction -= uint32(frameTimeFraction);
+ frameTimeFractionScaled -= uint32(frameTimeFractionScaled);
+
+ if ( ms_fTimeStep < 0.01f && !GetIsPaused() && !CSpecialFX::bSnapShotActive)
+ ms_fTimeStep = 0.01f;
+
+ ms_fTimeStepNonClipped = ms_fTimeStep;
+
+ if ( !CRecordDataForGame::IsPlayingBack() )
+ {
+ ms_fTimeStep = Min(3.0f, ms_fTimeStep);
+
+ if ( (m_snTimeInMilliseconds - m_snPreviousTimeInMilliseconds) > 60 )
+ m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 60;
+ }
+
+ if ( CRecordDataForChase::IsRecording() )
+ {
+ ms_fTimeStep = 1.0f;
+ m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 16;
+ }
+
+ m_FrameCounter++;
+}
+#else
+void CTimer::Update(void)
+{
+ m_snPreviousTimeInMilliseconds = m_snTimeInMilliseconds;
+
+#ifdef _WIN32
+ if ( (double)_nCyclesPerMS != 0.0 )
+ {
+ LARGE_INTEGER pc;
+ QueryPerformanceCounter(&pc);
+
+ int32 updInCycles = (pc.LowPart - _oldPerfCounter.LowPart); // & 0x7FFFFFFF; pointless
+
+ _oldPerfCounter = pc;
+
+ float updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale;
+
+ double frameTime = updInCyclesScaled / (double)_nCyclesPerMS;
+
m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime;
if ( GetIsPaused() )
@@ -122,16 +210,12 @@ void CTimer::Update(void)
RsTimerType updInMs = timer - oldPcTimer;
- // We need that real frame time to fix transparent menu bug.
-#ifndef FIX_HIGH_FPS_BUGS_ON_FRONTEND
- double
-#endif
- frameTime = (double)updInMs * ms_fTimeScale;
+ double frameTime = (double)updInMs * ms_fTimeScale;
oldPcTimer = timer;
-
+
m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime;
-
+
if ( GetIsPaused() )
ms_fTimeStep = 0.0f;
else
@@ -163,6 +247,7 @@ void CTimer::Update(void)
m_FrameCounter++;
}
+#endif
void CTimer::Suspend(void)
{
diff --git a/src/core/Timer.h b/src/core/Timer.h
index 53591c4f..819bd30c 100644
--- a/src/core/Timer.h
+++ b/src/core/Timer.h
@@ -1,22 +1,20 @@
#pragma once
-#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND
-#define PauseModeTime double
-#else
-#define PauseModeTime uint32
-#endif
-
class CTimer
{
static uint32 m_snTimeInMilliseconds;
- static PauseModeTime m_snTimeInMillisecondsPauseMode;
+ static uint32 m_snTimeInMillisecondsPauseMode;
static uint32 m_snTimeInMillisecondsNonClipped;
static uint32 m_snPreviousTimeInMilliseconds;
static uint32 m_FrameCounter;
static float ms_fTimeScale;
static float ms_fTimeStep;
static float ms_fTimeStepNonClipped;
+#ifdef FIX_BUGS
+ static uint32 m_LogicalFrameCounter;
+ static uint32 m_LogicalFramesPassed;
+#endif
public:
static bool m_UserPause;
static bool m_CodePause;
@@ -35,7 +33,7 @@ public:
static void SetTimeInMilliseconds(uint32 t) { m_snTimeInMilliseconds = t; }
static uint32 GetTimeInMillisecondsNonClipped(void) { return m_snTimeInMillisecondsNonClipped; }
static void SetTimeInMillisecondsNonClipped(uint32 t) { m_snTimeInMillisecondsNonClipped = t; }
- static PauseModeTime GetTimeInMillisecondsPauseMode(void) { return m_snTimeInMillisecondsPauseMode; }
+ static uint32 GetTimeInMillisecondsPauseMode(void) { return m_snTimeInMillisecondsPauseMode; }
static void SetTimeInMillisecondsPauseMode(uint32 t) { m_snTimeInMillisecondsPauseMode = t; }
static uint32 GetPreviousTimeInMilliseconds(void) { return m_snPreviousTimeInMilliseconds; }
static void SetPreviousTimeInMilliseconds(uint32 t) { m_snPreviousTimeInMilliseconds = t; }
@@ -67,9 +65,7 @@ public:
#ifdef FIX_BUGS
static float GetDefaultTimeStep(void) { return 50.0f / 30.0f; }
static float GetTimeStepFix(void) { return GetTimeStep() / GetDefaultTimeStep(); }
+ static uint32 GetLogicalFrameCounter(void) { return m_LogicalFrameCounter; }
+ static uint32 GetLogicalFramesPassed(void) { return m_LogicalFramesPassed; }
#endif
};
-
-#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND
-extern double frameTime;
-#endif
diff --git a/src/core/World.cpp b/src/core/World.cpp
index da1c58b2..9e2c4345 100644
--- a/src/core/World.cpp
+++ b/src/core/World.cpp
@@ -65,7 +65,7 @@ CWorld::Initialise()
void
CWorld::Add(CEntity *ent)
{
- if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, true);
+ if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, TRUE);
if(ent->bIsBIGBuilding)
ms_bigBuildingsList[ent->m_level].InsertItem(ent);
@@ -80,7 +80,7 @@ CWorld::Add(CEntity *ent)
void
CWorld::Remove(CEntity *ent)
{
- if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, false);
+ if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, FALSE);
if(ent->bIsBIGBuilding)
ms_bigBuildingsList[ent->m_level].RemoveItem(ent);
@@ -367,7 +367,7 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP
} else if(e->bUsesCollision)
colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
- if(colmodel && CCollision::ProcessLineOfSight(line, e->GetMatrix(), *colmodel, point, dist,
+ if(colmodel && CCollision::ProcessLineOfSight(line, e->GetMatrix(), *colmodel, point, mindist,
ignoreSeeThrough, ignoreShootThrough))
entity = e;
if(carTyres && ((CVehicle*)e)->SetUpWheelColModel(&tyreCol) && CCollision::ProcessLineOfSight(line, e->GetMatrix(), tyreCol, tyreColPoint, tyreDist, false, ignoreShootThrough)){
@@ -466,7 +466,7 @@ CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CCol
e->m_scanCode = GetCurrentScanCode();
colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
- if(CCollision::ProcessVerticalLine(line, e->GetMatrix(), *colmodel, point, dist,
+ if(CCollision::ProcessVerticalLine(line, e->GetMatrix(), *colmodel, point, mindist,
ignoreSeeThrough, false, poly))
entity = e;
}
@@ -1486,7 +1486,7 @@ CWorld::CallOffChaseForAreaSectorListVehicles(CPtrList &list, float x1, float y1
CColModel *pColModel = pVehicle->GetColModel();
bool bInsideSphere = false;
for(int32 i = 0; i < pColModel->numSpheres; i++) {
- CVector pos = pVehicle->m_matrix * pColModel->spheres[i].center;
+ CVector pos = pVehicle->GetMatrix() * pColModel->spheres[i].center;
float fRadius = pColModel->spheres[i].radius;
if(pos.x + fRadius > x1 && pos.x - fRadius < x2 && pos.y + fRadius > y1 &&
pos.y - fRadius < y2)
@@ -1801,7 +1801,7 @@ CWorld::RepositionOneObject(CEntity *pEntity)
position.z = FindGroundZFor3DCoord(position.x, position.y,
position.z + OBJECT_REPOSITION_OFFSET_Z, nil) -
fBoundingBoxMinZ;
- pEntity->m_matrix.UpdateRW();
+ pEntity->GetMatrix().UpdateRW();
pEntity->UpdateRwFrame();
} else if(modelId == MI_BUOY) {
float fWaterLevel = 0.0f;
@@ -1906,16 +1906,7 @@ CWorld::Process(void)
for(int i = 0; i < NUMCUTSCENEOBJECTS; i++) {
CCutsceneObject *csObj = CCutsceneMgr::GetCutsceneObject(i);
if(csObj && csObj->m_entryInfoList.first) {
- if(csObj->m_rwObject && RwObjectGetType(csObj->m_rwObject) == rpCLUMP &&
- RpAnimBlendClumpGetFirstAssociation(csObj->GetClump())) {
- if (csObj->IsObject())
- RpAnimBlendClumpUpdateAnimations(csObj->GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
- else {
- if (!csObj->bOffscreen)
- csObj->bOffscreen = !csObj->GetIsOnScreen();
- RpAnimBlendClumpUpdateAnimations(csObj->GetClump(), CTimer::GetTimeStepInSeconds(), !csObj->bOffscreen);
- }
- }
+ csObj->UpdateAnim();
csObj->ProcessControl();
csObj->ProcessCollision();
csObj->GetMatrix().UpdateRW();
@@ -1927,26 +1918,40 @@ CWorld::Process(void)
} else {
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CEntity *movingEnt = (CEntity *)node->item;
- if(!movingEnt->bRemoveFromWorld && movingEnt->m_rwObject && RwObjectGetType(movingEnt->m_rwObject) == rpCLUMP &&
- RpAnimBlendClumpGetFirstAssociation(movingEnt->GetClump())) {
- if (movingEnt->IsObject())
- RpAnimBlendClumpUpdateAnimations(movingEnt->GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
- else {
- if (!movingEnt->bOffscreen)
- movingEnt->bOffscreen = !movingEnt->GetIsOnScreen();
- RpAnimBlendClumpUpdateAnimations(movingEnt->GetClump(), CTimer::GetTimeStepInSeconds(), !movingEnt->bOffscreen);
- }
- }
+ if(!movingEnt->bRemoveFromWorld)
+ movingEnt->UpdateAnim();
}
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CPhysical *movingEnt = (CPhysical *)node->item;
if(movingEnt->bRemoveFromWorld) {
RemoveEntityInsteadOfProcessingIt(movingEnt);
} else {
- movingEnt->ProcessControl();
+ if(!CCutsceneMgr::IsCutsceneProcessing() || movingEnt->UpdatesInCutscene())
+ movingEnt->ProcessControl();
if(movingEnt->GetIsStatic()) { movingEnt->RemoveFromMovingList(); }
}
}
+ for(int y = 0; y < NUMSECTORS_Y; y++)
+ for(int x = 0; x < NUMSECTORS_X; x++){
+ CPtrNode *node;
+ CSector *sect = CWorld::GetSector(x, y);
+ for(node = sect->m_lists[ENTITYLIST_PEDS].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_PEDS_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_VEHICLES].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_VEHICLES_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_OBJECTS].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_OBJECTS_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_DUMMIES].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ for(node = sect->m_lists[ENTITYLIST_DUMMIES_OVERLAP].first; node; node = node->next)
+ ((CEntity*)node->item)->UpdateDistanceFade();
+ }
bForceProcessControl = true;
for(CPtrNode *node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CPhysical *movingEnt = (CPhysical *)node->item;
@@ -2192,7 +2197,7 @@ CWorld::TriggerExplosionSectorList(CPtrList &list, const CVector &position, floa
PEDPIECE_TORSO, direction);
if(pPed->m_nPedState != PED_DIE)
pPed->SetFall(2000,
- (AnimationId)(direction + ANIM_KO_SKID_FRONT), 0);
+ (AnimationId)(direction + ANIM_STD_HIGHIMPACT_FRONT), 0);
if(pCreator && pCreator->IsPed()) {
eEventType eventType = EVENT_SHOOT_PED;
if(pPed->m_nPedType == PEDTYPE_COP) eventType = EVENT_SHOOT_COP;
diff --git a/src/core/World.h b/src/core/World.h
index b75b6a6c..c90bb3a1 100644
--- a/src/core/World.h
+++ b/src/core/World.h
@@ -29,6 +29,7 @@ enum
{
ENTITYLIST_BUILDINGS,
ENTITYLIST_BUILDINGS_OVERLAP,
+ ENTITYLIST_UNKNOWN,
ENTITYLIST_OBJECTS,
ENTITYLIST_OBJECTS_OVERLAP,
ENTITYLIST_VEHICLES,
diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp
index 09f50a26..30253809 100644
--- a/src/core/Zones.cpp
+++ b/src/core/Zones.cpp
@@ -452,6 +452,7 @@ CTheZones::GetZoneInfoForTimeOfDay(const CVector *pos, CZoneInfo *info)
assert(d >= 0.0f && d <= 1.0f);
n = 1.0f - d;
}
+#ifdef FIX_BUGS
info->carDensity = day->carDensity * d + night->carDensity * n;
for(i = 0; i < ARRAY_SIZE(info->carThreshold); i++)
info->carThreshold[i] = day->carThreshold[i] * d + night->carThreshold[i] * n;
@@ -465,6 +466,22 @@ CTheZones::GetZoneInfoForTimeOfDay(const CVector *pos, CZoneInfo *info)
info->copPedThreshold = day->copPedThreshold * d + night->copPedThreshold * n;
for(i = 0; i < ARRAY_SIZE(info->gangPedThreshold); i++)
info->gangPedThreshold[i] = day->gangPedThreshold[i] * d + night->gangPedThreshold[i] * n;
+#else
+ // This is a complete mess.
+ info->carDensity = day->carDensity * n + night->carDensity * d;
+ for(i = 0; i < ARRAY_SIZE(info->carThreshold); i++)
+ info->carThreshold[i] = night->carThreshold[i] * d + night->carThreshold[i] * n;
+ for(i = 0; i < ARRAY_SIZE(info->boatThreshold); i++)
+ info->boatThreshold[i] = night->boatThreshold[i] * d + night->boatThreshold[i] * n;
+ for(i = 0; i < ARRAY_SIZE(info->gangThreshold); i++)
+ info->gangThreshold[i] = night->gangThreshold[i] * d + night->gangThreshold[i] * n;
+
+ info->copThreshold = night->copThreshold * d + night->copThreshold * n;
+ info->pedDensity = night->pedDensity * d + night->pedDensity * n;
+ info->copPedThreshold = night->copPedThreshold * d + night->copPedThreshold * n;
+ for(i = 0; i < ARRAY_SIZE(info->gangPedThreshold); i++)
+ info->gangPedThreshold[i] = night->gangPedThreshold[i] * d + night->gangPedThreshold[i] * n;
+#endif
}
if(CClock::GetIsTimeInRange(5, 19))
info->pedGroup = day->pedGroup;
diff --git a/src/core/common.h b/src/core/common.h
index 65f43aae..51170986 100644
--- a/src/core/common.h
+++ b/src/core/common.h
@@ -228,6 +228,12 @@ inline uint32 ldb(uint32 p, uint32 s, uint32 w)
#include "maths.h"
#include "Vector.h"
+#ifdef GTA_PS2
+#include "VuVector.h"
+#define CVUVECTOR CVuVector
+#else
+#define CVUVECTOR CVector
+#endif
#include "Vector2D.h"
#include "Matrix.h"
#include "Rect.h"
@@ -369,7 +375,7 @@ __inline__ void TRACE(char *f, ...) { } // this is re3 only, and so the function
#ifndef MASTER
#define assert(_Expression) (void)( (!!(_Expression)) || (re3_assert(#_Expression, __FILE__, __LINE__, __FUNCTION__), 0) )
#else
-#define assert(_Expression)
+#define assert(_Expression) (_Expression)
#endif
#define ASSERT assert
diff --git a/src/core/config.h b/src/core/config.h
index ac90c9bd..4ed174a9 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -10,9 +10,9 @@ enum Config {
MAX_CDIMAGES = 8, // additional cdimages
MAX_CDCHANNELS = 5,
- MODELINFOSIZE = 6500, // only 4900
- TXDSTORESIZE = 1385, // only 1200
- COLSTORESIZE = 31, // only 15
+ MODELINFOSIZE = 4900,
+ TXDSTORESIZE = 1200,
+ COLSTORESIZE = 15,
EXTRADIRSIZE = 256,
CUTSCENEDIRSIZE = 512,
@@ -100,7 +100,7 @@ enum Config {
NUMPACMANPICKUPS = 256,
NUMEVENTS = 64,
- NUM_CARGENS = 500,
+ NUM_CARGENS = 195, // 500 on mobile
NUM_PATH_NODES_IN_AUTOPILOT = 8,
@@ -131,7 +131,6 @@ enum Config {
NUM_PED_COMMENTS_SLOTS = 20,
NUM_SOUNDS_SAMPLES_BANKS = 2,
- NUM_SOUNDS_SAMPLES_SLOTS = 27,
NUM_AUDIOENTITIES = 250,
NUM_AUDIO_REFLECTIONS = 8,
@@ -196,6 +195,10 @@ enum Config {
// those infamous texts
#define DRAW_GAME_VERSION_TEXT
+#ifdef DRAW_GAME_VERSION_TEXT
+ // unlike R* development builds, ours has runtime switch on debug menu & .ini, and disabled as default.
+ #define USE_OUR_VERSIONING // If you disable this then game will fetch version from peds.col, as R* did while in development
+#endif
// Memory allocation and compression
// #define USE_CUSTOM_ALLOCATOR // use CMemoryHeap for allocation. use with care, not finished yet
@@ -233,7 +236,6 @@ enum Config {
// not in master builds
#define VALIDATE_SAVE_SIZE
- #define NO_MOVIES // disable intro videos
#define DEBUGMENU
#endif
@@ -250,12 +252,19 @@ enum Config {
//#define MORE_LANGUAGES // Add more translations to the game
#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible
#define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS
-#define FIX_HIGH_FPS_BUGS_ON_FRONTEND
+
+#define NO_MOVIES // add option to disable intro videos
#if defined(__LP64__) || defined(_WIN64)
#define FIX_BUGS_64 // Must have fixes to be able to run 64 bit build
#endif
+#define ASCII_STRCMP // use faster ascii str comparisons
+
+#if !defined _WIN32 || defined __MWERKS__ || defined __MINGW32__ || defined VANILLA_DEFINES
+#undef ASCII_STRCMP
+#endif
+
// Just debug menu entries
#ifdef DEBUGMENU
#define RELOADABLES // some debug menu options to reload TXD files
@@ -298,8 +307,8 @@ enum Config {
#if !defined(RW_GL3) && defined(_WIN32)
#define XINPUT
#endif
-#if !defined(_WIN32) && !defined(__SWITCH__)
-#define DONT_TRUST_RECOGNIZED_JOYSTICKS // Then we'll only rely on GLFW gamepad DB, and expect user to enter Controller->Detect joysticks if his joystick isn't on that list.
+#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined __SWITCH__)
+#define DETECT_JOYSTICK_MENU // Then we'll expect user to enter Controller->Detect joysticks if his joystick isn't detected at the start.
#endif
#define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m
#define KANGAROO_CHEAT
@@ -307,19 +316,22 @@ enum Config {
#define BETTER_ALLCARSAREDODO_CHEAT
#define WALLCLIMB_CHEAT
#define REGISTER_START_BUTTON
-//#define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
+#define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
#define BUTTON_ICONS // use textures to show controller buttons
// Hud, frontend and radar
#define PC_MENU
-
#define FIX_RADAR // use radar size from early version before R* broke it
+#define RADIO_OFF_TEXT // Won't work without FIX_BUGS
#ifndef PC_MENU
# define PS2_MENU
//# define PS2_MENU_USEALLPAGEICONS
#else
# define MAP_ENHANCEMENTS // Adding waypoint and better mouse support
+# ifdef XINPUT
+# define GAMEPAD_MENU // Add gamepad menu
+# endif
# define TRIANGLE_BACK_BUTTON
//# define CIRCLE_BACK_BUTTON
#define LEGACY_MENU_OPTIONS // i.e. frame sync(vsync)
@@ -353,6 +365,10 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
#define SCRIPT_LOG_FILE_LEVEL 1 // 0 == no log, 1 == overwrite every frame, 2 == full log
+#if SCRIPT_LOG_FILE_LEVEL == 0
+#undef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
+#endif
+
#ifndef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
#define USE_BASIC_SCRIPT_DEBUG_OUTPUT
#endif
@@ -382,8 +398,10 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#define FREE_CAM // Rotating cam
// Audio
-#define AUDIO_CACHE // cache sound lengths to speed up the cold boot
-#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds)
+#define RADIO_SCROLL_TO_PREV_STATION // Won't work without FIX_BUGS
+//#define AUDIO_CACHE // cache sound lengths to speed up the cold boot
+#define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 41 (PSP and mobile have 21 originally)
+//#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds)
//#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder
#define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files
@@ -399,18 +417,22 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#endif
-#ifdef LIBRW
-// these are not supported with librw yet
+// Streaming
+#if !defined(_WIN32) && !defined(__SWITCH__)
+ //#define ONE_THREAD_PER_CHANNEL // Don't use if you're not on SSD/Flash - also not utilized too much right now(see commented LoadAllRequestedModels in Streaming.cpp)
+ #define FLUSHABLE_STREAMING // Make it possible to interrupt reading when processing file isn't needed anymore.
#endif
-// IMG
-#define BIG_IMG // allows to read larger img files
+#define BIG_IMG // Not complete - allows to read larger img files
//#define SQUEEZE_PERFORMANCE
#ifdef SQUEEZE_PERFORMANCE
#undef PS2_ALPHA_TEST
#undef NO_ISLAND_LOADING
+ #undef PS2_AUDIO_CHANNELS
#endif
+// -------
+
#if defined __MWERKS__ || defined VANILLA_DEFINES
#define FINAL
#undef CHATTYSPLASH
@@ -436,7 +458,6 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#undef MORE_LANGUAGES
#undef COMPATIBLE_SAVES
#undef LOAD_INI_SETTINGS
-#undef FIX_HIGH_FPS_BUGS_ON_FRONTEND
#undef ASPECT_RATIO_SCALE
#undef PROPER_SCALING
@@ -465,8 +486,10 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#undef BUTTON_ICONS
#undef FIX_RADAR
+#undef RADIO_OFF_TEXT
#undef MAP_ENHANCEMENTS
+#undef GAMEPAD_MENU
#undef MUCH_SHORTER_OUTRO_SCREEN
#undef CUSTOM_FRONTEND_OPTIONS
@@ -493,4 +516,6 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
#undef IMPROVED_CAMERA
#undef FREE_CAM
#undef BIG_IMG
+#undef PS2_AUDIO_CHANNELS
+#undef RADIO_SCROLL_TO_PREV_STATION
#endif
diff --git a/src/core/main.cpp b/src/core/main.cpp
index 936b0c31..9d540635 100644
--- a/src/core/main.cpp
+++ b/src/core/main.cpp
@@ -1,8 +1,10 @@
#include "common.h"
+#include <time.h>
#include "rpmatfx.h"
#include "rphanim.h"
#include "rpskin.h"
#include "rtbmp.h"
+#include "rtpng.h"
#ifdef ANISOTROPIC_FILTERING
#include "rpanisot.h"
#endif
@@ -73,6 +75,9 @@
#include "custompipes.h"
#include "screendroplets.h"
#include "VarConsole.h"
+#ifdef USE_OUR_VERSIONING
+#include "GitSHA1.h"
+#endif
GlobalScene Scene;
@@ -97,6 +102,12 @@ bool gbModelViewer;
#ifdef TIMEBARS
bool gbShowTimebars;
#endif
+#ifdef DRAW_GAME_VERSION_TEXT
+bool gbDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds
+#endif
+#ifdef NO_MOVIES
+bool gbNoMovies;
+#endif
volatile int32 frameCount;
@@ -339,7 +350,11 @@ RwGrabScreen(RwCamera *camera, RwChar *filename)
strcpy(temp, CFileMgr::GetRootDirName());
strcat(temp, filename);
+#ifndef LIBRW
if (RtBMPImageWrite(pImage, &temp[0]) == nil)
+#else
+ if (RtPNGImageWrite(pImage, &temp[0]) == nil)
+#endif
result = false;
RwImageDestroy(pImage);
return result;
@@ -358,6 +373,7 @@ DoRWStuffEndOfFrame(void)
RsCameraShowRaster(Scene.camera);
#ifndef MASTER
char s[48];
+#ifdef THIS_IS_STUPID
if (CPad::GetPad(1)->GetLeftShockJustDown()) {
// try using both controllers for this thing... crazy bastards
if (CPad::GetPad(0)->GetRightStickY() > 0) {
@@ -369,6 +385,12 @@ DoRWStuffEndOfFrame(void)
RwGrabScreen(Scene.camera, s);
}
}
+#else
+ if (CPad::GetPad(1)->GetLeftShockJustDown() || CPad::GetPad(0)->GetFJustDown(11)) {
+ sprintf(s, "screen_%11lld.png", time(nil));
+ RwGrabScreen(Scene.camera, s);
+ }
+#endif
#endif // !MASTER
}
@@ -1048,7 +1070,7 @@ DisplayGameDebugText()
#ifndef FINAL
{
- SETTWEAKPATH("GameDebugText");
+ SETTWEAKPATH("Debug");
TWEAKBOOL(bDisplayPosn);
TWEAKBOOL(bDisplayCheatStr);
}
@@ -1062,13 +1084,56 @@ DisplayGameDebugText()
#ifdef DRAW_GAME_VERSION_TEXT
wchar ver[200];
-
+
+ if(gbDrawVersionText) // This realtime switch is our thing
+ {
+
+#ifdef USE_OUR_VERSIONING
+ char verA[200];
+ sprintf(verA,
+#if defined _WIN32
+ "Win "
+#elif defined __linux__
+ "Linux "
+#elif defined __APPLE__
+ "Mac OS X "
+#elif defined __FreeBSD__
+ "FreeBSD "
+#else
+ "Posix-compliant "
+#endif
+#if defined __LP64__ || defined _WIN64
+ "64-bit "
+#else
+ "32-bit "
+#endif
+#if defined RW_D3D9
+ "D3D9 "
+#elif defined RWLIBS
+ "D3D8 "
+#elif defined RW_GL3
+ "OpenGL "
+#endif
+#if defined AUDIO_OAL
+ "OAL "
+#elif defined AUDIO_MSS
+ "MSS "
+#endif
+#if defined _DEBUG || defined DEBUG
+ "DEBUG "
+#endif
+ "%.8s",
+ g_GIT_SHA1);
+ AsciiToUnicode(verA, ver);
+ CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.7f));
+#else
AsciiToUnicode(version_name, ver);
+ CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f));
+#endif
CFont::SetPropOn();
CFont::SetBackgroundOff();
CFont::SetFontStyle(FONT_STANDARD);
- CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f));
CFont::SetCentreOff();
CFont::SetRightJustifyOff();
CFont::SetWrapx(SCREEN_WIDTH);
@@ -1076,11 +1141,20 @@ DisplayGameDebugText()
CFont::SetBackGroundOnlyTextOff();
CFont::SetColor(CRGBA(255, 108, 0, 255));
CFont::PrintString(SCREEN_SCALE_X(10.0f), SCREEN_SCALE_Y(10.0f), ver);
-#endif
+ }
+#endif // #ifdef DRAW_GAME_VERSION_TEXT
FrameSamples++;
- FramesPerSecondCounter += 1000.0f / (CTimer::GetTimeStepNonClippedInSeconds() * 1000.0f);
+#ifdef FIX_BUGS
+ // this is inaccurate with over 1000 fps
+ static uint32 PreviousTimeInMillisecondsPauseMode = 0;
+ FramesPerSecondCounter += (CTimer::GetTimeInMillisecondsPauseMode() - PreviousTimeInMillisecondsPauseMode) / 1000.0f; // convert to seconds
+ PreviousTimeInMillisecondsPauseMode = CTimer::GetTimeInMillisecondsPauseMode();
+ FramesPerSecond = FrameSamples / FramesPerSecondCounter;
+#else
+ FramesPerSecondCounter += 1000.0f / CTimer::GetTimeStepNonClippedInMilliseconds();
FramesPerSecond = FramesPerSecondCounter / FrameSamples;
+#endif
if ( FrameSamples > 30 )
{
@@ -1209,6 +1283,7 @@ if(gbRenderEverythingBarRoads)
void
RenderScene_new(void)
{
+ PUSH_RENDERGROUP("RenderScene_new");
CClouds::Render();
DoRWRenderHorizon();
@@ -1216,6 +1291,7 @@ RenderScene_new(void)
DefinedState();
// CMattRenderer::ResetRenderStates
// moved CRenderer::RenderBoats to before transparent water
+ POP_RENDERGROUP();
}
// TODO
@@ -1223,10 +1299,13 @@ bool FredIsInFirstPersonCam(void) { return false; }
void
RenderEffects_new(void)
{
+ PUSH_RENDERGROUP("RenderEffects_new");
+/* // stupid to do this before the whole world is drawn!
CShadows::RenderStaticShadows();
CShadows::RenderStoredShadows();
CSkidmarks::Render();
CRubbish::Render();
+*/
// these aren't really effects
DefinedState();
@@ -1249,6 +1328,13 @@ if(gbRenderFadingInEntities)
CRenderer::RenderFadingInEntities();
// actual effects here
+
+ // from above
+ CShadows::RenderStaticShadows();
+ CShadows::RenderStoredShadows();
+ CSkidmarks::Render();
+ CRubbish::Render();
+
CGlass::Render();
// CMattRenderer::ResetRenderStates
DefinedState();
@@ -1266,6 +1352,7 @@ if(gbRenderFadingInEntities)
CPointLights::RenderFogEffect();
CMovingThings::Render();
CRenderer::RenderFirstPersonVehicle();
+ POP_RENDERGROUP();
}
#endif
@@ -1278,6 +1365,7 @@ RenderScene(void)
return;
}
#endif
+ PUSH_RENDERGROUP("RenderScene");
CClouds::Render();
DoRWRenderHorizon();
CRenderer::RenderRoads();
@@ -1293,11 +1381,13 @@ RenderScene(void)
RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE);
CWeather::RenderRainStreaks();
CCoronas::RenderSunReflection();
+ POP_RENDERGROUP();
}
void
RenderDebugShit(void)
{
+ PUSH_RENDERGROUP("RenderDebugShit");
//CTheScripts::RenderTheScriptDebugLines();
#ifndef FINAL
if(gbShowCollisionLines)
@@ -1306,6 +1396,7 @@ RenderDebugShit(void)
CDebug::DrawLines();
DefinedState();
#endif
+ POP_RENDERGROUP();
}
void
@@ -1317,6 +1408,7 @@ RenderEffects(void)
return;
}
#endif
+ PUSH_RENDERGROUP("RenderEffects");
CGlass::Render();
CWaterCannons::Render();
CSpecialFX::Render();
@@ -1333,11 +1425,13 @@ RenderEffects(void)
CPointLights::RenderFogEffect();
CMovingThings::Render();
CRenderer::RenderFirstPersonVehicle();
+ POP_RENDERGROUP();
}
void
Render2dStuff(void)
{
+ PUSH_RENDERGROUP("Render2dStuff");
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
@@ -1409,6 +1503,7 @@ Render2dStuff(void)
#ifdef DEBUGMENU
DebugMenuRender();
#endif
+ POP_RENDERGROUP();
}
void
@@ -1416,7 +1511,9 @@ RenderMenus(void)
{
if (FrontEndMenuManager.m_bMenuActive)
{
+ PUSH_RENDERGROUP("RenderMenus");
FrontEndMenuManager.DrawFrontEnd();
+ POP_RENDERGROUP();
}
#ifndef MASTER
else
@@ -1427,6 +1524,7 @@ RenderMenus(void)
void
Render2dStuffAfterFade(void)
{
+ PUSH_RENDERGROUP("Render2dStuffAfterFade");
#ifndef MASTER
DisplayGameDebugText();
#endif
@@ -1437,6 +1535,7 @@ Render2dStuffAfterFade(void)
CHud::DrawAfterFade();
CFont::DrawFonts();
CCredits::Render();
+ POP_RENDERGROUP();
}
void
diff --git a/src/core/main.h b/src/core/main.h
index 8e4123ff..3fa26e78 100644
--- a/src/core/main.h
+++ b/src/core/main.h
@@ -1,5 +1,16 @@
#pragma once
+#ifndef FINAL
+// defined in RwHelpder.cpp
+void PushRendergroup(const char *name);
+void PopRendergroup(void);
+#define PUSH_RENDERGROUP(str) PushRendergroup(str)
+#define POP_RENDERGROUP() PopRendergroup()
+#else
+#define PUSH_RENDERGROUP(str)
+#define POP_RENDERGROUP()
+#endif
+
struct GlobalScene
{
RpWorld *world;
@@ -63,3 +74,11 @@ void SaveINIControllerSettings();
extern bool gbNewRenderer;
bool FredIsInFirstPersonCam(void);
#endif
+
+#ifdef DRAW_GAME_VERSION_TEXT
+extern bool gbDrawVersionText;
+#endif
+
+#ifdef NO_MOVIES
+extern bool gbNoMovies;
+#endif
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 773d3765..34976822 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -1,6 +1,14 @@
#include <csignal>
#define WITHWINDOWS
#include "common.h"
+#if defined DETECT_JOYSTICK_MENU && defined XINPUT
+#include <xinput.h>
+#if !defined(PSAPI_VERSION) || (PSAPI_VERSION > 1)
+#pragma comment( lib, "Xinput9_1_0.lib" )
+#else
+#pragma comment( lib, "Xinput.lib" )
+#endif
+#endif
#include "Renderer.h"
#include "Occlusion.h"
#include "Credits.h"
@@ -37,7 +45,7 @@
#include "MBlur.h"
#include "ControllerConfig.h"
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
#include "crossplatform.h"
#endif
@@ -82,16 +90,51 @@ mysrand(unsigned int seed)
#ifdef CUSTOM_FRONTEND_OPTIONS
#include "frontendoption.h"
+
+
+#ifdef MORE_LANGUAGES
+void LangPolSelect(int8 action)
+{
+ if (action == FEOPTION_ACTION_SELECT) {
+ FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_POLISH;
+ FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
+ FrontEndMenuManager.InitialiseChangedLanguageSettings();
+ FrontEndMenuManager.SaveSettings();
+ }
+}
+
+void LangRusSelect(int8 action)
+{
+ if (action == FEOPTION_ACTION_SELECT) {
+ FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_RUSSIAN;
+ FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
+ FrontEndMenuManager.InitialiseChangedLanguageSettings();
+ FrontEndMenuManager.SaveSettings();
+ }
+}
+
+void LangJapSelect(int8 action)
+{
+ if (action == FEOPTION_ACTION_SELECT) {
+ FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_JAPANESE;
+ FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true;
+ FrontEndMenuManager.InitialiseChangedLanguageSettings();
+ FrontEndMenuManager.SaveSettings();
+ }
+}
+#endif
+
void
CustomFrontendOptionsPopulate(void)
{
// Moved to an array in MenuScreensCustom.cpp, but APIs are still available. see frontendoption.h
+ int fd;
// These work only if we have neo folder, so they're dynamically added
#ifdef EXTENDED_PIPELINES
const char *pipelineNames[] = { "FED_PSP", "FED_PS2","FED_MOB" };
const char *off_on[] = { "FEM_OFF", "FEM_ON" };
- int fd = CFileMgr::OpenFile("neo/neo.txd","r");
+ fd = CFileMgr::OpenFile("neo/neo.txd","r");
if (fd) {
#ifdef GRAPHICS_MENU_OPTIONS
FrontendOptionSetCursor(MENUPAGE_GRAPHICS_SETTINGS, -3, false);
@@ -109,6 +152,38 @@ CustomFrontendOptionsPopulate(void)
CFileMgr::CloseFile(fd);
}
#endif
+ // Add outsourced language translations, if files are found
+#ifdef MORE_LANGUAGES
+ int fd2;
+ FrontendOptionSetCursor(MENUPAGE_LANGUAGE_SETTINGS, 5, false);
+#if 0
+ if (fd = CFileMgr::OpenFile("text/polish.gxt")) {
+ if (fd2 = CFileMgr::OpenFile("models/fonts_p.txd")) {
+ FrontendOptionAddDynamic("FEL_POL", 0, 0, MENUALIGN_CENTER, nil, nil, LangPolSelect, nil, nil);
+ CFileMgr::CloseFile(fd2);
+ }
+ CFileMgr::CloseFile(fd);
+ }
+#endif
+
+ if (fd = CFileMgr::OpenFile("text/russian.gxt")) {
+ if (fd2 = CFileMgr::OpenFile("models/fonts_r.txd")) {
+ FrontendOptionAddDynamic("FEL_RUS", 0, 0, MENUALIGN_CENTER, nil, nil, LangRusSelect, nil, nil);
+ CFileMgr::CloseFile(fd2);
+ }
+ CFileMgr::CloseFile(fd);
+ }
+
+#if 0
+ if (fd = CFileMgr::OpenFile("text/japanese.gxt")) {
+ if (fd2 = CFileMgr::OpenFile("models/fonts_j.txd")) {
+ FrontendOptionAddDynamic("FEL_JAP", 0, 0, MENUALIGN_CENTER, nil, nil, LangJapSelect, nil, nil);
+ CFileMgr::CloseFile(fd2);
+ }
+ CFileMgr::CloseFile(fd);
+ }
+#endif
+#endif
}
#endif
@@ -249,9 +324,41 @@ const char *iniKeyboardButtons[] = {"ESC","F1","F2","F3","F4","F5","F6","F7","F8
void LoadINIControllerSettings()
{
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
+#ifdef XINPUT
+ int storedJoy1 = -1;
+ if (ReadIniIfExists("Controller", "JoystickName", &storedJoy1)) {
+ CPad::XInputJoy1 = -1;
+ CPad::XInputJoy2 = -1;
+ XINPUT_STATE xstate;
+ memset(&xstate, 0, sizeof(XINPUT_STATE));
+
+ // Firstly confirm & set joy 1
+ if (XInputGetState(storedJoy1, &xstate) == ERROR_SUCCESS) {
+ CPad::XInputJoy1 = storedJoy1;
+ }
+
+ for (int i = 0; i <= 3; i++) {
+ if (XInputGetState(i, &xstate) == ERROR_SUCCESS) {
+ if (CPad::XInputJoy1 == -1)
+ CPad::XInputJoy1 = i;
+ else if (CPad::XInputJoy2 == -1 && i != CPad::XInputJoy1)
+ CPad::XInputJoy2 = i;
+ }
+ }
+
+ // There is no plug event on XInput, so let's leave XInputJoy1/2 as 0/1 respectively, and hotplug will be possible.
+ if (CPad::XInputJoy1 == -1) {
+ CPad::XInputJoy1 = 0;
+ CPad::XInputJoy2 = 1;
+ } else if (CPad::XInputJoy2 == -1) {
+ CPad::XInputJoy2 = (CPad::XInputJoy1 + 1) % 4;
+ }
+ }
+#else
ReadIniIfExists("Controller", "JoystickName", gSelectedJoystickName, 128);
#endif
+#endif
// force to default GTA behaviour (never overwrite bindings on joy change/initialization) if user init'ed/set bindings before we introduced that
if (!ReadIniIfExists("Controller", "PadButtonsInited", &ControlsManager.ms_padButtonsInited)) {
ControlsManager.ms_padButtonsInited = cfg.category_size("Bindings") != 0 ? 16 : 0;
@@ -348,9 +455,13 @@ void SaveINIControllerSettings()
StoreIni("Bindings", iniControllerActions[i], value, 128);
}
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
+#ifdef XINPUT
+ StoreIni("Controller", "JoystickName", CPad::XInputJoy1);
+#else
StoreIni("Controller", "JoystickName", gSelectedJoystickName, 128);
#endif
+#endif
StoreIni("Controller", "PadButtonsInited", ControlsManager.ms_padButtonsInited);
cfg.write_file("reLCS.ini");
}
@@ -373,6 +484,7 @@ bool LoadINISettings()
ReadIniIfExists("Controller", "HorizantalMouseSens", &TheCamera.m_fMouseAccelHorzntl);
ReadIniIfExists("Controller", "InvertMouseVertically", &MousePointerStateHelper.bInvertVertically);
ReadIniIfExists("Controller", "DisableMouseSteering", &CVehicle::m_bDisableMouseSteering);
+ ReadIniIfExists("Controller", "Vibration", &FrontEndMenuManager.m_PrefsUseVibration);
ReadIniIfExists("Audio", "SfxVolume", &FrontEndMenuManager.m_PrefsSfxVolume);
ReadIniIfExists("Audio", "MusicVolume", &FrontEndMenuManager.m_PrefsMusicVolume);
ReadIniIfExists("Audio", "MP3BoostVolume", &FrontEndMenuManager.m_PrefsMP3BoostVolume);
@@ -406,6 +518,10 @@ bool LoadINISettings()
ReadIniIfExists("CustomPipesValues", "LightmapMult", &CustomPipes::LightmapMult);
ReadIniIfExists("CustomPipesValues", "GlossMult", &CustomPipes::GlossMult);
#endif
+ ReadIniIfExists("Rendering", "BackfaceCulling", &gBackfaceCulling);
+#ifdef NEW_RENDERER
+ ReadIniIfExists("Rendering", "NewRenderer", &gbNewRenderer);
+#endif
#ifdef PROPER_SCALING
ReadIniIfExists("Draw", "ProperScaling", &CDraw::ms_bProperScaling);
@@ -416,6 +532,12 @@ bool LoadINISettings()
#ifdef FIX_SPRITES
ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites);
#endif
+#ifdef DRAW_GAME_VERSION_TEXT
+ ReadIniIfExists("General", "DrawVersionText", &gbDrawVersionText);
+#endif
+#ifdef NO_MOVIES
+ ReadIniIfExists("General", "NoMovies", &gbNoMovies);
+#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
bool migrate = cfg.category_size("FrontendOptions") != 0;
@@ -461,6 +583,7 @@ void SaveINISettings()
StoreIni("Controller", "HorizantalMouseSens", TheCamera.m_fMouseAccelHorzntl);
StoreIni("Controller", "InvertMouseVertically", MousePointerStateHelper.bInvertVertically);
StoreIni("Controller", "DisableMouseSteering", CVehicle::m_bDisableMouseSteering);
+ StoreIni("Controller", "Vibration", FrontEndMenuManager.m_PrefsUseVibration);
StoreIni("Audio", "SfxVolume", FrontEndMenuManager.m_PrefsSfxVolume);
StoreIni("Audio", "MusicVolume", FrontEndMenuManager.m_PrefsMusicVolume);
StoreIni("Audio", "MP3BoostVolume", FrontEndMenuManager.m_PrefsMP3BoostVolume);
@@ -495,6 +618,9 @@ void SaveINISettings()
StoreIni("CustomPipesValues", "GlossMult", CustomPipes::GlossMult);
#endif
StoreIni("Rendering", "BackfaceCulling", gBackfaceCulling);
+#ifdef NEW_RENDERER
+ StoreIni("Rendering", "NewRenderer", gbNewRenderer);
+#endif
#ifdef PROPER_SCALING
StoreIni("Draw", "ProperScaling", CDraw::ms_bProperScaling);
@@ -505,6 +631,12 @@ void SaveINISettings()
#ifdef FIX_SPRITES
StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites);
#endif
+#ifdef DRAW_GAME_VERSION_TEXT
+ StoreIni("General", "DrawVersionText", gbDrawVersionText);
+#endif
+#ifdef NO_MOVIES
+ StoreIni("General", "NoMovies", gbNoMovies);
+#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
for (int i = 0; i < MENUPAGES; i++) {
for (int j = 0; j < NUM_MENUROWS; j++) {
@@ -632,18 +764,6 @@ SwitchCarCollision(void)
FindPlayerVehicle()->bUsesCollision = !FindPlayerVehicle()->bUsesCollision;
}
-static int engineStatus;
-static void
-SetEngineStatus(void)
-{
- CVehicle *veh = FindPlayerVehicle();
- if(veh == nil)
- return;
- if(!veh->IsCar())
- return;
- ((CAutomobile*)veh)->Damage.SetEngineStatus(engineStatus);
-}
-
static void
ToggleComedy(void)
{
@@ -859,13 +979,22 @@ DebugMenuPopulate(void)
DebugMenuAddVarBool8("Render", "Draw hud", &CHud::m_Wants_To_Draw_Hud, nil);
DebugMenuAddVar("Render", "Brightness", &FrontEndMenuManager.m_PrefsBrightness, nil, 16, 0, 700, nil);
+#ifdef PROPER_SCALING
+ DebugMenuAddVarBool8("Render", "Proper Scaling", &CDraw::ms_bProperScaling, nil);
+#endif
+#ifdef FIX_RADAR
+ DebugMenuAddVarBool8("Render", "Fix Radar", &CDraw::ms_bFixRadar, nil);
+#endif
+#ifdef FIX_SPRITES
+ DebugMenuAddVarBool8("Render", "Fix Sprites", &CDraw::ms_bFixSprites, nil);
+#endif
DebugMenuAddVarBool8("Render", "Backface Culling", &gBackfaceCulling, nil);
DebugMenuAddVarBool8("Render", "PS2 Alpha test Emu", &gPS2alphaTest, nil);
DebugMenuAddVarBool8("Render", "Frame limiter", &FrontEndMenuManager.m_PrefsFrameLimiter, nil);
DebugMenuAddVarBool8("Render", "VSynch", &FrontEndMenuManager.m_PrefsVsync, nil);
DebugMenuAddVar("Render", "Max FPS", &RsGlobal.maxFPS, nil, 1, 1, 1000, nil);
#ifdef NEW_RENDERER
- DebugMenuAddVarBool8("Render", "new renderer", &gbNewRenderer, nil);
+ DebugMenuAddVarBool8("Render", "New Renderer", &gbNewRenderer, nil);
extern bool gbRenderRoads;
extern bool gbRenderEverythingBarRoads;
extern bool gbRenderFadingInUnderwaterEntities;
@@ -876,16 +1005,16 @@ extern bool gbRenderVehicles;
extern bool gbRenderWorld0;
extern bool gbRenderWorld1;
extern bool gbRenderWorld2;
- DebugMenuAddVarBool8("Render", "gbRenderRoads", &gbRenderRoads, nil);
- DebugMenuAddVarBool8("Render", "gbRenderEverythingBarRoads", &gbRenderEverythingBarRoads, nil);
- DebugMenuAddVarBool8("Render", "gbRenderFadingInUnderwaterEntities", &gbRenderFadingInUnderwaterEntities, nil);
- DebugMenuAddVarBool8("Render", "gbRenderFadingInEntities", &gbRenderFadingInEntities, nil);
- DebugMenuAddVarBool8("Render", "gbRenderWater", &gbRenderWater, nil);
- DebugMenuAddVarBool8("Render", "gbRenderBoats", &gbRenderBoats, nil);
- DebugMenuAddVarBool8("Render", "gbRenderVehicles", &gbRenderVehicles, nil);
- DebugMenuAddVarBool8("Render", "gbRenderWorld0", &gbRenderWorld0, nil);
- DebugMenuAddVarBool8("Render", "gbRenderWorld1", &gbRenderWorld1, nil);
- DebugMenuAddVarBool8("Render", "gbRenderWorld2", &gbRenderWorld2, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderRoads", &gbRenderRoads, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderEverythingBarRoads", &gbRenderEverythingBarRoads, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInUnderwaterEntities", &gbRenderFadingInUnderwaterEntities, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInEntities", &gbRenderFadingInEntities, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderWater", &gbRenderWater, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderBoats", &gbRenderBoats, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderVehicles", &gbRenderVehicles, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderWorld0", &gbRenderWorld0, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderWorld1", &gbRenderWorld1, nil);
+ DebugMenuAddVarBool8("Debug Render", "gbRenderWorld2", &gbRenderWorld2, nil);
#endif
#ifdef EXTENDED_COLOURFILTER
@@ -900,6 +1029,11 @@ extern bool gbRenderWorld2;
#ifndef MASTER
DebugMenuAddVarBool8("Render", "Occlusion debug", &bDispayOccDebugStuff, nil);
#endif
+#ifdef LIBRW
+ DebugMenuAddVarBool32("Render", "MatFX env map apply light", &rw::MatFX::envMapApplyLight, nil);
+ DebugMenuAddVarBool32("Render", "MatFX env map flip U", &rw::MatFX::envMapFlipU, nil);
+ DebugMenuAddVarBool32("Render", "MatFX env map use matcolor", &rw::MatFX::envMapUseMatColor, nil);
+#endif
#ifdef EXTENDED_PIPELINES
static const char *worldpipenames[] = { "PSP", "PS2", "Mobile" };
e = DebugMenuAddVar("Render", "World Rendering", &CustomPipes::WorldPipeSwitch, nil,
@@ -921,29 +1055,28 @@ extern bool gbRenderDebugEnvMap;
// DebugMenuAddVarBool8("Render", "Neo Road Gloss enable", &CustomPipes::GlossEnable, nil);
// DebugMenuAddVar("Render", "Mult", &CustomPipes::GlossMult, nil, 0.1f, 0, 1.0f);
#endif
- DebugMenuAddVarBool8("Render", "Show Ped Paths", &gbShowPedPaths, nil);
- DebugMenuAddVarBool8("Render", "Show Car Paths", &gbShowCarPaths, nil);
- DebugMenuAddVarBool8("Render", "Show Car Path Links", &gbShowCarPathsLinks, nil);
- DebugMenuAddVarBool8("Render", "Show Collision Lines", &gbShowCollisionLines, nil);
- DebugMenuAddVarBool8("Render", "Show Collision Polys", &gbShowCollisionPolys, nil);
- DebugMenuAddVarBool8("Render", "Don't render Buildings", &gbDontRenderBuildings, nil);
- DebugMenuAddVarBool8("Render", "Don't render Big Buildings", &gbDontRenderBigBuildings, nil);
- DebugMenuAddVarBool8("Render", "Don't render Peds", &gbDontRenderPeds, nil);
- DebugMenuAddVarBool8("Render", "Don't render Vehicles", &gbDontRenderVehicles, nil);
- DebugMenuAddVarBool8("Render", "Don't render Objects", &gbDontRenderObjects, nil);
- DebugMenuAddVarBool8("Render", "Don't Render Water", &gbDontRenderWater, nil);
+ DebugMenuAddVarBool8("Debug Render", "Show Ped Paths", &gbShowPedPaths, nil);
+ DebugMenuAddVarBool8("Debug Render", "Show Car Paths", &gbShowCarPaths, nil);
+ DebugMenuAddVarBool8("Debug Render", "Show Car Path Links", &gbShowCarPathsLinks, nil);
+ DebugMenuAddVarBool8("Debug Render", "Show Collision Lines", &gbShowCollisionLines, nil);
+ DebugMenuAddVarBool8("Debug Render", "Show Collision Polys", &gbShowCollisionPolys, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't render Buildings", &gbDontRenderBuildings, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't render Big Buildings", &gbDontRenderBigBuildings, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't render Peds", &gbDontRenderPeds, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't render Vehicles", &gbDontRenderVehicles, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't render Objects", &gbDontRenderObjects, nil);
+ DebugMenuAddVarBool8("Debug Render", "Don't Render Water", &gbDontRenderWater, nil);
-#ifdef PROPER_SCALING
- DebugMenuAddVarBool8("Draw", "Proper Scaling", &CDraw::ms_bProperScaling, nil);
-#endif
-#ifdef FIX_RADAR
- DebugMenuAddVarBool8("Draw", "Fix Radar", &CDraw::ms_bFixRadar, nil);
+
+#ifdef DRAW_GAME_VERSION_TEXT
+ DebugMenuAddVarBool8("Debug", "Version Text", &gbDrawVersionText, nil);
#endif
-#ifdef FIX_SPRITES
- DebugMenuAddVarBool8("Draw", "Fix Sprites", &CDraw::ms_bFixSprites, nil);
+ DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil);
+#ifdef TIMEBARS
+ DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil);
#endif
-
#ifndef FINAL
+ DebugMenuAddVarBool8("Debug", "Use debug render groups", &bDebugRenderGroups, nil);
DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil);
#ifdef USE_CUSTOM_ALLOCATOR
DebugMenuAddCmd("Debug", "Parse Heap", ParseHeap);
@@ -954,28 +1087,23 @@ extern bool gbRenderDebugEnvMap;
#ifdef GTA_SCENE_EDIT
DebugMenuAddVarBool8("Debug", "Edit on", &CSceneEdit::m_bEditOn, nil);
#endif
-#ifdef MAP_ENHANCEMENTS
- DebugMenuAddCmd("Debug", "Teleport to map waypoint", TeleportToWaypoint);
-#endif
- DebugMenuAddCmd("Debug", "Switch car collision", SwitchCarCollision);
- DebugMenuAddVar("Debug", "Engine Status", &engineStatus, nil, 1, 0, 226, nil);
- DebugMenuAddCmd("Debug", "Set Engine Status", SetEngineStatus);
- DebugMenuAddCmd("Debug", "Fix Car", FixCar);
- DebugMenuAddCmd("Debug", "Toggle Comedy Controls", ToggleComedy);
- DebugMenuAddCmd("Debug", "Place Car on Road", PlaceOnRoad);
-
- DebugMenuAddVarBool8("Debug", "Script Heli On", &CHeli::ScriptHeliOn, nil);
-
- DebugMenuAddCmd("Debug", "Start Credits", CCredits::Start);
- DebugMenuAddCmd("Debug", "Stop Credits", CCredits::Stop);
+ //DebugMenuAddCmd("Debug", "Start Credits", CCredits::Start);
+ //DebugMenuAddCmd("Debug", "Stop Credits", CCredits::Stop);
#ifdef RELOADABLES
- DebugMenuAddCmd("Reload", "HUD.TXD", CHud::ReloadTXD);
+// maybe put it back if we have more to reload
+// DebugMenuAddCmd("Reload", "HUD.TXD", CHud::ReloadTXD);
#endif
- DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil);
-#ifdef TIMEBARS
- DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil);
+
+#ifdef MAP_ENHANCEMENTS
+ DebugMenuAddCmd("Game", "Teleport to map waypoint", TeleportToWaypoint);
#endif
+ DebugMenuAddCmd("Game", "Fix Car", FixCar);
+ DebugMenuAddCmd("Game", "Place Car on Road", PlaceOnRoad);
+ DebugMenuAddCmd("Game", "Switch car collision", SwitchCarCollision);
+ DebugMenuAddCmd("Game", "Toggle Comedy Controls", ToggleComedy);
+
+
#ifdef MISSION_SWITCHER
DebugMenuEntry *missionEntry;
static const char* missions[] = {
@@ -1005,9 +1133,9 @@ extern bool gbRenderDebugEnvMap;
"A Date with Death (Toshiko Kasen)", "Cash in Kazuki's Chips (Toshiko Kasen)"
};
- missionEntry = DebugMenuAddVar("Debug", "Select mission", &nextMissionToSwitch, nil, 1, 0, ARRAY_SIZE(missions) - 1, missions);
+ missionEntry = DebugMenuAddVar("Game", "Select mission", &nextMissionToSwitch, nil, 1, 0, ARRAY_SIZE(missions) - 1, missions);
DebugMenuEntrySetWrap(missionEntry, true);
- DebugMenuAddCmd("Debug", "Start selected mission ", SwitchToMission);
+ DebugMenuAddCmd("Game", "Start selected mission ", SwitchToMission);
#endif
extern bool PrintDebugCode;
extern int16 DebugCamMode;
@@ -1060,7 +1188,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
strcat_s(re3_buff, re3_buffsize, "(Press Retry to debug the application)");
- nCode = ::MessageBoxA(nil, re3_buff, "RE3 Assertion Failed!",
+ nCode = ::MessageBoxA(nil, re3_buff, "RELCS Assertion Failed!",
MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
if (nCode == IDABORT)
@@ -1081,7 +1209,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
abort();
#else
// TODO
- printf("\nRE3 ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
+ printf("\nRELCS ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
assert(false);
#endif
}
@@ -1133,14 +1261,14 @@ void re3_usererror(const char *format, ...)
vsprintf_s(re3_buff, re3_buffsize, format, va);
va_end(va);
- ::MessageBoxA(nil, re3_buff, "RE3 Error!",
+ ::MessageBoxA(nil, re3_buff, "RELCS Error!",
MB_OK|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
raise(SIGABRT);
_exit(3);
#else
vsprintf(re3_buff, format, va);
- printf("\nRE3 Error!\n\t%s\n",re3_buff);
+ printf("\nRELCS Error!\n\t%s\n",re3_buff);
assert(false);
#endif
}
diff --git a/src/entities/Dummy.cpp b/src/entities/Dummy.cpp
index 9878b595..d62d2434 100644
--- a/src/entities/Dummy.cpp
+++ b/src/entities/Dummy.cpp
@@ -4,8 +4,8 @@
#include "World.h"
#include "Dummy.h"
-void *CDummy::operator new(size_t sz) { return CPools::GetDummyPool()->New(); }
-void CDummy::operator delete(void *p, size_t sz) { CPools::GetDummyPool()->Delete((CDummy*)p); }
+void *CDummy::operator new(size_t sz) throw() { return CPools::GetDummyPool()->New(); }
+void CDummy::operator delete(void *p, size_t sz) throw() { CPools::GetDummyPool()->Delete((CDummy*)p); }
void
CDummy::Add(void)
diff --git a/src/entities/Dummy.h b/src/entities/Dummy.h
index 84b1ce1a..9b73eefc 100644
--- a/src/entities/Dummy.h
+++ b/src/entities/Dummy.h
@@ -12,8 +12,8 @@ public:
void Add(void);
void Remove(void);
- static void *operator new(size_t);
- static void operator delete(void*, size_t);
+ static void *operator new(size_t) throw();
+ static void operator delete(void*, size_t) throw();
};
bool IsDummyPointerValid(CDummy* pDummy);
diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp
index 7e2104e1..d106898d 100644
--- a/src/entities/Entity.cpp
+++ b/src/entities/Entity.cpp
@@ -26,6 +26,12 @@
#include "Ped.h"
#include "Dummy.h"
#include "WindModifiers.h"
+#include "SpecialFX.h"
+#include "VisibilityPlugins.h"
+#include "RpAnimBlend.h"
+#include "CutsceneMgr.h"
+
+//--LCS: file done except TODO for distance alpha
int gBuildings;
@@ -71,13 +77,18 @@ CEntity::CEntity(void)
bDistanceFade = false;
m_flagE1 = false;
- m_flagE2 = false;
+ bDontCastShadowsOn = false;
bOffscreen = false;
bIsStaticWaitingForCollision = false;
bDontStream = false;
bUnderwater = false;
bHasPreRenderEffects = false;
+ bIsTreeModel = false;
+ m_flagG2 = false;
+ m_flagG4 = false;
+ m_flagG8 = false;
+
m_scanCode = 0;
m_modelIndex = -1;
m_rwObject = nil;
@@ -96,6 +107,8 @@ void
CEntity::SetModelIndex(uint32 id)
{
m_modelIndex = id;
+ bIsTreeModel = IsTreeModel(m_modelIndex);
+ bDrawLast |= bIsTreeModel;
bHasPreRenderEffects = HasPreRenderEffects();
CreateRwObject();
}
@@ -104,6 +117,8 @@ void
CEntity::SetModelIndexNoCreate(uint32 id)
{
m_modelIndex = id;
+ bIsTreeModel = IsTreeModel(m_modelIndex);
+ bDrawLast |= bIsTreeModel;
bHasPreRenderEffects = HasPreRenderEffects();
}
@@ -122,10 +137,11 @@ CEntity::CreateRwObject(void)
if(IsBuilding())
gBuildings++;
if(RwObjectGetType(m_rwObject) == rpATOMIC)
- m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false);
+ GetMatrix().AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic *)m_rwObject)), false);
else if(RwObjectGetType(m_rwObject) == rpCLUMP)
- m_matrix.AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false);
+ GetMatrix().AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump *)m_rwObject)), false);
+ // useless IsTextureLoaded();
mi->AddRef();
}
}
@@ -136,9 +152,9 @@ CEntity::AttachToRwObject(RwObject *obj)
m_rwObject = obj;
if(m_rwObject){
if(RwObjectGetType(m_rwObject) == rpATOMIC)
- m_matrix.Attach(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false);
+ GetMatrix().Attach(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic *)m_rwObject)), false);
else if(RwObjectGetType(m_rwObject) == rpCLUMP)
- m_matrix.Attach(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false);
+ GetMatrix().Attach(RwFrameGetMatrix(RpClumpGetFrame((RpClump *)m_rwObject)), false);
CModelInfo::GetModelInfo(m_modelIndex)->AddRef();
}
@@ -150,7 +166,7 @@ CEntity::DetachFromRwObject(void)
if(m_rwObject)
CModelInfo::GetModelInfo(m_modelIndex)->RemoveRef();
m_rwObject = nil;
- m_matrix.Detach();
+ GetMatrix().Detach();
}
RpAtomic*
@@ -178,13 +194,15 @@ CEntity::DeleteRwObject(void)
{
RwFrame *f;
- m_matrix.Detach();
+ GetMatrix().Detach();
if(m_rwObject){
if(RwObjectGetType(m_rwObject) == rpATOMIC){
f = RpAtomicGetFrame((RpAtomic*)m_rwObject);
+ CStreaming::UnregisterInstance((RpAtomic*)m_rwObject, nil);
RpAtomicDestroy((RpAtomic*)m_rwObject);
RwFrameDestroy(f);
}else if(RwObjectGetType(m_rwObject) == rpCLUMP){
+ CStreaming::UnregisterInstance((RpClump*)m_rwObject);
if(IsClumpSkinned((RpClump*)m_rwObject))
RpClumpForAllAtomics((RpClump*)m_rwObject, AtomicRemoveAnimFromSkinCB, nil);
RpClumpDestroy((RpClump*)m_rwObject);
@@ -201,18 +219,18 @@ CEntity::GetBoundRect(void)
{
CRect rect;
CVector v;
- CColModel *col = CModelInfo::GetModelInfo(m_modelIndex)->GetColModel();
+ CColModel *col = CModelInfo::GetColModel(m_modelIndex);
- rect.ContainPoint(m_matrix * col->boundingBox.min);
- rect.ContainPoint(m_matrix * col->boundingBox.max);
+ rect.ContainPoint(GetMatrix() * col->boundingBox.min);
+ rect.ContainPoint(GetMatrix() * col->boundingBox.max);
v = col->boundingBox.min;
v.x = col->boundingBox.max.x;
- rect.ContainPoint(m_matrix * v);
+ rect.ContainPoint(GetMatrix() * v);
v = col->boundingBox.max;
v.x = col->boundingBox.min.x;
- rect.ContainPoint(m_matrix * v);
+ rect.ContainPoint(GetMatrix() * v);
return rect;
}
@@ -220,21 +238,27 @@ CEntity::GetBoundRect(void)
CVector
CEntity::GetBoundCentre(void)
{
- CVector v;
- GetBoundCentre(v);
- return v;
+ return GetMatrix() * CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center;
}
+#ifdef GTA_PS2
+void
+CEntity::GetBoundCentre(CVuVector &out)
+{
+ TransformPoint(out, GetMatrix(), CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center);
+}
+#else
void
CEntity::GetBoundCentre(CVector &out)
{
- out = m_matrix * CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.center;
+ out = GetMatrix() * CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center;
}
+#endif
float
CEntity::GetBoundRadius(void)
{
- return CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.radius;
+ return CModelInfo::GetColModel(m_modelIndex)->boundingSphere.radius;
}
void
@@ -244,9 +268,18 @@ CEntity::UpdateRwFrame(void)
RwFrameUpdateObjects((RwFrame*)rwObjectGetParent(m_rwObject));
}
+bool
+PauseEntityAnims(void)
+{
+ return CSpecialFX::bSnapShotActive;
+}
+
void
CEntity::UpdateRpHAnim(void)
{
+ if(PauseEntityAnims())
+ return;
+
if(IsClumpSkinned(GetClump())){
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(GetClump());
RpHAnimHierarchyUpdateMatrices(hier);
@@ -308,9 +341,10 @@ CEntity::PreRender(void)
if(!bHasPreRenderEffects)
return;
+ // separate function in LCS but we don't know the name
switch(m_type){
case ENTITY_TYPE_BUILDING:
- if(IsTreeModel(GetModelIndex())){
+ if(bIsTreeModel){
float dist = (TheCamera.GetPosition() - GetPosition()).Magnitude2D();
CObject::fDistToNearestTree = Min(CObject::fDistToNearestTree, dist);
ModifyMatrixForTreeInWind();
@@ -373,7 +407,7 @@ CEntity::PreRender(void)
CVector pos = GetPosition();
CShadows::StoreShadowToBeRendered(SHADOWTYPE_DARK,
gpShadowPedTex, &pos,
- 0.4f, 0.0f, 0.0f, -0.4f,
+ 0.4f, 0.0f, 0.0f, 0.4f,
CTimeCycle::GetShadowStrength(),
CTimeCycle::GetShadowStrength(),
CTimeCycle::GetShadowStrength(),
@@ -409,19 +443,65 @@ void
CEntity::Render(void)
{
if(m_rwObject){
- bImBeingRendered = true;
- if(RwObjectGetType(m_rwObject) == rpATOMIC)
- RpAtomicRender((RpAtomic*)m_rwObject);
- else
- RpClumpRender((RpClump*)m_rwObject);
- bImBeingRendered = false;
+ if(CVisibilityPlugins::GetObjectDistanceAlpha(m_rwObject) != 0){
+ // NB: LCS does not use bImBeingRendered here,
+ // but that may be due to the streamed world. better keep it for safety
+ bImBeingRendered = true;
+ if(RwObjectGetType(m_rwObject) == rpATOMIC)
+ RpAtomicRender((RpAtomic*)m_rwObject);
+ else
+ RpClumpRender((RpClump*)m_rwObject);
+ bImBeingRendered = false;
+ }
}
}
+void
+CEntity::UpdateDistanceFade(void)
+{
+// TODO(LCS):
+// increasing and decreasing alpha depending on bDistanceFade doesn't make any sense
+// so disable this whole thing until it does.
+return;
+ int alpha = CVisibilityPlugins::GetObjectDistanceAlpha(m_rwObject);
+ if(CCutsceneMgr::IsRunning() || TheCamera.WorldViewerBeingUsed)
+ alpha = 255;
+ else if(bDistanceFade)
+ alpha = Max(alpha-16, 0);
+ else if(alpha < 255)
+ alpha = Min(alpha+32, 255);
+ CVisibilityPlugins::SetObjectDistanceAlpha(m_rwObject, alpha);
+}
+
+void
+CEntity::UpdateAnim(void)
+{
+ if(PauseEntityAnims())
+ return;
+
+ if(m_rwObject && RwObjectGetType(m_rwObject) == rpCLUMP && RpAnimBlendClumpGetFirstAssociation(GetClump())) {
+ if (IsObject())
+ RpAnimBlendClumpUpdateAnimations(GetClump(), CTimer::GetTimeStepNonClippedInSeconds());
+ else {
+ if (!bOffscreen)
+ bOffscreen = !GetIsOnScreen();
+ RpAnimBlendClumpUpdateAnimations(GetClump(), CTimer::GetTimeStepInSeconds(), !bOffscreen);
+ }
+ }
+}
+
+bool
+CEntity::GetIsTouching(CVUVECTOR const &center, float radius)
+{
+ CVUVECTOR boundCenter;
+ GetBoundCentre(boundCenter);
+ return sq(GetBoundRadius()+radius) > (boundCenter-center).MagnitudeSqr();
+}
+
bool
-CEntity::GetIsTouching(CVector const &center, float radius)
+CEntity::GetIsTouching(CEntity *other)
{
- return sq(GetBoundRadius()+radius) > (GetBoundCentre()-center).MagnitudeSqr();
+ return sq(GetBoundRadius()+other->GetBoundRadius()) > (GetBoundCentre()-other->GetBoundCentre()).MagnitudeSqr();
}
bool
@@ -439,8 +519,7 @@ CEntity::IsVisibleComplex(void)
bool
CEntity::GetIsOnScreen(void)
{
- return TheCamera.IsSphereVisible(GetBoundCentre(), GetBoundRadius(),
- &TheCamera.GetCameraMatrix());
+ return TheCamera.IsSphereVisible(GetBoundCentre(), GetBoundRadius());
}
bool
@@ -456,7 +535,7 @@ CEntity::GetIsOnScreenComplex(void)
return true;
CRect rect = GetBoundRect();
- CColModel *colmodel = CModelInfo::GetModelInfo(m_modelIndex)->GetColModel();
+ CColModel *colmodel = CModelInfo::GetColModel(m_modelIndex);
float z = GetPosition().z;
float minz = z + colmodel->boundingBox.min.z;
float maxz = z + colmodel->boundingBox.max.z;
@@ -611,7 +690,7 @@ CEntity::Remove(void)
float
CEntity::GetDistanceFromCentreOfMassToBaseOfModel(void)
{
- return -CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingBox.min.z;
+ return -CModelInfo::GetColModel(m_modelIndex)->boundingBox.min.z;
}
void
@@ -737,11 +816,6 @@ CEntity::PreRenderForGlassWindow(void)
bIsVisible = false;
}
-/*
-0x487A10 - SetAtomicAlphaCB
-0x4879E0 - SetClumpAlphaCB
-*/
-
RpMaterial*
SetAtomicAlphaCB(RpMaterial *material, void *data)
{
@@ -840,7 +914,7 @@ CEntity::SaveEntityFlags(uint8*& buf)
if (bDistanceFade) tmp |= BIT(7);
if (m_flagE1) tmp |= BIT(8);
- if (m_flagE2) tmp |= BIT(9);
+ if (bDontCastShadowsOn) tmp |= BIT(9);
if (bOffscreen) tmp |= BIT(10);
if (bIsStaticWaitingForCollision) tmp |= BIT(11);
if (bDontStream) tmp |= BIT(12);
@@ -896,7 +970,7 @@ CEntity::LoadEntityFlags(uint8*& buf)
bDistanceFade = !!(tmp & BIT(7));
m_flagE1 = !!(tmp & BIT(8));
- m_flagE2 = !!(tmp & BIT(9));
+ bDontCastShadowsOn = !!(tmp & BIT(9));
bOffscreen = !!(tmp & BIT(10));
bIsStaticWaitingForCollision = !!(tmp & BIT(11));
bDontStream = !!(tmp & BIT(12));
diff --git a/src/entities/Entity.h b/src/entities/Entity.h
index 5d26f85c..239292c5 100644
--- a/src/entities/Entity.h
+++ b/src/entities/Entity.h
@@ -45,6 +45,7 @@ private:
uint32 m_status : 5;
public:
// flagsA
+ // LCS flagsB 02
uint32 bUsesCollision : 1; // does entity use collision
uint32 bCollisionProcessed : 1; // has object been processed by a ProcessEntityCollision function
uint32 bIsStatic : 1; // is entity static
@@ -52,6 +53,7 @@ public:
uint32 bPedPhysics : 1;
uint32 bIsStuck : 1; // is entity stuck
uint32 bIsInSafePosition : 1; // is entity in a collision free safe position
+ // LCS flagsC
uint32 bUseCollisionRecords : 1;
// flagsB
@@ -62,6 +64,7 @@ public:
uint32 bRenderScorched : 1;
uint32 bHasBlip : 1;
uint32 bIsBIGBuilding : 1; // Set if this entity is a big building
+ // LCS flagsD
uint32 bStreamBIGBuilding : 1; // set when draw dist <= 2000
// flagsC
@@ -72,6 +75,7 @@ public:
uint32 bMeleeProof : 1;
uint32 bOnlyDamagedByPlayer : 1;
uint32 bStreamingDontDelete : 1; // Dont let the streaming remove this
+ // LCS flagsE
uint32 bRemoveFromWorld : 1; // remove this entity next time it should be processed
// flagsD
@@ -82,17 +86,24 @@ public:
uint32 bDrawLast : 1; // draw object last
uint32 bNoBrightHeadLights : 1;
uint32 bDoNotRender : 1; //-- only applies to CObjects apparently
+ // LCS flagsF
uint32 bDistanceFade : 1; // Fade entity because it is far away
// flagsE
uint32 m_flagE1 : 1;
- uint32 m_flagE2 : 1;
+ uint32 bDontCastShadowsOn : 1; // Dont cast shadows on this object
uint32 bOffscreen : 1; // offscreen flag. This can only be trusted when it is set to true
uint32 bIsStaticWaitingForCollision : 1; // this is used by script created entities - they are static until the collision is loaded below them
uint32 bDontStream : 1; // tell the streaming not to stream me
uint32 bUnderwater : 1; // this object is underwater change drawing order
uint32 bHasPreRenderEffects : 1; // Object has a prerender effects attached to it
+ // LCS flagsG
+ uint32 bIsTreeModel : 1;
+ uint32 m_flagG2 : 1;
+ uint32 m_flagG4 : 1;
+ uint32 m_flagG8 : 1;
+
uint16 m_scanCode;
uint16 m_randomSeed;
int16 m_modelIndex;
@@ -120,6 +131,7 @@ public:
virtual void Add(void);
virtual void Remove(void);
+ virtual bool UpdatesInCutscene(void) { return false; }
virtual void SetModelIndex(uint32 id);
virtual void SetModelIndexNoCreate(uint32 id);
virtual void CreateRwObject(void);
@@ -131,6 +143,7 @@ public:
virtual void Teleport(CVector v) {}
virtual void PreRender(void);
virtual void Render(void);
+ virtual void UpdateAnim(void);
virtual bool SetupLighting(void);
virtual void RemoveLighting(bool);
virtual void FlagToDestroyWhenNextProcessed(void) {}
@@ -150,11 +163,13 @@ public:
return (RpClump*)m_rwObject;
}
- void GetBoundCentre(CVector &out);
+ void UpdateDistanceFade(void);
+ void GetBoundCentre(CVUVECTOR &out);
CVector GetBoundCentre(void);
float GetBoundRadius(void);
float GetDistanceFromCentreOfMassToBaseOfModel(void);
- bool GetIsTouching(CVector const &center, float r);
+ bool GetIsTouching(CVUVECTOR const &center, float r);
+ bool GetIsTouching(CEntity *other);
bool GetIsOnScreen(void);
bool GetIsOnScreenComplex(void);
bool IsVisible(void);
diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp
index 7be5df23..2c554c8e 100644
--- a/src/entities/Physical.cpp
+++ b/src/entities/Physical.cpp
@@ -224,7 +224,7 @@ CPhysical::RemoveAndAdd(void)
CRect
CPhysical::GetBoundRect(void)
{
- CVector center;
+ CVUVECTOR center;
float radius;
GetBoundCentre(center);
radius = GetBoundRadius();
@@ -463,7 +463,7 @@ CPhysical::ApplyMoveForce(float jx, float jy, float jz)
void
CPhysical::ApplyTurnForce(float jx, float jy, float jz, float px, float py, float pz)
{
- CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass);
+ CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass);
CVector turnimpulse = CrossProduct(CVector(px, py, pz)-com, CVector(jx, jy, jz));
m_vecTurnSpeed += turnimpulse*(1.0f/m_fTurnMass);
m_vecTurnSpeed.x = clamp(m_vecTurnSpeed.x, -4.0f, 4.0f);
@@ -482,7 +482,7 @@ CPhysical::ApplyFrictionMoveForce(float jx, float jy, float jz)
void
CPhysical::ApplyFrictionTurnForce(float jx, float jy, float jz, float px, float py, float pz)
{
- CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass);
+ CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass);
CVector turnimpulse = CrossProduct(CVector(px, py, pz)-com, CVector(jx, jy, jz));
m_vecTurnFriction += turnimpulse*(1.0f/m_fTurnMass);
}
@@ -1046,7 +1046,7 @@ CPhysical::ApplyCollisionAlt(CEntity *B, CColPoint &colpoint, float &impulse, CV
moveSpeed += vImpulse * (1.0f/m_fMass);
// ApplyTurnForce
- CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass);
+ CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass);
CVector turnimpulse = CrossProduct(pointpos-com, vImpulse);
turnSpeed += turnimpulse*(1.0f/m_fTurnMass);
@@ -1282,7 +1282,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists)
CPhysical *A, *B;
CObject *Bobj;
bool canshift;
- CVector center;
+ CVUVECTOR center;
float radius;
int numCollisions;
@@ -1441,7 +1441,7 @@ CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists)
{
static CColPoint aColPoints[MAX_COLLISION_POINTS];
float radius;
- CVector center;
+ CVUVECTOR center;
int listtype;
CPhysical *A, *B;
int numCollisions;
@@ -1608,7 +1608,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists)
{
static CColPoint aColPoints[MAX_COLLISION_POINTS];
float radius;
- CVector center;
+ CVUVECTOR center;
CPtrList *list;
CPhysical *A, *B;
CObject *Aobj, *Bobj;
diff --git a/src/extras/GitSHA1.cpp.in b/src/extras/GitSHA1.cpp.in
new file mode 100644
index 00000000..6168dc79
--- /dev/null
+++ b/src/extras/GitSHA1.cpp.in
@@ -0,0 +1,2 @@
+#define GIT_SHA1 "@GIT_SHA1@"
+const char* g_GIT_SHA1 = GIT_SHA1;
diff --git a/src/extras/GitSHA1.h b/src/extras/GitSHA1.h
new file mode 100644
index 00000000..359bfaff
--- /dev/null
+++ b/src/extras/GitSHA1.h
@@ -0,0 +1 @@
+extern const char* g_GIT_SHA1; \ No newline at end of file
diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp
index 46efdd8a..e70bd6db 100644
--- a/src/extras/custompipes_gl.cpp
+++ b/src/extras/custompipes_gl.cpp
@@ -111,13 +111,7 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -167,9 +161,7 @@ leedsVehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
SetRenderState(SRCBLEND, BLENDSRCALPHA);
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
void
@@ -200,13 +192,7 @@ leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *hea
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -251,9 +237,7 @@ leedsVehicleRenderCB_mobile(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *hea
setTexture(1, nil);
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
static void
@@ -310,13 +294,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -357,9 +335,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
SetRenderState(SRCBLEND, BLENDSRCALPHA);
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
void
@@ -382,7 +358,7 @@ CreateVehiclePipe(void)
{
#include "shaders/obj/neoVehicle_frag.inc"
#include "shaders/obj/neoVehicle_vert.inc"
- const char *vs[] = { shaderDecl, header_vert_src, neoVehicle_vert_src, nil };
+ const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoVehicle_vert_src, nil };
const char *fs[] = { shaderDecl, header_frag_src, neoVehicle_frag_src, nil };
neoVehicleShader = Shader::create(vs, fs);
assert(neoVehicleShader);
@@ -455,13 +431,7 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
setWorldMatrix(atomic->getFrame()->getLTM());
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -494,9 +464,7 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
drawInst(header, inst);
inst++;
}
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
void
@@ -564,13 +532,7 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
Material *m;
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -608,9 +570,7 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
SetRenderState(SRCBLEND, BLENDSRCALPHA);
SetRenderState(DESTBLEND, BLENDINVSRCALPHA);
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
void
@@ -693,13 +653,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -722,9 +676,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
drawInst(header, inst);
inst++;
}
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
static void
@@ -743,13 +695,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
setWorldMatrix(atomic->getFrame()->getLTM());
lightingCB(atomic);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(header->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, header->vbo);
- setAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ setupVertexInput(header);
InstanceData *inst = header->inst;
rw::int32 n = header->numMeshes;
@@ -770,9 +716,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header)
drawInst(header, inst);
inst++;
}
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(header->attribDesc, header->numAttribs);
-#endif
+ teardownVertexInput(header);
}
void
@@ -794,7 +738,7 @@ CreateRimLightPipes(void)
{
#include "shaders/obj/simple_frag.inc"
#include "shaders/obj/neoRimSkin_vert.inc"
- const char *vs[] = { shaderDecl, header_vert_src, neoRimSkin_vert_src, nil };
+ const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoRimSkin_vert_src, nil };
const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil };
neoRimSkinShader = Shader::create(vs, fs);
assert(neoRimSkinShader);
@@ -803,7 +747,7 @@ CreateRimLightPipes(void)
{
#include "shaders/obj/simple_frag.inc"
#include "shaders/obj/neoRim_vert.inc"
- const char *vs[] = { shaderDecl, header_vert_src, neoRim_vert_src, nil };
+ const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoRim_vert_src, nil };
const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil };
neoRimShader = Shader::create(vs, fs);
assert(neoRimShader);
@@ -938,13 +882,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
else
CustomPipes::leedsWorldShader->use();
setWorldMatrix(&building->matrix);
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(building->instHeader->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, building->instHeader->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, building->instHeader->vbo);
- setAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs);
-#endif
+ setupVertexInput(building->instHeader);
CustomPipes::uploadWorldLights();
@@ -965,9 +903,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass)
drawInst(building->instHeader, inst);
}
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs);
-#endif
+ teardownVertexInput(building->instHeader);
if(defer)
numBlendInsts[pass]++;
}
@@ -1010,13 +946,7 @@ RenderBlendPass(int pass)
for(i = 0; i < numBlendInsts[pass]; i++){
BuildingInst *building = &blendInsts[pass][i];
-#ifdef RW_GL_USE_VAOS
- glBindVertexArray(building->instHeader->vao);
-#else
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, building->instHeader->ibo);
- glBindBuffer(GL_ARRAY_BUFFER, building->instHeader->vbo);
- setAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs);
-#endif
+ setupVertexInput(building->instHeader);
setWorldMatrix(&building->matrix);
InstanceData *inst = building->instHeader->inst;
@@ -1041,9 +971,7 @@ RenderBlendPass(int pass)
drawInst(building->instHeader, inst);
}
-#ifndef RW_GL_USE_VAOS
- disableAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs);
-#endif
+ teardownVertexInput(building->instHeader);
}
}
}
diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp
index 1ccd8ac5..84c1d059 100644
--- a/src/extras/postfx.cpp
+++ b/src/extras/postfx.cpp
@@ -7,6 +7,7 @@
#error "Need librw for EXTENDED_COLOURFILTER"
#endif
+#include "main.h"
#include "RwHelper.h"
#include "Camera.h"
#include "MBlur.h"
@@ -50,6 +51,9 @@ CPostFX::InitOnce(void)
void
CPostFX::Open(RwCamera *cam)
{
+ if(pFrontBuffer)
+ Close();
+
uint32 width = Pow(2.0f, int32(log2(RwRasterGetWidth (RwCameraGetRaster(cam))))+1);
uint32 height = Pow(2.0f, int32(log2(RwRasterGetHeight(RwCameraGetRaster(cam))))+1);
uint32 depth = RwRasterGetDepth(RwCameraGetRaster(cam));
@@ -407,6 +411,8 @@ CPostFX::GetBackBuffer(RwCamera *cam)
void
CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blur, int32 type, uint32 bluralpha)
{
+ PUSH_RENDERGROUP("CPostFX::Render");
+
// LCS PS2 blur is drawn in three passes:
// blend frame with current frame 3 times to blur a bit
// blend one more time with colour filter
@@ -475,6 +481,8 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu
bJustInitialised = false;
}else
bJustInitialised = true;
+
+ POP_RENDERGROUP();
}
int CPostFX::PrevRed[NUMAVERAGE], CPostFX::AvgRed;
diff --git a/src/extras/shaders/colourfilterLCS.frag b/src/extras/shaders/colourfilterLCS.frag
index 67348d0c..272ebb03 100644
--- a/src/extras/shaders/colourfilterLCS.frag
+++ b/src/extras/shaders/colourfilterLCS.frag
@@ -13,7 +13,7 @@ main(void)
vec4 color;
color.rgb = dst.rgb;
- color.a = 1.0f;
+ color.a = 1.0;
FRAGCOLOR(color);
}
diff --git a/src/extras/shaders/contrast.frag b/src/extras/shaders/contrast.frag
index 1b93f6fe..2d394f66 100644
--- a/src/extras/shaders/contrast.frag
+++ b/src/extras/shaders/contrast.frag
@@ -12,7 +12,7 @@ main(void)
vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));
vec4 color;
color.rgb = dst.rgb*u_contrastMult + u_contrastAdd;
- color.a = 1.0f;
+ color.a = 1.0;
FRAGCOLOR(color);
}
diff --git a/src/extras/shaders/make_hlsl.cmd b/src/extras/shaders/make_hlsl.cmd
deleted file mode 100644
index ae3aacb9..00000000
--- a/src/extras/shaders/make_hlsl.cmd
+++ /dev/null
@@ -1,7 +0,0 @@
-@echo off
-for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f
-for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f
-
-"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /DENVMAP /Fo obj\leedsDefault_ENV_VS.cso leedsDefault_VS_x.hlsl
-"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /DPASS_ADD /Fo obj\leedsDefault_ADD_PS.cso leedsDefault_PS_x.hlsl
-"%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /DPASS_BLEND /Fo obj\leedsDefault_BLEND_PS.cso leedsDefault_PS_x.hlsl
diff --git a/src/extras/shaders/neoVehicle.vert b/src/extras/shaders/neoVehicle.vert
index f0224ddb..6985a689 100644
--- a/src/extras/shaders/neoVehicle.vert
+++ b/src/extras/shaders/neoVehicle.vert
@@ -42,7 +42,7 @@ main(void)
v_tex1 = uv2.xy*0.5 + 0.5;
float b = 1.0 - clamp(dot(viewVec, Normal), 0.0, 1.0);
v_reflcolor = vec4(0.0, 0.0, 0.0, 1.0);
- v_reflcolor.a = mix(b*b*b*b*b, 1.0f, fresnel)*shininess;
+ v_reflcolor.a = mix(b*b*b*b*b, 1.0, fresnel)*shininess;
for(int i = 0; i < 5; i++)
v_reflcolor.rgb += DoDirLightSpec(u_specDir[i].xyz, u_specColor[i].rgb, Normal, viewVec, u_specDir[i].w)*specularity*lightStrength;
diff --git a/src/extras/shaders/neoVehicle_VS.hlsl b/src/extras/shaders/neoVehicle_VS.hlsl
index de75e745..fb730092 100644
--- a/src/extras/shaders/neoVehicle_VS.hlsl
+++ b/src/extras/shaders/neoVehicle_VS.hlsl
@@ -52,7 +52,7 @@ VS_out main(in VS_in input)
output.TexCoord1 = uv2.xy*0.5 + 0.5;
float b = 1.0 - saturate(dot(viewVec, Normal));
output.ReflColor = float4(0.0, 0.0, 0.0, 1.0);
- output.ReflColor.a = lerp(b*b*b*b*b, 1.0f, fresnel)*shininess;
+ output.ReflColor.a = lerp(b*b*b*b*b, 1.0, fresnel)*shininess;
//Light mainLight = lights[0];
for(i = 0; i < 5; i++)
diff --git a/src/extras/shaders/obj/colourfilterLCS_frag.inc b/src/extras/shaders/obj/colourfilterLCS_frag.inc
index 2c8e3532..886f0671 100644
--- a/src/extras/shaders/obj/colourfilterLCS_frag.inc
+++ b/src/extras/shaders/obj/colourfilterLCS_frag.inc
@@ -14,7 +14,7 @@ const char *colourfilterLCS_frag_src =
" vec4 color;\n"
" color.rgb = dst.rgb;\n"
-" color.a = 1.0f;\n"
+" color.a = 1.0;\n"
" FRAGCOLOR(color);\n"
"}\n"
diff --git a/src/extras/shaders/obj/contrast_frag.inc b/src/extras/shaders/obj/contrast_frag.inc
index 97f78194..a1ad479f 100644
--- a/src/extras/shaders/obj/contrast_frag.inc
+++ b/src/extras/shaders/obj/contrast_frag.inc
@@ -13,7 +13,7 @@ const char *contrast_frag_src =
" vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n"
" vec4 color;\n"
" color.rgb = dst.rgb*u_contrastMult + u_contrastAdd;\n"
-" color.a = 1.0f;\n"
+" color.a = 1.0;\n"
" FRAGCOLOR(color);\n"
"}\n"
diff --git a/src/extras/shaders/obj/neoVehicle_vert.inc b/src/extras/shaders/obj/neoVehicle_vert.inc
index b7b42622..ebd0ea12 100644
--- a/src/extras/shaders/obj/neoVehicle_vert.inc
+++ b/src/extras/shaders/obj/neoVehicle_vert.inc
@@ -43,7 +43,7 @@ const char *neoVehicle_vert_src =
" v_tex1 = uv2.xy*0.5 + 0.5;\n"
" float b = 1.0 - clamp(dot(viewVec, Normal), 0.0, 1.0);\n"
" v_reflcolor = vec4(0.0, 0.0, 0.0, 1.0);\n"
-" v_reflcolor.a = mix(b*b*b*b*b, 1.0f, fresnel)*shininess;\n"
+" v_reflcolor.a = mix(b*b*b*b*b, 1.0, fresnel)*shininess;\n"
" for(int i = 0; i < 5; i++)\n"
" v_reflcolor.rgb += DoDirLightSpec(u_specDir[i].xyz, u_specColor[i].rgb, Normal, viewVec, u_specDir[i].w)*specularity*lightStrength;\n"
diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp
index 3d513bbd..dde7d03d 100644
--- a/src/fakerw/fake.cpp
+++ b/src/fakerw/fake.cpp
@@ -950,6 +950,43 @@ RtBMPImageRead(const RwChar *imageName)
#endif
}
+
+RwImage *
+RtPNGImageWrite(RwImage *image, const RwChar *imageName)
+{
+#ifndef _WIN32
+ char *r = casepath(imageName);
+ if (r) {
+ rw::writePNG(image, r);
+ free(r);
+ } else {
+ rw::writePNG(image, imageName);
+ }
+
+#else
+ rw::writePNG(image, imageName);
+#endif
+ return image;
+}
+RwImage *
+RtPNGImageRead(const RwChar *imageName)
+{
+#ifndef _WIN32
+ RwImage *image;
+ char *r = casepath(imageName);
+ if (r) {
+ image = rw::readPNG(r);
+ free(r);
+ } else {
+ image = rw::readPNG(imageName);
+ }
+ return image;
+
+#else
+ return rw::readPNG(imageName);
+#endif
+}
+
#include "rtquat.h"
RtQuat *RtQuatRotate(RtQuat * quat, const RwV3d * axis, RwReal angle, RwOpCombineType combineOp) { return (RtQuat*)((rw::Quat*)quat)->rotate(axis, angle/180.0f*3.14159f, (CombineOp)combineOp); }
diff --git a/src/fakerw/rtpng.h b/src/fakerw/rtpng.h
new file mode 100644
index 00000000..80f29020
--- /dev/null
+++ b/src/fakerw/rtpng.h
@@ -0,0 +1,4 @@
+#pragma once
+
+RwImage *RtPNGImageWrite(RwImage * image, const RwChar * imageName);
+RwImage *RtPNGImageRead(const RwChar * imageName);
diff --git a/src/math/Matrix.h b/src/math/Matrix.h
index 6da4c767..0adcf32c 100644
--- a/src/math/Matrix.h
+++ b/src/math/Matrix.h
@@ -92,22 +92,6 @@ public:
void SetRotateXOnly(float angle);
void SetRotateYOnly(float angle);
void SetRotateZOnly(float angle);
- void SetRotateZOnlyScaled(float angle, float scale) {
- float c = Cos(angle);
- float s = Sin(angle);
-
- rx = c * scale;
- ry = s * scale;
- rz = 0.0f;
-
- fx = -s * scale;
- fy = c * scale;
- fz = 0.0f;
-
- ux = 0.0f;
- uy = 0.0f;
- uz = scale;
- }
void SetRotateX(float angle);
void SetRotateY(float angle);
void SetRotateZ(float angle);
diff --git a/src/math/VuVector.h b/src/math/VuVector.h
index 026965d1..ccaa4cfb 100644
--- a/src/math/VuVector.h
+++ b/src/math/VuVector.h
@@ -22,6 +22,8 @@ public:
x = 1.0f;
}
*/
+
+ // TODO: operator-
};
void TransformPoint(CVuVector &out, const CMatrix &mat, const CVuVector &in);
diff --git a/src/math/maths.h b/src/math/maths.h
index 8d68bf64..6a228036 100644
--- a/src/math/maths.h
+++ b/src/math/maths.h
@@ -10,7 +10,7 @@ inline float Acos(float x) { return acosf(x); }
inline float Tan(float x) { return tanf(x); }
inline float Atan(float x) { return atanf(x); }
inline float Atan2(float y, float x) { return atan2f(y, x); }
-inline float Abs(float x) { return fabs(x); }
+inline float Abs(float x) { return fabsf(x); }
inline float Sqrt(float x) { return sqrtf(x); }
inline float RecipSqrt(float x, float y) { return x/Sqrt(y); }
inline float RecipSqrt(float x) { return RecipSqrt(1.0f, x); }
diff --git a/src/modelinfo/BaseModelInfo.cpp b/src/modelinfo/BaseModelInfo.cpp
index ffd934ba..6d1a7c79 100644
--- a/src/modelinfo/BaseModelInfo.cpp
+++ b/src/modelinfo/BaseModelInfo.cpp
@@ -37,6 +37,7 @@ CBaseModelInfo::Shutdown(void)
m_2dEffectsID = -1;
m_num2dEffects = 0;
m_txdSlot = -1;
+ m_objectId = -1;
}
void
diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h
index 30f4c015..f92a73ad 100644
--- a/src/modelinfo/ModelInfo.h
+++ b/src/modelinfo/ModelInfo.h
@@ -38,6 +38,9 @@ public:
return ms_modelInfoPtrs[id];
}
static CBaseModelInfo *GetModelInfo(const char *name, int minIndex, int maxIndex);
+ static CColModel *GetColModel(int id){
+ return ms_modelInfoPtrs[id]->GetColModel();
+ }
static bool IsBoatModel(int32 id);
static bool IsBikeModel(int32 id);
diff --git a/src/objects/CutsceneObject.h b/src/objects/CutsceneObject.h
index af24c0a6..b0659c08 100644
--- a/src/objects/CutsceneObject.h
+++ b/src/objects/CutsceneObject.h
@@ -14,6 +14,7 @@ public:
CCutsceneObject(void);
~CCutsceneObject(void);
+ bool UpdatesInCutscene(void) { return true; }
void SetModelIndex(uint32 id);
void CreateShadow(void);
void ProcessControl(void);
diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp
index 0605f54f..575c592c 100644
--- a/src/objects/Object.cpp
+++ b/src/objects/Object.cpp
@@ -25,10 +25,32 @@ int16 CObject::nNoTempObjects;
//int16 CObject::nBodyCastHealth = 1000;
float CObject::fDistToNearestTree;
-void *CObject::operator new(size_t sz) { return CPools::GetObjectPool()->New(); }
-void *CObject::operator new(size_t sz, int handle) { return CPools::GetObjectPool()->New(handle);};
-void CObject::operator delete(void *p, size_t sz) { CPools::GetObjectPool()->Delete((CObject*)p); }
-void CObject::operator delete(void *p, int handle) { CPools::GetObjectPool()->Delete((CObject*)p); }
+// Object pools tends to be full sometimes, let's free a temp. object in this case.
+#ifdef FIX_BUGS
+void *CObject::operator new(size_t sz) throw() {
+ CObject *obj = CPools::GetObjectPool()->New();
+ if (!obj) {
+ CObjectPool *objectPool = CPools::GetObjectPool();
+ for (int32 i = 0; i < objectPool->GetSize(); i++) {
+ CObject *existing = objectPool->GetSlot(i);
+ if (existing && existing->ObjectCreatedBy == TEMP_OBJECT) {
+ int32 handle = objectPool->GetIndex(existing);
+ CWorld::Remove(existing);
+ delete existing;
+ obj = objectPool->New(handle);
+ break;
+ }
+ }
+ }
+ return obj;
+}
+#else
+void *CObject::operator new(size_t sz) throw() { return CPools::GetObjectPool()->New(); }
+#endif
+void *CObject::operator new(size_t sz, int handle) throw() { return CPools::GetObjectPool()->New(handle); };
+
+void CObject::operator delete(void *p, size_t sz) throw() { CPools::GetObjectPool()->Delete((CObject*)p); }
+void CObject::operator delete(void *p, int handle) throw() { CPools::GetObjectPool()->Delete((CObject*)p); }
CObject::CObject(void)
{
@@ -77,7 +99,7 @@ CObject::CObject(CDummyObject *dummy)
if (dummy->m_rwObject)
AttachToRwObject(dummy->m_rwObject);
else
- GetMatrix() = dummy->GetMatrix();
+ SetMatrix(dummy->GetMatrix());
m_objectMatrix = dummy->GetMatrix();
dummy->DetachFromRwObject();
@@ -190,8 +212,8 @@ void
CObject::Teleport(CVector vecPos)
{
CWorld::Remove(this);
- m_matrix.GetPosition() = vecPos;
- m_matrix.UpdateRW();
+ GetMatrix().GetPosition() = vecPos;
+ GetMatrix().UpdateRW();
UpdateRwFrame();
CWorld::Add(this);
}
@@ -356,7 +378,7 @@ CObject::ObjectDamage(float amount)
}
#endif
if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) {
- const CVector &vecPos = m_matrix.GetPosition();
+ const CVector& vecPos = GetMatrix().GetPosition();
const float fDirectionZ = 0.0002f * amount;
switch (m_nCollisionDamageEffect) {
case DAMAGE_EFFECT_CHANGE_MODEL:
@@ -653,7 +675,7 @@ CObject::ObjectDamage(float amount)
CParticle::AddParticle(PARTICLE_CAR_DEBRIS, particlePos, particleDir, nil, fSize, particleColor, nRotationSpeed, 0, nCurFrame, 0);
if ((i % 7) == 0) {
static RwRGBA secondaryColor = { 0x9A, 0x99, 0x99, 0x3E };
- CParticle::AddParticle(PARTICLE_DEBRIS, particlePos, particleDir, nil, 0.3, secondaryColor, nRotationSpeed, 0, 0, 0);
+ CParticle::AddParticle(PARTICLE_DEBRIS, particlePos, particleDir, nil, 0.3f, secondaryColor, nRotationSpeed);
}
}
PlayOneShotScriptObject(SCRIPT_SOUND_BOX_DESTROYED_2, vecPos);
@@ -746,7 +768,7 @@ CObject::Init(void)
m_pCollidingEntity = nil;
CColPoint point;
CEntity *outEntity = nil;
- const CVector &vecPos = m_matrix.GetPosition();
+ const CVector& vecPos = GetMatrix().GetPosition();
if (CWorld::ProcessVerticalLine(vecPos, vecPos.z - 10.0f, point, outEntity, true, false, false, false, false, false, nil))
m_pCurSurface = outEntity;
else
diff --git a/src/objects/Object.h b/src/objects/Object.h
index a8205ba9..a535732c 100644
--- a/src/objects/Object.h
+++ b/src/objects/Object.h
@@ -88,10 +88,10 @@ public:
static int16 nNoTempObjects;
static float fDistToNearestTree;
- static void *operator new(size_t);
- static void *operator new(size_t, int);
- static void operator delete(void*, size_t);
- static void operator delete(void*, int);
+ static void *operator new(size_t) throw();
+ static void *operator new(size_t, int) throw();
+ static void operator delete(void*, size_t) throw();
+ static void operator delete(void*, int) throw();
CObject(void);
CObject(int32, bool);
diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp
index a281062f..defd1995 100644
--- a/src/objects/ParticleObject.cpp
+++ b/src/objects/ParticleObject.cpp
@@ -33,7 +33,7 @@ CAudioHydrant::Add(CParticleObject *particleobject)
if ( AEHANDLE_IS_FAILED(List[i].AudioEntity) )
return false;
- DMAudio.SetEntityStatus(List[i].AudioEntity, true);
+ DMAudio.SetEntityStatus(List[i].AudioEntity, TRUE);
List[i].pParticleObject = particleobject;
diff --git a/src/objects/Stinger.cpp b/src/objects/Stinger.cpp
index b3660881..29efea10 100644
--- a/src/objects/Stinger.cpp
+++ b/src/objects/Stinger.cpp
@@ -46,7 +46,14 @@ CStinger::Init(CPed *pPed)
pOwner = pPed;
for (i = 0; i < NUM_STINGER_SEGMENTS; i++) {
- pSpikes[i] = new CStingerSegment;
+ pSpikes[i] = new CStingerSegment();
+#ifdef FIX_BUGS
+ if (!pSpikes[i]) {
+ // Abort!! Pool is full
+ Remove();
+ return;
+ }
+#endif
pSpikes[i]->bUsesCollision = false;
}
bIsDeployed = true;
@@ -75,10 +82,19 @@ CStinger::Remove()
for (int32 i = 0; i < NUM_STINGER_SEGMENTS; i++) {
CStingerSegment *spikeSegment = pSpikes[i];
+
+#ifdef FIX_BUGS
+ if (spikeSegment) {
+ CWorld::Remove(spikeSegment);
+ delete spikeSegment;
+ pSpikes[i] = nil;
+ }
+#else
if (spikeSegment->m_entryInfoList.first != nil)
spikeSegment->bRemoveFromWorld = true;
else
delete spikeSegment;
+#endif
}
bIsDeployed = false;
}
@@ -86,11 +102,17 @@ CStinger::Remove()
void
CStinger::Deploy(CPed *pPed)
{
+ // So total number of stingers allowed at the same time is 2, each by different CCopPed.
if (NumOfStingerSegments < NUM_STINGER_SEGMENTS*2 && !pPed->bInVehicle && pPed->IsPedInControl()) {
- if (!bIsDeployed && RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_WEAPON_THROWU) == nil) {
+ if (!bIsDeployed && RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_THROW_UNDER) == nil) {
Init(pPed);
+#ifdef FIX_BUGS
+ // Above call won't set it to true no more when object pool is full
+ if (!bIsDeployed)
+ return;
+#endif
pPed->SetPedState(PED_DEPLOY_STINGER);
- CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_THROWU);
+ CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_THROW_UNDER);
}
}
}
@@ -161,6 +183,7 @@ CStinger::CheckForBurstTyres()
}
}
+// Only called when bIsDeployed
void
CStinger::Process()
{
@@ -170,7 +193,7 @@ CStinger::Process()
if (pOwner != nil
&& !pOwner->bInVehicle
&& pOwner->GetPedState() == PED_DEPLOY_STINGER
- && RpAnimBlendClumpGetAssociation(pOwner->GetClump(), ANIM_WEAPON_THROWU)->currentTime > 0.39f)
+ && RpAnimBlendClumpGetAssociation(pOwner->GetClump(), ANIM_STD_THROW_UNDER)->currentTime > 0.39f)
{
m_nSpikeState = STINGERSTATE_DEPLOYING;
for (int i = 0; i < NUM_STINGER_SEGMENTS; i++)
@@ -226,7 +249,11 @@ CStinger::Process()
break;
case STINGERSTATE_REMOVE:
Remove();
+#ifdef FIX_BUGS
+ return;
+#else
break;
+#endif
}
CheckForBurstTyres();
} \ No newline at end of file
diff --git a/src/peds/CopPed.cpp b/src/peds/CopPed.cpp
index 9d22c98c..1efd7733 100644
--- a/src/peds/CopPed.cpp
+++ b/src/peds/CopPed.cpp
@@ -93,7 +93,7 @@ CCopPed::CCopPed(eCopType copType, int32 modifier) : CPed(PEDTYPE_COP)
m_nHassleTimer = 0;
field_61C = 0;
field_624 = 0;
- m_pStinger = new CStinger;
+ m_pStinger = new CStinger();
SetWeaponLockOnTarget(nil);
}
@@ -257,9 +257,9 @@ CCopPed::ArrestPlayer(void)
if (suspect && (suspect->m_nPedState == PED_ARRESTED || suspect->DyingOrDead() || suspect->EnteringCar())) {
- CAnimBlendAssociation *arrestAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ARREST_GUN);
+ CAnimBlendAssociation *arrestAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ARREST);
if (!arrestAssoc || arrestAssoc->blendDelta < 0.0f)
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ARREST_GUN, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ARREST, 4.0f);
CVector suspMidPos;
suspect->m_pedIK.GetComponentPosition(suspMidPos, PED_MID);
@@ -555,7 +555,7 @@ CCopPed::CopAI(void)
if (CWorld::GetIsLineOfSightClear(GetPosition(), nearPed->GetPosition(),
true, false, false, false, false, false, false)) {
- Say(SOUND_PED_COP_REACTION);
+ Say(SOUND_PED_COP_ASK_FOR_ID);
SetObjective(OBJECTIVE_HASSLE_CHAR, nearPed);
nearPed->SetObjective(OBJECTIVE_WAIT_ON_FOOT_FOR_COP, this);
m_nHassleTimer = CTimer::GetTimeInMilliseconds() + 100000;
@@ -747,7 +747,7 @@ CCopPed::ProcessControl(void)
}
if (m_pPointGunAt)
- Say(SOUND_PED_COP_UNK_129);
+ Say(SOUND_PED_COP_TARGETING);
if (m_bStopAndShootDisabledZone) {
bool dontShoot = false;
diff --git a/src/peds/EmergencyPed.cpp b/src/peds/EmergencyPed.cpp
index 62b70d7d..954c1c79 100644
--- a/src/peds/EmergencyPed.cpp
+++ b/src/peds/EmergencyPed.cpp
@@ -310,7 +310,7 @@ CEmergencyPed::MedicAI(void)
m_nEmergencyPedState = EMERGENCY_PED_STAND_STILL;
} else {
m_nEmergencyPedState = EMERGENCY_PED_FACE_TO_PATIENT;
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MEDIC, ANIM_CPR, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MEDIC, ANIM_MEDIC_CPR, 4.0f);
bIsDucking = true;
}
SetLookTimer(2000);
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp
index 1009a9b4..160b903c 100644
--- a/src/peds/Ped.cpp
+++ b/src/peds/Ped.cpp
@@ -53,10 +53,10 @@ bool CPed::bFannyMagnetCheat;
bool CPed::bPedCheat3;
CVector2D CPed::ms_vec2DFleePosition;
-void *CPed::operator new(size_t sz) { return CPools::GetPedPool()->New(); }
-void *CPed::operator new(size_t sz, int handle) { return CPools::GetPedPool()->New(handle); }
-void CPed::operator delete(void *p, size_t sz) { CPools::GetPedPool()->Delete((CPed*)p); }
-void CPed::operator delete(void *p, int handle) { CPools::GetPedPool()->Delete((CPed*)p); }
+void *CPed::operator new(size_t sz) throw() { return CPools::GetPedPool()->New(); }
+void *CPed::operator new(size_t sz, int handle) throw() { return CPools::GetPedPool()->New(handle); }
+void CPed::operator delete(void *p, size_t sz) throw() { CPools::GetPedPool()->Delete((CPed*)p); }
+void CPed::operator delete(void *p, int handle) throw() { CPools::GetPedPool()->Delete((CPed*)p); }
float gfTommyFatness = 1.0f;
@@ -317,7 +317,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
bCanGiveUpSunbathing = true;
m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, this);
- DMAudio.SetEntityStatus(m_audioEntityId, true);
+ DMAudio.SetEntityStatus(m_audioEntityId, TRUE);
m_fearFlags = CPedType::GetThreats(m_nPedType);
m_threatEntity = nil;
m_eventOrThreat = CVector2D(0.0f, 0.0f);
@@ -424,7 +424,7 @@ CPed::SetModelIndex(uint32 mi)
SetPedStats(modelInfo->m_pedStatType);
m_headingRate = m_pedStats->m_headingChangeRate;
m_animGroup = (AssocGroupId) modelInfo->m_animGroup;
- CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE);
+ CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE);
if (!CanUseTorsoWhenLooking())
m_pedIK.m_flags |= CPedIK::LOOKAROUND_HEAD_ONLY;
@@ -615,7 +615,7 @@ CPed::SetMoveAnim(void)
CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_BLOCK);
if (!animAssoc) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE);
if (!animAssoc)
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
@@ -623,24 +623,24 @@ CPed::SetMoveAnim(void)
return;
if (animAssoc) {
- CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
+ CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
if (!idleAssoc || idleAssoc->blendDelta <= 0.0f) {
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 8.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 8.0f);
}
}
}
if (!animAssoc) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
if (animAssoc)
if (m_nWaitState == WAITSTATE_STUCK || m_nWaitState == WAITSTATE_FINISH_FLEE)
return;
if (animAssoc) {
- CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
+ CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
if (!idleAssoc || idleAssoc->blendDelta <= 0.0f) {
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 4.0f);
}
}
}
@@ -662,20 +662,20 @@ CPed::SetMoveAnim(void)
switch (m_nMoveState) {
case PEDMOVE_STILL:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 4.0f);
break;
case PEDMOVE_WALK:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_WALK, 1.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_WALK, 1.0f);
break;
case PEDMOVE_RUN:
if (m_nPedState == PED_FLEE_ENTITY) {
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_RUN, 3.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUN, 3.0f);
} else {
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_RUN, 1.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUN, 1.0f);
}
break;
case PEDMOVE_SPRINT:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_SPRINT, 1.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUNFAST, 1.0f);
break;
default:
break;
@@ -683,12 +683,12 @@ CPed::SetMoveAnim(void)
if (animAssoc) {
if (m_leader) {
- CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_WALK);
+ CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_WALK);
if (!walkAssoc)
- walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_RUN);
+ walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_RUN);
if (!walkAssoc)
- walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_SPRINT);
+ walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_RUNFAST);
if (walkAssoc) {
animAssoc->speed = walkAssoc->speed;
@@ -1094,7 +1094,7 @@ CPed::MoveHeadToLook(void)
return;
bool handFreeToMove = false;
- AnimationId animToPlay = NUM_STD_ANIMS;
+ AnimationId animToPlay = ANIM_STD_NUM;
if (!GetWeapon()->IsType2Handed() && GetWeapon()->m_eWeaponType != WEAPONTYPE_ROCKETLAUNCHER)
handFreeToMove = true;
@@ -1107,18 +1107,18 @@ CPed::MoveHeadToLook(void)
#else
if (m_pedStats->m_temper < 49 || ((CPed*)m_pLookTarget)->m_nPedType == PEDTYPE_COP)
#endif
- animToPlay = ANIM_FUCKU;
+ animToPlay = ANIM_STD_PARTIAL_FUCKU;
else if(m_pedStats->m_temper < 47)
- animToPlay = ANIM_FIGHT_PPUNCH;
+ animToPlay = ANIM_STD_PARTIAL_PUNCH;
} else {
if (m_pedStats->m_temper > 49 || m_pLookTarget->GetModelIndex() == MI_POLICE)
- animToPlay = ANIM_FUCKU;
+ animToPlay = ANIM_STD_PARTIAL_FUCKU;
}
} else if (handFreeToMove && (CGeneral::GetRandomNumber() & 1)) {
- animToPlay = ANIM_FUCKU;
+ animToPlay = ANIM_STD_PARTIAL_FUCKU;
}
- if (animToPlay != NUM_STD_ANIMS) {
+ if (animToPlay != ANIM_STD_NUM) {
CAnimBlendAssociation *newAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f);
if (newAssoc) {
@@ -1427,10 +1427,10 @@ CPed::CalculateNewVelocity(void)
m_moved = CVector2D(-Sin(walkAngle), Cos(walkAngle)) * pedSpeed;
}
- CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
- CAnimBlendAssociation *fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
+ CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
+ CAnimBlendAssociation *fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE);
if(!fightAssoc)
- fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
+ fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
if(!fightAssoc)
fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
@@ -1609,7 +1609,7 @@ CPed::ProcessBuoyancy(void)
color.r = (0.5f * CTimeCycle::GetDirectionalRed() + CTimeCycle::GetAmbientRed()) * 127.5f;
color.g = (0.5f * CTimeCycle::GetDirectionalBlue() + CTimeCycle::GetAmbientBlue()) * 127.5f;
color.b = (0.5f * CTimeCycle::GetDirectionalGreen() + CTimeCycle::GetAmbientGreen()) * 127.5f;
- color.a = (CGeneral::GetRandomNumber() % 256 * 48.0f) + 48;
+ color.a = CGeneral::GetRandomNumberInRange(48.0f, 96.0f);
bIsInWater = true;
ApplyMoveForce(buoyancyImpulse);
if (!DyingOrDead()) {
@@ -1914,9 +1914,9 @@ CPed::ProcessControl(void)
} else {
if (m_nPedType != PEDTYPE_COP && neededTurn < DEGTORAD(15.0f) && m_nWaitState == WAITSTATE_FALSE) {
if ((m_nStoredMoveState == PEDMOVE_RUN || m_nStoredMoveState == PEDMOVE_SPRINT) && m_vecDamageNormal.z < 0.3f) {
- CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN);
+ CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN);
if (!runAssoc)
- runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT);
+ runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST);
if (runAssoc && runAssoc->blendAmount > 0.9f && runAssoc->IsRunning()) {
SetWaitState(WAITSTATE_HITWALL, nil);
@@ -2220,7 +2220,7 @@ CPed::ProcessControl(void)
bIsStanding = false;
CVector2D collidingEntMoveDir = -collidingVeh->m_vecMoveSpeed;
int dir = GetLocalDirection(collidingEntMoveDir);
- SetFall(1000, (AnimationId)(dir + ANIM_KO_SKID_FRONT), false);
+ SetFall(1000, (AnimationId)(dir + ANIM_STD_HIGHIMPACT_FRONT), false);
float damage;
if (collidingVeh->m_modelIndex == MI_TRAIN) {
@@ -2336,12 +2336,17 @@ CPed::ProcessControl(void)
}
uint8 flyDir = 0;
float feetZ = GetPosition().z - FEET_OFFSET;
- if ((obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ >= 500.0f) && (obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ <= feetZ)) {
- if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f)
- flyDir = 2;
- } else {
+#ifdef FIX_BUGS
+ if (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f)
flyDir = 1;
- }
+ else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 500.0f)
+ flyDir = 2;
+#else
+ if ((obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 500.0f) || (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ > feetZ))
+ flyDir = 1;
+ else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f)
+ flyDir = 2;
+#endif
if (flyDir != 0 && !bHeadStuckInCollision) {
SetPosition((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point));
@@ -2358,6 +2363,10 @@ CPed::ProcessControl(void)
forceDir.z = 4.0f;
ApplyMoveForce(forceDir);
+ // What was that for?? It pushes player inside of collision sometimes and kills him.
+#ifdef FIX_BUGS
+ if (!IsPlayer())
+#endif
GetMatrix().GetPosition() += 0.25f * offsetToCheck;
m_fRotationCur = CGeneral::GetRadianAngleBetweenPoints(offsetToCheck.x, offsetToCheck.y, 0.0f, 0.0f);
@@ -2366,14 +2375,14 @@ CPed::ProcessControl(void)
SetHeading(m_fRotationCur);
if (m_nPedState != PED_FALL && !bIsPedDieAnimPlaying) {
- SetFall(1000, ANIM_KO_SKID_BACK, true);
+ SetFall(1000, ANIM_STD_HIGHIMPACT_BACK, true);
}
bIsInTheAir = false;
} else if (m_vecDamageNormal.z > 0.4f) {
if (m_nPedState == PED_JUMP) {
if (m_nWaitTimer <= 2000) {
if (m_nWaitTimer < 1000)
- m_nWaitTimer += CTimer::GetTimeStep() * 0.02f * 1000.0f;
+ m_nWaitTimer += CTimer::GetTimeStepInMilliseconds();
} else {
m_nWaitTimer = 0;
}
@@ -2414,10 +2423,10 @@ CPed::ProcessControl(void)
m_fRotationCur = m_fRotationDest;
SetHeading(m_fRotationCur);
}
- CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_GLIDE);
+ CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_GLIDE);
if (!jumpAssoc)
- jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_GLIDE);
+ jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_GLIDE);
if (jumpAssoc) {
jumpAssoc->blendDelta = -3.0f;
@@ -2426,10 +2435,10 @@ CPed::ProcessControl(void)
if (m_nPedState == PED_JUMP)
m_nPedState = PED_IDLE;
} else {
- CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_GLIDE);
+ CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_GLIDE);
if (!jumpAssoc)
- jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_GLIDE);
+ jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_GLIDE);
if (jumpAssoc) {
jumpAssoc->blendDelta = -3.0f;
@@ -2560,27 +2569,27 @@ CPed::ProcessControl(void)
int16 padWalkX = pad->GetPedWalkLeftRight();
int16 padWalkY = pad->GetPedWalkUpDown();
if (Abs(padWalkX) > 0.0f || Abs(padWalkY) > 0.0f) {
- if (vehAnim == ANIM_CAR_OPEN_LHS || vehAnim == ANIM_CAR_OPEN_RHS || vehAnim == ANIM_COACH_OPEN_L || vehAnim == ANIM_COACH_OPEN_R ||
- vehAnim == ANIM_VAN_OPEN_L || vehAnim == ANIM_VAN_OPEN) {
+ if (vehAnim == ANIM_STD_CAR_OPEN_DOOR_LHS || vehAnim == ANIM_STD_CAR_OPEN_DOOR_RHS || vehAnim == ANIM_STD_COACH_OPEN_LHS || vehAnim == ANIM_STD_COACH_OPEN_RHS ||
+ vehAnim == ANIM_STD_VAN_OPEN_DOOR_REAR_LHS || vehAnim == ANIM_STD_VAN_OPEN_DOOR_REAR_RHS) {
if (!m_pMyVehicle->pDriver) {
cancelJack = false;
bCancelEnteringCar = true;
} else
cancelJack = true;
- } else if (vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f) {
+ } else if (vehAnim == ANIM_STD_QUICKJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f) {
cancelJack = true;
- } else if (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS) {
+ } else if (vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_RHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_RHS) {
bCancelEnteringCar = true;
cancelJack = false;
}
}
- if (cancelJack && vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f && m_pVehicleAnim->GetTimeLeft() < 0.78f) {
+ if (cancelJack && vehAnim == ANIM_STD_QUICKJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f && m_pVehicleAnim->GetTimeLeft() < 0.78f) {
cancelJack = false;
QuitEnteringCar();
RestorePreviousObjective();
}
- if (cancelJack && (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS)) {
+ if (cancelJack && (vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_RHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_RHS)) {
cancelJack = false;
bCancelEnteringCar = true;
}
@@ -2771,12 +2780,12 @@ CPed::ProcessControl(void)
break;
case PED_HANDS_UP:
if (m_pedStats->m_flags & STAT_GUN_PANIC) {
- if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSCOWER)) {
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSCOWER);
+ if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSCOWER)) {
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSCOWER);
Say(SOUND_PED_HANDS_COWER);
}
- } else if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSUP)) {
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSUP);
+ } else if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSUP)) {
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP);
Say(SOUND_PED_HANDS_UP);
}
break;
@@ -2971,7 +2980,7 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints)
upperSpeedLimit *= 2.0f;
lowerSpeedLimit *= 1.5f;
}
- CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL);
+ CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL);
if (!bWasStanding && speed > upperSpeedLimit && (!bPushedAlongByCar || m_vecMoveSpeed.z < lowerSpeedLimit)
&& m_pCollidingEntity != collidingEnt) {
@@ -3126,7 +3135,7 @@ CPed::PlayFootSteps(void)
static float animSections = 15.f;
float moveStart, soundVolume, skateTime;
- if (walkRunAssoc->animId == ANIM_WALK) {
+ if (walkRunAssoc->animId == ANIM_STD_WALK) {
moveStart = 0.0f;
skateTime = 8.f / 15.f;
} else {
@@ -3138,7 +3147,7 @@ CPed::PlayFootSteps(void)
if (CGeneral::GetRandomNumber() % 128) {
m_vecAnimMoveDelta *= 0.5f;
} else {
- SetFall(0, ANIM_KO_SKID_BACK, false);
+ SetFall(0, ANIM_STD_HIGHIMPACT_BACK, false);
}
soundVolume = 0.5f;
break;
@@ -3146,7 +3155,7 @@ CPed::PlayFootSteps(void)
if (CGeneral::GetRandomNumber() % 64) {
m_vecAnimMoveDelta *= 0.2f;
} else {
- SetFall(0, ANIM_KO_SKID_BACK, false);
+ SetFall(0, ANIM_STD_HIGHIMPACT_BACK, false);
}
soundVolume = 0.2f;
break;
@@ -3944,7 +3953,7 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg)
ped->RestorePreviousObjective();
else if (ped->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) {
ped->m_fHealth = 0.0f;
- ped->SetDie(ANIM_FLOOR_HIT, 4.0f, 0.5f);
+ ped->SetDie(ANIM_STD_HIT_FLOOR, 4.0f, 0.5f);
}
ped->bInVehicle = false;
@@ -4087,7 +4096,7 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg)
ped->bOnBoat = false;
if (ped->bBusJacked) {
- ped->SetFall(1500, ANIM_KO_SKID_BACK, false);
+ ped->SetFall(1500, ANIM_STD_HIGHIMPACT_BACK, false);
ped->bBusJacked = false;
}
ped->m_nStoredMoveState = PEDMOVE_NONE;
@@ -4113,13 +4122,13 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg)
CPed *ped = (CPed*)arg;
uint8 exitFlags = 0;
- quickJackedAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_CAR_QJACKED);
+ quickJackedAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_QUICKJACKED);
if (dragAssoc && dragAssoc->animId == ANIM_BIKE_HIT && ped->m_pMyVehicle) {
if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_RF) {
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_FALL_OFF, 100.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_FALLOFF, 100.0f);
ped->m_pMyVehicle->m_nGettingOutFlags &= ~(CAR_DOOR_FLAG_RF | CAR_DOOR_FLAG_LF);
} else {
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_FALL_R, 100.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_FALLBACK, 100.0f);
ped->m_pMyVehicle->m_nGettingOutFlags &= ~(CAR_DOOR_FLAG_RR | CAR_DOOR_FLAG_LR);
}
((CBike*)ped->m_pMyVehicle)->KnockOffRider(WEAPONTYPE_UNIDENTIFIED, 0, ped, true);
@@ -4163,7 +4172,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg)
if (ped->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) {
dragAssoc->SetDeleteCallback(PedSetDraggedOutCarPositionCB, ped);
ped->m_fHealth = 0.0f;
- ped->SetDie(ANIM_FLOOR_HIT, 1000.0f, 0.5f);
+ ped->SetDie(ANIM_STD_HIT_FLOOR, 1000.0f, 0.5f);
return;
}
@@ -4172,7 +4181,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg)
} else {
dragAssoc->SetDeleteCallback(PedSetDraggedOutCarPositionCB, ped);
if (ped->CanSetPedState())
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f);
}
ped->ReplaceWeaponWhenExitingVehicle();
@@ -4919,7 +4928,7 @@ CPed::PreRender(void)
if (Abs(speed.x) <= 0.05f && Abs(speed.y) <= 0.05f) {
if (!OnGround() && m_nPedState != PED_ATTACK && m_nPedState != PED_FIGHT) {
- if (!IsPedHeadAbovePos(0.3f) || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED)) {
+ if (!IsPedHeadAbovePos(0.3f) || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED)) {
doSplashUp = false;
}
} else
@@ -5104,11 +5113,11 @@ CPed::SetFall(int extraTime, AnimationId animId, uint8 evenIfNotInControl)
SetStoredState();
SetPedState(PED_FALL);
CAnimBlendAssociation *fallAssoc = nil;
- if (animId == NUM_STD_ANIMS) {
+ if (animId == ANIM_STD_NUM) {
if (IsPlayer()) {
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLOUT_LHS);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROLLOUT_LHS);
if (!fallAssoc)
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLOUT_RHS);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROLLOUT_RHS);
}
} else {
fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), animId);
@@ -5122,7 +5131,7 @@ CPed::SetFall(int extraTime, AnimationId animId, uint8 evenIfNotInControl)
else {
fallAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animId, 8.0f);
}
- if (animId == ANIM_BIKE_FALL_R)
+ if (animId == ANIM_STD_BIKE_FALLBACK)
fallAssoc->SetCurrentTime(0.4f);
}
@@ -5130,7 +5139,7 @@ CPed::SetFall(int extraTime, AnimationId animId, uint8 evenIfNotInControl)
m_getUpTimer = UINT32_MAX;
} else if (fallAssoc) {
if (IsPlayer()) {
- if (fallAssoc->animId == ANIM_CAR_ROLLOUT_LHS || fallAssoc->animId == ANIM_CAR_ROLLOUT_RHS) {
+ if (fallAssoc->animId == ANIM_STD_ROLLOUT_LHS || fallAssoc->animId == ANIM_STD_ROLLOUT_RHS) {
m_getUpTimer = 1000.0f * fallAssoc->hierarchy->totalLength
+ CTimer::GetTimeInMilliseconds()
- 1000.0f * fallAssoc->currentTime
@@ -5174,19 +5183,19 @@ CPed::Fall(void)
firstPartialAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_PARTIAL);
// What???
- if (firstPartialAssoc && (firstPartialAssoc->animId == ANIM_FALL_BACK || firstPartialAssoc->animId == ANIM_FALL_FRONT))
+ if (firstPartialAssoc && (firstPartialAssoc->animId == ANIM_STD_FALL_ONBACK || firstPartialAssoc->animId == ANIM_STD_FALL_ONFRONT))
fallAssoc = firstPartialAssoc;
else
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_BACK);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_ONBACK);
if (!fallAssoc)
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FRONT);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_ONFRONT);
if (!fallAssoc && firstPartialAssoc && 0.8f * firstPartialAssoc->hierarchy->totalLength < firstPartialAssoc->currentTime) {
if (firstPartialAssoc->flags & ASSOC_FRONTAL) {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_FRONT, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_ONFRONT, 8.0f);
} else {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_BACK, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_ONBACK, 8.0f);
}
} else if (fallAssoc && fallAssoc->blendAmount > 0.3f && fallAssoc->blendDelta >= 0.0f) {
float time = fallAssoc->currentTime;
@@ -5197,10 +5206,10 @@ CPed::Fall(void)
}
}
} else if ((bKnockedUpIntoAir || bKnockedOffBike) && bIsStanding && !bWasStanding) {
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_BACK);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_ONBACK);
if (!fallAssoc)
- fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FRONT);
+ fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_ONFRONT);
if (fallAssoc) {
bKnockedUpIntoAir = false;
@@ -5247,7 +5256,7 @@ CPed::SetInTheAir(void)
return;
bIsInTheAir = true;
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_GLIDE, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_GLIDE, 4.0f);
if (m_nPedState == PED_ATTACK) {
ClearAttack();
@@ -5273,9 +5282,9 @@ CPed::InTheAir(void)
if (CWorld::ProcessLineOfSight(ourPos, bitBelow, foundCol, foundEnt, true, true, false, true, false, false, false)) {
if (GetPosition().z - foundCol.point.z < 1.3f || bIsStanding)
SetLanding();
- } else if (m_nPedState != PED_ABSEIL && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL)) {
+ } else if (m_nPedState != PED_ABSEIL && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL)) {
if (m_vecMoveSpeed.z < -0.1f)
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_FALL, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL, 4.0f);
}
}
}
@@ -5287,7 +5296,7 @@ CPed::SetLanding(void)
if (DyingOrDead())
return;
- CAnimBlendAssociation *fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL);
+ CAnimBlendAssociation *fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL);
CAnimBlendAssociation *landAssoc;
if (fallAssoc && bIsDrowning)
@@ -5295,7 +5304,7 @@ CPed::SetLanding(void)
RpAnimBlendClumpSetBlendDeltas(GetClump(), ASSOC_PARTIAL, -1000.0f);
if (fallAssoc || m_nPedType == PEDTYPE_COP && bKnockedUpIntoAir) {
- landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_COLLAPSE);
+ landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_COLLAPSE);
DMAudio.PlayOneShot(m_audioEntityId, SOUND_FALL_COLLAPSE, 1.0f);
if (IsPlayer())
@@ -5307,7 +5316,7 @@ CPed::SetLanding(void)
}
} else {
- landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_LAND);
+ landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_LAND);
DMAudio.PlayOneShot(m_audioEntityId, SOUND_FALL_LAND, 1.0f);
}
@@ -5355,12 +5364,12 @@ CPed::SetGetUp(void)
m_pCollidingEntity = nil;
bKnockedUpIntoAir = false;
bKnockedOffBike = false;
- CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT);
+ CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST);
if (animAssoc) {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN)) {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_RUN, 8.0f);
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN)) {
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_RUN, 8.0f);
} else {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f);
}
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
}
@@ -5370,19 +5379,19 @@ CPed::SetGetUp(void)
// Seemingly they planned to use different getup anims for different conditions, but sadly in final game all getup anims(GETUP1, GETUP2, GETUP3) are same...
if (bFleeWhenStanding && m_threatEx)
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f);
else
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f);
} else if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL))
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP_FRONT, 1000.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP_FRONT, 1000.0f);
else
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f);
animAssoc->SetFinishCallback(PedGetupCB, this);
} else {
m_fHealth = 0.0f;
- SetDie(NUM_STD_ANIMS, 4.0f, 0.0f);
+ SetDie(ANIM_STD_NUM, 4.0f, 0.0f);
}
}
@@ -6768,7 +6777,7 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType)
if (neededTurn <= DEGTORAD(90.0f) || veh->GetModelIndex() == MI_RCBANDIT || vehPressedHorn || animType != 0) {
SetLookFlag(veh, true);
if ((CGeneral::GetRandomNumber() & 1) && veh->GetModelIndex() != MI_RCBANDIT && animType == 0) {
- stepAnim = ANIM_IDLE_TAXI;
+ stepAnim = ANIM_STD_HAILTAXI;
} else {
float vehDirection = CGeneral::GetRadianAngleBetweenPoints(
@@ -6791,11 +6800,11 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType)
else
angleToFace = vehDirection + HALFPI;
- stepAnim = NUM_STD_ANIMS;
+ stepAnim = ANIM_STD_NUM;
if (animType == 0 || animType == 1)
- stepAnim = ANIM_EV_STEP;
+ stepAnim = ANIM_STD_EVADE_STEP;
else if (animType == 2)
- stepAnim = ANIM_HANDSCOWER;
+ stepAnim = ANIM_STD_HANDSCOWER;
}
if (!RpAnimBlendClumpGetAssociation(GetClump(), stepAnim)) {
CAnimBlendAssociation *stepAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, stepAnim, 8.0f);
@@ -6904,11 +6913,11 @@ CPed::SetEvasiveDive(CPhysical *reason, uint8 onlyRandomJump)
ClearLookFlag();
ClearAimFlag();
SetLookFlag(reason, true);
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSUP);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSUP);
if (animAssoc)
return;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSUP, 8.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP, 8.0f);
animAssoc->flags &= ~ASSOC_DELETEFADEDOUT;
animAssoc->SetFinishCallback(PedEvadeCB, this);
SetStoredState();
@@ -6919,7 +6928,7 @@ CPed::SetEvasiveDive(CPhysical *reason, uint8 onlyRandomJump)
ClearAimFlag();
SetStoredState();
SetPedState(PED_DIVE_AWAY);
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_EV_DIVE, 8.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_EVADE_DIVE, 8.0f);
animAssoc->SetFinishCallback(PedEvadeCB, this);
}
@@ -6942,7 +6951,7 @@ CPed::PedEvadeCB(CAnimBlendAssociation* animAssoc, void* arg)
if (ped->m_nPedState == PED_DIVE_AWAY || ped->m_nPedState == PED_STEP_AWAY)
ped->RestorePreviousState();
- } else if (animAssoc->animId == ANIM_EV_DIVE) {
+ } else if (animAssoc->animId == ANIM_STD_EVADE_DIVE) {
ped->bUpdateAnimHeading = true;
ped->ClearLookFlag();
if (ped->m_nPedState == PED_DIVE_AWAY) {
@@ -7002,7 +7011,7 @@ CPed::SetDie(AnimationId animId, float delta, float speed)
}
SetPedState(PED_DIE);
- if (animId == NUM_STD_ANIMS) {
+ if (animId == ANIM_STD_NUM) {
bIsPedDieAnimPlaying = false;
} else {
dieAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animId, delta);
@@ -7024,7 +7033,7 @@ CPed::SetDie(AnimationId animId, float delta, float speed)
StopNonPartialAnims();
m_bloodyFootprintCountOrDeathTime = CTimer::GetTimeInMilliseconds();
- if (!CGame::nastyGame && animId == ANIM_FLOOR_HIT) {
+ if (!CGame::nastyGame && animId == ANIM_STD_HIT_FLOOR) {
if (dieAssoc) {
dieAssoc->SetCurrentTime(dieAssoc->hierarchy->totalLength - 0.01f);
dieAssoc->SetRun();
@@ -7044,7 +7053,7 @@ CPed::FinishDieAnimCB(CAnimBlendAssociation *animAssoc, void *arg)
void
CPed::SetDead(void)
{
- if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DROWN))
+ if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DROWN))
bUsesCollision = false;
m_fHealth = 0.0f;
@@ -7121,7 +7130,7 @@ CPed::Chat(void)
}
if (bIsTalking) {
if (CGeneral::GetRandomNumber() < 512) {
- CAnimBlendAssociation *chatAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT);
+ CAnimBlendAssociation *chatAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT);
if (chatAssoc) {
chatAssoc->blendDelta = -4.0f;
chatAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -7133,10 +7142,10 @@ CPed::Chat(void)
} else {
if (CGeneral::GetRandomNumber() < 20 && !RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE)) {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f);
}
if (!bIsTalking && !RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE)) {
- CAnimBlendAssociation *chatAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_CHAT, 4.0f);
+ CAnimBlendAssociation *chatAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CHAT, 4.0f);
float chatTime = CGeneral::GetRandomNumberInRange(0.0f, 3.0f);
chatAssoc->SetCurrentTime(chatTime);
@@ -7153,7 +7162,7 @@ CPed::Chat(void)
void
CPed::ClearChat(void)
{
- CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT);
+ CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -7233,7 +7242,7 @@ StartTalkingOnMobileCB(CAnimBlendAssociation* assoc, void* arg)
{
CPed* ped = (CPed*)arg;
if (ped->m_nPedState == PED_ANSWER_MOBILE)
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_PHONE_TALK, 4.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_TALK, 4.0f);
}
void
@@ -7254,7 +7263,7 @@ CPed::SetAnswerMobile(void)
if (m_nPedState != PED_ANSWER_MOBILE && !DyingOrDead()) {
SetPedState(PED_ANSWER_MOBILE);
RemoveWeaponAnims(GetWeapon()->m_eWeaponType, -4.0f);
- CAnimBlendAssociation *assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_PHONE_IN, 4.0f);
+ CAnimBlendAssociation *assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_IN, 4.0f);
assoc->SetFinishCallback(StartTalkingOnMobileCB, this);
m_lookTimer = INT32_MAX;
if (m_storedWeapon == WEAPONTYPE_UNIDENTIFIED)
@@ -7270,8 +7279,8 @@ CPed::ClearAnswerMobile(void)
if (m_nLastPedState == PED_ANSWER_MOBILE)
m_nLastPedState = PED_NONE;
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_TALK)) {
- CAnimBlendAssociation *assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_PHONE_OUT, 8.0f);
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_TALK)) {
+ CAnimBlendAssociation *assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_OUT, 8.0f);
assoc->SetFinishCallback(FinishTalkingOnMobileCB, this);
} else
FinishTalkingOnMobileCB(nil, this);
@@ -7289,9 +7298,9 @@ CPed::AnswerMobile(void)
if (!IsPedInControl())
return;
- CAnimBlendAssociation *phoneInAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_IN);
- CAnimBlendAssociation *phoneOutAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_OUT);
- CAnimBlendAssociation *phoneTalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_TALK);
+ CAnimBlendAssociation *phoneInAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_IN);
+ CAnimBlendAssociation *phoneOutAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_OUT);
+ CAnimBlendAssociation *phoneTalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_TALK);
if (phoneInAssoc || phoneTalkAssoc || phoneOutAssoc) {
if (phoneInAssoc) {
if (phoneInAssoc->currentTime >= 0.85f && !m_pWeaponModel) {
@@ -7311,7 +7320,7 @@ CPed::AnswerMobile(void)
}
}
} else {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_PHONE_TALK, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_TALK, 4.0f);
}
}
@@ -7672,27 +7681,27 @@ CPed::SetPedPositionInCar(void)
if (bChangedSeat) {
if (m_pMyVehicle->IsBike()) {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_JUMPON_R)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_JUMPON_L)
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_JUMPON_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_JUMPON_RHS)
|| RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_KICK)) {
LineUpPedWithCar(LINE_UP_TO_CAR_START);
return;
}
bChangedSeat = false;
} else {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_GETIN_LHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_GETIN_LOW_LHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_CLOSEDOOR_LHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_CLOSEDOOR_LOW_LHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SHUFFLE_RHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSHUFFLE_RHS)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_CLOSE_L)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_CLOSE)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_GETIN_L)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_GETIN)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_COACH_IN_L)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_COACH_IN_R)
- || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_JUMPIN_LHS)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_GET_IN_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_GET_IN_LO_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_LO_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SHUFFLE_RHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SHUFFLE_LO_RHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_GET_IN_REAR_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_GET_IN_REAR_RHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_COACH_GET_IN_LHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_COACH_GET_IN_RHS)
+ || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_JUMP_IN_LO_LHS)) {
notYet = true;
}
}
@@ -7752,26 +7761,40 @@ CPed::SetPedPositionInCar(void)
} else {
m_fRotationCur = m_pMyVehicle->GetForward().Heading();
}
- GetMatrix() = newMat;
+ SetMatrix(newMat);
}
void
CPed::LookForSexyPeds(void)
{
if ((!IsPedInControl() && m_nPedState != PED_DRIVING)
- || m_lookTimer >= CTimer::GetTimeInMilliseconds() || m_nPedType != PEDTYPE_CIVMALE)
+ || m_lookTimer >= CTimer::GetTimeInMilliseconds() ||
+#ifdef FIX_BUGS
+ (m_nPedType != PEDTYPE_CIVMALE) && !IsFemale() && (m_nPedType != PEDTYPE_CRIMINAL) && !IsGangMember()
+#else
+ m_nPedType != PEDTYPE_CIVMALE
+#endif
+ )
return;
for (int i = 0; i < m_numNearPeds; i++) {
if (CanSeeEntity(m_nearPeds[i])) {
if ((GetPosition() - m_nearPeds[i]->GetPosition()).Magnitude() < 10.0f) {
CPed *nearPed = m_nearPeds[i];
- if ((nearPed->m_pedStats->m_sexiness > m_pedStats->m_sexiness)
- && nearPed->m_nPedType == PEDTYPE_CIVFEMALE) {
+ if((nearPed->m_pedStats->m_sexiness > m_pedStats->m_sexiness)
+#ifdef FIX_BUGS
+ && ((IsFemale() && !nearPed->IsFemale()) || (!IsFemale() && nearPed->IsFemale()))) {
+#else
+ && nearPed->m_nPedType == PEDTYPE_CIVFEMALE) {
+#endif
SetLookFlag(nearPed, true);
m_lookTimer = CTimer::GetTimeInMilliseconds() + 4000;
- Say(SOUND_PED_CHAT_SEXY);
+#ifdef FIX_BUGS
+ Say(IsFemale() ? SOUND_PED_CHAT_SEXY_FEMALE : SOUND_PED_CHAT_SEXY_MALE);
+#else
+ Say(SOUND_PED_CHAT_SEXY_MALE);
+#endif
return;
}
}
@@ -7999,14 +8022,14 @@ CPed::ClearWaitState(void)
case WAITSTATE_USE_ATM:
if (CTimer::GetTimeInMilliseconds() <= m_nWaitTimer) {
if (m_nWaitState == WAITSTATE_USE_ATM) {
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATM);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ATM);
if (assoc)
assoc->blendDelta = -8.0f;
if (m_attractor)
GetPedAttractorManager()->DeRegisterPed(this, m_attractor);
} else if (m_nWaitState == WAITSTATE_PLAYANIM_CHAT) {
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT);
if (assoc)
assoc->blendDelta = -8.0f;
if (m_attractor)
@@ -8015,17 +8038,17 @@ CPed::ClearWaitState(void)
} else if (m_nWaitState == WAITSTATE_SIT_DOWN || m_nWaitState == WAITSTATE_SIT_DOWN_RVRS || m_nWaitState == WAITSTATE_SIT_IDLE || m_nWaitState == WAITSTATE_SIT_UP) {
switch (m_nWaitState) {
case WAITSTATE_SIT_DOWN:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SEAT_DOWN);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_SEAT_DOWN);
if (assoc)
assoc->blendDelta = -8.0f;
break;
case WAITSTATE_SIT_IDLE:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SEAT_IDLE);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_SEAT_IDLE);
if (assoc)
assoc->blendDelta = -8.0f;
break;
case WAITSTATE_SIT_UP:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SEAT_UP);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_SEAT_UP);
if (assoc)
assoc->blendDelta = -8.0f;
break;
@@ -8051,12 +8074,12 @@ CPed::ClearWaitState(void)
break;
}
case WAITSTATE_FAST_FALL:
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_KO_SKID_FRONT))
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HIGHIMPACT_FRONT))
SetGetUp();
break;
case WAITSTATE_BOMBER:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BOMBER);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DETONATE);
if (assoc)
assoc->blendDelta = -8.0f;
break;
@@ -8074,15 +8097,71 @@ CPed::ClearWaitState(void)
break;
}
case WAITSTATE_LANCESITTING:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SUNBATHE);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SUNBATHE_IDLE);
if (assoc)
assoc->blendDelta = -8.0f;
break;
case WAITSTATE_PLAYANIM_HANDSUP_SIMPLE:
- assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSUP);
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSUP);
if (assoc)
assoc->blendDelta = -8.0f;
break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_DONH2_CAMERA:
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ case WAITSTATE_JDT4_DILDO_TALK:
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_MAR1_SKIRT:
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ case WAITSTATE_SAL7_LOOKOUT:
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ case WAITSTATE_MAC2_PLEAD:
+ case WAITSTATE_JDT6_KNOCK:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ assoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE);
+ if (assoc)
+ assoc->Remove();
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ assoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DONH3_HAPPY);
+ if (assoc)
+ assoc->blendDelta = -1.0f;
+ break;
default:
break;
}
@@ -8090,10 +8169,10 @@ CPed::ClearWaitState(void)
}
void
-CPed::SetWaitState(eWaitState state, void *time)
+CPed::SetWaitState(eWaitState state, void *time, bool repeat)
{
- AnimationId waitAnim = NUM_STD_ANIMS;
- CAnimBlendAssociation *animAssoc;
+ AnimationId waitAnim = ANIM_STD_NUM;
+ CAnimBlendAssociation *animAssoc = nil;
if (!IsPedInControl())
return;
@@ -8111,10 +8190,10 @@ CPed::SetWaitState(eWaitState state, void *time)
break;
case WAITSTATE_CROSS_ROAD:
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 1000;
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f);
break;
case WAITSTATE_CROSS_ROAD_LOOK:
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 8.0f);
if (time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
@@ -8132,7 +8211,7 @@ CPed::SetWaitState(eWaitState state, void *time)
case WAITSTATE_DOUBLEBACK:
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 3500;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f);
#ifdef FIX_BUGS
animAssoc->SetFinishCallback(RestoreHeadingRateCB, this);
#endif
@@ -8140,7 +8219,7 @@ CPed::SetWaitState(eWaitState state, void *time)
case WAITSTATE_HITWALL:
m_headingRate = 2.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HIT_WALL, 16.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_WALL, 16.0f);
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
animAssoc->flags |= ASSOC_FADEOUTWHENDONE;
animAssoc->SetDeleteCallback(FinishedWaitCB, this);
@@ -8154,13 +8233,13 @@ CPed::SetWaitState(eWaitState state, void *time)
case WAITSTATE_TURN180:
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TURN_180, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TURN180, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
break;
case WAITSTATE_SURPRISE:
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2000;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HIT_WALL, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_WALL, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
break;
case WAITSTATE_STUCK:
@@ -8168,7 +8247,7 @@ CPed::SetWaitState(eWaitState state, void *time)
SetMoveAnim();
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f);
#ifdef FIX_BUGS
animAssoc->SetFinishCallback(RestoreHeadingRateCB, this);
#endif
@@ -8185,20 +8264,20 @@ CPed::SetWaitState(eWaitState state, void *time)
SetMoveAnim();
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f);
#ifdef FIX_BUGS
animAssoc->SetFinishCallback(RestoreHeadingRateCB, this);
#endif
break;
case WAITSTATE_PLAYANIM_COWER:
- waitAnim = ANIM_HANDSCOWER;
+ waitAnim = ANIM_STD_HANDSCOWER;
case WAITSTATE_PLAYANIM_HANDSUP:
- if (waitAnim == NUM_STD_ANIMS)
- waitAnim = ANIM_HANDSUP;
+ if (waitAnim == ANIM_STD_NUM)
+ waitAnim = ANIM_STD_HANDSUP;
case WAITSTATE_PLAYANIM_HANDSCOWER:
- if (waitAnim == NUM_STD_ANIMS)
- waitAnim = ANIM_HANDSCOWER;
+ if (waitAnim == ANIM_STD_NUM)
+ waitAnim = ANIM_STD_HANDSCOWER;
m_headingRate = 0.0f;
if (time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
@@ -8209,13 +8288,13 @@ CPed::SetWaitState(eWaitState state, void *time)
animAssoc->SetDeleteCallback(FinishedWaitCB, this);
break;
case WAITSTATE_PLAYANIM_DUCK:
- waitAnim = ANIM_DUCK_DOWN;
+ waitAnim = ANIM_STD_DUCK_DOWN;
case WAITSTATE_PLAYANIM_TAXI:
- if (waitAnim == NUM_STD_ANIMS)
- waitAnim = ANIM_IDLE_TAXI;
+ if (waitAnim == ANIM_STD_NUM)
+ waitAnim = ANIM_STD_HAILTAXI;
case WAITSTATE_PLAYANIM_CHAT:
- if (waitAnim == NUM_STD_ANIMS)
- waitAnim = ANIM_IDLE_CHAT;
+ if (waitAnim == ANIM_STD_NUM)
+ waitAnim = ANIM_STD_CHAT;
if (time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
else
@@ -8231,23 +8310,23 @@ CPed::SetWaitState(eWaitState state, void *time)
SetMoveAnim();
m_headingRate = 0.0f;
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2500;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f);
#ifdef FIX_BUGS
animAssoc->SetFinishCallback(RestoreHeadingRateCB, this);
#endif
break;
case WAITSTATE_SIT_DOWN:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_SEAT_DOWN, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_SEAT_DOWN, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 100000;
break;
case WAITSTATE_SIT_UP:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_SEAT_UP, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_SEAT_UP, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 100000;
break;
case WAITSTATE_SIT_IDLE:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_SEAT_IDLE, 128.f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_SEAT_IDLE, 128.f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
if (time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
@@ -8255,7 +8334,7 @@ CPed::SetWaitState(eWaitState state, void *time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(25000, 30000);
break;
case WAITSTATE_USE_ATM:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ATM, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ATM, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
if (time)
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
@@ -8264,15 +8343,15 @@ CPed::SetWaitState(eWaitState state, void *time)
break;
case WAITSTATE_SUN_BATHE_IDLE:
m_headingRate = 0.0f;
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_SUNBATHE, ANIM_SUNBATHE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_SUNBATHE, ANIM_SUNBATHE_IDLE, 4.0f);
animAssoc->SetDeleteCallback(DeleteSunbatheIdleAnimCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(50000, 100000);
break;
case WAITSTATE_FAST_FALL:
- SetFall(-1, ANIM_KO_SKID_FRONT, true);
+ SetFall(-1, ANIM_STD_HIGHIMPACT_FRONT, true);
break;
case WAITSTATE_BOMBER:
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_BOMBER, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DETONATE, 4.0f);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
break;
case WAITSTATE_GROUND_ATTACK:
@@ -8291,27 +8370,208 @@ CPed::SetWaitState(eWaitState state, void *time)
break;
}
case WAITSTATE_LANCESITTING:
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_LANCE, ANIM_SUNBATHE, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_LANCE, ANIM_SUNBATHE_IDLE, 4.0f);
break;
case WAITSTATE_PLAYANIM_HANDSUP_SIMPLE:
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSUP, 4.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP, 4.0f);
animAssoc->flags &= ~ASSOC_FADEOUTWHENDONE;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
animAssoc->SetDeleteCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time;
break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MPNOTE, ANIM_MULTIPLAYER_CUTSCENE_MPNOTE, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_MPNOTE, ANIM_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_CSMISC,
+ (AnimationId)(ANIM_CS_MISC_IDLE_LOOK + (int)(state - WAITSTATE_CS_MISC_IDLE_LOOK)), 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_DONH2, ANIM_DONH2_CAMERA, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_DONH3, ANIM_DONH3_HAPPY, 1.0f);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT2, ANIM_JDT2_ANXIOUS_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT2_SHRUG:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT2, ANIM_JDT2_SHRUG);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT4, ANIM_JDT4_DILDO_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT5, ANIM_JDT5_CALM_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT5_POINT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT5, ANIM_JDT5_POINT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT6, ANIM_JDT6_PICKUP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR1, ANIM_MAR1_SKIRT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_ANSWER);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_END:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_END);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_CELL_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_CELL_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR2_FOOT_TAP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR2, ANIM_MAR2_FOOT_TAP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_HOOCHY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_NOTE_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAR3, ANIM_MAR3_NOTE_PICKUP);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL1, ANIM_SAL1_BIREFCASE_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL2, ANIM_SAL2_IDLE_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL2, ANIM_SAL2_SEAT_TO_STAND);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SEATED_TALK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SEATED_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL4, ANIM_SAL4_DUST_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL4_GIRL_RUN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL4, ANIM_SAL4_GIRL_RUN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL6, ANIM_SAL6_ANGRY_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL6, ANIM_SAL6_IDLE_SEATED);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL7, ANIM_SAL7_LOOKOUT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC2, ANIM_VIC2_POINT_ANGRY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC3, ANIM_VIC3_WAFT);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC3, ANIM_VIC3_PICKUP_ROLL);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CARRY_BOX);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CELL_LOOK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CELL_LOOK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC4, ANIM_VIC4_CRATE_IDLE);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC6, ANIM_VIC6_CELL_ANGRY);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST3:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST3);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST2:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST2);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_TOURIST1:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_TOURIST, ANIM_TOURIST1);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_MAC2, ANIM_MAC2_PLEAD);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_JDT6_KNOCK:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_JDT6, ANIM_JDT6_KNOCK);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_SAL3_SIT_DOWN:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_SAL3, ANIM_SAL3_SIT_DOWN);
+ animAssoc->speed = 1.0f;
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ animAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VIC7, ANIM_VIC7_PROD_WITH_FOOT);
+ animAssoc->speed = 1.0f;
+ break;
default:
ClearWaitState();
RestoreHeadingRate();
return;
}
+ bool rep = animAssoc ? repeat : false;
m_nWaitState = state;
+ if (rep)
+ animAssoc->flags |= ASSOC_REPEAT;
}
void
CPed::Wait(void)
{
- AnimationId mustHaveAnim = NUM_STD_ANIMS;
+ AnimationId mustHaveAnim = ANIM_STD_NUM;
CAnimBlendAssociation *animAssoc;
CPed *pedWeLook;
@@ -8339,7 +8599,7 @@ CPed::Wait(void)
else
SetWaitState(WAITSTATE_CROSS_ROAD_LOOK, nil);
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -8350,7 +8610,7 @@ CPed::Wait(void)
case WAITSTATE_CROSS_ROAD_LOOK:
if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
ClearWaitState();
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -8363,7 +8623,7 @@ CPed::Wait(void)
uint32 timeLeft = m_nWaitTimer - CTimer::GetTimeInMilliseconds();
if (timeLeft < 2500 && timeLeft > 2000) {
m_nWaitTimer -= 500;
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f);
}
} else {
ClearWaitState();
@@ -8396,8 +8656,8 @@ CPed::Wait(void)
case WAITSTATE_SURPRISE:
if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HIT_WALL)) {
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f);
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HIT_WALL)) {
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f);
animAssoc->SetFinishCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000;
} else {
@@ -8410,14 +8670,14 @@ CPed::Wait(void)
if (CTimer::GetTimeInMilliseconds() <= m_nWaitTimer)
break;
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_TURN_180);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_TURN180);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS);
if (animAssoc) {
if (animAssoc->IsPartial()) {
@@ -8425,10 +8685,10 @@ CPed::Wait(void)
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
} else {
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
}
- if (animAssoc->animId == ANIM_TURN_180) {
+ if (animAssoc->animId == ANIM_STD_TURN180) {
m_fRotationCur = CGeneral::LimitRadianAngle(PI + m_fRotationCur);
ClearWaitState();
SetMoveState(PEDMOVE_WALK);
@@ -8442,16 +8702,16 @@ CPed::Wait(void)
switch (CGeneral::GetRandomNumber() & 3) {
case 0:
- animToPlay = ANIM_ROAD_CROSS;
+ animToPlay = ANIM_STD_ROADCROSS;
break;
case 1:
- animToPlay = ANIM_IDLE_TIRED;
+ animToPlay = ANIM_STD_IDLE_TIRED;
break;
case 2:
- animToPlay = ANIM_XPRESS_SCRATCH;
+ animToPlay = ANIM_STD_XPRESS_SCRATCH;
break;
case 3:
- animToPlay = ANIM_TURN_180;
+ animToPlay = ANIM_STD_TURN180;
break;
default:
break;
@@ -8459,7 +8719,7 @@ CPed::Wait(void)
animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f);
- if (animToPlay == ANIM_TURN_180)
+ if (animToPlay == ANIM_STD_TURN180)
animAssoc->SetFinishCallback(FinishedWaitCB, this);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(1500, 5000);
@@ -8468,7 +8728,7 @@ CPed::Wait(void)
case WAITSTATE_LOOK_ABOUT:
if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
ClearWaitState();
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -8477,11 +8737,11 @@ CPed::Wait(void)
break;
case WAITSTATE_PLAYANIM_HANDSUP:
- mustHaveAnim = ANIM_HANDSUP;
+ mustHaveAnim = ANIM_STD_HANDSUP;
case WAITSTATE_PLAYANIM_HANDSCOWER:
- if (mustHaveAnim == NUM_STD_ANIMS)
- mustHaveAnim = ANIM_HANDSCOWER;
+ if (mustHaveAnim == ANIM_STD_NUM)
+ mustHaveAnim = ANIM_STD_HANDSCOWER;
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), mustHaveAnim);
pedWeLook = (CPed*) m_pLookTarget;
@@ -8549,19 +8809,19 @@ CPed::Wait(void)
}
break;
case WAITSTATE_PLAYANIM_COWER:
- mustHaveAnim = ANIM_HANDSCOWER;
+ mustHaveAnim = ANIM_STD_HANDSCOWER;
case WAITSTATE_PLAYANIM_DUCK:
- if (mustHaveAnim == NUM_STD_ANIMS)
- mustHaveAnim = ANIM_DUCK_DOWN;
+ if (mustHaveAnim == ANIM_STD_NUM)
+ mustHaveAnim = ANIM_STD_DUCK_DOWN;
case WAITSTATE_PLAYANIM_TAXI:
- if (mustHaveAnim == NUM_STD_ANIMS)
- mustHaveAnim = ANIM_IDLE_TAXI;
+ if (mustHaveAnim == ANIM_STD_NUM)
+ mustHaveAnim = ANIM_STD_HAILTAXI;
case WAITSTATE_PLAYANIM_CHAT:
- if (mustHaveAnim == NUM_STD_ANIMS)
- mustHaveAnim = ANIM_IDLE_CHAT;
+ if (mustHaveAnim == ANIM_STD_NUM)
+ mustHaveAnim = ANIM_STD_CHAT;
if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), mustHaveAnim);
@@ -8589,11 +8849,11 @@ CPed::Wait(void)
break;
case WAITSTATE_FINISH_FLEE:
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
if (animAssoc) {
if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
int timer = 2000;
ClearWaitState();
SetWaitState(WAITSTATE_CROSS_ROAD_LOOK, &timer);
@@ -8716,7 +8976,7 @@ CPed::Wait(void)
break;
}
- PlayRandomAnimationsFromAnimBlock(this, ASSOCGRP_RIOT, ANIM_RIOT_ANGRY, ANIM_RIOT_FUKU - ANIM_RIOT_ANGRY + 1);
+ PlayRandomAnimationsFromAnimBlock(this, ASSOCGRP_RIOT, ANIM_RIOT_ANGRY, ANIM_RIOT_FUCKYOU - ANIM_RIOT_ANGRY + 1);
if (IsPedInControl() && CGeneral::GetRandomNumberInRange(0.f,1.f) < 0.25f
&& CPopulation::CanJeerAtStripper(m_modelIndex)) {
for (int i = 0; i < m_numNearPeds; ++i) {
@@ -8725,7 +8985,7 @@ CPed::Wait(void)
if ((GetPosition() - nearPed->GetPosition()).MagnitudeSqr() < sq(10.f)) {
for (int anim = ANIM_STRIP_A; anim <= ANIM_STRIP_G; anim++) {
if (RpAnimBlendClumpGetAssociation(nearPed->GetClump(), anim))
- Say(SOUND_PED_149);
+ Say(SOUND_PED_JEER);
}
}
}
@@ -8832,7 +9092,7 @@ CPed::SetSolicit(uint32 time)
m_chatTimer = CTimer::GetTimeInMilliseconds() + time;
if(!m_carInObjective->bIsVan && !m_carInObjective->bIsBus)
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_HOOKERTALK, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_HOOKERTALK, 4.0f);
SetPedState(PED_SOLICIT);
}
@@ -8863,7 +9123,7 @@ CPed::Solicit(void)
if ((GetPosition() - doorPos).MagnitudeSqr() <= 1.0f)
return;
- CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_HOOKERTALK);
+ CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_HOOKERTALK);
if (talkAssoc) {
talkAssoc->blendDelta = -1000.0f;
talkAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -9093,12 +9353,12 @@ CPed::CanPedJumpThis(CEntity *unused, CVector *damageNormal)
void
CPed::SetJump(void)
{
- if (!bInVehicle && m_nPedState != PED_JUMP && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_LAUNCH) &&
+ if (!bInVehicle && m_nPedState != PED_JUMP && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_LAUNCH) &&
(m_nSurfaceTouched != SURFACE_STEEP_CLIFF || DotProduct(GetForward(), m_vecDamageNormal) >= 0.0f)) {
SetStoredState();
SetPedState(PED_JUMP);
- CAnimBlendAssociation *jumpAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAUNCH, 8.0f);
+ CAnimBlendAssociation *jumpAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_LAUNCH, 8.0f);
jumpAssoc->SetFinishCallback(FinishLaunchCB, this);
m_fRotationDest = m_fRotationCur;
}
@@ -9128,7 +9388,7 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg)
if (obstacle) {
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
- CAnimBlendAssociation *handsCoverAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_HIT_WALL, 8.0f);
+ CAnimBlendAssociation *handsCoverAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_WALL, 8.0f);
handsCoverAssoc->flags &= ~ASSOC_FADEOUTWHENDONE;
handsCoverAssoc->SetFinishCallback(FinishHitHeadCB, ped);
ped->bIsLanding = true;
@@ -9136,12 +9396,12 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg)
}
float velocityFromAnim = 0.1f;
- CAnimBlendAssociation *sprintAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_SPRINT);
+ CAnimBlendAssociation *sprintAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_RUNFAST);
if (sprintAssoc) {
velocityFromAnim = 0.05f * sprintAssoc->blendAmount + 0.17f;
} else {
- CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_RUN);
+ CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_RUN);
if (runAssoc) {
velocityFromAnim = 0.07f * runAssoc->blendAmount + 0.1f;
}
@@ -9176,7 +9436,7 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg)
ped->bIsStanding = false;
ped->bIsInTheAir = true;
animAssoc->blendDelta = -1000.0f;
- CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_JUMP_GLIDE);
+ CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_GLIDE);
if (ped->bDoBloodyFootprints) {
CVector bloodPos(0.0f, 0.0f, 0.0f);
@@ -9464,7 +9724,7 @@ CPed::AttachPedToEntity(CEntity *ent, CVector offset, uint16 type, float rot, eW
}
SetStoredState();
SetPedState(PED_IDLE);
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 1000.0f);
if (m_storedWeapon == WEAPONTYPE_UNIDENTIFIED) {
m_storedWeapon = GetWeapon()->m_eWeaponType;
@@ -9499,7 +9759,7 @@ CPed::DettachPedFromEntity(void)
bIsStanding = false;
} else if (m_nPedState != PED_DEAD) {
RestorePreviousState();
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 1000.0f);
bUsesCollision = true;
if (m_storedWeapon != WEAPONTYPE_UNIDENTIFIED) {
GetWeapon()->m_nAmmoInClip = 0;
@@ -9566,7 +9826,7 @@ void
CPed::Undress(const char* name)
{
int mi = GetModelIndex();
- CAnimBlendAssociation* pAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_OUT);
+ CAnimBlendAssociation* pAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_OUT);
if (pAnim)
FinishTalkingOnMobileCB(pAnim, this);
@@ -9601,6 +9861,247 @@ CPed::Say(uint16 audio, int32 time)
}
}
+void
+CPed::LoadNonStandardPedAnim(eWaitState waitState)
+{
+ switch(waitState) {
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("MPNote"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_CS_MISC_IDLE_LOOK:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_CS_MISC_IDLE_CELL_TALK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("donh2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("donh3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt5"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_JDT6_KNOCK:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("jdt6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar1"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mar3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal1"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("sal7"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic3"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic4"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic6"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("tourist"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("mac2"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ CStreaming::RequestAnim(CAnimManager::GetAnimationBlockIndex("vic7"), STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ default:
+ CStreaming::RequestAnim(0, STREAMFLAGS_DEPENDENCY | STREAMFLAGS_SCRIPTOWNED);
+ break;
+ }
+ CStreaming::LoadAllRequestedModels(false);
+}
+
+void
+CPed::UnloadNonStandardPedAnim(eWaitState waitState)
+{
+ switch(waitState) {
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE:
+ case WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP:
+ if(CAnimManager::GetAnimationBlock("MPNote"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("MPNote"));
+ break;
+ case WAITSTATE_CS_MISC_IDLE_LOOK:
+ case WAITSTATE_CS_MISC_IDLE_NO:
+ case WAITSTATE_CS_MISC_IDLE_YES:
+ case WAITSTATE_CS_MISC_IDLE_CHAT2:
+ case WAITSTATE_CS_MISC_IDLE_COUGH:
+ case WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE:
+ case WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT:
+ case WAITSTATE_CS_MISC_IDLE_CELL_TALK:
+ if(CAnimManager::GetAnimationBlock("cs_misc"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"));
+ break;
+ case WAITSTATE_DONH2_CAMERA:
+ if(CAnimManager::GetAnimationBlock("donh2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("donh2"));
+ break;
+ case WAITSTATE_DONH3_HAPPY:
+ if(CAnimManager::GetAnimationBlock("donh3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("donh3"));
+ break;
+ case WAITSTATE_JDT2_ANXIOUS_TALK:
+ case WAITSTATE_JDT2_SHRUG:
+ if(CAnimManager::GetAnimationBlock("cs_misc"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("cs_misc"));
+ break;
+ case WAITSTATE_JDT4_DILDO_TALK:
+ if(CAnimManager::GetAnimationBlock("jdt4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt4"));
+ break;
+ case WAITSTATE_JDT5_CALM_DOWN:
+ case WAITSTATE_JDT5_POINT:
+ if(CAnimManager::GetAnimationBlock("jdt5"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt5"));
+ break;
+ case WAITSTATE_JDT6_PICKUP:
+ case WAITSTATE_JDT6_KNOCK:
+ if(CAnimManager::GetAnimationBlock("jdt6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("jdt6"));
+ break;
+ case WAITSTATE_MAR1_SKIRT:
+ if(CAnimManager::GetAnimationBlock("mar1"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar1"));
+ break;
+ case WAITSTATE_MAR2_CELL_ANSWER:
+ case WAITSTATE_MAR2_CELL_END:
+ case WAITSTATE_MAR2_CELL_TALK:
+ case WAITSTATE_MAR2_FOOT_TAP:
+ if(CAnimManager::GetAnimationBlock("mar2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar2"));
+ break;
+ case WAITSTATE_MAR3_HOOCHY:
+ case WAITSTATE_MAR3_NOTE_IDLE:
+ case WAITSTATE_MAR3_NOTE_PICKUP:
+ if(CAnimManager::GetAnimationBlock("mar3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mar3"));
+ break;
+ case WAITSTATE_SAL1_BIREFCASE_DOWN:
+ if(CAnimManager::GetAnimationBlock("sal1"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal1"));
+ break;
+ case WAITSTATE_SAL2_IDLE_SEATED:
+ case WAITSTATE_SAL2_SEAT_TO_STAND:
+ if(CAnimManager::GetAnimationBlock("sal2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal2"));
+ break;
+ case WAITSTATE_SAL3_SEATED_TALK:
+ case WAITSTATE_SAL3_SEATED_IDLE:
+ case WAITSTATE_SAL3_SIT_DOWN:
+ if(CAnimManager::GetAnimationBlock("sal3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal3"));
+ break;
+ case WAITSTATE_SAL4_DUST_DOWN:
+ case WAITSTATE_SAL4_GIRL_RUN:
+ if(CAnimManager::GetAnimationBlock("sal4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal4"));
+ break;
+ case WAITSTATE_SAL6_ANGRY_SEATED:
+ case WAITSTATE_SAL6_IDLE_SEATED:
+ if(CAnimManager::GetAnimationBlock("sal6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal6"));
+ break;
+ case WAITSTATE_SAL7_LOOKOUT:
+ if(CAnimManager::GetAnimationBlock("sal7"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("sal7"));
+ break;
+ case WAITSTATE_VIC2_POINT_ANGRY:
+ if(CAnimManager::GetAnimationBlock("vic2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic2"));
+ break;
+ case WAITSTATE_VIC3_WAFT:
+ case WAITSTATE_VIC3_PICKUP_ROLL:
+ if(CAnimManager::GetAnimationBlock("vic3"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic3"));
+ break;
+ case WAITSTATE_VIC4_CARRY_BOX:
+ case WAITSTATE_VIC4_CELL_LOOK:
+ case WAITSTATE_VIC4_CRATE_IDLE:
+ if(CAnimManager::GetAnimationBlock("vic4"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic4"));
+ break;
+ case WAITSTATE_VIC6_CELL_ANGRY:
+ if(CAnimManager::GetAnimationBlock("vic6"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic6"));
+ break;
+ case WAITSTATE_TOURIST3:
+ case WAITSTATE_TOURIST2:
+ case WAITSTATE_TOURIST1:
+ if(CAnimManager::GetAnimationBlock("tourist"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("tourist"));
+ break;
+ case WAITSTATE_MAC2_PLEAD:
+ if(CAnimManager::GetAnimationBlock("mac2"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("mac2"));
+ break;
+ case WAITSTATE_VIC7_PROD_WITH_FOOT:
+ if(CAnimManager::GetAnimationBlock("vic7"))
+ CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex("vic7"));
+ break;
+ default:
+ break;
+ }
+}
+
+
#ifdef COMPATIBLE_SAVES
#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
diff --git a/src/peds/Ped.h b/src/peds/Ped.h
index f3271861..107ad1a2 100644
--- a/src/peds/Ped.h
+++ b/src/peds/Ped.h
@@ -216,6 +216,56 @@ enum eWaitState {
WAITSTATE_GROUND_ATTACK,
WAITSTATE_LANCESITTING,
WAITSTATE_PLAYANIM_HANDSUP_SIMPLE,
+ WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE,
+ WAITSTATE_MULTIPLAYER_CUTSCENE_MPNOTE_LOOP,
+ WAITSTATE_CS_MISC_IDLE_LOOK,
+ WAITSTATE_CS_MISC_IDLE_NO,
+ WAITSTATE_CS_MISC_IDLE_YES,
+ WAITSTATE_CS_MISC_IDLE_CHAT2,
+ WAITSTATE_CS_MISC_IDLE_COUGH,
+ WAITSTATE_CS_MISC_IDLE_GIGGLE_FEMALE,
+ WAITSTATE_CS_MISC_IDLE_TOUGH_CHAT,
+ WAITSTATE_CS_MISC_IDLE_CELL_TALK,
+ WAITSTATE_DONH2_CAMERA,
+ WAITSTATE_DONH3_HAPPY,
+ WAITSTATE_JDT2_ANXIOUS_TALK,
+ WAITSTATE_JDT2_SHRUG,
+ WAITSTATE_JDT4_DILDO_TALK,
+ WAITSTATE_JDT5_CALM_DOWN,
+ WAITSTATE_JDT5_POINT,
+ WAITSTATE_JDT6_PICKUP,
+ WAITSTATE_MAR1_SKIRT,
+ WAITSTATE_MAR2_CELL_ANSWER,
+ WAITSTATE_MAR2_CELL_END,
+ WAITSTATE_MAR2_CELL_TALK,
+ WAITSTATE_MAR2_FOOT_TAP,
+ WAITSTATE_MAR3_HOOCHY,
+ WAITSTATE_MAR3_NOTE_IDLE,
+ WAITSTATE_MAR3_NOTE_PICKUP,
+ WAITSTATE_SAL1_BIREFCASE_DOWN,
+ WAITSTATE_SAL2_IDLE_SEATED,
+ WAITSTATE_SAL2_SEAT_TO_STAND,
+ WAITSTATE_SAL3_SEATED_TALK,
+ WAITSTATE_SAL3_SEATED_IDLE,
+ WAITSTATE_SAL4_DUST_DOWN,
+ WAITSTATE_SAL4_GIRL_RUN,
+ WAITSTATE_SAL6_ANGRY_SEATED,
+ WAITSTATE_SAL6_IDLE_SEATED,
+ WAITSTATE_SAL7_LOOKOUT,
+ WAITSTATE_VIC2_POINT_ANGRY,
+ WAITSTATE_VIC3_WAFT,
+ WAITSTATE_VIC3_PICKUP_ROLL,
+ WAITSTATE_VIC4_CARRY_BOX,
+ WAITSTATE_VIC4_CELL_LOOK,
+ WAITSTATE_VIC4_CRATE_IDLE,
+ WAITSTATE_VIC6_CELL_ANGRY,
+ WAITSTATE_TOURIST3,
+ WAITSTATE_TOURIST2,
+ WAITSTATE_TOURIST1,
+ WAITSTATE_MAC2_PLEAD,
+ WAITSTATE_JDT6_KNOCK,
+ WAITSTATE_SAL3_SIT_DOWN,
+ WAITSTATE_VIC7_PROD_WITH_FOOT
};
enum eObjective {
@@ -696,7 +746,7 @@ public:
uint32 m_threatFlags;
uint32 m_threatCheckTimer;
uint32 m_threatCheckInterval;
- uint32 m_delayedSoundID;
+ int32 m_delayedSoundID;
uint32 m_delayedSoundTimer;
uint32 m_lastSoundStart;
uint32 m_soundStart;
@@ -708,10 +758,10 @@ public:
float m_radiusToGuard;
float m_fMaxHealth;
- static void *operator new(size_t);
- static void *operator new(size_t, int);
- static void operator delete(void*, size_t);
- static void operator delete(void*, int);
+ static void *operator new(size_t) throw();
+ static void *operator new(size_t, int) throw();
+ static void operator delete(void*, size_t) throw();
+ static void operator delete(void*, int) throw();
CPed(uint32 pedType);
~CPed(void);
@@ -737,7 +787,7 @@ public:
void SetLookFlag(CEntity* target, bool keepTryingToLook, bool cancelPrevious = false);
void SetLookFlag(float direction, bool keepTryingToLook, bool cancelPrevious = false);
void SetLookTimer(int time);
- void SetDie(AnimationId anim = ANIM_KO_SHOT_FRONT1, float arg1 = 4.0f, float arg2 = 0.0f);
+ void SetDie(AnimationId anim = ANIM_STD_KO_FRONT, float arg1 = 4.0f, float arg2 = 0.0f);
void SetDead(void);
void ApplyHeadShot(eWeaponType weaponType, CVector pos, bool evenOnPlayer);
void RemoveBodyPart(PedNode nodeId, int8 direction);
@@ -826,7 +876,7 @@ public:
void SetEvasiveDive(CPhysical*, uint8);
void SetAttack(CEntity*);
void StartFightAttack(uint8);
- void SetWaitState(eWaitState, void*);
+ void SetWaitState(eWaitState, void*, bool repeat = false);
bool FightStrike(CVector&, bool);
void FightHitPed(CPed*, CVector&, CVector&, int16);
int32 ChooseAttackPlayer(uint8, bool);
@@ -1092,39 +1142,39 @@ public:
static AnimationId GetFireAnimGround(CWeaponInfo* weapon, bool kickFloorIfNone = true) {
if (weapon->IsFlagSet(WEAPONFLAG_GROUND_2ND))
- return ANIM_WEAPON_CROUCHFIRE;
+ return ANIM_ATTACK_2;
else if (weapon->IsFlagSet(WEAPONFLAG_GROUND_3RD))
return ANIM_WEAPON_FIRE_3RD;
else if (kickFloorIfNone)
- return ANIM_KICK_FLOOR;
+ return ANIM_STD_KICKGROUND;
else
return (AnimationId)0;
}
static AnimationId GetPrimaryFireAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_ANIMDETONATE))
- return ANIM_BOMBER;
+ return ANIM_STD_DETONATE;
else
- return ANIM_WEAPON_FIRE;
+ return ANIM_ATTACK_1;
}
static AnimationId GetCrouchReloadAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_RELOAD))
- return ANIM_WEAPON_CROUCHRELOAD;
+ return ANIM_ATTACK_EXTRA2;
else
return (AnimationId)0;
}
static AnimationId GetCrouchFireAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_CROUCHFIRE))
- return ANIM_WEAPON_CROUCHFIRE;
+ return ANIM_ATTACK_2;
else
return (AnimationId)0;
}
static AnimationId GetReloadAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_RELOAD))
- return ANIM_WEAPON_RELOAD;
+ return ANIM_ATTACK_EXTRA1;
else
return (AnimationId)0;
}
@@ -1145,7 +1195,7 @@ public:
static AnimationId GetSecondFireAnim(CWeaponInfo* weapon) {
if (weapon->IsFlagSet(WEAPONFLAG_USE_2ND))
- return ANIM_WEAPON_FIRE_2ND; // or ANIM_MELEE_ATTACK_2ND
+ return ANIM_WEAPON_FIRE_2ND;
else
return (AnimationId)0;
}
@@ -1225,6 +1275,9 @@ public:
static bool bPedCheat3;
static CVector2D ms_vec2DFleePosition;
+ static void LoadNonStandardPedAnim(eWaitState waitState);
+ static void UnloadNonStandardPedAnim(eWaitState waitState);
+
#ifndef MASTER
// Mobile things
void DebugDrawPedDestination(CPed *, int, int);
diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp
index cf566aba..73522fe3 100644
--- a/src/peds/PedAI.cpp
+++ b/src/peds/PedAI.cpp
@@ -1121,8 +1121,8 @@ CPed::ProcessObjective(void)
SetMoveState(PEDMOVE_STILL);
if (m_objective == OBJECTIVE_HASSLE_CHAR) {
- Say(SOUND_PED_COP_REACTION);
- m_pedInObjective->Say(SOUND_PED_UNK_126);
+ Say(SOUND_PED_COP_ASK_FOR_ID);
+ m_pedInObjective->Say(SOUND_PED_INNOCENT);
m_leaveCarTimer = CTimer::GetTimeInMilliseconds() + 3000;
m_pedInObjective->m_leaveCarTimer = CTimer::GetTimeInMilliseconds() + 3000;
SetObjective(OBJECTIVE_WANDER);
@@ -1500,9 +1500,9 @@ CPed::ProcessObjective(void)
}
break;
case OBJECTIVE_HAIL_TAXI:
- if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TAXI) && CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
+ if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HAILTAXI) && CTimer::GetTimeInMilliseconds() > m_nWaitTimer) {
Say(SOUND_PED_TAXI_WAIT);
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TAXI, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HAILTAXI, 4.0f);
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2000;
}
break;
@@ -1607,7 +1607,7 @@ CPed::ProcessObjective(void)
float distWithTargetScSqr = distWithTarget.MagnitudeSqr();
if (distWithTargetScSqr <= sq(10.0f)) {
if (distWithTargetScSqr <= sq(1.4f)) {
- CAnimBlendAssociation *reloadAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FUCKU);
+ CAnimBlendAssociation *reloadAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PARTIAL_FUCKU);
m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(
m_pedInObjective->GetPosition().x, m_pedInObjective->GetPosition().y,
GetPosition().x, GetPosition().y);
@@ -1615,7 +1615,7 @@ CPed::ProcessObjective(void)
if (reloadAssoc || !m_pedInObjective->IsPedShootable()) {
if (reloadAssoc &&
(!reloadAssoc->IsRunning() || reloadAssoc->GetProgress() > 0.8f)) {
- CAnimBlendAssociation *punchAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_PPUNCH, 8.0f);
+ CAnimBlendAssociation *punchAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PARTIAL_PUNCH, 8.0f);
punchAssoc->flags |= ASSOC_DELETEFADEDOUT;
punchAssoc->flags |= ASSOC_FADEOUTWHENDONE;
CVector2D offset(distWithTarget.x, distWithTarget.y);
@@ -1644,13 +1644,13 @@ CPed::ProcessObjective(void)
if (weaponType != WEAPONTYPE_UNARMED && weaponType != WEAPONTYPE_BASEBALLBAT)
SetCurrentWeapon(WEAPONTYPE_UNARMED);
- CAnimBlendAssociation *newReloadAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FUCKU, 8.0f);
+ CAnimBlendAssociation *newReloadAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PARTIAL_FUCKU, 8.0f);
newReloadAssoc->flags |= ASSOC_DELETEFADEDOUT;
newReloadAssoc->flags |= ASSOC_FADEOUTWHENDONE;
}
} else {
SetSeek(m_pedInObjective, 1.0f);
- CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK);
+ CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_WALK);
if (walkAssoc)
walkAssoc->speed = 1.3f;
@@ -2279,7 +2279,7 @@ CPed::ReactToAttack(CEntity *attacker)
if (m_nPedType == PEDTYPE_GANG7 && attacker->IsPed() && ((CPed*)attacker)->IsPlayer()) {
if (m_nPedState != PED_FALL) {
- SetFall(15000, (AnimationId)(ANIM_KO_SHOT_FRONT1 + CGeneral::GetRandomNumberInRange(0, 5)), 0);
+ SetFall(15000, (AnimationId)(ANIM_STD_KO_FRONT + CGeneral::GetRandomNumberInRange(0, 5)), 0);
}
} else if (m_nPedState == PED_DRIVING && InVehicle()
@@ -2402,21 +2402,21 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
} else if (veh->GetRight().z >= 0.5f || veh->GetRight().z <= -0.5f || veh->GetUp().z <= 0.0f) {
if (enterDoor == DOOR_FRONT_LEFT || enterDoor == DOOR_REAR_LEFT) {
if (veh->GetRight().z > 0.0f)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_PICKUP_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_PICKUP_LHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_PULLUP_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_PULLUP_LHS);
} else {
if (veh->GetRight().z < 0.0f)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_PICKUP_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_PICKUP_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_BIKE_PULLUP_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_BIKE_PULLUP_RHS);
}
ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorOpenCB, ped);
} else {
ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType,
- enterDoor == DOOR_FRONT_LEFT || enterDoor == DOOR_REAR_LEFT ? ANIM_BIKE_JUMPON_R : ANIM_BIKE_JUMPON_L);
+ enterDoor == DOOR_FRONT_LEFT || enterDoor == DOOR_REAR_LEFT ? ANIM_BIKE_JUMPON_LHS : ANIM_BIKE_JUMPON_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
((CBike*)veh)->bIsBeingPickedUp = true;
}
@@ -2434,20 +2434,20 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
if (veh->pDriver) {
if (veh->m_vecMoveSpeed.Magnitude() > 0.2f) {
ped->QuitEnteringCar();
- ped->SetFall(1000, ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR ? ANIM_KO_SPIN_L : ANIM_KO_SPIN_R, false);
+ ped->SetFall(1000, ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR ? ANIM_STD_HIGHIMPACT_RIGHT : ANIM_STD_HIGHIMPACT_LEFT, false);
return;
}
if (veh->pDriver->m_nPedState != PED_DRIVING || veh->pDriver->bDontDragMeOutCar) {
ped->QuitEnteringCar();
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, enterDoor == DOOR_FRONT_LEFT ? ANIM_BIKE_ELBOW_R : ANIM_BIKE_ELBOW_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, enterDoor == DOOR_FRONT_LEFT ? ANIM_STD_BIKE_ELBOW_LHS : ANIM_STD_BIKE_ELBOW_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped);
pedToDragOut = veh->pDriver;
}
((CBike*)veh)->bIsBeingPickedUp = true;
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, enterDoor == DOOR_FRONT_LEFT ? ANIM_BIKE_JUMPON_R : ANIM_BIKE_JUMPON_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, enterDoor == DOOR_FRONT_LEFT ? ANIM_BIKE_JUMPON_LHS : ANIM_BIKE_JUMPON_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
((CBike*)veh)->bIsBeingPickedUp = true;
}
@@ -2455,14 +2455,14 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
if (veh->pPassengers[0]) {
if (veh->m_vecMoveSpeed.Magnitude() > 0.2f) {
ped->QuitEnteringCar();
- ped->SetFall(1000, ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR ? ANIM_KO_SPIN_L : ANIM_KO_SPIN_R, false);
+ ped->SetFall(1000, ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR ? ANIM_STD_HIGHIMPACT_RIGHT : ANIM_STD_HIGHIMPACT_LEFT, false);
return;
}
if (veh->pPassengers[0]->m_nPedState != PED_DRIVING || veh->pPassengers[0]->bDontDragMeOutCar) {
ped->QuitEnteringCar();
} else {
ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD,
- enterDoor == DOOR_REAR_LEFT ? ANIM_BIKE_ELBOW_R : ANIM_BIKE_ELBOW_L);
+ enterDoor == DOOR_REAR_LEFT ? ANIM_STD_BIKE_ELBOW_LHS : ANIM_STD_BIKE_ELBOW_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped);
pedToDragOut = veh->pPassengers[0];
}
@@ -2470,7 +2470,7 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
} else {
ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(),
- ((CBike*)veh)->m_bikeAnimType, enterDoor == DOOR_REAR_LEFT ? ANIM_BIKE_JUMPON_R : ANIM_BIKE_JUMPON_L);
+ ((CBike*)veh)->m_bikeAnimType, enterDoor == DOOR_REAR_LEFT ? ANIM_BIKE_JUMPON_LHS : ANIM_BIKE_JUMPON_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
((CBike*)veh)->bIsBeingPickedUp = true;
}
@@ -2502,22 +2502,22 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
}
if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) {
if (itsVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETIN);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_IN_REAR_RHS);
} else if (itsBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_IN_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_IN_RHS);
} else if (itsLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_RHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_RHS);
}
} else if (itsVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETIN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_IN_REAR_LHS);
} else if (itsBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_IN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_IN_LHS);
} else if (itsLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS);
}
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
@@ -2526,16 +2526,16 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
veh->AutoPilot.m_nCruiseSpeed = 0;
if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) {
if (itsVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_OPEN);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_OPEN_DOOR_REAR_RHS);
} else if (itsBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_OPEN_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_OPEN_RHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_OPEN_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_OPEN_DOOR_RHS);
}
} else if (itsVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_OPEN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_OPEN_DOOR_REAR_LHS);
} else if (itsBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_OPEN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_OPEN_LHS);
} else {
if (ped->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER && veh->pDriver) {
@@ -2544,7 +2544,7 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
&& veh->pDriver->CharCreatedBy != MISSION_CHAR
&& veh->pDriver->m_nPedState == PED_DRIVING) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_QJACK);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_QUICKJACK);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
CPlayerPed *player = nil;
@@ -2564,19 +2564,19 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg)
}
}
if (veh->IsOpenTopCar() && !veh->pDriver && ped->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_JUMPIN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_JUMP_IN_LO_LHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
return;
}
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_OPEN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_OPEN_DOOR_LHS);
}
ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorOpenCB, ped);
} else {
if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_DOORLOCKED_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CARDOOR_LOCKED_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_DOORLOCKED_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CARDOOR_LOCKED_LHS);
ped->bCancelEnteringCar = true;
ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorOpenCB, ped);
@@ -2664,13 +2664,13 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
veh->IsCar() && veh->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI && ((CAutomobile*)veh)->m_nWheelsOnGround == 0) {
ped->QuitEnteringCar();
if (ped->m_vehDoor != CAR_DOOR_LF && ped->m_vehDoor != CAR_DOOR_LR)
- ped->SetFall(1000, ANIM_KO_SPIN_R, false);
+ ped->SetFall(1000, ANIM_STD_HIGHIMPACT_LEFT, false);
else
- ped->SetFall(1000, ANIM_KO_SPIN_L, false);
+ ped->SetFall(1000, ANIM_STD_HIGHIMPACT_RIGHT, false);
return;
}
- veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_OPEN_LHS, 1.0f);
+ veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_CAR_OPEN_DOOR_LHS, 1.0f);
if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_RF)
isVan = false;
@@ -2679,27 +2679,27 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR) {
if (veh->IsBike()) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_LHS);
} else if (isVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETIN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_IN_REAR_LHS);
} else if (isBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_IN_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_IN_LHS);
} else if (isLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS);
}
} else {
if (veh->IsBike()) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_RHS);
} else if (isVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETIN);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_IN_REAR_RHS);
} else if (isBus) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_COACH_IN_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_IN_RHS);
} else if (isLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_RHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_RHS);
}
if (ped->m_vehDoor == CAR_DOOR_RF && pedInSeat && veh->IsCar())
@@ -2731,9 +2731,9 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
pedToDragOut = nil;
} else {
if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LO_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped);
}
@@ -2754,9 +2754,9 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
}
} else {
if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
}
@@ -2767,17 +2767,17 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
pedToDragOut = nil;
} else {
if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LO_LHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped);
}
} else {
if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS);
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
}
@@ -2865,18 +2865,18 @@ CPed::PedAnimPullPedOutCB(CAnimBlendAssociation* animAssoc, void* arg)
if (ped->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER) {
if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_LR) {
if (veh->IsBike())
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_R);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_LHS);
else if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS);
} else {
if (veh->IsBike())
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ((CBike*)veh)->m_bikeAnimType, ANIM_BIKE_JUMPON_RHS);
else if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_RHS);
}
ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped);
} else {
@@ -2923,7 +2923,7 @@ CPed::PedAnimGetInCB(CAnimBlendAssociation *animAssoc, void *arg)
&& (Pads[0].GetAccelerate() >= 255.0f || Pads[0].GetBrake() >= 255.0f)
&& veh->IsCar() && !veh->pDriver) {
- if (!animAssoc || animAssoc->animId != ANIM_CAR_JUMPIN_LHS)
+ if (!animAssoc || animAssoc->animId != ANIM_STD_CAR_JUMP_IN_LO_LHS)
if (((CAutomobile*)veh)->Damage.GetDoorStatus(DOOR_FRONT_LEFT) != DOOR_STATUS_MISSING)
((CAutomobile*)veh)->Damage.SetDoorStatus(DOOR_FRONT_LEFT, DOOR_STATUS_SWINGING);
@@ -3019,18 +3019,18 @@ CPed::PedAnimGetInCB(CAnimBlendAssociation *animAssoc, void *arg)
} else {
if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) {
if (isVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_CLOSE);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS);
} else if (isLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSEDOOR_LOW_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_LO_RHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSEDOOR_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_RHS);
}
} else if (isVan) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_VAN_CLOSE_L);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS);
} else if (isLow) {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSEDOOR_LOW_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_LO_LHS);
} else {
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSEDOOR_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_LHS);
}
ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorCloseCB, ped);
}
@@ -3042,7 +3042,7 @@ CPed::PedShuffle(void)
if (m_pMyVehicle->pPassengers[0] == this) {
CPed *driver = m_pMyVehicle->pDriver;
if (!driver || driver->m_objective == OBJECTIVE_LEAVE_CAR) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, m_pMyVehicle->bLowVehicle ? ANIM_CAR_LSHUFFLE_RHS : ANIM_CAR_SHUFFLE_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, m_pMyVehicle->bLowVehicle ? ANIM_STD_CAR_SHUFFLE_LO_RHS : ANIM_STD_CAR_SHUFFLE_RHS);
m_objective = OBJECTIVE_ENTER_CAR_AS_DRIVER;
m_pMyVehicle->RemovePassenger(this);
bInVehicle = false;
@@ -3065,7 +3065,7 @@ CPed::PedAnimDoorCloseCB(CAnimBlendAssociation *animAssoc, void *arg)
bool isLow = !!veh->bLowVehicle;
if (!veh->bIsBus)
- veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_CLOSEDOOR_LHS, 1.0f);
+ veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_CAR_CLOSE_DOOR_LHS, 1.0f);
eDoors door;
switch (ped->m_vehDoor) {
@@ -3106,9 +3106,9 @@ CPed::PedAnimDoorCloseCB(CAnimBlendAssociation *animAssoc, void *arg)
animAssoc->blendDelta = -1000.0f;
if (isLow)
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_LSHUFFLE_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SHUFFLE_LO_RHS);
else
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_SHUFFLE_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SHUFFLE_RHS);
ped->m_pVehicleAnim->SetFinishCallback(PedSetInCarCB, ped);
}
@@ -3206,7 +3206,7 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg)
CVehicle* veh = ped->m_pMyVehicle;
if (animAssoc) {
- if ((animAssoc->animId == ANIM_CAR_ROLLOUT_LHS || animAssoc->animId == ANIM_CAR_ROLLOUT_RHS) && ped && ped->m_nPedState == PED_FALL) {
+ if ((animAssoc->animId == ANIM_STD_ROLLOUT_LHS || animAssoc->animId == ANIM_STD_ROLLOUT_RHS) && ped && ped->m_nPedState == PED_FALL) {
ped->RestoreHeadingRate();
return;
}
@@ -3230,7 +3230,7 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg)
veh->m_vecMoveSpeed += CVector(0.001f, 0.001f, 0.001f);
veh->m_vecTurnSpeed += CVector(0.001f, 0.001f, 0.001f);
if (!veh->bIsBus)
- veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_GETOUT_LHS, 1.0f);
+ veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_GETOUT_LHS, 1.0f);
/*
// Duplicate and only in PC for some reason
@@ -3317,16 +3317,16 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg)
} else {
switch (door) {
case DOOR_FRONT_LEFT:
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_LHS);
break;
case DOOR_FRONT_RIGHT:
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_RHS);
break;
case DOOR_REAR_LEFT:
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_LHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_LHS);
break;
case DOOR_REAR_RIGHT:
- ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_RHS);
+ ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_RHS);
break;
default:
break;
@@ -3355,24 +3355,24 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
if (!bChangedSeat && phase != LINE_UP_TO_CAR_2) {
if (m_pMyVehicle->IsBike()) {
if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_RIDE) ||
- RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_PASSENGER)) {
+ RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_RIDE_P)) {
SetPedPositionInCar();
return;
}
} else {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SIT)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT)) {
SetPedPositionInCar();
return;
}
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSIT)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_LO)) {
SetPedPositionInCar();
return;
}
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITP)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P)) {
SetPedPositionInCar();
return;
}
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITPLO)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P_LO)) {
SetPedPositionInCar();
return;
}
@@ -3383,7 +3383,7 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
SetPedPositionInCar();
autoZPos = GetPosition();
CPedPlacement::FindZCoorForPed(&autoZPos);
- if (m_pVehicleAnim && (m_pVehicleAnim->animId == ANIM_CAR_ROLLOUT_LHS || m_pVehicleAnim->animId == ANIM_CAR_ROLLOUT_RHS)
+ if (m_pVehicleAnim && (m_pVehicleAnim->animId == ANIM_STD_ROLLOUT_LHS || m_pVehicleAnim->animId == ANIM_STD_ROLLOUT_RHS)
&& autoZPos.z > GetPosition().z) {
m_matrix.GetPosition().z = autoZPos.z;
}
@@ -3446,21 +3446,21 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
vehAnim = m_pVehicleAnim->animId;
switch (vehAnim) {
- case ANIM_CAR_JACKED_RHS:
- case ANIM_CAR_LJACKED_RHS:
- case ANIM_CAR_JACKED_LHS:
- case ANIM_CAR_LJACKED_LHS:
- case ANIM_VAN_GETIN_L:
- case ANIM_VAN_GETIN:
+ case ANIM_STD_JACKEDCAR_RHS:
+ case ANIM_STD_JACKEDCAR_LO_RHS:
+ case ANIM_STD_JACKEDCAR_LHS:
+ case ANIM_STD_JACKEDCAR_LO_LHS:
+ case ANIM_STD_VAN_GET_IN_REAR_LHS:
+ case ANIM_STD_VAN_GET_IN_REAR_RHS:
multExtractedFromAnim = true;
zBlend = Max(m_pVehicleAnim->GetProgress() - 0.3f, 0.0f) / (1.0f - 0.3f);
// fall through
- case ANIM_CAR_QJACKED:
- case ANIM_CAR_GETOUT_LHS:
- case ANIM_CAR_GETOUT_LOW_LHS:
- case ANIM_CAR_GETOUT_RHS:
- case ANIM_CAR_GETOUT_LOW_RHS:
+ case ANIM_STD_QUICKJACKED:
+ case ANIM_STD_GETOUT_LHS:
+ case ANIM_STD_GETOUT_LO_LHS:
+ case ANIM_STD_GETOUT_RHS:
+ case ANIM_STD_GETOUT_LO_RHS:
if (!multExtractedFromAnim) {
multExtractedFromAnim = true;
@@ -3468,49 +3468,49 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
}
// fall through
- case ANIM_CAR_CRAWLOUT_RHS:
- case ANIM_CAR_CRAWLOUT_RHS2:
- case ANIM_VAN_GETOUT_L:
- case ANIM_VAN_GETOUT:
- case ANIM_BIKE_GETOFF_RHS:
+ case ANIM_STD_CRAWLOUT_LHS:
+ case ANIM_STD_CRAWLOUT_RHS:
+ case ANIM_STD_VAN_GET_OUT_REAR_LHS:
+ case ANIM_STD_VAN_GET_OUT_REAR_RHS:
case ANIM_BIKE_GETOFF_LHS:
+ case ANIM_BIKE_GETOFF_RHS:
seatPosMult = m_pVehicleAnim->GetProgress();
break;
- case ANIM_CAR_GETIN_RHS:
- case ANIM_CAR_GETIN_LHS:
+ case ANIM_STD_CAR_GET_IN_RHS:
+ case ANIM_STD_CAR_GET_IN_LHS:
if (veh && veh->IsCar() && veh->bIsBus) {
multExtractedFromAnimBus = true;
zBlend = Min(m_pVehicleAnim->GetProgress(), 0.5f) / 0.5f;
}
// fall through
- case ANIM_CAR_QJACK:
- case ANIM_CAR_GETIN_LOW_LHS:
- case ANIM_CAR_GETIN_LOW_RHS:
- case ANIM_DRIVE_BOAT:
+ case ANIM_STD_QUICKJACK:
+ case ANIM_STD_CAR_GET_IN_LO_LHS:
+ case ANIM_STD_CAR_GET_IN_LO_RHS:
+ case ANIM_STD_BOAT_DRIVE:
seatPosMult = m_pVehicleAnim->GetTimeLeft() / m_pVehicleAnim->hierarchy->totalLength;
break;
- case ANIM_CAR_CLOSEDOOR_LHS:
- case ANIM_CAR_CLOSEDOOR_LOW_LHS:
- case ANIM_CAR_CLOSEDOOR_RHS:
- case ANIM_CAR_CLOSEDOOR_LOW_RHS:
- case ANIM_CAR_SHUFFLE_RHS:
- case ANIM_CAR_LSHUFFLE_RHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LO_LHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_RHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LO_RHS:
+ case ANIM_STD_CAR_SHUFFLE_RHS:
+ case ANIM_STD_CAR_SHUFFLE_LO_RHS:
seatPosMult = 0.0f;
break;
- case ANIM_CAR_JUMPIN_LHS:
+ case ANIM_STD_CAR_JUMP_IN_LO_LHS:
{
float animLength = m_pVehicleAnim->hierarchy->totalLength;
seatPosMult = Max(0.0f, 0.5f * animLength - m_pVehicleAnim->currentTime) / animLength;
break;
}
- case ANIM_CAR_CLOSE_LHS:
- case ANIM_CAR_CLOSE_RHS:
- case ANIM_COACH_OPEN_L:
- case ANIM_COACH_OPEN_R:
- case ANIM_COACH_IN_L:
- case ANIM_COACH_IN_R:
- case ANIM_COACH_OUT_L:
+ case ANIM_STD_CAR_CLOSE_LHS:
+ case ANIM_STD_CAR_CLOSE_RHS:
+ case ANIM_STD_COACH_OPEN_LHS:
+ case ANIM_STD_COACH_OPEN_RHS:
+ case ANIM_STD_COACH_GET_IN_LHS:
+ case ANIM_STD_COACH_GET_IN_RHS:
+ case ANIM_STD_COACH_GET_OUT_LHS:
seatPosMult = 1.0f;
break;
default:
@@ -3576,8 +3576,8 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
vehAnim = m_pVehicleAnim->animId;
if (veh->IsBike() && (m_pVehicleAnim && vehAnim != ANIM_BIKE_KICK)) {
float zBlend;
- if (vehAnim != ANIM_BIKE_GETOFF_RHS && vehAnim != ANIM_BIKE_GETOFF_LHS) {
- if (vehAnim != ANIM_BIKE_JUMPON_R && vehAnim != ANIM_BIKE_JUMPON_L) {
+ if (vehAnim != ANIM_BIKE_GETOFF_LHS && vehAnim != ANIM_BIKE_GETOFF_RHS) {
+ if (vehAnim != ANIM_BIKE_JUMPON_LHS && vehAnim != ANIM_BIKE_JUMPON_RHS) {
zBlend = 0.0f;
} else {
float animLength = m_pVehicleAnim->hierarchy->totalLength;
@@ -3592,10 +3592,10 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
neededPos.z += (autoZPos.z - neededPos.z) * zBlend;
} else {
currentZ = GetPosition().z;
- if (m_pVehicleAnim && vehAnim != ANIM_VAN_GETIN_L && vehAnim != ANIM_VAN_CLOSE_L && vehAnim != ANIM_VAN_CLOSE && vehAnim != ANIM_VAN_GETIN) {
+ if (m_pVehicleAnim && vehAnim != ANIM_STD_VAN_GET_IN_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS && vehAnim != ANIM_STD_VAN_GET_IN_REAR_RHS) {
neededPos.z = autoZPos.z;
m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f);
- } else if (neededPos.z < currentZ && m_pVehicleAnim && vehAnim != ANIM_VAN_CLOSE_L && vehAnim != ANIM_VAN_CLOSE) {
+ } else if (neededPos.z < currentZ && m_pVehicleAnim && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS) {
adjustedTimeStep = Max(m_pVehicleAnim->timeStep, 0.1f);
// Smoothly change ped position
@@ -3612,8 +3612,8 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase)
neededPos.z = (neededPos.z - currentZ) * zBlend + currentZ;
} else {
if (m_pVehicleAnim &&
- (vehAnim == ANIM_CAR_GETIN_RHS || vehAnim == ANIM_CAR_GETIN_LOW_RHS || vehAnim == ANIM_CAR_GETIN_LHS || vehAnim == ANIM_CAR_GETIN_LOW_LHS
- || vehAnim == ANIM_CAR_QJACK || vehAnim == ANIM_VAN_GETIN_L || vehAnim == ANIM_VAN_GETIN)) {
+ (vehAnim == ANIM_STD_CAR_GET_IN_RHS || vehAnim == ANIM_STD_CAR_GET_IN_LO_RHS || vehAnim == ANIM_STD_CAR_GET_IN_LHS || vehAnim == ANIM_STD_CAR_GET_IN_LO_LHS
+ || vehAnim == ANIM_STD_QUICKJACK || vehAnim == ANIM_STD_VAN_GET_IN_REAR_LHS || vehAnim == ANIM_STD_VAN_GET_IN_REAR_RHS)) {
adjustedTimeStep = Max(m_pVehicleAnim->timeStep, 0.1f);
// Smoothly change ped position
@@ -3790,9 +3790,9 @@ CPed::SetCarJack_AllClear(CVehicle* car, uint32 doorNode, uint32 doorFlag)
bUsesCollision = false;
if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR)
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_LHS : ANIM_CAR_ALIGN_LHS, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_LHS : ANIM_STD_CAR_ALIGN_DOOR_LHS, 4.0f);
else
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_RHS : ANIM_CAR_ALIGN_RHS, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_RHS : ANIM_STD_CAR_ALIGN_DOOR_RHS, 4.0f);
m_pVehicleAnim->SetFinishCallback(PedAnimAlignCB, this);
}
@@ -3853,7 +3853,7 @@ CPed::BeingDraggedFromCar(void)
bool dontRunAnim = false;
if (!m_pVehicleAnim) {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 1000.0f);
AssocGroupId assocGroup;
if (m_pMyVehicle && m_pMyVehicle->IsBike()) {
@@ -3863,17 +3863,17 @@ CPed::BeingDraggedFromCar(void)
} else {
if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR) {
if (bWillBeQuickJacked && m_vehDoor == CAR_DOOR_LF) {
- enterAnim = ANIM_CAR_QJACKED;
+ enterAnim = ANIM_STD_QUICKJACKED;
} else if (m_pMyVehicle->bLowVehicle) {
- enterAnim = ANIM_CAR_LJACKED_LHS;
+ enterAnim = ANIM_STD_JACKEDCAR_LO_LHS;
} else {
- enterAnim = ANIM_CAR_JACKED_LHS;
+ enterAnim = ANIM_STD_JACKEDCAR_LHS;
}
} else if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) {
if (m_pMyVehicle->bLowVehicle)
- enterAnim = ANIM_CAR_LJACKED_RHS;
+ enterAnim = ANIM_STD_JACKEDCAR_LO_RHS;
else
- enterAnim = ANIM_CAR_JACKED_RHS;
+ enterAnim = ANIM_STD_JACKEDCAR_RHS;
} else
dontRunAnim = true;
@@ -3906,7 +3906,7 @@ CPed::BeingDraggedFromCar(void)
static float mult = 5.f;
if (m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) {
if (m_pMyVehicle) {
- m_pMyVehicle->ProcessOpenDoor(m_vehDoor, NUM_STD_ANIMS, m_pVehicleAnim->currentTime * mult);
+ m_pMyVehicle->ProcessOpenDoor(m_vehDoor, ANIM_STD_NUM, m_pVehicleAnim->currentTime * mult);
}
}
}
@@ -4019,9 +4019,9 @@ CPed::SetEnterCar_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag)
if (car->IsBoat()) {
if (car->pHandling->Flags & HANDLING_SIT_IN_BOAT)
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f);
else
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE, 100.0f);
PedSetInCarCB(nil, this);
bVehExitWillBeInstant = true;
@@ -4032,9 +4032,9 @@ CPed::SetEnterCar_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag)
} else {
if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR)
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_RHS : ANIM_CAR_ALIGN_RHS, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_RHS : ANIM_STD_CAR_ALIGN_DOOR_RHS, 4.0f);
else
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_LHS : ANIM_CAR_ALIGN_LHS, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_LHS : ANIM_STD_CAR_ALIGN_DOOR_LHS, 4.0f);
m_pVehicleAnim->SetFinishCallback(PedAnimAlignCB, this);
}
}
@@ -4061,16 +4061,16 @@ CPed::EnterCar(void)
int anim = m_pVehicleAnim->animId;
// One is pickup and other one is pullup, not same :p
- if ((anim == ANIM_BIKE_PICKUP_R || anim == ANIM_BIKE_PICKUP_L) && m_pVehicleAnim->currentTime > 0.4667f)
+ if ((anim == ANIM_STD_BIKE_PICKUP_LHS || anim == ANIM_STD_BIKE_PICKUP_RHS) && m_pVehicleAnim->currentTime > 0.4667f)
bike->bIsBeingPickedUp = true;
- else if ((anim == ANIM_BIKE_PULLUP_R || anim == ANIM_BIKE_PULLUP_L) && m_pVehicleAnim->currentTime > 0.4667f)
+ else if ((anim == ANIM_STD_BIKE_PULLUP_LHS || anim == ANIM_STD_BIKE_PULLUP_RHS) && m_pVehicleAnim->currentTime > 0.4667f)
bike->bIsBeingPickedUp = true;
} else if (m_nPedState == PED_CARJACK && m_pVehicleAnim) {
if (m_pVehicleAnim->currentTime > 0.4f && m_pVehicleAnim->currentTime - m_pVehicleAnim->timeStep <= 0.4f) {
int anim = m_pVehicleAnim->animId;
if (anim == ANIM_BIKE_KICK) {
DMAudio.PlayOneShot(m_audioEntityId, SOUND_187, 3.0f);
- } else if (anim == ANIM_BIKE_ELBOW_R || anim == ANIM_BIKE_ELBOW_L) {
+ } else if (anim == ANIM_STD_BIKE_ELBOW_LHS || anim == ANIM_STD_BIKE_ELBOW_RHS) {
DMAudio.PlayOneShot(m_audioEntityId, SOUND_186, 3.0f);
}
}
@@ -4091,8 +4091,8 @@ CPed::QuitEnteringCar(void)
RestartNonPartialAnims();
- if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE))
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f);
+ if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE))
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f);
if (veh) {
if (m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER || m_nPedState == PED_CARJACK)
@@ -4442,7 +4442,7 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode)
m_pVehicleAnim->blendDelta = -1000.0f;
RemoveInCarAnims();
SetMoveState(PEDMOVE_NONE);
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f);
veh->AutoPilot.m_nCruiseSpeed = 0;
if (teleportNeeded) {
@@ -4450,9 +4450,9 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode)
} else {
if (veh->GetUp().z <= -0.8f && !veh->IsBike()) {
if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_CRAWLOUT_RHS2);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CRAWLOUT_RHS);
} else if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_CRAWLOUT_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CRAWLOUT_LHS);
}
m_pVehicleAnim->SetFinishCallback(PedSetOutCarCB, this);
@@ -4465,11 +4465,11 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode)
break;
case CAR_DOOR_RF:
case CAR_DOOR_RR:
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_GETOFF_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_GETOFF_RHS);
break;
case CAR_DOOR_LF:
case CAR_DOOR_LR:
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_GETOFF_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_GETOFF_LHS);
break;
default:
break;
@@ -4504,48 +4504,48 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode)
switch (m_vehDoor) {
case CAR_DOOR_RF:
if (canJumpOut) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLOUT_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROLLOUT_RHS);
} else if (veh->bIsBus) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_COACH, ANIM_COACH_OUT_L);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_OUT_LHS);
} else {
if (isLow)
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_RHS);
else
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_RHS);
}
break;
case CAR_DOOR_RR:
if (canJumpOut) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLOUT_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROLLOUT_RHS);
} else if (veh->bIsVan) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETOUT);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_OUT_REAR_RHS);
} else if (isLow) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_RHS);
} else {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_RHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_RHS);
}
break;
case CAR_DOOR_LF:
if (canJumpOut) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLOUT_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROLLOUT_LHS);
} else if (veh->bIsBus) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_COACH, ANIM_COACH_OUT_L);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_COACH, ANIM_STD_COACH_GET_OUT_LHS);
} else {
if (isLow)
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_LHS);
else
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LHS);
}
break;
case CAR_DOOR_LR:
if (canJumpOut) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLOUT_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROLLOUT_LHS);
} else if (veh->bIsVan) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VAN, ANIM_VAN_GETOUT_L);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_VAN, ANIM_STD_VAN_GET_OUT_REAR_LHS);
} else if (isLow) {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_LHS);
} else {
- m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LHS);
+ m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LHS);
}
break;
default:
@@ -4581,9 +4581,9 @@ CPed::ExitCar(void)
((CBike*)m_pMyVehicle)->KnockOffRider(WEAPONTYPE_UNARMED, 0, this, false);
}
} else if (m_pMyVehicle->IsCar()) {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLOUT_LHS)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROLLOUT_LHS)) {
((CAutomobile*)m_pMyVehicle)->KnockPedOutCar(WEAPONTYPE_UNIDENTIFIED, CAR_DOOR_LF, this);
- } else if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLOUT_RHS)) {
+ } else if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROLLOUT_RHS)) {
((CAutomobile*)m_pMyVehicle)->KnockPedOutCar(WEAPONTYPE_UNIDENTIFIED, CAR_DOOR_RF, this);
}
}
@@ -4600,9 +4600,9 @@ CPed::ExitCar(void)
else
LineUpPedWithCar(LINE_UP_TO_CAR_FALL);
- } else if (exitAnim == ANIM_CAR_ROLLOUT_LHS || exitAnim == ANIM_CAR_ROLLOUT_RHS) {
+ } else if (exitAnim == ANIM_STD_ROLLOUT_LHS || exitAnim == ANIM_STD_ROLLOUT_RHS) {
if (animTime > 0.07f && m_pMyVehicle && m_pMyVehicle->IsCar()) {
- if (exitAnim == ANIM_CAR_ROLLOUT_LHS) {
+ if (exitAnim == ANIM_STD_ROLLOUT_LHS) {
((CAutomobile*)m_pMyVehicle)->KnockPedOutCar(WEAPONTYPE_UNIDENTIFIED, CAR_DOOR_LF, this);
} else {
((CAutomobile*)m_pMyVehicle)->KnockPedOutCar(WEAPONTYPE_UNIDENTIFIED, CAR_DOOR_RF, this);
@@ -4616,7 +4616,7 @@ CPed::ExitCar(void)
if (m_pSeekTarget) {
// Car is upside down
if (m_pMyVehicle->GetUp().z > -0.8f) {
- if (exitAnim == ANIM_CAR_CLOSE_RHS || exitAnim == ANIM_CAR_CLOSE_LHS || animTime > 0.3f)
+ if (exitAnim == ANIM_STD_CAR_CLOSE_RHS || exitAnim == ANIM_STD_CAR_CLOSE_LHS || animTime > 0.3f)
LineUpPedWithCar(LINE_UP_TO_CAR_END);
else
LineUpPedWithCar((m_pMyVehicle->GetModelIndex() == MI_DODO ? LINE_UP_TO_CAR_END : LINE_UP_TO_CAR_START));
@@ -4637,7 +4637,7 @@ CPed::ExitCar(void)
}
if(foundPed && (!foundPed->IsPlayer() || m_nPedType == PEDTYPE_COP || m_objective == OBJECTIVE_KILL_CHAR_ON_FOOT || m_objective == OBJECTIVE_KILL_CHAR_ANY_MEANS))
if (animTime > 0.4f && foundPed->IsPedInControl())
- foundPed->SetFall(1000, ANIM_KO_SKID_FRONT, 1);
+ foundPed->SetFall(1000, ANIM_STD_HIGHIMPACT_FRONT, 1);
}
}
}
@@ -4645,13 +4645,97 @@ CPed::ExitCar(void)
CVector
CPed::GetPositionToOpenCarDoor(CVehicle *veh, uint32 component)
{
- CVector vehDoorPos = GetPositionToOpenCarDoor(veh, component, 1.0f);
+ CVector doorPos;
+ CVector vehDoorOffset;
+ CVehicleModelInfo* vehModel = veh->GetModelInfo();
-/*
- // Unused
- vehDoorPosWithoutOffset = veh->GetMatrix() * localVehDoorPos;
-*/
- return vehDoorPos;
+ if (veh->IsBike()) {
+ CBike* bike = (CBike*)veh;
+
+ if (component == CAR_WINDSCREEN) {
+ doorPos = vehModel->GetFrontSeatPosn();
+ return bike->GetMatrix() * (doorPos +
+ CVector(-vecPedBikeKickAnimOffset.x, vecPedBikeKickAnimOffset.y, -vecPedBikeKickAnimOffset.z));
+ } else {
+ switch (bike->m_bikeAnimType) {
+ case ASSOCGRP_BIKE_VESPA:
+ vehDoorOffset = vecPedVespaBikeJumpRhsAnimOffset;
+ break;
+ case ASSOCGRP_BIKE_HARLEY:
+ vehDoorOffset = vecPedHarleyBikeJumpRhsAnimOffset;
+ break;
+ case ASSOCGRP_BIKE_DIRT:
+ vehDoorOffset = vecPedDirtBikeJumpRhsAnimOffset;
+ break;
+ default:
+ vehDoorOffset = vecPedStdBikeJumpRhsAnimOffset;
+ break;
+ }
+ }
+
+ doorPos = vehModel->GetFrontSeatPosn();
+ if (component == CAR_DOOR_LR || component == CAR_DOOR_RR) {
+ doorPos = vehModel->m_positions[CAR_POS_BACKSEAT];
+ }
+
+ if (component == CAR_DOOR_LR || component == CAR_DOOR_LF) {
+ vehDoorOffset.x *= -1.f;
+ }
+
+ CVector correctedPos;
+ bike->GetCorrectedWorldDoorPosition(correctedPos, vehDoorOffset, doorPos);
+ return correctedPos;
+ } else {
+ float seatOffset;
+ if (veh->bIsVan && (component == CAR_DOOR_LR || component == CAR_DOOR_RR)) {
+ seatOffset = 0.0f;
+ vehDoorOffset = vecPedVanRearDoorAnimOffset;
+ } else {
+ seatOffset = veh->pHandling->fSeatOffsetDistance;
+ if (veh->bLowVehicle) {
+ vehDoorOffset = vecPedCarDoorLoAnimOffset;
+ } else {
+ vehDoorOffset = vecPedCarDoorAnimOffset;
+ }
+ }
+
+ switch (component) {
+ case CAR_DOOR_RF:
+ doorPos = vehModel->GetFrontSeatPosn();
+ doorPos.x += seatOffset;
+ vehDoorOffset.x = -vehDoorOffset.x;
+ break;
+
+ case CAR_DOOR_RR:
+ doorPos = vehModel->m_positions[CAR_POS_BACKSEAT];
+ doorPos.x += seatOffset;
+ vehDoorOffset.x = -vehDoorOffset.x;
+ break;
+
+ case CAR_DOOR_LF:
+ doorPos = vehModel->GetFrontSeatPosn();
+ doorPos.x += seatOffset;
+ doorPos.x = -doorPos.x;
+ break;
+
+ case CAR_DOOR_LR:
+ doorPos = vehModel->m_positions[CAR_POS_BACKSEAT];
+ doorPos.x += seatOffset;
+ doorPos.x = -doorPos.x;
+ break;
+
+ default:
+ doorPos = vehModel->GetFrontSeatPosn();
+ vehDoorOffset = CVector(0.0f, 0.0f, 0.0f);
+ break;
+ }
+
+ CVector diffVec = doorPos - vehDoorOffset;
+ return Multiply3x3(veh->GetMatrix(), diffVec) + veh->GetPosition();
+
+ //unused
+ //doorPos = Multiply3x3(veh->GetMatrix(), doorPos) + veh->GetMatrix();
+ }
}
void
@@ -4849,7 +4933,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
CAnimManager::AddAnimBlockRef(bikehBlock);
CAnimManager::AddAnimBlockRef(bikedBlock);
- CAnimBlendHierarchy *enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_JACKED_LHS)->hierarchy;
+ CAnimBlendHierarchy *enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_JACKEDCAR_LHS)->hierarchy;
CAnimBlendSequence *seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4861,7 +4945,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_GETIN_LHS)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4873,7 +4957,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4885,7 +4969,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_QJACKED)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_QUICKJACKED)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4897,7 +4981,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_VAN, ANIM_VAN_GETIN_L)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_VAN, ANIM_STD_VAN_GET_IN_REAR_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4909,7 +4993,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_TRAIN_GETOUT)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_TRAIN_GETOUT)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4921,7 +5005,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_STANDARD, ANIM_BIKE_JUMPON_R)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_STANDARD, ANIM_BIKE_JUMPON_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4933,7 +5017,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_VESPA, ANIM_BIKE_JUMPON_R)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_VESPA, ANIM_BIKE_JUMPON_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4945,7 +5029,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_HARLEY, ANIM_BIKE_JUMPON_R)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_HARLEY, ANIM_BIKE_JUMPON_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -4957,7 +5041,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void)
}
}
- enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_DIRT, ANIM_BIKE_JUMPON_R)->hierarchy;
+ enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_BIKE_DIRT, ANIM_BIKE_JUMPON_LHS)->hierarchy;
seq = enterAssoc->sequences;
CAnimManager::UncompressAnimation(enterAssoc);
if (seq->numFrames > 0) {
@@ -5103,7 +5187,7 @@ CPed::PedSetDraggedOutCarPositionCB(CAnimBlendAssociation* animAssoc, void* arg)
break;
}
} else {
- draggedOutOffset = vecPedDraggedOutCarAnimOffset;
+ draggedOutOffset = CVector(vecPedDraggedOutCarAnimOffset.x, vecPedDraggedOutCarAnimOffset.y, 0.0f);
}
if (ped->m_vehDoor == CAR_DOOR_RF || ped->m_vehDoor == CAR_DOOR_RR)
draggedOutOffset.x = -draggedOutOffset.x;
@@ -5114,7 +5198,7 @@ CPed::PedSetDraggedOutCarPositionCB(CAnimBlendAssociation* animAssoc, void* arg)
ped->m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f);
ped->SetPosition(posAfterBeingDragged);
- if (ped->m_pMyVehicle && !ped->m_pMyVehicle->IsBike() && !ped->m_pMyVehicle->IsRoomForPedToLeaveCar(ped->m_vehDoor, &vecPedDraggedOutCarAnimOffset)) {
+ if (ped->m_pMyVehicle && !ped->m_pMyVehicle->IsBike() && !ped->m_pMyVehicle->IsRoomForPedToLeaveCar(ped->m_vehDoor, &draggedOutOffset)) {
ped->PositionPedOutOfCollision();
}
@@ -5280,7 +5364,7 @@ CPed::SetEnterTrain(CVehicle *train, uint32 unused)
m_pMyVehicle->RegisterReference((CEntity **) &m_pMyVehicle);
SetPedState(PED_ENTER_TRAIN);
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TRAIN_GETIN, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TRAIN_GETIN, 4.0f);
m_pVehicleAnim->SetFinishCallback(PedSetInTrainCB, this);
bUsesCollision = false;
LineUpPedWithTrain();
@@ -5354,7 +5438,7 @@ CPed::SetExitTrain(CVehicle* train)
GetNearestTrainPedPosition(train, exitPos);
*/
SetPedState(PED_EXIT_TRAIN);
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TRAIN_GETOUT, 4.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TRAIN_GETOUT, 4.0f);
m_pVehicleAnim->SetFinishCallback(PedSetOutTrainCB, this);
bUsesCollision = false;
LineUpPedWithTrain();
@@ -5729,7 +5813,12 @@ CPed::GetPositionToOpenCarDoor(CVehicle *veh, uint32 component, float offset)
doorPos = vehModel->GetFrontSeatPosn();
if (component == CAR_WINDSCREEN) {
+#ifdef FIX_BUGS
+ return bike->GetMatrix() * (doorPos +
+ CVector(-vecPedBikeKickAnimOffset.x, vecPedBikeKickAnimOffset.y, -vecPedBikeKickAnimOffset.z));
+#else
return bike->GetMatrix() * (doorPos + vecPedBikeKickAnimOffset);
+#endif
} else {
switch (bike->m_bikeAnimType) {
case ASSOCGRP_BIKE_VESPA:
@@ -5860,14 +5949,14 @@ CPed::SetDuck(uint32 time, bool sth)
CAnimBlendAssociation *duckAssoc;
if (bCrouchWhenShooting) {
- duckAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 4.0f);
+ duckAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_WEAPON, 4.0f);
duckAssoc->flags &= ~ASSOC_FADEOUTWHENDONE;
bIsDucking = true;
m_duckTimer = CTimer::GetTimeInMilliseconds() + time;
} else {
- CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN);
+ CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN);
if (!duckAssoc || duckAssoc->blendDelta < 0.0f) {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DUCK_DOWN, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_DOWN, 4.0f);
bIsDucking = true;
m_duckTimer = CTimer::GetTimeInMilliseconds() + time;
}
@@ -5881,7 +5970,7 @@ CPed::Duck(void)
ClearDuck();
else if (bIsDucking && bCrouchWhenShooting) {
CWeaponInfo *weapon = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
- CAnimBlendAssociation *crouchAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH);
+ CAnimBlendAssociation *crouchAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_WEAPON);
if (!crouchAnim) {
if(GetCrouchFireAnim(weapon))
crouchAnim = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weapon));
@@ -5903,12 +5992,12 @@ CPed::Duck(void)
void
CPed::ClearDuck(bool clearTimer)
{
- CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN);
+ CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN);
if (!animAssoc) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_LOW);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_LOW);
}
if (!animAssoc) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_WEAPON);
}
if (animAssoc) {
@@ -5967,9 +6056,9 @@ CPed::PedAnimDoorCloseRollingCB(CAnimBlendAssociation* animAssoc, void* arg)
animAssoc->blendDelta = -1000.0f;
if (veh->bLowVehicle) {
- veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR_LOW, 1.0f);
+ veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, 1.0f);
} else {
- veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, 1.0f);
+ veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, 1.0f);
}
veh->m_nGettingOutFlags &= ~CAR_DOOR_FLAG_LF;
@@ -6042,28 +6131,28 @@ CPed::AddInCarAnims(CVehicle* car, bool isDriver)
{
if (car->IsBoat()) {
if (car->pHandling->Flags & HANDLING_SIT_IN_BOAT) {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f);
} else {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE, 100.0f);
}
} else if (car->IsBike()) {
if (isDriver) {
m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ((CBike*)car)->m_bikeAnimType, ANIM_BIKE_RIDE, 100.0f);
} else {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ((CBike*)car)->m_bikeAnimType, ANIM_BIKE_PASSENGER, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ((CBike*)car)->m_bikeAnimType, ANIM_BIKE_RIDE_P, 100.0f);
}
} else {
if (isDriver) {
if (car->bLowVehicle) {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_LSIT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_LO, 100.0f);
} else {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f);
}
} else {
if (car->bLowVehicle) {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SITPLO, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_P_LO, 100.0f);
} else {
- m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SITP, 100.0f);
+ m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_P, 100.0f);
}
}
}
@@ -6076,24 +6165,24 @@ CPed::RemoveDrivebyAnims()
{
CAnimBlendAssociation *animAssoc;
- AnimationId LeftAnim = ANIM_DRIVEBY_L;
- AnimationId RightAnim = ANIM_DRIVEBY_R;
+ AnimationId LeftAnim = ANIM_STD_CAR_DRIVEBY_LEFT;
+ AnimationId RightAnim = ANIM_STD_CAR_DRIVEBY_RIGHT;
if (m_pMyVehicle->pHandling->Flags & HANDLING_IS_BIKE) {
- LeftAnim = ANIM_BIKE_DRIVEBY_LHS;
- RightAnim = ANIM_BIKE_DRIVEBY_RHS;
+ LeftAnim = ANIM_BIKE_DRIVEBY_RHS;
+ RightAnim = ANIM_BIKE_DRIVEBY_LHS;
} else if (m_pMyVehicle->bLowVehicle) {
- LeftAnim = ANIM_DRIVEBY_LOW_L;
- RightAnim = ANIM_DRIVEBY_LOW_R;
+ LeftAnim = ANIM_STD_CAR_DRIVEBY_LEFT_LO;
+ RightAnim = ANIM_STD_CAR_DRIVEBY_RIGHT_LO;
}
- animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_LHS);
+ animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_RHS);
if (animAssoc)
animAssoc->blendDelta = -1000.0f;
- animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_RHS);
+ animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_LHS);
if (animAssoc)
animAssoc->blendDelta = -1000.0f;
- animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_FT);
+ animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_FORWARD);
if (animAssoc)
animAssoc->blendDelta = -1000.0f;
}
@@ -6357,7 +6446,7 @@ CPed::WarpPedToNearEntityOffScreen(CEntity *warpTo)
if (Abs(zCorrectedPos.z - warpToPos.z) < 3.0f || Abs(zCorrectedPos.z - appropriatePos.z) < 3.0f) {
appropriatePos.z = zCorrectedPos.z;
- if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f, &TheCamera.GetCameraMatrix())
+ if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f)
&& CWorld::GetIsLineOfSightClear(appropriatePos, warpToPos, true, true, false, true, false, false, false)
&& !CWorld::TestSphereAgainstWorld(appropriatePos, 0.6f, this, true, true, false, true, false, false)) {
teleported = true;
@@ -6563,11 +6652,11 @@ CPed::KillCharOnFootArmed(CVector &ourPos, CVector &targetPos, CVector &distWith
&& distWithTargetSc < wepRange && m_pedInObjective->m_nPedState != PED_GETUP && m_pedInObjective->m_nPedState != PED_DRAG_FROM_CAR) {
if (bIsDucking && !bCrouchWhenShooting) {
- CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN);
+ CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN);
if (!duckAnim)
- duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_LOW);
+ duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_LOW);
if (!duckAnim)
- duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH);
+ duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_WEAPON);
if (duckAnim) {
duckAnim->flags |= ASSOC_DELETEFADEDOUT;
@@ -6822,7 +6911,7 @@ CPed::KillCharOnFootMelee(CVector &ourPos, CVector &targetPos, CVector &distWith
}
if (goForward) {
m_curFightMove = FIGHTMOVE_SHUFFLE_F;
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_SH_BACK, 16.f)->SetFinishCallback(FinishFightMoveCB,this);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_SHUFFLE_B, 16.f)->SetFinishCallback(FinishFightMoveCB,this);
m_fightState = FIGHTSTATE_NO_MOVE;
m_fightButtonPressure = 0;
m_takeAStepAfterAttack = false;
@@ -6850,11 +6939,11 @@ CPed::KillCharOnFootMelee(CVector &ourPos, CVector &targetPos, CVector &distWith
&& distWithTargetSc < wepRange && m_pedInObjective->m_nPedState != PED_GETUP && m_pedInObjective->m_nPedState != PED_DRAG_FROM_CAR) {
if (bIsDucking) {
- CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN);
+ CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN);
if (!duckAnim)
- duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_LOW);
+ duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_LOW);
if (!duckAnim)
- duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCH);
+ duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_WEAPON);
if (duckAnim) {
duckAnim->flags |= ASSOC_DELETEFADEDOUT;
diff --git a/src/peds/PedAttractor.cpp b/src/peds/PedAttractor.cpp
index de587270..91139def 100644
--- a/src/peds/PedAttractor.cpp
+++ b/src/peds/PedAttractor.cpp
@@ -113,7 +113,11 @@ const C2dEffect* CPedAttractorManager::GetEffectForIceCreamVan(CVehicle* pVehicl
CVehicleToEffect effect(pVehicle);
vVehicleToEffect.push_back(effect);
POP_MEMID();
+#ifdef FIX_BUGS
+ return vVehicleToEffect.back().ChooseEffect(pos);
+#else
return effect.ChooseEffect(pos);
+#endif
}
CVehicle* CPedAttractorManager::GetIceCreamVanForEffect(C2dEffect* pEffect)
@@ -658,12 +662,12 @@ CPedAttractor* CPedAttractorManager::RegisterPed(CPed* pPed, C2dEffect* pEffect,
}
PUSH_MEMID(MEMID_PED_ATTR);
switch (pEffect->pedattr.type) {
- case ATTRACTOR_ATM: vecAttractors.push_back(new CPedAtmAttractor(pEffect, matrix, gcMaxSizeOfAtmQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.15f, 0.1f, 0.1f)); break;
- case ATTRACTOR_SEAT: vecAttractors.push_back(new CPedSeatAttractor(pEffect, matrix, gcMaxSizeOfSeatQueue, 1.0f, 30000.0f, 3000.0f, 0.125f, 0.1f, 0.1f, 0.1f)); break;
- case ATTRACTOR_STOP: vecAttractors.push_back(new CPedStopAttractor(pEffect, matrix, gcMaxSizeOfStopQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.1f, 0.1f, 0.1f)); break;
- case ATTRACTOR_PIZZA: vecAttractors.push_back(new CPedPizzaAttractor(pEffect, matrix, gcMaxSizeOfPizzaQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.1f, 0.1f, 0.1f)); break;
- case ATTRACTOR_SHELTER: vecAttractors.push_back(new CPedShelterAttractor(pEffect, matrix, gcMaxSizeOfShelterQueue, 1.0f, 30000.0f, 3000.0f, 0.5f, 6.28f, 0.1f, 0.1f)); break;
- case ATTRACTOR_ICECREAM: vecAttractors.push_back(new CPedIceCreamAttractor(pEffect, matrix, gcMaxSizeOfIceCreamQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.3f, 0.1f, 0.1f)); break;
+ case ATTRACTOR_ATM: pRegisteredAttractor = new CPedAtmAttractor(pEffect, matrix, gcMaxSizeOfAtmQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.15f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
+ case ATTRACTOR_SEAT: pRegisteredAttractor = new CPedSeatAttractor(pEffect, matrix, gcMaxSizeOfSeatQueue, 1.0f, 30000.0f, 3000.0f, 0.125f, 0.1f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
+ case ATTRACTOR_STOP: pRegisteredAttractor = new CPedStopAttractor(pEffect, matrix, gcMaxSizeOfStopQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.1f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
+ case ATTRACTOR_PIZZA: pRegisteredAttractor = new CPedPizzaAttractor(pEffect, matrix, gcMaxSizeOfPizzaQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.1f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
+ case ATTRACTOR_SHELTER: pRegisteredAttractor = new CPedShelterAttractor(pEffect, matrix, gcMaxSizeOfShelterQueue, 1.0f, 30000.0f, 3000.0f, 0.5f, 6.28f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
+ case ATTRACTOR_ICECREAM: pRegisteredAttractor = new CPedIceCreamAttractor(pEffect, matrix, gcMaxSizeOfIceCreamQueue, 1.0f, 30000.0f, 3000.0f, 0.2f, 0.3f, 0.1f, 0.1f); vecAttractors.push_back(pRegisteredAttractor); break;
}
POP_MEMID();
if (pRegisteredAttractor)
diff --git a/src/peds/PedDebug.cpp b/src/peds/PedDebug.cpp
index aed11357..0dbabb58 100644
--- a/src/peds/PedDebug.cpp
+++ b/src/peds/PedDebug.cpp
@@ -157,6 +157,9 @@ static char PersonalityTypeText[][18] = {
"Old Girl",
"Tough Girl",
"Tramp",
+#ifdef FIX_BUGS // there's male and female ones
+ "Tramp",
+#endif
"Tourist",
"Prostitute",
"Criminal",
diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp
index 6c691d2d..a94dc9bd 100644
--- a/src/peds/PedFight.cpp
+++ b/src/peds/PedFight.cpp
@@ -32,38 +32,38 @@ RpClump* flyingClumpTemp;
FightMove tFightMoves[NUM_FIGHTMOVES] =
{
/*
- { NUM_STD_ANIMS, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_PUNCH_R, 0.2f, 8.f/30.f, 0.0f, 0.3f, 1.0f, HITLEVEL_HIGH, 1, 0 },
- { ANIM_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_FIGHT_SH_F, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_FIGHT_KNEE, 4.f/30.f, 0.2f, 0.0f, 0.6f, 1.0f, HITLEVEL_LOW, 2, 0 },
- { ANIM_FIGHT_LHOOK, 8.f/30.f, 10.f/30.f, 0.0f, 0.4f, 1.0f, HITLEVEL_HIGH, 3, 0 },
- { ANIM_FIGHT_JAB, 4.f/30.f, 0.2f, 0.0f, 0.7f, 1.0f, HITLEVEL_HIGH, 3, 0 },
- { ANIM_FIGHT_PUNCH, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
- { ANIM_FIGHT_LONGKICK, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 4, 0 },
- { ANIM_FIGHT_ROUNDHOUSE, 8.f/30.f, 10.f/30.f, 0.0f, 0.6f, 1.0f, HITLEVEL_MEDIUM, 4, 0 },
- { ANIM_FIGHT_KICK, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_HIGH, 2, 0 },
- { ANIM_FIGHT_HEAD, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
- { ANIM_FIGHT_BKICK_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_LOW, 2, 0 },
- { ANIM_FIGHT_BKICK_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_LOW, 2, 0 },
- { ANIM_FIGHT_ELBOW_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
- { ANIM_FIGHT_BKICK_R, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
- { ANIM_FIGHT_ELBOW_R, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_HIGH, 2, 0 },
- { ANIM_KICK_FLOOR, 10.f/30.f, 14.f/30.f, 0.0f, 0.4f, 1.0f, HITLEVEL_GROUND, 1, 0 },
- { ANIM_HIT_FRONT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_BACK, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_RIGHT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_BODYBLOW, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_CHEST, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_HEAD, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_FLOOR_HIT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
- { ANIM_WEAPON_FIRE, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
- { ANIM_WEAPON_CROUCHFIRE, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
- { ANIM_WEAPON_SPECIAL, 4.f / 30.f, 7.f / 30.f, 10.f / 30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
- { ANIM_FIGHT2_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 }
+ { ANIM_STD_NUM, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_PUNCH, 0.2f, 8.f/30.f, 0.0f, 0.3f, 1.0f, HITLEVEL_HIGH, 1, 0 },
+ { ANIM_STD_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_FIGHT_SHUFFLE_F, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_FIGHT_KNEE, 4.f/30.f, 0.2f, 0.0f, 0.6f, 1.0f, HITLEVEL_LOW, 2, 0 },
+ { ANIM_STD_FIGHT_LHOOK, 8.f/30.f, 10.f/30.f, 0.0f, 0.4f, 1.0f, HITLEVEL_HIGH, 3, 0 },
+ { ANIM_STD_FIGHT_JAB, 4.f/30.f, 0.2f, 0.0f, 0.7f, 1.0f, HITLEVEL_HIGH, 3, 0 },
+ { ANIM_STD_FIGHT_PUNCH, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
+ { ANIM_STD_FIGHT_LONGKICK, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 4, 0 },
+ { ANIM_STD_FIGHT_ROUNDHOUSE, 8.f/30.f, 10.f/30.f, 0.0f, 0.6f, 1.0f, HITLEVEL_MEDIUM, 4, 0 },
+ { ANIM_STD_FIGHT_KICK, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_HIGH, 2, 0 },
+ { ANIM_STD_FIGHT_HEAD, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
+ { ANIM_STD_FIGHT_BKICK_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_LOW, 2, 0 },
+ { ANIM_STD_FIGHT_BKICK_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_LOW, 2, 0 },
+ { ANIM_STD_FIGHT_ELBOW_L, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
+ { ANIM_STD_FIGHT_BKICK_R, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_MEDIUM, 2, 0 },
+ { ANIM_STD_FIGHT_ELBOW_R, 8.f/30.f, 10.f/30.f, 0.0f, 0.5f, 1.0f, HITLEVEL_HIGH, 2, 0 },
+ { ANIM_STD_KICKGROUND, 10.f/30.f, 14.f/30.f, 0.0f, 0.4f, 1.0f, HITLEVEL_GROUND, 1, 0 },
+ { ANIM_STD_HIT_FRONT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_BACK, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_RIGHT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_BODYBLOW, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_CHEST, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_HEAD, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_WALK, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_FLOOR, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_STD_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 },
+ { ANIM_ATTACK_1, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
+ { ANIM_ATTACK_2, 4.f/30.f, 7.f/30.f, 10.f/30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
+ { ANIM_ATTACK_3, 4.f / 30.f, 7.f / 30.f, 10.f / 30.f, 0.4f, 1.0f, HITLEVEL_HIGH, 1, 0 },
+ { ANIM_STD_FIGHT_2IDLE, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, HITLEVEL_NULL, 0, 0 }
*/
};
@@ -184,14 +184,14 @@ CPed::SetPointGunAt(CEntity *to)
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(curWeapon)) {
aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(curWeapon));
} else {
- aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
}
if (!aimAssoc || aimAssoc->blendDelta < 0.0f) {
if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(curWeapon)) {
aimAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, GetCrouchFireAnim(curWeapon), 4.0f);
} else {
- aimAssoc = CAnimManager::AddAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE);
+ aimAssoc = CAnimManager::AddAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_1);
}
aimAssoc->blendAmount = 0.0f;
@@ -206,7 +206,7 @@ CPed::PointGunAt(void)
{
CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
float animLoopStart = weaponInfo->m_fAnimLoopStart;
- CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (!weaponAssoc || weaponAssoc->blendDelta < 0.0f) {
if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) {
weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo));
@@ -242,7 +242,7 @@ CPed::ClearPointGunAt(void)
RestorePreviousState();
}
weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType);
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (!animAssoc || animAssoc->blendDelta < 0.0f) {
if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) {
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo));
@@ -505,7 +505,7 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg)
}
if (GetCrouchFireAnim(currentWeapon) && attackAssoc) {
if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) {
- newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f);
+ newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_WEAPON, 8.0f);
newAnim->SetCurrentTime(newAnim->hierarchy->totalLength);
newAnim->flags &= ~ASSOC_RUNNING;
}
@@ -527,7 +527,7 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg)
}
if (GetCrouchFireAnim(currentWeapon) && attackAssoc) {
if (attackAssoc->animId == GetCrouchFireAnim(currentWeapon) && !reloadAnimAssoc) {
- newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f);
+ newAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_WEAPON, 8.0f);
newAnim->SetCurrentTime(newAnim->hierarchy->totalLength);
newAnim->flags &= ~ASSOC_RUNNING;
}
@@ -586,7 +586,7 @@ CPed::FinishedReloadCB(CAnimBlendAssociation *reloadAssoc, void *arg)
}
if (weapon->IsFlagSet(WEAPONFLAG_RELOAD) && reloadAssoc) {
if (reloadAssoc->animId == GetCrouchReloadAnim(weapon) && !crouchFireAssoc) {
- CAnimBlendAssociation *crouchAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_CROUCH, 8.0f);
+ CAnimBlendAssociation *crouchAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_WEAPON, 8.0f);
crouchAssoc->SetCurrentTime(crouchAssoc->hierarchy->totalLength);
crouchAssoc->flags &= ~ASSOC_RUNNING;
}
@@ -823,7 +823,7 @@ CPed::Attack(void)
|| weaponAnimAssoc->currentTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire) {
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_CHAINSAW) {
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_ATTACK, 0.0f);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_IDLE, 0.0f);
} else if (weaponAnimTime <= delayBetweenAnimAndFire || weaponAnimTime - weaponAnimAssoc->timeStep > delayBetweenAnimAndFire || !weaponAnimAssoc->IsRunning()) {
if (weaponAnimAssoc->speed < 1.0f)
weaponAnimAssoc->speed = 1.0f;
@@ -899,7 +899,7 @@ CPed::Attack(void)
CPad::GetPad(0)->StartShake(240, 180);
}
} else {
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_IDLE, 0.0f);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_ATTACK, 0.0f);
if (IsPlayer()) {
CPad::GetPad(0)->StartShake(240, 90);
}
@@ -992,13 +992,13 @@ CPed::Attack(void)
if (GetFireAnimGround(ourWeapon, false)) {
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, fireAnim, 8.0f);
} else {
- weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_KICK_FLOOR, 8.0f);
+ weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_KICKGROUND, 8.0f);
}
}
weaponAnimAssoc->SetFinishCallback(FinishedAttackCB, this);
} else if (GetSecondFireAnim(ourWeapon)) {
if (weaponAnimAssoc->animId == GetSecondFireAnim(ourWeapon)) {
- weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE, 8.0f);
+ weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_ATTACK_1, 8.0f);
} else {
weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetSecondFireAnim(ourWeapon), 8.0f);
}
@@ -1052,9 +1052,9 @@ CPed::StartFightAttack(uint8 buttonPressure)
RestoreHeadingRate();
}
- CAnimBlendAssociation* animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP);
+ CAnimBlendAssociation* animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2);
if (animAssoc) {
RestoreHeadingRate();
@@ -1070,10 +1070,10 @@ CPed::StartFightAttack(uint8 buttonPressure)
fightIdleAssoc = CAnimManager::BlendAnimation(GetClump(), weaponInfo->m_AnimToPlay, GetFightIdleWithMeleeAnim(weaponInfo), 1000.0f);
fightWithWeapon = true;
} else {
- fightIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE, 1000.0f);
+ fightIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE, 1000.0f);
}
} else {
- fightIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE, 1000.0f);
+ fightIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE, 1000.0f);
}
m_lastFightMove = FIGHTMOVE_IDLE;
m_curFightMove = IsPlayer() ? ChooseAttackPlayer(buttonPressure, fightWithWeapon) : ChooseAttackAI(buttonPressure, fightWithWeapon);
@@ -1130,7 +1130,7 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
if (hitLevel == HITLEVEL_GROUND) {
CAnimBlendAssociation *floorHitAssoc;
if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) {
- floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f);
+ floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f);
} else {
floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, tFightMoves[FIGHTMOVE_HITONFLOOR].animId, 8.0f);
}
@@ -1152,8 +1152,8 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
} else if (m_nPedState == PED_FALL) {
if (hitLevel == HITLEVEL_GROUND && !IsPedHeadAbovePos(-0.3f)) {
CAnimBlendAssociation *floorHitAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL) ?
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f) :
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f) :
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f);
if (floorHitAssoc) {
floorHitAssoc->flags &= ~ASSOC_FADEOUTWHENDONE;
floorHitAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -1168,16 +1168,16 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
AnimationId shotAnim;
switch (direction) {
case 1:
- shotAnim = ANIM_SHOT_LEFT_PARTIAL;
+ shotAnim = ANIM_STD_HITBYGUN_LEFT;
break;
case 2:
- shotAnim = ANIM_SHOT_BACK_PARTIAL;
+ shotAnim = ANIM_STD_HITBYGUN_BACK;
break;
case 3:
- shotAnim = ANIM_SHOT_RIGHT_PARTIAL;
+ shotAnim = ANIM_STD_HITBYGUN_RIGHT;
break;
default:
- shotAnim = ANIM_SHOT_FRONT_PARTIAL;
+ shotAnim = ANIM_STD_HITBYGUN_FRONT;
break;
}
CAnimBlendAssociation *shotAssoc = RpAnimBlendClumpGetAssociation(GetClump(), shotAnim);
@@ -1196,32 +1196,32 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
AnimationId hitAnim;
switch (direction) {
case 1:
- hitAnim = ANIM_KO_SPIN_R;
+ hitAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
if (CGeneral::GetRandomNumber() & 1) {
fall = false;
- hitAnim = ANIM_HIT_BACK;
+ hitAnim = ANIM_STD_HIT_BACK;
} else {
- hitAnim = ANIM_KO_SKID_BACK;
+ hitAnim = ANIM_STD_HIGHIMPACT_BACK;
}
break;
case 3:
- hitAnim = ANIM_KO_SPIN_L;
+ hitAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
if (hitLevel == HITLEVEL_LOW) {
- hitAnim = ANIM_KO_SHOT_STOM;
+ hitAnim = ANIM_STD_KO_SHOT_STOMACH;
/* LCS: removed
} else if (CGeneral::GetRandomNumber() & 1) {
fall = false;
- hitAnim = ANIM_HIT_WALK;
+ hitAnim = ANIM_STD_HIT_WALK;
} else if (CGeneral::GetRandomNumber() & 1) {
fall = false;
- hitAnim = ANIM_HIT_HEAD;
+ hitAnim = ANIM_STD_HIT_HEAD;
*/
} else {
- hitAnim = ANIM_KO_SHOT_FACE;
+ hitAnim = ANIM_STD_KO_SHOT_FACE;
}
break;
}
@@ -1246,11 +1246,11 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
break;
case HITLEVEL_LOW:
if (direction == 2 && (!IsPlayer() || ((CGeneral::GetRandomNumber() & 1) && m_fHealth < 30.0f))) {
- SetFall(1000, ANIM_KO_SKID_BACK, false);
+ SetFall(1000, ANIM_STD_HIGHIMPACT_BACK, false);
Say(SOUND_PED_DEFEND);
return;
} else if (direction != 2 && !IsPlayer() && (CGeneral::GetRandomNumber() & 1) && m_fHealth < 30.0f) {
- SetFall(1000, ANIM_KO_SHOT_STOM, false);
+ SetFall(1000, ANIM_STD_KO_SHOT_STOMACH, false);
Say(SOUND_PED_DEFEND);
return;
}
@@ -1330,14 +1330,14 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
m_fightButtonPressure = 0;
m_lastFightMove = FIGHTMOVE_IDLE;
RpAnimBlendClumpRemoveAssociations(GetClump(), ASSOC_REPEAT);
- CAnimBlendAssociation *walkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START);
+ CAnimBlendAssociation *walkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_STARTWALK);
if (walkStartAssoc) {
walkStartAssoc->flags |= ASSOC_DELETEFADEDOUT;
walkStartAssoc->blendDelta = -1000.0f;
}
- CAnimBlendAssociation *walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP);
+ CAnimBlendAssociation *walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1);
if (!walkStopAssoc)
- walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R);
+ walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2);
if (walkStopAssoc) {
walkStopAssoc->flags |= ASSOC_DELETEFADEDOUT;
walkStopAssoc->blendDelta = -1000.0f;
@@ -1352,10 +1352,10 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk)
if (GetFightIdleWithMeleeAnim(weaponInfo)) {
fightIdleAssoc = CAnimManager::AddAnimation(GetClump(), weaponInfo->m_AnimToPlay, GetFightIdleWithMeleeAnim(weaponInfo));
} else {
- fightIdleAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE);
+ fightIdleAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE);
}
} else {
- fightIdleAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE);
+ fightIdleAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE);
}
fightIdleAssoc->blendAmount = 1.0f;
CAnimBlendAssociation *moveAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, tFightMoves[m_curFightMove].animId, 8.0f);
@@ -1409,7 +1409,7 @@ CPed::Fight(void)
}
if (m_curFightMove == FIGHTMOVE_SHUFFLE_F && !currentAssoc)
- currentAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_SH_BACK);
+ currentAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_SHUFFLE_B);
if (IsPlayer() && currentAssoc && weapon == WEAPONTYPE_KATANA) {
if (m_curFightMove == FIGHTMOVE_MELEE1 || m_curFightMove == FIGHTMOVE_MELEE2) {
@@ -1938,7 +1938,7 @@ CPed::EndFight(uint8 endType)
m_curFightMove = FIGHTMOVE_NULL;
RestorePreviousState();
- CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
+ CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE);
if (!animAssoc)
animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
@@ -1947,16 +1947,16 @@ CPed::EndFight(uint8 endType)
switch (endType) {
case ENDFIGHT_NORMAL:
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f);
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT2_IDLE, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_2IDLE, 8.0f);
break;
case ENDFIGHT_WITH_A_STEP:
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 1.0f);
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_WALK_START, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 1.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_STARTWALK, 8.0f);
break;
case ENDFIGHT_FAST:
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f);
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT2_IDLE, 8.0f)->speed = 2.0f;
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_2IDLE, 8.0f)->speed = 2.0f;
break;
default:
break;
@@ -2243,7 +2243,7 @@ CPed::FightHitPed(CPed *victim, CVector &touchPoint, CVector &dir, int16 piece)
|| weaponType != WEAPONTYPE_UNARMED && weaponType != WEAPONTYPE_BRASSKNUCKLE && IsPlayer()
|| victim->m_pedStats->m_flags & STAT_ONE_HIT_KNOCKDOWN || brassKnucklePunch)) {
- victim->SetFall(0, (AnimationId)(direction + ANIM_KO_SKID_FRONT), 0);
+ victim->SetFall(0, (AnimationId)(direction + ANIM_STD_HIGHIMPACT_FRONT), 0);
if (victim->m_nPedState == PED_FALL)
victim->bIsStanding = false;
}
@@ -2378,7 +2378,7 @@ CPed::LoadFightData(void)
animAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, animName);
tFightMoves[moveId].animId = (AnimationId)animAssoc->animId;
} else {
- tFightMoves[moveId].animId = ANIM_WALK;
+ tFightMoves[moveId].animId = ANIM_STD_WALK;
}
}
moveId++;
@@ -2403,7 +2403,7 @@ CPed::SetInvestigateEvent(eEventType event, CVector2D pos, float distanceToCount
if (m_eventType >= EVENT_ICECREAM)
m_lookTimer = 0;
else
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSCOWER, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSCOWER, 4.0f);
}
@@ -2443,7 +2443,7 @@ CPed::InvestigateEvent(void)
case EVENT_HIT_AND_RUN_COP:
if (CTimer::GetTimeInMilliseconds() > m_lookTimer) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
@@ -2455,7 +2455,7 @@ CPed::InvestigateEvent(void)
} else if (CGeneral::GetRandomNumber() & 3) {
ClearLookFlag();
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500));
Say(SOUND_PED_CHAT_EVENT);
@@ -2469,16 +2469,16 @@ CPed::InvestigateEvent(void)
case EVENT_EXPLOSION:
if (bHasACamera && CTimer::GetTimeInMilliseconds() > m_lookTimer) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CAM);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_CAM);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
- if (animAssoc && animAssoc->animId == ANIM_IDLE_CAM) {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ if (animAssoc && animAssoc->animId == ANIM_STD_IDLE_CAM) {
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500));
} else if (CGeneral::GetRandomNumber() & 3) {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_CAM, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_CAM, 4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(2500, 5000));
if (!CGame::germanGame)
Say(SOUND_PED_CHAT_EVENT);
@@ -2488,30 +2488,30 @@ CPed::InvestigateEvent(void)
}
} else if (CTimer::GetTimeInMilliseconds() > m_lookTimer) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH);
- if (animAssoc && animAssoc->animId == ANIM_IDLE_STANCE) {
+ if (animAssoc && animAssoc->animId == ANIM_STD_IDLE) {
if (CGeneral::GetRandomNumber() & 1)
- animToPlay = ANIM_IDLE_HBHB;
+ animToPlay = ANIM_STD_IDLE_HBHB;
else
- animToPlay = ANIM_XPRESS_SCRATCH;
+ animToPlay = ANIM_STD_XPRESS_SCRATCH;
CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(1500, 4000));
- } else if (animAssoc && animAssoc->animId == ANIM_IDLE_HBHB) {
+ } else if (animAssoc && animAssoc->animId == ANIM_STD_IDLE_HBHB) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
if (CGeneral::GetRandomNumber() & 1) {
- animToPlay = ANIM_IDLE_STANCE;
+ animToPlay = ANIM_STD_IDLE;
animGroup = m_animGroup;
} else {
- animToPlay = ANIM_XPRESS_SCRATCH;
+ animToPlay = ANIM_STD_XPRESS_SCRATCH;
animGroup = ASSOCGRP_STD;
}
@@ -2520,10 +2520,10 @@ CPed::InvestigateEvent(void)
} else {
if (CGeneral::GetRandomNumber() & 1) {
- animToPlay = ANIM_IDLE_STANCE;
+ animToPlay = ANIM_STD_IDLE;
animGroup = m_animGroup;
} else {
- animToPlay = ANIM_IDLE_HBHB;
+ animToPlay = ANIM_STD_IDLE_HBHB;
animGroup = ASSOCGRP_STD;
}
@@ -2541,26 +2541,26 @@ CPed::InvestigateEvent(void)
if (CTimer::GetTimeInMilliseconds() > m_lookTimer) {
if (m_lookTimer) {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
if (m_eventType == EVENT_ICECREAM)
- animToPlay = ANIM_IDLE_CHAT;
+ animToPlay = ANIM_STD_CHAT;
else
- animToPlay = ANIM_XPRESS_SCRATCH;
+ animToPlay = ANIM_STD_XPRESS_SCRATCH;
CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay,4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(2000, 5000));
} else {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
ClearInvestigateEvent();
} else {
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -2569,7 +2569,7 @@ CPed::InvestigateEvent(void)
}
}
} else {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 4.0f);
SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500));
}
}
@@ -2615,13 +2615,13 @@ CPed::InvestigateEvent(void)
void
CPed::ClearInvestigateEvent(void)
{
- CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS);
+ CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB);
if (!animAssoc)
- animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT);
+ animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT);
if (animAssoc) {
animAssoc->blendDelta = -8.0f;
animAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -2643,7 +2643,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
CPlayerPed *player = FindPlayerPed();
float dieDelta = 4.0f;
float dieSpeed = 0.0f;
- AnimationId dieAnim = ANIM_KO_SHOT_FRONT1;
+ AnimationId dieAnim = ANIM_STD_KO_FRONT;
bool headShot = false;
bool willLinger = false;
int random;
@@ -2691,9 +2691,9 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (m_nPedState == PED_GETUP) {
if (!IsPedHeadAbovePos(-0.3f)) {
if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL))
- dieAnim = ANIM_FLOOR_HIT_F;
+ dieAnim = ANIM_STD_HIT_FLOOR_FRONT;
else
- dieAnim = ANIM_FLOOR_HIT;
+ dieAnim = ANIM_STD_HIT_FLOOR;
dieDelta *= 2.0f;
dieSpeed = 0.5f;
detectDieAnim = false;
@@ -2702,14 +2702,14 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
CAnimBlendAssociation *fallAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_PARTIAL);
if (!fallAssoc || fallAssoc->IsRunning()) {
if (fallAssoc && fallAssoc->blendDelta >= 0.0f)
- dieAnim = NUM_STD_ANIMS;
+ dieAnim = ANIM_STD_NUM;
else
- dieAnim = ANIM_KO_SHOT_FRONT1;
+ dieAnim = ANIM_STD_KO_FRONT;
} else {
if (fallAssoc->flags & ASSOC_FRONTAL)
- dieAnim = ANIM_FLOOR_HIT_F;
+ dieAnim = ANIM_STD_HIT_FLOOR_FRONT;
else
- dieAnim = ANIM_FLOOR_HIT;
+ dieAnim = ANIM_STD_HIT_FLOOR;
dieDelta *= 2.0f;
dieSpeed = 0.5f;
@@ -2726,28 +2726,28 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (m_nPedState == PED_FALL) {
if (IsPedHeadAbovePos(-0.3f)) {
- dieAnim = NUM_STD_ANIMS;
+ dieAnim = ANIM_STD_NUM;
} else {
if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL))
- dieAnim = ANIM_FLOOR_HIT_F;
+ dieAnim = ANIM_STD_HIT_FLOOR_FRONT;
else
- dieAnim = ANIM_FLOOR_HIT;
+ dieAnim = ANIM_STD_HIT_FLOOR;
dieDelta = dieDelta * 2.0f;
dieSpeed = 0.5f;
}
} else {
switch (direction) {
case 0:
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
break;
case 1:
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
break;
case 3:
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
@@ -2775,12 +2775,12 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (m_nPedState == PED_FALL) {
if (IsPedHeadAbovePos(-0.3f)) {
- dieAnim = NUM_STD_ANIMS;
+ dieAnim = ANIM_STD_NUM;
} else {
if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL))
- dieAnim = ANIM_FLOOR_HIT_F;
+ dieAnim = ANIM_STD_HIT_FLOOR_FRONT;
else
- dieAnim = ANIM_FLOOR_HIT;
+ dieAnim = ANIM_STD_HIT_FLOOR;
dieDelta = dieDelta * 2.0f;
dieSpeed = 0.5f;
}
@@ -2788,28 +2788,28 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (damagedBy != FindPlayerPed() || FindPlayerPed()->m_curFightMove != FIGHTMOVE_MELEE3) {
switch (direction) {
case 0:
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
break;
case 1:
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
break;
case 3:
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
}
} else {
- dieAnim = ANIM_KO_SHOT_STOM;
+ dieAnim = ANIM_STD_KO_SHOT_STOMACH;
}
} else {
- dieAnim = ANIM_KO_SHOT_FACE;
+ dieAnim = ANIM_STD_KO_SHOT_FACE;
}
} else {
- dieAnim = ANIM_KO_SHOT_FACE;
+ dieAnim = ANIM_STD_KO_SHOT_FACE;
RemoveBodyPart(PED_HEAD, direction);
headShot = true;
willLinger = true;
@@ -2850,56 +2850,56 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (method == WEAPONTYPE_SHOTGUN) {
switch (direction) {
case 0:
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
break;
case 1:
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
break;
case 3:
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
}
} else
- dieAnim = ANIM_KO_SHOT_FRONT1;
+ dieAnim = ANIM_STD_KO_FRONT;
willLinger = false;
} else {
switch (pedPiece) {
case PEDPIECE_TORSO:
willLinger = false;
- dieAnim = ANIM_KO_SHOT_FRONT1;
+ dieAnim = ANIM_STD_KO_FRONT;
break;
case PEDPIECE_MID:
willLinger = false;
- dieAnim = ANIM_KO_SHOT_STOM;
+ dieAnim = ANIM_STD_KO_SHOT_STOMACH;
break;
case PEDPIECE_LEFTARM:
- dieAnim = ANIM_KO_SHOT_ARML;
+ dieAnim = ANIM_STD_KO_SHOT_ARM_L;
RemoveBodyPart(PED_UPPERARML, direction);
willLinger = true;
break;
case PEDPIECE_RIGHTARM:
- dieAnim = ANIM_KO_SHOT_ARMR;
+ dieAnim = ANIM_STD_KO_SHOT_ARM_R;
RemoveBodyPart(PED_UPPERARMR, direction);
willLinger = true;
break;
case PEDPIECE_LEFTLEG:
- dieAnim = ANIM_KO_SHOT_LEGL;
+ dieAnim = ANIM_STD_KO_SHOT_LEG_L;
RemoveBodyPart(PED_UPPERLEGL, direction);
willLinger = true;
break;
case PEDPIECE_RIGHTLEG:
- dieAnim = ANIM_KO_SHOT_LEGR;
+ dieAnim = ANIM_STD_KO_SHOT_LEG_R;
RemoveBodyPart(PED_UPPERLEGR, direction);
willLinger = true;
break;
case PEDPIECE_HEAD:
- dieAnim = ANIM_KO_SHOT_FACE;
+ dieAnim = ANIM_STD_KO_SHOT_FACE;
RemoveBodyPart(PED_HEAD, direction);
headShot = true;
willLinger = true;
@@ -2939,16 +2939,16 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
switch (direction) {
case 0:
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
break;
case 1:
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
break;
case 3:
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
@@ -2958,7 +2958,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (bFireProof)
return false;
- dieAnim = ANIM_KO_SHOT_FRONT1;
+ dieAnim = ANIM_STD_KO_FRONT;
break;
case WEAPONTYPE_RAMMEDBYCAR:
case WEAPONTYPE_RUNOVERBYCAR:
@@ -2973,36 +2973,36 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (pedPiece == PEDPIECE_RIGHTARM && random > 1
|| pedPiece == PEDPIECE_MID && random == 2)
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
else
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
} else
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 1:
if (m_nPedState == PED_DIVE_AWAY)
- dieAnim = ANIM_KD_LEFT;
+ dieAnim = ANIM_STD_SPINFORWARD_LEFT;
else
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
if ((pedPiece != PEDPIECE_LEFTARM || random <= 1)
&& (pedPiece != PEDPIECE_MID || random != 1)) {
if ((pedPiece != PEDPIECE_RIGHTARM || random <= 1)
&& (pedPiece != PEDPIECE_MID || random != 2)) {
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
} else {
- dieAnim = ANIM_KD_RIGHT;
+ dieAnim = ANIM_STD_SPINFORWARD_RIGHT;
}
} else
- dieAnim = ANIM_KD_LEFT;
+ dieAnim = ANIM_STD_SPINFORWARD_LEFT;
break;
case 3:
if (m_nPedState == PED_DIVE_AWAY)
- dieAnim = ANIM_KD_RIGHT;
+ dieAnim = ANIM_STD_SPINFORWARD_RIGHT;
else
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
@@ -3020,7 +3020,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
}
break;
case WEAPONTYPE_DROWNING:
- dieAnim = ANIM_DROWN;
+ dieAnim = ANIM_STD_DROWN;
break;
case WEAPONTYPE_FALL:
if (bCollisionProof)
@@ -3028,16 +3028,16 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
switch (direction) {
case 0:
- dieAnim = ANIM_KO_SKID_FRONT;
+ dieAnim = ANIM_STD_HIGHIMPACT_FRONT;
break;
case 1:
- dieAnim = ANIM_KO_SPIN_R;
+ dieAnim = ANIM_STD_HIGHIMPACT_LEFT;
break;
case 2:
- dieAnim = ANIM_KO_SKID_BACK;
+ dieAnim = ANIM_STD_HIGHIMPACT_BACK;
break;
case 3:
- dieAnim = ANIM_KO_SPIN_L;
+ dieAnim = ANIM_STD_HIGHIMPACT_RIGHT;
break;
default:
break;
@@ -3070,7 +3070,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
}
if (method == WEAPONTYPE_FALL) {
- if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLOUT_LHS)) {
+ if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROLLOUT_LHS)) {
if (m_fHealth >= 1.0 && m_fHealth - healthImpact < 5.0f) {
m_fHealth = Min(m_fHealth, 5.0f);
return false;
@@ -3147,7 +3147,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi
if (player == this)
m_pMyVehicle->SetStatus(STATUS_PLAYER_DISABLED);
- SetDie(NUM_STD_ANIMS, 4.0f, 0.0f);
+ SetDie(ANIM_STD_NUM, 4.0f, 0.0f);
return true;
} else {
m_fHealth = 0.0f;
@@ -3500,7 +3500,7 @@ CPed::CollideWithPed(CPed *collideWith)
} else {
SetLookFlag(collideWith, false);
TurnBody();
- animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_PPUNCH, 8.0f);
+ animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PARTIAL_PUNCH, 8.0f);
animAssoc->flags |= ASSOC_FADEOUTWHENDONE;
m_nPedStateTimer = CTimer::GetTimeInMilliseconds() + 2000;
if (!heIsMissionChar) {
@@ -3521,22 +3521,22 @@ CPed::CollideWithPed(CPed *collideWith)
moveForce.z += 0.1f;
ApplyMoveForce(moveForce);
if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT)
- animToPlay = ANIM_HIT_LEFT;
+ animToPlay = ANIM_STD_HIT_LEFT;
else
- animToPlay = ANIM_SHOT_LEFT_PARTIAL;
+ animToPlay = ANIM_STD_HITBYGUN_LEFT;
} else if (heLooksToUs) {
CVector moveForce = GetRight() * -1.0f;
moveForce.z += 0.1f;
ApplyMoveForce(moveForce);
if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT)
- animToPlay = ANIM_HIT_RIGHT;
+ animToPlay = ANIM_STD_HIT_RIGHT;
else
- animToPlay = ANIM_SHOT_RIGHT_PARTIAL;
+ animToPlay = ANIM_STD_HITBYGUN_RIGHT;
} else {
if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT)
- animToPlay = ANIM_HIT_BACK;
+ animToPlay = ANIM_STD_HIT_BACK;
else
- animToPlay = ANIM_SHOT_BACK_PARTIAL;
+ animToPlay = ANIM_STD_HITBYGUN_BACK;
}
if (collideWith->IsPedInControl() && CTimer::GetTimeInMilliseconds() > collideWith->m_nPedStateTimer) {
@@ -3553,17 +3553,17 @@ CPed::CollideWithPed(CPed *collideWith)
moveForce.z += 0.1f;
ApplyMoveForce(moveForce);
if (heLooksToUs)
- animToPlay = ANIM_KO_SPIN_L;
+ animToPlay = ANIM_STD_HIGHIMPACT_RIGHT;
else
- animToPlay = ANIM_KD_RIGHT;
+ animToPlay = ANIM_STD_SPINFORWARD_RIGHT;
} else {
CVector moveForce = GetRight();
moveForce.z += 0.1f;
ApplyMoveForce(moveForce);
if (heLooksToUs)
- animToPlay = ANIM_KO_SPIN_R;
+ animToPlay = ANIM_STD_HIGHIMPACT_LEFT;
else
- animToPlay = ANIM_KD_LEFT;
+ animToPlay = ANIM_STD_SPINFORWARD_LEFT;
}
if (m_nPedState == PED_ATTACK && collideWith->IsPedInControl())
@@ -3816,7 +3816,7 @@ CPed::KillPedWithCar(CVehicle *car, float impulse)
damage = 30.0f;
InflictDamage(car, WEAPONTYPE_RAMMEDBYCAR, damage, PEDPIECE_TORSO, fallDirection);
- SetFall(1000, (AnimationId)(fallDirection + ANIM_KO_SKID_FRONT), true);
+ SetFall(1000, (AnimationId)(fallDirection + ANIM_STD_HIGHIMPACT_FRONT), true);
if (OnGround() && !m_pCollidingEntity &&
(!IsPlayer() || bHasHitWall || car->GetModelIndex() == MI_TRAIN || m_vecDamageNormal.z < -0.8f)) {
@@ -3860,18 +3860,18 @@ CPed::DriveVehicle(void)
float targetUDLean = 0.0f;
CAnimBlendAssociation *leftAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_LEFT);
CAnimBlendAssociation *rightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_RIGHT);
- CAnimBlendAssociation *stillAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_STILL);
+ CAnimBlendAssociation *stillAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_READY);
CAnimBlendAssociation *fwdAssoc, *backAssoc;
if (IsPlayer()) {
- fwdAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_FWD);
- backAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_BACK);
+ fwdAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_LEANF);
+ backAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_LEANB);
}
- CAnimBlendAssociation *walkbackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_PUSHES);
- CAnimBlendAssociation *drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_RHS);
+ CAnimBlendAssociation *walkbackAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_WALKBACK);
+ CAnimBlendAssociation *drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_LHS);
if (!drivebyAssoc)
- drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_LHS);
+ drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_RHS);
if (!drivebyAssoc)
- drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_FT);
+ drivebyAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BIKE_DRIVEBY_FORWARD);
float velocityFwdDotProd = DotProduct(bike->m_vecMoveSpeed, bike->GetForward());
if (m_vecTurnSpeed.MagnitudeSqr() > 0.09f) {
@@ -3882,7 +3882,7 @@ CPed::DriveVehicle(void)
}
if (!drivebyAssoc && Abs(velocityFwdDotProd) < 0.02f) {
if (!stillAssoc || stillAssoc->blendAmount < 1.0 && stillAssoc->blendDelta <= 0.0) {
- stillAssoc = CAnimManager::BlendAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_STILL, 2.0f);
+ stillAssoc = CAnimManager::BlendAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_READY, 2.0f);
}
} else {
if (velocityFwdDotProd >= 0.0f) {
@@ -3909,7 +3909,7 @@ CPed::DriveVehicle(void)
walkbackAssoc->blendDelta = -4.0f;
}
} else if (!walkbackAssoc || walkbackAssoc->blendAmount < 1.0f && walkbackAssoc->blendDelta <= 0.0f) {
- walkbackAssoc = CAnimManager::BlendAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_PUSHES, 4.0f);
+ walkbackAssoc = CAnimManager::BlendAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_WALKBACK, 4.0f);
}
}
}
@@ -4007,9 +4007,9 @@ CPed::DriveVehicle(void)
float leftRightBlend = leftRightLeanAmount * blendDelta;
if (IsPlayer()) {
if (!fwdAssoc)
- fwdAssoc = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_FWD);
+ fwdAssoc = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_LEANF);
if (!backAssoc)
- backAssoc = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_BACK);
+ backAssoc = CAnimManager::AddAnimation(GetClump(), bike->m_bikeAnimType, ANIM_BIKE_LEANB);
if (bike->m_fPedLeanAmountUD < 0.0f) {
backAssoc->blendAmount = fwdBackBlend;
@@ -4058,35 +4058,35 @@ CPed::DriveVehicle(void)
CAnimBlendAssociation* lbAssoc;
CAnimBlendAssociation* sitAssoc;
if (m_pMyVehicle->IsBoat() && !(m_pMyVehicle->pHandling->Flags & HANDLING_SIT_IN_BOAT)) {
- sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_BOAT);
+ sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_BOAT_DRIVE);
if (!sitAssoc || sitAssoc->blendAmount < 1.0f) {
return;
}
- lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_BOAT_L);
- rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_BOAT_R);
- lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_BOAT_LB);
+ lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_BOAT_DRIVE_LEFT);
+ rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_BOAT_DRIVE_RIGHT);
+ lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_BOAT_LOOKBEHIND);
} else if (m_pMyVehicle->bLowVehicle) {
- sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSIT);
+ sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_LO);
if (!sitAssoc || sitAssoc->blendAmount < 1.0f) {
return;
}
- lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_L);
+ lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT_LO);
lbAssoc = nil;
- rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_R);
+ rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT_LO);
} else {
- sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SIT);
+ sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT);
if (!sitAssoc || sitAssoc->blendAmount < 1.0f) {
return;
}
- lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_L);
- rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_R);
- lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LB);
+ lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT);
+ rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT);
+ lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_LOOKBEHIND);
}
if (lbAssoc &&
@@ -4095,13 +4095,13 @@ CPed::DriveVehicle(void)
lbAssoc->blendDelta = -1000.0f;
}
- CAnimBlendAssociation* driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_L);
+ CAnimBlendAssociation* driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT);
if (!driveByAssoc)
- driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_R);
+ driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT);
if (!driveByAssoc)
- driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_LOW_L);
+ driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT_LO);
if (!driveByAssoc)
- driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_LOW_R);
+ driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT_LO);
if (m_pMyVehicle->bLowVehicle || m_pMyVehicle->m_fGasPedal >= 0.0f || driveByAssoc ||
m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI || m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE) {
@@ -4118,11 +4118,11 @@ CPed::DriveVehicle(void)
if (rDriveAssoc)
rDriveAssoc->blendAmount = clamp(steerAngle * -100.0f / 61.0f, 0.0f, 1.0f);
else if (m_pMyVehicle->IsBoat() && !(m_pMyVehicle->pHandling->Flags & HANDLING_SIT_IN_BOAT))
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT_R);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE_RIGHT);
else if (m_pMyVehicle->bLowVehicle)
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_LOW_R);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_RIGHT_LO);
else
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_R);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_RIGHT);
} else {
if (rDriveAssoc)
@@ -4131,11 +4131,11 @@ CPed::DriveVehicle(void)
if (lDriveAssoc)
lDriveAssoc->blendAmount = clamp(steerAngle * 100.0f / 61.0f, 0.0f, 1.0f);
else if (m_pMyVehicle->IsBoat() && !(m_pMyVehicle->pHandling->Flags & HANDLING_SIT_IN_BOAT))
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT_L);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE_LEFT);
else if (m_pMyVehicle->bLowVehicle)
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_LOW_L);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_LEFT_LO);
else
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_L);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_LEFT);
}
if (lbAssoc)
@@ -4147,9 +4147,9 @@ CPed::DriveVehicle(void)
&& (!lbAssoc || lbAssoc->blendAmount < 1.0f && lbAssoc->blendDelta <= 0.0f)) {
if (m_pMyVehicle->IsBoat() && !(m_pMyVehicle->pHandling->Flags & HANDLING_SIT_IN_BOAT))
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_BOAT_LB, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_LOOKBEHIND, 4.0f);
else
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_LB, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_LOOKBEHIND, 4.0f);
}
}
}
@@ -4160,7 +4160,7 @@ CPed::RemoveWeaponAnims(int unused, float animDelta)
CAnimBlendAssociation *weaponAssoc;
//CWeaponInfo::GetWeaponInfo(unused);
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE);
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1);
if (weaponAssoc) {
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
@@ -4175,17 +4175,17 @@ CPed::RemoveWeaponAnims(int unused, float animDelta)
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
}
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_RELOAD);
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA1);
if (weaponAssoc) {
weaponAssoc->blendDelta = animDelta;
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
}
- weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_CROUCHRELOAD);
+ weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
if (weaponAssoc) {
weaponAssoc->flags |= ASSOC_DELETEFADEDOUT;
if (weaponAssoc->flags & ASSOC_PARTIAL)
weaponAssoc->blendDelta = animDelta;
else
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, -animDelta);
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, -animDelta);
}
}
diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp
index 7308b3fb..5c40419e 100644
--- a/src/peds/PlayerPed.cpp
+++ b/src/peds/PlayerPed.cpp
@@ -246,7 +246,7 @@ CPlayerPed::MakeChangesForNewWeapon(int32 slot)
void
CPlayerPed::ReApplyMoveAnims(void)
{
- static AnimationId moveAnims[] = { ANIM_WALK, ANIM_RUN, ANIM_SPRINT, ANIM_IDLE_STANCE, ANIM_WALK_START };
+ static AnimationId moveAnims[] = { ANIM_STD_WALK, ANIM_STD_RUN, ANIM_STD_RUNFAST, ANIM_STD_IDLE, ANIM_STD_STARTWALK };
for(int i = 0; i < ARRAY_SIZE(moveAnims); i++) {
CAnimBlendAssociation *curMoveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), moveAnims[i]);
@@ -311,13 +311,13 @@ CPlayerPed::SetInitialState(void)
void
CPlayerPed::SetRealMoveAnim(void)
{
- CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK);
- CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN);
- CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT);
- CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START);
- CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE);
- CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP);
- CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R);
+ CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_WALK);
+ CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN);
+ CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST);
+ CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_STARTWALK);
+ CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE);
+ CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1);
+ CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2);
if (bResetWalkAnims) {
if (curWalkAssoc)
curWalkAssoc->SetCurrentTime(0.0f);
@@ -329,9 +329,9 @@ CPlayerPed::SetRealMoveAnim(void)
}
if (!curIdleAssoc)
- curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
+ curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
if (!curIdleAssoc)
- curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
+ curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE);
if (!curIdleAssoc)
curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
@@ -352,10 +352,10 @@ CPlayerPed::SetRealMoveAnim(void)
if (!curIdleAssoc) {
if (m_fCurrentStamina < 0.0f && !bIsAimingGun && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f,
nil, true, false, false, false, false, false)) {
- curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 8.0f);
+ curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 8.0f);
} else {
- curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f);
+ curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f);
}
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000);
}
@@ -366,25 +366,25 @@ CPlayerPed::SetRealMoveAnim(void)
if (!curIdleAssoc) {
if (m_fCurrentStamina < 0.0f && !bIsAimingGun && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f,
nil, true, false, false, false, false, false)) {
- curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f);
+ curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f);
} else {
- curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
}
m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000);
}
- if ((m_fCurrentStamina > 0.0f || bIsAimingGun) && curIdleAssoc->animId == ANIM_IDLE_TIRED) {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ if ((m_fCurrentStamina > 0.0f || bIsAimingGun) && curIdleAssoc->animId == ANIM_STD_IDLE_TIRED) {
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
} else if (m_nPedState != PED_FIGHT) {
- if (m_fCurrentStamina < 0.0f && !bIsAimingGun && curIdleAssoc->animId != ANIM_IDLE_TIRED
+ if (m_fCurrentStamina < 0.0f && !bIsAimingGun && curIdleAssoc->animId != ANIM_STD_IDLE_TIRED
&& !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f, nil, true, false, false, false, false, false)) {
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f);
- } else if (curIdleAssoc->animId != ANIM_IDLE_STANCE) {
- CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f);
+ } else if (curIdleAssoc->animId != ANIM_STD_IDLE) {
+ CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f);
}
}
m_nMoveState = PEDMOVE_STILL;
@@ -395,7 +395,7 @@ CPlayerPed::SetRealMoveAnim(void)
curWalkStartAssoc->blendAmount = 1.0f;
curWalkStartAssoc->blendDelta = 0.0f;
} else {
- curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK_START);
+ curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_STARTWALK);
}
if (curWalkAssoc)
curWalkAssoc->SetCurrentTime(0.0f);
@@ -403,8 +403,8 @@ CPlayerPed::SetRealMoveAnim(void)
curRunAssoc->SetCurrentTime(0.0f);
delete curIdleAssoc;
- delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED);
- CAnimBlendAssociation *fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE);
+ delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED);
+ CAnimBlendAssociation *fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE);
if (!fightIdleAnim)
fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE);
delete fightIdleAnim;
@@ -422,11 +422,11 @@ CPlayerPed::SetRealMoveAnim(void)
RestoreHeadingRate();
}
if (!curWalkAssoc) {
- curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK);
+ curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_WALK);
curWalkAssoc->blendAmount = 0.0f;
}
if (!curRunAssoc) {
- curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_RUN);
+ curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_RUN);
curRunAssoc->blendAmount = 0.0f;
}
if (curWalkStartAssoc && !(curWalkStartAssoc->IsRunning())) {
@@ -453,9 +453,9 @@ CPlayerPed::SetRealMoveAnim(void)
if (m_fMoveSpeed < 0.4f) {
AnimationId runStopAnim;
if (curSprintAssoc->GetProgress() < 0.5) // double
- runStopAnim = ANIM_RUN_STOP;
+ runStopAnim = ANIM_STD_RUNSTOP1;
else
- runStopAnim = ANIM_RUN_STOP_R;
+ runStopAnim = ANIM_STD_RUNSTOP2;
CAnimBlendAssociation* newRunStopAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, runStopAnim);
newRunStopAssoc->blendAmount = 1.0f;
newRunStopAssoc->SetDeleteCallback(RestoreHeadingRateCB, this);
@@ -498,7 +498,7 @@ CPlayerPed::SetRealMoveAnim(void)
// Transition between run-sprint
curWalkAssoc->blendAmount = 0.0f;
curRunAssoc->blendAmount = 1.0f;
- curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_SPRINT, 2.0f);
+ curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_RUNFAST, 2.0f);
}
UseSprintEnergy();
} else {
@@ -629,14 +629,14 @@ CPlayerPed::DoesTargetHaveToBeBroken(CVector target, CWeapon *weaponUsed)
void
CPlayerPed::RunningLand(CPad *padUsed)
{
- CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_LAND);
+ CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_LAND);
if (landAssoc && landAssoc->currentTime == 0.0f && m_fMoveSpeed > 1.5f
&& padUsed && (padUsed->GetPedWalkLeftRight() != 0.0f || padUsed->GetPedWalkUpDown() != 0.0f)) {
landAssoc->blendDelta = -1000.0f;
landAssoc->flags |= ASSOC_DELETEFADEDOUT;
- CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this);
+ CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this);
if (m_nPedState == PED_JUMP)
RestorePreviousState();
@@ -869,7 +869,7 @@ CPlayerPed::PlayerControl1stPersonRunAround(CPad *padUsed)
if (m_nPedState == PED_JUMP) {
if (bIsInTheAir) {
if (bUsesCollision && !bHitSteepSlope && (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f)
- && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) {
+ && m_fDistanceTravelled < CTimer::GetTimeStepInSeconds() && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) {
float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O
float angleCos = Cos(m_fRotationCur);
@@ -1259,7 +1259,7 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed)
TheCamera.SetNewPlayerWeaponMode(CCam::MODE_M16_1STPERSON, 0, 0);
m_fMoveSpeed = 0.0f;
- CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 1000.0f);
+ CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE, 1000.0f);
SetPedState(PED_SNIPER_MODE);
return;
}
@@ -1484,7 +1484,7 @@ CPlayerPed::PlayerControlZelda(CPad *padUsed)
if (m_nPedState == PED_JUMP) {
if (bIsInTheAir) {
if (bUsesCollision && !bHitSteepSlope && (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f)
- && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) {
+ && m_fDistanceTravelled < CTimer::GetTimeStepInSeconds() && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) {
float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O
float angleCos = Cos(m_fRotationCur);
@@ -1680,7 +1680,7 @@ CPlayerPed::ProcessControl(void)
}
}
if (GetWeapon()->m_eWeaponType == WEAPONTYPE_CHAINSAW && m_nPedState != PED_ATTACK && !bInVehicle) {
- DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_ATTACK, 0.0f);
+ DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_CHAINSAW_IDLE, 0.0f);
}
if (m_nMoveState != PEDMOVE_RUN && m_nMoveState != PEDMOVE_SPRINT)
@@ -1701,24 +1701,24 @@ CPlayerPed::ProcessControl(void)
if (m_nPedState == PED_DRIVING && m_objective != OBJECTIVE_LEAVE_CAR) {
if (!CReplay::IsPlayingBack() || m_pMyVehicle) {
if (m_pMyVehicle->IsCar() && ((CAutomobile*)m_pMyVehicle)->Damage.GetDoorStatus(DOOR_FRONT_LEFT) == DOOR_STATUS_SWINGING) {
- CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR);
+ CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS);
- if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || (rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR_LOW))) {
+ if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || (rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS))) {
if (rollDoorAssoc)
- m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime);
+ m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, rollDoorAssoc->currentTime);
} else {
// These comparisons are wrong, they return uint16
if (padUsed && (padUsed->GetAccelerate() != 0.0f || padUsed->GetSteeringLeftRight() != 0.0f || padUsed->GetBrake() != 0.0f)) {
if (rollDoorAssoc)
- m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime);
+ m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, rollDoorAssoc->currentTime);
} else {
m_pMyVehicle->m_nGettingOutFlags |= CAR_DOOR_FLAG_LF;
if (m_pMyVehicle->bLowVehicle)
- rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR_LOW);
+ rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS);
else
- rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR);
+ rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS);
rollDoorAssoc->SetFinishCallback(PedAnimDoorCloseRollingCB, this);
}
@@ -1948,11 +1948,11 @@ CPlayerPed::PlayIdleAnimations(CPad *padUsed)
};
const animAndGroup idleAnims[] = {
- {ANIM_IDLE_STRETCH, ASSOCGRP_PLAYER_IDLE},
- {ANIM_IDLE_TIME, ASSOCGRP_PLAYER_IDLE},
- {ANIM_IDLE_SHOULDER, ASSOCGRP_PLAYER_IDLE},
- {ANIM_IDLE_STRETCH_LEG, ASSOCGRP_PLAYER_IDLE},
- {ANIM_XPRESS_SCRATCH, ASSOCGRP_STD},
+ {ANIM_PLAYER_IDLE1, ASSOCGRP_PLAYER_IDLE},
+ {ANIM_PLAYER_IDLE2, ASSOCGRP_PLAYER_IDLE},
+ {ANIM_PLAYER_IDLE3, ASSOCGRP_PLAYER_IDLE},
+ {ANIM_PLAYER_IDLE4, ASSOCGRP_PLAYER_IDLE},
+ {ANIM_STD_XPRESS_SCRATCH, ASSOCGRP_STD},
};
static int32 lastTime = 0;
diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp
index 0119b475..f0e41231 100644
--- a/src/peds/Population.cpp
+++ b/src/peds/Population.cpp
@@ -911,10 +911,9 @@ CPopulation::MoveCarsAndPedsOutOfAbandonedZones()
void
CPopulation::ConvertAllObjectsToDummyObjects()
{
- int poolSize = CPools::GetObjectPool()->GetSize();
- for (int poolIndex = poolSize - 1; poolIndex >= 0; poolIndex--) {
-
- CObject *obj = CPools::GetObjectPool()->GetSlot(poolIndex);
+ uint32 i = CPools::GetObjectPool()->GetSize();
+ while(i--) {
+ CObject *obj = CPools::GetObjectPool()->GetSlot(i);
if (obj) {
if (obj->CanBeDeleted())
ConvertToDummyObject(obj);
@@ -980,27 +979,30 @@ CPopulation::TestSafeForRealObject(CDummyObject *dummy)
{
CPtrNode *ptrNode;
CColModel *dummyCol = dummy->GetColModel();
- float colRadius = dummy->GetBoundRadius();
- CVector colCentre = dummy->GetBoundCentre();
- int minX = CWorld::GetSectorIndexX(dummy->GetPosition().x - colRadius);
+ float radius = dummyCol->boundingSphere.radius;
+ int minX = CWorld::GetSectorIndexX(dummy->GetPosition().x - radius);
if (minX < 0) minX = 0;
- int minY = CWorld::GetSectorIndexY(dummy->GetPosition().y - colRadius);
+ int minY = CWorld::GetSectorIndexY(dummy->GetPosition().y - radius);
if (minY < 0) minY = 0;
- int maxX = CWorld::GetSectorIndexX(dummy->GetPosition().x + colRadius);
+ int maxX = CWorld::GetSectorIndexX(dummy->GetPosition().x + radius);
#ifdef FIX_BUGS
if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X - 1;
#else
if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X;
#endif
- int maxY = CWorld::GetSectorIndexY(dummy->GetPosition().y + colRadius);
+ int maxY = CWorld::GetSectorIndexY(dummy->GetPosition().y + radius);
#ifdef FIX_BUGS
if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y - 1;
#else
if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y;
#endif
+ float colRadius = dummy->GetBoundRadius();
+ CVUVECTOR colCentre;
+ dummy->GetBoundCentre(colCentre);
+
static CColPoint aTempColPoints[MAX_COLLISION_POINTS];
for (int curY = minY; curY <= maxY; curY++) {
@@ -1405,7 +1407,7 @@ CPopulation::PlaceGangMembersInFormation(ePedType pedType, int pedAmount, CVecto
CPed *createdPeds[5];
if (!TheCamera.IsSphereVisible(coors, 3.0f) || MIN_CREATION_DIST * PedCreationDistMultiplier() <= (coors - FindPlayerPed()->GetPosition()).Magnitude2D()) {
- if (CPedPlacement::IsPositionClearForPed(coors, 3.0f, -1, 0)) {
+ if (CPedPlacement::IsPositionClearForPed(coors, 3.0f, -1, nil)) {
bool leaderFoundGround;
float leaderGroundZ = CWorld::FindGroundZFor3DCoord(coors.x, coors.y, coors.z, &leaderFoundGround) + 1.0f;
if (leaderFoundGround) {
@@ -1485,11 +1487,14 @@ CPopulation::PlaceGangMembersInCircle(ePedType pedType, int pedAmount, CVector c
if (!TheCamera.IsSphereVisible(coors, circleR) ||
MIN_CREATION_DIST * PedCreationDistMultiplier() <= (coors - FindPlayerPed()->GetPosition()).Magnitude2D()) {
- if (CPedPlacement::IsPositionClearForPed(coors, circleR, -1, 0)) {
+ if (CPedPlacement::IsPositionClearForPed(coors, circleR, -1, nil)) {
int pedIdx = 0;
CVector leaderPos;
+#ifdef FIX_BUGS
+ bool createLeader = true;
+#endif
- for (int i = 0; i < pedAmount; i++) {
+ for (int i = 0; i < pedAmount; i++) {
float angleMult = i + CGeneral::GetRandomNumberInRange(-0.2f, 0.2f);
float randomR = circleR + CGeneral::GetRandomNumberInRange(-0.2f, 0.2f) * circleR;
float xOffset = randomR * Cos(angleMult * circleSector);
@@ -1498,8 +1503,10 @@ CPopulation::PlaceGangMembersInCircle(ePedType pedType, int pedAmount, CVector c
float groundZ = CWorld::FindGroundZFor3DCoord(xOffset + coors.x, yOffset + coors.y, coors.z + 1.0, &foundGround) + 1.0f;
if (foundGround) {
CVector finalPos(coors.x + xOffset, coors.y + yOffset, coors.z > groundZ ? coors.z : groundZ);
-
- if (i == 0)
+#ifndef FIX_BUGS
+ const bool createLeader = i == 0;
+#endif
+ if (createLeader)
leaderPos = finalPos;
int gangModel = ChooseGangOccupation(pedType - PEDTYPE_GANG1);
@@ -1522,11 +1529,11 @@ CPopulation::PlaceGangMembersInCircle(ePedType pedType, int pedAmount, CVector c
}
}
}
- bool memberCanSeeLeader = i == 0 ? true : CWorld::GetIsLineOfSightClear(finalPos, leaderPos, true, false, false, false, false, false, false);
+ bool memberCanSeeLeader = createLeader ? true : CWorld::GetIsLineOfSightClear(finalPos, leaderPos, true, false, false, false, false, false, false);
- bool notTooCloseToLeader = i == 0 ? true : !(Abs(finalPos.z - leaderPos.z) < 1.0f);
+ bool notTooHighFromLeader = createLeader ? true : !(Abs(finalPos.z - leaderPos.z) >= 1.0f);
- if (!foundObstacle && memberCanSeeLeader && notTooCloseToLeader) {
+ if (!foundObstacle && memberCanSeeLeader && notTooHighFromLeader) {
CPed* newPed = AddPed(pedType, gangModel, finalPos);
if (newPed) {
createdPeds[pedIdx++] = newPed;
@@ -1539,6 +1546,9 @@ CPopulation::PlaceGangMembersInCircle(ePedType pedType, int pedAmount, CVector c
newPed->bCanAttackPlayerWithCops = true;
CVisibilityPlugins::SetClumpAlpha(newPed->GetClump(), 0);
+#ifdef FIX_BUGS
+ createLeader = false;
+#endif
}
// No.
#ifndef FIX_BUGS
@@ -1586,7 +1596,7 @@ CPopulation::PlaceCouple(ePedType manType, int32 manModel, ePedType womanType, i
return;
if (!TheCamera.IsSphereVisible(coors, 1.5f) || MIN_CREATION_DIST * PedCreationDistMultiplier() <= (coors - FindPlayerPed()->GetPosition()).Magnitude2D()) {
- if (CPedPlacement::IsPositionClearForPed(coors, CModelInfo::GetModelInfo(manModel)->GetColModel()->boundingSphere.radius, -1, 0)) {
+ if (CPedPlacement::IsPositionClearForPed(coors, CModelInfo::GetModelInfo(manModel)->GetColModel()->boundingSphere.radius, -1, nil)) {
bool manFoundGround;
float manGroundZ = CWorld::FindGroundZFor3DCoord(coors.x, coors.y, coors.z, &manFoundGround) + 1.0f;
if (manFoundGround) {
@@ -1668,9 +1678,12 @@ CPopulation::PlaceMallPedsAsStationaryGroup(CVector const& coors, int32 group)
if (!TheCamera.IsSphereVisible(coors, circleR) ||
MIN_CREATION_DIST * PedCreationDistMultiplier() <= (coors - FindPlayerPed()->GetPosition()).Magnitude2D()) {
- if (CPedPlacement::IsPositionClearForPed(coors, circleR, -1, 0)) {
+ if (CPedPlacement::IsPositionClearForPed(coors, circleR, -1, nil)) {
int pedIdx = 0;
CVector leaderPos;
+#ifdef FIX_BUGS
+ bool createLeader = true;
+#endif
for (int i = 0; i < pedAmount; i++) {
float angleMult = i + CGeneral::GetRandomNumberInRange(-0.2f, 0.2f);
@@ -1682,11 +1695,15 @@ CPopulation::PlaceMallPedsAsStationaryGroup(CVector const& coors, int32 group)
if (foundGround) {
CVector finalPos(coors.x + xOffset, coors.y + yOffset, coors.z > groundZ ? coors.z : groundZ);
- if (i == 0)
+#ifndef FIX_BUGS
+ const bool createLeader = i == 0;
+#endif
+ if (createLeader)
leaderPos = finalPos;
int pedModel = ChooseCivilianOccupation(group);
CPedModelInfo *pedModelInfo = (CPedModelInfo*)CModelInfo::GetModelInfo(pedModel);
+
if (pedModelInfo->GetRwObject()) {
CEntity* obstacles[6] = { nil, nil, nil, nil, nil, nil };
CPedPlacement::IsPositionClearForPed(finalPos, CModelInfo::GetModelInfo(pedModel)->GetColModel()->boundingSphere.radius, ARRAY_SIZE(obstacles), obstacles);
@@ -1706,11 +1723,11 @@ CPopulation::PlaceMallPedsAsStationaryGroup(CVector const& coors, int32 group)
}
}
}
- bool memberCanSeeLeader = i == 0 ? true : CWorld::GetIsLineOfSightClear(finalPos, leaderPos, true, false, false, false, false, false, false);
+ bool memberCanSeeLeader = createLeader ? true : CWorld::GetIsLineOfSightClear(finalPos, leaderPos, true, false, false, false, false, false, false);
- bool notTooCloseToLeader = i == 0 ? true : !(Abs(finalPos.z - leaderPos.z) < 1.0f);
+ bool notTooHighFromLeader = createLeader ? true : !(Abs(finalPos.z - leaderPos.z) >= 1.0f);
- if (!foundObstacle && memberCanSeeLeader && notTooCloseToLeader) {
+ if (!foundObstacle && memberCanSeeLeader && notTooHighFromLeader) {
CPed *newPed = AddPed(pedModelInfo->m_pedType, pedModel, finalPos);
if (newPed) {
createdPeds[pedIdx++] = newPed;
@@ -1721,6 +1738,9 @@ CPopulation::PlaceMallPedsAsStationaryGroup(CVector const& coors, int32 group)
newPed->m_fRotationCur = angle;
newPed->m_fearFlags = 0;
CVisibilityPlugins::SetClumpAlpha(newPed->GetClump(), 0);
+#ifdef FIX_BUGS
+ createLeader = false;
+#endif
}
// No.
#ifndef FIX_BUGS
diff --git a/src/render/Antennas.cpp b/src/render/Antennas.cpp
index 452069a0..5e30aca2 100644
--- a/src/render/Antennas.cpp
+++ b/src/render/Antennas.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "Antennas.h"
CAntenna CAntennas::aAntennas[NUMANTENNAS];
@@ -70,6 +71,7 @@ CAntennas::Render(void)
{
int i, j;
+ PUSH_RENDERGROUP("CAntennas::Render");
for(i = 0; i < NUMANTENNAS; i++){
if(!aAntennas[i].active)
continue;
@@ -101,6 +103,8 @@ CAntennas::Render(void)
}
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
+
+ POP_RENDERGROUP();
}
void
diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp
index e3a8c86e..9cd32c5f 100644
--- a/src/render/Clouds.cpp
+++ b/src/render/Clouds.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "Sprite.h"
#include "Sprite2d.h"
#include "General.h"
@@ -119,6 +120,8 @@ CClouds::Render(void)
if(!CGame::CanSeeOutSideFromCurrArea())
return;
+ PUSH_RENDERGROUP("CClouds::Render");
+
CCoronas::SunBlockedByClouds = false;
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
@@ -301,6 +304,8 @@ CClouds::Render(void)
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
+
+ POP_RENDERGROUP();
}
bool
@@ -313,6 +318,8 @@ void
CClouds::RenderBackground(int16 topred, int16 topgreen, int16 topblue,
int16 botred, int16 botgreen, int16 botblue, int16 alpha)
{
+ PUSH_RENDERGROUP("CClouds::RenderBackground");
+
CVector right = CrossProduct(TheCamera.GetUp(), TheCamera.GetForward());
right.Normalise();
float c = right.Magnitude2D();
@@ -415,6 +422,8 @@ CClouds::RenderBackground(int16 topred, int16 topgreen, int16 topblue,
ms_colourBottom.g = fogg;
ms_colourBottom.b = fogb;
}
+
+ POP_RENDERGROUP();
}
void
@@ -423,6 +432,8 @@ CClouds::RenderHorizon(void)
if(UseDarkBackground())
return;
+ PUSH_RENDERGROUP("CClouds::RenderHorizon");
+
ms_colourBottom.a = 230;
ms_colourTop.a = 80;
@@ -457,4 +468,6 @@ CClouds::RenderHorizon(void)
CSprite2d::DrawAnyRect(0.0f, topleft, SCREEN_WIDTH, topright, 0.0f, botleft, SCREEN_WIDTH, botright,
ms_colourBkGrd, ms_colourBkGrd, ms_colourBkGrd, ms_colourBkGrd);
+
+ POP_RENDERGROUP();
}
diff --git a/src/render/Coronas.cpp b/src/render/Coronas.cpp
index e3d3416c..1ac3263c 100644
--- a/src/render/Coronas.cpp
+++ b/src/render/Coronas.cpp
@@ -249,6 +249,8 @@ CCoronas::Render(void)
int i, j;
int screenw, screenh;
+ PUSH_RENDERGROUP("CCoronas::Render");
+
screenw = RwRasterGetWidth(RwCameraGetRaster(Scene.camera));
screenh = RwRasterGetHeight(RwCameraGetRaster(Scene.camera));
@@ -432,6 +434,8 @@ CCoronas::Render(void)
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
+
+ POP_RENDERGROUP();
}
void
@@ -442,6 +446,8 @@ CCoronas::RenderReflections(void)
CEntity *entity;
if(CWeather::WetRoads > 0.0f){
+ PUSH_RENDERGROUP("CCoronas::RenderReflections");
+
CSprite::InitSpriteBuffer();
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
@@ -517,6 +523,8 @@ CCoronas::RenderReflections(void)
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
+
+ POP_RENDERGROUP();
}else{
for(i = 0; i < NUMCORONAS; i++)
aCoronas[i].renderReflection = false;
@@ -905,9 +913,9 @@ CEntity::ProcessLightsForEntity(void)
effect->light.shadowSize, 0.0f,
0.0f, -effect->light.shadowSize,
128,
- effect->col.r*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
- effect->col.g*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
- effect->col.b*CTimeCycle::GetSpriteBrightness()*effect->light.shadowIntensity/255.0f,
+ effect->col.r,
+ effect->col.g,
+ effect->col.b,
15.0f, 1.0f, 40.0f, false, 0.0f);
}else if(lightFlickering){
CShadows::StoreStaticShadow((uintptr)this + i, SHADOWTYPE_ADDITIVE,
diff --git a/src/render/Credits.cpp b/src/render/Credits.cpp
index 883ad2f2..81e76625 100644
--- a/src/render/Credits.cpp
+++ b/src/render/Credits.cpp
@@ -798,6 +798,9 @@ CCredits::Render(void)
PrintCreditSpace(1.5f, lineoffset);
PrintCreditSpace(1.5f, lineoffset);
CFont::DrawFonts();
+#ifdef CUTSCENE_BORDERS_SWITCH
+ if (CMenuManager::m_PrefsCutsceneBorders)
+#endif
if(TheCamera.m_WideScreenOn)
TheCamera.DrawBordersForWideScreen();
diff --git a/src/render/Draw.cpp b/src/render/Draw.cpp
index 13cbd1b3..9c5921c3 100644
--- a/src/render/Draw.cpp
+++ b/src/render/Draw.cpp
@@ -30,28 +30,48 @@ bool CDraw::ms_bFixRadar = true;
bool CDraw::ms_bFixSprites = true;
#endif
+#ifdef ASPECT_RATIO_SCALE
+float
+FindAspectRatio(void)
+{
+ switch (FrontEndMenuManager.m_PrefsUseWideScreen) {
+ case AR_AUTO:
+ return SCREEN_WIDTH / SCREEN_HEIGHT;
+ default:
+ case AR_4_3:
+ return 4.0f / 3.0f;
+ case AR_5_4:
+ return 5.0f / 4.0f;
+ case AR_16_10:
+ return 16.0f / 10.0f;
+ case AR_16_9:
+ return 16.0f / 9.0f;
+ case AR_21_9:
+ return 21.0f / 9.0f;
+ };
+}
+#endif
+
float
CDraw::CalculateAspectRatio(void)
{
- if (FrontEndMenuManager.m_PrefsUseWideScreen) {
#ifdef ASPECT_RATIO_SCALE
- if (TheCamera.m_WideScreenOn)
- CDraw::ms_fAspectRatio = FrontEndMenuManager.m_PrefsUseWideScreen == AR_AUTO ?
- (5.f / 3.f) * (SCREEN_WIDTH / SCREEN_HEIGHT) / (16.f / 9.f) :
- 5.f / 3.f; // It's used on theatrical showings according to Wiki
- else
- CDraw::ms_fAspectRatio = FrontEndMenuManager.m_PrefsUseWideScreen == AR_AUTO ? SCREEN_WIDTH / SCREEN_HEIGHT : 16.f / 9.f;
+ if (TheCamera.m_WideScreenOn)
+ CDraw::ms_fAspectRatio = (5.f / 3.f) * FindAspectRatio() / (16.f / 9.f); // It's used on theatrical showings according to Wiki
+ else
+ CDraw::ms_fAspectRatio = FindAspectRatio();
#else
+ if(FrontEndMenuManager.m_PrefsUseWideScreen) {
if (TheCamera.m_WideScreenOn)
CDraw::ms_fAspectRatio = 5.f / 3.f; // It's used on theatrical showings according to Wiki
else
CDraw::ms_fAspectRatio = 16.f / 9.f;
-#endif
} else if (TheCamera.m_WideScreenOn) {
CDraw::ms_fAspectRatio = 5.f/4.f;
} else {
CDraw::ms_fAspectRatio = 4.f/3.f;
}
+#endif
return CDraw::ms_fAspectRatio;
}
diff --git a/src/render/Draw.h b/src/render/Draw.h
index e67ab42b..b96fa813 100644
--- a/src/render/Draw.h
+++ b/src/render/Draw.h
@@ -4,10 +4,14 @@ enum eAspectRatio
{
// Make sure these work the same as FrontEndMenuManager.m_PrefsUseWideScreen
// without widescreen support
+ AR_AUTO,
AR_4_3,
+ AR_5_4,
+ AR_16_10,
AR_16_9,
+ AR_21_9,
- AR_AUTO,
+ AR_MAX,
};
class CDraw
diff --git a/src/render/Fluff.cpp b/src/render/Fluff.cpp
index e28ebc8e..ef167708 100644
--- a/src/render/Fluff.cpp
+++ b/src/render/Fluff.cpp
@@ -460,6 +460,7 @@ void CMovingThings::Update()
void CMovingThings::Render()
{
+ PUSH_RENDERGROUP("CMovingThings::Render");
CSmokeTrails::Update();
int i;
@@ -472,6 +473,7 @@ void CMovingThings::Render()
CPlaneTrails::Render();
CSmokeTrails::Render();
CPlaneBanners::Render();
+ POP_RENDERGROUP();
}
void CMovingThings::RegisterOne(CEntity *pEnt, uint16 nType) {
diff --git a/src/render/Font.cpp b/src/render/Font.cpp
index 45ea9ac2..b38b0efd 100644
--- a/src/render/Font.cpp
+++ b/src/render/Font.cpp
@@ -176,11 +176,26 @@ CFont::Initialise(void)
}
*/
+#if !defined(GAMEPAD_MENU) && defined(BUTTON_ICONS)
+ // loaded in CMenuManager with GAMEPAD_MENU defined
+ LoadButtons("MODELS/X360BTNS.TXD");
+#endif
+}
+
#ifdef BUTTON_ICONS
- if (int file = CFileMgr::OpenFile("MODELS/X360BTNS.TXD")) {
+void
+CFont::LoadButtons(const char *txdPath)
+{
+ if (int file = CFileMgr::OpenFile(txdPath)) {
CFileMgr::CloseFile(file);
- ButtonsSlot = CTxdStore::AddTxdSlot("buttons");
- CTxdStore::LoadTxd(ButtonsSlot, "MODELS/X360BTNS.TXD");
+ if (ButtonsSlot == -1)
+ ButtonsSlot = CTxdStore::AddTxdSlot("buttons");
+ else {
+ for (int i = 0; i < MAX_BUTTON_ICONS; i++)
+ ButtonSprite[i].Delete();
+ CTxdStore::RemoveTxd(ButtonsSlot);
+ }
+ CTxdStore::LoadTxd(ButtonsSlot, txdPath);
CTxdStore::AddRef(ButtonsSlot);
CTxdStore::PushCurrentTxd();
CTxdStore::SetCurrentTxd(ButtonsSlot);
@@ -198,12 +213,22 @@ CFont::Initialise(void)
ButtonSprite[BUTTON_R1].SetTexture("r1");
ButtonSprite[BUTTON_R2].SetTexture("r2");
ButtonSprite[BUTTON_R3].SetTexture("r3");
+ ButtonSprite[BUTTON_RSTICK_UP].SetTexture("thumbryu");
+ ButtonSprite[BUTTON_RSTICK_DOWN].SetTexture("thumbryd");
ButtonSprite[BUTTON_RSTICK_LEFT].SetTexture("thumbrxl");
ButtonSprite[BUTTON_RSTICK_RIGHT].SetTexture("thumbrxr");
CTxdStore::PopCurrentTxd();
}
-#endif // BUTTON_ICONS
+ else {
+ if (ButtonsSlot != -1) {
+ for (int i = 0; i < MAX_BUTTON_ICONS; i++)
+ ButtonSprite[i].Delete();
+ CTxdStore::RemoveTxdSlot(ButtonsSlot);
+ ButtonsSlot = -1;
+ }
+ }
}
+#endif // BUTTON_ICONS
#ifdef MORE_LANGUAGES
void
@@ -257,6 +282,7 @@ CFont::Shutdown(void)
for (int i = 0; i < MAX_BUTTON_ICONS; i++)
ButtonSprite[i].Delete();
CTxdStore::RemoveTxdSlot(ButtonsSlot);
+ ButtonsSlot = -1;
}
#endif
Sprite[0].Delete();
@@ -296,16 +322,19 @@ CFont::DrawButton(float x, float y)
if (PS2Symbol != BUTTON_NONE) {
CRect rect;
rect.left = x;
- rect.top = Details.scaleY + Details.scaleY + y;
- rect.right = Details.scaleY * 17.0f + x;
- rect.bottom = Details.scaleY * 19.0f + y;
+ rect.top = RenderState.scaleY + RenderState.scaleY + y;
+ rect.right = RenderState.scaleY * 17.0f + x;
+ rect.bottom = RenderState.scaleY * 19.0f + y;
int vertexAlphaState;
void *raster;
RwRenderStateGet(rwRENDERSTATEVERTEXALPHAENABLE, &vertexAlphaState);
RwRenderStateGet(rwRENDERSTATETEXTURERASTER, &raster);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE);
- ButtonSprite[PS2Symbol].Draw(rect, CRGBA(255, 255, 255, Details.color.a));
+ if (RenderState.bIsShadow)
+ ButtonSprite[PS2Symbol].Draw(rect, RenderState.color);
+ else
+ ButtonSprite[PS2Symbol].Draw(rect, CRGBA(255, 255, 255, RenderState.color.a));
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, raster);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)vertexAlphaState);
}
@@ -455,7 +484,7 @@ CFont::RenderFontBuffer()
#ifdef BUTTON_ICONS
if(PS2Symbol != BUTTON_NONE) {
DrawButton(textPosX, textPosY);
- textPosX += Details.scaleY * 17.0f;
+ textPosX += RenderState.scaleY * 17.0f;
PS2Symbol = BUTTON_NONE;
}
#endif
@@ -1254,6 +1283,8 @@ CFont::ParseToken(wchar* str, CRGBA &color, bool &flash, bool &bold)
case 'J': PS2Symbol = BUTTON_R1; break;
case 'V': PS2Symbol = BUTTON_R2; break;
case 'C': PS2Symbol = BUTTON_R3; break;
+ case 'H': PS2Symbol = BUTTON_RSTICK_UP; break;
+ case 'L': PS2Symbol = BUTTON_RSTICK_DOWN; break;
case '(': PS2Symbol = BUTTON_RSTICK_LEFT; break;
case ')': PS2Symbol = BUTTON_RSTICK_RIGHT; break;
#endif
diff --git a/src/render/Font.h b/src/render/Font.h
index 4046ebb5..fdf5f3f2 100644
--- a/src/render/Font.h
+++ b/src/render/Font.h
@@ -114,6 +114,8 @@ enum
BUTTON_R1,
BUTTON_R2,
BUTTON_R3,
+ BUTTON_RSTICK_UP,
+ BUTTON_RSTICK_DOWN,
BUTTON_RSTICK_LEFT,
BUTTON_RSTICK_RIGHT,
MAX_BUTTON_ICONS
@@ -124,7 +126,7 @@ enum
class CFont
{
#ifdef MORE_LANGUAGES
- static int16 Size[LANGSET_MAX][MAX_FONTS][193];
+ static int16 Size[LANGSET_MAX][MAX_FONTS][210];
static uint8 LanguageSet;
static int32 Slot;
#else
@@ -140,7 +142,8 @@ public:
static int32 ButtonsSlot;
static CSprite2d ButtonSprite[MAX_BUTTON_ICONS];
static int PS2Symbol;
-
+
+ static void LoadButtons(const char *txdPath);
static void DrawButton(float x, float y);
#endif // BUTTON_ICONS
@@ -155,11 +158,11 @@ public:
#endif
static int GetNumberLines(float xstart, float ystart, wchar *s);
static void GetTextRect(CRect *rect, float xstart, float ystart, wchar *s);
-#ifdef MORE_LANGUAGES
- static bool PrintString(float x, float y, wchar *start, wchar* &end, float spwidth, float japX);
-#else
+//#ifdef MORE_LANGUAGES
+// static bool PrintString(float x, float y, wchar *start, wchar* &end, float spwidth, float japX);
+//#else
static void PrintString(float x, float y, uint32, wchar *start, wchar *end, float spwidth);
-#endif
+//#endif
static void PrintStringFromBottom(float x, float y, wchar *str);
static float GetCharacterWidth(wchar c, bool forceProportional = false);
static float GetCharacterSize(wchar c);
@@ -168,12 +171,12 @@ public:
static float GetStringWidth_Jap(wchar* s);
#endif
static uint16 *GetNextSpace(wchar *s);
-#ifdef MORE_LANGUAGES
- static uint16 *ParseToken(wchar *s, bool japShit = false);
-#else
+//#ifdef MORE_LANGUAGES
+// static uint16 *ParseToken(wchar *s, bool japShit = false);
+//#else
static uint16 *ParseToken(wchar *s);
static uint16 *ParseToken(wchar *s, CRGBA &color, bool &flash, bool &bold);
-#endif
+//#endif
static void DrawFonts(void);
static void RenderFontBuffer(void);
static uint16 character_code(uint8 c);
@@ -218,6 +221,6 @@ public:
static bool IsAnsiCharacter(wchar* s);
static bool IsJapanesePunctuation(wchar* str);
static bool IsJapanese() { return LanguageSet == FONT_LANGSET_JAPANESE; }
- static bool IsJapaneseFont() { return IsJapanese() && (Details.style == FONT_JAPANESE || Details.style == FONT_PAGER); }
+ static bool IsJapaneseFont() { return IsJapanese() && (Details.style == FONT_JAPANESE); }
#endif
};
diff --git a/src/render/Glass.cpp b/src/render/Glass.cpp
index c6d02755..3409a058 100644
--- a/src/render/Glass.cpp
+++ b/src/render/Glass.cpp
@@ -276,6 +276,8 @@ CGlass::Render(void)
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void *)rwBLENDONE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE);
+ PUSH_RENDERGROUP("CGlass::Render");
+
for ( int32 i = 0; i < NUM_GLASSPANES; i++ )
{
if ( aGlassPanes[i].m_bActive )
@@ -285,6 +287,8 @@ CGlass::Render(void)
for ( uint32 i = 0; i < NumGlassEntities; i++ )
RenderEntityInGlass(apEntitiesToBeRendered[i]);
+ POP_RENDERGROUP();
+
NumGlassEntities = 0;
RenderHiLightPolys();
diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp
index 12bfd040..2efa7b64 100644
--- a/src/render/Hud.cpp
+++ b/src/render/Hud.cpp
@@ -1107,18 +1107,18 @@ void CHud::Draw()
if (IntroRect.m_nTextureId >= 0) {
CRect rect (
IntroRect.m_sRect.left,
- IntroRect.m_sRect.top,
+ IntroRect.m_sRect.bottom,
IntroRect.m_sRect.right,
- IntroRect.m_sRect.bottom );
+ IntroRect.m_sRect.top );
CTheScripts::ScriptSprites[IntroRect.m_nTextureId].Draw(rect, IntroRect.m_sColor);
}
else {
CRect rect (
IntroRect.m_sRect.left,
- IntroRect.m_sRect.top,
+ IntroRect.m_sRect.bottom,
IntroRect.m_sRect.right,
- IntroRect.m_sRect.bottom );
+ IntroRect.m_sRect.top );
CSprite2d::DrawRect(rect, IntroRect.m_sColor);
}
@@ -1139,7 +1139,14 @@ void CHud::Draw()
CFont::SetBackgroundColor(CRGBA(0, 0, 0, 128));
CFont::SetCentreOn();
CFont::SetPropOn();
- CFont::SetDropShadowPosition(0);
+#ifdef CUTSCENE_BORDERS_SWITCH
+ if (!FrontEndMenuManager.m_PrefsCutsceneBorders) {
+ CFont::SetDropColor(CRGBA(0, 0, 0, 255));
+ CFont::SetDropShadowPosition(2);
+ }
+ else
+#endif
+ CFont::SetDropShadowPosition(0);
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
CFont::SetColor(CRGBA(225, 225, 225, 255));
@@ -1149,10 +1156,6 @@ void CHud::Draw()
onceItWasWidescreen = true;
if (FrontEndMenuManager.m_PrefsShowSubtitles || !CCutsceneMgr::IsRunning()) {
-#ifdef CUTSCENE_BORDERS_SWITCH
- if (!FrontEndMenuManager.m_PrefsCutsceneBorders)
- CFont::SetDropShadowPosition(0);
-#endif
CFont::SetCentreSize(SCREEN_WIDTH - SCREEN_SCALE_X(60.0f));
CFont::SetScale(SCREEN_SCALE_X(0.58f), SCREEN_SCALE_Y(1.2f));
CFont::PrintString(SCREEN_WIDTH / 2.f, SCREEN_SCALE_FROM_BOTTOM(80.0f), m_Message);
@@ -1191,7 +1194,7 @@ void CHud::Draw()
m_HelpMessageDisplayTime = CMessages::GetWideStringLength(m_HelpMessage) * 0.05f + 3.0f;
if (TheCamera.m_ScreenReductionPercentage == 0.0f)
- DMAudio.PlayFrontEndSound(SOUND_HUD_SOUND, 0);
+ DMAudio.PlayFrontEndSound(SOUND_HUD, 0);
break;
case 1:
case 2:
diff --git a/src/render/MBlur.cpp b/src/render/MBlur.cpp
index ab77bf9b..dc88164b 100644
--- a/src/render/MBlur.cpp
+++ b/src/render/MBlur.cpp
@@ -6,6 +6,7 @@
#include <d3d8caps.h>
#endif
+#include "main.h"
#include "General.h"
#include "RwHelper.h"
#include "Camera.h"
@@ -333,6 +334,7 @@ CMBlur::MotionBlurRender(RwCamera *cam, uint32 red, uint32 green, uint32 blue, u
#ifdef EXTENDED_COLOURFILTER
CPostFX::Render(cam, red, green, blue, blur, type, bluralpha);
#else
+ PUSH_RENDERGROUP("CMBlur::MotionBlurRender");
RwRGBA color = { (RwUInt8)red, (RwUInt8)green, (RwUInt8)blue, (RwUInt8)blur };
#ifdef GTA_PS2
if( pFrontBuffer )
@@ -348,6 +350,7 @@ CMBlur::MotionBlurRender(RwCamera *cam, uint32 red, uint32 green, uint32 blue, u
RwRasterPopContext();
}
#endif
+ POP_RENDERGROUP();
#endif
}
diff --git a/src/render/Occlusion.cpp b/src/render/Occlusion.cpp
index 3ea5678c..ec7101a6 100644
--- a/src/render/Occlusion.cpp
+++ b/src/render/Occlusion.cpp
@@ -513,8 +513,8 @@ bool CEntity::IsEntityOccluded(void) {
}
if (COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) {
- CVector min = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.min;
- CVector max = m_matrix * CModelInfo::GetModelInfo(GetModelIndex())->GetColModel()->boundingBox.max;
+ CVector min = m_matrix * CModelInfo::GetColModel(m_modelIndex)->boundingBox.min;
+ CVector max = m_matrix * CModelInfo::GetColModel(m_modelIndex)->boundingBox.max;
if (CalcScreenCoors(min, &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
if (CalcScreenCoors(CVector(max.x, max.y, min.z), &coors) && !COcclusion::aActiveOccluders[i].IsPointWithinOcclusionArea(coors.x, coors.y, 0.0f)) continue;
diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp
index 660ed5c2..2e709f42 100644
--- a/src/render/Particle.cpp
+++ b/src/render/Particle.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "General.h"
#include "Timer.h"
#include "TxdStore.h"
@@ -50,6 +51,8 @@
#define MAX_RAINDRIP_FILES (2)
+#define MAX_LEAF_FILES (2)
+
const char SmokeFiles[][6+1] =
{
@@ -166,7 +169,7 @@ RwTexture *gpFlame1Tex;
RwTexture *gpFlame5Tex;
RwTexture *gpRainDropSmallTex;
RwTexture *gpBloodTex;
-RwTexture *gpLeafTex;
+RwTexture *gpLeafTex[MAX_LEAF_FILES];
RwTexture *gpCloudTex1;
RwTexture *gpCloudTex4;
RwTexture *gpBloodSmallTex;
@@ -194,7 +197,7 @@ RwRaster *gpFlame1Raster;
RwRaster *gpFlame5Raster;
RwRaster *gpRainDropSmallRaster;
RwRaster *gpBloodRaster;
-RwRaster *gpLeafRaster;
+RwRaster *gpLeafRaster[MAX_LEAF_FILES];
RwRaster *gpCloudRaster1;
RwRaster *gpCloudRaster4;
RwRaster *gpBloodSmallRaster;
@@ -207,9 +210,6 @@ RwRaster *gpPointlightRaster;
RwTexture *gpRainDropTex;
RwRaster *gpRainDropRaster;
-RwTexture *gpLetterTex;
-RwRaster *gpLetterRaster;
-
RwTexture *gpSparkTex;
RwTexture *gpNewspaperTex;
RwTexture *gpGunSmokeTex;
@@ -430,13 +430,13 @@ void CParticle::Initialise()
ASSERT(gpBloodTex != nil);
gpBloodRaster = RwTextureGetRaster(gpBloodTex);
- gpLeafTex = RwTextureRead("gameleaf01_64", nil);
- ASSERT(gpLeafTex != nil);
- gpLeafRaster = RwTextureGetRaster(gpLeafTex);
+ gpLeafTex[0] = RwTextureRead("gameleaf01_64", nil);
+ ASSERT(gpLeafTex[0] != nil);
+ gpLeafRaster[0] = RwTextureGetRaster(gpLeafTex[0]);
- gpLetterTex = RwTextureRead("letter", nil);
- ASSERT(gpLetterTex != nil);
- gpLetterRaster = RwTextureGetRaster(gpLetterTex);
+ gpLeafTex[1] = RwTextureRead("letter", nil);
+ ASSERT(gpLeafTex[1] != nil);
+ gpLeafRaster[1] = RwTextureGetRaster(gpLeafTex[1]);
gpCloudTex1 = RwTextureRead("cloud3", nil);
ASSERT(gpCloudTex1 != nil);
@@ -555,7 +555,7 @@ void CParticle::Initialise()
break;
case PARTICLE_DEBRIS:
- entry->m_ppRaster = &gpLeafRaster;
+ entry->m_ppRaster = gpLeafRaster;
break;
case PARTICLE_DEBRIS2:
@@ -750,7 +750,7 @@ void CParticle::Initialise()
break;
case PARTICLE_TREE_LEAVES:
- entry->m_ppRaster = &gpLeafRaster;
+ entry->m_ppRaster = gpLeafRaster;
break;
case PARTICLE_CARCOLLISION_DUST:
@@ -929,11 +929,11 @@ void CParticle::Shutdown()
RwTextureDestroy(gpBloodTex);
gpBloodTex = nil;
- RwTextureDestroy(gpLeafTex);
- gpLeafTex = nil;
+ RwTextureDestroy(gpLeafTex[0]);
+ gpLeafTex[0] = nil;
- RwTextureDestroy(gpLetterTex);
- gpLetterTex = nil;
+ RwTextureDestroy(gpLeafTex[1]);
+ gpLeafTex[1] = nil;
RwTextureDestroy(gpCloudTex1);
gpCloudTex1 = nil;
@@ -1750,6 +1750,8 @@ void CParticle::Update()
void CParticle::Render()
{
+ PUSH_RENDERGROUP("CParticle::Render");
+
RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void *)rwTEXTUREADDRESSWRAP);
RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE);
@@ -2106,6 +2108,8 @@ void CParticle::Render()
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void *)rwBLENDSRCALPHA);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void *)rwBLENDINVSRCALPHA);
+
+ POP_RENDERGROUP();
}
void CParticle::RemovePSystem(tParticleType type)
diff --git a/src/render/ParticleMgr.cpp b/src/render/ParticleMgr.cpp
index 263c4ae1..04f42c82 100644
--- a/src/render/ParticleMgr.cpp
+++ b/src/render/ParticleMgr.cpp
@@ -17,12 +17,12 @@ cParticleSystemMgr::cParticleSystemMgr()
#endif
}
+#ifdef FIX_BUGS
cParticleSystemMgr::~cParticleSystemMgr()
{
-#ifdef FIX_BUGS
delete [] m_aParticles;
-#endif
}
+#endif
void cParticleSystemMgr::Initialise()
{
diff --git a/src/render/PointLights.cpp b/src/render/PointLights.cpp
index 3e73c57f..13872401 100644
--- a/src/render/PointLights.cpp
+++ b/src/render/PointLights.cpp
@@ -159,6 +159,8 @@ CPointLights::RenderFogEffect(void)
if(CCutsceneMgr::IsRunning())
return;
+ PUSH_RENDERGROUP("CPointLights::RenderFogEffect");
+
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE);
@@ -302,6 +304,8 @@ CPointLights::RenderFogEffect(void)
}
CSprite::FlushSpriteBuffer();
+
+ POP_RENDERGROUP();
}
bool
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 65fec400..85c52032 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -135,8 +135,13 @@ CRenderer::RenderOneRoad(CEntity *e)
return;
if(gbShowCollisionPolys)
CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex());
- else
+ else{
+ PUSH_RENDERGROUP(CModelInfo::GetModelInfo(e->GetModelIndex())->GetModelName());
+
e->Render();
+
+ POP_RENDERGROUP();
+ }
}
void
@@ -183,6 +188,8 @@ CRenderer::RenderOneNonRoad(CEntity *e)
}
#endif
+ PUSH_RENDERGROUP(CModelInfo::GetModelInfo(e->GetModelIndex())->GetModelName());
+
resetLights = e->SetupLighting();
if(e->IsVehicle()){
@@ -211,6 +218,8 @@ CRenderer::RenderOneNonRoad(CEntity *e)
}
e->RemoveLighting(resetLights);
+
+ POP_RENDERGROUP();
}
void
@@ -236,6 +245,7 @@ CRenderer::RenderRoads(void)
int i;
CEntity *e;
+ PUSH_RENDERGROUP("CRenderer::RenderRoads");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
@@ -247,6 +257,7 @@ CRenderer::RenderRoads(void)
if(IsRoad(e))
RenderOneRoad(e);
}
+ POP_RENDERGROUP();
}
inline bool PutIntoSortedVehicleList(CVehicle *veh)
@@ -269,6 +280,7 @@ CRenderer::RenderEverythingBarRoads(void)
CEntity *e;
EntityInfo ei;
+ PUSH_RENDERGROUP("CRenderer::RenderEverythingBarRoads");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
@@ -300,6 +312,7 @@ CRenderer::RenderEverythingBarRoads(void)
}else
RenderOneNonRoad(e);
}
+ POP_RENDERGROUP();
}
void
@@ -307,6 +320,7 @@ CRenderer::RenderBoats(void)
{
CLink<EntityInfo> *node;
+ PUSH_RENDERGROUP("CRenderer::RenderBoats");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
@@ -335,6 +349,7 @@ CRenderer::RenderBoats(void)
CVehicle *v = (CVehicle*)node->item.ent;
RenderOneNonRoad(v);
}
+ POP_RENDERGROUP();
}
#ifdef NEW_RENDERER
@@ -438,6 +453,7 @@ CRenderer::RenderWorld(int pass)
switch(pass){
case 0:
// Roads
+ PUSH_RENDERGROUP("CRenderer::RenderWorld - Roads");
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
for(i = 0; i < ms_nNoOfVisibleBuildings; i++){
e = ms_aVisibleBuildingPtrs[i];
@@ -451,9 +467,11 @@ CRenderer::RenderWorld(int pass)
if(e->bIsBIGBuilding || IsRoad(e))
RenderOneBuilding(e, node->item.sort);
}
+ POP_RENDERGROUP();
break;
case 1:
// Opaque
+ PUSH_RENDERGROUP("CRenderer::RenderWorld - Opaque");
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
for(i = 0; i < ms_nNoOfVisibleBuildings; i++){
e = ms_aVisibleBuildingPtrs[i];
@@ -474,14 +492,17 @@ CRenderer::RenderWorld(int pass)
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
WorldRender::RenderBlendPass(PASS_NOZ);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
+ POP_RENDERGROUP();
break;
case 2:
// Transparent
+ PUSH_RENDERGROUP("CRenderer::RenderWorld - Transparent");
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE);
WorldRender::RenderBlendPass(PASS_ADD);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
WorldRender::RenderBlendPass(PASS_BLEND);
+ POP_RENDERGROUP();
break;
}
}
@@ -492,11 +513,13 @@ CRenderer::RenderPeds(void)
int i;
CEntity *e;
+ PUSH_RENDERGROUP("CRenderer::RenderPeds");
for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
e = ms_aVisibleVehiclePtrs[i];
if(e->IsPed())
RenderOneNonRoad(e);
}
+ POP_RENDERGROUP();
}
void
@@ -507,6 +530,7 @@ CRenderer::RenderVehicles(void)
EntityInfo ei;
CLink<EntityInfo> *node;
+ PUSH_RENDERGROUP("CRenderer::RenderVehicles");
// not the real thing
for(i = 0; i < ms_nNoOfVisibleVehicles; i++){
e = ms_aVisibleVehiclePtrs[i];
@@ -525,6 +549,7 @@ CRenderer::RenderVehicles(void)
RenderOneNonRoad(node->item.ent);
CFerry::RenderAllRemaning();
+ POP_RENDERGROUP();
}
void
@@ -533,6 +558,7 @@ CRenderer::RenderTransparentWater(void)
int i;
CEntity *e;
+ PUSH_RENDERGROUP("CRenderer::RenderTransparentWater");
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
@@ -556,6 +582,7 @@ CRenderer::RenderTransparentWater(void)
CWaterLevel::RenderTransparentWater();
SetStencilState(0);
+ POP_RENDERGROUP();
}
void
@@ -576,20 +603,24 @@ CRenderer::ClearForFrame(void)
void
CRenderer::RenderFadingInEntities(void)
{
+ PUSH_RENDERGROUP("CRenderer::RenderFadingInEntities");
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
SetCullMode(rwCULLMODECULLBACK);
DeActivateDirectional();
SetAmbientColours();
CVisibilityPlugins::RenderFadingEntities();
+ POP_RENDERGROUP();
}
void
CRenderer::RenderFadingInUnderwaterEntities(void)
{
+ PUSH_RENDERGROUP("CRenderer::RenderFadingInUnderwaterEntities");
DeActivateDirectional();
SetAmbientColours();
CVisibilityPlugins::RenderFadingUnderwaterEntities();
+ POP_RENDERGROUP();
}
void
@@ -1401,6 +1432,10 @@ CRenderer::ScanSectorPoly(RwV2d *poly, int32 numVertices, void (*scanfunc)(CPtrL
void
CRenderer::InsertEntityIntoList(CEntity *ent)
{
+#ifdef FIX_BUGS
+ if (!ent->m_rwObject) return;
+#endif
+
#ifdef NEW_RENDERER
// TODO: there are more flags being checked here
if(gbNewRenderer && (ent->IsVehicle() || ent->IsPed()))
diff --git a/src/render/Rubbish.cpp b/src/render/Rubbish.cpp
index bd69f875..147c97b1 100644
--- a/src/render/Rubbish.cpp
+++ b/src/render/Rubbish.cpp
@@ -54,6 +54,8 @@ CRubbish::Render(void)
if(RubbishVisibility == 0)
return;
+ PUSH_RENDERGROUP("CRubbish::Render");
+
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE);
@@ -150,6 +152,8 @@ CRubbish::Render(void)
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
+
+ POP_RENDERGROUP();
}
void
diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp
index ba902bae..ae4cf724 100644
--- a/src/render/Shadows.cpp
+++ b/src/render/Shadows.cpp
@@ -28,8 +28,8 @@
#include "VarConsole.h"
#ifdef DEBUGMENU
-SETTWEAKPATH("Shadows");
-TWEAKBOOL(gbPrintShite);
+//SETTWEAKPATH("Shadows");
+//TWEAKBOOL(gbPrintShite);
#endif
RwImVertexIndex ShadowIndexList[24];
@@ -1068,6 +1068,8 @@ CShadows::SetRenderModeForShadowType(uint8 ShadowType)
void
CShadows::RenderStoredShadows(void)
{
+ PUSH_RENDERGROUP("CShadows::RenderStoredShadows");
+
RenderBuffer::ClearRenderBuffer();
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)FALSE);
@@ -1241,12 +1243,16 @@ CShadows::RenderStoredShadows(void)
RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void *)rwTEXTUREADDRESSWRAP);
ShadowsStoredToBeRendered = 0;
+
+ POP_RENDERGROUP();
}
void
CShadows::RenderStaticShadows(void)
{
+ PUSH_RENDERGROUP("CShadows::RenderStaticShadows");
+
RenderBuffer::ClearRenderBuffer();
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)FALSE);
@@ -1313,6 +1319,8 @@ CShadows::RenderStaticShadows(void)
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)TRUE);
+
+ POP_RENDERGROUP();
}
@@ -1398,7 +1406,7 @@ CShadows::CastShadowSectorList(CPtrList &PtrList, float fStartX, float fStartY,
{
pEntity->m_scanCode = CWorld::GetCurrentScanCode();
- if ( pEntity->bUsesCollision && !pEntity->m_flagE2 )
+ if ( pEntity->bUsesCollision && !pEntity->bDontCastShadowsOn)
{
if ( IsAreaVisible(pEntity->m_area) )
{
diff --git a/src/render/Skidmarks.cpp b/src/render/Skidmarks.cpp
index 07039c17..08df330d 100644
--- a/src/render/Skidmarks.cpp
+++ b/src/render/Skidmarks.cpp
@@ -96,6 +96,8 @@ CSkidmarks::Render(void)
{
int i, j;
+ PUSH_RENDERGROUP("CSkidmarks::Render");
+
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
@@ -152,6 +154,8 @@ CSkidmarks::Render(void)
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
+
+ POP_RENDERGROUP();
}
void
diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp
index 161bf168..e27a783e 100644
--- a/src/render/SpecialFX.cpp
+++ b/src/render/SpecialFX.cpp
@@ -164,6 +164,7 @@ CSpecialFX::Shutdown(void)
void
CSpecialFX::Render(void)
{
+ PUSH_RENDERGROUP("CSpecialFX::Render");
CMotionBlurStreaks::Render();
CBulletTraces::Render();
CBrightLights::Render();
@@ -173,6 +174,7 @@ CSpecialFX::Render(void)
if(!(gbNewRenderer && FredIsInFirstPersonCam()))
#endif
C3dMarkers::Render();
+ POP_RENDERGROUP();
}
void
diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp
index 65d8b388..4aaa8d6f 100644
--- a/src/render/WaterCannon.cpp
+++ b/src/render/WaterCannon.cpp
@@ -266,7 +266,7 @@ void CWaterCannon::PushPeds(void)
ped->m_vecMoveSpeed.x *= (0.2f / pedSpeed2D);
ped->m_vecMoveSpeed.y *= (0.2f / pedSpeed2D);
}
- ped->SetFall(2000, (AnimationId)(localDir + ANIM_KO_SKID_FRONT), 0);
+ ped->SetFall(2000, (AnimationId)(localDir + ANIM_STD_HIGHIMPACT_FRONT), 0);
CParticle::AddParticle(PARTICLE_STEAM_NY_SLOWMOTION, ped->GetPosition(), ped->m_vecMoveSpeed * 0.3f, 0, 0.5f);
CParticle::AddParticle(PARTICLE_CAR_SPLASH, ped->GetPosition(), ped->m_vecMoveSpeed * -0.3f + CVector(0.f, 0.f, 0.5f), 0, 0.5f,
CGeneral::GetRandomNumberInRange(0.f, 10.f), CGeneral::GetRandomNumberInRange(0.f, 90.f), 1);
@@ -331,9 +331,11 @@ void CWaterCannons::Update(void)
void CWaterCannons::Render(void)
{
+ PUSH_RENDERGROUP("CWaterCannons::Render");
for ( int32 i = 0; i < NUM_WATERCANNONS; i++ )
{
if ( aCannons[i].m_nId != 0 )
aCannons[i].Render();
}
+ POP_RENDERGROUP();
}
diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp
index 6247c611..759a3595 100644
--- a/src/render/WaterLevel.cpp
+++ b/src/render/WaterLevel.cpp
@@ -73,7 +73,7 @@ RwRaster *gpWaterEnvBaseRaster;
RwRaster *gpWaterWakeRaster;
bool _bSeaLife;
-float _fWaterZOffset = 0.5f;
+float _fWaterZOffset = WATER_Z_OFFSET;
#ifdef PC_WATER
float fEnvScale = 0.25f;
@@ -318,6 +318,7 @@ CWaterLevel::Shutdown()
_DELETE_TEXTURE(gpWaterTex);
_DELETE_TEXTURE(gpWaterEnvTex);
+ _DELETE_TEXTURE(gpWaterWakeTex);
_DELETE_TEXTURE(gpWaterEnvBaseTex);
#undef _DELETE_TEXTURE
@@ -610,14 +611,14 @@ CWaterLevel::TestVisibilityForFineWaterBlocks(const CVector &worldPos)
if ((lineEnd.x > WORLD_MIN_X && lineEnd.x < WORLD_MAX_X) && (lineEnd.y > WORLD_MIN_Y && lineEnd.y < WORLD_MAX_Y))
{
- if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, nil))
+ if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false))
{
lineStart.x += 0.4f;
lineStart.y += 0.4f;
lineEnd.x += 0.4f;
lineEnd.y += 0.4f;
- if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, nil))
+ if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false))
{
return false;
}
@@ -714,9 +715,9 @@ CWaterLevel::GetWaterLevel(float fX, float fY, float fZ, float *pfOutLevel, bool
if ( y < 0 || y >= MAX_SMALL_SECTORS ) return false;
#endif
- uint8 nBlock = aWaterFineBlockList[x][y];
+ int8 nBlock = aWaterFineBlockList[x][y];
- if ( nBlock == 0x80 )
+ if ( nBlock == NO_WATER )
return false;
ASSERT( pfOutLevel != nil );
@@ -756,9 +757,9 @@ CWaterLevel::GetWaterLevelNoWaves(float fX, float fY, float fZ, float *pfOutLeve
if ( y < 0 || y >= MAX_SMALL_SECTORS ) return false;
#endif
- uint8 nBlock = aWaterFineBlockList[x][y];
+ int8 nBlock = aWaterFineBlockList[x][y];
- if ( nBlock == 0x80 )
+ if ( nBlock == NO_WATER )
return false;
ASSERT( pfOutLevel != nil );
@@ -1013,7 +1014,7 @@ CWaterLevel::RenderWater()
if ( fHugeSectorMaxRenderDistSqr > fHugeSectorDistToCamSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE)) )
{
#ifndef PC_WATER
WavesCalculatedThisFrame = true;
@@ -1076,7 +1077,7 @@ CWaterLevel::RenderWater()
{
for ( int32 y = 0; y < 5; y++ )
{
- float fX = WATER_SIGN_X(float(x) * EXTRAHUGE_SECTOR_SIZE) - 1280.0f - 400.0f;
+ float fX = WATER_SIGN_X(float(x) * EXTRAHUGE_SECTOR_SIZE) - 1280.0f - WATER_X_OFFSET;
float fY = WATER_SIGN_Y(float(y) * EXTRAHUGE_SECTOR_SIZE) - 1280.0f;
if ( !bUseCamStartY )
@@ -1087,7 +1088,7 @@ CWaterLevel::RenderWater()
if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) )
{
RenderOneFlatExtraHugeWaterPoly(
vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2,
@@ -1106,7 +1107,7 @@ CWaterLevel::RenderWater()
if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) )
{
RenderOneFlatExtraHugeWaterPoly(
vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2,
@@ -1135,7 +1136,7 @@ CWaterLevel::RenderWater()
if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) )
{
RenderOneFlatExtraHugeWaterPoly(
vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2,
@@ -1154,7 +1155,7 @@ CWaterLevel::RenderWater()
if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.x, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.x, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) )
{
RenderOneFlatExtraHugeWaterPoly(
vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2,
@@ -1201,6 +1202,8 @@ CWaterLevel::RenderTransparentWater(void)
if ( !CGame::CanSeeWaterFromCurrArea() )
return;
+ PUSH_RENDERGROUP("CWaterLevel::RenderTransparentWater");
+
float fWaterDrawDist = _GetWavyDrawDist();
float fWaterDrawDistLarge = fWaterDrawDist + 90.0f;
float fWavySectorMaxRenderDistSqr = SQR(fWaterDrawDist);
@@ -1284,7 +1287,7 @@ CWaterLevel::RenderTransparentWater(void)
if ( fHugeSectorMaxRenderDistSqr > fHugeSectorDistToCamSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE)) )
{
if ( fHugeSectorDistToCamSqr >= SQR(500.0f) )
{
@@ -1308,7 +1311,7 @@ CWaterLevel::RenderTransparentWater(void)
if ( fLargeSectorDistToCamSqr < fHugeSectorMaxRenderDistSqr )
{
- if ( TheCamera.IsSphereVisible(CVector(vecLargeSectorCentre.x, vecLargeSectorCentre.y, 0.0f), SectorRadius(LARGE_SECTOR_SIZE), &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(CVector(vecLargeSectorCentre.x, vecLargeSectorCentre.y, 0.0f), SectorRadius(LARGE_SECTOR_SIZE)) )
{
// Render four small(32x32) sectors, or one large(64x64).
@@ -1462,7 +1465,7 @@ CWaterLevel::RenderTransparentWater(void)
int32 nBlock;
- int32 BlockX = WATER_TO_SMALL_SECTOR_X(fCamX + 400.0f) + 1;
+ int32 BlockX = WATER_TO_SMALL_SECTOR_X(fCamX + WATER_X_OFFSET) + 1;
int32 BlockY = WATER_TO_SMALL_SECTOR_Y(fCamY) + 1;
if (_IsColideWithBlock(BlockX, BlockY, nBlock))
@@ -1472,7 +1475,7 @@ CWaterLevel::RenderTransparentWater(void)
float fMaskX = Floor(fCamX / 2.0f) * 2.0f;
float fMaskY = Floor(fCamY / 2.0f) * 2.0f;
float fWaterZ = CWaterLevel::ms_aWaterZs[nBlock];
- float fSectorX = WATER_FROM_SMALL_SECTOR_X(BlockX) - 400.0f;
+ float fSectorX = WATER_FROM_SMALL_SECTOR_X(BlockX) - WATER_X_OFFSET;
float fSectorY = WATER_FROM_SMALL_SECTOR_Y(BlockY);
RenderWavyMask(fMaskX, fMaskY, fWaterZ,
@@ -1484,6 +1487,8 @@ CWaterLevel::RenderTransparentWater(void)
DefinedState();
#endif
+
+ POP_RENDERGROUP();
}
void CWaterLevel::RenderOneFlatSmallWaterPoly(float fX, float fY, float fZ, RwRGBA const &color)
@@ -3193,7 +3198,7 @@ CWaterLevel::HandleBeachToysStuff(void)
vecPos.x += (fCos - fSin) * fAngle;
vecPos.y += (fSin + fCos) * fAngle;
- if ( TheCamera.IsSphereVisible(vecPos, 1.0f, &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(vecPos, 1.0f) )
{
float fWaterLevel;
@@ -3237,7 +3242,7 @@ CWaterLevel::HandleBeachToysStuff(void)
vecPos.x += (fCos - fSin) * fAngle;
vecPos.y += (fSin + fCos) * fAngle;
- if ( TheCamera.IsSphereVisible(vecPos, 2.0f, &TheCamera.GetCameraMatrix()) )
+ if ( TheCamera.IsSphereVisible(vecPos, 2.0f) )
{
float fWaterLevel;
diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp
index 65343a61..8718e1c6 100644
--- a/src/render/Weather.cpp
+++ b/src/render/Weather.cpp
@@ -142,7 +142,7 @@ void CWeather::Init(void)
ForcedWeatherType = WEATHER_RANDOM;
SoundHandle = DMAudio.CreateEntity(AUDIOTYPE_WEATHER, (void*)1);
if (SoundHandle >= 0)
- DMAudio.SetEntityStatus(SoundHandle, true);
+ DMAudio.SetEntityStatus(SoundHandle, TRUE);
}
void CWeather::Update(void)
diff --git a/src/rw/MemoryMgr.cpp b/src/rw/MemoryMgr.cpp
index 2379692c..b9cff043 100644
--- a/src/rw/MemoryMgr.cpp
+++ b/src/rw/MemoryMgr.cpp
@@ -28,10 +28,10 @@ RwMemoryFunctions memFuncs = {
#ifdef USE_CUSTOM_ALLOCATOR
// game seems to be using heap directly here, but this is nicer
-void *operator new(size_t sz) { return MemoryMgrMalloc(sz); }
-void *operator new[](size_t sz) { return MemoryMgrMalloc(sz); }
-void operator delete(void *ptr) noexcept { MemoryMgrFree(ptr); }
-void operator delete[](void *ptr) noexcept { MemoryMgrFree(ptr); }
+void *operator new(size_t sz) throw() { return MemoryMgrMalloc(sz); }
+void *operator new[](size_t sz) throw() { return MemoryMgrMalloc(sz); }
+void operator delete(void *ptr) throw() { MemoryMgrFree(ptr); }
+void operator delete[](void *ptr) throw() { MemoryMgrFree(ptr); }
#endif
void*
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index 186ed870..6021b866 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -4,11 +4,13 @@
#include "Timecycle.h"
#include "skeleton.h"
#include "Debug.h"
+#include "MBlur.h"
#if !defined(FINAL) || defined(DEBUGMENU)
#include "rtcharse.h"
#endif
#ifndef FINAL
RtCharset *debugCharset;
+bool bDebugRenderGroups;
#endif
#ifdef PS2_ALPHA_TEST
@@ -102,6 +104,36 @@ SetCullMode(uint32 mode)
RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE);
}
+#ifndef FINAL
+void
+PushRendergroup(const char *name)
+{
+ if(!bDebugRenderGroups)
+ return;
+#if defined(RW_OPENGL)
+ if(GLAD_GL_KHR_debug)
+ glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name);
+#elif defined(RW_D3D9)
+ static WCHAR tmp[256];
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, tmp, sizeof(tmp));
+ D3DPERF_BeginEvent(0xFFFFFFFF, tmp);
+#endif
+}
+
+void
+PopRendergroup(void)
+{
+ if(!bDebugRenderGroups)
+ return;
+#if defined(RW_OPENGL)
+ if(GLAD_GL_KHR_debug)
+ glPopDebugGroup();
+#elif defined(RW_D3D9)
+ D3DPERF_EndEvent();
+#endif
+}
+#endif
+
RwFrame*
GetFirstFrameCallback(RwFrame *child, void *data)
{
@@ -549,6 +581,12 @@ CameraSize(RwCamera * camera, RwRect * rect,
raster->width = zRaster->width = rect->w;
raster->height = zRaster->height = rect->h;
#endif
+#ifdef FIX_BUGS
+ if(CMBlur::BlurOn){
+ CMBlur::MotionBlurClose();
+ CMBlur::MotionBlurOpen(camera);
+ }
+#endif
}
/* Figure out the view window */
diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h
index 9352d1fd..a3a1928c 100644
--- a/src/rw/RwHelper.h
+++ b/src/rw/RwHelper.h
@@ -1,5 +1,6 @@
#pragma once
+extern bool bDebugRenderGroups;
extern bool gPS2alphaTest;
extern bool gBackfaceCulling;
diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp
index 632cec02..1f96180b 100644
--- a/src/rw/TexRead.cpp
+++ b/src/rw/TexRead.cpp
@@ -1,6 +1,7 @@
#pragma warning( push )
#pragma warning( disable : 4005)
#pragma warning( pop )
+#define FORCE_PC_SCALING
#ifndef LIBRW
#define WITHD3D
#endif
@@ -320,7 +321,11 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255));
CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), SCREEN_SCALE_FROM_RIGHT(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(64, 64, 64, 255));
+#ifdef FIX_BUGS
+ CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 150, 225, 255));
+#else
CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 217, 106, 255));
+#endif
CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(120.0f), SCREEN_SCALE_Y(150.0f), SCREEN_SCALE_FROM_RIGHT(120.0f), SCREEN_HEIGHT - SCREEN_SCALE_Y(220.0f)), CRGBA(50, 50, 50, 210));
CFont::SetBackgroundOff();
@@ -329,7 +334,11 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
CFont::SetCentreOff();
CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f));
CFont::SetJustifyOff();
+#ifdef FIX_BUGS
+ CFont::SetColor(CRGBA(255, 150, 225, 255));
+#else
CFont::SetColor(CRGBA(255, 217, 106, 255));
+#endif
CFont::SetBackGroundOnlyTextOff();
CFont::SetFontStyle(FONT_STANDARD);
CFont::PrintString(SCREEN_SCALE_X(170.0f), SCREEN_SCALE_Y(160.0f), TheText.Get(text));
diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp
index 754c8778..ffd7b18a 100644
--- a/src/rw/VisibilityPlugins.cpp
+++ b/src/rw/VisibilityPlugins.cpp
@@ -96,6 +96,10 @@ CVisibilityPlugins::InitAlphaEntityList(void)
bool
CVisibilityPlugins::InsertEntityIntoSortedList(CEntity *e, float dist)
{
+#ifdef FIX_BUGS
+ if (!e->m_rwObject) return true;
+#endif
+
AlphaObjectInfo item;
item.entity = e;
item.sort = dist;
@@ -229,7 +233,9 @@ CVisibilityPlugins::RenderFadingEntities(CLinkList<AlphaObjectInfo> &list)
DeActivateDirectional();
SetAmbientColours();
e->bImBeingRendered = true;
+ PUSH_RENDERGROUP(mi->GetModelName());
RenderFadingAtomic((RpAtomic*)e->m_rwObject, node->item.sort);
+ POP_RENDERGROUP();
e->bImBeingRendered = false;
}else
CRenderer::RenderOneNonRoad(e);
@@ -821,9 +827,9 @@ CVisibilityPlugins::PluginAttach(void)
return ms_atomicPluginOffset != -1 && ms_clumpPluginOffset != -1;
}
-#define ATOMICEXT(o) (RWPLUGINOFFSET(AtomicExt, o, ms_atomicPluginOffset))
-#define FRAMEEXT(o) (RWPLUGINOFFSET(FrameExt, o, ms_framePluginOffset))
-#define CLUMPEXT(o) (RWPLUGINOFFSET(ClumpExt, o, ms_clumpPluginOffset))
+#define ATOMICEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::AtomicExt, o, CVisibilityPlugins::ms_atomicPluginOffset))
+#define FRAMEEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::FrameExt, o, CVisibilityPlugins::ms_framePluginOffset))
+#define CLUMPEXT(o) (RWPLUGINOFFSET(CVisibilityPlugins::ClumpExt, o, CVisibilityPlugins::ms_clumpPluginOffset))
//
// Atomic
@@ -833,6 +839,7 @@ void*
CVisibilityPlugins::AtomicConstructor(void *object, int32, int32)
{
ATOMICEXT(object)->modelInfo = nil;
+ ATOMICEXT(object)->distanceAlpha = 255;
return object;
}
@@ -985,3 +992,56 @@ CVisibilityPlugins::GetClumpAlpha(RpClump *clump)
{
return CLUMPEXT(clump)->alpha;
}
+
+// LCS walks the atomic list manually but we want to be compatible with both RW and librw,
+// so this code isn't quite original and uses callbacks instead.
+static RpAtomic*
+SetAtomicDistanceAlphaCB(RpAtomic *atomic, void *data)
+{
+ ATOMICEXT(atomic)->distanceAlpha = *(int*)data;
+ return atomic;
+}
+void
+CVisibilityPlugins::SetClumpDistanceAlpha(RpClump *clump, int alpha)
+{
+ RpClumpForAllAtomics(clump, SetAtomicDistanceAlphaCB, &alpha);
+}
+
+static RpAtomic*
+GetAtomicDistanceAlphaCB(RpAtomic *atomic, void *data)
+{
+ *(int*)data = ATOMICEXT(atomic)->distanceAlpha;
+ return atomic;
+}
+int
+CVisibilityPlugins::GetClumpDistanceAlpha(RpClump *clump)
+{
+ int alpha = 255;
+ RpClumpForAllAtomics(clump, GetAtomicDistanceAlphaCB, &alpha);
+ return alpha;
+}
+
+
+
+
+void
+CVisibilityPlugins::SetObjectDistanceAlpha(RwObject *object, int alpha)
+{
+ if(object == nil)
+ return;
+ if(RwObjectGetType(object) == rpATOMIC)
+ ATOMICEXT(object)->distanceAlpha = alpha;
+ else
+ SetClumpDistanceAlpha((RpClump*)object, alpha);
+}
+
+int
+CVisibilityPlugins::GetObjectDistanceAlpha(RwObject *object)
+{
+ if(object == nil)
+ return 255;
+ if(RwObjectGetType(object) == rpATOMIC)
+ return ATOMICEXT(object)->distanceAlpha;
+ else
+ return GetClumpDistanceAlpha((RpClump*)object);
+}
diff --git a/src/rw/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h
index f188096c..3a3e555b 100644
--- a/src/rw/VisibilityPlugins.h
+++ b/src/rw/VisibilityPlugins.h
@@ -97,10 +97,13 @@ public:
// RW Plugins
//
- union AtomicExt
+ struct AtomicExt
{
- CSimpleModelInfo *modelInfo; // used by SimpleModelInfo
- int flags; // used by ClumpModelInfo
+ union {
+ CSimpleModelInfo *modelInfo; // used by SimpleModelInfo
+ int flags; // used by ClumpModelInfo
+ };
+ int distanceAlpha; // not sure where this is in PS2/PSP LCS
};
static void SetAtomicModelInfo(RpAtomic*, CSimpleModelInfo*);
static CSimpleModelInfo *GetAtomicModelInfo(RpAtomic *atomic);
@@ -129,7 +132,6 @@ public:
int32 offset, int32 len);
static int32 ms_framePluginOffset;
- // Not actually used
struct ClumpExt
{
ClumpVisibilityCB visibilityCB;
@@ -138,6 +140,8 @@ public:
static void SetClumpModelInfo(RpClump*, CClumpModelInfo*);
static void SetClumpAlpha(RpClump*, int);
static int GetClumpAlpha(RpClump*);
+ static void SetClumpDistanceAlpha(RpClump*, int);
+ static int GetClumpDistanceAlpha(RpClump*);
static void *ClumpConstructor(void *object, int32 offset, int32 len);
static void *ClumpDestructor(void *object, int32 offset, int32 len);
@@ -145,6 +149,9 @@ public:
int32 offset, int32 len);
static int32 ms_clumpPluginOffset;
+ static void SetObjectDistanceAlpha(RwObject *object, int alpha);
+ static int GetObjectDistanceAlpha(RwObject *object);
+
static bool PluginAttach(void);
};
diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp
index e0a989de..0bab5439 100644
--- a/src/save/GenericGameStorage.cpp
+++ b/src/save/GenericGameStorage.cpp
@@ -67,16 +67,16 @@ bool StillToFadeOut;
uint32 TimeStartedCountingForFade;
uint32 TimeToStayFadedBeforeFadeOut = 1750;
-uint32 RadioStationPosition[NUM_RADIOS];
+int32 RadioStationPosition[NUM_RADIOS];
void
InitRadioStationPositionList()
{
for (int i = 0; i < NUM_RADIOS; i++)
- RadioStationPosition[i] = 0;
+ RadioStationPosition[i] = -1;
}
-uint32
+int32
GetSavedRadioStationPosition(int32 station)
{
return RadioStationPosition[station];
diff --git a/src/save/GenericGameStorage.h b/src/save/GenericGameStorage.h
index 07aa23ca..65f1cc16 100644
--- a/src/save/GenericGameStorage.h
+++ b/src/save/GenericGameStorage.h
@@ -6,7 +6,7 @@
#define SLOT_COUNT (8)
void InitRadioStationPositionList();
-uint32 GetSavedRadioStationPosition(int32 station);
+int32 GetSavedRadioStationPosition(int32 station);
void PopulateRadioStationPositionList();
bool GenericSave(int file);
bool GenericLoad();
diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp
index 37c94cb4..68df6704 100644
--- a/src/skel/crossplatform.cpp
+++ b/src/skel/crossplatform.cpp
@@ -32,8 +32,8 @@ HANDLE FindFirstFile(const char* pathname, WIN32_FIND_DATA* firstfile) {
char *folder = strtok(pathCopy, "*");
char *extension = strtok(NULL, "*");
- // because strtok doesn't return NULL for last delimiter
- if (extension - folder == strlen(pathname))
+ // because I remember like strtok might not return NULL for last delimiter
+ if (extension && extension - folder == strlen(pathname))
extension = nil;
// Case-sensitivity and backslashes...
@@ -187,7 +187,7 @@ char* casepath(char const* path, bool checkPathFirst)
rl = 1;
}
- bool cantProceed = false; // just convert slashes in what's left in string, not case sensitivity
+ bool cantProceed = false; // just convert slashes in what's left in string, don't correct case of letters(because we can't)
bool mayBeTrailingSlash = false;
char* c;
while (c = strsep(&p, "/\\"))
@@ -251,7 +251,7 @@ char* casepath(char const* path, bool checkPathFirst)
}
if (rl > l + 2) {
- printf("\n\ncasepath: Corrected path length is longer then original+2:\n\tOriginal: %s (%d chars)\n\tCorrected: %s (%d chars)\n\n", path, l, out, rl);
+ printf("\n\ncasepath: Corrected path length is longer then original+2:\n\tOriginal: %s (%zu chars)\n\tCorrected: %s (%zu chars)\n\n", path, l, out, rl);
}
return out;
}
diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h
index 009b17c7..9b43bcaf 100644
--- a/src/skel/crossplatform.h
+++ b/src/skel/crossplatform.h
@@ -75,7 +75,7 @@ void CapturePad(RwInt32 padID);
void joysChangeCB(int jid, int event);
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
extern char gSelectedJoystickName[128];
#endif
@@ -136,7 +136,12 @@ void GetLocalTime_CP(SYSTEMTIME* out);
typedef void* HANDLE;
#define INVALID_HANDLE_VALUE NULL
-#define FindClose(h) closedir((DIR*)h)
+#define FindClose(h) \
+ do { \
+ if (h != nil) \
+ closedir((DIR*)h); \
+ } while(0)
+
#define LOCALE_USER_DEFAULT 0
#define DATE_SHORTDATE 0
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp
index 887ac6dc..af3a46b1 100644
--- a/src/skel/glfw/glfw.cpp
+++ b/src/skel/glfw/glfw.cpp
@@ -50,11 +50,30 @@ long _dwOperatingSystemVersion;
#include "Font.h"
#include "MemoryMgr.h"
+// We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux.
+#if !defined _WIN32 && !defined __APPLE__ && !defined __SWITCH__ // && !defined WAYLAND
+#define GET_KEYBOARD_INPUT_FROM_X11
+#endif
+
+#ifdef GET_KEYBOARD_INPUT_FROM_X11
+#include <X11/Xlib.h>
+#include <X11/XKBlib.h>
+#define GLFW_EXPOSE_NATIVE_X11
+#include <GLFW/glfw3native.h>
+#endif
+
+#ifdef _WIN32
+#define GLFW_EXPOSE_NATIVE_WIN32
+#include <GLFW/glfw3native.h>
+#endif
+
#define MAX_SUBSYSTEMS (16)
rw::EngineOpenParams openParams;
static RwBool ForegroundApp = TRUE;
+static RwBool WindowIconified = FALSE;
+static RwBool WindowFocused = TRUE;
static RwBool RwInitialised = FALSE;
@@ -80,7 +99,7 @@ static psGlobalType PsGlobal;
size_t _dwMemAvailPhys;
RwUInt32 gGameState;
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
char gSelectedJoystickName[128] = "";
#endif
@@ -207,6 +226,7 @@ psGrabScreen(RwCamera *pCamera)
}
#else
rw::Image *image = RwCameraGetRaster(pCamera)->toImage();
+ image->removeMask();
if(image)
return image;
#endif
@@ -319,7 +339,9 @@ psInitialize(void)
RsGlobal.ps = &PsGlobal;
PsGlobal.fullScreen = FALSE;
- PsGlobal.cursorIsInWindow = TRUE;
+ PsGlobal.cursorIsInWindow = FALSE;
+ WindowFocused = TRUE;
+ WindowIconified = FALSE;
PsGlobal.joy1id = -1;
PsGlobal.joy2id = -1;
@@ -843,16 +865,20 @@ psSelectDevice()
return TRUE;
}
+#ifndef GET_KEYBOARD_INPUT_FROM_X11
void keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods);
+#endif
void resizeCB(GLFWwindow* window, int width, int height);
void scrollCB(GLFWwindow* window, double xoffset, double yoffset);
void cursorCB(GLFWwindow* window, double xpos, double ypos);
void cursorEnterCB(GLFWwindow* window, int entered);
+void windowFocusCB(GLFWwindow* window, int focused);
+void windowIconifyCB(GLFWwindow* window, int iconified);
void joysChangeCB(int jid, int event);
bool IsThisJoystickBlacklisted(int i)
{
-#ifndef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifndef DETECT_JOYSTICK_MENU
return false;
#else
if (glfwJoystickIsGamepad(i))
@@ -917,7 +943,7 @@ void _InputInitialiseJoys()
if (PSGLOBAL(joy1id) != -1) {
int count;
glfwGetJoystickButtons(PSGLOBAL(joy1id), &count);
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
strcpy(gSelectedJoystickName, glfwGetJoystickName(PSGLOBAL(joy1id)));
#endif
ControlsManager.InitDefaultControlConfigJoyPad(count);
@@ -956,11 +982,15 @@ void psPostRWinit(void)
RwVideoMode vm;
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
+#ifndef GET_KEYBOARD_INPUT_FROM_X11
glfwSetKeyCallback(PSGLOBAL(window), keypressCB);
+#endif
glfwSetFramebufferSizeCallback(PSGLOBAL(window), resizeCB);
glfwSetScrollCallback(PSGLOBAL(window), scrollCB);
glfwSetCursorPosCallback(PSGLOBAL(window), cursorCB);
glfwSetCursorEnterCallback(PSGLOBAL(window), cursorEnterCB);
+ glfwSetWindowIconifyCallback(PSGLOBAL(window), windowIconifyCB);
+ glfwSetWindowFocusCallback(PSGLOBAL(window), windowFocusCB);
glfwSetJoystickCallback(joysChangeCB);
_InputInitialiseJoys();
@@ -1271,10 +1301,11 @@ void terminateHandler(int sig, siginfo_t *info, void *ucontext) {
RsGlobal.quit = TRUE;
}
+#ifdef FLUSHABLE_STREAMING
void dummyHandler(int sig){
// Don't kill the app pls
}
-
+#endif
#endif
void resizeCB(GLFWwindow* window, int width, int height) {
@@ -1311,6 +1342,10 @@ void scrollCB(GLFWwindow* window, double xoffset, double yoffset) {
PSGLOBAL(mouseWheel) = yoffset;
}
+bool lshiftStatus = false;
+bool rshiftStatus = false;
+
+#ifndef GET_KEYBOARD_INPUT_FROM_X11
int keymap[GLFW_KEY_LAST + 1];
static void
@@ -1441,13 +1476,10 @@ initkeymap(void)
keymap[GLFW_KEY_MENU] = rsNULL;
}
-bool lshiftStatus = false;
-bool rshiftStatus = false;
-
void
keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods)
{
- if (key >= 0 && key <= GLFW_KEY_LAST) {
+ if (key >= 0 && key <= GLFW_KEY_LAST && action != GLFW_REPEAT) {
RsKeyCodes ks = (RsKeyCodes)keymap[key];
if (key == GLFW_KEY_LEFT_SHIFT)
@@ -1458,10 +1490,269 @@ keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods)
if (action == GLFW_RELEASE) RsKeyboardEventHandler(rsKEYUP, &ks);
else if (action == GLFW_PRESS) RsKeyboardEventHandler(rsKEYDOWN, &ks);
- else if (action == GLFW_REPEAT) RsKeyboardEventHandler(rsKEYDOWN, &ks);
}
}
+#else
+
+uint32 keymap[512]; // 256 ascii + 256 KeySyms between 0xff00 - 0xffff
+bool keyStates[512];
+uint32 keyCodeToKeymapIndex[256]; // cache for physical keys
+
+#define KEY_MAP_OFFSET (0xff00 - 256)
+static void
+initkeymap(void)
+{
+ Display *display = glfwGetX11Display();
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(keymap); i++)
+ keymap[i] = rsNULL;
+
+ // You can add new ASCII mappings to here freely (but beware that if right hand side of assignment isn't supported on CFont, it'll be blank/won't work on binding screen)
+ // Right hand side of assigments should always be uppercase counterpart of character
+ keymap[XK_space] = ' ';
+ keymap[XK_apostrophe] = '\'';
+ keymap[XK_ampersand] = '&';
+ keymap[XK_percent] = '%';
+ keymap[XK_dollar] = '$';
+ keymap[XK_comma] = ',';
+ keymap[XK_minus] = '-';
+ keymap[XK_period] = '.';
+ keymap[XK_slash] = '/';
+ keymap[XK_question] = '?';
+ keymap[XK_exclam] = '!';
+ keymap[XK_quotedbl] = '"';
+ keymap[XK_colon] = ':';
+ keymap[XK_semicolon] = ';';
+ keymap[XK_equal] = '=';
+ keymap[XK_bracketleft] = '[';
+ keymap[XK_backslash] = '\\';
+ keymap[XK_bracketright] = ']';
+ keymap[XK_grave] = '`';
+ keymap[XK_0] = '0';
+ keymap[XK_1] = '1';
+ keymap[XK_2] = '2';
+ keymap[XK_3] = '3';
+ keymap[XK_4] = '4';
+ keymap[XK_5] = '5';
+ keymap[XK_6] = '6';
+ keymap[XK_7] = '7';
+ keymap[XK_8] = '8';
+ keymap[XK_9] = '9';
+ keymap[XK_a] = 'A';
+ keymap[XK_b] = 'B';
+ keymap[XK_c] = 'C';
+ keymap[XK_d] = 'D';
+ keymap[XK_e] = 'E';
+ keymap[XK_f] = 'F';
+ keymap[XK_g] = 'G';
+ keymap[XK_h] = 'H';
+ keymap[XK_i] = 'I';
+ keymap[XK_I] = 'I'; // Turkish I problem
+ keymap[XK_j] = 'J';
+ keymap[XK_k] = 'K';
+ keymap[XK_l] = 'L';
+ keymap[XK_m] = 'M';
+ keymap[XK_n] = 'N';
+ keymap[XK_o] = 'O';
+ keymap[XK_p] = 'P';
+ keymap[XK_q] = 'Q';
+ keymap[XK_r] = 'R';
+ keymap[XK_s] = 'S';
+ keymap[XK_t] = 'T';
+ keymap[XK_u] = 'U';
+ keymap[XK_v] = 'V';
+ keymap[XK_w] = 'W';
+ keymap[XK_x] = 'X';
+ keymap[XK_y] = 'Y';
+ keymap[XK_z] = 'Z';
+
+ // Some of regional but ASCII characters that GTA supports
+ keymap[XK_agrave] = 0x00c0;
+ keymap[XK_aacute] = 0x00c1;
+ keymap[XK_acircumflex] = 0x00c2;
+ keymap[XK_adiaeresis] = 0x00c4;
+
+ keymap[XK_ae] = 0x00c6;
+
+ keymap[XK_egrave] = 0x00c8;
+ keymap[XK_eacute] = 0x00c9;
+ keymap[XK_ecircumflex] = 0x00ca;
+ keymap[XK_ediaeresis] = 0x00cb;
+
+ keymap[XK_igrave] = 0x00cc;
+ keymap[XK_iacute] = 0x00cd;
+ keymap[XK_icircumflex] = 0x00ce;
+ keymap[XK_idiaeresis] = 0x00cf;
+
+ keymap[XK_ccedilla] = 0x00c7;
+ keymap[XK_odiaeresis] = 0x00d6;
+ keymap[XK_udiaeresis] = 0x00dc;
+
+ // These are 0xff00 - 0xffff range of KeySym's, and subtracting KEY_MAP_OFFSET is needed
+ keymap[XK_Escape - KEY_MAP_OFFSET] = rsESC;
+ keymap[XK_Return - KEY_MAP_OFFSET] = rsENTER;
+ keymap[XK_Tab - KEY_MAP_OFFSET] = rsTAB;
+ keymap[XK_BackSpace - KEY_MAP_OFFSET] = rsBACKSP;
+ keymap[XK_Insert - KEY_MAP_OFFSET] = rsINS;
+ keymap[XK_Delete - KEY_MAP_OFFSET] = rsDEL;
+ keymap[XK_Right - KEY_MAP_OFFSET] = rsRIGHT;
+ keymap[XK_Left - KEY_MAP_OFFSET] = rsLEFT;
+ keymap[XK_Down - KEY_MAP_OFFSET] = rsDOWN;
+ keymap[XK_Up - KEY_MAP_OFFSET] = rsUP;
+ keymap[XK_Page_Up - KEY_MAP_OFFSET] = rsPGUP;
+ keymap[XK_Page_Down - KEY_MAP_OFFSET] = rsPGDN;
+ keymap[XK_Home - KEY_MAP_OFFSET] = rsHOME;
+ keymap[XK_End - KEY_MAP_OFFSET] = rsEND;
+ keymap[XK_Caps_Lock - KEY_MAP_OFFSET] = rsCAPSLK;
+ keymap[XK_Scroll_Lock - KEY_MAP_OFFSET] = rsSCROLL;
+ keymap[XK_Num_Lock - KEY_MAP_OFFSET] = rsNUMLOCK;
+ keymap[XK_Pause - KEY_MAP_OFFSET] = rsPAUSE;
+
+ keymap[XK_F1 - KEY_MAP_OFFSET] = rsF1;
+ keymap[XK_F2 - KEY_MAP_OFFSET] = rsF2;
+ keymap[XK_F3 - KEY_MAP_OFFSET] = rsF3;
+ keymap[XK_F4 - KEY_MAP_OFFSET] = rsF4;
+ keymap[XK_F5 - KEY_MAP_OFFSET] = rsF5;
+ keymap[XK_F6 - KEY_MAP_OFFSET] = rsF6;
+ keymap[XK_F7 - KEY_MAP_OFFSET] = rsF7;
+ keymap[XK_F8 - KEY_MAP_OFFSET] = rsF8;
+ keymap[XK_F9 - KEY_MAP_OFFSET] = rsF9;
+ keymap[XK_F10 - KEY_MAP_OFFSET] = rsF10;
+ keymap[XK_F11 - KEY_MAP_OFFSET] = rsF11;
+ keymap[XK_F12 - KEY_MAP_OFFSET] = rsF12;
+ keymap[XK_F13 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F14 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F15 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F16 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F17 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F18 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F19 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F20 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F21 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F22 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F23 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F24 - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_F25 - KEY_MAP_OFFSET] = rsNULL;
+
+ keymap[XK_KP_0 - KEY_MAP_OFFSET] = rsPADINS;
+ keymap[XK_KP_1 - KEY_MAP_OFFSET] = rsPADEND;
+ keymap[XK_KP_2 - KEY_MAP_OFFSET] = rsPADDOWN;
+ keymap[XK_KP_3 - KEY_MAP_OFFSET] = rsPADPGDN;
+ keymap[XK_KP_4 - KEY_MAP_OFFSET] = rsPADLEFT;
+ keymap[XK_KP_5 - KEY_MAP_OFFSET] = rsPAD5;
+ keymap[XK_KP_6 - KEY_MAP_OFFSET] = rsPADRIGHT;
+ keymap[XK_KP_7 - KEY_MAP_OFFSET] = rsPADHOME;
+ keymap[XK_KP_8 - KEY_MAP_OFFSET] = rsPADUP;
+ keymap[XK_KP_9 - KEY_MAP_OFFSET] = rsPADPGUP;
+ keymap[XK_KP_Insert - KEY_MAP_OFFSET] = rsPADINS;
+ keymap[XK_KP_End - KEY_MAP_OFFSET] = rsPADEND;
+ keymap[XK_KP_Down - KEY_MAP_OFFSET] = rsPADDOWN;
+ keymap[XK_KP_Page_Down - KEY_MAP_OFFSET] = rsPADPGDN;
+ keymap[XK_KP_Left - KEY_MAP_OFFSET] = rsPADLEFT;
+ keymap[XK_KP_Begin - KEY_MAP_OFFSET] = rsPAD5;
+ keymap[XK_KP_Right - KEY_MAP_OFFSET] = rsPADRIGHT;
+ keymap[XK_KP_Home - KEY_MAP_OFFSET] = rsPADHOME;
+ keymap[XK_KP_Up - KEY_MAP_OFFSET] = rsPADUP;
+ keymap[XK_KP_Page_Up - KEY_MAP_OFFSET] = rsPADPGUP;
+
+ keymap[XK_KP_Decimal - KEY_MAP_OFFSET] = rsPADDEL;
+ keymap[XK_KP_Divide - KEY_MAP_OFFSET] = rsDIVIDE;
+ keymap[XK_KP_Multiply - KEY_MAP_OFFSET] = rsTIMES;
+ keymap[XK_KP_Subtract - KEY_MAP_OFFSET] = rsMINUS;
+ keymap[XK_KP_Add - KEY_MAP_OFFSET] = rsPLUS;
+ keymap[XK_KP_Enter - KEY_MAP_OFFSET] = rsPADENTER;
+ keymap[XK_KP_Equal - KEY_MAP_OFFSET] = rsNULL;
+ keymap[XK_Shift_L - KEY_MAP_OFFSET] = rsLSHIFT;
+ keymap[XK_Control_L - KEY_MAP_OFFSET] = rsLCTRL;
+ keymap[XK_Alt_L - KEY_MAP_OFFSET] = rsLALT;
+ keymap[XK_Super_L - KEY_MAP_OFFSET] = rsLWIN;
+ keymap[XK_Shift_R - KEY_MAP_OFFSET] = rsRSHIFT;
+ keymap[XK_Control_R - KEY_MAP_OFFSET] = rsRCTRL;
+ keymap[XK_Alt_R - KEY_MAP_OFFSET] = rsRALT;
+ keymap[XK_Super_R - KEY_MAP_OFFSET] = rsRWIN;
+ keymap[XK_Menu - KEY_MAP_OFFSET] = rsNULL;
+
+ // Cache the key codes' key symbol equivelants, otherwise we will have to do it on each frame
+ // KeyCode is always in [0,255], and represents a physical key
+
+ int min_keycode, max_keycode, keysyms_per_keycode;
+ KeySym *keymap, *origkeymap;
+
+ char *keyboardLang = setlocale (LC_CTYPE, NULL);
+ setlocale(LC_CTYPE, "");
+
+ XDisplayKeycodes(display, &min_keycode, &max_keycode);
+ origkeymap = XGetKeyboardMapping(display, min_keycode, (max_keycode - min_keycode + 1), &keysyms_per_keycode);
+ keymap = origkeymap;
+ for (int i = min_keycode; i <= max_keycode; i++) {
+ int j, lastKeysym;
+
+ lastKeysym = keysyms_per_keycode - 1;
+ while ((lastKeysym >= 0) && (keymap[lastKeysym] == NoSymbol))
+ lastKeysym--;
+
+ for (j = 0; j <= lastKeysym; j++) {
+ KeySym ks = keymap[j];
+
+ if (ks == NoSymbol)
+ continue;
+
+ if (ks < 256) {
+ keyCodeToKeymapIndex[i] = ks;
+ break;
+ } else if (ks >= 0xff00 && ks < 0xffff) {
+ keyCodeToKeymapIndex[i] = ks - KEY_MAP_OFFSET;
+ break;
+ }
+ }
+ keymap += keysyms_per_keycode;
+ }
+ XFree(origkeymap);
+
+ setlocale(LC_CTYPE, keyboardLang);
+}
+#undef KEY_MAP_OFFSET
+
+void checkKeyPresses()
+{
+ Display *display = glfwGetX11Display();
+ char keys[32];
+ XQueryKeymap(display, keys);
+ for (int i = 0; i < sizeof(keys); i++) {
+ for (int j = 0; j < 8; j++) {
+ KeyCode keycode = 8 * i + j;
+ uint32 keymapIndex = keyCodeToKeymapIndex[keycode];
+ if (keymapIndex != 0) {
+ int rsCode = keymap[keymapIndex];
+ if (rsCode == rsNULL)
+ continue;
+
+ bool pressed = WindowFocused && !!(keys[i] & (1 << j));
+
+ // idk why R* does that
+ if (rsCode == rsLSHIFT)
+ lshiftStatus = pressed;
+ else if (rsCode == rsRSHIFT)
+ rshiftStatus = pressed;
+
+ if (keyStates[keymapIndex] != pressed) {
+ if (pressed) {
+ RsKeyboardEventHandler(rsKEYDOWN, &rsCode);
+ } else {
+ RsKeyboardEventHandler(rsKEYUP, &rsCode);
+ }
+ }
+
+ keyStates[keymapIndex] = pressed;
+ }
+ }
+ }
+
+}
+#endif
+
// R* calls that in ControllerConfig, idk why
void
_InputTranslateShiftKeyUpDown(RsKeyCodes *rs) {
@@ -1486,6 +1777,16 @@ cursorEnterCB(GLFWwindow* window, int entered) {
PSGLOBAL(cursorIsInWindow) = !!entered;
}
+void
+windowFocusCB(GLFWwindow* window, int focused) {
+ WindowFocused = !!focused;
+}
+
+void
+windowIconifyCB(GLFWwindow* window, int iconified) {
+ WindowIconified = !!iconified;
+}
+
/*
*****************************************************************************
*/
@@ -1528,11 +1829,13 @@ main(int argc, char *argv[])
act.sa_sigaction = terminateHandler;
act.sa_flags = SA_SIGINFO;
sigaction(SIGTERM, &act, NULL);
+#ifdef FLUSHABLE_STREAMING
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_handler = dummyHandler;
sa.sa_flags = 0;
- sigaction(SIGUSR1, &sa, NULL); // Needed for CdStreamPosix
+ sigaction(SIGUSR1, &sa, NULL);
+#endif
#endif
/*
@@ -1589,6 +1892,15 @@ main(int argc, char *argv[])
return 0;
}
+#ifdef _WIN32
+ HWND wnd = glfwGetWin32Window(PSGLOBAL(window));
+
+ HICON icon = LoadIcon(instance, MAKEINTRESOURCE(IDI_MAIN_ICON));
+
+ SendMessage(wnd, WM_SETICON, ICON_BIG, (LPARAM)icon);
+ SendMessage(wnd, WM_SETICON, ICON_SMALL, (LPARAM)icon);
+#endif
+
psPostRWinit();
ControlsManager.InitDefaultControlConfigMouse(MousePointerStateHelper.GetMouseSetUp());
@@ -1727,6 +2039,9 @@ main(int argc, char *argv[])
#endif
{
glfwPollEvents();
+#ifdef GET_KEYBOARD_INPUT_FROM_X11
+ checkKeyPresses();
+#endif
#ifndef MASTER
if (gbModelViewer) {
// This is TheModelViewerCore in LCS
@@ -1865,7 +2180,7 @@ main(int argc, char *argv[])
case GS_FRONTEND:
{
- if(!glfwGetWindowAttrib(PSGLOBAL(window), GLFW_ICONIFIED))
+ if(!WindowIconified)
RsEventHandler(rsFRONTENDIDLE, nil);
#ifdef PS2_MENU
@@ -2180,7 +2495,7 @@ void joysChangeCB(int jid, int event)
if (event == GLFW_CONNECTED && !IsThisJoystickBlacklisted(jid)) {
if (PSGLOBAL(joy1id) == -1) {
PSGLOBAL(joy1id) = jid;
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+#ifdef DETECT_JOYSTICK_MENU
strcpy(gSelectedJoystickName, glfwGetJoystickName(jid));
#endif
// This is behind LOAD_INI_SETTINGS, because otherwise the Init call below will destroy/overwrite your bindings.
diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp
index 650f1648..9597e9c2 100644
--- a/src/skel/win/win.cpp
+++ b/src/skel/win/win.cpp
@@ -120,6 +120,10 @@ DWORD _dwOperatingSystemVersion;
RwUInt32 gGameState;
CJoySticks AllValidWinJoys;
+#ifdef DETECT_JOYSTICK_MENU
+char gSelectedJoystickName[128] = "";
+#endif
+
// What is that for anyway?
#ifndef IMPROVED_VIDEOMODE
static RwBool defaultFullscreenRes = TRUE;
@@ -258,6 +262,7 @@ psGrabScreen(RwCamera *pCamera)
}
#else
rw::Image *image = RwCameraGetRaster(pCamera)->toImage();
+ image->removeMask();
if(image)
return image;
#endif
@@ -910,14 +915,14 @@ void WaitForState(FILTER_STATE State)
*/
void HandleGraphEvent(void)
{
- LONG evCode, evParam1, evParam2;
+ LONG evCode;
+ LONG_PTR evParam1, evParam2;
HRESULT hr=S_OK;
ASSERT(pME != nil);
// Process all queued events
- while (SUCCEEDED(pME->GetEvent(&evCode, (LONG_PTR *)&evParam1,
- (LONG_PTR *)&evParam2, 0)))
+ while (SUCCEEDED(pME->GetEvent(&evCode, &evParam1, &evParam2, 0)))
{
// Free memory associated with callback, since we're not using it
hr = pME->FreeEventParams(evCode, evParam1, evParam2);
@@ -2268,7 +2273,7 @@ WinMain(HINSTANCE instance,
case GS_START_UP:
{
#ifdef NO_MOVIES
- gGameState = GS_INIT_ONCE;
+ gGameState = gbNoMovies ? GS_INIT_ONCE : GS_INIT_LOGO_MPEG;
#else
gGameState = GS_INIT_LOGO_MPEG;
#endif
@@ -2309,8 +2314,11 @@ WinMain(HINSTANCE instance,
case GS_INIT_INTRO_MPEG:
{
-#ifndef NO_MOVIES
+#ifdef NO_MOVIES
+ if (!gbNoMovies)
+#endif
CloseClip();
+#ifndef FIX_BUGS
CoUninitialize();
#endif
@@ -2348,8 +2356,11 @@ WinMain(HINSTANCE instance,
case GS_INIT_ONCE:
{
-#ifndef NO_MOVIES
+#ifdef NO_MOVIES
+ if (!gbNoMovies)
+#endif
CloseClip();
+#ifndef FIX_BUGS
CoUninitialize();
#endif
diff --git a/src/text/Text.cpp b/src/text/Text.cpp
index 16250f79..e387fe01 100644
--- a/src/text/Text.cpp
+++ b/src/text/Text.cpp
@@ -9,7 +9,7 @@
#include "Text.h"
#include "Timer.h"
-static wchar WideErrorString[25];
+wchar WideErrorString[25];
CText *CText::msInstance = nil;
@@ -260,13 +260,13 @@ CText::LoadMissionText(char *MissionTableName)
sprintf(filename, "SPANISH.GXT");
break;
#ifdef MORE_LANGUAGES
- case LANGUAGE_POLISH:
+ case CMenuManager::LANGUAGE_POLISH:
sprintf(filename, "POLISH.GXT");
break;
- case LANGUAGE_RUSSIAN:
+ case CMenuManager::LANGUAGE_RUSSIAN:
sprintf(filename, "RUSSIAN.GXT");
break;
- case LANGUAGE_JAPANESE:
+ case CMenuManager::LANGUAGE_JAPANESE:
sprintf(filename, "JAPANESE.GXT");
break;
#endif
diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp
index 4a7bce16..2df57a10 100644
--- a/src/vehicles/Automobile.cpp
+++ b/src/vehicles/Automobile.cpp
@@ -2920,8 +2920,8 @@ CAutomobile::ProcessControlInputs(uint8 pad)
float speed = DotProduct(m_vecMoveSpeed, GetForward());
if(!CPad::GetPad(pad)->GetExitVehicle() ||
- pDriver && pDriver->m_pVehicleAnim && (pDriver->m_pVehicleAnim->animId == ANIM_CAR_ROLLOUT_LHS ||
- pDriver->m_pVehicleAnim->animId == ANIM_CAR_ROLLOUT_RHS))
+ pDriver && pDriver->m_pVehicleAnim && (pDriver->m_pVehicleAnim->animId == ANIM_STD_ROLLOUT_LHS ||
+ pDriver->m_pVehicleAnim->animId == ANIM_STD_ROLLOUT_RHS))
bIsHandbrakeOn = !!CPad::GetPad(pad)->GetHandBrake();
else
bIsHandbrakeOn = true;
@@ -3707,11 +3707,11 @@ CAutomobile::DoDriveByShootings(void)
lookingRight = true;
}
- AnimationId rightAnim = ANIM_DRIVEBY_R;
- AnimationId leftAnim = ANIM_DRIVEBY_L;
+ AnimationId rightAnim = ANIM_STD_CAR_DRIVEBY_RIGHT;
+ AnimationId leftAnim = ANIM_STD_CAR_DRIVEBY_LEFT;
if (pDriver->m_pMyVehicle->bLowVehicle) {
- rightAnim = ANIM_DRIVEBY_LOW_R;
- leftAnim = ANIM_DRIVEBY_LOW_L;
+ rightAnim = ANIM_STD_CAR_DRIVEBY_RIGHT_LO;
+ leftAnim = ANIM_STD_CAR_DRIVEBY_LEFT_LO;
}
if(lookingLeft || lookingRight){
@@ -3750,11 +3750,11 @@ CAutomobile::DoDriveByShootings(void)
// TODO: what is this?
if(!lookingLeft && m_weaponDoorTimerLeft > 0.0f){
m_weaponDoorTimerLeft = Max(m_weaponDoorTimerLeft - CTimer::GetTimeStep()*0.1f, 0.0f);
- ProcessOpenDoor(CAR_DOOR_LF, NUM_STD_ANIMS, m_weaponDoorTimerLeft);
+ ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_NUM, m_weaponDoorTimerLeft);
}
if(!lookingRight && m_weaponDoorTimerRight > 0.0f){
m_weaponDoorTimerRight = Max(m_weaponDoorTimerRight - CTimer::GetTimeStep()*0.1f, 0.0f);
- ProcessOpenDoor(CAR_DOOR_RF, NUM_STD_ANIMS, m_weaponDoorTimerRight);
+ ProcessOpenDoor(CAR_DOOR_RF, ANIM_STD_NUM, m_weaponDoorTimerRight);
}
}
@@ -4474,55 +4474,55 @@ CAutomobile::ProcessOpenDoor(uint32 component, uint32 anim, float time)
return;
switch(anim){
- case ANIM_CAR_QJACK:
- case ANIM_CAR_OPEN_LHS:
- case ANIM_CAR_OPEN_RHS:
+ case ANIM_STD_QUICKJACK:
+ case ANIM_STD_CAR_OPEN_DOOR_LHS:
+ case ANIM_STD_CAR_OPEN_DOOR_RHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.41f, 0.89f);
break;
- case ANIM_CAR_CLOSEDOOR_LHS:
- case ANIM_CAR_CLOSEDOOR_LOW_LHS:
- case ANIM_CAR_CLOSEDOOR_RHS:
- case ANIM_CAR_CLOSEDOOR_LOW_RHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LO_LHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_RHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_LO_RHS:
ProcessDoorCloseAnimation(this, component, door, time, 0.2f, 0.45f);
break;
- case ANIM_CAR_ROLLDOOR:
- case ANIM_CAR_ROLLDOOR_LOW:
+ case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS:
+ case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS:
ProcessDoorOpenCloseAnimation(this, component, door, time, 0.1f, 0.6f, 0.95f);
break;
- case ANIM_CAR_GETOUT_LHS:
- case ANIM_CAR_GETOUT_LOW_LHS:
- case ANIM_CAR_GETOUT_RHS:
- case ANIM_CAR_GETOUT_LOW_RHS:
+ case ANIM_STD_GETOUT_LHS:
+ case ANIM_STD_GETOUT_LO_LHS:
+ case ANIM_STD_GETOUT_RHS:
+ case ANIM_STD_GETOUT_LO_RHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.06f, 0.43f);
break;
- case ANIM_CAR_CLOSE_LHS:
- case ANIM_CAR_CLOSE_RHS:
+ case ANIM_STD_CAR_CLOSE_LHS:
+ case ANIM_STD_CAR_CLOSE_RHS:
ProcessDoorCloseAnimation(this, component, door, time, 0.1f, 0.23f);
break;
- case ANIM_CAR_PULLOUT_RHS:
- case ANIM_CAR_PULLOUT_LOW_RHS:
+ case ANIM_STD_CAR_PULL_OUT_PED_RHS:
+ case ANIM_STD_CAR_PULL_OUT_PED_LO_RHS:
OpenDoor(component, door, 1.0f);
break;
- case ANIM_COACH_OPEN_L:
- case ANIM_COACH_OPEN_R:
+ case ANIM_STD_COACH_OPEN_LHS:
+ case ANIM_STD_COACH_OPEN_RHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.66f, 0.8f);
break;
- case ANIM_COACH_OUT_L:
+ case ANIM_STD_COACH_GET_OUT_LHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.0f, 0.3f);
break;
- case ANIM_VAN_OPEN_L:
- case ANIM_VAN_OPEN:
+ case ANIM_STD_VAN_OPEN_DOOR_REAR_LHS:
+ case ANIM_STD_VAN_OPEN_DOOR_REAR_RHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.37f, 0.55f);
break;
- case ANIM_VAN_CLOSE_L:
- case ANIM_VAN_CLOSE:
+ case ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS:
+ case ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS:
ProcessDoorCloseAnimation(this, component, door, time, 0.5f, 0.8f);
break;
- case ANIM_VAN_GETOUT_L:
- case ANIM_VAN_GETOUT:
+ case ANIM_STD_VAN_GET_OUT_REAR_LHS:
+ case ANIM_STD_VAN_GET_OUT_REAR_RHS:
ProcessDoorOpenAnimation(this, component, door, time, 0.5f, 0.6f);
break;
- case NUM_STD_ANIMS:
+ case ANIM_STD_NUM:
OpenDoor(component, door, time);
break;
}
@@ -4810,7 +4810,7 @@ CAutomobile::GetHeightAboveRoad(void)
void
CAutomobile::PlayCarHorn(void)
{
- int r;
+ uint32 r;
if (IsAlarmOn() || m_nCarHornTimer != 0)
return;
@@ -5679,13 +5679,13 @@ CAutomobile::CloseAllDoors(void)
void
CAutomobile::KnockPedOutCar(eWeaponType weapon, uint16 door, CPed *ped)
{
- AnimationId anim = ANIM_KO_SHOT_FRONT1;
+ AnimationId anim = ANIM_STD_KO_FRONT;
if(ped == nil)
return;
ped->m_vehDoor = door;
ped->SetPedState(PED_IDLE);
- CAnimManager::BlendAnimation(ped->GetClump(), ped->m_animGroup, ANIM_IDLE_STANCE, 100.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ped->m_animGroup, ANIM_STD_IDLE, 100.0f);
CPed::PedSetOutCarCB(nil, ped);
ped->SetMoveState(PEDMOVE_STILL);
if(GetUp().z < 0.0f)
@@ -5698,14 +5698,14 @@ CAutomobile::KnockPedOutCar(eWeaponType weapon, uint16 door, CPed *ped)
case WEAPONTYPE_UNIDENTIFIED:
ped->m_vecMoveSpeed = m_vecMoveSpeed;
ped->m_pCollidingEntity = this;
- anim = NUM_STD_ANIMS;
+ anim = ANIM_STD_NUM;
break;
case WEAPONTYPE_BASEBALLBAT:
case WEAPONTYPE_RAMMEDBYCAR:
case WEAPONTYPE_FALL:
ped->m_vecMoveSpeed = m_vecMoveSpeed;
- anim = ANIM_KD_LEFT;
+ anim = ANIM_STD_SPINFORWARD_LEFT;
ApplyMoveForce(4.0f*GetUp() + 8.0f*GetRight());
break;
}
diff --git a/src/vehicles/Bike.cpp b/src/vehicles/Bike.cpp
index f8ef4746..ae567ae2 100644
--- a/src/vehicles/Bike.cpp
+++ b/src/vehicles/Bike.cpp
@@ -575,7 +575,7 @@ CBike::ProcessControl(void)
// Lean forward speed up
float savedAirResistance = m_fAirResistance;
if(GetStatus() == STATUS_PLAYER && pDriver){
- CAnimBlendAssociation *assoc = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_FWD);
+ CAnimBlendAssociation *assoc = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_LEANF);
if(assoc && assoc->blendAmount > 0.5f &&
assoc->currentTime > 0.06f && assoc->currentTime < 0.14f){
m_fAirResistance *= 0.6f;
@@ -1016,7 +1016,7 @@ CBike::ProcessControl(void)
// Process leaning
float idleAngle = 0.0f;
if(pDriver){
- CAnimBlendAssociation *assoc = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_STILL);
+ CAnimBlendAssociation *assoc = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_READY);
if(assoc)
idleAngle = DEGTORAD(10.0f) * assoc->blendAmount;
}
@@ -2037,35 +2037,35 @@ CBike::DoDriveByShootings(void)
if(lookingLeft || lookingRight || CPad::GetPad(0)->GetCarGunFired()){
if(lookingLeft){
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FT);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
if(anim == nil || anim->blendDelta < 0.0f)
- anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_RHS);
+ anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_LHS);
}else if(lookingRight){
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FT);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
if(anim == nil || anim->blendDelta < 0.0f)
- anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_LHS);
+ anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_RHS);
}else{
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FT);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD);
if(anim == nil || anim->blendDelta < 0.0f)
- anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_FT);
+ anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_FORWARD);
}
if (!anim || !anim->IsRunning()) {
@@ -2076,13 +2076,13 @@ CBike::DoDriveByShootings(void)
}
}else{
weapon->Reload();
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FT);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD);
if(anim)
anim->blendDelta = -1000.0f;
}
@@ -2549,7 +2549,7 @@ CBike::GetHeightAboveRoad(void)
void
CBike::PlayCarHorn(void)
{
- int r;
+ uint32 r;
if (IsAlarmOn() || m_nCarHornTimer != 0)
return;
@@ -2576,7 +2576,7 @@ CBike::PlayCarHorn(void)
void
CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBackOn)
{
- AnimationId anim = ANIM_KO_SHOT_FRONT1;
+ AnimationId anim = ANIM_STD_KO_FRONT;
if(ped == nil)
return;
@@ -2614,7 +2614,7 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
}
ped->SetPedState(PED_IDLE);
- CAnimManager::BlendAnimation(ped->GetClump(), ped->m_animGroup, ANIM_IDLE_STANCE, 100.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ped->m_animGroup, ANIM_STD_IDLE, 100.0f);
ped->m_vehDoor = CAR_DOOR_LF;
CPed::PedSetOutCarCB(nil, ped);
ped->SetMoveState(PEDMOVE_STILL);
@@ -2628,14 +2628,14 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
case WEAPONTYPE_UNIDENTIFIED:
ped->m_vecMoveSpeed = m_vecMoveSpeed;
ped->m_pCollidingEntity = this;
- anim = NUM_STD_ANIMS;
+ anim = ANIM_STD_NUM;
break;
case WEAPONTYPE_BASEBALLBAT:
default:
switch(direction){
case 0:
- anim = ANIM_BIKE_FALL_R;
+ anim = ANIM_STD_BIKE_FALLBACK;
ped->m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.1f);
if(m_vecMoveSpeed.MagnitudeSqr() < SQR(0.3f))
ped->ApplyMoveForce(5.0f*GetUp() - 6.0f*GetForward());
@@ -2644,11 +2644,11 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
case 1:
case 2:
if(m_vecMoveSpeed.MagnitudeSqr() > SQR(0.3f)){
- anim = ANIM_KO_SPIN_R;
+ anim = ANIM_STD_HIGHIMPACT_LEFT;
ped->m_vecMoveSpeed = 0.3f*m_vecMoveSpeed;
ped->ApplyMoveForce(5.0f*GetUp() + 6.0f*GetRight());
}else{
- anim = ANIM_KD_LEFT;
+ anim = ANIM_STD_SPINFORWARD_LEFT;
ped->m_vecMoveSpeed = m_vecMoveSpeed;
ped->ApplyMoveForce(4.0f*GetUp() + 8.0f*GetRight());
}
@@ -2657,11 +2657,11 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
break;
case 3:
if(m_vecMoveSpeed.MagnitudeSqr() > SQR(0.3f)){
- anim = ANIM_KO_SPIN_L;
+ anim = ANIM_STD_HIGHIMPACT_RIGHT;
ped->m_vecMoveSpeed = 0.3f*m_vecMoveSpeed;
ped->ApplyMoveForce(5.0f*GetUp() - 6.0f*GetRight());
}else{
- anim = ANIM_KD_RIGHT;
+ anim = ANIM_STD_SPINFORWARD_RIGHT;
ped->m_vecMoveSpeed = m_vecMoveSpeed;
ped->ApplyMoveForce(4.0f*GetUp() - 8.0f*GetRight());
}
@@ -2673,7 +2673,7 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
case WEAPONTYPE_DROWNING:{
RwRGBA color;
- anim = ANIM_FALL_FALL;
+ anim = ANIM_STD_FALL;
ped->m_vecMoveSpeed = m_vecMoveSpeed*0.2f;
ped->m_vecMoveSpeed.z = 0.0f;
ped->m_pCollidingEntity = this;
@@ -2698,10 +2698,10 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
CGeneral::GetRandomNumberInRange(3.0f, 7.0f));
ped->m_pCollidingEntity = this;
switch(direction){
- case 0: anim = ANIM_KO_SKID_BACK; break;
- case 1: anim = ANIM_KD_RIGHT; break;
- case 2: anim = ANIM_BIKE_FALL_R; break;
- case 3: anim = ANIM_KD_LEFT; break;
+ case 0: anim = ANIM_STD_HIGHIMPACT_BACK; break;
+ case 1: anim = ANIM_STD_SPINFORWARD_RIGHT; break;
+ case 2: anim = ANIM_STD_BIKE_FALLBACK; break;
+ case 3: anim = ANIM_STD_SPINFORWARD_LEFT; break;
}
if(m_nWheelsOnGround == 0)
ped->bKnockedOffBike = true;
@@ -2717,10 +2717,10 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
CGeneral::GetRandomNumberInRange(minForceZ, maxForceZ));
ped->m_pCollidingEntity = this;
switch(direction){
- case 0: anim = ANIM_KO_SKID_BACK; break;
- case 1: anim = ANIM_KD_RIGHT; break;
- case 2: anim = ANIM_KO_SKID_FRONT; break;
- case 3: anim = ANIM_KD_LEFT; break;
+ case 0: anim = ANIM_STD_HIGHIMPACT_BACK; break;
+ case 1: anim = ANIM_STD_SPINFORWARD_RIGHT; break;
+ case 2: anim = ANIM_STD_HIGHIMPACT_FRONT; break;
+ case 3: anim = ANIM_STD_SPINFORWARD_LEFT; break;
}
ped->bKnockedOffBike = true;
if(ped->IsPlayer())
@@ -2735,7 +2735,7 @@ CBike::KnockOffRider(eWeaponType weapon, uint8 direction, CPed *ped, bool bGetBa
ped->bIsInTheAir = true;
ped->bIsInWater = true;
ped->bTouchingWater = true;
- CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_FALL_FALL, 4.0f);
+ CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_FALL, 4.0f);
}else if(weapon != WEAPONTYPE_UNARMED){
if(ped->m_fHealth > 0.0f)
ped->SetFall(1000, anim, 0);
diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp
index d4dfcc7c..3b9290ea 100644
--- a/src/vehicles/Boat.cpp
+++ b/src/vehicles/Boat.cpp
@@ -1440,19 +1440,19 @@ CBoat::DoDriveByShootings(void)
if(lookingLeft || lookingRight){
if(lookingLeft){
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT);
if(anim == nil || anim->blendDelta < 0.0f)
- anim = CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_DRIVEBY_L);
+ anim = CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVEBY_LEFT);
}else if(pDriver->m_pMyVehicle->pPassengers[0] == nil || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON){
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT);
if(anim == nil || anim->blendDelta < 0.0f)
- anim = CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_DRIVEBY_R);
+ anim = CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVEBY_RIGHT);
}
if (!anim || !anim->IsRunning()) {
@@ -1463,10 +1463,10 @@ CBoat::DoDriveByShootings(void)
}
}else{
weapon->Reload();
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT);
if(anim)
anim->blendDelta = -1000.0f;
- anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R);
+ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT);
if(anim)
anim->blendDelta = -1000.0f;
}
diff --git a/src/vehicles/Heli.cpp b/src/vehicles/Heli.cpp
index 0546888a..3f01ff41 100644
--- a/src/vehicles/Heli.cpp
+++ b/src/vehicles/Heli.cpp
@@ -737,7 +737,7 @@ CHeli::SendDownSwat(void)
m_numSwat--;
swat->m_nRopeID = (uintptr)this + m_numSwat;
m_aSwatState[m_numSwat] = 255;
- CAnimManager::BlendAnimation(swat->GetClump(), ASSOCGRP_STD, ANIM_ABSEIL, 4.0f);
+ CAnimManager::BlendAnimation(swat->GetClump(), ASSOCGRP_STD, ANIM_STD_ABSEIL, 4.0f);
return true;
}
return false;
diff --git a/src/vehicles/Plane.cpp b/src/vehicles/Plane.cpp
index 48f7b8c0..0b40ca7e 100644
--- a/src/vehicles/Plane.cpp
+++ b/src/vehicles/Plane.cpp
@@ -123,7 +123,7 @@ void
CPlane::DeleteRwObject(void)
{
if(m_rwObject && RwObjectGetType(m_rwObject) == rpATOMIC){
- m_matrix.Detach();
+ GetMatrix().Detach();
if(RwObjectGetType(m_rwObject) == rpATOMIC){ // useless check
RwFrame *f = RpAtomicGetFrame((RpAtomic*)m_rwObject);
RpAtomicDestroy((RpAtomic*)m_rwObject);
@@ -567,13 +567,13 @@ CPlane::ProcessControl(void)
m_rwObject = CModelInfo::GetModelInfo(mi->m_planeLodId)->CreateInstance();
POP_MEMID();
if(m_rwObject)
- m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)));
+ GetMatrix().AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)));
}
}
}else if(CStreaming::HasModelLoaded(GetModelIndex())){
if(m_rwObject && RwObjectGetType(m_rwObject) == rpATOMIC){
// Get rid of LOD model
- m_matrix.Detach();
+ GetMatrix().Detach();
if(m_rwObject){ // useless check
if(RwObjectGetType(m_rwObject) == rpATOMIC){ // useless check
RwFrame *f = RpAtomicGetFrame((RpAtomic*)m_rwObject);
diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp
index 67acf47d..6594e05f 100644
--- a/src/vehicles/Vehicle.cpp
+++ b/src/vehicles/Vehicle.cpp
@@ -50,10 +50,10 @@ bool CVehicle::bDisableRemoteDetonationOnContact;
bool CVehicle::m_bDisplayHandlingInfo;
#endif
-void *CVehicle::operator new(size_t sz) { return CPools::GetVehiclePool()->New(); }
-void *CVehicle::operator new(size_t sz, int handle) { return CPools::GetVehiclePool()->New(handle); }
-void CVehicle::operator delete(void *p, size_t sz) { CPools::GetVehiclePool()->Delete((CVehicle*)p); }
-void CVehicle::operator delete(void *p, int handle) { CPools::GetVehiclePool()->Delete((CVehicle*)p); }
+void *CVehicle::operator new(size_t sz) throw() { return CPools::GetVehiclePool()->New(); }
+void *CVehicle::operator new(size_t sz, int handle) throw() { return CPools::GetVehiclePool()->New(handle); }
+void CVehicle::operator delete(void *p, size_t sz) throw() { CPools::GetVehiclePool()->Delete((CVehicle*)p); }
+void CVehicle::operator delete(void *p, int handle) throw() { CPools::GetVehiclePool()->Delete((CVehicle*)p); }
#ifdef FIX_BUGS
// I think they meant that
@@ -152,8 +152,8 @@ CVehicle::CVehicle(uint8 CreatedBy)
m_fMapObjectHeightAhead = m_fMapObjectHeightBehind = 0.0f;
m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, this);
if(m_audioEntityId >= 0)
- DMAudio.SetEntityStatus(m_audioEntityId, true);
- //m_nRadioStation = CGeneral::GetRandomNumber() % USERTRACK;
+ DMAudio.SetEntityStatus(m_audioEntityId, TRUE);
+ //m_nRadioStation = CGeneral::GetRandomNumber() % NUM_RADIOS;
switch(GetModelIndex()){
case MI_HUNTER:
case MI_ANGEL:
@@ -170,7 +170,7 @@ CVehicle::CVehicle(uint8 CreatedBy)
m_nRadioStation = RADIO_OFF;
break;
default:
- m_nRadioStation = CGeneral::GetRandomNumber() % USERTRACK;
+ m_nRadioStation = CGeneral::GetRandomNumber() % NUM_RADIOS;
break;
}
m_pCurGroundEntity = nil;
diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h
index 450f1c3b..d29c2dc0 100644
--- a/src/vehicles/Vehicle.h
+++ b/src/vehicles/Vehicle.h
@@ -269,7 +269,7 @@ public:
eCarLock m_nDoorLock;
int8 m_nLastWeaponDamage; // see eWeaponType, -1 if no damage
CEntity *m_pLastDamageEntity;
- int8 m_nRadioStation;
+ uint8 m_nRadioStation;
uint8 m_bRainAudioCounter;
uint8 m_bRainSamplesCounter;
uint32 m_nCarHornTimer;
@@ -281,10 +281,10 @@ public:
float m_fSteerInput;
uint8 m_vehType;
- static void *operator new(size_t);
- static void *operator new(size_t sz, int slot);
- static void operator delete(void*, size_t);
- static void operator delete(void*, int);
+ static void *operator new(size_t) throw();
+ static void *operator new(size_t sz, int slot) throw();
+ static void operator delete(void*, size_t) throw();
+ static void operator delete(void*, int) throw();
CVehicle(void) {} // FAKE
CVehicle(uint8 CreatedBy);
diff --git a/src/weapons/BulletInfo.cpp b/src/weapons/BulletInfo.cpp
index 445f31a0..b49db74a 100644
--- a/src/weapons/BulletInfo.cpp
+++ b/src/weapons/BulletInfo.cpp
@@ -131,7 +131,7 @@ void CBulletInfo::Update(void)
if (!pPed->DyingOrDead() && pPed != pBullet->m_pSource) {
if (pPed->IsPedInControl() && !pPed->bIsDucking) {
pPed->ClearAttackByRemovingAnim();
- CAnimBlendAssociation* pAnim = CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_SHOT_FRONT_PARTIAL);
+ CAnimBlendAssociation* pAnim = CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HITBYGUN_FRONT);
pAnim->SetBlend(0.0f, 8.0f);
}
pPed->InflictDamage(pBullet->m_pSource, pBullet->m_eWeaponType, pBullet->m_nDamage, (ePedPieceTypes)point.pieceB, pPed->GetLocalDirection(pPed->GetPosition() - point.point));
@@ -152,9 +152,9 @@ void CBulletInfo::Update(void)
if (pPed->GetPedState() == PED_DEAD) {
CAnimBlendAssociation* pAnim;
if (RpAnimBlendClumpGetFirstAssociation(pPed->GetClump(), ASSOC_FRONTAL))
- pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f);
+ pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f);
else
- pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f);
+ pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f);
if (pAnim) {
pAnim->SetCurrentTime(0.0f);
pAnim->flags |= ASSOC_RUNNING;
diff --git a/src/weapons/Explosion.cpp b/src/weapons/Explosion.cpp
index 74137dc0..078f01fa 100644
--- a/src/weapons/Explosion.cpp
+++ b/src/weapons/Explosion.cpp
@@ -37,7 +37,7 @@ CExplosion::Initialise()
ClearAllExplosions();
AudioHandle = DMAudio.CreateEntity(AUDIOTYPE_EXPLOSION, (void*)1);
if (AudioHandle >= 0)
- DMAudio.SetEntityStatus(AudioHandle, true);
+ DMAudio.SetEntityStatus(AudioHandle, TRUE);
debug("CExplosion ready\n");
}
diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp
index 78d21b0a..4bf02e88 100644
--- a/src/weapons/Weapon.cpp
+++ b/src/weapons/Weapon.cpp
@@ -676,9 +676,9 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource)
victimPed->ApplyMoveForce(posOffset.x*-5.0f, posOffset.y*-5.0f, 3.0f);
if ( isHeavy && victimPed->IsPlayer() )
- victimPed->SetFall(3000, AnimationId(ANIM_KO_SKID_FRONT + localDir), false);
+ victimPed->SetFall(3000, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false);
else
- victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false);
+ victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false);
shooterPed->m_pSeekTarget = victimPed;
shooterPed->m_pSeekTarget->RegisterReference(&shooterPed->m_pSeekTarget);
@@ -1066,7 +1066,11 @@ CWeapon::FireInstantHit(CEntity *shooter, CVector *fireSource)
if ( info->m_nFiringRate >= 50 || !(++counter & 1) )
{
+#ifdef FIX_BUGS
+ AddGunFlashBigGuns(*fireSource, target);
+#else
AddGunFlashBigGuns(*fireSource, *fireSource + target);
+#endif
CVector gunshellPos = *fireSource;
gunshellPos -= CVector(0.65f*ahead.x, 0.65f*ahead.y, 0.0f);
@@ -1351,7 +1355,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim,
victimPed->bIsStanding = false;
victimPed->ApplyMoveForce(posOffset.x*-5.0f, posOffset.y*-5.0f, 5.0f);
- victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false);
+ victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false);
victimPed->InflictDamage(shooter, m_eWeaponType, info->m_nDamage, (ePedPieceTypes)point->pieceB, localDir);
}
@@ -1364,7 +1368,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim,
{
victimPed->ClearAttackByRemovingAnim();
- CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir));
+ CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir));
ASSERT(asoc!=nil);
asoc->blendAmount = 0.0f;
@@ -1380,7 +1384,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim,
{
victimPed->ClearAttackByRemovingAnim();
- CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir));
+ CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir));
ASSERT(asoc!=nil);
asoc->blendAmount = 0.0f;
@@ -1436,9 +1440,9 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim,
{
CAnimBlendAssociation *asoc;
if ( RpAnimBlendClumpGetFirstAssociation(victimPed->GetClump(), ASSOC_FRONTAL) )
- asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f);
+ asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f);
else
- asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f);
+ asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f);
if ( asoc )
{
@@ -1809,7 +1813,7 @@ CWeapon::FireShotgun(CEntity *shooter, CVector *fireSource)
victimPed->ApplyMoveForce(posOffset.x*-2.0f, posOffset.y*-2.0f, 0.0f);
if ( cantStandup )
- victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false);
+ victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false);
victimPed->InflictDamage(shooter, m_eWeaponType, info->m_nDamage, (ePedPieceTypes)point.pieceB, localDir);
@@ -1849,11 +1853,11 @@ CWeapon::FireShotgun(CEntity *shooter, CVector *fireSource)
CAnimBlendAssociation *hitAssoc;
if (RpAnimBlendClumpGetFirstAssociation(victimPed->GetClump(), ASSOC_FRONTAL))
{
- hitAssoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f);
+ hitAssoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f);
}
else
{
- hitAssoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f);
+ hitAssoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f);
}
if (hitAssoc)
{
@@ -2535,7 +2539,7 @@ CWeapon::FireInstantHitFromCar(CVehicle *shooter, bool left, bool right)
victimPed->ReactToAttack(FindPlayerPed());
victimPed->ClearAttackByRemovingAnim();
- CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir));
+ CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir));
ASSERT(asoc!=nil);
asoc->blendAmount = 0.0f;
asoc->blendDelta = 8.0f;
@@ -2968,7 +2972,7 @@ FireOneInstantHitRound(CVector *source, CVector *target, int32 damage)
victimPed->ClearAttackByRemovingAnim();
- CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir));
+ CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir));
ASSERT(asoc!=nil);
asoc->blendAmount = 0.0f;
asoc->blendDelta = 8.0f;
diff --git a/src/weapons/WeaponEffects.cpp b/src/weapons/WeaponEffects.cpp
index b0df610f..bb95ea85 100644
--- a/src/weapons/WeaponEffects.cpp
+++ b/src/weapons/WeaponEffects.cpp
@@ -1,5 +1,6 @@
#include "common.h"
+#include "main.h"
#include "WeaponEffects.h"
#include "TxdStore.h"
#include "Sprite.h"
@@ -103,6 +104,8 @@ CWeaponEffects::Render(void)
float w, h;
if ( CSprite::CalcScreenCoors(gCrossHair.m_vecPos, &pos, &w, &h, true) )
{
+ PUSH_RENDERGROUP("CWeaponEffects::Render");
+
float recipz = 1.0f / pos.z;
CSprite::RenderOneXLUSprite_Rotate_Aspect(pos.x, pos.y, pos.z,
w, h,
@@ -119,6 +122,8 @@ CWeaponEffects::Render(void)
gCrossHair.m_fRotation += 0.02f;
if ( gCrossHair.m_fRotation > TWOPI )
gCrossHair.m_fRotation = 0.0;
+
+ POP_RENDERGROUP();
}
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)FALSE);
diff --git a/vendor/librw b/vendor/librw
-Subproject 60a5ace16309ccd3d174a3ec14a106254093406
+Subproject af20de45226f5152a035866da32517466e81142