From 3948a1f726fa4ea2d02a895257ec391152e36882 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 24 Jan 2021 17:06:50 +0100 Subject: [PATCH 001/113] add Vanilla config to premake and premake CI --- .github/workflows/reVC_msvc_amd64.yml | 2 +- .github/workflows/reVC_msvc_x86.yml | 2 +- premake5.lua | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/reVC_msvc_amd64.yml b/.github/workflows/reVC_msvc_amd64.yml index 19804d38..71e0ff1d 100644 --- a/.github/workflows/reVC_msvc_amd64.yml +++ b/.github/workflows/reVC_msvc_amd64.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: platform: [win-amd64-librw_d3d9-oal, win-amd64-librw_gl3_glfw-oal] - buildtype: [Debug, Release] + buildtype: [Debug, Release, Vanilla] steps: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.0.2 diff --git a/.github/workflows/reVC_msvc_x86.yml b/.github/workflows/reVC_msvc_x86.yml index b9e83dba..f7484ec2 100644 --- a/.github/workflows/reVC_msvc_x86.yml +++ b/.github/workflows/reVC_msvc_x86.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: platform: [win-x86-librw_d3d9-mss, win-x86-librw_gl3_glfw-mss, win-x86-librw_d3d9-oal, win-x86-librw_gl3_glfw-oal] - buildtype: [Debug, Release] + buildtype: [Debug, Release, Vanilla] steps: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.0.2 diff --git a/premake5.lua b/premake5.lua index a1a7f1dc..f2e6a71f 100644 --- a/premake5.lua +++ b/premake5.lua @@ -65,7 +65,7 @@ end workspace "reVC" language "C++" - configurations { "Debug", "Release" } + configurations { "Debug", "Release", "Vanilla" } startproject "reVC" location "build" symbols "Full" @@ -113,13 +113,16 @@ workspace "reVC" 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" From 30c26e5a9cb3591767656fd62109a2a5407e40b9 Mon Sep 17 00:00:00 2001 From: kusst <49589982+kusst@users.noreply.github.com> Date: Wed, 27 Jan 2021 00:35:57 +0100 Subject: [PATCH 002/113] Change text color in texture conversion dialog... ...so it matches VC style. --- src/rw/TexRead.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index 632cec02..31a3f58f 100644 --- a/src/rw/TexRead.cpp +++ b/src/rw/TexRead.cpp @@ -329,7 +329,7 @@ ConvertingTexturesScreen(uint32 num, uint32 count, const char *text) CFont::SetCentreOff(); CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f)); CFont::SetJustifyOff(); - CFont::SetColor(CRGBA(255, 217, 106, 255)); + CFont::SetColor(CRGBA(255, 150, 225, 255)); CFont::SetBackGroundOnlyTextOff(); CFont::SetFontStyle(FONT_STANDARD); CFont::PrintString(SCREEN_SCALE_X(170.0f), SCREEN_SCALE_Y(160.0f), TheText.Get(text)); From e1e13d14a4cb41a41c05bf17f891906c1c7f71e0 Mon Sep 17 00:00:00 2001 From: kusst <49589982+kusst@users.noreply.github.com> Date: Wed, 27 Jan 2021 03:36:22 +0100 Subject: [PATCH 003/113] Also change progressbar color --- src/rw/TexRead.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index 31a3f58f..5c7f7158 100644 --- a/src/rw/TexRead.cpp +++ b/src/rw/TexRead.cpp @@ -320,7 +320,7 @@ 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)); - 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)); + 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)); 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(); From 97351ad2c2a05f9221601b27432aaf7b51507103 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 27 Jan 2021 18:50:24 +0200 Subject: [PATCH 004/113] Use original animation names from VCS --- src/animation/AnimManager.cpp | 446 ++++++++++++++++---------------- src/animation/AnimationId.h | 440 ++++++++++++++++---------------- src/control/Phones.cpp | 10 +- src/control/Replay.cpp | 20 +- src/control/Script.cpp | 2 +- src/control/Script4.cpp | 4 +- src/control/Script5.cpp | 8 +- src/control/Script8.cpp | 4 +- src/core/AnimViewer.cpp | 8 +- src/core/Ropes.cpp | 2 +- src/core/World.cpp | 2 +- src/objects/Stinger.cpp | 6 +- src/peds/CopPed.cpp | 4 +- src/peds/EmergencyPed.cpp | 2 +- src/peds/Ped.cpp | 402 ++++++++++++++--------------- src/peds/Ped.h | 30 +-- src/peds/PedAI.cpp | 436 ++++++++++++++++---------------- src/peds/PedFight.cpp | 462 +++++++++++++++++----------------- src/peds/PlayerPed.cpp | 88 +++---- src/render/WaterCannon.cpp | 2 +- src/vehicles/Automobile.cpp | 78 +++--- src/vehicles/Bike.cpp | 76 +++--- src/vehicles/Boat.cpp | 16 +- src/vehicles/Heli.cpp | 2 +- src/weapons/BulletInfo.cpp | 6 +- src/weapons/Weapon.cpp | 24 +- 26 files changed, 1289 insertions(+), 1291 deletions(-) diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp index 284a567d..8d35b06b 100644 --- a/src/animation/AnimManager.cpp +++ b/src/animation/AnimManager.cpp @@ -20,252 +20,252 @@ CAnimBlendAssocGroup *CAnimManager::ms_aAnimAssocGroups; CLinkList 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 | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_STOM, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { 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 | ASSOC_FRONTAL }, - { ANIM_KD_RIGHT, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { 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_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_CHEST, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_WALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { 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_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_KNEE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_LHOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FIGHT_LONGKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FIGHT_PPUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_FIGHT_JAB, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_ELBOW_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_ELBOW_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_BKICK_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_BKICK_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { 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_PARTIAL }, - { ANIM_TRAIN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { 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 }, - { ANIM_CAR_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, - { 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 }, - { ANIM_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FALL_FALL, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FALL_COLLAPSE, ASSOC_FADEOUTWHENDONE | 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_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_DELETEFADEDOUT | ASSOC_PARTIAL }, - { 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 | ASSOC_FRONTAL }, + { ANIM_STD_KO_SHOT_STOMACH, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { 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 | ASSOC_FRONTAL }, + { ANIM_STD_SPINFORWARD_RIGHT, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { 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_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_CHEST, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_WALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { 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_FIGHT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_KNEE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_LHOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FIGHT_LONGKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_PARTIAL_PUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_FIGHT_JAB, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_ELBOW_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_ELBOW_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_BKICK_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_BKICK_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { 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_PARTIAL }, + { ANIM_STD_TRAIN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { 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 }, + { ANIM_STD_ROLLOUT_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, + { 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 }, + { ANIM_STD_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FALL, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FALL_COLLAPSE, ASSOC_FADEOUTWHENDONE | 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_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_DELETEFADEDOUT | ASSOC_PARTIAL }, + { 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 }, - { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT }, - { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_ATTACK_1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_ATTACK_2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_ATTACK_EXTRA1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_ATTACK_EXTRA2, ASSOC_REPEAT }, + { ANIM_ATTACK_3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, }; AnimAssocDesc aSwingAnimDescs[] = { - { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT }, - { ANIM_MELEE_ATTACK_FINISH, 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_REPEAT }, + { ANIM_ATTACK_3, 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_WEAPON_SPECIAL, 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 }, + { ANIM_ATTACK_3, 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_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, { ANIM_SUNBATHE_UP, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, { ANIM_SUNBATHE_ESCAPE, ASSOC_REPEAT | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, }; 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 }, @@ -274,7 +274,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 }, @@ -287,11 +287,11 @@ AnimAssocDesc aStripAnimDescs[] = { }; #ifdef PC_PLAYER_CONTROLS 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 }, }; #endif char const* aStdAnimations[] = { diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h index cf8b9fe0..afe37f78 100644 --- a/src/animation/AnimationId.h +++ b/src/animation/AnimationId.h @@ -2,256 +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_BODYBLOW, - ANIM_HIT_CHEST, - ANIM_HIT_HEAD, - ANIM_HIT_WALK, - ANIM_HIT_WALL, - ANIM_FLOOR_HIT_F, - ANIM_HIT_BEHIND, - ANIM_FIGHT_IDLE, - ANIM_FIGHT2_IDLE, - ANIM_FIGHT_SH_F, - ANIM_FIGHT_BODYBLOW, - ANIM_FIGHT_HEAD, - ANIM_FIGHT_KICK, - ANIM_FIGHT_KNEE, - ANIM_FIGHT_LHOOK, - ANIM_FIGHT_PUNCH, - ANIM_FIGHT_ROUNDHOUSE, - ANIM_FIGHT_LONGKICK, - ANIM_FIGHT_PPUNCH, + 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_FIGHT_JAB, - ANIM_FIGHT_ELBOW_L, - ANIM_FIGHT_ELBOW_R, - ANIM_FIGHT_BKICK_L, - ANIM_FIGHT_BKICK_R, + /* names made up */ + ANIM_STD_HIT_BODYBLOW, + ANIM_STD_HIT_CHEST, + ANIM_STD_HIT_HEAD, + ANIM_STD_HIT_WALK, + /**/ - ANIM_BOMBER, - ANIM_PUNCH_R, - ANIM_FIGHT_PPUNCH2, - ANIM_KICK_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_WEAPON_THROWU, - ANIM_FIGHT_SH_BACK, + /* names made up */ + ANIM_STD_FIGHT_BODYBLOW, + ANIM_STD_FIGHT_HEAD, + ANIM_STD_FIGHT_KICK, + ANIM_STD_FIGHT_KNEE, + ANIM_STD_FIGHT_LHOOK, + ANIM_STD_FIGHT_PUNCH, + ANIM_STD_FIGHT_ROUNDHOUSE, + ANIM_STD_FIGHT_LONGKICK, + /**/ - 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_STD_PARTIAL_PUNCH, - 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, + /* names made up */ + ANIM_STD_FIGHT_JAB, + ANIM_STD_FIGHT_ELBOW_L, + ANIM_STD_FIGHT_ELBOW_R, + ANIM_STD_FIGHT_BKICK_L, + ANIM_STD_FIGHT_BKICK_R, + /**/ - ANIM_CAR_GETOUT_RHS, - ANIM_CAR_GETOUT_LOW_RHS, - ANIM_CAR_CLOSE_RHS, - ANIM_CAR_HOOKERTALK, + ANIM_STD_DETONATE, + ANIM_STD_PUNCH, + ANIM_STD_PARTIALPUNCH, + ANIM_STD_KICKGROUND, - ANIM_TRAIN_GETIN, - ANIM_TRAIN_GETOUT, + ANIM_STD_THROW_UNDER, + ANIM_STD_FIGHT_SHUFFLE_B, - ANIM_CAR_CRAWLOUT_RHS, - ANIM_CAR_CRAWLOUT_RHS2, - ANIM_CAR_ROLLOUT_LHS, - ANIM_CAR_ROLLOUT_RHS, + 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_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_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_EV_STEP, - ANIM_EV_DIVE, - ANIM_XPRESS_SCRATCH, - ANIM_ROAD_CROSS, - ANIM_TURN_180, - ANIM_ARREST_GUN, - ANIM_DROWN, - ANIM_DUCK_DOWN, - ANIM_DUCK_LOW, + ANIM_STD_GETOUT_RHS, + ANIM_STD_GETOUT_LO_RHS, + ANIM_STD_CAR_CLOSE_RHS, + ANIM_STD_CAR_HOOKERTALK, - ANIM_WEAPON_CROUCH, + ANIM_STD_TRAIN_GETIN, + ANIM_STD_TRAIN_GETOUT, - ANIM_RBLOCK_CSHOOT, - ANIM_HANDSUP, - ANIM_HANDSCOWER, - ANIM_FUCKU, - ANIM_PHONE_IN, - ANIM_PHONE_OUT, - ANIM_PHONE_TALK, + ANIM_STD_CRAWLOUT_LHS, + ANIM_STD_CRAWLOUT_RHS, + ANIM_STD_ROLLOUT_LHS, + ANIM_STD_ROLLOUT_RHS, - ANIM_SEAT_DOWN, - ANIM_SEAT_UP, - ANIM_SEAT_IDLE, - ANIM_SEAT_DOWN2, - ANIM_ATM, - ANIM_ABSEIL, + 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, - NUM_STD_ANIMS, + ANIM_STD_EVADE_STEP, + ANIM_STD_EVADE_DIVE, + 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_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_STD_DUCK_WEAPON, - ANIM_COACH_OPEN_L, - ANIM_COACH_OPEN_R, - ANIM_COACH_IN_L, - ANIM_COACH_IN_R, - ANIM_COACH_OUT_L, + 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_WEAPON_FIRE, - ANIM_WEAPON_CROUCHFIRE, - ANIM_WEAPON_RELOAD, - ANIM_WEAPON_CROUCHRELOAD, - ANIM_WEAPON_SPECIAL, - ANIM_MELEE_ATTACK = ANIM_WEAPON_FIRE, - 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_ATTACK_1, + ANIM_ATTACK_2, + ANIM_ATTACK_EXTRA1, + ANIM_ATTACK_EXTRA2, + ANIM_ATTACK_3, - 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, @@ -259,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, @@ -268,6 +268,4 @@ enum AnimationId ANIM_STRIP_E, ANIM_STRIP_F, ANIM_STRIP_G, - - NUM_ANIMS }; \ No newline at end of file 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/Replay.cpp b/src/control/Replay.cpp index 8eae0dc3..cd612d5d 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; diff --git a/src/control/Script.cpp b/src/control/Script.cpp index a160fbc1..cb208912 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -4756,7 +4756,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/Script4.cpp b/src/control/Script4.cpp index 9830f0dc..878278c5 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -822,7 +822,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); } } } @@ -839,7 +839,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); diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index cc70a170..1371f2e6 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -2627,10 +2627,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/Script8.cpp b/src/control/Script8.cpp index 9a8e536e..2d1ccdf4 100644 --- a/src/control/Script8.cpp +++ b/src/control/Script8.cpp @@ -55,7 +55,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(ScriptParams[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: diff --git a/src/core/AnimViewer.cpp b/src/core/AnimViewer.cpp index 854ec7d4..562b9c15 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/Ropes.cpp b/src/core/Ropes.cpp index ffce36f9..52427fc3 100644 --- a/src/core/Ropes.cpp +++ b/src/core/Ropes.cpp @@ -167,7 +167,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/World.cpp b/src/core/World.cpp index bc698c83..959d0259 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -2213,7 +2213,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/objects/Stinger.cpp b/src/objects/Stinger.cpp index b3660881..79730c89 100644 --- a/src/objects/Stinger.cpp +++ b/src/objects/Stinger.cpp @@ -87,10 +87,10 @@ void CStinger::Deploy(CPed *pPed) { 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); pPed->SetPedState(PED_DEPLOY_STINGER); - CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_THROWU); + CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_THROW_UNDER); } } } @@ -170,7 +170,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++) diff --git a/src/peds/CopPed.cpp b/src/peds/CopPed.cpp index 9d22c98c..36bb02b6 100644 --- a/src/peds/CopPed.cpp +++ b/src/peds/CopPed.cpp @@ -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); 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 6a3df18b..de474f38 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -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,32 +615,32 @@ 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); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); if (animAssoc && m_nPedState == PED_FIGHT) 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,13 +1427,13 @@ 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); + fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); if ((!idleAssoc || idleAssoc->blendAmount < 0.5f) && !fightAssoc && !bIsDucking) { LimbOrientation newUpperLegs; @@ -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) { @@ -2366,7 +2366,7 @@ 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) { @@ -2414,10 +2414,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 +2426,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 +2560,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 +2771,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 +2971,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 +3126,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 +3138,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 +3146,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 +3944,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 +4087,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 +4113,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 +4163,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 +4172,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 +4919,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 +5104,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 +5122,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 +5130,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 +5174,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 +5197,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 +5247,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 +5273,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 +5287,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 +5295,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 +5307,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 +5355,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 +5370,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 +6768,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 +6791,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 +6904,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 +6919,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 +6942,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 +7002,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 +7024,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 +7044,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 +7121,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 +7133,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 +7153,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 +7233,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 +7254,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 +7270,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 +7289,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 +7311,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 +7672,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; } } @@ -7999,14 +7999,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 +8015,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 +8051,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,12 +8074,12 @@ 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; @@ -8092,7 +8092,7 @@ CPed::ClearWaitState(void) void CPed::SetWaitState(eWaitState state, void *time) { - AnimationId waitAnim = NUM_STD_ANIMS; + AnimationId waitAnim = ANIM_STD_NUM; CAnimBlendAssociation *animAssoc; if (!IsPedInControl()) @@ -8111,10 +8111,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 +8132,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 +8140,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 +8154,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 +8168,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 +8185,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 +8209,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 +8231,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 +8255,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 +8264,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); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DETONATE, 4.0f); m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time; break; case WAITSTATE_GROUND_ATTACK: @@ -8291,10 +8291,10 @@ CPed::SetWaitState(eWaitState state, void *time) break; } case WAITSTATE_LANCESITTING: - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_LANCE, ANIM_SUNBATHE, 4.0f); + 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); @@ -8311,7 +8311,7 @@ CPed::SetWaitState(eWaitState state, void *time) void CPed::Wait(void) { - AnimationId mustHaveAnim = NUM_STD_ANIMS; + AnimationId mustHaveAnim = ANIM_STD_NUM; CAnimBlendAssociation *animAssoc; CPed *pedWeLook; @@ -8339,7 +8339,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 +8350,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 +8363,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 +8396,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 +8410,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 +8425,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 +8442,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 +8459,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 +8468,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 +8477,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 +8549,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 +8589,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 +8716,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) { @@ -8832,7 +8832,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 +8863,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 +9093,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 +9128,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 +9136,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 +9176,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); @@ -9391,7 +9391,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; @@ -9426,7 +9426,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; @@ -9493,7 +9493,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); diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 8b091d15..ac776469 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -679,7 +679,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); @@ -1015,74 +1015,74 @@ public: static AnimationId Get3rdFireAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_COP3_RD)) - return ANIM_WEAPON_FIRE_3RD; + return ANIM_ATTACK_3; else return (AnimationId)0; } 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; + return ANIM_ATTACK_3; 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; } static AnimationId GetFightIdleWithMeleeAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_FIGHTMODE)) - return ANIM_MELEE_IDLE_FIGHTMODE; + return ANIM_ATTACK_EXTRA2; else return (AnimationId)0; } static AnimationId GetFinishingAttackAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_FINISH_3RD)) - return ANIM_MELEE_ATTACK_FINISH; + return ANIM_ATTACK_3; else return (AnimationId)0; } static AnimationId GetSecondFireAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_USE_2ND)) - return ANIM_WEAPON_FIRE_2ND; // or ANIM_MELEE_ATTACK_2ND + return ANIM_ATTACK_2; // or ANIM_MELEE_ATTACK_2ND else return (AnimationId)0; } static AnimationId GetMeleeStartAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_PARTIALATTACK)) - return ANIM_MELEE_ATTACK_START; + return ANIM_ATTACK_EXTRA1; else return (AnimationId)0; } @@ -1090,7 +1090,7 @@ public: static AnimationId GetThrowAnim(CWeaponInfo *weapon) { if (weapon->IsFlagSet(WEAPONFLAG_THROW)) - return ANIM_THROWABLE_START_THROW; + return ANIM_ATTACK_EXTRA1; else return (AnimationId)0; } diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index 9802f968..cd8b06fa 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -1455,9 +1455,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; @@ -1562,7 +1562,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); @@ -1570,7 +1570,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); @@ -1599,13 +1599,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; @@ -2234,7 +2234,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() @@ -2357,21 +2357,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; } @@ -2389,20 +2389,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; } @@ -2410,14 +2410,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]; } @@ -2425,7 +2425,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; } @@ -2457,22 +2457,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); @@ -2481,16 +2481,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) { @@ -2499,7 +2499,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; @@ -2519,19 +2519,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); @@ -2619,13 +2619,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; @@ -2634,27 +2634,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()) @@ -2686,9 +2686,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); } @@ -2709,9 +2709,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); } @@ -2722,17 +2722,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); } @@ -2820,18 +2820,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 { @@ -2878,7 +2878,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); @@ -2974,18 +2974,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); } @@ -2997,7 +2997,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; @@ -3020,7 +3020,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) { @@ -3061,9 +3061,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); } @@ -3161,7 +3161,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; } @@ -3185,7 +3185,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 @@ -3272,16 +3272,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; @@ -3310,24 +3310,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; } @@ -3338,7 +3338,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; } @@ -3401,21 +3401,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; @@ -3423,49 +3423,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: @@ -3531,8 +3531,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; @@ -3547,10 +3547,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 @@ -3567,8 +3567,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 @@ -3745,9 +3745,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); } @@ -3808,7 +3808,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()) { @@ -3818,17 +3818,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; @@ -3861,7 +3861,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); } } } @@ -3974,9 +3974,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; @@ -3987,9 +3987,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); } } @@ -4016,16 +4016,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); } } @@ -4046,8 +4046,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) @@ -4397,7 +4397,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) { @@ -4405,9 +4405,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); @@ -4420,11 +4420,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; @@ -4459,48 +4459,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: @@ -4536,9 +4536,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); } } @@ -4555,9 +4555,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); @@ -4571,7 +4571,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)); @@ -4592,7 +4592,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); } } } @@ -4804,7 +4804,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) { @@ -4816,7 +4816,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) { @@ -4828,7 +4828,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) { @@ -4840,7 +4840,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) { @@ -4852,7 +4852,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) { @@ -4864,7 +4864,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) { @@ -4876,7 +4876,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) { @@ -4888,7 +4888,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) { @@ -4900,7 +4900,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) { @@ -4912,7 +4912,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) { @@ -5235,7 +5235,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(); @@ -5309,7 +5309,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(); @@ -5815,14 +5815,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; } @@ -5836,7 +5836,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)); @@ -5858,12 +5858,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) { @@ -5922,9 +5922,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; @@ -5997,28 +5997,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); } } } @@ -6031,24 +6031,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); - if (animAssoc) - animAssoc->blendDelta = -1000.0f; animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_RHS); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_FT); + animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_LHS); + if (animAssoc) + animAssoc->blendDelta = -1000.0f; + animAssoc = RpAnimBlendClumpGetAssociation((RpClump*)m_rwObject, ANIM_BIKE_DRIVEBY_FORWARD); if (animAssoc) animAssoc->blendDelta = -1000.0f; } @@ -6518,11 +6518,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; @@ -6777,7 +6777,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; @@ -6805,11 +6805,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/PedFight.cpp b/src/peds/PedFight.cpp index e8fee649..66c71927 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -31,38 +31,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 } }; static PedOnGroundState @@ -182,14 +182,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; @@ -204,7 +204,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)); @@ -240,7 +240,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)); @@ -284,7 +284,7 @@ CPed::SetAttack(CEntity *victim) SetPedState(PED_ATTACK); bIsAttacking = false; - CAnimBlendAssociation *animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK_START, 8.0f); + CAnimBlendAssociation *animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_EXTRA1, 8.0f); animAssoc->SetRun(); if (animAssoc->currentTime == animAssoc->hierarchy->totalLength) animAssoc->SetCurrentTime(0.0f); @@ -304,7 +304,7 @@ CPed::SetAttack(CEntity *victim) if (m_nPedState != PED_ATTACK) { SetPedState(PED_ATTACK); bIsAttacking = false; - CAnimBlendAssociation* animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK_START, 8.0f); + CAnimBlendAssociation* animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_EXTRA1, 8.0f); animAssoc->SetRun(); if (animAssoc->currentTime == animAssoc->hierarchy->totalLength) animAssoc->SetCurrentTime(0.0f); @@ -397,7 +397,7 @@ CPed::SetAttack(CEntity *victim) AnimationId fireAnim; if (curWeapon->IsFlagSet(WEAPONFLAG_THROW)) - fireAnim = ANIM_THROWABLE_START_THROW; + fireAnim = ANIM_ATTACK_EXTRA1; else if (CGame::nastyGame && (curWeapon->IsFlagSet(WEAPONFLAG_GROUND_2ND) || curWeapon->IsFlagSet(WEAPONFLAG_GROUND_3RD))) { PedOnGroundState pedOnGround = CheckForPedsOnGroundToAttack(this, nil); if (pedOnGround > PED_IN_FRONT_OF_ATTACKER || pedOnGround == NO_PED && bIsStanding && m_pCurSurface && m_pCurSurface->IsVehicle()) { @@ -503,19 +503,19 @@ 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; } } } - } else if (attackAssoc && attackAssoc->animId == ANIM_THROWABLE_START_THROW && currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { + } else if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_EXTRA1 && currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { if ((!ped->IsPlayer() || ((CPlayerPed*)ped)->m_bHaveTargetSelected) && ped->IsPlayer()) { attackAssoc->blendDelta = -1000.0f; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROWU); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_2); } else { attackAssoc->blendDelta = -1000.0; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROW); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_1); } newAnim->SetFinishCallback(FinishedAttackCB, ped); @@ -525,7 +525,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; } @@ -538,17 +538,17 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) AnimationId groundAnim = GetFireAnimGround(currentWeapon); CAnimBlendAssociation *groundAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), groundAnim); if (!(groundAnimAssoc && (groundAnimAssoc->blendAmount > 0.95f || groundAnimAssoc->blendDelta > 0.0f))) { - if (attackAssoc && attackAssoc->animId == ANIM_MELEE_ATTACK) { + if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_1) { newAnim = CAnimManager::BlendAnimation( ped->GetClump(), currentWeapon->m_AnimToPlay, GetSecondFireAnim(currentWeapon), 8.0f); } else { newAnim = CAnimManager::BlendAnimation( - ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK, 8.0f); + ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_1, 8.0f); } newAnim->SetFinishCallback(FinishedAttackCB, ped); } } else { - if (attackAssoc && attackAssoc->animId == ANIM_MELEE_ATTACK && currentWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) { + if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_1 && currentWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) { attackAssoc->blendDelta = -8.0f; attackAssoc->flags |= ASSOC_DELETEFADEDOUT; ped->ClearAttack(); @@ -556,7 +556,7 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) } if (attackAssoc) { if (currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { - if ((attackAssoc->animId == ANIM_THROWABLE_THROW || attackAssoc->animId == ANIM_THROWABLE_THROWU) && ped->GetWeapon()->m_nAmmoTotal > 0) { + if ((attackAssoc->animId == ANIM_ATTACK_1 || attackAssoc->animId == ANIM_ATTACK_2) && ped->GetWeapon()->m_nAmmoTotal > 0) { ped->RemoveWeaponModel(currentWeapon->m_nModelId); ped->AddWeaponModel(currentWeapon->m_nModelId); } @@ -584,7 +584,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; } @@ -831,12 +831,12 @@ CPed::Attack(void) if(ourWeapon->m_AnimToPlay != ASSOCGRP_BASEBALLBAT && ourWeapon->m_AnimToPlay != ASSOCGRP_GOLFCLUB) { if (ourWeapon->m_eWeaponFire != WEAPON_FIRE_MELEE) { - TransformToNode(firePos, (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND && ourWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) ? PED_FOOTR : PED_HANDR); + TransformToNode(firePos, (weaponAnimAssoc->animId == ANIM_ATTACK_2 && ourWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) ? PED_FOOTR : PED_HANDR); } else { firePos = GetMatrix() * firePos; } } else { - if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND) + if (weaponAnimAssoc->animId == ANIM_ATTACK_2) firePos.z = 0.7f * ourWeapon->m_fRadius - 1.0f; firePos = GetMatrix() * firePos; @@ -859,7 +859,7 @@ CPed::Attack(void) } switch (ourWeapon->m_AnimToPlay) { case ASSOCGRP_UNARMED: - if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK || weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_START) + if (weaponAnimAssoc->animId == ANIM_ATTACK_1 || weaponAnimAssoc->animId == ANIM_ATTACK_EXTRA1) DMAudio.PlayOneShot(m_audioEntityId, SOUND_FIGHT_46, (damagerType | (GetWeapon()->m_eWeaponType << 8))); break; case ASSOCGRP_KNIFE: @@ -882,7 +882,7 @@ CPed::Attack(void) } else { CVector firePos = ourWeapon->m_vecFireOffset; - if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND) + if (weaponAnimAssoc->animId == ANIM_ATTACK_2) firePos.z = 0.7f * ourWeapon->m_fRadius - 1.0f; firePos = GetMatrix() * firePos; @@ -990,13 +990,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); } @@ -1050,9 +1050,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(); @@ -1068,10 +1068,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); @@ -1131,7 +1131,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); } @@ -1153,8 +1153,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; @@ -1169,16 +1169,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); @@ -1197,30 +1197,30 @@ 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; } 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; } @@ -1245,11 +1245,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; } @@ -1325,14 +1325,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; @@ -1347,10 +1347,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); @@ -1404,7 +1404,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) { @@ -1927,25 +1927,25 @@ 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); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); if (animAssoc) animAssoc->flags |= ASSOC_DELETEFADEDOUT; 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; @@ -2229,7 +2229,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; } @@ -2364,7 +2364,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++; @@ -2389,7 +2389,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); } @@ -2429,7 +2429,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; @@ -2441,7 +2441,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); @@ -2455,16 +2455,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); @@ -2474,30 +2474,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; } @@ -2506,10 +2506,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; } @@ -2527,26 +2527,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; @@ -2555,7 +2555,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)); } } @@ -2601,13 +2601,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; @@ -2629,7 +2629,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; @@ -2677,9 +2677,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; @@ -2688,14 +2688,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; @@ -2712,28 +2712,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; @@ -2761,12 +2761,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; } @@ -2774,28 +2774,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; @@ -2836,56 +2836,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; @@ -2925,16 +2925,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; @@ -2944,7 +2944,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: @@ -2959,36 +2959,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; @@ -3006,7 +3006,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) @@ -3014,16 +3014,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; @@ -3056,7 +3056,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; @@ -3133,7 +3133,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; @@ -3486,7 +3486,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) { @@ -3507,22 +3507,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) { @@ -3539,17 +3539,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()) @@ -3802,7 +3802,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)) { @@ -3846,18 +3846,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) { @@ -3868,7 +3868,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) { @@ -3895,7 +3895,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); } } } @@ -3993,9 +3993,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; @@ -4044,35 +4044,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 && @@ -4081,13 +4081,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) { @@ -4104,11 +4104,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) @@ -4117,11 +4117,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) @@ -4133,9 +4133,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); } } } @@ -4146,32 +4146,32 @@ 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; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE_2ND); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_2); if (weaponAssoc) { weaponAssoc->blendDelta = animDelta; weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE_3RD); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_3); if (weaponAssoc) { 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_ATTACK_EXTRA2); 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 fd0bf643..e457189a 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,11 +329,11 @@ 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); + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); if (!((curRunStopAssoc && curRunStopAssoc->IsRunning()) || (curRunStopRAssoc && curRunStopRAssoc->IsRunning()))) { @@ -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,10 +403,10 @@ 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); + fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); delete fightIdleAnim; delete curSprintAssoc; @@ -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(); @@ -1258,7 +1258,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; } @@ -1700,24 +1700,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); } @@ -1947,11 +1947,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/render/WaterCannon.cpp b/src/render/WaterCannon.cpp index 53b4d30e..da05a1ca 100644 --- a/src/render/WaterCannon.cpp +++ b/src/render/WaterCannon.cpp @@ -242,7 +242,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); diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index f1bbf08f..cdc500e7 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -3091,8 +3091,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; @@ -3874,11 +3874,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){ @@ -3917,11 +3917,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); } } @@ -4640,55 +4640,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; } @@ -5821,13 +5821,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) @@ -5840,14 +5840,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 a84a43e5..3e4c3a31 100644 --- a/src/vehicles/Bike.cpp +++ b/src/vehicles/Bike.cpp @@ -572,7 +572,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; @@ -1013,7 +1013,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; } @@ -2034,35 +2034,35 @@ CBike::DoDriveByShootings(void) if(lookingLeft || lookingRight || CPad::GetPad(0)->GetCarGunFired()){ if(lookingLeft){ - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS); - if(anim) - anim->blendDelta = -1000.0f; - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FT); - if(anim) - anim->blendDelta = -1000.0f; - 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_RHS); - }else if(lookingRight){ 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_LHS); if(anim == nil || anim->blendDelta < 0.0f) anim = CAnimManager::AddAnimation(pDriver->GetClump(), m_bikeAnimType, ANIM_BIKE_DRIVEBY_LHS); - }else{ + }else if(lookingRight){ anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_LHS); if(anim) anim->blendDelta = -1000.0f; + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD); + if(anim) + anim->blendDelta = -1000.0f; + 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_RHS); + }else{ 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_LHS); + if(anim) + anim->blendDelta = -1000.0f; + 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()) { @@ -2073,13 +2073,13 @@ CBike::DoDriveByShootings(void) } }else{ weapon->Reload(); - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_RHS); - if(anim) - anim->blendDelta = -1000.0f; 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_RHS); + if(anim) + anim->blendDelta = -1000.0f; + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_BIKE_DRIVEBY_FORWARD); if(anim) anim->blendDelta = -1000.0f; } @@ -2573,7 +2573,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; @@ -2611,7 +2611,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); @@ -2625,14 +2625,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()); @@ -2641,11 +2641,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()); } @@ -2654,11 +2654,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()); } @@ -2670,7 +2670,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; @@ -2695,10 +2695,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; @@ -2714,10 +2714,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()) @@ -2732,7 +2732,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 46dec193..0bc653c6 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -1439,19 +1439,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()) { @@ -1462,10 +1462,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 38550c38..bf14416c 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/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/Weapon.cpp b/src/weapons/Weapon.cpp index 3ef7d2a1..7a54941f 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); @@ -1351,7 +1351,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 +1364,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 +1380,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 +1436,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 +1809,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 +1849,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 +2535,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 +2968,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; From 97cf189d15b603055cd3371b5c726498892353ba Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 27 Jan 2021 20:19:22 +0200 Subject: [PATCH 005/113] Fix subtitle shadow --- src/render/Hud.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index b7c78eb1..9c543043 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1172,7 +1172,13 @@ 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::SetDropShadowPosition(2); + else +#else + CFont::SetDropShadowPosition(0); +#endif CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD)); CFont::SetColor(CRGBA(225, 225, 225, 255)); @@ -1182,10 +1188,6 @@ void CHud::Draw() onceItWasWidescreen = true; if (FrontEndMenuManager.m_PrefsShowSubtitles || !CCutsceneMgr::IsRunning()) { -#ifdef CUTSCENE_BORDERS_SWITCH - if (!FrontEndMenuManager.m_PrefsCutsceneBorders) - CFont::SetDropShadowPosition(2); -#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); From e8a10748a44448825b379a4db5ad46677cb291ce Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 27 Jan 2021 20:39:22 +0200 Subject: [PATCH 006/113] fix fix --- src/render/Hud.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index 9c543043..a0f3c3ee 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1176,9 +1176,8 @@ void CHud::Draw() if (!FrontEndMenuManager.m_PrefsCutsceneBorders) CFont::SetDropShadowPosition(2); else -#else - CFont::SetDropShadowPosition(0); #endif + CFont::SetDropShadowPosition(0); CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD)); CFont::SetColor(CRGBA(225, 225, 225, 255)); From ab939e059b4263fec4e26425bce6a12ecf88d2e6 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 27 Jan 2021 18:26:08 +0300 Subject: [PATCH 007/113] Clean up POSIX streaming code --- src/core/CdStream.h | 2 +- src/core/CdStreamPosix.cpp | 29 +++++++------ src/core/Streaming.cpp | 86 +++++++++++++++++++++++++------------- src/core/Streaming.h | 4 ++ src/core/config.h | 11 +++-- src/skel/glfw/glfw.cpp | 7 +++- 6 files changed, 92 insertions(+), 47 deletions(-) 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..8a27665a 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -21,9 +21,9 @@ #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 struct CdReadInfo { @@ -99,6 +99,7 @@ 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); @@ -245,10 +246,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 +319,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; @@ -447,7 +450,7 @@ void *CdStreamThread(void *param) if ( pChannel->bLocked ) { pChannel->bLocked = 0; - sem_post(pChannel->pDoneSemaphore); + sem_post(pChannel->pDoneSemaphore); } pChannel->bReading = false; } @@ -524,7 +527,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/Streaming.cpp b/src/core/Streaming.cpp index 6f0e3153..b28a99fc 100644 --- a/src/core/Streaming.cpp +++ b/src/core/Streaming.cpp @@ -207,11 +207,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); @@ -2305,9 +2309,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) { @@ -2326,14 +2331,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 (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; } @@ -2361,8 +2374,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); @@ -2370,33 +2393,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; - // Try again on error - while (CdStreamSync(processI) != STREAM_NONE) { - CdStreamRead(processI, ms_pStreamingBuffer[processI], imgOffset+streamPoses[processI], streamSizes[processI]); - } - 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]); + //printf("process: order %d, ch %d, id %d\n", processI, nextChannel, streamIds[nextChannel]); - if(streamIds[processI] < STREAM_OFFSET_TXD){ - CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(streamIds[processI]); + // Try again on error + while (CdStreamSync(nextChannel) != STREAM_NONE) { + CdStreamRead(nextChannel, ms_pStreamingBuffer[nextChannel], imgOffset+streamPoses[nextChannel], streamSizes[nextChannel]); + } + ms_aInfoForModel[streamIds[nextChannel]].m_loadState = STREAMSTATE_READING; + + 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; @@ -2443,7 +2473,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) @@ -2500,7 +2530,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; } @@ -3216,4 +3246,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 a67384f6..4ddf0b3b 100644 --- a/src/core/Streaming.h +++ b/src/core/Streaming.h @@ -88,7 +88,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/config.h b/src/core/config.h index 7e039ef6..329d70b9 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -393,11 +393,12 @@ 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 @@ -405,6 +406,8 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #undef NO_ISLAND_LOADING #endif +// ------- + #if defined __MWERKS__ || defined VANILLA_DEFINES #define FINAL #undef CHATTYSPLASH diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 431697dc..aab78c6d 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1271,10 +1271,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) { @@ -1528,11 +1529,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 /* From a216bb56ee5877ec21ac22fdf1f7ffcb2fccde87 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 27 Jan 2021 18:26:48 +0300 Subject: [PATCH 008/113] Attempt to fix input delays on GLFW --- src/skel/glfw/glfw.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index aab78c6d..97a77827 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1448,7 +1448,7 @@ 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) @@ -1459,7 +1459,6 @@ 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); } } From 9c2f06740312241bc2a71d71cb7f5459c0e16a8a Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 27 Jan 2021 22:14:47 +0300 Subject: [PATCH 009/113] Change joystick DB with latest offical one --- gamefiles/gamecontrollerdb.txt | 1122 ++++++++++++++++++++++++++------ 1 file changed, 933 insertions(+), 189 deletions(-) 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, From be88a42bad207a2c723c3cdb152a872e1a7f14af Mon Sep 17 00:00:00 2001 From: erorcun Date: Thu, 28 Jan 2021 00:51:43 +0300 Subject: [PATCH 010/113] Fix some Collision NaN/inf's --- src/collision/Collision.cpp | 21 +++++++++++++++++++-- src/core/World.cpp | 8 ++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/collision/Collision.cpp b/src/collision/Collision.cpp index bead5183..50c22e32 100644 --- a/src/collision/Collision.cpp +++ b/src/collision/Collision.cpp @@ -307,8 +307,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; @@ -1127,8 +1135,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/core/World.cpp b/src/core/World.cpp index bc698c83..9da36e7a 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -452,10 +452,10 @@ CWorld::ProcessVerticalLineSector(CSector §or, const CColLine &line, CColPoi } bool -CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist, +CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &mindist, CEntity *&entity, bool ignoreSeeThrough, CStoredCollPoly *poly) { - float mindist = dist; + float dist = mindist; CPtrNode *node; CEntity *e; CColModel *colmodel; @@ -472,8 +472,8 @@ CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CCol } } - if(mindist < dist) { - dist = mindist; + if(dist < mindist) { + mindist = dist; return true; } else return false; From 8a7c7efe855b06825d29e8fcfbd3abc4d9ec3336 Mon Sep 17 00:00:00 2001 From: kusst <49589982+kusst@users.noreply.github.com> Date: Wed, 27 Jan 2021 23:56:23 +0100 Subject: [PATCH 011/113] ifdefs + fix progressbar being under dialogbox --- src/rw/TexRead.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index 5c7f7158..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)); From e1e4be9017246cc6b4d14d5b5d346c5c142941c0 Mon Sep 17 00:00:00 2001 From: erorcun Date: Thu, 28 Jan 2021 03:49:50 +0300 Subject: [PATCH 012/113] Use previous naming & fix LineOfSightSectorList too --- src/core/World.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/World.cpp b/src/core/World.cpp index 9da36e7a..ef1cc948 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -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)){ @@ -452,10 +452,10 @@ CWorld::ProcessVerticalLineSector(CSector §or, const CColLine &line, CColPoi } bool -CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &mindist, +CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CColPoint &point, float &dist, CEntity *&entity, bool ignoreSeeThrough, CStoredCollPoly *poly) { - float dist = mindist; + float mindist = dist; CPtrNode *node; CEntity *e; CColModel *colmodel; @@ -466,14 +466,14 @@ 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; } } - if(dist < mindist) { - mindist = dist; + if(mindist < dist) { + dist = mindist; return true; } else return false; From 9e3c19237630d689a0edff0bbec91226bba567e9 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 28 Jan 2021 15:35:35 +0100 Subject: [PATCH 013/113] fix some little UB --- src/extras/custompipes_gl.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index 67be4afd..8a574579 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -333,7 +333,12 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) V3d eyePos = rw::engine->currentCamera->getFrame()->getLTM()->pos; glUniform3fv(U(u_eye), 1, (float*)&eyePos); - glUniform4fv(U(u_reflProps), 1, (float*)&GlossMult); + float reflProps[4]; + reflProps[0] = GlossMult; + reflProps[1] = 0.0f; + reflProps[2] = 0.0f; + reflProps[3] = 0.0f; + glUniform4fv(U(u_reflProps), 1, reflProps); SetRenderState(VERTEXALPHA, TRUE); SetRenderState(SRCBLEND, BLENDONE); From 7056f9954f0e5afc8aa9c8c25a725cce1439cfd6 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 28 Jan 2021 23:23:49 +0300 Subject: [PATCH 014/113] fix --- src/control/Script3.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp index 1ac18fa8..acd3988f 100644 --- a/src/control/Script3.cpp +++ b/src/control/Script3.cpp @@ -1701,6 +1701,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command) pBoat->AutoPilot.m_nCarMission = MISSION_GOTOCOORDS_ASTHECROWSWIMS; pBoat->AutoPilot.m_vecDestinationCoors = pos; pBoat->SetStatus(STATUS_PHYSICS); + pBoat->bEngineOn = true; pBoat->AutoPilot.m_nCruiseSpeed = Max(1, pBoat->AutoPilot.m_nCruiseSpeed); pBoat->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds(); return 0; From 810bad9fd8cf344f7d73b82f042910a4c443b0f7 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 29 Jan 2021 01:44:33 +0300 Subject: [PATCH 015/113] Fix some UBs --- src/audio/MusicManager.cpp | 5 ++++- src/audio/MusicManager.h | 2 +- src/control/PathFind.cpp | 2 +- src/control/PathFind.h | 8 ++++---- src/core/Frontend.cpp | 25 ++++++++++++++++--------- src/core/main.cpp | 5 +++++ src/peds/Ped.h | 2 +- src/skel/crossplatform.cpp | 8 ++++---- 8 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index acfe09c3..374de081 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -1223,8 +1223,11 @@ cMusicManager::DisplayRadioStationName() gNumRetunePresses++; } else +#ifdef FIX_BUGS + track = m_nFrontendTrack == NO_TRACK ? POLICE_RADIO : m_nFrontendTrack; +#else track = m_nFrontendTrack; - +#endif wchar* string = nil; switch (track) { diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h index f103e84e..5691b7b8 100644 --- a/src/audio/MusicManager.h +++ b/src/audio/MusicManager.h @@ -29,7 +29,7 @@ public: uint32 m_nResetTime; bool m_bRadioSetByScript; uint8 m_nRadioStation; - uint32 m_nRadioPosition; + int32 m_nRadioPosition; uint32 m_nRadioInCar; uint32 m_nFrontendTrack; uint32 m_nPlayingTrack; diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp index 2d3972f6..bf72199d 100644 --- a/src/control/PathFind.cpp +++ b/src/control/PathFind.cpp @@ -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/core/Frontend.cpp b/src/core/Frontend.cpp index 5fe3d6be..f38efb66 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -5567,33 +5567,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) { + if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - lastTickIncrease > 10) { exitSignalTimer++; lastTickIncrease = CTimer::GetTimeInMillisecondsPauseMode(); } #else - static PauseModeTime sincePress = 0; - sincePress += frameTime; - if (sincePress > 500) + static PauseModeTime firstTick = CTimer::GetTimeInMillisecondsPauseMode(); + if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - firstTick > 1000) { exitSignalTimer = 150; + } #endif static CSprite2d *splash = nil; if (splash == nil) splash = LoadSplash("OUTRO"); - 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(MENU_X(28.0f), MENU_Y(8.0f), MENU_X(157.0f), 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; diff --git a/src/core/main.cpp b/src/core/main.cpp index 9a0308dd..a08a9535 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1065,8 +1065,13 @@ DisplayGameDebugText() #endif FrameSamples++; +#ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND + FramesPerSecondCounter += frameTime / 1000.f; // convert to seconds + FramesPerSecond = FrameSamples / FramesPerSecondCounter; +#else FramesPerSecondCounter += 1000.0f / (CTimer::GetTimeStepNonClippedInSeconds() * 1000.0f); FramesPerSecond = FramesPerSecondCounter / FrameSamples; +#endif if ( FrameSamples > 30 ) { diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 8b091d15..8b48b1e0 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -639,7 +639,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; 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; } From 2fc6b542bcf6b8cbfc4a62d66024dbb5b8a6a830 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 29 Jan 2021 01:18:32 +0100 Subject: [PATCH 016/113] waterlevel fix --- src/render/WaterLevel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index 08fd5e6e..dc589970 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -716,7 +716,7 @@ CWaterLevel::GetWaterLevel(float fX, float fY, float fZ, float *pfOutLevel, bool uint8 nBlock = aWaterFineBlockList[x][y]; - if ( nBlock == 0x80 ) + if ( nBlock == NO_WATER ) return false; ASSERT( pfOutLevel != nil ); @@ -758,7 +758,7 @@ CWaterLevel::GetWaterLevelNoWaves(float fX, float fY, float fZ, float *pfOutLeve uint8 nBlock = aWaterFineBlockList[x][y]; - if ( nBlock == 0x80 ) + if ( nBlock == NO_WATER ) return false; ASSERT( pfOutLevel != nil ); From 8482180706815434e6a56267edfedbf2bbc05851 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 29 Jan 2021 01:20:20 +0100 Subject: [PATCH 017/113] waterlevel fix fix --- src/render/WaterLevel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index dc589970..9b2dd816 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -714,7 +714,7 @@ 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 == NO_WATER ) return false; @@ -756,7 +756,7 @@ 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 == NO_WATER ) return false; From 595a000f6a72a0bf376f5c019a76bcec9dc98c2f Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 29 Jan 2021 13:43:50 +0100 Subject: [PATCH 018/113] fix shutdown --- src/core/Game.cpp | 4 ++-- src/render/WaterLevel.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 83d30bb4..ed9d67f4 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -591,7 +591,6 @@ bool CGame::ShutDown(void) gPhoneInfo.Shutdown(); CWeapon::ShutdownWeapons(); CPedType::Shutdown(); - CMBlur::MotionBlurClose(); for (int32 i = 0; i < NUMPLAYERS; i++) { @@ -617,7 +616,7 @@ bool CGame::ShutDown(void) CStreaming::Shutdown(); CTxdStore::GameShutdown(); CCollision::Shutdown(); - CWaterLevel::DestroyWavyAtomic(); + CWaterLevel::Shutdown(); CRubbish::Shutdown(); CClouds::Shutdown(); CShadows::Shutdown(); @@ -626,6 +625,7 @@ bool CGame::ShutDown(void) CWeaponEffects::Shutdown(); CParticle::Shutdown(); CPools::ShutDown(); + CHud::ReInitialise(); CTxdStore::RemoveTxdSlot(gameTxdSlot); CMBlur::MotionBlurClose(); CdStreamRemoveImages(); diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index 9b2dd816..d67b9d42 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -318,6 +318,7 @@ CWaterLevel::Shutdown() _DELETE_TEXTURE(gpWaterTex); _DELETE_TEXTURE(gpWaterEnvTex); + _DELETE_TEXTURE(gpWaterWakeTex); _DELETE_TEXTURE(gpWaterEnvBaseTex); #undef _DELETE_TEXTURE From 982b024c5c7564251358293e160bc674e555d9cd Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 29 Jan 2021 16:25:32 +0300 Subject: [PATCH 019/113] CdStreamPosix fixes --- src/core/CdStreamPosix.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index 8a27665a..e18280e5 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -76,7 +76,7 @@ CdStreamInitThread(void) gChannelRequestQ.tail = 0; gChannelRequestQ.size = gNumChannels + 1; ASSERT(gChannelRequestQ.items != nil ); - gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 1); + gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 0); if (gCdStreamSema == SEM_FAILED) { @@ -91,7 +91,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 = sem_open(semName, O_CREAT, 0644, 0); if (gpReadInfo[i].pDoneSemaphore == SEM_FAILED) { @@ -102,7 +102,7 @@ CdStreamInitThread(void) #ifdef ONE_THREAD_PER_CHANNEL sprintf(semName,"/semaphore_start%d",i); - gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 1); + gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 0); if (gpReadInfo[i].pStartSemaphore == SEM_FAILED) { @@ -171,6 +171,7 @@ CdStreamInit(int32 numChannels) gNumImages = 0; gNumChannels = numChannels; + ASSERT( gNumChannels != 0 ); gpReadInfo = (CdReadInfo *)calloc(numChannels, sizeof(CdReadInfo)); ASSERT( gpReadInfo != nil ); @@ -398,7 +399,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){ From 934aa92a9b9c2bfd2bf4af8316bf12fb83416902 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 29 Jan 2021 16:41:34 +0100 Subject: [PATCH 020/113] add NewRenderer ini read/write, fix backfaceculling read --- src/core/re3.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index d0006fd3..83ef7c88 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -406,6 +406,10 @@ bool LoadINISettings() ReadIniIfExists("CustomPipesValues", "LightmapMult", &CustomPipes::LightmapMult); ReadIniIfExists("CustomPipesValues", "GlossMult", &CustomPipes::GlossMult); #endif + ReadIniIfExists("Rendering", "BackfaceCulling", &gBackfaceCulling); +#ifdef NEW_RENDERER + ReadIniIfExists("Rendering", "NewRender", &gbNewRenderer); +#endif #ifdef PROPER_SCALING ReadIniIfExists("Draw", "ProperScaling", &CDraw::ms_bProperScaling); @@ -495,6 +499,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); From 7db28f9f7f46431fcad9d977275f540e3cbc5a6f Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 29 Jan 2021 16:43:17 +0100 Subject: [PATCH 021/113] fix NewRender typo --- src/core/re3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 83ef7c88..87aca59c 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -408,7 +408,7 @@ bool LoadINISettings() #endif ReadIniIfExists("Rendering", "BackfaceCulling", &gBackfaceCulling); #ifdef NEW_RENDERER - ReadIniIfExists("Rendering", "NewRender", &gbNewRenderer); + ReadIniIfExists("Rendering", "NewRenderer", &gbNewRenderer); #endif #ifdef PROPER_SCALING From c4328afce7e2a0b48b9d0d2b225496e29fff1c0a Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 29 Jan 2021 03:44:12 +0300 Subject: [PATCH 022/113] Even more fixes & shorten quit screen --- src/control/Garages.cpp | 8 ++++++++ src/core/Frontend.cpp | 2 +- src/core/Radar.cpp | 2 +- src/peds/Ped.cpp | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index e3b5aa8c..333f3a6f 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -1997,7 +1997,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())) { @@ -2013,7 +2017,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/core/Frontend.cpp b/src/core/Frontend.cpp index f38efb66..16a70697 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -5582,7 +5582,7 @@ CMenuManager::DrawQuitGameScreen(void) } #else static PauseModeTime firstTick = CTimer::GetTimeInMillisecondsPauseMode(); - if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - firstTick > 1000) { + if (alpha == 255 && CTimer::GetTimeInMillisecondsPauseMode() - firstTick > 750) { exitSignalTimer = 150; } #endif diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 8cd86344..4bb9c966 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -824,7 +824,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) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 6a3df18b..cec88580 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -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()) { From 990637bf52142eb09fb9c38d9c9a5c8abd98050b Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 29 Jan 2021 17:57:51 +0100 Subject: [PATCH 023/113] waterlevel: use macro for 400.0f --- src/render/WaterLevel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index d67b9d42..1ba615c0 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -1077,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 ) @@ -1463,7 +1463,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)) @@ -1473,7 +1473,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, From dbf5c06144d6ccc74fce696ea20571939be3ad4a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 30 Jan 2021 14:53:51 +0300 Subject: [PATCH 024/113] fixed bike bomb --- src/core/World.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/World.cpp b/src/core/World.cpp index ef1cc948..40c060c0 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -2239,8 +2239,12 @@ CWorld::UseDetonator(CEntity *pEntity) { int32 i = CPools::GetVehiclePool()->GetSize(); while(--i >= 0) { +#ifdef FIX_BUGS + CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); +#else CAutomobile *pVehicle = (CAutomobile *)CPools::GetVehiclePool()->GetSlot(i); - if(pVehicle && !pVehicle->m_vehType && pVehicle->m_bombType == CARBOMB_REMOTE && +#endif + if(pVehicle && pVehicle->m_bombType == CARBOMB_REMOTE && pVehicle->m_pBombRigger == pEntity) { pVehicle->m_bombType = CARBOMB_NONE; pVehicle->m_nBombTimer = 500; From 8b08098d4e9c19b6047fade5af2332674d32993c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 30 Jan 2021 20:26:10 +0300 Subject: [PATCH 025/113] fix --- src/control/Garages.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 333f3a6f..1e606fb1 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -1285,7 +1285,7 @@ bool CGarage::IsAnyOtherCarTouchingGarage(CVehicle * pException) uint32 i = CPools::GetVehiclePool()->GetSize(); while (i--) { CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); - if (!pVehicle || pVehicle == pException) + if (!pVehicle || pVehicle == pException || pVehicle->GetStatus() == STATUS_WRECKED) continue; if (!IsEntityTouching3D(pVehicle)) continue; From c193ade58b8956d3a72ef91507c8ca23a043828d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 30 Jan 2021 20:46:37 +0200 Subject: [PATCH 026/113] Font fixes --- src/render/Font.cpp | 13 ++++++++----- src/render/Hud.cpp | 4 +++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index de1ee8b4..0f5930ee 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -406,16 +406,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); } @@ -585,7 +588,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 diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index a0f3c3ee..e0419a65 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1173,8 +1173,10 @@ void CHud::Draw() CFont::SetCentreOn(); CFont::SetPropOn(); #ifdef CUTSCENE_BORDERS_SWITCH - if (!FrontEndMenuManager.m_PrefsCutsceneBorders) + if (!FrontEndMenuManager.m_PrefsCutsceneBorders) { + CFont::SetDropColor(CRGBA(0, 0, 0, 255)); CFont::SetDropShadowPosition(2); + } else #endif CFont::SetDropShadowPosition(0); From 5dfe396af3d2c3e2c7c0d01ba96f3c15f01cf888 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 30 Jan 2021 20:13:25 +0100 Subject: [PATCH 027/113] use macro for waterlevel z offset --- src/render/WaterLevel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index 1ba615c0..3d33dbf6 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; From 2420325c0220fb0b3fb465a007140652f8031618 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 31 Jan 2021 01:45:07 +0300 Subject: [PATCH 028/113] fix --- src/control/Garages.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 1e606fb1..7cf58d03 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2234,6 +2234,8 @@ void CGarages::SetAllDoorsBackToOriginalHeight() default: aGarages[i].RefreshDoorPointers(true); if (aGarages[i].m_pDoor1) { + aGarages[i].m_pDoor1->GetMatrix().GetPosition().x = aGarages[i].m_fDoor1X; + aGarages[i].m_pDoor1->GetMatrix().GetPosition().y = aGarages[i].m_fDoor1Y; aGarages[i].m_pDoor1->GetMatrix().GetPosition().z = aGarages[i].m_fDoor1Z; if (aGarages[i].m_pDoor1->IsObject()) ((CObject*)aGarages[i].m_pDoor1)->m_objectMatrix.GetPosition().z = aGarages[i].m_fDoor1Z; @@ -2243,6 +2245,8 @@ void CGarages::SetAllDoorsBackToOriginalHeight() aGarages[i].m_pDoor1->UpdateRwFrame(); } if (aGarages[i].m_pDoor2) { + aGarages[i].m_pDoor2->GetMatrix().GetPosition().x = aGarages[i].m_fDoor2X; + aGarages[i].m_pDoor2->GetMatrix().GetPosition().y = aGarages[i].m_fDoor2Y; aGarages[i].m_pDoor2->GetMatrix().GetPosition().z = aGarages[i].m_fDoor2Z; if (aGarages[i].m_pDoor2->IsObject()) ((CObject*)aGarages[i].m_pDoor2)->m_objectMatrix.GetPosition().z = aGarages[i].m_fDoor2Z; From 2e37001881eab8932dafcfd345fd9bb641bb70f4 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 31 Jan 2021 01:19:25 +0100 Subject: [PATCH 029/113] fix UB and new renderer crashes --- src/render/Renderer.cpp | 4 ++++ src/rw/VisibilityPlugins.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 8c4714fb..dfbc02d7 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1394,6 +1394,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/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index bdde5e33..3a303194 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; From 264d7d98d72dd89f8259fbedad56c42b5bdefd55 Mon Sep 17 00:00:00 2001 From: shfil Date: Sun, 31 Jan 2021 15:01:46 +0100 Subject: [PATCH 030/113] fix realloc --- src/core/re3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 87aca59c..4b828171 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -713,7 +713,7 @@ void CTweakVars::Add(CTweakVar *var) TweakVarsListSize = 0; } if(TweakVarsListSize > 63) - TweakVarsList = (CTweakVar**) realloc(TweakVarsList, (TweakVarsListSize + 1) * sizeof(*var)); + TweakVarsList = (CTweakVar**) realloc(TweakVarsList, (TweakVarsListSize + 1) * sizeof(CTweakVar*)); TweakVarsList[TweakVarsListSize++] = var; // TweakVarsList.push_back(var); From 3e0dbf42d49a1ce3f7a5aef441558376171c3ac9 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 31 Jan 2021 23:46:45 +0200 Subject: [PATCH 031/113] Add radio off text --- gamefiles/TEXT/american.gxt | Bin 423418 -> 423450 bytes utils/gxt/american.txt | 3 +++ 2 files changed, 3 insertions(+) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 767454de46933b66db4f95ed2a701ff08b148880..1721705d03c59c549e692d13d43d2b048c48505c 100644 GIT binary patch delta 1022 zcmXxiK}Zx)7zgmbyEC#-2ZIiY5_=Hw;Gx-Fp@R_5*;#j**_my2HeD~9M@dqmV1sa! z1S2AaJcMizulA+G z_Jz)1xfug1l}twiUhGPzfSo<*G_d_sIs;rhlI{Z~JD`7syX^S1Q~#~oItIYPyK^$jQ6!WG{4FpIO#DaIQ<&({k5k{V@l3kBa8rgASo|Bvs z=3QR6FU%*s`IPLr;Z)wN2#5J^g~RXTg9?x7Mv3xYZh6ezst?j zG$?yySGV{j>OX|}rU!q7`KCK3DoTbo$a50sTSN04zekwoENHFp*)W|%lei+R(|>T- zJ1Q1K^c@^ukDS8RMC3HaZ;~ye(pY;RpYJ(!ZZw9R!K%4}v*z};+bzBK#%gn8wU+g< hTC8LAj0c7+Ot?tWlS6K9rWvCrPLHxa(^T)&{{tKU?*{+? delta 992 zcmXxiK}Zx)7zgmbyEEdkLkGo;4vBd1GP^5utGCljrh zkQDL|Vi2^aND>SbqJz-Ez(Yik7NUfNkd#oDLZR=?dvh50y>Gtnz4v`HbNg-oezeVG zqWhaEuu{o#4PbIhISZ`pDCdCJ-<9(~>o4UVVCruQ1?JipsJ3yWOtpSXTE?lit6iCD z?{*3Yo;d5U5Igc*Drm9Q3o7s{%2ZGrR;I&_Un5&Kr&>5wX)48hU7AX<_kdg+7!o;a zkH{Vi3*`z1rqeK)AIIyn!hr}Q--zOc&jJGnFUX!x?|{sLaM=xMr_7=t2%GAKl&os_kE^|1r-lUNO9tJiJPHO1oE)ODRV5(CsSQf)QiE}tS zn>dd@R}%N&<+z4EW{JCD|F*Q4M8`vEF$p{-dm(p-!*d!elbZp}ZsxgkIRr*uX^1R0 z3_MDjTGn9mxM7TbBwMCk3PYU!s=;CX6;2a+x1BhPdRkZU9ClA7&ZBPVC|ay&(Xbn5 z$VG7*Kr86*E-@#tda-d%hu>#8)IfwiM=nGMiy_$>9AspFi0lPo(&!kI7CE>hExJ55 zDNU0`<0(1t;;B4YkdE`;NXP%js*Zq}yhQo4pU7s^#~sVS{1>tC9hXLw-x3yS26nf} zo@t9q)W1oKP1k-)i%nOKbd-3|D{}TuG{+V>`7UXZbKPi0$Oh;nn#4tElfJ=v_lR8d z(|@pWHE|Y;bK_q0|PAW#sB~S diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index fcb3a80f..a91a3274 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -14397,6 +14397,9 @@ INVERT PAD VERTICALLY [FEM_NON] NONE +[FEA_FMN] +RADIO OFF + { end of file } [DUMMY] THIS LABEL NEEDS TO BE HERE !!! From 902e539c0d25ec418cd36c735079561f378c712c Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 30 Jan 2021 14:52:48 +0300 Subject: [PATCH 032/113] Overhaul MusicManager - fix radio bugs, scroll to prev station, radio off text --- src/audio/AudioLogic.cpp | 12 +- src/audio/MusicManager.cpp | 530 ++++++++++++++++++-------------- src/audio/MusicManager.h | 24 +- src/audio/audio_enums.h | 2 +- src/audio/soundlist.h | 14 +- src/core/Camera.cpp | 2 +- src/core/ControllerConfig.cpp | 45 +++ src/core/ControllerConfig.h | 4 + src/core/config.h | 6 +- src/render/Hud.cpp | 2 +- src/save/GenericGameStorage.cpp | 6 +- src/save/GenericGameStorage.h | 2 +- src/text/Text.cpp | 2 +- src/vehicles/Vehicle.cpp | 4 +- src/vehicles/Vehicle.h | 2 +- 15 files changed, 393 insertions(+), 264 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index ce543f33..c7b26711 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -8846,7 +8846,7 @@ cAudioManager::ProcessFrontEnd() break; case SOUND_PICKUP_BONUS: case SOUND_FRONTEND_MENU_STARTING: - case SOUND_HUD_SOUND: + case SOUND_HUD: stereo = true; m_sQueueSample.m_nSampleIndex = SFX_INFO_LEFT; center = true; @@ -8882,11 +8882,11 @@ cAudioManager::ProcessFrontEnd() 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: + case SOUND_FRONTEND_HURRICANE: m_sQueueSample.m_nSampleIndex = SFX_HURRICANE_MA; break; case SOUND_BULLETTRACE_1: @@ -8937,9 +8937,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); diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 374de081..d229ef8d 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -21,6 +21,10 @@ #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; @@ -52,7 +56,7 @@ cMusicManager::cMusicManager() 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; @@ -71,27 +75,27 @@ cMusicManager::ResetMusicAfterReload() float afRadioTime[NUM_RADIOS]; m_bRadioSetByScript = false; - m_nRadioStation = WILDSTYLE; + m_nRadioStationScript = WILDSTYLE; m_nRadioPosition = -1; m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; - field_2 = 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; @@ -108,7 +112,7 @@ cMusicManager::ResetMusicAfterReload() 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); @@ -179,7 +183,7 @@ cMusicManager::Initialise() m_bResetTimers = false; m_nResetTime = 0; m_bRadioSetByScript = false; - m_nRadioStation = WILDSTYLE; + 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; @@ -227,7 +231,7 @@ cMusicManager::SetRadioChannelByScript(uint32 station, int32 pos) station = STREAMED_SOUND_CITY_AMBIENT; if (station <= STREAMED_SOUND_RADIO_POLICE) { m_bRadioSetByScript = true; - m_nRadioStation = station; + m_nRadioStationScript = station; m_nRadioPosition = pos == -1 ? -1 : pos % m_aTracks[station].m_nLength; } } @@ -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; @@ -321,11 +325,11 @@ cMusicManager::ChangeMusicMode(uint8 mode) while (SampleManager.IsStreamPlaying(0)) SampleManager.StopStreamedFile(0); 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; @@ -356,7 +360,7 @@ cMusicManager::Service() 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) @@ -371,13 +375,13 @@ cMusicManager::Service() 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; + m_bSetNextStation = false; if (SampleManager.IsStreamPlaying(0)) { if (m_nPlayingTrack != NO_TRACK && !bRadioStatsRecorded) { @@ -390,14 +394,14 @@ cMusicManager::Service() } else { 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; } @@ -417,19 +421,19 @@ cMusicManager::ServiceFrontEndMode() g_bAnnouncementReadPosAlready = false; m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; - m_nStreamedTrack = NO_TRACK; + 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 (m_nNextTrack == m_nPlayingTrack) { if (SampleManager.IsStreamPlaying(0)) { if (m_nVolumeLatency > 0) m_nVolumeLatency--; else { @@ -444,25 +448,25 @@ cMusicManager::ServiceFrontEndMode() ChangeMusicMode(MUSICMODE_GAME); } } else { - field_398F = true; - if (field_3995 || !SampleManager.IsStreamPlaying(0)) { + m_bTrackChangeStarted = true; + if (m_bVerifyNextTrackStartedToPlay || !SampleManager.IsStreamPlaying(0)) { bRadioStatsRecorded = false; - if (SampleManager.IsStreamPlaying(0) || m_nStreamedTrack == NO_TRACK) { - m_nPlayingTrack = m_nStreamedTrack; - field_3995 = false; - field_398F = false; + if (SampleManager.IsStreamPlaying(0) || 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, 0); + SampleManager.StartStreamedFile(m_nNextTrack, trackStartPos, 0); m_nVolumeLatency = 3; m_nCurrentVolume = 0; m_nMaxVolume = 100; SampleManager.SetStreamedVolumeAndPan(m_nCurrentVolume, 63, 0, 0); - 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 { @@ -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,147 +543,183 @@ 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 (!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); - } - - if (!m_bRadioSetByScript) - { - if (gNumRetunePresses != 0) - { - if (--gRetuneCounter == 0) - { - field_2 = true; - gRetuneCounter = 0; - } - } - if (gRetuneCounter) - { - int32 station = gNumRetunePresses + vehicle->m_nRadioStation; - while (station >= RADIO_OFF) station -= RADIO_OFF; - - 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 - { - if (station == WILDSTYLE && gRetuneCounter == NUM_RADIOS + 9) - AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 0.0f); - AudioManager.DoPoliceRadioCrackle(); - } - } - if (RadioStaticCounter < 2 && CTimer::GetTimeInMilliseconds() > RadioStaticTimer + 800) - { - AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_RADIO_CHANGE, 0.0f); - RadioStaticCounter++; - RadioStaticTimer = CTimer::GetTimeInMilliseconds(); - } - 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; + if(vehicle == nil) { + m_nFrontendTrack = STREAMED_SOUND_RADIO_WAVE; // 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_nRadioStation; - vehicle->m_nRadioStation = m_nRadioStation; + 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_nRadioPosition != -1) { - m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition; - m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + // 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(0)) + { + SampleManager.StartStreamedFile(STREAMED_SOUND_RADIO_MP3_PLAYER, 0, 0); + } - gRetuneCounter = 0; - gNumRetunePresses = 0; - field_2 = false; - m_bRadioSetByScript = false; + 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 (--gRetuneCounter == 0) + { + m_bSetNextStation = true; + gRetuneCounter = 0; + } + } +#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; + + // 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 + { + AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_TURN_OFF, 0.0f); + RadioStaticCounter = 5; + } + } + else + { +#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 (RadioStaticCounter < 2 && CTimer::GetTimeInMilliseconds() > RadioStaticTimer + 800) + { + AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_RADIO_CHANGE, 0.0f); + RadioStaticCounter++; + RadioStaticTimer = CTimer::GetTimeInMilliseconds(); + } + 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_WAVE; // 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_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 (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; } - m_nFrontendTrack = GetCarTuning(); + if (m_nRadioPosition != -1) { + m_aTracks[m_nFrontendTrack].m_nPosition = m_nRadioPosition; + m_aTracks[m_nFrontendTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + } + + 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; } @@ -692,7 +731,7 @@ cMusicManager::ServiceGameMode() g_bAnnouncementReadPosAlready = false; m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; - m_nStreamedTrack = NO_TRACK; + m_nNextTrack = NO_TRACK; m_nFrontendTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; } @@ -834,7 +873,7 @@ cMusicManager::ServiceAnnouncement() { if (m_bAnnouncementInProgress) { if (SampleManager.IsStreamPlaying(0)) - m_nPlayingTrack = m_nStreamedTrack; + m_nPlayingTrack = m_nNextTrack; else if (m_nPlayingTrack != NO_TRACK) { m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; @@ -852,9 +891,9 @@ cMusicManager::ServiceAnnouncement() } else { g_bAnnouncementReadPosAlready = false; m_nPlayingTrack = NO_TRACK; - m_nStreamedTrack = m_nAnnouncement; - SampleManager.SetStreamedFileLoopFlag(0, false); - SampleManager.StartStreamedFile(m_nStreamedTrack, 0, 0); + m_nNextTrack = m_nAnnouncement; + SampleManager.SetStreamedFileLoopFlag(0, 0); + SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 0, 0); m_bAnnouncementInProgress = true; } @@ -868,9 +907,9 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped) static bool bRadioStatsRecorded = false; static bool bRadioStatsRecorded2 = false; uint8 volume; - if (!field_398F) - m_nStreamedTrack = m_nFrontendTrack; - if (gRetuneCounter != 0 || field_2) { + if (!m_bTrackChangeStarted) + m_nNextTrack = m_nFrontendTrack; + if (gRetuneCounter != 0 || m_bSetNextStation) { if (SampleManager.IsStreamPlaying(0)) { if (m_nPlayingTrack != NO_TRACK && !bRadioStatsRecorded) { m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); @@ -889,28 +928,35 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped) m_nPlayingTrack = NO_TRACK; } - if (m_nStreamedTrack != m_nPlayingTrack) + if (m_nNextTrack != m_nPlayingTrack) { - field_398F = true; + m_bTrackChangeStarted = true; SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); if (!(AudioManager.m_FrameCounter & 1)) { - if (field_3995 || !SampleManager.IsStreamPlaying(0)) { + if (m_bVerifyNextTrackStartedToPlay || !SampleManager.IsStreamPlaying(0)) { bRadioStatsRecorded2 = false; if (SampleManager.IsStreamPlaying(0)) { - m_nPlayingTrack = m_nStreamedTrack; - field_3995 = false; - field_398F = false; + 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) { + uint32 pos = GetTrackStartPos(m_nNextTrack); + if (m_nNextTrack != NO_TRACK) { SampleManager.SetStreamedFileLoopFlag(1, 0); - SampleManager.StartStreamedFile(m_nStreamedTrack, pos, 0); + SampleManager.StartStreamedFile(m_nNextTrack, pos, 0); if (m_nFrontendTrack < STREAMED_SOUND_CITY_AMBIENT || m_nFrontendTrack > STREAMED_SOUND_AMBSIL_AMBIENT) { m_nVolumeLatency = 10; @@ -923,9 +969,9 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped) ComputeAmbienceVol(true, volume); SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0); } - 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 { @@ -939,8 +985,8 @@ cMusicManager::ServiceTrack(CVehicle *veh, CPed *ped) 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); @@ -1050,14 +1096,14 @@ cMusicManager::StopCutSceneMusic(void) } void -cMusicManager::PlayFrontEndTrack(uint32 track, uint8 bPlayInFrontend) +cMusicManager::PlayFrontEndTrack(uint32 track, uint8 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; } @@ -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,20 +1265,25 @@ cMusicManager::DisplayRadioStationName() if (vehicle) { - uint8 track; + int8 track; 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; + + // We already handle this condition while scrolling back, on key press. No need to change this. if (!DMAudio.IsMP3RadioChannelAvailable() && track == USERTRACK) gNumRetunePresses++; } else #ifdef FIX_BUGS - track = m_nFrontendTrack == NO_TRACK ? POLICE_RADIO : m_nFrontendTrack; + track = GetCarTuning(); // gStreamedSound or veh->m_nRadioStation would also work, but these don't cover police/taxi radios #else track = m_nFrontendTrack; #endif @@ -1244,6 +1303,18 @@ cMusicManager::DisplayRadioStationName() if (!SampleManager.IsMP3RadioChannelAvailable()) return; string = TheText.Get("FEA_MP3"); break; +#ifdef RADIO_OFF_TEXT + case RADIO_OFF: { + extern wchar WideErrorString[]; + + string = TheText.Get("FEA_FMN"); + if (string == WideErrorString) { + pCurrentStation = nil; + return; + } + break; + } +#endif default: return; }; @@ -1275,6 +1346,11 @@ cMusicManager::DisplayRadioStationName() CFont::DrawFonts(); } } + // Always show station text after entering car. Same behaviour as III and SA. +#ifdef FIX_BUGS + else + pCurrentStation = nil; +#endif } bool diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h index 5691b7b8..27456d79 100644 --- a/src/audio/MusicManager.h +++ b/src/audio/MusicManager.h @@ -18,7 +18,7 @@ class cMusicManager public: bool m_bIsInitialised; bool m_bDisabled; - bool field_2; + bool m_bSetNextStation; uint8 m_nVolumeLatency; uint8 m_nCurrentVolume; uint8 m_nMaxVolume; @@ -28,25 +28,25 @@ public: bool m_bResetTimers; uint32 m_nResetTime; bool m_bRadioSetByScript; - uint8 m_nRadioStation; + 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; + bool m_FrontendLoopFlag; + bool m_bTrackChangeStarted; + uint32 m_nNextTrack; + bool m_nNextLoopFlag; + bool m_bVerifyNextTrackStartedToPlay; + bool m_bGameplayAllowsRadio; + bool m_bRadioStreamReady; int8 nFramesSinceCutsceneEnded; - bool field_3999; - bool field_399A; + bool m_bUserResumedGame; + bool m_bMusicModeChangeStarted; uint8 m_nMusicModeToBeSet; - bool field_399C; + bool m_bEarlyFrontendTrack; float aListenTimeArray[NUM_RADIOS]; float m_nLastTrackServiceTime; diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h index 91fcec49..990b2d73 100644 --- a/src/audio/audio_enums.h +++ b/src/audio/audio_enums.h @@ -14,8 +14,8 @@ enum eRadioStation USERTRACK, NUM_RADIOS = 10, POLICE_RADIO = 10, + RADIO_OFF = 10, //TAXI_RADIO, - RADIO_OFF, }; enum eMusicMode diff --git a/src/audio/soundlist.h b/src/audio/soundlist.h index 4d88590e..e86b13ee 100644 --- a/src/audio/soundlist.h +++ b/src/audio/soundlist.h @@ -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/core/Camera.cpp b/src/core/Camera.cpp index 25d2e5c3..5b3f9aa5 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -1768,7 +1768,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! diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 23e86a79..7f634619 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -1765,6 +1765,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)) 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/config.h b/src/core/config.h index 329d70b9..f64a7602 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -306,8 +306,8 @@ enum Config { // 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 @@ -376,6 +376,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #define FREE_CAM // Rotating cam // Audio +#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_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 @@ -462,6 +463,7 @@ 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 MUCH_SHORTER_OUTRO_SCREEN @@ -490,4 +492,6 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #undef IMPROVED_CAMERA #undef FREE_CAM #undef BIG_IMG + +#undef RADIO_SCROLL_TO_PREV_STATION #endif diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index a0f3c3ee..0d69c23f 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1225,7 +1225,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/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 54685b66..a97e9af7 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/text/Text.cpp b/src/text/Text.cpp index 20229bf0..4931a97a 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 TheText; diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 0ecc5004..4e6c24ef 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -152,7 +152,7 @@ CVehicle::CVehicle(uint8 CreatedBy) m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, this); if(m_audioEntityId >= 0) DMAudio.SetEntityStatus(m_audioEntityId, true); - //m_nRadioStation = CGeneral::GetRandomNumber() % USERTRACK; + //m_nRadioStation = CGeneral::GetRandomNumber() % NUM_RADIOS; switch(GetModelIndex()){ case MI_HUNTER: case MI_ANGEL: @@ -169,7 +169,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 4a361215..2fb2caf4 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -266,7 +266,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; From 4281730b16608714584c410a5e2111dae461b6bc Mon Sep 17 00:00:00 2001 From: withmorten Date: Tue, 2 Feb 2021 11:27:30 +0100 Subject: [PATCH 033/113] fix UB and potential crashes when doing ice cream --- src/peds/PedAttractor.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/peds/PedAttractor.cpp b/src/peds/PedAttractor.cpp index de587270..11fb5b31 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) From 1b293a3cfb914748a217f36a98ac650d28424697 Mon Sep 17 00:00:00 2001 From: withmorten Date: Tue, 2 Feb 2021 11:32:20 +0100 Subject: [PATCH 034/113] no advanced script log when log level is 0 --- src/core/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index f64a7602..e75cdfb0 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -347,6 +347,10 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT #define SCRIPT_LOG_FILE_LEVEL 0 // 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 From 713562685a89578ae5e4008f0a283c39175429fc Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 2 Feb 2021 16:39:08 +0300 Subject: [PATCH 035/113] OAL Loops, fixes --- src/audio/oal/channel.cpp | 56 +++++++++++++++++++++++++-- src/audio/oal/channel.h | 6 ++- src/audio/oal/stream.cpp | 79 ++++++++++++++++++++++++--------------- src/audio/oal/stream.h | 3 ++ src/audio/sampman_oal.cpp | 63 ++++++++++++++++--------------- src/core/Frontend.cpp | 2 +- 6 files changed, 143 insertions(+), 66 deletions(-) diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 673a4aed..d1fd0aea 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -15,6 +15,8 @@ ALuint alFilters[MAXCHANNELS+MAX2DCHANNELS]; ALuint alBuffers[MAXCHANNELS+MAX2DCHANNELS]; bool bChannelsCreated = false; +int32 CChannel::channelsThatNeedService = 0; + void CChannel::InitChannels() { @@ -59,7 +61,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 +71,10 @@ void CChannel::SetDefault() void CChannel::Reset() { + // Here is safe because ctor don't call this + if (LoopCount > 1) + channelsThatNeedService--; + ClearBuffer(); SetDefault(); } @@ -165,10 +173,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 +249,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..b081be25 100644 --- a/src/audio/oal/channel.h +++ b/src/audio/oal/channel.h @@ -19,7 +19,10 @@ class CChannel float Distances[2]; int32 LoopCount; ALint LoopPoints[2]; + ALint LastProcessedOffset; public: + static int32 channelsThatNeedService; + static void InitChannels(); static void DestroyChannels(); @@ -37,7 +40,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 +48,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..4817d6d5 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -499,6 +499,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; @@ -980,7 +981,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 +1080,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; } @@ -1236,6 +1238,8 @@ bool CStream::Setup() { if ( IsOpened() ) { + alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE); + alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE); m_pSoundFile->Seek(0); //SetPosition(0.0f, 0.0f, 0.0f); SetPitch(1.0f); @@ -1246,6 +1250,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 +1316,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 +1324,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)) + Setup(); + buffersRefilled = FillBuffers() != 0; + if (m_nLoopCount != 0) + m_nLoopCount--; + } + else + { + while( buffersProcessed[0]-- ) { - alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]); - alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]); + 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]); + } } } - - if ( sourceState[0] != AL_PLAYING ) - { - alGetSourcei(m_pAlSources[0], AL_BUFFERS_PROCESSED, &buffersProcessed[0]); - SetPlay(buffersProcessed[0]!=0); - } + + // 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); } } @@ -1362,6 +1380,7 @@ void CStream::ProviderInit() { 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..b3e96809 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; @@ -103,6 +104,8 @@ public: void Start(); void Stop(); void Update(void); + void SetLoopCount(int32); + void ProviderInit(); void ProviderTerm(); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 0d06098d..2091fb05 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -46,7 +46,6 @@ //TODO: fix eax3 reverb //TODO: max channels -//TODO: loop count cSampleManager SampleManager; bool _bSampmanInitialised = false; @@ -1695,7 +1694,7 @@ cSampleManager::PreloadStreamedFile(uint32 nFile, uint8 nStream) ASSERT(stream != NULL); aStream[nStream] = stream; - if ( !stream->IsOpened() ) + if ( !stream->Setup() ) { delete stream; aStream[nStream] = NULL; @@ -1725,7 +1724,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) if ( stream ) { - if ( stream->Setup() ) + if ( stream->IsOpened() ) { stream->Start(); } @@ -1771,13 +1770,13 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) 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; } else { @@ -1798,10 +1797,8 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); } - if (aStream[nStream]->IsOpened()) { - if (aStream[nStream]->Setup()) { - aStream[nStream]->Start(); - } + if (aStream[nStream]->Setup()) { + aStream[nStream]->Start(); return true; } else { @@ -1827,13 +1824,13 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) 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; } else { @@ -1854,13 +1851,11 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); } - if (aStream[nStream]->IsOpened()) { - if (aStream[nStream]->Setup()) { - if (position != 0) - aStream[nStream]->SetPosMS(position); + if (aStream[nStream]->Setup()) { + if (position != 0) + aStream[nStream]->SetPosMS(position); - aStream[nStream]->Start(); - } + aStream[nStream]->Start(); _bIsMp3Active = true; return true; @@ -1884,13 +1879,13 @@ cSampleManager::StartStreamedFile(uint32 nFile, uint32 nPos, uint8 nStream) 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; } else { @@ -2001,6 +1996,12 @@ cSampleManager::Service(void) if ( stream ) stream->Update(); } + int refCount = CChannel::channelsThatNeedService; + for ( int32 i = 0; refCount && i < MAXCHANNELS+MAX2DCHANNELS; i++ ) + { + if ( aChannel[i].Update() ) + refCount--; + } } bool diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 16a70697..4eae64b7 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -5591,7 +5591,7 @@ CMenuManager::DrawQuitGameScreen(void) if (splash == nil) splash = LoadSplash("OUTRO"); - 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, 255 - alpha)); + 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 From 1ffa9bb30f0e8fc16266f0f5fffeecf84dbff883 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Wed, 3 Feb 2021 19:41:17 +0100 Subject: [PATCH 036/113] Adding strings to re3's GXT, recompiling GXT files Contains the same new elements as #1017 --- gamefiles/TEXT/french.gxt | Bin 467752 -> 467876 bytes gamefiles/TEXT/german.gxt | Bin 459466 -> 459590 bytes gamefiles/TEXT/italian.gxt | Bin 456762 -> 456886 bytes gamefiles/TEXT/spanish.gxt | Bin 454498 -> 454562 bytes utils/gxt/french.txt | 14 ++++++++++++++ utils/gxt/german.txt | 14 ++++++++++++++ utils/gxt/italian.txt | 14 ++++++++++++++ utils/gxt/spanish.txt | 6 ++++++ 8 files changed, 48 insertions(+) diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index cff9f3dcb9367e017e435eb346b13601ebbfdd2f..bd9c658b68eb908a2592a174374975bf139222db 100644 GIT binary patch delta 1097 zcmY+?Pe>GT6bJCHyE9vn7*UkSf<_2Sq_lqwA)$Uwv+lUFGsDbm?t0lGAqxZv352B; z61+$V9TM?iAYr5sxTLp4EH4!uB=-#0_4sDNF@>Tf%f$$2+o?RjC%%zHcf;#~~dhn-(pp<73=;!=;^SCxq#=zD{zU zdZu{aIbn*|FACFB#0+6-V6-S9tr<*LDL%$+tFE2J-UA5(s-fBy7Ds(SELZ}~PXi~h zvJp6i+J4|3jDC}lVH$rnd}#RQlNgD}UYt*2^$6K?Rh>M0Qii6eicPcIIpsU=0#j#X zR5Zi2O-iaJWn@*aVKg+dreq!0#iAoaXG2AmCX^`zPM~}@a1yhR0;jO}Oh!&)IgN(x zz98plbNWf!GR!MXx3vMpUdpgCnobQ=P<`Vscn7ifWNmnukrzLaO`A^|n?HQ>oQY7x zi}Nl!T71)_vDHboO>Zh+&->>2OKIOcztxDqW{T>NahXe*FWZY5Q~l delta 998 zcmXxiO=#3W6bJCPZn7#=Eh6^dA{8nWskQr2DI(}JO}k^V$&zI4ZYf$kskA7f(86Mb z3f+TXLFhpQD-XhYePW;+=nmJrSnK?V%|Wa3(5S$;xEqZ%rNtyRbUliTN%ZW3-N3Zr);68EVHzH0S2!SD4v4fvI)&T` zJQqoQIh`ysYM5#q=7!}50k!)&*=)FKVnT0+W8=8%v2)b=Aa*SXPA$SFu45(?0RC-bo`gJ$Y~~0QCxJn zutOS?rh$X7=SEW*KPoNqI|iji{=H&~JZ6|aeDfS^gay;)8LC_mi<0eNMB65WMOucm z%dl%$;u0NKq{XK5)6&tVw^QVs-jK+de<>|;ZoHQkIX$Z>3Rndv;k)@KZQwsRf4F69 z^kNv_L9;D(mOk!_oujAwVau$pUt4~WeAu~swQHF|90%}k?#v#_Qy5w8K@h^i!2M$cN$YcVbZ2LFW}2DJ)kE7sLc&8G0uKu- zL}^g42M>}SI!Fi!3QATe*rAm0&_Nah>*PhSl3GamL;c>q8K{K^pZDJH_ul*cX5Ze8 zytx-CM@s2qAu!j~%qTE^!gmbVjQEZNsb=2^VC$UkcA)WM2wlw7GnCtz^i8=_8Q+vU za@9BG7H@Dn7Qd@;tmcwsQo?N6-=KuVW8ahznek1Rtv(}bx=OiNT@j{KR9_2IDmLDc zv-tv#+20~t%9at&g4dO|K{?d{Y6NNeSJW$qW^kak(AUb96|zCG@DK>XcX%Lq&hW zVkkZg9LLQ^ffIv4GC$c@wXwrEzCPHvMbCx5&1^8Jk=nN|CFF9s^U=Z%CcN@ z&I1OH$|z~3=U5c9eoBU})(S@PJXuq8*YmKGlwq*mK9xGOl?oig{9xcX9^4O1B~Qr6 zYAmZ!vj?7#vvfH9e$B|Rt}w&VdQg2T!%k}k6;Q&#qL}as)>p_{e?KEHuahl@cN%*Y zVIDKFE6l6xtP0b$7&sh;?O3(0JU=PSWi%VbN@`6GrrVSecJbzy$!{H-ut)#>3e%hSR`nA*|1>z jx8fj2yY4?R4&|h1ZlQ@pyQ6CjAsP}5d1F|90%}k?#w{sp+CA3be7nHF0P?-{D=9KBM?&oC7=9G)>C22~<*js5zg}+8FRW6B` z(NAQLMP20qq(7%%GQYlG`6?WUZ47V5^@Y!Z99DP8o=@-S)_;V{ZbX$v{wmXHv->od zW$KysR}U)Fe&cavx<$I6Obt{zH1t?5b2!iv3I{w2Y*a@z^m3O6G0S1|np!ZbbT4rp z+Yb^KF!M5TJHCI=P-K?48){#qDHGa;w3x)q7TJrqL(c4KuuN_SG`qB}*IkZ)^#eL$ z%Z&n$f}A5dY+i2|I7PNhJB%U>cj$0f{{W{64Rt4OLt!{^9{cYmF5uRE9VLsEEE@Lu zBXWs~)9=P(9o_}z1XeG`p6Kw4mO~B1xV|74q624%Yz+=Fa_0)!3&f-`@=;pEWH+Qm zm&?DU#kaM-*MJ{*^{JdYEG^vSHp-(J)$E6WfOTr>7 zhu1#YGi`B+%}`ntZN4lmiWaUK2zk&eVmfD~Ma=1E(jw;RqJfB2=p>4%Nt^T^w6^?^ zi+=hJYCDPB@NGA79@T$jn-4V3ze)XSo`2O+Y@BaCQ|oBhn!0I>PZ;BSUKryI+fx%g PO(}Xbdi1%TCgbOS{ww9T diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 95758c8118d5f02a77597e4890e58e545b24d36a..2c2bd3bcfec12e6abbb77d662804402d32df7af9 100644 GIT binary patch delta 1120 zcmXxiT}TvB6bJCX?#v=oWDvcmWE8QOf%_qBq|x1RbjO{Y8D?hvLRtf%ARl}RC1DB$ zUqYmZC=e+$h{y<(j1nItK}f=<9)fh~DpkWE&}Fxh7|`&XQUHA)j8=TFwr2L0=AOU&A{N52r|sdbyDp_Mw)8(^U_pXx+YDv zCvS1PHa|<5Dm$<(D!@Z|g9>V&NmD^=L7EPG`<`s%bgIS6HDO+=d=#cq)PE-Ddx|_~ zXq#*^KU3&MdM5&nIpz4?cW#%5@n|n7FC6B^;T(`{hwcHd54j7LPdmjb6k$4T;5fNJ zJyU$RMw;S&gET!wQ(BrDsL~X)8x}Kl+Ovz>)qOXI>M;c!x~01Ti=%2>E?5E+4?-s~ zFdI6Bjg`>Nxc^B(mKprn(DGH7Ponfom``HxAKCVGlN>uxU}(DL((L9Hwd{gVuj!bI zz_5JRrlcRIROIw>!)UueHng1Q`|3uPS!A~fdJJDV!=BYTOu2MeT=-nO151-X{0xWdCvZ} zFz+(;TbL$|G@@`^yF8Vq6T&=y__Q$3e||m+mub33#$~b=WOdVsqc+1Aj%m?|N;)@B zi(@8BwzV98h|Nx6zNynM%s0*6h{Ds|4xY2|SeWOO=7o9A-B(fgtcOkl%q?M!-a+=_ zH?ioZ@1Xxr=mds#Lnl$aN6zWJjkg!qBCD|@FXk%IuCro$-dYSAuOB@-QVy8KPUc`r z+ObW{O1lMbaVP!rYQ=}~_0h@o(Te5u(aJk>^d<~2IP|w+L5D{d^+qd`;u`(=m*Jv7 hcRXo^Hmb5wPZ5XmE%;!Qt#uK)6uQ*q*1G87m;ZX`|Ih#c delta 998 zcmXxiPe>F|90%~P?abn#!b5aO4WkGXgZ7VBNA-G37W=Jg%Gon!A*ffS*wA0X8m1kYbKCK)KB+Wy+n(C{u1>Oqp^Y z-4OO%an|hJh6C53gz1Os1trXvlqsQHR;I%)ye69#r(B#_k)~A4zLlm_ls=I&!&gL1 z{Ttb3ekwnL>UsnQ%Qp7Me+qkI8*SS`W07TE3~Re&H%sq;u<5Q(FG-*1mc95K> zo@sykh%)VeKBY{zsGL=%28t;SmrRG*oN5jVd))Ud%uQh}%*>!4q!+D=R(*YfU z>G+;YLDvuKuy~_kyy+sFhL!VubR>1yY-ohjgbwwFj$>~ubOM!Ip_5p?rz2ysj7h^j z_mrHW;`G~^*WnH_+cW!dqNF36Hf?Gkz+71_L8fMp*9F^D823OaZ0orMd(d+s^+#pyTWm3W31Gzv2w;oGVL3L4@4trD~>p6{Tajz;&rI=Y0=J!l(kn^LH zJg4%JY%zDRI0pMu2r9Gv_{3LkhlkPFDfttdIdLrQk}aFofZgBRMbo97%73Kkw7zBq zYLVVd@dHt5if2zs(=7%P()0kMUqM*Rpz3No6hIVBcHyC)|sfj6^( zlTaQ8PNBULxEp=z3bIV+cSH7rFz>{4U6^;GyiK-T%^-Wf6zHm^I@G&?f5JtVYWIgx z(oNT~D5=&OMo#k|j9QGWtGR;f!tDveU?XE1btrW%a01>`;3Qt&4xGZZxiIoN%j?wa z*b{P|HmBd#voNd+%y9G!+7`pGv${bKDBhUL7E-rL1P?ag;NBVjCv4$Q$P7 zX>m;C$(EYqmsqle`KFai!hF-cs}U45C&P2z%?tCKrLr*3dHNy(myOa%z@eJ3O8>!3 z?6a7R(07n(1WsUdD{vC_HaVw_U0z-d-8|K@zOWBzjZLQW=JJ`?&cT+dAIMLdmbrYQ z_h)}o{Z7=Ije1QhQE%Vdg)S2eLo@)#mktY^B%4OYkI>reW^0IsLLF|90%~P?aU@oAi7bc2M->iR%rhyizxV<#@%sdXQtWN{DY9tp-aRb1ot3J zQRJS)s8fVcY~iKTN_r4dFzOK1!N{P0*d@>+Xo(1eesABKg@Mm|^ZUL(znur4+jl;- zFLVT3tr4(7!LSp6a!fi2be@n-0qdR8X`p&ax(Bd&BN$?~IYQYRebSVT4@*<_#e_6v zTP|^X4&Q6(X2XGFQ($#ozMw$=qBI3&A4=0^W6Na2)G3SHnlME%xG79g)L)VFV;6YM z^gFV{{GsAFTDBw5nA@1|_{i4vXfF-a!BL^&r@?7W? zHgAVcW4ji*2m8+y%kcz;t zeb1qyN~;P}Z(JCaIN8w5g6|{NtHNTV<2rSy-WNKF%v9(UE?*0s#+d~bd4uH*YWChD zIZunzZ|S}Y=RC7KBa5x73O8q1besTdkHvuB;La1WF)_i&l?}4v@lGT2TA0^VcZB&Z zl^?>?Y5a*q;d)M^E0v?dy#7m6VeeWR?$H%cd4(M!0!d z0v&m>qnZ2=C0Cd)I(<=?FS>dqih}NCdCk>Z!n~$*Png$CJ&M9-W3&_S=DDy&|G{AV zy%>zrcToQtI*H@oLZ{HOOE&d!tF{rDIaxa!-#b$4@B2B>w06C_Jl9=rTIntyczSm( R))t{hp+{YbwMFMY{0E(^=Ar-q diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index a7d011c3..a817ff41 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -14557,6 +14557,20 @@ L'heure est venue pour l'ange gardien des taxis Kaufman de froisser de la tôle! [TAX3_5:TAXIWA3] Hé mec, j'vais te bousiller ta caisse! +{ re3 updates } +{ new languages } +[FEL_JAP] +JAPONAIS + +[FEL_POL] +POLONAIS + +[FEL_RUS] +RUSSE + +[FEA_FMN] +RADIO ETEINTE + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 965db366..a2c86414 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -14557,6 +14557,20 @@ Wird Zeit, dass der Schutzengel von Kaufman-Taxis eine vor den Latz kriegt! [TAX3_5:TAXIWA3] Hey, Freundchen, dir zieh ich das Fell über die Ohren! +{ re3 updates } +{ new languages } +[FEL_JAP] +JAPANISCH + +[FEL_POL] +POLNISCH + +[FEL_RUS] +RUSSISCH + +[FEA_FMN] +RADIO AUS + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 7b02017f..84804cb3 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -14566,6 +14566,20 @@ La compagnia dei taxi d'ora in poi genererà introiti per un massimo di ~1~$. Ri [TAX3_5:TAXIWA3] Ehi ragazzo, ti abbronzo il fondoschiena! +{ re3 updates } +{ new languages } +[FEL_JAP] +GIAPPONESE + +[FEL_POL] +POLACCO + +[FEL_RUS] +RUSSO + +[FEA_FMN] +RADIO SPENTA + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 335c5d2c..836d062a 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -14366,6 +14366,12 @@ XBOX [FEC_IVP] INVERTIR VERTICALIDAD MANDO +[FEM_NON] +NADA + +[FEA_FMN] +RADIO APAGADA + { end of file } [DUMMY] THIS LABEL NEEDS TO BE HERE !!! From edc3c48e05ed5c466686075dac0f1bdf8093b7bf Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 20:28:34 +0100 Subject: [PATCH 037/113] add gamefiles and dlls to premake workflows --- .github/workflows/reVC_msvc_amd64.yml | 14 +++++++++++--- .github/workflows/reVC_msvc_x86.yml | 15 ++++++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.github/workflows/reVC_msvc_amd64.yml b/.github/workflows/reVC_msvc_amd64.yml index 71e0ff1d..49a266b7 100644 --- a/.github/workflows/reVC_msvc_amd64.yml +++ b/.github/workflows/reVC_msvc_amd64.yml @@ -48,14 +48,22 @@ jobs: - name: Build run: | msbuild -m build/reVC.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} - - name: Pack artifacts + # - name: Pack artifacts + # run: | + # 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + - name: Move binaries to gamefiles run: | - 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.exe ./gamefiles/ + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.pdb ./gamefiles/ + - name: Move dynamic dependencies to gamefiles + run: | + 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: reVC_${{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/reVC_msvc_x86.yml b/.github/workflows/reVC_msvc_x86.yml index f7484ec2..21b0dda9 100644 --- a/.github/workflows/reVC_msvc_x86.yml +++ b/.github/workflows/reVC_msvc_x86.yml @@ -48,14 +48,23 @@ jobs: - name: Build run: | msbuild -m build/reVC.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} - - name: Pack artifacts + # - name: Pack artifacts + # run: | + # 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + - name: Move binaries to gamefiles run: | - 7z a reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.exe ./gamefiles/ + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/reVC.pdb ./gamefiles/ + - if: contains(matrix.platform, 'oal') + name: Move dynamic dependencies to gamefiles + run: | + 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: reVC_${{matrix.buildtype}}_${{matrix.platform}} - path: reVC_${{matrix.buildtype}}_${{matrix.platform}}.zip + path: ./gamefiles/* # - name: Upload artifact to Bintray # uses: hpcsc/upload-bintray-docker-action@v1 # with: From ca65c764197bcd065f101cdf7da7c48b286c8208 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 3 Feb 2021 15:35:06 +0300 Subject: [PATCH 038/113] fix --- src/control/AutoPilot.cpp | 8 ++++---- src/control/AutoPilot.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index c956a6f1..d3de6ac2 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -52,8 +52,8 @@ void CAutoPilot::Save(uint8*& buf) WriteSaveBuf(buf, m_nCurrentRouteNode); WriteSaveBuf(buf, m_nNextRouteNode); WriteSaveBuf(buf, m_nPrevRouteNode); - WriteSaveBuf(buf, m_nTimeEnteredCurve); - WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); + WriteSaveBuf(buf, m_nTimeEnteredCurve); + WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); WriteSaveBuf(buf, m_nCurrentPathNodeInfo); WriteSaveBuf(buf, m_nNextPathNodeInfo); WriteSaveBuf(buf, m_nPreviousPathNodeInfo); @@ -95,8 +95,8 @@ void CAutoPilot::Load(uint8*& buf) m_nCurrentRouteNode = ReadSaveBuf(buf); m_nNextRouteNode = ReadSaveBuf(buf); m_nPrevRouteNode = ReadSaveBuf(buf); - m_nTimeEnteredCurve = ReadSaveBuf(buf); - m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); + m_nTimeEnteredCurve = ReadSaveBuf(buf); + m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); m_nCurrentPathNodeInfo = ReadSaveBuf(buf); m_nNextPathNodeInfo = ReadSaveBuf(buf); m_nPreviousPathNodeInfo = ReadSaveBuf(buf); diff --git a/src/control/AutoPilot.h b/src/control/AutoPilot.h index aa14ccdd..ec3bb8d8 100644 --- a/src/control/AutoPilot.h +++ b/src/control/AutoPilot.h @@ -64,8 +64,8 @@ public: int32 m_nCurrentRouteNode; int32 m_nNextRouteNode; int32 m_nPrevRouteNode; - uint32 m_nTimeEnteredCurve; - uint32 m_nTimeToSpendOnCurrentCurve; + int32 m_nTimeEnteredCurve; + int32 m_nTimeToSpendOnCurrentCurve; uint32 m_nCurrentPathNodeInfo; uint32 m_nNextPathNodeInfo; uint32 m_nPreviousPathNodeInfo; From ca48ebcb6e22b17e217afc8661c572f83827b83d Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 3 Feb 2021 23:03:00 +0300 Subject: [PATCH 039/113] MP3 player fixes --- src/audio/sampman_oal.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 2091fb05..ae4b1cbb 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1908,6 +1908,9 @@ cSampleManager::StopStreamedFile(uint8 nStream) { delete stream; aStream[nStream] = NULL; + + if ( nStream == 0 ) + _bIsMp3Active = false; } } @@ -1920,7 +1923,21 @@ 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; From bba01a42e10de9a2a30acdfe96610482cae3ef87 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 21:40:04 +0100 Subject: [PATCH 040/113] sync readme with master --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index a51bc65c..f69c8512 100644 --- a/README.md +++ b/README.md @@ -13,27 +13,69 @@ The aim of this project is to reverse GTA Vice City for PC. - (Optional) If you want to use optional features, copy the files in /gamefiles folder to your game root folder. - Move reVC.exe to GTA VC directory and run it. -## Preparing the environment for building +## Latest standalone executables to download -You may want to point GTA_VC_RE_DIR environment variable to GTA VC root folder if you want executable to be moved there via post-build script. +(Put content of selected archive into gamedir) -- For Linux, proceed: [Building on Linux](https://github.com/GTAmodding/re3/wiki/Building-on-Linux) -- For FreeBSD, proceed: [Building on FreeBSD](https://github.com/GTAmodding/re3/wiki/Building-on-FreeBSD) -- For Windows, assuming you have Visual Studio: - - Clone the repo using the argument `--recursive`. - - Run one of the `premake-vsXXXX.cmd` variants on root folder. - - Open the project via Visual Studio +- [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_x86/miami/reVC_Release_win-x86-librw_d3d9-mss.zip) +- [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_d3d9-oal.zip) +- [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_gl3_glfw-oal.zip) +- [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/ubuntu-latest-gl3.zip) +- [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/macos-latest-gl3.zip) + +## Building from Source + +When using premake, you may want to point GTA_VC_RE_DIR environment variable to GTA Vice City root folder, if you want executable to be moved there via post-build script. + +
Linux Premake + +For Linux using premake, proceed: [Building on Linux](https://github.com/GTAmodding/re3/wiki/Building-on-Linux) + +
+ +
Linux Conan + +Obtain source code. +``` +git clone https://github.com/GTAmodding/re3.git reVC -b miami +cd reVC +git submodule init +git submodule update --recursive +``` +Install python and conan, and then run build. +``` +conan export vendor/librw librw/master@ +mkdir build +cd build +conan install .. reVC/master@ -if build -o reVC:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s reVC:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo +conan build .. -if build -bf build -pf package +``` +
+ +
FreeBSD + +For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTAmodding/re3/wiki/Building-on-FreeBSD) + +
+ +
Windows + +Assuming you have Visual Studio: +- Clone the repo using the argument `--recursive`. +- Run one of the `premake-vsXXXX.cmd` variants on root folder. +- Open the project via Visual Studio **If you use 64-bit D3D9**: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version) -There are various settings at the very bottom of [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. +**If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows). +
-> :information_source: **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows). +> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. -> :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of reVC, but you also can use LIBRW enviorenment variable to specify path to your own librw. +> :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. ## Contributing -Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) Document +Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/miami/CODING_STYLE.md) Document ### Unreversed / incomplete classes From 1525b105e2d107bd7392a17ed17cac561e0493a1 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 23:26:19 +0100 Subject: [PATCH 041/113] reduce warnings in msvc librw build --- premake5.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/premake5.lua b/premake5.lua index f2e6a71f..f49e024c 100644 --- a/premake5.lua +++ b/premake5.lua @@ -204,6 +204,7 @@ project "librw" architecture "amd64" filter "platforms:win*" + defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" } staticruntime "on" buildoptions { "/Zc:sizedDealloc-" } From 958c828a2c8ec55dbaa9fecb4712a5964d2d7adc Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 01:42:42 +0100 Subject: [PATCH 042/113] readme fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f69c8512..84713f99 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Assuming you have Visual Studio: > :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. -> :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. +> :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of reVC, but you also can use LIBRW enviorenment variable to specify path to your own librw. ## Contributing Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/miami/CODING_STYLE.md) Document From 42342745f3e8506be79b4ebc8eb5bfe5982818ba Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 18:29:47 +0100 Subject: [PATCH 043/113] CHud::Draw fix --- src/render/Hud.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index ba7d52db..91503917 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1140,18 +1140,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); } From 8553120fdbfd74eb2d1609326acbdd8aaa382bea Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 19:47:47 +0100 Subject: [PATCH 044/113] add missing ASCII_STRCMP stuff --- src/core/config.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index e75cdfb0..cc82f8d6 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -251,6 +251,12 @@ enum Config { #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 From a78212ea800fe1919d5380beb25514e3887bcdea Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 23:43:04 +0100 Subject: [PATCH 045/113] fix MASTER crashes --- src/core/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/common.h b/src/core/common.h index 75ba8863..d39531cc 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -355,7 +355,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 From 09de511c37c32e13af3f72ded7f0f9e19f395ae2 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 5 Feb 2021 11:31:54 +0300 Subject: [PATCH 046/113] fixed plane AI --- src/control/CarCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index c6d78882..d05d9827 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -2757,7 +2757,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); From 9125e604b9225a9cb5efd4a615f10b3c73c1d104 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 5 Feb 2021 10:58:01 +0100 Subject: [PATCH 047/113] fix generic.txd crash --- src/core/Game.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/Game.cpp b/src/core/Game.cpp index ed9d67f4..43bd3d11 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -381,6 +381,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"); @@ -440,10 +445,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(); From 86513cb2c9e74361c35356de78ee5433f67dc3ca Mon Sep 17 00:00:00 2001 From: IlDucci Date: Fri, 5 Feb 2021 12:44:41 +0100 Subject: [PATCH 048/113] [Miami] Updating font widths. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixing widths in SF Arborcrest for the characters ¡, Ñ, ñ, ¿. - Fixing the ¡ character width in Rage font. - Mapped the characters that are being affected by each width size. --- src/render/Font.cpp | 67 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 0f5930ee..59ef024a 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -64,20 +64,63 @@ int16 CFont::Size[LANGSET_MAX][MAX_FONTS][210] = { int16 CFont::Size[MAX_FONTS][210] = { #endif { - 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, 12, 16, 19, - 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 19, 19, 12, 14, 11, 11, 16, 11, - 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, 16, 16, 16, 16, 33, 17, 18, 18, 18, - 18, 11, 11, 11, 11, 19, 19, 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, - 15, 24, 18, 21, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16 + //FONT2 EFIGS + //SPC,!, $, %, &, ', [, ], +, , -, ., + 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, + //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??, + 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, + // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, + 12, 16, 19, 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, + //P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, ¡, \, + 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19, + //??,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, + 12, 14, 11, 11, 16, 11, 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, + //p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??, + 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, + //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, + 16, 16, 16, 16, 33, 17, 18, 18, 18, 18, 11, 11, 11, 11, 19, 19, + //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, + 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, + //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, + 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 22, 18, 21, + //i,BLANKS + 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + // ?? + 19, 16 }, { - 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, 20, 22, 22, 21, 22, 18, 18, 22, - 22, 9, 14, 21, 18, 27, 21, 24, 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 10, 19, 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, - 17, 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, 23, 23, 24, 24, 24, 24, - 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 19, 20, 20, 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, - 19, 19, 20, 19, 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, 9, 9, 9, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 10, 9, 10, 20 + //FONT1 EFIGS + //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I, + 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, + //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?, + 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, + //TM,A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, + 20, 22, 22, 21, 22, 18, 18, 22, 22, 9, 14, 21, 18, 27, 21, 24, + //P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, ¡, °, + 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19, + //(C),a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, + 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, 17, + //p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2, + 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, + //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, + 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, + //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, + 23, 23, 24, 24, 24, 24, 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, + //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, + 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19, + //02,12,22, 32, 42, 52, 62, 72, 82, 92, :2, A2, B2, C2, D2, E2, + 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, 19, 19, 20, 19, + //F2,G2,H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2, + 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, + //V2,W2,X2, Y2, Z2, À2, Á2, Â2, Ä2, Æ2, Ç2, È2, É2, Ê2, Ë2, Ì2, + 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, + //Í2,Î2,Ï2, Ò2, Ó2, Ô2, Ö2, Ù2, Ú2, Û2, Ü2, ß2, Ñ2, ¿2, '2, .2, + 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9, + //??,?? + 10, 20 } #ifdef MORE_LANGUAGES }, From 102d105e0a50f829c6085a2e95082aedb7727b41 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 5 Feb 2021 14:45:03 +0300 Subject: [PATCH 049/113] fix --- src/control/Script7.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp index 34a364a7..71099cc4 100644 --- a/src/control/Script7.cpp +++ b/src/control/Script7.cpp @@ -431,12 +431,12 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command) CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]); script_assert(pPed); if (ScriptParams[1]) { - pPed->bIsDucking = true; + pPed->bCrouchWhenShooting = true; pPed->SetDuck(ScriptParams[2], true); } else { pPed->ClearDuck(true); - pPed->bIsDucking = false; + pPed->bCrouchWhenShooting = false; } return 0; } From b864103976332411a8c723e74bba431b8089e092 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Fri, 5 Feb 2021 13:53:24 +0100 Subject: [PATCH 050/113] Restoring original sorting. --- src/render/Font.cpp | 78 +++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 53 deletions(-) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 59ef024a..86fe4a56 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -65,63 +65,35 @@ int16 CFont::Size[MAX_FONTS][210] = { #endif { //FONT2 EFIGS - //SPC,!, $, %, &, ', [, ], +, , -, ., - 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, - //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??, - 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, - // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, - 12, 16, 19, 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, - //P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, ¡, \, - 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19, - //??,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, - 12, 14, 11, 11, 16, 11, 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, - //p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??, - 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, - //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, - 16, 16, 16, 16, 33, 17, 18, 18, 18, 18, 11, 11, 11, 11, 19, 19, - //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, - 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, - //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, - 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 22, 18, 21, - //i,BLANKS - 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - // ?? - 19, 16 + //SPC,!, $, %, &, ', [, ], +, , -, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??, A, B, + 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, 12, 16, 19, + //C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, ¡, \, ??, a, b, c, d, e, + 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19, 12, 14, 11, 11, 16, 11, + //f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??, À, Á, Â, Ä, Æ, Ç, È, É, Ê, + 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, 16, 16, 16, 16, 33, 17, 18, 18, 18, + //Ë, Ì, Í, Î, Ï, Ò, Ó, Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, + 18, 11, 11, 11, 11, 19, 19, 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, + //ü, Ñ, ñ, ¿, i, BLANKS + 15, 22, 18, 21, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + // ??, ?? + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16 }, { //FONT1 EFIGS - //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I, - 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, - //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?, - 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, - //TM,A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, - 20, 22, 22, 21, 22, 18, 18, 22, 22, 9, 14, 21, 18, 27, 21, 24, - //P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, ¡, °, - 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19, - //(C),a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, - 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, 17, - //p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2, - 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, - //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, - 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, - //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, - 23, 23, 24, 24, 24, 24, 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, - //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, - 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19, - //02,12,22, 32, 42, 52, 62, 72, 82, 92, :2, A2, B2, C2, D2, E2, - 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, 19, 19, 20, 19, - //F2,G2,H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2, - 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, - //V2,W2,X2, Y2, Z2, À2, Á2, Â2, Ä2, Æ2, Ç2, È2, É2, Ê2, Ë2, Ì2, - 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, - //Í2,Î2,Ï2, Ò2, Ó2, Ô2, Ö2, Ù2, Ú2, Û2, Ü2, ß2, Ñ2, ¿2, '2, .2, - 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9, - //??,?? - 10, 20 + //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?, TM, A, B, C, D, E, F, G, + 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, 20, 22, 22, 21, 22, 18, 18, 22, + //H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, ¡, °, (C), a, b, c, d, e, f, g, h, i, j, k, l, m, n, + 22, 9, 14, 21, 18, 27, 21, 24, 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19, 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, + //o, p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2, À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, Ô, Ö, Ù, Ú, Û, Ü, + 17, 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, 23, 23, 24, 24, 24, 24, + //ß, à, á, â, ä, æ, ç, è, é, ê, ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, 02, 12, 22, 32, 42, 52, 62, 72, 82, 92, :2, A2, + 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19, 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, + //B2,C2,D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2, V2, W2, X2, Y2, Z2, À2, Á2, Â2, Ä2, Æ2, Ç2, È2, É2, Ê2, Ë2, Ì2, Í2, Î2, Ï2, + 19, 19, 20, 19, 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, 9, 9, 9, + //Ò2,Ó2,Ô2, Ö2, Ù2, Ú2, Û2, Ü2, ß2, Ñ2, ¿2, '2, .2, ??,?? + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9, 10, 20 } + #ifdef MORE_LANGUAGES }, { From 425f360363419bef0c7bed0df5d79798408e6cf0 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 6 Feb 2021 16:49:52 +0100 Subject: [PATCH 051/113] reorganize shaders; use modulate flag; update librw --- src/extras/custompipes_d3d9.cpp | 31 +++---- src/extras/custompipes_gl.cpp | 34 ++++---- src/extras/postfx.cpp | 12 +-- src/extras/screendroplets.cpp | 6 +- src/extras/shaders/Makefile | 78 ------------------ src/extras/shaders/make_glsl.sh | 9 ++ .../shaders/{make.cmd => make_hlsl.cmd} | 4 +- src/extras/shaders/makeinc_glsl.sh | 6 ++ .../shaders/{makeinc.sh => makeinc_hlsl.sh} | 1 + .../shaders/{ => obj}/colourfilterVC_PS.cso | Bin .../shaders/{ => obj}/colourfilterVC_PS.inc | 0 .../colourfilterVC_frag.inc} | 0 src/extras/shaders/{ => obj}/contrastPS.cso | Bin src/extras/shaders/{ => obj}/contrastPS.inc | 0 .../contrast_frag.inc} | 0 .../shaders/{ => obj}/default_UV2_VS.cso | Bin .../shaders/{ => obj}/default_UV2_VS.inc | 0 .../default_UV2_vert.inc} | 0 .../im2d_UV2_vert.inc} | 0 .../{im2d_gl.inc => obj/im2d_vert.inc} | 0 src/extras/shaders/{ => obj}/neoGloss_PS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_PS.inc | 0 src/extras/shaders/{ => obj}/neoGloss_VS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_VS.inc | 0 .../neoGloss_frag.inc} | 0 .../neoGloss_vert.inc} | 0 .../shaders/{ => obj}/neoRimSkin_VS.cso | Bin .../shaders/{ => obj}/neoRimSkin_VS.inc | 0 .../neoRimSkin_vert.inc} | 0 src/extras/shaders/{ => obj}/neoRim_VS.cso | Bin src/extras/shaders/{ => obj}/neoRim_VS.inc | 0 .../{neoRim_gl.inc => obj/neoRim_vert.inc} | 0 .../shaders/{ => obj}/neoVehicle_PS.cso | Bin .../shaders/{ => obj}/neoVehicle_PS.inc | 0 .../shaders/{ => obj}/neoVehicle_VS.cso | Bin .../shaders/{ => obj}/neoVehicle_VS.inc | 0 .../neoVehicle_frag.inc} | 0 .../neoVehicle_vert.inc} | 0 .../shaders/{ => obj}/neoWorldVC_PS.cso | Bin .../shaders/{ => obj}/neoWorldVC_PS.inc | 0 .../neoWorldVC_frag.inc} | 0 .../shaders/{ => obj}/screenDroplet_PS.cso | Bin .../shaders/{ => obj}/screenDroplet_PS.inc | 0 .../screenDroplet_frag.inc} | 0 .../{simple_fs_gl.inc => obj/simple_frag.inc} | 0 vendor/librw | 2 +- 46 files changed, 64 insertions(+), 119 deletions(-) delete mode 100644 src/extras/shaders/Makefile create mode 100644 src/extras/shaders/make_glsl.sh rename src/extras/shaders/{make.cmd => make_hlsl.cmd} (58%) create mode 100644 src/extras/shaders/makeinc_glsl.sh rename src/extras/shaders/{makeinc.sh => makeinc_hlsl.sh} (93%) rename src/extras/shaders/{ => obj}/colourfilterVC_PS.cso (100%) rename src/extras/shaders/{ => obj}/colourfilterVC_PS.inc (100%) rename src/extras/shaders/{colourfilterVC_fs_gl.inc => obj/colourfilterVC_frag.inc} (100%) rename src/extras/shaders/{ => obj}/contrastPS.cso (100%) rename src/extras/shaders/{ => obj}/contrastPS.inc (100%) rename src/extras/shaders/{contrast_fs_gl.inc => obj/contrast_frag.inc} (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.cso (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.inc (100%) rename src/extras/shaders/{default_UV2_gl.inc => obj/default_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_UV2_gl.inc => obj/im2d_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_gl.inc => obj/im2d_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.inc (100%) rename src/extras/shaders/{neoGloss_fs_gl.inc => obj/neoGloss_frag.inc} (100%) rename src/extras/shaders/{neoGloss_vs_gl.inc => obj/neoGloss_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.inc (100%) rename src/extras/shaders/{neoRimSkin_gl.inc => obj/neoRimSkin_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.inc (100%) rename src/extras/shaders/{neoRim_gl.inc => obj/neoRim_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.inc (100%) rename src/extras/shaders/{neoVehicle_fs_gl.inc => obj/neoVehicle_frag.inc} (100%) rename src/extras/shaders/{neoVehicle_vs_gl.inc => obj/neoVehicle_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoWorldVC_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoWorldVC_PS.inc (100%) rename src/extras/shaders/{neoWorldVC_fs_gl.inc => obj/neoWorldVC_frag.inc} (100%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.cso (100%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.inc (100%) rename src/extras/shaders/{screenDroplet_fs_gl.inc => obj/screenDroplet_frag.inc} (100%) rename src/extras/shaders/{simple_fs_gl.inc => obj/simple_frag.inc} (100%) diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp index d7634e99..3ad824e3 100644 --- a/src/extras/custompipes_d3d9.cpp +++ b/src/extras/custompipes_d3d9.cpp @@ -89,6 +89,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices(header->indexBuffer); setVertexDeclaration(header->vertexDeclaration); @@ -120,7 +121,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) reflProps[3] = m->surfaceProps.specular == 0.0f ? 0.0f : VehicleSpecularity; d3ddevice->SetVertexShaderConstantF(VSLOC_reflProps, reflProps, 1); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture) d3d::setTexture(0, m->texture); @@ -150,11 +151,11 @@ CreateVehiclePipe(void) fp = ReadTweakValueTable(fp, SpecColor); } -#include "shaders/neoVehicle_VS.inc" +#include "shaders/obj/neoVehicle_VS.inc" neoVehicle_VS = rw::d3d::createVertexShader(neoVehicle_VS_cso); assert(neoVehicle_VS); -#include "shaders/neoVehicle_PS.inc" +#include "shaders/obj/neoVehicle_PS.inc" neoVehicle_PS = rw::d3d::createPixelShader(neoVehicle_PS_cso); assert(neoVehicle_PS); @@ -260,11 +261,11 @@ CreateWorldPipe(void) else ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); -#include "shaders/default_UV2_VS.inc" +#include "shaders/obj/default_UV2_VS.inc" neoWorld_VS = rw::d3d::createVertexShader(default_UV2_VS_cso); assert(neoWorld_VS); -#include "shaders/neoWorldVC_PS.inc" +#include "shaders/obj/neoWorldVC_PS.inc" neoWorldVC_PS = rw::d3d::createPixelShader(neoWorldVC_PS_cso); assert(neoWorldVC_PS); @@ -347,11 +348,11 @@ glossRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) void CreateGlossPipe(void) { -#include "shaders/neoGloss_VS.inc" +#include "shaders/obj/neoGloss_VS.inc" neoGloss_VS = rw::d3d::createVertexShader(neoGloss_VS_cso); assert(neoGloss_VS); -#include "shaders/neoGloss_PS.inc" +#include "shaders/obj/neoGloss_PS.inc" neoGloss_PS = rw::d3d::createPixelShader(neoGloss_PS_cso); assert(neoGloss_PS); @@ -421,6 +422,7 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices(header->indexBuffer); setVertexDeclaration(header->vertexDeclaration); @@ -438,7 +440,7 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture){ d3d::setTexture(0, m->texture); @@ -464,7 +466,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; - + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, (IDirect3DVertexBuffer9*)header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices((IDirect3DIndexBuffer9*)header->indexBuffer); @@ -485,7 +487,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(inst->material->texture){ d3d::setTexture(0, m->texture); @@ -513,11 +515,11 @@ CreateRimLightPipes(void) } -#include "shaders/neoRim_VS.inc" +#include "shaders/obj/neoRim_VS.inc" neoRim_VS = rw::d3d::createVertexShader(neoRim_VS_cso); assert(neoRim_VS); -#include "shaders/neoRimSkin_VS.inc" +#include "shaders/obj/neoRimSkin_VS.inc" neoRimSkin_VS = rw::d3d::createVertexShader(neoRimSkin_VS_cso); assert(neoRimSkin_VS); @@ -611,6 +613,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_D3D9); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + rw::uint32 flags = atomic->geometry->flags; bool setupDone = false; bool defer = false; @@ -640,7 +643,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setupDone = true; } - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture){ d3d::setTexture(0, m->texture); @@ -703,7 +706,7 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps); + setMaterial(color, m->surfaceProps); // always modulate here if(m->texture){ d3d::setTexture(0, m->texture); diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index 8a574579..6cbd0bb7 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -87,6 +87,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -119,7 +120,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -160,8 +161,8 @@ CreateVehiclePipe(void) { -#include "shaders/neoVehicle_fs_gl.inc" -#include "shaders/neoVehicle_vs_gl.inc" +#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 *fs[] = { shaderDecl, header_frag_src, neoVehicle_frag_src, nil }; neoVehicleShader = Shader::create(vs, fs); @@ -271,8 +272,8 @@ CreateWorldPipe(void) ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); { -#include "shaders/neoWorldVC_fs_gl.inc" -#include "shaders/default_UV2_gl.inc" +#include "shaders/obj/neoWorldVC_frag.inc" +#include "shaders/obj/default_UV2_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, default_UV2_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoWorldVC_frag_src, nil }; neoWorldShader = Shader::create(vs, fs); @@ -379,8 +380,8 @@ CreateGlossPipe(void) using namespace rw::gl3; { -#include "shaders/neoGloss_fs_gl.inc" -#include "shaders/neoGloss_vs_gl.inc" +#include "shaders/obj/neoGloss_frag.inc" +#include "shaders/obj/neoGloss_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoGloss_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoGloss_frag_src, nil }; neoGlossShader = Shader::create(vs, fs); @@ -449,6 +450,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -472,7 +474,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -499,6 +501,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -520,7 +523,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -551,8 +554,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRimSkin_gl.inc" +#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 *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimSkinShader = Shader::create(vs, fs); @@ -560,8 +563,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRim_gl.inc" +#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 *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimShader = Shader::create(vs, fs); @@ -665,6 +668,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_GL3); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + rw::uint32 flags = atomic->geometry->flags; WorldLights lights; lights.numAmbients = 1; @@ -704,7 +708,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setupDone = true; } - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -773,7 +777,7 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps); + setMaterial(color, m->surfaceProps); // always modulate here setTexture(0, m->texture); diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp index 03010267..b47deab4 100644 --- a/src/extras/postfx.cpp +++ b/src/extras/postfx.cpp @@ -142,17 +142,17 @@ CPostFX::Open(RwCamera *cam) #ifdef RW_D3D9 -#include "shaders/colourfilterVC_PS.inc" +#include "shaders/obj/colourfilterVC_PS.inc" colourfilterVC_PS = rw::d3d::createPixelShader(colourfilterVC_PS_cso); -#include "shaders/contrastPS.inc" +#include "shaders/obj/contrastPS.inc" contrast_PS = rw::d3d::createPixelShader(contrastPS_cso); #endif #ifdef RW_OPENGL using namespace rw::gl3; { -#include "shaders/im2d_gl.inc" -#include "shaders/colourfilterVC_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/colourfilterVC_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, colourfilterVC_frag_src, nil }; colourFilterVC = Shader::create(vs, fs); @@ -160,8 +160,8 @@ CPostFX::Open(RwCamera *cam) } { -#include "shaders/im2d_gl.inc" -#include "shaders/contrast_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/contrast_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, contrast_frag_src, nil }; contrast = Shader::create(vs, fs); diff --git a/src/extras/screendroplets.cpp b/src/extras/screendroplets.cpp index 74c44da0..1412141e 100644 --- a/src/extras/screendroplets.cpp +++ b/src/extras/screendroplets.cpp @@ -112,14 +112,14 @@ ScreenDroplets::InitDraw(void) openim2d_uv2(); #ifdef RW_D3D9 -#include "shaders/screenDroplet_PS.inc" +#include "shaders/obj/screenDroplet_PS.inc" screenDroplet_PS = rw::d3d::createPixelShader(screenDroplet_PS_cso); #endif #ifdef RW_GL3 using namespace rw::gl3; { -#include "shaders/im2d_UV2_gl.inc" -#include "shaders/screenDroplet_fs_gl.inc" +#include "shaders/obj/im2d_UV2_vert.inc" +#include "shaders/obj/screenDroplet_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_UV2_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, screenDroplet_frag_src, nil }; screenDroplet = Shader::create(vs, fs); diff --git a/src/extras/shaders/Makefile b/src/extras/shaders/Makefile deleted file mode 100644 index 5089e16a..00000000 --- a/src/extras/shaders/Makefile +++ /dev/null @@ -1,78 +0,0 @@ -all: im2d_gl.inc simple_fs_gl.inc default_UV2_gl.inc \ - colourfilterVC_fs_gl.inc contrast_fs_gl.inc \ - neoRim_gl.inc neoRimSkin_gl.inc \ - neoWorldVC_fs_gl.inc neoGloss_vs_gl.inc neoGloss_fs_gl.inc \ - neoVehicle_vs_gl.inc neoVehicle_fs_gl.inc \ - im2d_UV2_gl.inc screenDroplet_fs_gl.inc - -im2d_gl.inc: im2d.vert - (echo 'const char *im2d_vert_src =';\ - sed 's/..*/"&\\n"/' im2d.vert;\ - echo ';') >im2d_gl.inc - -colourfilterVC_fs_gl.inc: colourfilterVC.frag - (echo 'const char *colourfilterVC_frag_src =';\ - sed 's/..*/"&\\n"/' colourfilterVC.frag;\ - echo ';') >colourfilterVC_fs_gl.inc -simple_fs_gl.inc: simple.frag - (echo 'const char *simple_frag_src =';\ - sed 's/..*/"&\\n"/' simple.frag;\ - echo ';') >simple_fs_gl.inc - -default_UV2_gl.inc: default_UV2.vert - (echo 'const char *default_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' default_UV2.vert;\ - echo ';') >default_UV2_gl.inc - - - -contrast_fs_gl.inc: contrast.frag - (echo 'const char *contrast_frag_src =';\ - sed 's/..*/"&\\n"/' contrast.frag;\ - echo ';') >contrast_fs_gl.inc - - -neoRim_gl.inc: neoRim.vert - (echo 'const char *neoRim_vert_src =';\ - sed 's/..*/"&\\n"/' neoRim.vert;\ - echo ';') >neoRim_gl.inc - -neoRimSkin_gl.inc: neoRimSkin.vert - (echo 'const char *neoRimSkin_vert_src =';\ - sed 's/..*/"&\\n"/' neoRimSkin.vert;\ - echo ';') >neoRimSkin_gl.inc - -neoWorldVC_fs_gl.inc: neoWorldVC.frag - (echo 'const char *neoWorldVC_frag_src =';\ - sed 's/..*/"&\\n"/' neoWorldVC.frag;\ - echo ';') >neoWorldVC_fs_gl.inc - -neoGloss_fs_gl.inc: neoGloss.frag - (echo 'const char *neoGloss_frag_src =';\ - sed 's/..*/"&\\n"/' neoGloss.frag;\ - echo ';') >neoGloss_fs_gl.inc - -neoGloss_vs_gl.inc: neoGloss.vert - (echo 'const char *neoGloss_vert_src =';\ - sed 's/..*/"&\\n"/' neoGloss.vert;\ - echo ';') >neoGloss_vs_gl.inc - -neoVehicle_vs_gl.inc: neoVehicle.vert - (echo 'const char *neoVehicle_vert_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.vert;\ - echo ';') >neoVehicle_vs_gl.inc - -neoVehicle_fs_gl.inc: neoVehicle.frag - (echo 'const char *neoVehicle_frag_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.frag;\ - echo ';') >neoVehicle_fs_gl.inc - -im2d_UV2_gl.inc: im2d_UV2.vert - (echo 'const char *im2d_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' im2d_UV2.vert;\ - echo ';') >im2d_UV2_gl.inc - -screenDroplet_fs_gl.inc: screenDroplet.frag - (echo 'const char *screenDroplet_frag_src =';\ - sed 's/..*/"&\\n"/' screenDroplet.frag;\ - echo ';') >screenDroplet_fs_gl.inc diff --git a/src/extras/shaders/make_glsl.sh b/src/extras/shaders/make_glsl.sh new file mode 100644 index 00000000..0af98961 --- /dev/null +++ b/src/extras/shaders/make_glsl.sh @@ -0,0 +1,9 @@ +#!sh +for i in *.vert; do + echo $i + ./makeinc_glsl.sh $i +done +for i in *.frag; do + echo $i + ./makeinc_glsl.sh $i +done diff --git a/src/extras/shaders/make.cmd b/src/extras/shaders/make_hlsl.cmd similarity index 58% rename from src/extras/shaders/make.cmd rename to src/extras/shaders/make_hlsl.cmd index 8404ac6c..dee95283 100644 --- a/src/extras/shaders/make.cmd +++ b/src/extras/shaders/make_hlsl.cmd @@ -1,3 +1,3 @@ @echo off -for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo %%~nf.cso %%f -for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo %%~nf.cso %%f +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 diff --git a/src/extras/shaders/makeinc_glsl.sh b/src/extras/shaders/makeinc_glsl.sh new file mode 100644 index 00000000..2bc6a387 --- /dev/null +++ b/src/extras/shaders/makeinc_glsl.sh @@ -0,0 +1,6 @@ +#!sh +ext=${1##*.} +name=${1%.*} +(echo "const char *${name}_${ext}_src =";\ +sed 's/..*/"&\\n"/' $1;\ +echo ';') > obj/${name}_${ext}.inc diff --git a/src/extras/shaders/makeinc.sh b/src/extras/shaders/makeinc_hlsl.sh similarity index 93% rename from src/extras/shaders/makeinc.sh rename to src/extras/shaders/makeinc_hlsl.sh index a649af33..a5b12867 100644 --- a/src/extras/shaders/makeinc.sh +++ b/src/extras/shaders/makeinc_hlsl.sh @@ -1,4 +1,5 @@ #!sh +cd obj for i in *cso; do (echo -n 'static ' xxd -i $i | grep -v '_len = ') > ${i%cso}inc diff --git a/src/extras/shaders/colourfilterVC_PS.cso b/src/extras/shaders/obj/colourfilterVC_PS.cso similarity index 100% rename from src/extras/shaders/colourfilterVC_PS.cso rename to src/extras/shaders/obj/colourfilterVC_PS.cso diff --git a/src/extras/shaders/colourfilterVC_PS.inc b/src/extras/shaders/obj/colourfilterVC_PS.inc similarity index 100% rename from src/extras/shaders/colourfilterVC_PS.inc rename to src/extras/shaders/obj/colourfilterVC_PS.inc diff --git a/src/extras/shaders/colourfilterVC_fs_gl.inc b/src/extras/shaders/obj/colourfilterVC_frag.inc similarity index 100% rename from src/extras/shaders/colourfilterVC_fs_gl.inc rename to src/extras/shaders/obj/colourfilterVC_frag.inc diff --git a/src/extras/shaders/contrastPS.cso b/src/extras/shaders/obj/contrastPS.cso similarity index 100% rename from src/extras/shaders/contrastPS.cso rename to src/extras/shaders/obj/contrastPS.cso diff --git a/src/extras/shaders/contrastPS.inc b/src/extras/shaders/obj/contrastPS.inc similarity index 100% rename from src/extras/shaders/contrastPS.inc rename to src/extras/shaders/obj/contrastPS.inc diff --git a/src/extras/shaders/contrast_fs_gl.inc b/src/extras/shaders/obj/contrast_frag.inc similarity index 100% rename from src/extras/shaders/contrast_fs_gl.inc rename to src/extras/shaders/obj/contrast_frag.inc diff --git a/src/extras/shaders/default_UV2_VS.cso b/src/extras/shaders/obj/default_UV2_VS.cso similarity index 100% rename from src/extras/shaders/default_UV2_VS.cso rename to src/extras/shaders/obj/default_UV2_VS.cso diff --git a/src/extras/shaders/default_UV2_VS.inc b/src/extras/shaders/obj/default_UV2_VS.inc similarity index 100% rename from src/extras/shaders/default_UV2_VS.inc rename to src/extras/shaders/obj/default_UV2_VS.inc diff --git a/src/extras/shaders/default_UV2_gl.inc b/src/extras/shaders/obj/default_UV2_vert.inc similarity index 100% rename from src/extras/shaders/default_UV2_gl.inc rename to src/extras/shaders/obj/default_UV2_vert.inc diff --git a/src/extras/shaders/im2d_UV2_gl.inc b/src/extras/shaders/obj/im2d_UV2_vert.inc similarity index 100% rename from src/extras/shaders/im2d_UV2_gl.inc rename to src/extras/shaders/obj/im2d_UV2_vert.inc diff --git a/src/extras/shaders/im2d_gl.inc b/src/extras/shaders/obj/im2d_vert.inc similarity index 100% rename from src/extras/shaders/im2d_gl.inc rename to src/extras/shaders/obj/im2d_vert.inc diff --git a/src/extras/shaders/neoGloss_PS.cso b/src/extras/shaders/obj/neoGloss_PS.cso similarity index 100% rename from src/extras/shaders/neoGloss_PS.cso rename to src/extras/shaders/obj/neoGloss_PS.cso diff --git a/src/extras/shaders/neoGloss_PS.inc b/src/extras/shaders/obj/neoGloss_PS.inc similarity index 100% rename from src/extras/shaders/neoGloss_PS.inc rename to src/extras/shaders/obj/neoGloss_PS.inc diff --git a/src/extras/shaders/neoGloss_VS.cso b/src/extras/shaders/obj/neoGloss_VS.cso similarity index 100% rename from src/extras/shaders/neoGloss_VS.cso rename to src/extras/shaders/obj/neoGloss_VS.cso diff --git a/src/extras/shaders/neoGloss_VS.inc b/src/extras/shaders/obj/neoGloss_VS.inc similarity index 100% rename from src/extras/shaders/neoGloss_VS.inc rename to src/extras/shaders/obj/neoGloss_VS.inc diff --git a/src/extras/shaders/neoGloss_fs_gl.inc b/src/extras/shaders/obj/neoGloss_frag.inc similarity index 100% rename from src/extras/shaders/neoGloss_fs_gl.inc rename to src/extras/shaders/obj/neoGloss_frag.inc diff --git a/src/extras/shaders/neoGloss_vs_gl.inc b/src/extras/shaders/obj/neoGloss_vert.inc similarity index 100% rename from src/extras/shaders/neoGloss_vs_gl.inc rename to src/extras/shaders/obj/neoGloss_vert.inc diff --git a/src/extras/shaders/neoRimSkin_VS.cso b/src/extras/shaders/obj/neoRimSkin_VS.cso similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.cso rename to src/extras/shaders/obj/neoRimSkin_VS.cso diff --git a/src/extras/shaders/neoRimSkin_VS.inc b/src/extras/shaders/obj/neoRimSkin_VS.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.inc rename to src/extras/shaders/obj/neoRimSkin_VS.inc diff --git a/src/extras/shaders/neoRimSkin_gl.inc b/src/extras/shaders/obj/neoRimSkin_vert.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_gl.inc rename to src/extras/shaders/obj/neoRimSkin_vert.inc diff --git a/src/extras/shaders/neoRim_VS.cso b/src/extras/shaders/obj/neoRim_VS.cso similarity index 100% rename from src/extras/shaders/neoRim_VS.cso rename to src/extras/shaders/obj/neoRim_VS.cso diff --git a/src/extras/shaders/neoRim_VS.inc b/src/extras/shaders/obj/neoRim_VS.inc similarity index 100% rename from src/extras/shaders/neoRim_VS.inc rename to src/extras/shaders/obj/neoRim_VS.inc diff --git a/src/extras/shaders/neoRim_gl.inc b/src/extras/shaders/obj/neoRim_vert.inc similarity index 100% rename from src/extras/shaders/neoRim_gl.inc rename to src/extras/shaders/obj/neoRim_vert.inc diff --git a/src/extras/shaders/neoVehicle_PS.cso b/src/extras/shaders/obj/neoVehicle_PS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_PS.cso rename to src/extras/shaders/obj/neoVehicle_PS.cso diff --git a/src/extras/shaders/neoVehicle_PS.inc b/src/extras/shaders/obj/neoVehicle_PS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_PS.inc rename to src/extras/shaders/obj/neoVehicle_PS.inc diff --git a/src/extras/shaders/neoVehicle_VS.cso b/src/extras/shaders/obj/neoVehicle_VS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_VS.cso rename to src/extras/shaders/obj/neoVehicle_VS.cso diff --git a/src/extras/shaders/neoVehicle_VS.inc b/src/extras/shaders/obj/neoVehicle_VS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_VS.inc rename to src/extras/shaders/obj/neoVehicle_VS.inc diff --git a/src/extras/shaders/neoVehicle_fs_gl.inc b/src/extras/shaders/obj/neoVehicle_frag.inc similarity index 100% rename from src/extras/shaders/neoVehicle_fs_gl.inc rename to src/extras/shaders/obj/neoVehicle_frag.inc diff --git a/src/extras/shaders/neoVehicle_vs_gl.inc b/src/extras/shaders/obj/neoVehicle_vert.inc similarity index 100% rename from src/extras/shaders/neoVehicle_vs_gl.inc rename to src/extras/shaders/obj/neoVehicle_vert.inc diff --git a/src/extras/shaders/neoWorldVC_PS.cso b/src/extras/shaders/obj/neoWorldVC_PS.cso similarity index 100% rename from src/extras/shaders/neoWorldVC_PS.cso rename to src/extras/shaders/obj/neoWorldVC_PS.cso diff --git a/src/extras/shaders/neoWorldVC_PS.inc b/src/extras/shaders/obj/neoWorldVC_PS.inc similarity index 100% rename from src/extras/shaders/neoWorldVC_PS.inc rename to src/extras/shaders/obj/neoWorldVC_PS.inc diff --git a/src/extras/shaders/neoWorldVC_fs_gl.inc b/src/extras/shaders/obj/neoWorldVC_frag.inc similarity index 100% rename from src/extras/shaders/neoWorldVC_fs_gl.inc rename to src/extras/shaders/obj/neoWorldVC_frag.inc diff --git a/src/extras/shaders/screenDroplet_PS.cso b/src/extras/shaders/obj/screenDroplet_PS.cso similarity index 100% rename from src/extras/shaders/screenDroplet_PS.cso rename to src/extras/shaders/obj/screenDroplet_PS.cso diff --git a/src/extras/shaders/screenDroplet_PS.inc b/src/extras/shaders/obj/screenDroplet_PS.inc similarity index 100% rename from src/extras/shaders/screenDroplet_PS.inc rename to src/extras/shaders/obj/screenDroplet_PS.inc diff --git a/src/extras/shaders/screenDroplet_fs_gl.inc b/src/extras/shaders/obj/screenDroplet_frag.inc similarity index 100% rename from src/extras/shaders/screenDroplet_fs_gl.inc rename to src/extras/shaders/obj/screenDroplet_frag.inc diff --git a/src/extras/shaders/simple_fs_gl.inc b/src/extras/shaders/obj/simple_frag.inc similarity index 100% rename from src/extras/shaders/simple_fs_gl.inc rename to src/extras/shaders/obj/simple_frag.inc diff --git a/vendor/librw b/vendor/librw index 60a5ace1..5c953008 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 60a5ace16309ccd3d174a3ec14a1062540934066 +Subproject commit 5c95300890559c85a2764bc200361f904cd4f9f4 From 675aef29cf85f956052a150792d4d56f91ff692c Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 5 Feb 2021 17:51:57 +0300 Subject: [PATCH 052/113] Detect joystick menu for XInput --- src/core/ControllerConfig.cpp | 5 ++++ src/core/Frontend.h | 2 +- src/core/MenuScreensCustom.cpp | 51 ++++++++++++++++++++++++++++++++-- src/core/Pad.cpp | 6 ++++ src/core/Pad.h | 2 ++ src/core/config.h | 4 +-- src/core/re3.cpp | 42 ++++++++++++++++++++++++++-- src/skel/crossplatform.h | 2 +- src/skel/glfw/glfw.cpp | 8 +++--- src/skel/win/win.cpp | 4 +++ 10 files changed, 112 insertions(+), 14 deletions(-) diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 7f634619..fda435ae 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -326,6 +326,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; diff --git a/src/core/Frontend.h b/src/core/Frontend.h index c1c3983e..060b70da 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -206,7 +206,7 @@ enum eMenuScreen #ifdef GRAPHICS_MENU_OPTIONS MENUPAGE_GRAPHICS_SETTINGS, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU MENUPAGE_DETECT_JOYSTICK, #endif diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 770e8ec1..c73d64b4 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 +#include +#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" @@ -277,11 +286,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 +323,40 @@ 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) { + if (CPad::XInputJoy1 != -1 && CPad::XInputJoy1 != found) + CPad::XInputJoy2 = CPad::XInputJoy1; + else + CPad::XInputJoy2 = -1; + + 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); @@ -567,7 +612,7 @@ CMenuScreenCustom aScreens[] = { #else MENUACTION_KEYBOARDCTRLS,"FEC_RED", {nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS}, 320, 150, MENUALIGN_CENTER, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#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, @@ -715,7 +760,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 5c79c0d3..e75510e5 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -1585,8 +1585,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 9f9f81b6..f141ed6c 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -276,6 +276,8 @@ public: void SetDrunkInputDelay(int32 delay) { DrunkDrivingBufferUsed = delay; } #ifdef XINPUT + static int XInputJoy1; + static int XInputJoy2; void AffectFromXinput(uint32 pad); #endif diff --git a/src/core/config.h b/src/core/config.h index cc82f8d6..abb819f9 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -298,8 +298,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 diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 4b828171..3388b56a 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -1,6 +1,14 @@ #include #define WITHWINDOWS #include "common.h" +#if defined DETECT_JOYSTICK_MENU && defined XINPUT +#include +#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 @@ -249,8 +257,32 @@ 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; + } + } + } +#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)) { @@ -348,8 +380,12 @@ 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("reVC.ini"); diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index 009b17c7..6ea5b11e 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 diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 97a77827..8fe1d93f 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -80,7 +80,7 @@ static psGlobalType PsGlobal; size_t _dwMemAvailPhys; RwUInt32 gGameState; -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU char gSelectedJoystickName[128] = ""; #endif @@ -852,7 +852,7 @@ 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 +917,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); @@ -2182,7 +2182,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 397e88c4..6ed02011 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; From 2cad49940e96b53adac413f66dcbc690774dba44 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 7 Feb 2021 21:13:54 +0300 Subject: [PATCH 053/113] Use our synonyms for attack anims again --- src/animation/AnimManager.cpp | 30 ++++++++++----------- src/animation/AnimationId.h | 16 +++++++++++ src/peds/Ped.cpp | 4 +-- src/peds/Ped.h | 24 ++++++++--------- src/peds/PedFight.cpp | 50 +++++++++++++++++------------------ src/peds/PlayerPed.cpp | 4 +-- 6 files changed, 72 insertions(+), 56 deletions(-) diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp index 8d35b06b..f6ac3eb5 100644 --- a/src/animation/AnimManager.cpp +++ b/src/animation/AnimManager.cpp @@ -232,25 +232,25 @@ AnimAssocDesc aBikeAnimDescs[] = { { ANIM_BIKE_RIDE_P, ASSOC_DELETEFADEDOUT | ASSOC_DRIVING }, }; AnimAssocDesc aMeleeAnimDescs[] = { - { ANIM_ATTACK_1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_ATTACK_2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_ATTACK_EXTRA1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_ATTACK_EXTRA2, ASSOC_REPEAT }, - { ANIM_ATTACK_3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT }, + { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, }; AnimAssocDesc aSwingAnimDescs[] = { - { 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_REPEAT }, - { ANIM_ATTACK_3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_ATTACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_ATTACK_2ND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_ATTACK_START, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_MELEE_IDLE_FIGHTMODE, ASSOC_REPEAT }, + { ANIM_MELEE_ATTACK_FINISH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, }; AnimAssocDesc aWeaponAnimDescs[] = { - { 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 }, - { ANIM_ATTACK_3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { 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_WEAPON_FIRE_3RD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, }; AnimAssocDesc aMedicAnimDescs[] = { { ANIM_MEDIC_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h index afe37f78..0b5d8d8e 100644 --- a/src/animation/AnimationId.h +++ b/src/animation/AnimationId.h @@ -241,6 +241,22 @@ enum AnimationId ANIM_ATTACK_EXTRA2, ANIM_ATTACK_3, + // 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_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_SUNBATHE_IDLE, ANIM_SUNBATHE_DOWN, ANIM_SUNBATHE_UP, diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index de474f38..1484d578 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -617,7 +617,7 @@ CPed::SetMoveAnim(void) if (!animAssoc) { animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (animAssoc && m_nPedState == PED_FIGHT) return; @@ -1433,7 +1433,7 @@ CPed::CalculateNewVelocity(void) fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); if(!fightAssoc) - fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if ((!idleAssoc || idleAssoc->blendAmount < 0.5f) && !fightAssoc && !bIsDucking) { LimbOrientation newUpperLegs; diff --git a/src/peds/Ped.h b/src/peds/Ped.h index ac776469..ec6574de 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -1015,16 +1015,16 @@ public: static AnimationId Get3rdFireAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_COP3_RD)) - return ANIM_ATTACK_3; + return ANIM_WEAPON_FIRE_3RD; else return (AnimationId)0; } static AnimationId GetFireAnimGround(CWeaponInfo* weapon, bool kickFloorIfNone = true) { if (weapon->IsFlagSet(WEAPONFLAG_GROUND_2ND)) - return ANIM_ATTACK_2; + return ANIM_WEAPON_CROUCHFIRE; else if (weapon->IsFlagSet(WEAPONFLAG_GROUND_3RD)) - return ANIM_ATTACK_3; + return ANIM_WEAPON_FIRE_3RD; else if (kickFloorIfNone) return ANIM_STD_KICKGROUND; else @@ -1035,54 +1035,54 @@ public: if (weapon->IsFlagSet(WEAPONFLAG_ANIMDETONATE)) return ANIM_STD_DETONATE; else - return ANIM_ATTACK_1; + return ANIM_WEAPON_FIRE; } static AnimationId GetCrouchReloadAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_RELOAD)) - return ANIM_ATTACK_EXTRA2; + return ANIM_WEAPON_CROUCHRELOAD; else return (AnimationId)0; } static AnimationId GetCrouchFireAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) - return ANIM_ATTACK_2; + return ANIM_WEAPON_CROUCHFIRE; else return (AnimationId)0; } static AnimationId GetReloadAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_RELOAD)) - return ANIM_ATTACK_EXTRA1; + return ANIM_WEAPON_RELOAD; else return (AnimationId)0; } static AnimationId GetFightIdleWithMeleeAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_FIGHTMODE)) - return ANIM_ATTACK_EXTRA2; + return ANIM_MELEE_IDLE_FIGHTMODE; else return (AnimationId)0; } static AnimationId GetFinishingAttackAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_FINISH_3RD)) - return ANIM_ATTACK_3; + return ANIM_MELEE_ATTACK_FINISH; else return (AnimationId)0; } static AnimationId GetSecondFireAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_USE_2ND)) - return ANIM_ATTACK_2; // or ANIM_MELEE_ATTACK_2ND + return ANIM_WEAPON_FIRE_2ND; else return (AnimationId)0; } static AnimationId GetMeleeStartAnim(CWeaponInfo* weapon) { if (weapon->IsFlagSet(WEAPONFLAG_PARTIALATTACK)) - return ANIM_ATTACK_EXTRA1; + return ANIM_MELEE_ATTACK_START; else return (AnimationId)0; } @@ -1090,7 +1090,7 @@ public: static AnimationId GetThrowAnim(CWeaponInfo *weapon) { if (weapon->IsFlagSet(WEAPONFLAG_THROW)) - return ANIM_ATTACK_EXTRA1; + return ANIM_THROWABLE_START_THROW; else return (AnimationId)0; } diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 66c71927..79e01211 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -182,14 +182,14 @@ CPed::SetPointGunAt(CEntity *to) if (bCrouchWhenShooting && bIsDucking && GetCrouchFireAnim(curWeapon)) { aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(curWeapon)); } else { - aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1); + aimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE); } 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_ATTACK_1); + aimAssoc = CAnimManager::AddAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE); } aimAssoc->blendAmount = 0.0f; @@ -204,7 +204,7 @@ CPed::PointGunAt(void) { CWeaponInfo *weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); float animLoopStart = weaponInfo->m_fAnimLoopStart; - CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1); + CAnimBlendAssociation *weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE); if (!weaponAssoc || weaponAssoc->blendDelta < 0.0f) { if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) { weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo)); @@ -240,7 +240,7 @@ CPed::ClearPointGunAt(void) RestorePreviousState(); } weaponInfo = CWeaponInfo::GetWeaponInfo(GetWeapon()->m_eWeaponType); - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE); if (!animAssoc || animAssoc->blendDelta < 0.0f) { if (weaponInfo->IsFlagSet(WEAPONFLAG_CROUCHFIRE)) { animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), GetCrouchFireAnim(weaponInfo)); @@ -284,7 +284,7 @@ CPed::SetAttack(CEntity *victim) SetPedState(PED_ATTACK); bIsAttacking = false; - CAnimBlendAssociation *animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_EXTRA1, 8.0f); + CAnimBlendAssociation *animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK_START, 8.0f); animAssoc->SetRun(); if (animAssoc->currentTime == animAssoc->hierarchy->totalLength) animAssoc->SetCurrentTime(0.0f); @@ -304,7 +304,7 @@ CPed::SetAttack(CEntity *victim) if (m_nPedState != PED_ATTACK) { SetPedState(PED_ATTACK); bIsAttacking = false; - CAnimBlendAssociation* animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_ATTACK_EXTRA1, 8.0f); + CAnimBlendAssociation* animAssoc = CAnimManager::BlendAnimation(GetClump(), curWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK_START, 8.0f); animAssoc->SetRun(); if (animAssoc->currentTime == animAssoc->hierarchy->totalLength) animAssoc->SetCurrentTime(0.0f); @@ -397,7 +397,7 @@ CPed::SetAttack(CEntity *victim) AnimationId fireAnim; if (curWeapon->IsFlagSet(WEAPONFLAG_THROW)) - fireAnim = ANIM_ATTACK_EXTRA1; + fireAnim = ANIM_THROWABLE_START_THROW; else if (CGame::nastyGame && (curWeapon->IsFlagSet(WEAPONFLAG_GROUND_2ND) || curWeapon->IsFlagSet(WEAPONFLAG_GROUND_3RD))) { PedOnGroundState pedOnGround = CheckForPedsOnGroundToAttack(this, nil); if (pedOnGround > PED_IN_FRONT_OF_ATTACKER || pedOnGround == NO_PED && bIsStanding && m_pCurSurface && m_pCurSurface->IsVehicle()) { @@ -509,13 +509,13 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) } } } - } else if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_EXTRA1 && currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { + } else if (attackAssoc && attackAssoc->animId == ANIM_THROWABLE_START_THROW && currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { if ((!ped->IsPlayer() || ((CPlayerPed*)ped)->m_bHaveTargetSelected) && ped->IsPlayer()) { attackAssoc->blendDelta = -1000.0f; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_2); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROWU); } else { attackAssoc->blendDelta = -1000.0; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_1); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_THROWABLE_THROW); } newAnim->SetFinishCallback(FinishedAttackCB, ped); @@ -538,17 +538,17 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) AnimationId groundAnim = GetFireAnimGround(currentWeapon); CAnimBlendAssociation *groundAnimAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), groundAnim); if (!(groundAnimAssoc && (groundAnimAssoc->blendAmount > 0.95f || groundAnimAssoc->blendDelta > 0.0f))) { - if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_1) { + if (attackAssoc && attackAssoc->animId == ANIM_MELEE_ATTACK) { newAnim = CAnimManager::BlendAnimation( ped->GetClump(), currentWeapon->m_AnimToPlay, GetSecondFireAnim(currentWeapon), 8.0f); } else { newAnim = CAnimManager::BlendAnimation( - ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_ATTACK_1, 8.0f); + ped->GetClump(), currentWeapon->m_AnimToPlay, ANIM_MELEE_ATTACK, 8.0f); } newAnim->SetFinishCallback(FinishedAttackCB, ped); } } else { - if (attackAssoc && attackAssoc->animId == ANIM_ATTACK_1 && currentWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) { + if (attackAssoc && attackAssoc->animId == ANIM_MELEE_ATTACK && currentWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) { attackAssoc->blendDelta = -8.0f; attackAssoc->flags |= ASSOC_DELETEFADEDOUT; ped->ClearAttack(); @@ -556,7 +556,7 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) } if (attackAssoc) { if (currentWeapon->m_AnimToPlay == ASSOCGRP_THROW) { - if ((attackAssoc->animId == ANIM_ATTACK_1 || attackAssoc->animId == ANIM_ATTACK_2) && ped->GetWeapon()->m_nAmmoTotal > 0) { + if ((attackAssoc->animId == ANIM_THROWABLE_THROW || attackAssoc->animId == ANIM_THROWABLE_THROWU) && ped->GetWeapon()->m_nAmmoTotal > 0) { ped->RemoveWeaponModel(currentWeapon->m_nModelId); ped->AddWeaponModel(currentWeapon->m_nModelId); } @@ -831,12 +831,12 @@ CPed::Attack(void) if(ourWeapon->m_AnimToPlay != ASSOCGRP_BASEBALLBAT && ourWeapon->m_AnimToPlay != ASSOCGRP_GOLFCLUB) { if (ourWeapon->m_eWeaponFire != WEAPON_FIRE_MELEE) { - TransformToNode(firePos, (weaponAnimAssoc->animId == ANIM_ATTACK_2 && ourWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) ? PED_FOOTR : PED_HANDR); + TransformToNode(firePos, (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND && ourWeapon->m_AnimToPlay == ASSOCGRP_UNARMED) ? PED_FOOTR : PED_HANDR); } else { firePos = GetMatrix() * firePos; } } else { - if (weaponAnimAssoc->animId == ANIM_ATTACK_2) + if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND) firePos.z = 0.7f * ourWeapon->m_fRadius - 1.0f; firePos = GetMatrix() * firePos; @@ -859,7 +859,7 @@ CPed::Attack(void) } switch (ourWeapon->m_AnimToPlay) { case ASSOCGRP_UNARMED: - if (weaponAnimAssoc->animId == ANIM_ATTACK_1 || weaponAnimAssoc->animId == ANIM_ATTACK_EXTRA1) + if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK || weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_START) DMAudio.PlayOneShot(m_audioEntityId, SOUND_FIGHT_46, (damagerType | (GetWeapon()->m_eWeaponType << 8))); break; case ASSOCGRP_KNIFE: @@ -882,7 +882,7 @@ CPed::Attack(void) } else { CVector firePos = ourWeapon->m_vecFireOffset; - if (weaponAnimAssoc->animId == ANIM_ATTACK_2) + if (weaponAnimAssoc->animId == ANIM_MELEE_ATTACK_2ND) firePos.z = 0.7f * ourWeapon->m_fRadius - 1.0f; firePos = GetMatrix() * firePos; @@ -996,7 +996,7 @@ CPed::Attack(void) weaponAnimAssoc->SetFinishCallback(FinishedAttackCB, this); } else if (GetSecondFireAnim(ourWeapon)) { if (weaponAnimAssoc->animId == GetSecondFireAnim(ourWeapon)) { - weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_ATTACK_1, 8.0f); + weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, ANIM_WEAPON_FIRE, 8.0f); } else { weaponAnimAssoc = CAnimManager::BlendAnimation(GetClump(), ourWeapon->m_AnimToPlay, GetSecondFireAnim(ourWeapon), 8.0f); } @@ -1929,7 +1929,7 @@ CPed::EndFight(uint8 endType) RestorePreviousState(); CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (animAssoc) animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -4146,27 +4146,27 @@ CPed::RemoveWeaponAnims(int unused, float animDelta) CAnimBlendAssociation *weaponAssoc; //CWeaponInfo::GetWeaponInfo(unused); - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_1); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE); if (weaponAssoc) { weaponAssoc->blendDelta = animDelta; weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_2); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE_2ND); if (weaponAssoc) { weaponAssoc->blendDelta = animDelta; weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_3); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_FIRE_3RD); if (weaponAssoc) { weaponAssoc->blendDelta = animDelta; weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA1); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_RELOAD); if (weaponAssoc) { weaponAssoc->blendDelta = animDelta; weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; } - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (weaponAssoc) { weaponAssoc->flags |= ASSOC_DELETEFADEDOUT; if (weaponAssoc->flags & ASSOC_PARTIAL) diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index e457189a..9c668cf4 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -333,7 +333,7 @@ CPlayerPed::SetRealMoveAnim(void) if (!curIdleAssoc) curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); if (!((curRunStopAssoc && curRunStopAssoc->IsRunning()) || (curRunStopRAssoc && curRunStopRAssoc->IsRunning()))) { @@ -406,7 +406,7 @@ CPlayerPed::SetRealMoveAnim(void) delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); CAnimBlendAssociation *fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (!fightIdleAnim) - fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ATTACK_EXTRA2); + fightIdleAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_MELEE_IDLE_FIGHTMODE); delete fightIdleAnim; delete curSprintAssoc; From 26bbbe003761490d16a75e4f4e06199e8bc47b70 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 9 Feb 2021 20:02:29 +0100 Subject: [PATCH 054/113] fix clouds --- src/core/FileLoader.cpp | 1 + src/render/Clouds.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index 4d1cd921..bf017256 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -317,6 +317,7 @@ CFileLoader::LoadCollisionModel(uint8 *buf, CColModel &model, char *modelname) buf += 4; if(model.numLines > 0){ //model.lines = (CColLine*)RwMalloc(model.numLines*sizeof(CColLine)); + REGISTER_MEMPTR(&model.lines); for(i = 0; i < model.numLines; i++){ //model.lines[i].Set(*(CVector*)buf, *(CVector*)(buf+12)); buf += 24; diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp index c7554356..e3a8c86e 100644 --- a/src/render/Clouds.cpp +++ b/src/render/Clouds.cpp @@ -265,8 +265,8 @@ CClouds::Render(void) for(i = 0; i < 37; i++){ RwV3d pos = { 2.0f*CoorsOffsetX[i], 2.0f*CoorsOffsetY[i], 40.0f*CoorsOffsetZ[i] + 40.0f }; - worldpos.x = campos.x*rot_cos + campos.y*rot_sin + pos.x; - worldpos.y = campos.x*rot_sin + campos.y*rot_cos + pos.y; + worldpos.x = pos.x*rot_cos + pos.y*rot_sin + campos.x; + worldpos.y = pos.x*rot_sin + pos.y*rot_cos + campos.y; worldpos.z = pos.z; if(bCloudOnScreen[i] && CSprite::CalcScreenCoors(worldpos, &screenpos, &szx, &szy, false)){ if(sundist < SCREEN_WIDTH/3){ From 12330e38cb3c2a023bc1327cb89afd19efed0a43 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 08:57:51 +0200 Subject: [PATCH 055/113] Controller menu --- gamefiles/TEXT/american.gxt | Bin 423450 -> 423838 bytes gamefiles/TEXT/french.gxt | Bin 467876 -> 468076 bytes gamefiles/TEXT/german.gxt | Bin 459590 -> 459742 bytes gamefiles/TEXT/italian.gxt | Bin 456886 -> 457046 bytes gamefiles/TEXT/spanish.gxt | Bin 454562 -> 454854 bytes src/core/ControllerConfig.cpp | 50 +- src/core/Frontend.cpp | 819 ++++++++++++++++++++++++++++++++- src/core/Frontend.h | 29 +- src/core/MenuScreensCustom.cpp | 41 +- src/core/config.h | 3 + src/render/Font.cpp | 40 +- src/render/Font.h | 5 +- utils/gxt/american.txt | 31 +- utils/gxt/french.txt | 10 +- utils/gxt/german.txt | 10 +- utils/gxt/italian.txt | 10 +- utils/gxt/spanish.txt | 10 +- 17 files changed, 1002 insertions(+), 56 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 1721705d03c59c549e692d13d43d2b048c48505c..f4afab9eb0f61be5dc3a9315887d4bc531836844 100644 GIT binary patch delta 5253 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 delta 4855 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 diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index bd9c658b68eb908a2592a174374975bf139222db..79e594ecea315973963ef93d6ec0f04d30f30e70 100644 GIT binary patch delta 4406 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 SSG?2q-t5xd4|X% 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 diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 2c2bd3bcfec12e6abbb77d662804402d32df7af9..144356ec74442fcee446431ff7edf398cc9e3903 100644 GIT binary patch delta 4483 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 diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 60012324f28785ce6f1505e2bb37f099eb606a7b..7ef6c0124b2336ea63b96e7ca56699b1aca1b780 100644 GIT binary patch delta 5096 zcmY+H4{#Lq7017~NluDzO$8GSh%v>qDxA5ya0!8?+1tI#-DU4?+17 zAwt+f*qw~$ z0&+tMB7C|nNxp;g8Ix~aD`WCKbvI-3ow~wgC1dt=V28!|Oqv{yJkA=(q2*b| z!psem-m}@vt?px+%}R7#B+h72iFm;mrAP=-L801}erQ0;LZSiWaqMOL!5qQpVd6w*Cr>=|7I8)~D~$!GZ8kMyAKPq> za>74trb^?hQZHmBV^w9S!e&$d$!#`U>tnVT3NJ)evTx;yg?v0JB?9P*n-8*-rV=e^ zGue~{P@N{u2yJE(eG6?igZ6jZYz95D)(bVNw3?djyKFW!eLu6=)O5e#g~oSKPeA?e zY!+w^p1bV>`=OoILC4=5rgiWShePPQXpEPv;_B8GYfGCs--RD?=8lbOx`5fMi@n}0 zrJhfX&nMpH>!y~7k`Q%4!m(9F|MkNq+~#EQsPC-_Tvc0fTVvHU{oIT069tLoCYcu~Zr-p0GJ3hcJu$ zOnXX>ApMlFcypQGG#so!o9==gYV(BU>*HvTy0+qK#jW=W~=?e|zw1to+I7Ee$_%-m#D z`J3{mm{g3k(q^^YL@9=YI~9^b{@lq9XcBAzzJrLrbX;z-O!nV124kr zKAO&<+^}Otl?1lhF^xa_Z{|jK7?=Gu$xoPDOwQo-jkYuymISP>9rsl?h-)OlUalbj-IkUYY)6ZPi9kC@Te`4cnMoyveT9# zKn)wF6bZoZG995Cjo!MN+A9w+w}^mi4>}x2wG&RzaP&cAysjqbWrdMqJSI5OHVNrX z%&kpB&gq$s{_tkQ7ihYvht*9|S|K`aRH>`Rl0aqcYpfPhHjQmgYgUHl^xrN*88n^= z)YJx92~%nuKV@Z3sS=)ZIfVmxqw9|>#9z%u85}I6A zu+3!+ud-4t%tn!8!kD91Rm?nMZ#*q4;E2;rdj=zHk!5L-O>&rO zu=pu!Jx+AA2qJct?^tiZVp%0t}d9# zi#pG%7-t+wNZ9qX8C=xqrHt)+jLvY=xnWh{6ccNTgmM-zC(|p2Wze2b@f@?aODX)- zc)vlft+rlbae8sZapiF{Xk1Uzjm3=>T-Rg9hQ^cJo?#<0uPJ|R zw<(tNBrjv4)wQI{841%ED_Iqn4wy3`=_(a-->9ii=|MU(r!p33rwv*oN$D{qg;8dY z(+#nkae@w)I;N569NuQz1zpOtV~B}TbPOC~BJ;XA%_?F_Ph}z)7&DVd>1n#-Ze#Xz zCXI=Ejpiml*SOc{X{wmq!Xl|c3||>fHf^l!V)1gSfEMQ05$Ql5i?@hMzhTJm&mZ>9 z{)suZg}SOlF=?oHa(>$5yYjSYQ#*AU*MecA_IowK^G{kPT}UNx*4n5lv5Xe$cq3NL zTAOuOb&=Q5`x+Dl9+s%h-rX?8|8 z8S<*J=0ww56&@oG8^g^N`5=>~sQHZ5zow^D4b|5A*Yu36Vb_oyLgusR88!3LbeS&B zIc8tj3hcHvt)^R-dTYqUw5bMuZ2KxyJ<;V14nA+inL-N-c!`ZhrO`~Eyj`bN_tj2fh0lS&5wHVk? z491pzE5CFR2U-w%Ak1UTNzV;6D3QAaL8n}m=*}&<(}g4t~)$j z`tjoBCE@G1reyJsm0pkUC~1_al%Z<^#)gW`t9F+*iwO>@CM$ZN4*f0%@Py0s9p`cg zU%On7nMvb@wTka5?KCR{?V_0pqj&8pUnljXYI?9eE@ID`;)S)ZalVI=jIEn$3cKFqW|YlFHTnwweYWJrLfs{9qNlp>YSWE5eumrvItES)mxEIUNgKqlY3)6cU){x>QtfJP{SX;R7R?jVklSjEp zm8RzZ^?uUJg%984rhK!S+#bL)*gzuF?UgsVIfe2$C8dSI3tUxUUB**aIQn2&_2H$* zxP!`$sZ&bmS4zLK!&9etxlCe!{!!JO2YoG%F|o delta 4872 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 { 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/Frontend.cpp b/src/core/Frontend.cpp index 4eae64b7..141f46f8 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -125,6 +125,10 @@ bool CMenuManager::m_PrefsMarketing = false; bool CMenuManager::m_PrefsDisableTutorials = false; #endif // !MASTER +#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +uint32 TimeToStopPadShaking; +#endif + const char* FrontendFilenames[][2] = { {"background", ""}, {"vc_logo", "vc_logom"}, @@ -151,7 +155,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)) @@ -526,6 +537,10 @@ CMenuManager::CMenuManager() #ifdef NO_ISLAND_LOADING m_PrefsIslandLoading = ISLAND_LOADING_LOW; #endif + +#ifdef GAMEPAD_MENU + m_PrefsControllerType = CONTROLLER_XBOXONE; +#endif } void @@ -1074,7 +1089,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen) } switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) { -#ifdef LEGACY_MENU_OPTIONS +#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) case MENUACTION_CTRLVIBRATION: if (m_PrefsUseVibration) rightText = TheText.Get("FEM_ON"); @@ -1539,6 +1554,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: @@ -2280,6 +2300,9 @@ CMenuManager::DrawBackground(bool transitionCall) break; case MENUPAGE_SKIN_SELECT: case MENUPAGE_KEYBOARD_CONTROLS: +#ifdef GAMEPAD_MENU + case MENUPAGE_CONTROLLER_SETTINGS: +#endif menuBg.topLeft_x = 14.0f; menuBg.topLeft_y = 39.0f; menuBg.topRight_x = 636.0f; @@ -2948,12 +2971,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(); } @@ -4896,6 +4926,16 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u if (changeAmount != 0) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { +#if defined(LEGACY_MENU_OPTIONS) || defined(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; @@ -5037,14 +5077,14 @@ void CMenuManager::ProcessOnOffMenuOptions() { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { -#ifdef LEGACY_MENU_OPTIONS +#if defined(LEGACY_MENU_OPTIONS) || defined(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: @@ -5510,6 +5550,14 @@ CMenuManager::SwitchMenuOnAndOff() m_bStartUpFrontEndRequested = false; m_bShutDownFrontEndRequested = false; + +#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) + // Reset pad shaking. + if (TimeToStopPadShaking && TimeToStopPadShaking < CTimer::GetTimeInMillisecondsPauseMode()) { + CPad::StopPadsShaking(); + TimeToStopPadShaking = 0; + } +#endif } void @@ -5534,6 +5582,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; @@ -5781,5 +5836,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_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; + 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..6457ce29 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 +#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) MENUPAGE_CONTROLLER_SETTINGS, +#endif +#ifdef LEGACY_MENU_OPTIONS MENUPAGE_DEBUG_MENU, MENUPAGE_CONTROLLER_PC_OLD1, MENUPAGE_CONTROLLER_PC_OLD2, @@ -275,7 +284,7 @@ enum eMenuAction MENUACTION_DRAWDIST, MENUACTION_MOUSESENS, MENUACTION_MP3VOLUMEBOOST, -#ifdef LEGACY_MENU_OPTIONS +#if defined(LEGACY_MENU_OPTIONS) || defined(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, @@ -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/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 770e8ec1..5b2f3d16 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -69,11 +69,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" }; @@ -332,6 +338,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, @@ -567,11 +581,13 @@ CMenuScreenCustom aScreens[] = { #else MENUACTION_KEYBOARDCTRLS,"FEC_RED", {nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS}, 320, 150, MENUALIGN_CENTER, #endif +#ifdef GAMEPAD_MENU + MENUACTION_CHANGEMENU, "FET_AGS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, MENUALIGN_CENTER, +#endif #ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS 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, }, @@ -611,8 +627,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 +649,24 @@ CMenuScreenCustom aScreens[] = { // MENUPAGE_NONE = 33 { "", 0, nil, nil, }, - -#ifdef LEGACY_MENU_OPTIONS +#ifdef GAMEPAD_MENU + { "FET_AGS", MENUPAGE_CONTROLLER_PC, new CCustomScreenLayout({40, 78, 25, 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, + }, +#elif defined(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, }, - +#endif +#ifdef LEGACY_MENU_OPTIONS // MENUPAGE_DEBUG_MENU = 18 { "FED_DBG", MENUPAGE_NONE, nil, nil, MENUACTION_RELOADIDE, "FED_RID", {nil, SAVESLOT_NONE, MENUPAGE_NONE}, 0, 0, 0, diff --git a/src/core/config.h b/src/core/config.h index cc82f8d6..7adbdd63 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -320,6 +320,9 @@ enum Config { //# 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) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 0f5930ee..35ed2e56 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -289,11 +289,26 @@ CFont::Initialise(void) SetDropShadowPosition(0); CTxdStore::PopCurrentTxd(); +#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); @@ -311,12 +326,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 @@ -369,6 +394,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(); @@ -1437,6 +1463,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 @@ -1488,6 +1516,8 @@ CFont::ParseToken(wchar *s, bool japShit) 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 @@ -1612,6 +1642,8 @@ CFont::ParseToken(wchar *s) 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 57f1814d..b0cd0a27 100644 --- a/src/render/Font.h +++ b/src/render/Font.h @@ -111,6 +111,8 @@ enum BUTTON_R1, BUTTON_R2, BUTTON_R3, + BUTTON_RSTICK_UP, + BUTTON_RSTICK_DOWN, BUTTON_RSTICK_LEFT, BUTTON_RSTICK_RIGHT, MAX_BUTTON_ICONS @@ -137,7 +139,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 diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index a91a3274..9bc1c96d 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -6484,8 +6484,9 @@ Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ the sniper rifle. [PLANE_H] Use the ~h~~k~~VEHICLE_ACCELERATE~~w~ button to accelerate, Left and right to turn. -[PLANE_4] -Use the ~h~~k~~VEHICLE_ACCELERATE~~w~ button to accelerate, Left and right to turn. +[PLANE_4] { reVC update } +{ Use the ~h~~k~~VEHICLE_ACCELERATE~~w~ button to accelerate, Left and right to turn. } +Use the right analog stick to accelerate, pull back on the left analog stick to climb, push forwards to descend. Left and right to turn. [HELP55] Press the ~h~~k~~PED_FIREWEAPON~~w~ button to attack the chef. @@ -13980,8 +13981,9 @@ To ~h~pick up a bomb~w~, simply maneuver the RC helicopter next to it. The RC He [TEX3_37:SERG3] Pushing ~h~back on the analog stick ~w~decreases the rotor speed, causing the helicopter to~h~ descend. -[TEX3_38:SERG3] -Pressing the ~h~~k~~VEHICLE_ACCELERATE~ ~w~button increases the rotor speed, causing the helicopter to ~h~ascend. +[TEX3_38:SERG3] { reVC update } +{ Pressing the ~h~~k~~VEHICLE_ACCELERATE~ ~w~button increases the rotor speed, causing the helicopter to ~h~ascend. } +Pushing ~h~forward on the analog stick ~w~increases the rotor speed, causing the helicopter to ~h~ascend. [TEX3_39:SERG3] ~g~To drop a bomb press the ~h~~k~~VEHICLE_HANDBRAKE~ ~g~button. @@ -14400,6 +14402,27 @@ NONE [FEA_FMN] RADIO OFF +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_360] +XBOX 360 CONTROLLER + +[FEC_ONE] +XBOX ONE CONTROLLER + +[FEC_TYP] +GAMEPAD TYPE + +[FET_AGS] +GAMEPAD SETTINGS + { end of file } [DUMMY] THIS LABEL NEEDS TO BE HERE !!! diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index a817ff41..a1bd7baa 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -6688,8 +6688,9 @@ Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ ~w~pour ~h~tirer~w~ avec le fusil [PLANE_H] Utilise la touche ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer. Gauche et droite pour tourner. -[PLANE_4] -Utilise la touche ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer. Gauche et droite pour tourner. +[PLANE_4] { reVC update } +{Utilise la touche ~h~~k~~VEHICLE_ACCELERATE~~w~ pour accélérer. Gauche et droite pour tourner.} +Utilise le joystick analogique droit pour accélérer, appuie vers le bas sur le joystick analogique gauche pour monter et vers le haut pour descendre. Gauche et droite pour tourner. [HELP55] Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour attaquer le chef. @@ -14262,8 +14263,9 @@ Pour ~h~ramasser une bombe~w~, manoeuvre l'hélico radiocommandé à côté. Il [TEX3_37:SERG3] Pousse le ~h~joystick analogique droit vers le haut ~w~pour vitesse la vitesse du rotor et ainsi faire ~h~ monter l'hélicoptère. -[TEX3_38:SERG3] -Pousse le ~h~~k~~VEHICLE_ACCELERATE~ ~w~pour augmenter la réduire du rotor et ainsi faire ~h~ descendre l'hélicoptère. +[TEX3_38:SERG3] { reVC update } +{Pousse le ~h~~k~~VEHICLE_ACCELERATE~ ~w~pour augmenter la réduire du rotor et ainsi faire ~h~ descendre l'hélicoptère.} +Pousse le ~h~joystick analogique droit vers la bas ~w~pour augmenter la réduire du rotor et ainsi faire ~h~ descendre l'hélicoptère. [TEX3_39:SERG3] ~g~Appuie sur la touche ~h~~k~~VEHICLE_HANDBRAKE~ ~g~pour larguer une bombe. diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index a2c86414..449e4993 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -6640,8 +6640,9 @@ Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Prãzisionsgewehr ~h~abzufeu [PLANE_H] Benutze die ~h~~k~~VEHICLE_ACCELERATE~~w~-Taste, um zu beschleunigen. Links bzw. Rechts für Richtungswechsel. -[PLANE_4] -Benutze die ~h~~k~~VEHICLE_ACCELERATE~~w~-Taste, um zu beschleunigen. Links bzw. Rechts für Richtungswechsel. +[PLANE_4] { reVC update } +{Benutze die ~h~~k~~VEHICLE_ACCELERATE~~w~-Taste, um zu beschleunigen. Links bzw. Rechts für Richtungswechsel.} +Benutze den rechten Analog-Stick, um zu beschleunigen. Ziehe den linken Analog-Stick, um zu steigen oder drücke ihn nach vorn, um zu sinken. Links bzw. Rechts für Richtungswechsel. [HELP55] Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um den Küchenchef anzugreifen. @@ -14262,8 +14263,9 @@ Um ~h~eine Bombe aufzunehmen~w~, steuere den Helikopter direkt über sie. Der He [TEX3_37:SERG3] Zieh den ~h~ Rechten Analog-Stick zurück~w~, um die Rotorgeschwindigkeit zu erhöhen, der Helikopter ~h~ gewinnt dann an Höhe. -[TEX3_38:SERG3] -Drück den ~h~ ~k~~VEHICLE_ACCELERATE~~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~ verliert dann an Höhe. +[TEX3_38:SERG3] { reVC update } +{Drück den ~h~ ~k~~VEHICLE_ACCELERATE~~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~ verliert dann an Höhe.} +Drück den ~h~ Rechten Analog-Stick nach vorn~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~ verliert dann an Höhe. [TEX3_39:SERG3] Um eine Bombe abzuwerfen, drücke die ~h~~k~~VEHICLE_HANDBRAKE~~g~-Taste. diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 84804cb3..5d8f65f4 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -6694,8 +6694,9 @@ Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile di precisi [PLANE_H] Usa il tasto ~h~~k~~VEHICLE_ACCELERATE~~w~ per accelerare e a sinistra e a destra per curvare. -[PLANE_4] -Usa il tasto ~h~~k~~VEHICLE_ACCELERATE~~w~ per accelerare e a sinistra e a destra per curvare. +[PLANE_4] { reVC update } +{Usa il tasto ~h~~k~~VEHICLE_ACCELERATE~~w~ per accelerare e a sinistra e a destra per curvare.} +Usa la levetta analogica destra per accelerare, premi la levetta analogica sinistra in basso per salire, in alto per scendere e a sinistra e a destra per curvare. [HELP55] Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per attaccare lo chef. @@ -14271,8 +14272,9 @@ Per raccogliere una bomba, avvicinaci l'elicottero radiocomandato. L'elicottero [TEX3_37:SERG3] Sposta ~h~in basso la levetta analogica destra~w~ per aumentare la velocità del rotore e ~h~far salire~w~ l'elicottero. -[TEX3_38:SERG3] -Sposta ~h~~k~~VEHICLE_ACCELERATE~~w~ per ridurre la velocità del rotore e ~h~far scendere~w~ l'elicottero. +[TEX3_38:SERG3] { reVC update } +{Sposta ~h~~k~~VEHICLE_ACCELERATE~~w~ per ridurre la velocità del rotore e ~h~far scendere~w~ l'elicottero.} +Sposta ~h~in alto la levetta analogica destra~w~ per ridurre la velocità del rotore e ~h~far scendere~w~ l'elicottero. [TEX3_39:SERG3] ~g~Per sganciare una bomba, premi il tasto ~h~~k~~VEHICLE_HANDBRAKE~~g~. diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 836d062a..5deb3f89 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -6485,8 +6485,9 @@ Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ el rifle de francotirador. [PLANE_H] Mueve ~h~~k~~VEHICLE_ACCELERATE~~w~ hacia delante para acelerar y a izquierda o derecha para girar. -[PLANE_4] -Mueve ~h~~k~~VEHICLE_ACCELERATE~~w~ hacia delante para acelerar y a izquierda o derecha para girar. +[PLANE_4] { reVC update } +{Mueve ~h~~k~~VEHICLE_ACCELERATE~~w~ hacia delante para acelerar y a izquierda o derecha para girar.} +Utiliza el joystick analógico derecho para acelerar, tira hacia atrás el joystick analógico izquierdo para ascender, empújalo hacia adelante para descender. Para girar muévelo a izquierda o derecha. [HELP55] Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para atacar al chef. @@ -13952,8 +13953,9 @@ Para ~h~recoger una bomba~w~, simplemente dirige el helicóptero RC hasta ella. [TEX3_37:SERG3] Si empujas ~h~el joystick analógico derecho hacia atrás~w~, aumentarás la velocidad del rotor y así ~h~ascenderá~w~. -[TEX3_38:SERG3] -Pulsa ~h~~k~~VEHICLE_ACCELERATE~~w~ para aumentar la velocidad del rotor y así ~h~ascender~w~. +[TEX3_38:SERG3] { reVC update } +{Pulsa ~h~~k~~VEHICLE_ACCELERATE~~w~ para aumentar la velocidad del rotor y así ~h~ascender~w~.} +Si empujas ~h~el joystick analógico derecho hacia adelante~w~disminuye la velocidad del rotor aumenta haciendo que el helicóptero ~h~descienda. [TEX3_39:SERG3] ~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_HANDBRAKE~~w~. From bf8687590eba833a0d24eae13108019b0105909f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 09:03:13 +0200 Subject: [PATCH 056/113] Add textures --- gamefiles/models/frontend_ds2.txd | Bin 0 -> 329976 bytes gamefiles/models/frontend_ds3.txd | Bin 0 -> 328360 bytes gamefiles/models/frontend_ds4.txd | Bin 0 -> 328360 bytes gamefiles/models/frontend_x360.txd | Bin 0 -> 328360 bytes gamefiles/models/frontend_xone.txd | Bin 0 -> 328360 bytes gamefiles/models/ps3btns.txd | Bin 0 -> 126760 bytes gamefiles/models/x360btns.txd | Bin 126760 -> 126760 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gamefiles/models/frontend_ds2.txd create mode 100644 gamefiles/models/frontend_ds3.txd create mode 100644 gamefiles/models/frontend_ds4.txd create mode 100644 gamefiles/models/frontend_x360.txd create mode 100644 gamefiles/models/frontend_xone.txd create mode 100644 gamefiles/models/ps3btns.txd diff --git a/gamefiles/models/frontend_ds2.txd b/gamefiles/models/frontend_ds2.txd new file mode 100644 index 0000000000000000000000000000000000000000..7cf6c41f3891ac3cf1dd41def0f2b4630cb75688 GIT binary patch literal 329976 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 literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd new file mode 100644 index 0000000000000000000000000000000000000000..dfd11e263fb8d6935671bf5b3c5f94d66bab16b5 GIT binary patch literal 328360 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 JCNg~g{{iT7WC{QP literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd new file mode 100644 index 0000000000000000000000000000000000000000..88f317f18ea0f70b1bcfc7989041ddde0bc7972a GIT binary patch literal 328360 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

#rME| ze!>2IYrGJb-;>Ujr{aI8=z0G7(65flL$LD?TrHk=Zu$pqi)!84W&S{7AL5@I=iT(Y ze5AUq?FF{JlyGu!W;pA+zx>sr#?9%<_QQIW82{7z+M0j&mp|eDd_u#8V{pC}+wbN8 ze>0f--4Z^6#d+@gi>9x0+!r#YU;2E#)p#1Kr zyo6i+KFOkg)@zig-#>W$qiTF~i8H`U5zrWm1KOeTZKYc%$e|WF& z$1I)=qovt2jr_&eYnqGuVRV)=lb0W$<9YcY>AXAV%Hysi}DTSOV5k)SXI-mJgI(ieMI?|>xWSv z(C-(Se#d@+TcZa2lIgRIpQ5Ry^ZpI-@muB7di)XVe|7y2qW|rB9|r%N{n7P5h~p0> zui+)HieG`{*ODse|KT4kwJY?We}A83Fg`)_|CKyZ&U^occz>n%6u zNlIQB6#9+ABcOPY_#aq*?=t=G@ouDWp2^rXYJZu)U?uMY9Lm2F;qVua_Tzt8e+#1j z?{EFp^MREIg=hD|)9e3tS^S@px9%lxir=BdZ;WD=$0ZlBN=3S#b04g3W9M%uelch~ zH_9Iu0a18_H6F0PEf+;u&9o7{_u{juWo<4>EB$9kcy5%ui-0IR!Wxg5k>Y;W^uh44 zJ8plf(tnY?3J-;cfPk`p0vt*|L^u>43J(DRWiJFclzxbCC_EG%0s_ij2yiI<5aCdG zC_DrNl)Vt(Q2HUlq3}?62nZ;9A;6*ZLxe-&q3{q8Q1(KAL+OVIhr&bQAt0dag#d@r z4-pQ9hr&ZZK-mic4y7L=910JGhk$^x7XlngKSVeb9tsZu0c9@)IFx>fa40+!9s&Z& zUI=g~{Se_$cqlvs1iG2Mpc}_9He34w5Whku_A3B=Wl4Ia7%63X&1|- z_`{&kZxkLK!lVC#?rMC>_`W(Ag1EHu#|N`Q6rK!|ODwqF_SU)7wQvO~NEtl^rT`pg4 zPcI+uw@T@n54v1Rm+LFPzg>Rmc^SV7DP68lg@Kpczs{bge_xfI?^rku$?Tt!rJLN*gfeew>K7{rZH?mFP(l9V5~srRPVQq;!c+ zl%8+*ekolpKQUS=U!vR9U#_2=U#_1_OV78fubiGM)-O>iZ)BdBF4KupdZJy*FO}C0 z54k=PE#p~@FE=s!`fd8ppYKZaAHJ{po$@6=uV|`i-oF917nT_P{9U2{zY>2^*MstN z`mgxYx%>%zd@odE_{UI?>hF7(`o{lmgEGWuyPM z=;^CmEPdO#gyvRb{vV^#id#@Z8ch%N_Fn7t8`5~H$-PsWpLH4Ezk&049oD7GEe5}^ zeo;DMXJtzLf5z8S`dY`UySMK=vO8wkSF-*9MTqi%QEo*>X~hsK4;T)2H4Sr^4H}uV zAPc3tJDy$LescbH60nr=L+9Tw4F2`q;w*l|IfLmpwjfJ6`nNQizpLx7-p@GUxe2nr zk=E$0!xx%vrnMOS(WdeBaD*$R<^H4Jr?rnAfGjj!@sA}!k_GhJZaZ&idW}5 zGql1keo%{gQk~Duu}_xw?nY}-<9@01nG=X^-XC-~`S0xZ#=hlz;MU!>Y<@P*?ToK~ z!M&GBoRT*Ng?^*(PHd_-rbt2uZ#@d;H~X3* z3+U?+M)R~0$XG5r@fFmEix+SBnoPDC@zOG_=jYorkyK z7DlIh4&^`YuA~)8%LpzW%KlR1y?_0*H!%rEN-iHU^dF=Amu(jl*-J2j$u+ySp8gPh z6XAFG#$%XCaJBORrq8jhKtK65vwx($Q)px1?|{0gm&pnw{VCS9F}~h@hS6`o3(s@= zEp(dOzo63&LmzdT(?5*%ykPE4OGlvJ#oAF6$$r2n(rRjTu=#TB62|?~1jj)&+gfDkgun#!o!>0E}9 zPPCT1DYyT$p?{|9aca$GqyJAz!NPtBLi76}fF3!CD=+!`qP_xf&6<5V!xw0aE4PKw z9c_=w&m_-t6K47tZv4Y&ljA+EKLGiSL+Oqr$_3L}=RF4!)%VsZ9^uAcRbR$AWlsnK zKJ4lE2{5_H^>^9s*2=a|N?It2JzJca^@|@nL}_2;sdR>v=f(&A3NMA1fIt_^OVrtM zGllq0$j-&M#f|%?+gn4M&S|Gc-#o z>X(;}5$ViHBHb>3u9%*gC(`khB=4_TnSFzP>@WGT|9R&<+sm43S%v`Pp~gE5S|4b7$AO1hOGa?>k+4325VxL(e?Wd%*+~9NE?BR_ zxO^5{57p@kA9OD%-73)ziSAXz%1=HA?>kU3((`tN3eMw}I;_serFi&juMX?+D=RIu zykN&~`CI>Rdwv$d`@fz^r+CZt?|%e>jUJlMn8z21@#8)lvvy?v{;?BR@@&ni3D1M0iuw0l^HQ?g=-|4?T zitNkzcmaigvXXy&IK8ew9GLYtYn6~dChW^;T-AEsut3lcpnm+n>uo(x}vh;TJ{~iUv_Obqb z?iqZ#4!4xi=iO+JgO9h@Eh*KhXH8 z@~CEd|N78xUw91|JWkl(l`$L^b2$5&F$M|gIa{p7d^#8k#}v*#N z^iXe~svqN&=f+Qc>uz|${%l9=9%FoH{(Q09RkpmAp&H_N>i&)WMK(VI^Z*#ZmecxU zWJbt!k&Rz7?BE^XMJg9>)Osl%;8N%7I$9i_%?`33v;t?@!!eos1A zo{ImWqUZVRL%%vI55dkqaJ6{ex#=IcEvj{Em-z#UeTaWj7oO9V?T7U$G5)9bwKf0lFMq=Q`GkfG$KZS|w%^Tx?Eehrez$~=U~!)N zKA!389QWSDN7ep&+UtaPfAfYk|1#+nV$Z|({I!nibIfn`{%aOxmlmbZHwA3{v!nIt zXnu^c9cZZ$e-M3UYf60(*B|Hnb=>@>hm7y94JfX59}MB|V=wTG*LP5UcNFh%%iqWI zy~F;ry}d?>`u&5~KdQ!;Ht53^lIMxFIc+&)$l<+U{x#F&gU%Jx#1OY|g(meMn& z^4h&$&L1O|mno&k%jM;9`D54btZn1zmOnx~h0*@&4(sQW)=@mPM*+X&=?5v@)$&le z{-OCT5Q0GKla^KKKDgoPDYeSf)6G8msLe1F;B_sP%q)6a)3X7WwuAKvTx zF^gxzXlXXZhWy3XYnqGuVRV)=lb0W$<9YcY>AXAVc!yhGO*({MO5JJ9k5$#c z;sVF-sv1$gs%k{}ud0E~dqRG3y|;aSQNE#k>3LBet7_VnC)H1`k0{@A{V?hS`u!r) z@7OPJYt(>WGJTfuQ#7@7-oGI}eye<1k3VAlude?=^uJy2!{DE@Kf3-0ar~j=HN51t zyYVY#33L|D88q_eloh6GZ>NyUCMkFO_uf-vH}Vpz($A zs3U2QgH`%;fam9l|If!CEB$9sdu~EpJ_0Ros=UzRzp3$)lFPe|`BjV-RtzrCZf3Rg zQ$BV5=lpM?{|AHUf486iQ~f{VExGZNzv_7b&5*~lS3lj~XY(tmUtjtR?=jA!#3q!1p!4Ux@96LQzODa<^GAZFe{lYxBW_eF6T-+hVDcfcZ5R6?#Q5Pa-s*YA zSik0{6p}nB`@xXu7WPBe zf9`uU;QvGaA4vZnobN8w{~qr~3g?-OU8DAw2@KZA|G&HOQ?*xAXNAX=@%WbhAM`(P^Z#8P|D*VSW&SICx;H*@{~ze}Ka66Q z$0ZjrkR#pCxer#ivGX^S{4r=eH_9Iu0a18#Djr__=jQ(dyZ#6J+j3Eq6%Nt!T)p?= zv#DimE=nu?XGnN%l)Q_8C_Fk952FA4`hTGN|Co{De%JKD8_9WG0gEqC_Cpj8g@?jJ zK){Fnl=VN*^M6Vn1#W~~{DfujH$H%a`JRX!Aey7P9}ZiOv7-K>07*@+$(i|5x!pwE3_2)4ljJ1kRs5 zZgdIb=#B1`N9~v z%>4Jzl{^dFRP*;CF3(C{mAncFD0vm&Q2HUlq3}?62nZ;9A;6*ZLxe-&q3{q8Q1(KA zL+OVIhr&bQAt0dag#d@r4-pQ9hr&ZZpqtwZx^WC+v$Zb(^DAV6&v%;j1D&RO@1x;& zttUcrX5Tks!Ge;99~>FWmVP?)C5G9yjZY-F57Hya}xp?%ie0_bK`EBGAS9WxBMx)yZ-lo&|QsB8Q)h2LlBo%{`g=eU!fsimKgo~d#3+ip1Sh+*V*e~bFSlA zX3ql}Z<5~H8LEA;N(8rG<=ed#a>+JfI{vW=-%g*1``~NF^|3>M5 z*Yc~g<)P!{Uxog2@>MwP%Kl}?->>)~AkabkVR;?=v;03Z`(4?(!F{N@nfdoxGB}UU z2iSf;oNAenX1VbweP@K8o}&CY1_-_J{_P+?LS6pN9(fo-8Jbc&Z7`_iLd107DR$<}$v21LyNPtV@?$XgZ1@ zy8$t?7YREnQ|kXSaOZ(v>v)HI`_3cS9BN<5`U6=W;QP=O8Ko6NsJvh}+|@M9VK!)F z&VnqI4tG4lz5e9d(sr(E%&yAn**K@M7xIZ^Pd;(3{ zZo9LFv+v^jFp79EE3Zba-%?oo#6R5S+0t@i?mZKW_E9+G_WT9>g+JL1dD5=m6tB*A zW@v?7{Gb-~q&lCQW1lSV-Hq0w#{E+1Gba$;yg%q}^55C*jeX1cz^!lu6P2(yw==%} z1@~S`clP^L`3z~#jnZ!s5QRrT@i2YQIrk=hzGVy)uUXkU;QS?RM6Nl5{h;t?Q0O-b z4}}MhK$y!z?3j<>{M8b6{;K8J;*|PLDQf=A%j5W7`ucQ#%5qaAp@X*`1@oJIO_2rk z^$4SR+6ZJUm!0?u>chp0H+)Sd+l+W=nbz}j@#CK7jreQJ`8BSbR%87we!KJVHr&Ge z!<5gV{Kwsuv_fea!No)Qixhe9Uq9_nOu~_p%SR0T$K?Fwi;3(d7|v_8*|qibhv=IK zzr!~k!%Tv!oewa5j%@|{$+wyPBki3+8w-C2)J?t2uSdtaHpbW6&oF&>`(1dR+i#)M z-2Mffb{P7o)13ZcwC4qLZ{vj+6>CRPB>MrQNUN#U!RE`gOBnY{k7M>ZqK6nC-%;8U zgGci5=FqTQ^uz^jeHEdPx%qmGrqTu&^J3(ENS~phr&P%1i#fsILHAvu0n;@CDl9%57nEN86+F zGs*MZgqc2u8~-rc2CLdC!4F^}Th9N4W7<)t7Nj*%N|*4|_U( z0!%J){av=ZwX*G#k`{_$&lYE9{o=Ucy4@` z1tdiD(D7yKNB)+to@bo*+=Lka{pC-bOW)7Ot+(fDgG&SF|7YJK&OZ)3)LJrvn~#L` z352-yJp2Rl!^%eTUvj~E9meIx_b7F`!Ux?;O1Db1L!x^XF?~rs2k$#jGSc&QgbL2% zmO6a(=i|P)$+;e1*q}E{FCzkif8e6!0lxxDKlI22QamdkC#+_BugN>pK6I|yhM(C+ z-#>gLu@}brvcK}v(dQ5A@hdAWv_8R(-|A?6!#)2jg7<$tlTPuL+tdFD1RFgxpUL}x zZQ_1jIe%xpA->>~H{eKkMm-F!g-5oDq?bpcoCGv63 zUjq9|LV&$ju=U?peM2oh_T3{*Z5Qece+ABm%E&d&9}2blhFg6G?Sf!h=g)7V@_6Fx zg%;jFw0yoX^ID$YyQKS<3s}JP_(ssz=iOI*UY+?R$nTteoZ@GC3g~CtQIy7!5d04z zz>H4Nga3yzIu&VY=*BckhnxHay1pd7yT7xT`A?X@<#fbRd?LThaqp@vy=wjhx_;MM zc|8lp&2Kn2kKvuQ1+>3)Pb$Sbb#|ruz_VBH&xRU4RiNK}mabs&xETE=18I(jY5Oi> z=#TB&jr7sE8l-KZ>7#!~#^1Fpy&e6(M**;Xtbd<-2A{6OEoJn1H`?Ri{cG(K1pkAH zpy{grr$~7JO7mr|_r>$a`(6i!L#y+l4bUXK{MEm#CEe@%_GUC{Ij^6YUshKg_l@H?nNMHC6{fG0% zkJ0+|*<9(iar2keYn-br96ji9=c)vb*4sCgxpye)0BPSUHoxiX{oO6SyXk*d^Y_h7 zF!_J6g!u!W^HL3Y4K)3bKDw*Uq59+*SWo2k3l=24{up;2+n|jpyuT7`yao&&C+zRa z7!Hd$oPEt0gM{>)E!JW_9opxZ!tHNKJzaJVA1zr!+iyO+G38*+={icsT0_hJ`HOd< zKEADC2ZTJjhP1CLgSPkO*Yx(X^>UmQF*z+_U>Z&L_x$HmnP! zX4t_wN;cN7Glmmq$)KaNa7&KOIM3PF`#U@RE8TweVms_fdyj9Rt<&Rw{`omd$fdt{ z;(anHiM;VYcKU-iU5W>47ypwd11N->}`}eK!LR@}NI#-^b@jqQHPwM?t zb3A_st`^TbH~j;*MYV42GJhbk5An~9^KN=xK2qJ*_5xd9N;tVVGo1C^U-^Uch39l- z`(eFGjQ{D~vG^Z<+pnG%^*7LXBs5$&2Ip(B{ca9q|7S4wyCr-Ci}T#~@l0Rmxc4SL zs`lSgw)^St1zKL@^4^f9r zy~F;ry}d?>`u&5~KdQ!;jQIX1*5lMgyqOpiwr9WBw5Bw9+(l*()O zemQ@PSYD=-9xs=d$K{V*zq7WDr(6Cg>}R;{uzo&i9mPX?6!1%)evr}~c!yhGO*({MO5JJ9k5$#c z;sVF-sv1$gs%k{}ud0E~dqRG3y|;aSQNE#k>3LBet7_VnC)H1`k0{@A{V?hS`u!r) z@7OPJYt(>WGWnMAQ#93l@81yj4=bP6PXt-V3j@{;Q4vt|MT(3O8*(uo|_Ptk3h?tDlfG7Z)*Ic|s{TpC@rP|=* zmphI4ob{XG`)=@$z17e6ecSjyxc$FA|G?%SiT;Q3`oEHQCV8G4Kjly1d1X9_{=2#F z-@dtNb7nmpS;L<46MwJ&&-BmR{|BxA)%|~N{6XgbLH~p1e<=B5lBD#RAmFDy1^Rh! z|If}}d2=%um7O@f$sm?kN<<#|Kk|T4Jd*;KMo=7C{pJiGNF*(6Ot-Kfy8d(D zqXGXP`u{-s|KNOgq5k)HH&QsyWb7KXzf6#DrT+pP-Oc`a`+v4S5B&ek!0JCJzjHn} z{)hFqAo~B^ji0K$qB<))u8haG^#7p$ft&yD>i8eU|10xf;nThGk^BEZum52bvpg=j zh=CmGe$IWcx{aN`q2!N2OVLCAK3Lj*x#0mqO5R;p6BYl7oSZn zYjaUr=|4llbED*41VrJ{sdy0m=hy!O-T%jo6!*KP4~CDYar;x1{)_BYcqlvs1UlLN z$@(AY`9CGk0yjf0{zLJnd-JEg{~y@-e0bO90_V>jw>xIh zR^NVkcP$*}%Fa{P{*u_Xugv`^O;_^4knr4e@_ekqTj4Dr(8=;<`k=MC?MdT&VT@en zA>4ViN*)DnsQLR&mPaLTO5Ownl)MRWDE$!OPK&R>6 z`)K%G>xs~u+4s#@u%P7O2giu7ylM(wrhk~xgiKbG1vm#(nDftce%!2YP8jR^ktd&V z_rt9@43jW#U%2xp-0R=VJ#N+)yX)BcaYAc_dv{s$eM-K(2z0T2nJ(=vxjeCieSb?k zg=bdb@qDL zoa=a&+4I6_WV3EFqwo4D(3(Wc>E%+ooL{Ep{Bn6RZI#RaMywx_X(@j%iI&Uvl`fYr zx2Knn_gkfO%?DjBrOWk|-`_63^t_B;g_JJWr^3KXwpX*~iRZf&P6PQ;=esfUC*u`t zTGxN>{QECY>F4i#=lQ#7>sxEEN2F$r1Cn9dYKB03ZdXhxPi1bM5`H?0mU7{1E z=i9wsN|(z|jF!rm=yvs&>nG=z>nGFF^X=*@r{{|GOO(nRnJ1>pbfT1=XqWO!<+Z~@ zu8%~^cvj=fP0YT^@=NreKi`$;KYU;HJLOA$UeQ$3I>%qI#OUYm3jP0;_>;OGl%Lao z#h=dQPw3-&p&G+KhJrMn)%Bk{-&NQDAb#I5^zmcJd2S^9I=lX)|A+7Ivh#QK{{IT! zzft<%wfyRAdFXigSE2u$d=*Z+vVYm}_bYw~2z1bXSY8MJEdS5Uepj|`a388}X8ygF z49=tT0k+={r&=bYS#CT^-x;B&rzn4p0YY!Qe>=#JP?vwRM;->zRwku@^MBds|1Em@ zDi=%Nb}pg0)tLXssI=l1l#oW#L%qG%di{npo@#>g{Te7gz!1cxxs31M!1=rm>(b>G znvNpKZa`x{V8YJIl=}Y++%ojB+b7N-Ks?dBJeFt7(|S zY|zM@1z9K^?s$ZI{mJ>;N!)&4oqxYD_}6!fv-lC`4EDWGY(bWC^lxd3e_jNxvHrcI z@|@P_uEQ6aZl>}u_@hnZ>){AjO3VF6zfWr)I{;Z|dPm=<@-yT-H-5@r&&kf>{@ncV z2{dWD?ams`zKid}DB{7ayc)HBOJVU7|8SRQOUsG5_e?C>N8ym$^B3?J{>1GU*RJ0b zug-U7XoX$;pceI{I-i?kpDgd)jn<;Z{Zi>OClKAdKj?1q-`VYreard4t#AYrm9RLs zGrs->_g+eO_WM=&3~A4e(r*zEg-1Z~Fn!NC_a=V6h3r+)tn3|d{*pE#*POwAQ1~+_ z^c#hT!h=U3%;h0=%tvtkY6&}k)pBfcO8ur3HGk&iaeOa*eY!toxhay+!CQ}l`OUtj z$O8I$gwZ^01TvP(PJ9LR;o`*`z9y4xM!d94>-o9(anJKc{I%u$8dpxMvHljn-FbK$ zZejjm%I8r2wWBDK{eV%V)zs=>^X1wljQgd>G5Z|RLyV8_ zC~b+sBl&o9Xjm?K;sUq6iqOa0d_6`}Yi-FE0`OLorW=NAW^ zXf1hDZvSaR|4i58)Ee&l^hqgL*bhNyem?}zBPVg?C4XPkR{*YAvoB}(0&Q{SwlKP* z?NRxeVz zJsm#*CKtK>F5BH&+4f0E3q`SKi!-x+@neT5?W;VM&XDrl_`qM`rSK9E=wf+^Iy-Kr z5Z?*kcNl^0Sk3C##r0GA!Z_i%QTz}AQFsIt5ADpwr`k?5xoM$4M)otdAFA)YQ9P7A zVn}#yl>Ui;ggG9m6F+KlbKiSjw0`6G`Ymd`kuf>U`K#;~D{sH-6Wh417xnR8x<8tGBlsaAEgYG4zTP4~d(Y=b8z9gT6_Z=u1>3KUs z1?O=~9lrYWao^nJT#qko(3_=~5dpzJaMALBUjd~bdgKBro|TUiR`@fz^r+CZl>3;-*jUJlM z+=ht?2n@ zLOC7?;;WYTS<0Ueap&J{`GMg<5^Xtv-WxK`^cJ=QmM# zJaP6y3-2FVKHr#mEzj>=(*4T?EMR(kBk1e%?yEkp&ioSOcg{Xe@iRRI^fT@#O5;cf z{)Z4?MknaO|3ev_inKIzV;ZHyO@0DhUlQNl-&xH3CrsdSI^rlkkzeMxch#0&HGcwK zziX|$o(1FPH=LWt@Xp!-+TXe-mExT`yV8B&*{k4Lj{e`H0N6g(zt25`PuJm=GWxt5?Q!t_wRQ=D z|G`Aibk+Y;B)os6`7+o0;`!r!uY<#()%nl{XcAuj>R;B9?sa~9Ga9v=*U!u^tE&!j z`soYLgs&&gFXr;ceo^My#?ii>54Qfpdc~O`5mTA`=<6wWXdlua`VD}}2XTL-FMNpp z!};UKX#M(Zu5{bD`OE4x&Q%tU9`v|#RRTxr?VHNnI}~+*v~Lxg-}LqV?v~!&^uMe5 z`{pK?{J&Vj`~lB-sfN4;ntn(h-BssMeew*fCvy7*3ld*{%sAgq8?-Tn_g8|A*MPy} zg#BF^!(lOpv#%LrkdU6U#ahg#L;D<4xcx1ur_0Xaqa|x-`^|?prX0*UT}SCyYiQX& zfAKEV$G0`?fRIPmkoHw&(DuIkn%-WvUXHUOCZ|OVOrz=kzF$4hko4RH*k9`?zUD{% zr-;{&jy`{_<%j**j@UiM_|W|MVz;Yoc`f5w7xT*(-nxHdf050P06hQ(u;sM=7?}}r zU1a0e3_CbS$;SG1#&F^+8FX|OZppD3=Q;a&e`lwErQ5GwY==E*@9_<^b$a~IKR-ta zx%3xLyiX=2kvIOwPJi&GOYuPM;(zj_{LDVe@kFFPeEbj41L6AxMfCa3#z&RUkoMg8 zsjqMzy+hmM7(h$4G;K~fQ0sP4x~uWl<$uo#CXYQ%@2<@$JH4IOuU~EAh;X*=lc$L5 z>9YR@G(t^AJmU4I!G7TkcHo8{?<2?S)EM?nPv_!$U_ZZL|GqU|h|BLu=gRXl{->+u zNxh$Hj_2>d)#7>QrhnkJsMf7r<_{$HA^y2>-c8TTN2=S}USR7>2`3k4hO@r=D}Qjl z@SLt}Kde`Y@jtyg7XRaK`_=QJ{stP4goX>p;CwB%-_3#S{|x4Sw}g*iai04=p6Tlx z_uj-u)&6_Rc0c{SK+B6<-W$^V%cNI`JrCdW*W~v3qGNum_g}LpyR;~MzKNUfq$%FN zA;wRPvK?rt5q}VUW@}1)5Z52){B_*?riYC0uMH@!b{`Dk?_)3UjMsNCu7(&teaUM_ z)BAY7ci5k{x7R39zkl%hN7eX}5#RsB+MKo=GUV`HF#noq@G4RSqa}KhL`&(J zQhDv(FXxXD%gdC~GXL;i z-;a%WHncRGVnhDo>ov{A{V+PqnaRr!(DA%{kaS+22rZ?z%P*BD=NIIgl*h{_p(k%0t=2me%7UDA_qNY3$~TlRJuk{*RZY9{r25JA5#?L1A4YvZ zzh7kf9s31tjT-PvCf_oCil&(e*!w;}0dT z;U%x#jbAZKptEq!xQTHo!1iQG74-k`kCxvR`p>_=Pcj&vAo~B^O`cSHsib@V23Vg0 zjW3Kx9Z7o}tkS0gJU>tTe?IYVsL?W zGpnVa@~P`T=YJFZKNv*+yZ!v1>i-#U$&H`r~D~AuZ$eC2+c!6D&a8(cYuHnM;_vnUnf`hE|Dg51y8q9OKgj$)=zq}s4<&z0l9WCZ1pL&e zKtJ#8|JnH~Z*GFlpZmU}zwi6D{vXaC37Y=F`G=0UQKd`>Bj13@hs3sB?1vEJhrf8M z=NV@`H;TU^AQB$!^&gZ!(EWe=@qf_ze;i}E0Yz}<$04L0Me6)RCKQr9DEq;X=@#}w z*MIJNG~oY3{~t*IADr(l)c+puMhfSdj9sJlmkAQC^k0CZyV*Z)|Iha4f&ZTwSp5g( zch2X=|FHfRME}3L@l&-|RA+_9mGStN{vY%|aP$9N9si^Fe`WqFe7ZM2a{nLb^*@Ya zmd7O*F_0tO&$$m)x3Tj#l>9MhJU7Z87XeXtbSfTR{paTY1H1kQ``dC+lobxq^IX06 z;fG9jV6%V5S{Q7^O`~R4c;(pik!SL}kZhxxMf04Zk4~2(- zKquQjS^on)|EJ_x;AY6he<=QRZ~nCR{{uV!ujH$H%a`JRX!Bp!|4v;0SNsoc{ww}; zZ~n;sf1tf3Vzan7!e--~joBxVG-HSg%;QZO+ zcE>E*>f0~xu7%@V*?G#^UlQB)mAOBq=}JBr5}un*o{v>{E4&2+I$7RKAGB7tJ!zaT zjFHPcggcK`$)msxHGkj9@~GrZ$(w+Hk~aYkr5_?33J-;cfPk_W0vt*|L^u>43J(DR yWiJFclzxbCC_EG%0s_ij2yiI<5aCdGC_DrNl)Vt(=%{|sjbj*_*(Ne_|NjGj6A-Wf literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd new file mode 100644 index 0000000000000000000000000000000000000000..f09ce09056a1ad1c33b170ad794d31ea0ed4cb92 GIT binary patch literal 328360 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 literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd new file mode 100644 index 0000000000000000000000000000000000000000..a9c297aedb6d161e41ce14c7394b4a269d5864da GIT binary patch literal 328360 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

I&<@%yv*XL{g8@7sH;kJEk{?)b1rQ#^<+ z84p5Z`h9=;hWa}_qTfeoSk+Zy^}lx1Zw!3oj~$7a{@OYnmFF3`zR&f1BQM`4?_a<5 z64lot<6Am@uceg5_#^vG3_p$Cr7Vh>@i%U&_Cq7g=>LlezhnQ&@rC}k+=nQ% z|B0Kr{7=pPzu54n(_eax&!PBX#14`d?>P5e za`o2*doKOg=>|UHkqoeE5s$Jt+JgHh@q+Du%9_82qEl;*;aPL>F48)1p0g+Gt<1({ua# zcKY34Fm@6@@jaD?AMOiN{hyr4=@8A|&`-=`BaL)FJ8-m` z-(QSG&hdDYr)0dzPv>`E+lXHui5#H!E#>WIXJ@@l@iB~eY7yM$4KMsWE8~sT=UcqL zUXlKl0uQ}F&zUDo^Q>>{p7zPJ)jc&IWhzK zfQ-+VUpzRmpPuOYZ2E`Xqr}i2>Yv*WpgkJ&ON6YX_C?xusK}3@EJ`VOk{v(d3-um@ z3yUHDEx`MO*@uqL;NK_B`1ccS?*;o_F-CvdXDgHnH z2){M{{RL~kv41VPe#B#3jz97jCVg0AJG$!eC*+}2_;-n_Vfv+9%&k%4<(ES?>e`Wi8F-`DOf1`V) zKlZNCw_d_Js|tM7zlaAT<-rl}6v3a%-e7;earCe5K|T{{U)wdh_$whxfAjfoTpIIl zHhbiG>VLcZP8r(8pU3*YH;}RaLHsIx|5JkaRrc|CzG+Q;Xa(~BG+;l69bJL7 zA4q$W&FCq4<$>AB*^*d<*N5JznG#q<>(vm&c=lyV79q zb#lKa@M0>-(1)o1Ph$QM&j~-RzZ(14Zl9atbn2Nx;tLdHf4GjgHi2Jm`-9{^)iR#G zs>`R}znbgky=6KbBK@^DaDR|D($I&u!G}%KdOS)l{=EDVwtL~0-m*3Hg7N-_&+D%X zx;JpIsXvPRoO*pX!9arg@F%{{mnM0$-v1KwPp#8T;h!$; z56BOIcf@{a($-&`=TciJzfnv@eft8}_15?vAj(pYkrIcgEv~6Mo=*X0>k? zAC~kz_`iRyPmc#T)MW05Ck
yzcYKLpI_$ne3=;}u&uKU&-Ay#J>Gq~x^oL*N(w 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 O>-Qx7R{MkX-~T@;E0YTV literal 0 HcmV?d00001 diff --git a/gamefiles/models/x360btns.txd b/gamefiles/models/x360btns.txd index 27837c2fd71f7f86ab653b5b42358598b3285178..8d8460af656449496660ff297adc49354da1675b 100644 GIT binary patch delta 3663 zcmdUyU2NM_6vyvL*3{Gb;V~5=7CJ{tD;FN`VzhKg&9xIZg(jY} zy-+Jwe02Z!`1pMMEMH7lUrbjsPa}kU8X#SFlYp-`;nTQo#QzQW93b=ou+zuALU5>lBpi*ai-pt_x+xu2kn2Wcfi!27-@78OSBOAX-Ba{3z2{2OkIfl zGG$wF=Gr4VV$Ob@QEk_y5-1v~PtUDU9KP~>DhE{T~vp1~B&ee{c*+6o_gS(V^E7!(A{Z68l?SzXr? zk^9ekY-Uns2yl?XFQw?hu1YiYnRG-8R+Ip|Bh$6!xxP*e+;6rGKj}5Yk9zEC{97d@ zo5y0uMVNnr#J8A{`=If=Ef{?0VcJiO*VnuC8zGlr8>JTX?2<&?n{P84cDA9(Dle-( zbLF`j@yDXw$F~P(FroA9ZtG!|LFQO*a*ffV+_-2L8MlT)c zI4Fz-{E5APTp-$p@o-JnR_!hd?wk{*DABUF|DeTkIAqH{J4bUvT?hAL2h!d@FSIRA z(_F)Bu{nMC1{n3L-Wf)xY?ffM)<7p9aq2VO`3u zBzF821G~;nzHBD=shSNMKf`Z~1_{;JR6$7|0$YSD%rO}8l;?N*DLZ~=Rx0Fo6h_y< zfK@TSr?@Q^zl}+Zp9qSlfu`R+MxmB_lWX1tA)bIz_>MxGJlX^8&Hu%RuO!3ASAZw- z1Q!JPrnx%|?PYnQWWr!eawQpiR3c|9BRI~LL0uh7k`SNxyA;IlPH$fW zai4m0UrC5hEk6;&m0J_=4Z%Dn!R1?<;PDYIPgOw)hJT(i8LoWc0b7VG%p_c|*_fdx nr~mhTaTx63&7?5A9elAJj~L%2%5oYgvd&GqjZwgd@xAyD@5V1z delta 3913 zcmds4Ur1A76u)OSoiyzlSW>wr&6tIhb_)xmv4?VdX^EG@rpz`iNlccKOs5hfhWHR$ z`t=YbfhkH*IlUkVN)$eb7_sn4deetuOZp?Gt?#?r+%$K+!yeL)d%54?{JwL~Ip6O) z=ia{Aq`uiCW*#$eqUi@rB3nsXjVfW?eS#P!^5YV|)_~K=QNrR?S!5P$kPk}XBw#0<| z6;PnI`zY#s3M5CgWxkPt{{D!p)@tzJZDF)p3wT7dWxjzCjGm+wZX?VTkQcIS=jkv-?7rb4QpF>3f3c=5S|)h51idVS z34XOSJ3=tKPluTqSS8%wa*p1J8R$}Faqr8a7s4l%>_8)-4w=*vLb!qxGnx2pQQO-K z4}f7irP&b|u}f=QUN7SsaMf6XPUgZ9^x-D-Z1=vS7c$J!zU>ZvjKhBFN#k zbu3ZfgmIpx%`)jd4m4j9#dUU^F1JiY$J?PosTf-u9p|)wOVEF&15`;tCdBwGnGa_- zs#eAP(3lB>#cajQR`UJ?ra+c}4%w=@e%I#nW1Am0agkU!-=$#sFb From d6068c421d436c05a8aa562bb46b3242e5d0a78a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 09:08:02 +0200 Subject: [PATCH 057/113] Add undef --- src/core/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/config.h b/src/core/config.h index 84e8e603..152ba336 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -479,6 +479,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #undef RADIO_OFF_TEXT #undef MAP_ENHANCEMENTS +#undef GAMEPAD_MENU #undef MUCH_SHORTER_OUTRO_SCREEN #undef CUSTOM_FRONTEND_OPTIONS From 5f3e68ec45cd7cd30e94719a9ff9625bb7545e5a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 09:16:04 +0200 Subject: [PATCH 058/113] Save vibration setting --- src/core/re3.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 3388b56a..779a7d13 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -409,6 +409,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); @@ -501,6 +502,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); From ca85e44c9e6aa0a21a637179b3cea6be66e08edb Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 12:21:21 +0200 Subject: [PATCH 059/113] Fix repeating pickup sound on revenue pickup --- src/control/Pickups.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 67e658c6..7bc88321 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; } From 3c7a7bc8a7ca5a9bfff709fc53d3036597cc2248 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 10 Feb 2021 13:29:02 +0200 Subject: [PATCH 060/113] Fixes --- src/core/Frontend.cpp | 13 +++++-------- src/core/Frontend.h | 4 ++-- src/core/MenuScreens.cpp | 7 ------- src/core/MenuScreensCustom.cpp | 9 +-------- 4 files changed, 8 insertions(+), 25 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 141f46f8..31580e0e 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -125,7 +125,7 @@ bool CMenuManager::m_PrefsMarketing = false; bool CMenuManager::m_PrefsDisableTutorials = false; #endif // !MASTER -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU uint32 TimeToStopPadShaking; #endif @@ -1089,7 +1089,7 @@ CMenuManager::DrawStandardMenus(bool activeScreen) } switch (aScreens[m_nCurrScreen].m_aEntries[i].m_Action) { -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU case MENUACTION_CTRLVIBRATION: if (m_PrefsUseVibration) rightText = TheText.Get("FEM_ON"); @@ -2300,9 +2300,6 @@ CMenuManager::DrawBackground(bool transitionCall) break; case MENUPAGE_SKIN_SELECT: case MENUPAGE_KEYBOARD_CONTROLS: -#ifdef GAMEPAD_MENU - case MENUPAGE_CONTROLLER_SETTINGS: -#endif menuBg.topLeft_x = 14.0f; menuBg.topLeft_y = 39.0f; menuBg.topRight_x = 636.0f; @@ -4926,7 +4923,7 @@ CMenuManager::ProcessUserInput(uint8 goDown, uint8 goUp, uint8 optionSelected, u if (changeAmount != 0) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU case MENUACTION_CTRLCONFIG: CPad::GetPad(0)->Mode += changeAmount; if (CPad::GetPad(0)->Mode > 3) @@ -5077,7 +5074,7 @@ void CMenuManager::ProcessOnOffMenuOptions() { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU case MENUACTION_CTRLVIBRATION: m_PrefsUseVibration = !m_PrefsUseVibration; if (m_PrefsUseVibration) { @@ -5551,7 +5548,7 @@ CMenuManager::SwitchMenuOnAndOff() m_bStartUpFrontEndRequested = false; m_bShutDownFrontEndRequested = false; -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU // Reset pad shaking. if (TimeToStopPadShaking && TimeToStopPadShaking < CTimer::GetTimeInMillisecondsPauseMode()) { CPad::StopPadsShaking(); diff --git a/src/core/Frontend.h b/src/core/Frontend.h index fc09f2dc..112ea7ad 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -199,7 +199,7 @@ enum eMenuScreen MENUPAGE_MOUSE_CONTROLS = 31, MENUPAGE_PAUSE_MENU = 32, MENUPAGE_NONE = 33, // Then chooses main menu or pause menu -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU MENUPAGE_CONTROLLER_SETTINGS, #endif #ifdef LEGACY_MENU_OPTIONS @@ -284,7 +284,7 @@ enum eMenuAction MENUACTION_DRAWDIST, MENUACTION_MOUSESENS, MENUACTION_MP3VOLUMEBOOST, -#if defined(LEGACY_MENU_OPTIONS) || defined(GAMEPAD_MENU) +#ifdef GAMEPAD_MENU MENUACTION_CTRLVIBRATION, MENUACTION_CTRLCONFIG, #endif 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 69af9acf..c4a415c2 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -629,7 +629,7 @@ CMenuScreenCustom aScreens[] = { #ifdef GAMEPAD_MENU MENUACTION_CHANGEMENU, "FET_AGS", {nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS}, 0, 0, MENUALIGN_CENTER, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#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, @@ -703,13 +703,6 @@ CMenuScreenCustom aScreens[] = { SELECT_CONTROLLER_TYPE MENUACTION_GOBACK, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, 0, 0, MENUALIGN_LEFT, }, -#elif defined(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, - }, #endif #ifdef LEGACY_MENU_OPTIONS // MENUPAGE_DEBUG_MENU = 18 From 775db94a965ecf11c0f12b79d74b57dbe7f60c04 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 10 Feb 2021 15:26:42 +0300 Subject: [PATCH 061/113] Ped jump teleport/kill fix --- src/peds/Ped.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 12437dcd..ba09e8a4 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -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); From 84ede57205119f6e3ebeef55dd1ebd62933887fe Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 10 Feb 2021 18:48:43 +0100 Subject: [PATCH 062/113] startproject now depends on librw --- premake5.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/premake5.lua b/premake5.lua index f49e024c..b0a432bb 100644 --- a/premake5.lua +++ b/premake5.lua @@ -236,6 +236,10 @@ project "reVC" targetname "reVC" 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") } From 7c485560c555723aac12027723ae046b4da44561 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 04:28:21 +0200 Subject: [PATCH 063/113] Translated string fix --- gamefiles/TEXT/spanish.gxt | Bin 454854 -> 454838 bytes utils/gxt/spanish.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 7ef6c0124b2336ea63b96e7ca56699b1aca1b780..454e773465ffa298b8f261a0260ae3486341ab49 100644 GIT binary patch delta 159 zcmX^1P Date: Thu, 11 Feb 2021 04:36:00 +0200 Subject: [PATCH 064/113] Fix borders --- src/core/MenuScreensCustom.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index c4a415c2..7d6f5d13 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -695,7 +695,7 @@ CMenuScreenCustom aScreens[] = { { "", 0, nil, nil, }, #ifdef GAMEPAD_MENU - { "FET_AGS", MENUPAGE_CONTROLLER_PC, new CCustomScreenLayout({40, 78, 25, true}), nil, + { "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 From 4f27a28762d3700946c064a315cd9ed0f104f321 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 05:03:41 +0200 Subject: [PATCH 065/113] More fixes --- gamefiles/TEXT/american.gxt | Bin 423838 -> 423830 bytes gamefiles/TEXT/french.gxt | Bin 468076 -> 468068 bytes gamefiles/TEXT/german.gxt | Bin 459742 -> 459734 bytes gamefiles/TEXT/italian.gxt | Bin 457046 -> 457038 bytes gamefiles/TEXT/spanish.gxt | Bin 454838 -> 454830 bytes src/core/ControllerConfig.cpp | 4 ++-- src/core/Frontend.cpp | 8 ++++---- utils/gxt/american.txt | 8 ++++---- utils/gxt/french.txt | 8 ++++---- utils/gxt/german.txt | 8 ++++---- utils/gxt/italian.txt | 8 ++++---- utils/gxt/spanish.txt | 8 ++++---- 12 files changed, 26 insertions(+), 26 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index f4afab9eb0f61be5dc3a9315887d4bc531836844..1039deb887ddb84d2070b215cee239b9d7f859c5 100644 GIT binary patch delta 12714 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 XzdEJSUj_a3p})$PzdF@-&9eUkMFL=K delta 12719 zcmZA8dz2LQl?U)|4Fe*fS=5nX2qH4fEGRHtkA49|rmG**J<~6{dmc=XMl#_jj!4wt zEQ_?FAxexviXcH`k@Z1XLI^`pSwu7}3y3Z;gdjmfP+4LKB2f-e)V)>p``tg5bLN~+ z-TJ-iS5>#FtBO@0*R1=vX8Fi+@Q)P;7YfOY3QYZzum<#;64rs+&IlX8q4UB%py`VW znBh!o3)SuXTA1oq4(jK|sqTr9!c^B7XFH#@``Q|HT+U{w!mgB9K@}>$Eld?A%oe83 z_TNQLw#KL~aGz_ciriw?R26FldDv<~$ z?Xh8f*|j|r$A0A6o{8-%$=PBoMXp*~iDV=e$T*Ri@z+JIN@k90DePSRv|hRJDa zoc_HO>5puCIF(N}NoBWLH<1TzM-wo402g$L@4(m)Tx+ zZExk?M_toQqx0X$`K&W5sb9Kw%I|XR93Q{wk9;^1D^U5wQF5f5h^3M$awqJCTq;9T zbml$Vb}<#J|4hzCTJ1r2KX7d~y67|4cB4IC_eUX?Z??;40DK zh3gU>f?Gb9E}(a%Fts|>5~fzSSg#GL_8gJ5a=>xx!$GymGV983)Yd$*o=WDErhTqn z3{YOkC!?iE3Jd#U-?&0ij#%lz)isYis@UgY$v#4RuW(Ic#H7Ca2mia`nM9+DBx3pe z^c?jzaY(Hav~C{qkg})m_e1_z(P$2=pc6FZE2#l2V+XN=9l`}^&5LPQit?I@CDz}r zdcVBj8R{S(^?KDXREv|z!E2r5eDt;;B5nRoVqMjYYCUV){_dy!<)UBcd z?Y|=1#2j`6i`Y@DV#lzP9mgSdGdh3ewi(jGn8!9@Y!mTdxQto6V4{~Dfw|o&q^dM4 z8>MOMNA7gvI&E=+ZDIjCf_>~LF0x}7^PjSA9C^p(sHz*y=;aj&>}Mx2X_u%#GxV4= z?Xu(2!7v8CBFY3!JTGj}p!cv%oM1=rIXjAB<=t*&!yALaj-!R$jN8}=EM+ILiQR&O z>{gs+r*Pw|qJ5gV-E0%NJ#M^g(7vhogR`Kiv^B%oCXOF-<64Nyyd!Pm^dDXOsL@N( z)XuI8PFy!=*DU+HurG|IU)qj^?Q3AClUHJP!ojv@l(M~o7BrmW6*>lQa4JyTKt0=s zCbl29u>)Ab4&v?_N^wq`A*_*c)r%c$6>qc4)G;sU=yb9e4M;UGkL|-Uwja;41K7n5 z;%X;}*>yvhAx$~AmrXZUYz?2@qsa30^SJ!}j4}wjXQR0StAro?SVJAUlM-wBf~Ewu%*OnrXI< zp+9$aaXIQW3`}qr$Uel`w2#>V^s<9k!46@gw9ktzY!wID8a`m_xXd;%Y?G7!X={8w zOmcFvZ9lfN131MFVziTz?J^;(lJ7mJWCkbgl)|Xh205Tf+jjj#X>}+t@xFCR6^mEBkSlR|GJ~xscfLAjYvn zXps(j(aokCVz!3I**Z3}4Vcb_huRGKu$b*H<2Ww_Q14tk>_S0�~+@#e?D@FUGJ{ zOl50$jIHB&wt+otA5OFVsC2G1WxLS;MmP($gLsS`!t=ta*Nbgz6>qWW;9}Fk#WqmY z=O!`L>w}l=M}{3hcbON0*v_W&*tz1xqICJgI<|@2dEjmzjWY`8CVf(O$?MKB9 zSw4WEa9LG@cz{=guveNg*H>&6+KZyHrlFgyV*}g3VYUwgUy|khNU#HVfK7L)FNyrG zY9Umv)fC;F5F6rrFYc80K7>ZToRAJAl{OLDV~!V7p8?goSc} zGFOFjiKG>VipkC;(zb?WY#qa269c8hm0|lZhwaCZ*JYUicCdq(@f#Tr;d9$|{#Pk; zt=TJ9_*9txC9UBoo30W2WZb}r|CaV)3)_$4ei;wob2c5+2V^{iQ3r)7ag}%Sf{NlB za)pNTY#omul5qo*-jt>U!uF&4Eg27>@_(d*Sj!F}cv!?Kah-Ba_g|E`mj70+&@k+6 zX&*GUA31ga^Vqay><~6dQ-a#hR`C&AL*?&8`#~Kee<$+48Z=<=3LjEzKYG}7^s<9k z#SUSsG$p8mY!zqO8U`H^9fx#`l`e-2MCC%rhuLgDmaqeOmL0?{b_hp=HA+w)u~iKI zz1x{acUJXm9VXkrEV7gTHOf$nc!eM9*mU%=gE+_z;fypTsIS;6MjjO%s~V=Ubwtzs2h!%nu2V{CdZb6nQ-VHDesmNG8{Fo#V?H9Lgu(v+Zf zvsD~pYq-SLQRUo{(}q!kn#A@Y%JyTHa9K0xsOA-PRI@|aB25WuH=Ays*%~TNh%NK! zn7}rWV*79#+mEH}0M?xl`Cs$V#ei3Ya9)}+)bMvj2Yz}!#io?Z*0Gyy;0W7?vur;G zy(ilVz+{($=;Z~vnUtmsb(pQ<5?jOQKZ%9{I#O%{oou>$X4AbSJAg~lkLOfZ0eXzQ_T)y_-R=;1Vh?RT>o1ZD^wLL&q!++@fT_8m~Ehm?ZXnb9~;?p z*<}aO^pR{QgvHX7xL%Sj(}TDRa)EBG#{E@Ppx=bE*#_3IeR!MgN7Y$bK7g6*Al9%$ z*ey+o3x5;kbrtnwC;#iZhQ+)>$Fpoondf8$A9l0-h<+^N0UTrp(S2UVL%1kSiEG&> zB2IT!BQ8j5WeoniT%aEbY#+|B{W$%pEEB+Gb`V29lkpJ7N>j3$%%+^d)-aE)W2s}x z|GLk>I$q(!F18;h*tB2SK`a*!8Fcy`xKWyt)jl@;1 zo$bd0b^y!SbnTxa8w%l=G$pG~*>vrnD#`>jjA82tvMD_ahxLFD-Mqq&MeG1pvV+*l z4&g0nN>&%F568VxGpLcer1wPhG6{2LklTwTdT5PB)`9V_Dpl5_H-22RJ6nNxEL_r~ z3EWttI5rA7#H}Z8s`VW0=dO(uqu6Y{cGFK9m)z<`;^_>wb-GUH=<-JG+wG)tCj8QE z1kjFfcRSM`_dF+@sXGmqR_xQ;|HB4M{r zae7og&$@16gQrPEOnPPYl{I~0gW|Owomi-8in%2t^j@nfFWrh|)@KuI>&&ExqzhO) z-t8-r*Re#jMo(VRZ8c7s(zZ#IjGE0joN{YLQ*n&DSvrLs(%B+biLHnh=rsjf$3C`! z8P=PVsy&lMtyspM)lVq$K$qKQET6>N*0l|_$}lU`P+NCVj4GbXqCM)CiRbdDC<*5y zSYbWbQ0=+c>_!qaZ(i%UhK8E6GLp|=)kt?slV%b7tiLr>-#J>0A(<~?c#B&%*`7d3 zj5gVx!|9xix8r#+11)A2m9yM=Rp^ZEeLzqJ=CSu>)pXr?fGiUNNj(IEs&~tMuyfU~zEdVo{6}CqOQq zM@n>-YmUNXw_$@U(~`pwY1$j>WSLX}7o-a&4$3mLdE41J>~jY_pp+}7FwFXeUfXy` z4y7ZGP3#nQvhz62E@F<@zMI=(_|)7 zM;uLg+Di|}IPID9ZSIT~;zb-68&jZJ-zCobLYjVTT5lTFHETt!LN0=B;)pKfGDuio z8r8{jVs8}M+b~xgHHEGuR+IHwT&~r?T)G# zZ^ItBmUhp3Vp@xoV+M$pi*%gM5ILY&NaGRf6<>97o|v&>M;4Q2i`M8>6VGpp)-2DeGWxS2|9;9aI!_Tlr~eScd`qa za{q2oH=WEuvl;`njSED{Ts{p=w2+UQ*z%RzT0WY_AdctJ@Va5*Q$yq1XJwM%lFzr9yKU zP1Y;HYUQ%^`(SO&pntXF$&y*j!-z{4G0VCtR9$y*p&LnL>5LF1?bZg1l9_Njf>t_I zt@K#m4K;Wm%5-J3IBGo;no^$c%uK4(63$_XaE@AAE}W<9YWvgnF_tP7Xg_}7Y<0S% z(UqZFI6^1wRA+wDr8v#!aS>0@Ck`8gla!wZi83k5*?Zl%SxRL)a7YwNQ%30&h3xMo zhC913T}o$7%ybU)bjf}--YepnYzBj@rzbbmO%{+7ownbD^t58~?cVgGPGuKiw{0C`HmqX{#`dO(b~1vwasrNM-HXB zsazpLk%Md#ORkdf2qs@G9YxPI(lHFIl8)n9YkcAk<-GONL~YHf2dJ0nk*xgzko|Vg zF@0PUw|<*w@Em$vvA+ScSE9%AB&(H?R$cN7Wu|pQ%R_bBC^@9U8CtL6Q?`Z){bgLI zJN5%DB{~krx4ux0u2GO`F402^`esYm{^V(?Fik%;2-Eaqk1$O?jtkTDO-80VTES^!P1>D>)2WW)-)<2k~1$BTvSj+YDD9d8k~JKig7cYI9P?)ZYR z-SL36&LHTa1u#n3?$^7PW|y{}9$Ek?vBK_nj{bji1PIGCB>%qTGI5OWG7q4QMQ561D(28M@saPe3KjmZQrQAy6o?+P^R_$ zqx~ACJpZ4mSk^45{xEj1O-vdm=-8BDC2Q#V>hGXCJ_&Wae-}O!~_|q zkBlZdF4LE2Q5Ks-wQ?bfu2ItTg%UfCuD*%Wuc<7L6-E7e7(HwgOW6^4$GT1U^(dyYV_40OV*|Sx zo9krx1V+|NCs8GKgkNvL26~!9J7`qNPkZQ+yFfNE_nV>u&GIqp-CGLf-PgO3fELEx zqoqwuxIsFCU2OWeYmAJ?u$~>qV6jO7tr?falm=+C$7rIwZelV!f+4ySH%kH9?t|_E zIfk#;ahx<{%>4c>VeWV4!VV-ucfT;tdg?ddS=#?n$t@ZWa(>2yPd@k3R63p_1UZ`L(WaEK(?(I zFH%~pm|{)4b(`9?T0t({9J5pO2DXMXYOTb_-jW>=^SzP8sFGtKn&Wd+;77B)T4WczW*y6*O;=<4)qS$s9D{w z!ujM^Ed_A;JJebvua;;q3$0t{-sicR9xLW!sVx2a$E>~&=iZ|z7p>_%_bHpL-}X$Q zA1R(Y@2FdNNkO5tEp2~Ge(@i!?OE6%;`X<#?bg$Geo;3Q6)4aiD$y4UJJ|H8gd*cU z%(q^d*H9Ovn;@qoU3U)4we+kU9M|a3xazJ3&neoxLNO63(R%^EmArf@lA7#rc-n?s<`Q`@OZEF)~8^+}roF zd%vwH>#fhe-=N+|7qRw8CQUyFv3REKob&$yE-iI!H?j2x!Zi4z)wbYOI!dm+ueRo^ zhZS^$3kkc-numm`OsenZ`>t2&57EPjj%21pudY#Fa2@TW9||H~q~9-Y79{%CQ(+d4n&|g3Lt9Hh1N F{~w=rUS9wJ diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 79e594ecea315973963ef93d6ec0f04d30f30e70..4dbb44f4ebe9b8ab5f99f2f264aaf0df6a6bce3a 100644 GIT binary patch delta 5902 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 delta 5912 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 diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index c51d56e20ff7ee1df5f52c5089b391aaa6225fea..27ee143cf4016a10398b752d6d29de7ab4155aed 100644 GIT binary patch delta 5770 zcmX|_4U`nsmB;_p%#22991znqfkbGAzz8$l(>*;s3lP&IX*eE)4?b}-AaNI{)02k_Tu0gC?(370+TF<4b?Kbv2}F~GHO9J%5nr(Ht-9XJUt;eiZAyHj-mg!;8uKgrUqF# z=fs8!7hEPw)LeGiS&9DtCN5g4Mm*wr4RVUA7_@f7>uRf9vVcp&YEjM=ETc$D+NfG| ztJQ>oHsYMpZCVzV%&3JX_s&vjh32S&TM%0+IEwnm1jn#xPc8B}IiI7&zOPtNIY z<1cDa?2$Dim%-YDwa~LUjS?th!x8tw$v_(*&dr`J6VEtJTr`}O#>zjt?C6ZT?6Q;P z+h4lu)Yhe&>Yy9N>Z(lrp39E@h(?zk{Z)}V7_y?8#OG4PN;#`)xd>kCb}n?SKuff> z;IN|>!HJo~MWx#b;)><6<8;E0U3Q$t?yrNX8W~4t#=p4i=p+ui?C2akRtHP&qnRkl z4_#Jh52lX$+`Z_fI=FOAa0{+n7aYZIc5F~aI?JS*kTky1P_x44AGgZq+_kD@E3nwl z>;C4yKEYSL7fFEE*v=b5QeWlB4gcrMeceO@bRXDMU7E)xK567~GU%VknaU;B%((zG z?v`BJLJ_msw>Jf(B)jeAkhGY!-`wm!_yB1dxshEz9=Bt^;Fd6IrgNQ^2&~G) zVbg1+7+V^+N19XlV?e1dub)ZdhMJ1Dwquvzco>I0j^G22TksE$qZn>*+jtC(9=BqK z$8pT}xDD$)PGHZ2RoikZ8gIvI?nNrv7REV`X+J%ti9L>D+{1k0wipr~w?g+gjwK$q zVWYrtG2R&Wy61eZ(< zIpF#%$XV=R|2e7IKazVe(|w4uiIY40FK%*d6%bEiIYus2dQn<`^Hg!bCZ+10P$qY{XjI)-; zi6;bWSjfGliWY8U-;$sA`KVe*VJsWd9PnR%#?@Di93EzBb4YrbEo}~UZhF*}r}ZNC zmjxS`#(k!HO>8)UYLZzwi6?l3*`$GY*y-lx;3gq43b^`9XUP;hm$Ya(hK2(TuklE7 zhJ^v1ORgu2E+Oyfp~cOI1Hl&_b7$`=&ccLWyEAr`@~CGI(dbnw700udjKIg^)RHY2 z$zBPE8tVDVXh{VpekwGxxW=>46bl>KSK&}_h>)aZoOpz5c54{HB9VaPW4TC2Fv&C0 zj0_;WQT*rFbCE#9I3A}~Dj+FFOFG8w;NE&u=wW|}gc`>39P?%tS9$JvQ^Sxgu4dlM zV>}zvl4)4Zqbg|K2n(h%9m&^|9&4Du9&ZT+-{iK%E)&Oj*2V5_Y-XohLgigNHeF6( zE#FyPHu3p@yPmpSLLXl}T}`2%*QA~{aD_*!XHvN6aS5@XxY6oeI@St(Er~83r>>dU z?Q)~7n@MaG29)+}k97>&${kr6cCaU-p>j;P>rJE1V-2G`Heh&cVH!_*8E8568bnG}~ zXQnM$;^$~|fG?|=H*xit>(k6z=wiQ*1v;1fGuNjL>)}zEr6jKKtulK`n8M4>oSnl4 zkBd0O#teHaf& z@361p@A_lab2Mw`^(^Yx@7n^wZF`((v$koOV+WCvrbmev(fE=;NI#ZAaAFQ zJmzuMiYdI#^6f7LuT~!cd756u*mh^eyj@Do!Y1aQ5|GxihAG?q8+SVLnYL-Dm{d7A zr6@@=*wCq=;0M(_Ok2t4@Q2-wlEXT+Bl)QTX$iY)YNg>f)!nAHh1$S3pK^4FtsFkD zhT^bBoknM8AUI;1JDM^J@KvXzM;Tewuw|WrWgEDkJV`XcriF*Ax1nX{$!9(1qHf{P zF4voLJO4YMSEn{`4wuiQbE~QPB(rR%MSY6TZkP(y=@*?L|5Mz`B+oaoG1I=0hOyDp zP5(h>15C@-=s?(5d1(6oNWt}MeaIAxsU)4tr#=EQhN>2Ni^x_Um#InG&z?+%BIj@M z!D&8i>J{tBN0sT$Obe!_cHzq=iOb72HPMAA3#-NO5*Vu@^jXqpK4oZ}IPNCjGh^&ZK{l z%VQMz5H~_SMv)(gyE-w7>at++GcU#E=jyw;gK3gzx>+E}3mL&lEY1p6(3lgPg5D)q#dVLWDZJenG-_7P`n*DVRKIdJ{8N{pXnM{bf-nTMksbL}AnVMXnp$MM$ zxCNhh9L4QyLC%)6%E{cFK4~Ot&_cl}G=o;??r|KRy_GY~wuvp!-YxH);zM3F6r0N9 zg2&YMb_jU_FMHgM^Ma#cq^5G6D7`*;+=8zK$HHi&*1zhXN=5fLhJ!8-Q|wqP7K({! zbH`WS%K!O0n@Hm65ONBg({<{U|F#I0DT^M|?;BFlCSi?4p%M&st zl>{g8zQ=U*^n}Df3eWclrdskijYE|qeYe(>$Io$x<53yQJx*e?#|q+eg-!}HJXUeY z<1}9PID<3ugnkwUTW}7W`KH99UD!tNMYKWRx8t-!Fu78kx*EZ>%A?p_bImgP+|jlc z8RtAs;?OK1S76K*oWiRft620SAy3n>EtsAM%Q#cojUFeF^jN{z@m1$`(g+3L-Gflh%clZQR*XY)J!{cA{4veH&0g2R>f=HDSn z(<fYZ;4J%_ln3S^}iQ*lPV;I{ig5)?q~9R=)zGi@jUgNA&TaXB&NsFc delta 5790 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 ItIluyf9giPSpWb4 diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 144356ec74442fcee446431ff7edf398cc9e3903..a67d957dcc8070b430b06c07195eb125e49fa783 100644 GIT binary patch delta 6760 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 Bq9*_V delta 6785 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 delta 7045 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 diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index d95abd24..2c79b6aa 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -2532,7 +2532,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 */ \ @@ -2579,7 +2579,7 @@ 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 */ \ RSU, /* VEHICLE_ACCELERATE */ \ RSD, /* VEHICLE_BRAKE */ \ diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 31580e0e..97525388 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -6175,13 +6175,13 @@ CMenuManager::PrintController(void) 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::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_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_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")); diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index 9bc1c96d..99da103b 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -4456,11 +4456,11 @@ Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle Paramedic missions on o [GUN_H1] ~w~Press the~h~ ~k~~PED_SPRINT~ ~w~button to buy. Press the~h~ ~k~~VEHICLE_ENTER_EXIT~ ~w~button to exit. -[PU_CF3] -Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to replace current weapon in this slot. +[PU_CF3] { reVC update } +Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to replace current weapon in this slot. -[PU_CF4] -Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to replace current weapon in this slot. +[PU_CF4] { reVC update } +Press the ~h~~k~~PED_ANSWER_PHONE~ ~w~button to replace current weapon in this slot. [HELP9_B] Press the~h~ ~k~~PED_FIREWEAPON~ button ~w~to ~h~fire~w~ the sniper rifle. diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index a1bd7baa..4eea0ef4 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -6214,11 +6214,11 @@ Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les miss [GUN_H1] ~w~Appuie sur la~h~ ~k~~PED_SPRINT~~w~ pour acheter. ~w~Appuie sur la~h~ ~k~~VEHICLE_ENTER_EXIT~~w~ pour quitter. -[PU_CF3] -Appuie sur la ~h~~k~~VEHICLE_ENTER_EXIT~~w~ pour remplacer l'arme actuelle dans cet emplacement. +[PU_CF3] { reVC update } +Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour remplacer l'arme actuelle dans cet emplacement. -[PU_CF4] -Appuie sur la ~h~~k~~VEHICLE_ENTER_EXIT~~w~ pour remplacer l'arme actuelle dans cet emplacement. +[PU_CF4] { reVC update } +Appuie sur la ~h~~k~~PED_ANSWER_PHONE~~w~ pour remplacer l'arme actuelle dans cet emplacement. [HELP9_B] Appuie sur la~h~ ~k~~PED_FIREWEAPON~ ~w~pour ~h~tirer~w~ avec le fusil à lunette. diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 449e4993..589ba084 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -6175,11 +6175,11 @@ Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Krankenwagen-Missionen an- oder ab [GUN_H1] ~w~Drück die~h~ ~k~~PED_SPRINT~~w~, um zu kaufen. ~w~Drück die~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, um zu gehen. -[PU_CF3] -Drück die ~h~~k~~VEHICLE_ENTER_EXIT~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen. +[PU_CF3] { reVC update } +Drück die ~h~~k~~PED_ANSWER_PHONE~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen. -[PU_CF4] -Drück die ~h~~k~~VEHICLE_ENTER_EXIT~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen. +[PU_CF4] { reVC update } +Drück die ~h~~k~~PED_ANSWER_PHONE~~w~, um die augenblickliche Waffe in diesem Slot auszutauschen. [HELP9_B] Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um das Prãzisionsgewehr ~h~abzufeuern~w~. diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 5d8f65f4..e1edd771 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -6007,11 +6007,11 @@ Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni In [GUN_H1] ~w~Premi il ~h~~k~~PED_SPRINT~~w~ per comprare. ~w~Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per uscire. -[PU_CF3] -Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per sostituire l'arma attuale con quella presente in questo slot. +[PU_CF3] { reVC update } +Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per sostituire l'arma attuale con quella presente in questo slot. -[PU_CF4] -Premi il ~h~~k~~VEHICLE_ENTER_EXIT~~w~ per sostituire l'arma attuale con quella presente in questo slot. +[PU_CF4] { reVC update } +Premi il ~h~~k~~PED_ANSWER_PHONE~~w~ per sostituire l'arma attuale con quella presente in questo slot. [HELP9_B] Premi il ~h~~k~~PED_FIREWEAPON~~w~ per sparare con il fucile di precisione. diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 93524500..6163a1fe 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -5834,11 +5834,11 @@ Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de ATS [GUN_H1] ~w~Pulsa ~h~~k~~PED_SPRINT~~w~ para comprar. ~w~Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para salir. -[PU_CF3] -Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para reemplazar tu arma actual en esta ranura. +[PU_CF3] { reVC update } +Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para reemplazar tu arma actual en esta ranura. -[PU_CF4] -Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para reemplazar tu arma actual en esta ranura. +[PU_CF4] { reVC update } +Pulsa ~h~~k~~PED_ANSWER_PHONE~~w~ para reemplazar tu arma actual en esta ranura. [HELP9_B] Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para ~h~disparar~w~ el rifle de francotirador. From 28f9160bca304daf390f9b4dd68cb96d135e4f51 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 12:13:03 +0200 Subject: [PATCH 066/113] Fix crash when falling from bike while shooting --- src/audio/AudioLogic.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index c7b26711..7469f579 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -2970,6 +2970,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); From 7c74c017418ee91d6fb580d9f32747810af4bc98 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Thu, 11 Feb 2021 13:35:56 +0300 Subject: [PATCH 067/113] fixed attractors --- src/peds/PedAttractor.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/peds/PedAttractor.cpp b/src/peds/PedAttractor.cpp index 11fb5b31..91139def 100644 --- a/src/peds/PedAttractor.cpp +++ b/src/peds/PedAttractor.cpp @@ -662,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) From 579ad052ed090627cc8b73998647f8b35c015ef0 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 13:30:04 +0200 Subject: [PATCH 068/113] Fix black screen during credits --- src/render/Credits.cpp | 3 +++ 1 file changed, 3 insertions(+) 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(); From e4320c02cf695afdd48c6fa54f0d82273306cf53 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 17:16:01 +0200 Subject: [PATCH 069/113] Enable BIND_VEHICLE_FIREWEAPON --- src/core/ControllerConfig.cpp | 18 ++++++++++++++++++ src/core/Frontend.cpp | 4 ++++ src/core/config.h | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 2c79b6aa..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)); } } diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 97525388..4c847596 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3135,7 +3135,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(); diff --git a/src/core/config.h b/src/core/config.h index 152ba336..4d2ad3bf 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -307,7 +307,7 @@ 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 From 998d88763d7d711fc7d228e4bf3fdbb7dbb51eac Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 18:03:47 +0200 Subject: [PATCH 070/113] Fix RC cars detonation button --- src/vehicles/Automobile.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index cdc500e7..06dc1b54 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -371,7 +371,11 @@ CAutomobile::ProcessControl(void) bool playerRemote = false; switch(GetStatus()){ case STATUS_PLAYER_REMOTE: +#ifdef FIX_BUGS + if(CPad::GetPad(0)->CarGunJustDown() && !bDisableRemoteDetonation){ +#else if(CPad::GetPad(0)->WeaponJustDown() && !bDisableRemoteDetonation){ +#endif BlowUpCar(FindPlayerPed()); CRemote::TakeRemoteControlledCarFromPlayer(); } From 438277408b985c7d231f3372d250af8af2bd0f50 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 18:36:40 +0200 Subject: [PATCH 071/113] Use VEHICLE_FIREWEAPON in GXTs --- gamefiles/TEXT/american.gxt | Bin 423830 -> 424006 bytes gamefiles/TEXT/french.gxt | Bin 468068 -> 468284 bytes gamefiles/TEXT/german.gxt | Bin 459734 -> 460058 bytes gamefiles/TEXT/italian.gxt | Bin 457038 -> 457234 bytes gamefiles/TEXT/spanish.gxt | Bin 454830 -> 455006 bytes utils/gxt/american.txt | 88 ++++++++++++++++++------------------ utils/gxt/french.txt | 88 ++++++++++++++++++------------------ utils/gxt/german.txt | 88 ++++++++++++++++++------------------ utils/gxt/italian.txt | 88 ++++++++++++++++++------------------ utils/gxt/spanish.txt | 88 ++++++++++++++++++------------------ 10 files changed, 220 insertions(+), 220 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 1039deb887ddb84d2070b215cee239b9d7f859c5..919cd1394299cc930fde7f98ef1d4af9cce7946a 100644 GIT binary patch delta 22483 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 diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 4dbb44f4ebe9b8ab5f99f2f264aaf0df6a6bce3a..a213bafb8a98134c4404212a73b3eaf02b46220b 100644 GIT binary patch delta 21590 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 delta 21402 zcmZvkf1FfTdH+ANSvCX#2}TwW)|CY$NZ9%PgJ16a+?n0knPFyj7q-MfBuEGlf`}v~ z8H|WX38h@ZB0-82DMm~qNr6&~m?A~KNRd*cNGMX|8~LK9lu|^B-_N=Coac}4>pOqF z?{lB?>p9PT&bjBFGe=I2xOQU1#u3#i%?}}3DrIsWV5Lv97g!R|>;w8v(d-ANBsB+s z#==90MRVke1Vs2@necRb7khVvR*SwyE2B{$u?7d#jTn0tu2~ai&HtxY(W2> zTBI_$Xf{dtBE`jIx!8^sn`_aU%q5G}s0UkL(-%=M-u$j%AF_uG`?2zZ;Q;#Is6{%O zQFX(r-#e@<(f8p#wp>}FFo>KlC$nVt&_2k-lkp;LH-D7Fon>J3r~06p$(4(FD$Vfs zL3`3}Ft)dmGx7FPxr~-_A7rE5Gn2H?%^8NhXsjCc!M)3{A1&YSgN{tJBST}~{UN!7 zne(^z-9E^7MYF|BD^C5m4+`l_mJO(4#%bq5wcylwa;B#zN^ZGI&KH%XG3$2@E1jVa z)!A~@%3}i^rlm1=EV-Dst+GDku+mSoI;`}MrhG-Tb0hyV-72wo&V&p(kc9F9m>%e zEQt>O2Z!VAgWY2WJZ#_SrXTo+8TO+8NW(td{kV1bp^0Oz7F>vS#5%K;4$Nu*xucWW zVeIG{o733>_E`gJ>j&(7g_1%vo~GB$wmh}<)yrRG+LF^1yNpYjKWgTRiemWP0eCetvVc*7B3!t+{(l`FoWnU!1lWt;t~LYLP#8S%o6{a-UT zJm|O9un&8L{V2Yy<*f9Yvxfcfenm4IP_tSy8xZ@dW;S5CVK(5h;VN6uxJE0n1#1km z1vO50sEXo>V|HaM)Hy9v#zL3Vnu_xCi(j|%sjw_ecv^9ZUFpV4!XDff_TuFQE19d*HP?9%-u9Ig&~`-;JJMGHtHie)P8(X7i33W*u%Crn5C% z)%tXc7Q=Ll^sj6=+XyT$%(QC^E7$qowvO}Y&ryxZwfnu^C=P3`c!QYriX*R3e#^*x zUYs^^Un|CM&^o>}RtmS{gm4xOk~W9pMy>Cs$8F@JuL`aNJUIJJvYrtv?MI7}XL7Wk z(Mp?uFWM(vVQrYX4h`((f-Yy6MyGYbD2uCww$fNt&@&Uaz+9B zLylZc5w`AdJOZM~jx|JN*R1N=u`DgRxH1l8gN5gLHG;)@8(=f|gcVFwMfcQU} zS=M^PEUVuGEobQ3W0;|9oXMY|Ywmp3BwHR|NoT#-^j#*%mHBXUa$uMRpEb;amspQ} zxV5_Uv((JnZX6f(V9@7`+zYpG81scAc+)VS3YfI4`UOXBhlD#0 zJCD@Fxpt=ZXu7~K?eW4qTW$|_mxVpZe%{DKctJRfHBV_dn|jX3y&l{X_F^1EKO3xq z5vI+5##}_O*(7GA4;f~y&l{$}>r5qR@KM51oN+4cuXJ@m!7 zzY}u3x?^hgE*+! zZ#LAKWSAa5&oK4J{|MBnM6(PHtFlVJlF!jLssE(Bm~gv2Q7jgYVW-1Yx0_+S?|(T; z9*$e1gkzW{OzYp#I^ihV3`e4vD;&d7&1%TFEgZw(|8~-Py>avyW?4)ByQ**aVpwNx z_@g***OB{J>x;rM+!v0c;rB)-fwXWE8w|4&;d@#q6h&D$hJ}W!p*Y(9;3)Z7*h1kL zRv2bR{r<<%2?V2%pVIF4Du37j>|f=4}Y(gxj8q=aLbMXsv83A*FB@kd7~#7c|? z`;YPv3%=-bI83YD5vECNj69A}!U=?hlQ?Xcl}=91kyl^Y-3#ZZcVUsq4!&P%Z6Ac}tZ?Mni8fFVN3CGa&sH5X& zrI!fDuwFQh*M$=}E}XPN7}$kkh-um`7wy|^LlL)i{!EX(7^e8p8&Fy9PT%Z(s*3Wsn&IE6(UejUUf~eZ!ePu7j^HK3J~y@rdoah2dd!D2 z@x8)6oDgQg!U5FU5inV0f*?jX7vvB&3Wsr0ID%`2{chYB_P}jNNfzw)VxzDRZwvcz zMmWHw6y4qaAR6x5@n0nlVak1TBaANL2o@R+xUp2&gAKxLv9J$Eh5fiF9KbE%AXeDn zndMdkAsjLnfiUh1N3g<<)l>?)v0d1MW5Qls6!zf*VL$5ZaIVq@kP_z0lW+*@$&CL> zDU5w`BZ9MrLvDoav4A=u4`vH{u~L}pAi{pUD;&TT;UMk{hcMh8M^v8SD#CIRL670E z8_R?}SS#$s4q+dT2>VgC2ODM@4q&5j5I2NF@Y`dD(h1{^%~f>~!DIH|L5{c)6!u`2 zuowG;eK;lT$93TV8tnl_682zVor-SBgvag0Xkj0w z2(!h)0W1*?VuNr9dxgWeD;&XGd%#O3svQ1sSzmDY!??b>V2>BGg?-p1?8hbH03Lh9 z=m*gyOy?2~KZ3Gh2CfalRSyo!1!J|a4>^0hXXSi;ykHO0iUZgq97K&hG%I-sS>Z6=6po;u zJ=9W%fos1#S}OM7x*8!>{P!?&`5)6Yjz;6=5%`%Z8a7J`5gi*pEZP0c1aBpO8F>Wf4Kr}98m;9FTocC_ z_Tp{f0M3lzQjh(Zg@X94+z6rnSR-f4gd<2BW`LR}%m5|q#V%nV4h#EnRycqghO6Nq z`h8Lt77n37I1ImV1UbVDQ1gX3!x82nB<#bx!hT#84sd#;%VL0PB-`=d6A2+EH~5Mv z9Klk}UIwVO!XCUX?8Px*AFc@d@jy6$;g357d)+}y5e`*RmJ2R!2uHBSFay+fVLq;vakHf+NTo4YTZlcLEgi*p_ zq%~K)KK8M>!3ecd*n=&?UK|ki;jA#{bix7D*i&^{R86gfLzpHUMp>9Mt7aYly^K&R z%?+-)ZWQ+7sIU(=g#GB})-4MJFjkm@kZ=f#g}G)W9Kj{S!Kxdz9-R>*REscYIKn>c z7xv?XFlRWzK|Bx+A?!7IhOtDL3pR!spw1{(@!!h`bx&?^y!YwEAr3;qe)I?juv9pR z&B7s^5~foNM=-*#^JL&k2zyXnDHohR3;S?Wm~Th{lQ@7G!klObbD|*}#uecR`UZ7c z2Cf!i&LthLCcF_Yqsk3VCWZYtDa^Go;UF4ACesim2#2viID%c8eGFXh3wzKIcGCJd zv&w~a{P($i*eo~vI4T^#ZQ&r?5tBHCdBS0=6OLf7VFs?HleIo)R(+=!=ICd*>ha-q zbHSIww}tt_ARNTdsU|VKS~!dY!u*P4n1O5jG_B8>)jVO&o`rq5O19&_&+EsCPn!e* zbO{HsO*n+>!eNYUG5Q=84Kr}96ZYV3VK0V8wZ6}Xgs{JgvvLu@XJSSvh-<+(+y|g$M804I{WoZ4v>GSOC@Jhkm#`1xUN!oD zOc4&CEF8o_VGhBs)-*YVg~He=H)v|Zj8<1)wQh|YRUP^f=B>XEUlR7>_!e5cGiHB3 zS=(zfm(@8W{E~0;YS#^ygcdtG_70qFhPh@v(b13Qd|bCT?B~}6qr>&2L%*`~w5-Pi z!xyTya)ZxI=2`nTxvN}B7K_;PUF+)Oqg*GfKI2QncI8}1B-MvAe&{*D%#!>jSIppb z>$&muuH)9%$2SddAEi#FROT0CEVllRlG}gpNLuq*v{=6$|BP#m)%mIBs(-%=sbsX` zEfuhFca6=yL>gr+_fvkIRZ%+8L;-7m?dZqTQCt^J;AFwkiI)>->2^55%^i#X&e2bl zOIWS*O!E8Y+m5_iNp-k!LMx>@Jh&+A#dTpH?g?}8;joiws)J$shlYa~B=Qi(3x_f7 zZ=DLII&vugjl&%UAGW+zH5V})eoHeydT!D+%|+9gtL3>4AGYdB zOC?;;`lZwiysa%-Dzsy^)+v>_^@e?zO7iQE<$B^{V_tqul^m}``Du0QcQxlq82%6Z zyrJaW@-*9uK2bkli`I;ByVhdssVAC;U*78I$KxI7|6@l#&VG9Ex7Hg^Osekf)wj9X zYu#TPZpXDPnz2Auf$VobfOtFj;+D@6SG_HPI>vwfwyS7*U$SzPk7=N2e`66a5`m zv6|g|s#mowv(YRzY8T4V*X}XsseaDJJm{|*mW}aSys!^LvQGZl7}pkcS=m?=ExHcb zSR8w{nS9bXZpw<6F~^ZtE7?R2E45Q)6P;M1?VU}guw6Gen~GxnH*`krSq#;FoNX^- zfvGe<^<6cE(P5VAj?U&&D4NPKo-G$MwUAi&Y8k!>DNuIODXi2 zigqRt(-zHk<}kt(+*!aqqu-rCo#qa1Y&m0n(^FqPqWh|&l;&n2r%4^9Ecyy}V32ST zjk?5+?igx>Q&^$>rDH}OFAJA(hF?BazvcMlc%m*nm*rj)$CTAdj$v(^wgGoe;*hp+ zuCoI%U4YukF;w?Mt~-gof9X^--&Vp2-MRVpc5K!a&3BaG*N&Rcr7%V3ljm@BQk$s| zOcA8PG6v|ng)NLv#8)$nJ7(4yC-37KgYYOX5VUTc^L$za%LU$3fgv%JJ z?J>PGiI{FAV<0Z*Jd3o!Z~xjJM&gwspSW|n)g(;dBSD>y{Pi_%E5n+;`gl zU!2}8mV7Aw#CiIPr8o|meCVUw4VQD6rXP+XeY9?`Q|V%rjyY+cb5Tl_(WVoW=q8Oi z(-Oz8{W`Xl*t>NiFJrXMs8on!ytZ7aki+?1I!{{knyz%IGlss}14><;7{Ldts{FIm zlR;5GWu+eau&zWo8p9_2=$1M3Z`ES1WuWtaonOV*>ode;=|@nFTZ-THd4 zspdkP^+s@rYqs^{V5z#$o~a}%%CJSvxMzpV*t4vMa=fLbft>}(Hl2Z!@XM>FSvd&a5)D5v+_ygY^9CuZq!_0xnAox;rd|>b_DOJq>3H5Vo%vRD%m{818ZcY$#uwzMw+VW z_f^9>Dkbg^Un1)ZCevi5jPF z*1ty{t-9^WVb1P=19m5ILkvA)oo3|)mo+Od7-&y9^A+U<<1`ntQQWsZt6+Q3AUj4C zD)~Ygjhd%-a_4~7DRN`_2M&MSF8H**Q7X6M%6C+yr&mhFBo4i9ZJM;lwc3hIE)6(a zQr0TP)uVNcUbl|;0R8CoZiOk$SZ4$A2xCyv{BHdGP}s`r2F6p-Tce#EIz zB^z($R;A~r)K^z(Nr{r%I%{qr##zJdIm~vlK{p^*im3TRWm+k)M4Gw5~ZS$7dKF%QQ%8@yVI;;~XN;yo? zI!R_!w!?L~lIG0(+)33`?hWNOu{&DcL7h#8`5rQOk5h>bmb>rU_8?Za9ieDDTDek) zc4CF$5-?cvbY|Mme$Oda)ZvM7_CrIaRX)&_E0*$b>lT-2iI-0}6)G|9Xs5;Wrwq2+ z9bK-JtUl8|JoUkMsg=pKXSmPn_*l9|CTH(L-?Yz`t6hwks5!_t;GO^A$YZ=%W=)?~ zKjyTW>GMd7+Hp2#k!)tKW#8qCJ#fQeehA@Kw*R!{s+!n(+hNYb zan+HBl)T0I*{AEP*M82s$(*O+_9J^iGxy~^c+zHWwB$yI&lnD2Xhkzu-!=&QaYZP*6EfZ!?!YIwHA|nT7Z+E;O$~E7fo=((h%!G%aF`^=A@1X@h%Q&<_14p z*Q_l2nC0kjcEyi$+|W(^47vEvO5Wj7`wL^%lhLny_ClEwo{`BX61XZ|3VKK`LvzViX+4|E>S|`P~BP$wfs?Kh-B?W${#=C=9pJcYce!%Ud zmNV5UI)*K0-A;|ta(4LMk89>vm-8IMln(m}s~Lc7W}Zj>Ni*{qd`2_#+5a(Hzgkec zZo5Y4#Pk;LNX=njsY$>Bwmqrk+$(z&-LZ#fIC8F(V(v`MEO=m#W)^(NFblq~ zGYzPM=V=`leDu#Xv*2|bHM89EU)119Wg_mF!Te4722FiQS17;=Egj&PH^2(5v>Y9- zpkl#h&8*PN!!=XCMR!e*M?{8OKS(r9ee*-k-7xR&e9UkRZtXD<%Ima^Bb6BT{Hs%9 zggIobk;$g&ir-Pv#`#Z~`{@6}a0;~_81BZ>TblXGvvoRqsjZ?W2e`*TNmhuPj=Z35 zv}jg0=BX#Dtx}lIi#s)ihun;~ei6EA9|xS>H_6FIxIA3!53wtMiu^COE9l@$CGRW-dfbF>+e^IP=fM zU9#$X*KJU*%0;B*$E!h6b*Zk z5cXk#^+;P&^(-sLW2h=i+;Z4YT1M8PFn8DdzW(dYvUbOez@>)%{1gVBd4>U`Up$QM-%D{@;>Vm9nG#?*7S~&Ylijh zj;88-+P)(?)3(6}Y*R|674=O3va`w}zB$10v+6#Z8ij$xy49LJtF@&x9+ zU^t1h!YQ=h}?&b#f(h0>_~ zvf&Jt3b$e9%SPUg+OHVS;NNtF5(Dm7Z6UM|6;>QED=ueE&0ir zt)0uRvNLHX9%jTo;TR4G$8k?MfzkhN^piL(oWd31R(@mo{mj;fs>|RM9Hdu15RT!L z%gE!HS7SJVL0{19i=sz3hWWyAc$XQS1f~fmu}e6GHyy54f;_c%=!+&n8snE6&Y+RlLD?+GE_g#Y2LDYX=fcoUPNp2C1n&Ho!y$JR z`|lWzVfnL8!Rk=Nh$V(&xF#IOs^^S6f$PFaEM98lDZDS-irLy%LUU=xwdTUd4e-Kr zkkvY|FM-8hHB2)Kr?7gBk+ThcH`c9rn2Q8 z4Ca?_hrJlWIf%nP%rg3%H7qd9F@K$5Kdon&QEk6rTJ?y-gHvUW7pKh)ju+RhUw!s9 z*HP=sbDD-7|6UCW{N`Tbr;i7h`Smf$moqlGX#HSLvuE=*m-^!azI$>nvv3GK4%@@( za?NVib;}z0x#sFsdTxQ^sgmscy=G2+6aVcn+k)kq*%lnu%(mcxX0`<_cO8AU1*O@UwMPd`By-z^K7Qm)L!JH%d7iF;UeANC4!&zNDZ77Q}X(Qr7I0PMeV;Fq+= zo}y7W&L{cm+hq-#+vK`#O`Y3Ro%9XnnJ?OTzVmOIc_3n!Bj>Al7}p&3tJn4WTWuYC zays0RJCjq*$`CJWR)#pHSsCKOb|0%wHkZzh!Aor`E@d#7=B zXv;Z0oX^>z&3q14S;?oGJ0A;CvzSvy-fDReG0Zrdl4T9{O?FxgZB{RXB+2!Xexd=HbyrPGMzEK2N_j?DJNQ=X!e$^DF0Cx##AtFn6tG zjXVIqa1bf$y{9KAFv&q}fYB@drw|~@3&%U|YX8Szp{a0=FsTGei z)@K(qRj15nS#hqB&fxQ}+8R&WQ_VXU47;(bpmdbngSl^LISqcnFiQ{rjg~X#VV-tb|iU4T*wVcbAf7#|a6TDCs%Onqm<&bny76}>OaQ$lvu zO725in15&?%)R!)LCg~l@wNJuXPO3#V&E($)f|+sQq~WinLOaA#VYbIQ0NhGTYVNz zo?2AqQ^%h@9Jqv2oB(S%J?yM9YrdU}U2e=V986%Z_2R;c>zwu8!Y0=$%eAQ4wZ!r) zs;@4l6PA*#_A%#{FBo=Xy)d0k*o#TajE)a$g}F^xIDnNVPj-y|S*=eS&KgkTl*M{p zZM3<;r%uscSfZ5}6^Aa>%&2(V`qiSQfopS0!Z$ts9z1IeSzH`b!)1n2dnf;tWhN#v z3@BD1;i6A7L&9q7mBr6g*Z(gj=9pFCNw)LCUJO5FSnp&#Z5j%c7?di*4AOzk2i$_7?LycAWl4FIK&e+hPh2s zn41=jKBL4cVeTEwrF8-xVP4AhB)ed*50~r;rQ^yf4gaKSt=NmT!anra6;*OS_GhhW zONMlwOR6j!pWOb>AQy`21+DOTC0FdmYGDs{343uy*oVG+(j9#sN3p)Mq%@$PxyxR6 zTaP@~RGs)Qs#?X2`tzvRf7o15-96f_L$RQ``&eA%LuPkh7^|5hz-q0p=1zD{`9Cw9M1QVzP|iP7$zaP*RJ$s5QT~kz)?43yu6e+^Blhi7w5y03>o?EU zS9krumb6B5tyq83PQbs2h++H>9eIv_N;FB>i>$B@bA|nQNjQMr!a*Dp=7v#WZi9Bp zwZ5`+r0cx(t)K2OZ$<@N#u_?@Ri^5zz7Y^W#F!#8hH2LsonJ~Ag3P<2I z%x-RTxTjF0e|O0ZFXjmQutb6uZLLQU)DTk z!a|q&A1JT-IFL5Xfn%9rhNrz&pD#AKW?7GavAJ6QbdCMLQOf;pbAd}ux0U;?E7J2lf4H}BR=SKK{K>(dqY_T`uool#12zIuTZcXGE{{XgfF+pPjJH!#|AwjGy0 zY3o}*|Kg*=+7?ruoMC?~7<|lT``;+~Tdw7kT`R4r%U^37G>B#C?>onY8Ta0y{>);s zkmtq{&7~|~g*nY(JWUqq^>c3koh7bb@prew8ug`7V~_ETp(|dn|J2RRAgfrJ;F3o( zO|ZsmE%?$&&kCw`M@wn-u*R;y<_w>c(NtA(mF(?i%}ln?dTK?bI{sf>P~DZKA0H9s z?(&O9&OP43e$@WL$oY>z!a=+*9Kw=IMkkCj!Vye-Ps{1Y8yp^=%+iksUp6=R&0E-q zTf+QwWi5KXeoT2U8^F(Y5xU9|%?Zw1CTK46%Vv%Bo#%b7p10n6{*mAH4*F${`)dtP zyAC!yT{FA3_vodXvAz2i)x4l+bnnq;Yo_&XTwF8j|G9CHH@x+|M_=pX?q%Xw@4~Ou zy#0}9@e-EdS$q+n!+bo2My%}p;h4Jm-q}m)=BOMRdsi;5bN2?nUbEOPSf%aPd;RMy zMAgH-JUDM%P43%Y+u!`q!Trs($DeXd>wW&!+K;(b9DMcF+K64lhTbdh)=cc3`&#Xh z-pku+y(()*c961jBVFF!$luleyK6@8$iubu!-hY~Ph!a&ryfB}6y}-W-j2hyP1QCd z;s=cnggtm;giaRlVv8^b$H7Ll>C^H2XRL@gqO$Y0KT07(s$Ls@tUiUE}ZDyZ)8Bp}jA>?;3jWUf(|1hi&Dr zy)>xL!IuWr4gZse6Av*6;Mv~j=9>D02cD_hQ6s&*vw`ahdV0&F*TOur$(;jxYInxA9@kd^&Fp={^06 qx&y9B2fuo$?n~^R*ZPd^UC>)Quy^0hx9 diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index 27ee143cf4016a10398b752d6d29de7ab4155aed..700ea772b99a32a9fa8f364fbf4a7a69e644d1d2 100644 GIT binary patch delta 21011 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%0DV%<_B?}G1l3}>))w&oCTmwv%; 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 delta 22264 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%0Df?04BYk~aMfNA4VAsAo{84%v&W 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 W+B!T3aEK1Tvn=y`@z0xA2mc?D%=4rG diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index 99da103b..2498664e 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -2383,8 +2383,8 @@ WELCOME TO [TSCORE] EARNINGS: $~1~ -[PBOAT_2] -Press the ~h~~k~~PED_FIREWEAPON~ ~w~button to fire the boat cannons. +[PBOAT_2] { reVC update } +Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the boat cannons. [HJSTAT] Distance: ~1~.~1~m Height: ~1~.~1~m Flips: ~1~ Rotation: ~1~_ @@ -4255,17 +4255,17 @@ Car bombs are $500 each [GA_5] Your car is already fitted with a bomb. -[GA_6] -Park it, prime it by pressing the ~h~~k~~PED_FIREWEAPON~ ~w~button and LEG IT! +[GA_6] { reVC update } +Park it, prime it by pressing the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button and LEG IT! -[GA_7] -Arm with the ~h~~k~~PED_FIREWEAPON~ ~w~button. Bomb will go off when engine is started. +[GA_7] { reVC update } +Arm with the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. Bomb will go off when engine is started. -[GA_6B] -Park it, prime it by pressing the ~h~~k~~PED_FIREWEAPON~ ~w~button and LEG IT! +[GA_6B] { reVC update } +Park it, prime it by pressing the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button and LEG IT! -[GA_7B] -Arm with the ~h~~k~~PED_FIREWEAPON~ ~w~button. Bomb will go off when engine is started. +[GA_7B] { reVC update } +Arm with the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. Bomb will go off when engine is started. [MOB_70A] Tommy, it's me, Colonel Cortez. Look senor, I believe you are a man who can get things done. So please help me. @@ -4414,20 +4414,20 @@ Press the ~h~~k~~VEHICLE_BRAKE~ ~w~button to brake, or to reverse if the vehicle [HELP8_A] Press the~h~ ~k~~PED_SNIPER_ZOOM_IN~ button ~w~to ~h~zoom in ~w~with the rifle and the~h~ ~k~~PED_SNIPER_ZOOM_OUT~ button ~w~to ~h~zoom out ~w~again. -[PBOAT_1] -Press the ~h~~k~~PED_FIREWEAPON~ ~w~button to fire the boat cannons. +[PBOAT_1] { reVC update } +Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the boat cannons. -[SEG3_4] -~g~You can pick up bombs by simply piloting your RC Raider adjacent to each one, to drop a bomb press the ~h~~k~~PED_FIREWEAPON~ ~g~button. +[SEG3_4] { reVC update } +~g~You can pick up bombs by simply piloting your RC Raider adjacent to each one, to drop a bomb press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button. -[RCR1_3] -~g~If you wish to quit this mission press the ~h~~k~~PED_FIREWEAPON~ ~g~button to detonate your RC car. +[RCR1_3] { reVC update } +~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC car. -[HELP32] -Then fire using the ~h~~k~~PED_FIREWEAPON~ ~w~button. +[HELP32] { reVC update } +Then fire using the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. -[HELP33] -Then fire using the ~h~~k~~PED_FIREWEAPON~ ~w~button. +[HELP33] { reVC update } +Then fire using the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. [TTUTOR] Press the ~h~~k~~TOGGLE_SUBMISSIONS~ button~w~ to toggle taxi missions on or off. @@ -9951,11 +9951,11 @@ Fire Fighter mission ended. [F_STAR1:FIRETRK] ~g~Burning vehicles reported in the ~a~ area. Go and extinguish the fire. -[SPRAY_4:FIRETRK] -Use the ~h~~k~~PED_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~. +[SPRAY_4:FIRETRK] { reVC update } +Use the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~. -[SPRAY_1:FIRETRK] -Use the ~h~~k~~PED_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~. +[SPRAY_1:FIRETRK] { reVC update } +Use the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to fire the water cannon. Aim using ~h~~k~~VEHICLE_TURRETLEFT~~w~ and ~h~~k~~VEHICLE_TURRETRIGHT~~w~. {=================================== MISSION TABLE GENERA1 ===================================} @@ -10248,11 +10248,11 @@ Diaz's Health: [GEN3_45:GENERA3] They'll be here any minute, we both better get a good vantage point. -[GEN3_40:GENERA3] -To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~PED_FIREWEAPON~ ~w~button. +[GEN3_40:GENERA3] { reVC update } +To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. -[GEN3_41:GENERA3] -To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~PED_FIREWEAPON~ ~w~button. +[GEN3_41:GENERA3] { reVC update } +To ~h~shoot straight ahead ~w~on a ~h~motorbike ~w~press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button. [GEN3_46:GENERA3] Sheeit! @@ -10305,14 +10305,14 @@ Press the ~h~~k~~PED_FIREWEAPON~~w~ button to ~h~fire~w~ an assault rifle. [GEN3_63:GENERA3] As well as performing drive-by's,~h~ motorbikes ~w~allow you to ~h~shoot forwards~w~. -[GEN3_64:GENERA3] -To shoot forwards while on a bike press the ~h~~k~~PED_FIREWEAPON~~w~ button. +[GEN3_64:GENERA3] { reVC update } +To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button. -[GEN3_65:GENERA3] -To shoot forwards while on a bike press the ~h~~k~~PED_FIREWEAPON~~w~ button. +[GEN3_65:GENERA3] { reVC update } +To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button. -[GEN3_66:GENERA3] -To shoot forwards while on a bike press the ~h~~k~~PED_FIREWEAPON~~w~ button. +[GEN3_66:GENERA3] { reVC update } +To shoot forwards while on a bike press the ~h~~k~~VEHICLE_FIREWEAPON~~w~ button. [GEN3_67:GENERA3] You must have a sub machine gun to shoot forwards on a motorbike. @@ -10712,8 +10712,8 @@ Blow de boats to coffin wood. [HAT2_12:HAIT2] Thanks for the tea. -[HAT2_B3:HAIT2] -Press the ~h~~k~~PED_FIREWEAPON~ ~w~button to drop a bomb. Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to cancel. +[HAT2_B3:HAIT2] { reVC update } +Press the ~h~~k~~VEHICLE_FIREWEAPON~ ~w~button to drop a bomb. Press the ~h~~k~~VEHICLE_ENTER_EXIT~ ~w~button to cancel. {=================================== MISSION TABLE HAIT3 ===================================} @@ -13260,8 +13260,8 @@ Checkpoints: [RCH1_13:RCHELI1] ~r~The RC helicopter went out of range! -[RCH1_8:RCHELI1] -~g~If you wish to quit this mission press the ~h~~k~~PED_FIREWEAPON~ ~g~button to detonate your RC Helicopter. +[RCH1_8:RCHELI1] { reVC update } +~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC Helicopter. {=================================== MISSION TABLE RCPLNE1 ===================================} @@ -13271,8 +13271,8 @@ Checkpoints: [RCPL1_5:RCPLNE1] ~g~Fly through the checkpoints scattered throughout Vice City. -[RCPL1_6:RCPLNE1] -~g~If you wish to quit this mission press the ~h~~k~~PED_FIREWEAPON~ ~g~button to detonate your RC Plane. +[RCPL1_6:RCPLNE1] { reVC update } +~g~If you wish to quit this mission press the ~h~~k~~VEHICLE_FIREWEAPON~ ~g~button to detonate your RC Plane. [RCPL1_8:RCPLNE1] ~g~Your RC Plane is going out of range! @@ -13930,11 +13930,11 @@ Press the ~h~~k~~VEHICLE_LOOKRIGHT~ ~w~button to rotate the helicopter clockwise [TEX3_32:SERG3] You can ~h~look behind~w~ by simultaneously pressing the ~h~~k~~VEHICLE_LOOKLEFT~~w~ and the ~h~~k~~VEHICLE_LOOKRIGHT~~w~ buttons. -[TEX3_4:SERG3] -~g~To drop a bomb press the~h~ ~k~~PED_FIREWEAPON~ ~g~button. +[TEX3_4:SERG3] { reVC update } +~g~To drop a bomb press the~h~ ~k~~VEHICLE_FIREWEAPON~ ~g~button. -[TEX3_29:SERG3] -To drop a bomb press the~h~ ~k~~PED_FIREWEAPON~ ~w~button. +[TEX3_29:SERG3] { reVC update } +To drop a bomb press the~h~ ~k~~VEHICLE_FIREWEAPON~ ~w~button. [TEX3_26:SERG3] Pressing the ~h~~k~~VEHICLE_BRAKE~ ~w~button ~w~decreases the rotor speed, causing the helicopter to~h~ descend. diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index 4eea0ef4..7b733b44 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -2665,8 +2665,8 @@ BIENVENUE A [TSCORE] REVENUS : ~1~$ -[PBOAT_2] -Appuie sur la ~h~~k~~PED_FIREWEAPON~~w~ pour tirer avec les canons du bateau. +[PBOAT_2] { reVC update } +Appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau. [HJSTAT] Distance : ~1~.~1~ m Hauteur : ~1~.~1~ m Saltos : ~1~ Rotation : ~1~_ @@ -5995,17 +5995,17 @@ Les bombes pour voiture coûtent $1000 pièce. [GA_5] Ta caisse est déjà équipée d'une bombe. -[GA_6] -Gare-toi, amorce-la en appuyant sur la ~h~~k~~PED_FIREWEAPON~~w~ et BARRE-TOI vite! +[GA_6] { reVC update } +Gare-toi, amorce-la en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ et BARRE-TOI vite! -[GA_7] -Amorce la bombe en appuyant sur la ~h~~k~~PED_FIREWEAPON~~w~. Elle explosera au démarrage. +[GA_7] { reVC update } +Amorce la bombe en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~. Elle explosera au démarrage. -[GA_6B] -Gare-toi, amorce-la en appuyant sur la ~h~~k~~PED_FIREWEAPON~~w~ et BARRE-TOI vite! +[GA_6B] { reVC update } +Gare-toi, amorce-la en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ et BARRE-TOI vite! -[GA_7B] -Amorce la bombe en appuyant sur la ~h~~k~~PED_FIREWEAPON~~w~. Elle explosera au démarrage. +[GA_7B] { reVC update } +Amorce la bombe en appuyant sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~. Elle explosera au démarrage. [MOB_70A] Tommy, c'est moi, le colonel Cortez. Ecoutez senor, je parie qu'avec vous, tout est possible. @@ -6172,20 +6172,20 @@ Appuie sur la ~h~~k~~VEHICLE_BRAKE~~w~ pour freiner ou faire marche arrière si [HELP8_A] Appuie sur la ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ pour faire un zoom avant avec le fusil et sur la ~x~touche /~w~ pour faire un zoom arrière. -[PBOAT_1] -Appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~ pour tirer avec les canons du bateau. +[PBOAT_1] { reVC update } +Appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau. -[SEG3_4] -~g~Tu peux ramasser des bombes en pilotant ton avion radiocommandé à côté. Appuie sur la ~o~touche |. +[SEG3_4] { reVC update } +~g~Tu peux ramasser des bombes en pilotant ton avion radiocommandé à côté. Appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~ ~g~touche. -[RCR1_3] -~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~PED_FIREWEAPON~~g~ pour faire exploser ta voiture radiocommandée. +[RCR1_3] { reVC update } +~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ta voiture radiocommandée. -[HELP32] -Appuie ensuite sur la ~h~~k~~PED_FIREWEAPON~~w~ pour tirer. +[HELP32] { reVC update } +Appuie ensuite sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer. -[HELP33] -Appuie ensuite sur la ~h~~k~~PED_FIREWEAPON~~w~ pour tirer. +[HELP33] { reVC update } +Appuie ensuite sur la ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer. [TTUTOR] Appuie sur la ~h~~k~~TOGGLE_SUBMISSIONS~~w~ pour activer ou désactiver les missions Taxi. @@ -10194,11 +10194,11 @@ Mission Camion de pompiers achevée. [F_STAR1:FIRETRK] ~g~Véhicules en flammes dans la zone ~a~. Va éteindre l'incendie. -[SPRAY_4:FIRETRK] -Utilise la touche ~h~~k~~PED_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser. +[SPRAY_4:FIRETRK] { reVC update } +Utilise la touche ~h~~k~~VEHICLE_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser. -[SPRAY_1:FIRETRK] -Utilise la touche ~h~~k~~PED_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser. +[SPRAY_1:FIRETRK] { reVC update } +Utilise la touche ~h~~k~~VEHICLE_FIREWEAPON~ ~w~pour tirer avec le canon à eau et le ~h~~k~~VEHICLE_TURRETLEFT~~w~ et ~h~~k~~VEHICLE_TURRETRIGHT~~w~ pour viser. {=================================== MISSION TABLE GENERA1 ===================================} @@ -10491,11 +10491,11 @@ Santé de Diaz : [GEN3_44:GENERA3] ~g~Va avec Lance au rendez-vous et protège Diaz. -[GEN3_40:GENERA3] -Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~PED_FIREWEAPON~. +[GEN3_40:GENERA3] { reVC update } +Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~. -[GEN3_41:GENERA3] -Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~PED_FIREWEAPON~. +[GEN3_41:GENERA3] { reVC update } +Pour ~h~tirer droit devant ~w~lorsque tu es en ~h~moto~w~, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~. [GEN3_46:GENERA3] Chiiiier! @@ -10545,14 +10545,14 @@ Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour ~h~tirer~w~ avec un fusil d' [GEN3_63:GENERA3] Tu peux fusiller des types de côté sur une ~h~ moto ~w~, mais également ~h~tirer droit devant~w~. -[GEN3_64:GENERA3] -Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. +[GEN3_64:GENERA3] { reVC update } +Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. -[GEN3_65:GENERA3] -Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. +[GEN3_65:GENERA3] { reVC update } +Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. -[GEN3_66:GENERA3] -Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. +[GEN3_66:GENERA3] { reVC update } +Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour tirer droit devant toi sur une moto. [GEN3_67:GENERA3] Il te faut une mitrailleuse pour tirer droit devant toi sur une moto. @@ -10952,8 +10952,8 @@ Transforme leurs bateaux en allumettes! [HAT2_12:HAIT2] Bon, merci pour le thé. -[HAT2_B3:HAIT2] -Appuie sur la touche ~h~~k~~PED_FIREWEAPON~~w~ pour larguer une bombe ou sur ~h~~k~~VEHICLE_ENTER_EXIT~~w~ pour annuler. +[HAT2_B3:HAIT2] { reVC update } +Appuie sur la touche ~h~~k~~VEHICLE_FIREWEAPON~~w~ pour larguer une bombe ou sur ~h~~k~~VEHICLE_ENTER_EXIT~~w~ pour annuler. {=================================== MISSION TABLE HAIT3 ===================================} @@ -13422,8 +13422,8 @@ Points de passage restants : [RCH1_13:RCHELI1] ~r~L'hélicoptère radiocommandé est hors de portée! -[RCH1_8:RCHELI1] -~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~PED_FIREWEAPON~~g~ pour faire exploser ton hélicoptère radiocommandé. +[RCH1_8:RCHELI1] { reVC update } +~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ton hélicoptère radiocommandé. {=================================== MISSION TABLE RCPLNE1 ===================================} @@ -13433,8 +13433,8 @@ Points de passage restants : [RCPL1_5:RCPLNE1] ~g~Passe par les points de passage dispersés dans Vice City. -[RCPL1_6:RCPLNE1] -~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~PED_FIREWEAPON~~g~ pour faire exploser ton avion radiocommandé. +[RCPL1_6:RCPLNE1] { reVC update } +~g~Si tu veux quitter cette mission, appuie sur la ~h~~k~~VEHICLE_FIREWEAPON~~g~ pour faire exploser ton avion radiocommandé. [RCPL1_8:RCPLNE1] ~g~Ton avion RC va sortir du périmètre! @@ -14212,11 +14212,11 @@ Appuie sur ~h~~k~~VEHICLE_LOOKLEFT~ ~w~pour faire pivoter l'hélico dans le sens [TEX3_32:SERG3] Tu peux ~h~regarder derrière~w~ toi en ~h~appuyant simultanément sur ~k~~VEHICLE_LOOKLEFT~ et ~k~~VEHICLE_LOOKRIGHT~~w~. -[TEX3_4:SERG3] -~g~Pour larguer une bombe, appuie sur la~h~ ~k~~PED_FIREWEAPON~~w~. +[TEX3_4:SERG3] { reVC update } +~g~Pour larguer une bombe, appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~~w~. -[TEX3_29:SERG3] -Pour larguer une bombe, appuie sur la~h~ ~k~~PED_FIREWEAPON~. +[TEX3_29:SERG3] { reVC update } +Pour larguer une bombe, appuie sur la~h~ ~k~~VEHICLE_FIREWEAPON~. [TEX3_26:SERG3] Appuie sur la ~h~~k~~VEHICLE_BRAKE~ ~w~pour réduire la vitesse du rotor et ainsi faire~h~ descendre l'hélicoptère. diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 589ba084..1d126829 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -2686,8 +2686,8 @@ WILLKOMMEN IN [TSCORE] EINKÃœNFTE: $~1~ -[PBOAT_2] -Drücke die ~h~~k~~PED_FIREWEAPON~~w~, um die Bordkanonen abzufeuern. +[PBOAT_2] { reVC update } +Drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~, um die Bordkanonen abzufeuern. [HJSTAT] Distanz: ~1~.~1~m Höhe: ~1~.~1~m Saltos: ~1~ Drehungen: ~1~_ @@ -5974,17 +5974,17 @@ Autobomben kosten $1000 pro Stück. [GA_5] In deinem Wagen ist schon eine Autobombe. -[GA_6] -Park die Karre, mach sie durch Drücken der ~h~~k~~PED_FIREWEAPON~~w~ scharf und dann HAU AB! +[GA_6] { reVC update } +Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf und dann HAU AB! -[GA_7] -Mach die Bombe mit der ~h~~k~~PED_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. +[GA_7] { reVC update } +Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. -[GA_6B] -Park die Karre, mach sie durch Drücken der ~h~~k~~PED_FIREWEAPON~~w~ scharf und dann HAU AB! +[GA_6B] { reVC update } +Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf und dann HAU AB! -[GA_7B] -Mach die Bombe mit der ~h~~k~~PED_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. +[GA_7B] { reVC update } +Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. [MOB_70A] Tommy, ich bin's, Colonel Cortez. Hören Sie, Sie sind doch ein Mann, der Dinge zu erledigen weiß. @@ -6133,20 +6133,20 @@ Drücke die ~h~~k~~VEHICLE_BRAKE~~w~, um zu bremsen, oder um zurückzusetzen, we [HELP8_A] Drücke die ~h~~k~~PED_SNIPER_ZOOM_IN~~w~, um an das Ziel heranzuzoomen und die ~x~/-Taste~w~,um herauszuzoomen. -[PBOAT_1] -Drücke die~h~ ~k~~PED_FIREWEAPON~~w~, um die Bordkanonen abzufeuern. +[PBOAT_1] { reVC update } +Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~~w~, um die Bordkanonen abzufeuern. -[SEG3_4] -~g~Um Bomben aufzunehmen, steuere den RC Raider einfach nahe an sie heran. Um eine abzuwerfen, drücke die ~o~|-Taste. +[SEG3_4] { reVC update } +~g~Um Bomben aufzunehmen, steuere den RC Raider einfach nahe an sie heran. Um eine abzuwerfen, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~-Taste. -[RCR1_3] -~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~PED_FIREWEAPON~~g~, um dein Auto zu sprengen. +[RCR1_3] { reVC update } +~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um dein Auto zu sprengen. -[HELP32] -Dann feuere mit der ~h~~k~~PED_FIREWEAPON~. +[HELP32] { reVC update } +Dann feuere mit der ~h~~k~~VEHICLE_FIREWEAPON~. -[HELP33] -Dann feuere mit der ~h~~k~~PED_FIREWEAPON~. +[HELP33] { reVC update } +Dann feuere mit der ~h~~k~~VEHICLE_FIREWEAPON~. [TTUTOR] Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~~w~, um Taxi-Missionen an- oder abzuschalten. @@ -10086,11 +10086,11 @@ Feuerwehr-Mission beendet. [F_STAR1:FIRETRK] ~g~Brennende Fahrzeuge in der Gegend von ~a~ gemeldet. Lösche den Brand. -[SPRAY_4:FIRETRK] -Benutze die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen. +[SPRAY_4:FIRETRK] { reVC update } +Benutze die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen. -[SPRAY_1:FIRETRK] -Benutze die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen. +[SPRAY_1:FIRETRK] { reVC update } +Benutze die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste, um die Wasserkanone abzufeuern und den ~h~~k~~VEHICLE_TURRETLEFT~~w~ und ~h~~k~~VEHICLE_TURRETRIGHT~~w~, um mit der Wasserkanone zu zielen. {=================================== MISSION TABLE GENERA1 ===================================} @@ -10392,11 +10392,11 @@ Diaz' Gesundheitszustand: [GEN3_45:GENERA3] Sie müssen bald hier sein. Wir sollten uns gute Beobachtungsposten suchen. -[GEN3_40:GENERA3] -Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~PED_FIREWEAPON~. +[GEN3_40:GENERA3] { reVC update } +Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~VEHICLE_FIREWEAPON~. -[GEN3_41:GENERA3] -Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~PED_FIREWEAPON~. +[GEN3_41:GENERA3] { reVC update } +Um auf einem ~h~Motorrad ~w~sitzend ~h~geradeaus zu feuern~w~, drücke die ~h~~k~~VEHICLE_FIREWEAPON~. [GEN3_46:GENERA3] Scheiße! @@ -10446,14 +10446,14 @@ Drücke die ~h~~k~~PED_FIREWEAPON~~w~-Taste, um das Sturmgewehr ~h~abzufeuern~w~ [GEN3_63:GENERA3] Auf~h~ Motorrãdern ~w~kann man nicht nur im Vorbeifahren seitlich auf Ziele schießen, man kann auch ~h~geradeaus feuern~w~. -[GEN3_64:GENERA3] -Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~o~|~w~-Taste. +[GEN3_64:GENERA3] { reVC update } +Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste. -[GEN3_65:GENERA3] -Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~x~/~w~-Taste. +[GEN3_65:GENERA3] { reVC update } +Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste. -[GEN3_66:GENERA3] -Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~R1~w~-Taste. +[GEN3_66:GENERA3] { reVC update } +Um auf einem Motorrad sitzend geradeaus zu feuern, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste. [GEN3_67:GENERA3] Du brauchst eine Maschinenpistole, um auf einem Motorrad sitzend geradeaus zu feuern. @@ -10853,8 +10853,8 @@ Lass ihre Boote in die Luft fliegen. [HAT2_12:HAIT2] Tja, danke für den Tee. -[HAT2_B3:HAIT2] -Um eine Bombe abzuwerfen, drück die ~h~~k~~PED_FIREWEAPON~~w~-Taste. ~h~~k~~VEHICLE_ENTER_EXIT~~w~-Taste zum Beenden. +[HAT2_B3:HAIT2] { reVC update } +Um eine Bombe abzuwerfen, drück die ~h~~k~~VEHICLE_FIREWEAPON~~w~-Taste. ~h~~k~~VEHICLE_ENTER_EXIT~~w~-Taste zum Beenden. {=================================== MISSION TABLE HAIT3 ===================================} @@ -13410,8 +13410,8 @@ Verbleibende Checkpoints: [RCH1_13:RCHELI1] ~r~Der ferngesteuerte Helikopter ist außer Reichweite! -[RCH1_8:RCHELI1] -~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~PED_FIREWEAPON~~g~, um deinen Heli zu sprengen. +[RCH1_8:RCHELI1] { reVC update } +~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um deinen Heli zu sprengen. {=================================== MISSION TABLE RCPLNE1 ===================================} @@ -13421,8 +13421,8 @@ Verbleibende Checkpoints: [RCPL1_5:RCPLNE1] ~g~Flieg durch die Checkpoints, die über Vice City verteilt sind. -[RCPL1_6:RCPLNE1] -~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~PED_FIREWEAPON~~g~, um dein Flugzeug zu sprengen. +[RCPL1_6:RCPLNE1] { reVC update } +~g~Wenn du diese Mission abbrechen willst, drücke die ~h~~k~~VEHICLE_FIREWEAPON~~g~, um dein Flugzeug zu sprengen. [RCPL1_8:RCPLNE1] ~g~Dein ferngesteuertes Flugzeug gerãt außer Reichweite! @@ -14212,11 +14212,11 @@ Drücke ~h~~k~~VEHICLE_LOOKLEFT~~w~, um den Helikopter im Uhrzeigersinn zu drehe [TEX3_32:SERG3] Du kannst ~h~nach hinten sehen~w~, indem du ~h~gleichzeitig ~k~~VEHICLE_LOOKLEFT~ und ~k~~VEHICLE_LOOKRIGHT~ drückst~w~. -[TEX3_4:SERG3] -~g~Um eine Bombe abzuwerfen, drücke die~h~ ~k~~PED_FIREWEAPON~~w~. +[TEX3_4:SERG3] { reVC update } +~g~Um eine Bombe abzuwerfen, drücke die~h~ ~k~~VEHICLE_FIREWEAPON~~w~. -[TEX3_29:SERG3] -Um eine Bombe abzuwerfen, drücke die~h~ ~k~~PED_FIREWEAPON~. +[TEX3_29:SERG3] { reVC update } +Um eine Bombe abzuwerfen, drücke die~h~ ~k~~VEHICLE_FIREWEAPON~. [TEX3_26:SERG3] Drücke die ~h~~k~~VEHICLE_BRAKE~~w~, um die Rotorgeschwindigkeit zu verringern, der Helikopter ~h~verliert dann an Höhe. diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index e1edd771..ac4b15e8 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -2455,8 +2455,8 @@ BENVENUTO A [TSCORE] GUADAGNI: ~1~$ -[PBOAT_2] -Premi il ~h~~k~~PED_FIREWEAPON~~w~ per sparare con i cannoni della barca. +[PBOAT_2] { reVC update } +Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca. [HJSTAT] Distanza: ~1~.~1~m Altezza: ~1~.~1~m Ribaltamenti: ~1~ Rotazioni: ~1~_ @@ -5788,17 +5788,17 @@ Le bombe per le macchine costano 1000$ [GA_5] La tua macchina ha già una bomba installata. -[GA_6] -Parcheggiala, attivala premendo il ~h~~k~~PED_FIREWEAPON~~w~ e DATTELA A GAMBE! +[GA_6] { reVC update } +Parcheggiala, attivala premendo il ~h~~k~~VEHICLE_FIREWEAPON~~w~ e DATTELA A GAMBE! -[GA_7] -Arma la bomba con il ~h~~k~~PED_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. +[GA_7] { reVC update } +Arma la bomba con il ~h~~k~~VEHICLE_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. -[GA_6B] -Parcheggiala, attivala premendo il ~h~~k~~PED_FIREWEAPON~~w~ e DATTELA A GAMBE! +[GA_6B] { reVC update } +Parcheggiala, attivala premendo il ~h~~k~~VEHICLE_FIREWEAPON~~w~ e DATTELA A GAMBE! -[GA_7B] -Arma la bomba con il ~h~~k~~PED_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. +[GA_7B] { reVC update } +Arma la bomba con il ~h~~k~~VEHICLE_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. [MOB_70A] Tommy, sono io, il Colonnello Cortez. Ascolta senor, credo tu sia una persona capace di risolvere i problemi. @@ -5965,20 +5965,20 @@ Premi il ~h~~k~~VEHICLE_BRAKE~~w~ per frenare o, se il veicolo è fermo, per ins [HELP8_A] Premi il ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ per zoomare col fucile e il ~x~tasto /~w~ per allargare il campo. -[PBOAT_1] -Premi il ~h~~k~~PED_FIREWEAPON~~w~ per sparare con i cannoni della barca. +[PBOAT_1] { reVC update } +Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca. -[SEG3_4] -~g~Puoi raccogliere una bomba avvicinando il Raider telecomandato. Per posizionare la bomba, premi il ~o~tasto |~g~. +[SEG3_4] { reVC update } +~g~Puoi raccogliere una bomba avvicinando il Raider telecomandato. Per posizionare la bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~. -[RCR1_3] -~g~Se desideri interrompere la missione, premi il ~h~~k~~PED_FIREWEAPON~~g~ per far esplodere la macchina. +[RCR1_3] { reVC update } +~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere la macchina. -[HELP32] -Poi spara con il ~h~~k~~PED_FIREWEAPON~~w~. +[HELP32] { reVC update } +Poi spara con il ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[HELP33] -Poi spara con il ~h~~k~~PED_FIREWEAPON~~w~. +[HELP33] { reVC update } +Poi spara con il ~h~~k~~VEHICLE_FIREWEAPON~~w~. [TTUTOR] Premi il ~h~~k~~TOGGLE_SUBMISSIONS~~w~ per attivare o disattivare le missioni Taxi. @@ -10200,11 +10200,11 @@ Missione Camion dei pompieri terminata. [F_STAR1:FIRETRK] ~g~Veicoli in fiamme presso l'area ~a~. Vai a spegnere l'incendio. -[SPRAY_4:FIRETRK] -Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare. +[SPRAY_4:FIRETRK] { reVC update } +Premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare. -[SPRAY_1:FIRETRK] -Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare. +[SPRAY_1:FIRETRK] { reVC update } +Premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sparare con il cannone ad acqua e la ~h~~k~~VEHICLE_TURRETLEFT~~w~ e ~h~~k~~VEHICLE_TURRETRIGHT~~w~ per mirare. {=================================== MISSION TABLE GENERA1 ===================================} @@ -10494,11 +10494,11 @@ Salute di Diaz: [GEN3_44:GENERA3] ~g~Vai con Lance all'appuntamento e proteggi Diaz. -[GEN3_40:GENERA3] -Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_40:GENERA3] { reVC update } +Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_41:GENERA3] -Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_41:GENERA3] { reVC update } +Per ~h~sparare davanti~w~ su una ~h~moto~w~ premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~. [GEN3_46:GENERA3] Meerda! @@ -10551,14 +10551,14 @@ Premi il tasto ~h~~k~~PED_FIREWEAPON~~w~ per ~h~sparare~w~ col fucile d'assalto. [GEN3_63:GENERA3] Oltre a permetterti di sparare in corsa, con le ~h~moto~w~ puoi anche ~h~sparare in avanti~w~. -[GEN3_64:GENERA3] -Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_64:GENERA3] { reVC update } +Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_65:GENERA3] -Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_65:GENERA3] { reVC update } +Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_66:GENERA3] -Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_66:GENERA3] { reVC update } +Per sparare in avanti quando sei su una moto, premi il tasto ~h~~k~~VEHICLE_FIREWEAPON~~w~. [GEN3_67:GENERA3] Hai bisogno di una mitragliatrice per poter sparare in avanti. @@ -10958,8 +10958,8 @@ Fai esplodere le barche e inchioda le loro bare. [HAT2_12:HAIT2] Beh, grazie per il tè. -[HAT2_B3:HAIT2] -Premi il ~h~~k~~PED_FIREWEAPON~~w~ per sganciare una bomba. Premi il ~h~~k~~VEHICLE_ENTER_EXIT~ "~w~ per annullare. +[HAT2_B3:HAIT2] { reVC update } +Premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~ per sganciare una bomba. Premi il ~h~~k~~VEHICLE_ENTER_EXIT~ "~w~ per annullare. {=================================== MISSION TABLE HAIT3 ===================================} @@ -13428,8 +13428,8 @@ Punti di controllo rimanenti: [RCH1_13:RCHELI1] ~r~L'elicottero radiocomandato è fuori portata! -[RCH1_8:RCHELI1] -~g~Se desideri interrompere la missione, premi il ~h~~k~~PED_FIREWEAPON~~g~ per far esplodere l'elicottero. +[RCH1_8:RCHELI1] { reVC update } +~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere l'elicottero. {=================================== MISSION TABLE RCPLNE1 ===================================} @@ -13439,8 +13439,8 @@ Punti di controllo rimanenti: [RCPL1_5:RCPLNE1] ~g~Vola attraverso i punti di controllo in Vice City. -[RCPL1_6:RCPLNE1] -~g~Se desideri interrompere la missione, premi il ~h~~k~~PED_FIREWEAPON~~g~ per far esplodere l'aereo. +[RCPL1_6:RCPLNE1] { reVC update } +~g~Se desideri interrompere la missione, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~ per far esplodere l'aereo. [RCPL1_8:RCPLNE1] ~g~L'aereo radiocomandato è quasi fuori portata! @@ -14221,11 +14221,11 @@ Premi il ~h~~k~~VEHICLE_LOOKLEFT~~w~ per ruotare l'elicottero in senso orario. [TEX3_32:SERG3] Puoi ~h~guardare indietro~w~ premendo ~h~simultaneamente ~k~~VEHICLE_LOOKLEFT~ e ~k~~VEHICLE_LOOKRIGHT~~w~. -[TEX3_4:SERG3] -~g~Per sganciare una bomba, premi il ~h~~k~~PED_FIREWEAPON~~g~. +[TEX3_4:SERG3] { reVC update } +~g~Per sganciare una bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~~g~. -[TEX3_29:SERG3] -Per sganciare una bomba, premi il ~h~~k~~PED_FIREWEAPON~~w~. +[TEX3_29:SERG3] { reVC update } +Per sganciare una bomba, premi il ~h~~k~~VEHICLE_FIREWEAPON~~w~. [TEX3_26:SERG3] Premi il ~h~~k~~VEHICLE_BRAKE~~w~ per ridurre la velocità del rotore dell'elicottero in modo da farlo abbassare. diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 6163a1fe..a23584a4 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -2407,8 +2407,8 @@ BIENVENIDO A [TSCORE] GANANCIAS: ~1~ $ -[PBOAT_2] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar los cañones del barco. +[PBOAT_2] { reVC update } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones del barco. [HJSTAT] Distancia: ~1~.~1~m Altura: ~1~.~1~m Vueltas: ~1~ Rotación: ~1~_ @@ -5627,17 +5627,17 @@ Las bombas de coche son 500 $ cada una. [GA_5] Tu coche ya está equipado con una bomba. -[GA_6] -¡Apárcalo, actívala pulsando ~h~~k~~PED_FIREWEAPON~~w~ y SAL PITANDO! +[GA_6] { reVC update } +¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO! -[GA_7] -¡Ãrmalo pulsando ~h~~k~~PED_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor. +[GA_7] { reVC update } +¡Ãrmalo pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor. -[GA_6B] -¡Apárcalo, actívala pulsando ~h~~k~~PED_FIREWEAPON~~w~ y SAL PITANDO! +[GA_6B] { reVC update } +¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO! -[GA_7B] -¡Ãrmalo pulsando ~h~~k~~PED_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor. +[GA_7B] { reVC update } +¡Ãrmalo pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. La bomba explotará cuando se arranque el motor. [MOB_70A] Tommy, soy yo, el coronel Cortez. Mira, me parece que eres la clase de hombre que lleva a cabo los trabajos. Así que ayúdame, por favor. @@ -5792,20 +5792,20 @@ Pulsa ~h~~k~~VEHICLE_BRAKE~~w~ para frenar o para dar marcha atrás si el vehíc [HELP8_A] Pulsa ~h~~k~~PED_SNIPER_ZOOM_IN~~w~ para hacer zoom con el rifle y ~h~~k~~PED_SNIPER_ZOOM_OUT~~w~ para alejar la vista. -[PBOAT_1] -Pulsa ~h~ ~k~~PED_FIREWEAPON~~w~ para disparar los cañones del barco. +[PBOAT_1] { reVC update } +Pulsa ~h~ ~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones del barco. -[SEG3_4] -~g~Puedes recoger bombas simplemente pilotando tu Helicóptero RC cerca de cada una de ellas, para soltar una bomba pulsa ~h~~k~~PED_FIREWEAPON~~g~. +[SEG3_4] { reVC update } +~g~Puedes recoger bombas simplemente pilotando tu Helicóptero RC cerca de cada una de ellas, para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~. -[RCR1_3] -~g~Si quieres abandonar esta misión, pulsa ~h~~k~~PED_FIREWEAPON~~g~ para detonar tu coche RC. +[RCR1_3] { reVC update } +~g~Si quieres abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu coche RC. -[HELP32] -A continuación dispara pulsando ~h~~k~~PED_FIREWEAPON~. +[HELP32] { reVC update } +A continuación dispara pulsando ~h~~k~~VEHICLE_FIREWEAPON~. -[HELP33] -A continuación dispara pulsando ~h~~k~~PED_FIREWEAPON~. +[HELP33] { reVC update } +A continuación dispara pulsando ~h~~k~~VEHICLE_FIREWEAPON~. [TTUTOR] Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para comenzar o cancelar las misiones de taxista. @@ -9938,11 +9938,11 @@ Misión de bombero terminada. [F_STAR1:FIRETRK] ~g~Se ha informado de que hay vehículos ardiendo en la ~a~ zona. Ve y apaga el fuego. -[SPRAY_4:FIRETRK] -Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él. +[SPRAY_4:FIRETRK] { reVC update } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él. -[SPRAY_1:FIRETRK] -Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él. +[SPRAY_1:FIRETRK] { reVC update } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para disparar el cañón de agua y ~h~~k~~VEHICLE_TURRETLEFT~~w~ o ~h~~k~~VEHICLE_TURRETRIGHT~~w~ para apuntar con él. {=================================== MISSION TABLE GENERA1 ===================================} @@ -10238,11 +10238,11 @@ Salud de Díaz: [GEN3_45:GENERA3] Estarán aquí en cualquier minuto, mejor será que vayamos tomando posiciones estratégicas. -[GEN3_40:GENERA3] -Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_40:GENERA3] { reVC update } +Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_41:GENERA3] -Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_41:GENERA3] { reVC update } +Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~. [GEN3_46:GENERA3] ¡Mierda! @@ -10295,14 +10295,14 @@ Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~disparar~w~ un rifle de asalto. [GEN3_63:GENERA3] Además de realizar maniobras de acercamiento,~h~ las motos ~w~te permiten ~h~disparar hacia adelante~w~. -[GEN3_64:GENERA3] -Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_64:GENERA3] { reVC update } +Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_65:GENERA3] -Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_65:GENERA3] { reVC update } +Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[GEN3_66:GENERA3] -Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~PED_FIREWEAPON~~w~. +[GEN3_66:GENERA3] { reVC update } +Para ~h~disparar hacia el frente ~w~sobre una ~h~moto ~w~pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~. [GEN3_67:GENERA3] Para disparar hacia el frente en una moto deberás tener un subfusil. @@ -10702,8 +10702,8 @@ Vuela los barcos y conviértelos en madera de ataúd. [HAT2_12:HAIT2] Muchas gracias por el té. -[HAT2_B3:HAIT2] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para soltar una bomba. Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para cancelar. +[HAT2_B3:HAIT2] { reVC update } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para soltar una bomba. Pulsa ~h~~k~~VEHICLE_ENTER_EXIT~~w~ para cancelar. {=================================== MISSION TABLE HAIT3 ===================================} @@ -13232,8 +13232,8 @@ Puntos de control: [RCH1_13:RCHELI1] ~r~¡El helicóptero RC se ha salido de su radio de alcance! -[RCH1_8:RCHELI1] -~g~Si deseas abandonar esta misión, pulsa ~h~~k~~PED_FIREWEAPON~~g~ para detonar tu helicóptero RC. +[RCH1_8:RCHELI1] { reVC update } +~g~Si deseas abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu helicóptero RC. {=================================== MISSION TABLE RCPLNE1 ===================================} @@ -13243,8 +13243,8 @@ Puntos de control: [RCPL1_5:RCPLNE1] ~g~Vuela a través de los puntos de control dispersados por Vice City. -[RCPL1_6:RCPLNE1] -~g~Si deseas abandonar esta misión, pulsa ~h~~k~~PED_FIREWEAPON~~g~ para detonar tu avión RC. +[RCPL1_6:RCPLNE1] { reVC update } +~g~Si deseas abandonar esta misión, pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~ para detonar tu avión RC. [RCPL1_8:RCPLNE1] ~g~¡Tu avión RC está saliendo fuera del alcance! @@ -13857,8 +13857,8 @@ salvar la remodelación de una zona tan importante de la ciudad? [TEX3_3:SERG3] ~g~Para recoger una bomba, dirige el helicóptero RC hasta a ella. Solo puedes llevar las bombas de una en una. -[TEX3_4:SERG3] -~g~Para soltar una bomba pulsa ~h~~k~~PED_FIREWEAPON~~g~. +[TEX3_4:SERG3] { reVC update } +~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~. [TEX3_5:SERG3] ~g~Si fallas al colocar una bomba podrás recogerla e intentarlo de nuevo. @@ -13908,8 +13908,8 @@ Pulsa ~h~~k~~VEHICLE_LOOKLEFT~ ~w~para girar el helicóptero en sentido de las a [TEX3_32:SERG3] Puedes ~h~mirar atrás~w~ si ~h~pulsas simultáneamente ~k~~VEHICLE_LOOKLEFT~ y ~k~~VEHICLE_LOOKRIGHT~~w~. -[TEX3_29:SERG3] -~g~Para soltar una bomba pulsa ~h~~k~~PED_FIREWEAPON~~g~. +[TEX3_29:SERG3] { reVC update } +~g~Para soltar una bomba pulsa ~h~~k~~VEHICLE_FIREWEAPON~~g~. [TEX3_26:SERG3] Pulsa ~h~~k~~VEHICLE_BRAKE~~w~ para disminuir la velocidad del rotor y ~h~descender~w~. From 46e229c069496d8b97557b5706c2667c8a3a5e02 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 11 Feb 2021 21:36:55 +0100 Subject: [PATCH 072/113] use better quality button textures, add generic.txd --- gamefiles/models/generic.txd | Bin 0 -> 1168376 bytes gamefiles/models/ps3btns.txd | Bin 126760 -> 528424 bytes gamefiles/models/x360btns.txd | Bin 126760 -> 528424 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gamefiles/models/generic.txd diff --git a/gamefiles/models/generic.txd b/gamefiles/models/generic.txd new file mode 100644 index 0000000000000000000000000000000000000000..885cba1512a5ee3770579cb6ed78392e91540a8e GIT binary patch literal 1168376 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�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�WFnzymIPt{i~g&o!q^UQdG^7)zQf3HLKL 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 zΞ}%k64be>;-xKAyfQnrXMrLGpajek>rrNN+Pc%?F5M)`v0#WRoAQ`m zGkr44C6CHLdbY%%ssA_srcz%wD-SimeoRKeT_N{3Ys0(bBjMFuDb#~e@_2eMAJ-Rr z;Yr&fyw~bp=mG#V`>8lkB>F7f3snGork+m=_EXerb$hFfCvThj{{QKF>cI2Bp;ism z43zQeE8DLyZE4GzM?F7Y-#(spY#yePmKATdRJXO)$^7@8tfl|$v*+Ky;YNIPTFN7z z9Y4{olkG*-FbDRz!k|(Zk+lu;sn<@cWAVZ z>!4EfxTtrxI?dJyfAZR|JxE92C3Py+8JxQmAO-HbAc*)iFxH!O2OyQjCaFk*{1LZ> zD$`^>Vt^Ab&nv^5l=xg1zdipoDG2sg1Qiab0em~TodYJJSJ};cn=||>unQp`h=_zW5gx^yk zj!*=9=r>3Fa;S1K?Kx>7{K{heImuT;etZRXd>vqs{y<@ykMa@(4g3}6oxNcd`P;rz zt0iu?Avkj`?cnHi?HuZ1POtZ{UimCXA~WvNE?mJ*^b`0>E%Z=?P>=gspYnMQ&S8j? zT~S+}PrH!vBs=;1Xya#>d4AGk`qO31XTMQ4Ozz*V0)L1nrM&gBUG~(*Q7+lOqnXrK z`K{aQX;-GUXAju! z)mMz!levFaB}l`7veP7Z5sJXPjR}K zF4FG|RtXorDzRKL*Ka&;S*$OJmmGL*%C_Ns4$3DBn#uGFX~~YxluI8$gg;!Q?=Ix2 zDX*&!x^H2=mlPe!RAC;VVY{Ca6dL9?gjIxt-ipvJiYS@C)b~>Ge1$MYX(xYn|K*>V zSE%e$I8O22Pdc_6dq+E%a(=DHpx2pC+IatuvR(eW>JQYXAtG>^bkAn1-+(=@_*#lE zp#6$Sb2iQ~(646FQu24}+_15v?;T+0`o6+gRE{_h>t}2bECvwx`f?n<*WRRmYz6aaCI zaC$Dsp-`%I+?Pv|LC5(a4p;3w|JAla0f11n^8}p-@&R7rhi{%>+*9Jpyu^Bu$C^v1 zzY){V7`qpqH?7#);3XZ4%ME{d-n8HM6n+EuWM@{?MnZo6=F-8eubw=k7wtyj7V-WB z^R2bh9oBOj?C^W%Evt@%AddVHafJrwW$^pLdy~nxU@Sm1}JG?$A7Q5$MTLH zJHEzo@A*Pp{6b#6dT`v=zV1*7x$8aQO6-?0->2q5u2`Q9w;o^~SkiZdr!wuc3-%2; zroF3_?d1I7TklXm4)d@K>g{&6UB&YE!_x-v`H)ci8Pe%mUv-Yph5l(8_7moi;Jp{E zIHN=!erfB7h@Z&Me}#^i$6NHjSOSk^y9!rhpM~+6ol2&Xv={V!dga%dcIr)&&i6!% z^!nC0D(>4_?z9=0Rt5BG${|Ur;JJgTwLM@!-h|~y(};b=wN*1!luLU{D^l#kDn2nX zbvExpT))}mewrmPf9;dGNI%r4AA9I#evkJ!=IbJTrFN#9el#J$t)-s#N|}PJ?_c*C zSnic{s`Hj*_}-QPdpZBr@*M|2=e#8l2q5)Yw$4380uEADz55$7+`|DLrfle`nioS`fESGM;`CPQoS*-d$GPU@H_p&3I{G`@qA=mdyDErJ-(+QNjA1WS$Rj6 zr+!J5EZj2^Kuf4rPkKRaE;++itM@S}o^nd>&5fnK4TCp;9*}T!CrX(Q$|MjPM z(JC78ZI7UiK>`SG$>=hpM!e;gVx}z!PxW}Z%-E7)43>(vWHiJbJla2MONJCvF}BC7 zkd+VOGMlo(S+93kzd>DQ430Y9vfkWfhBN&463>P$8E0c^T8D_NpLKfKGv>4Iol#s^ z(Pf6VR^gWWG1!F*D?BlCGW=#KX7K_+47W|+IBoWm)@t{(1s7Hrm6CJl>;TT)oHn+b znIEoVdIS2txMJFZRkPRr@JQbfH_sxKhpg=~W6qo_Ljo)QH@w7C6vTS7BUP#Z(k0QS zq%9e5Zj_Wl`kSDi)#7ze-`I8blWMzV`o^KN*Jah;WBtFE+ASHjS6|j%Sn=zdK^ua? zSx>SrOyzji8wLCHjTctj==#b(xBo5k)~k9lo}fWau3V!;jYK8<+nvI_QG_Yip8CJ9YZTUVB7*);)lHf>t+ml=H%h z%vEjfzzWcjwC3p>NA0n}(7(3YO8P1UyRBsU#`e4Ij^%9U!FL#tuWLUck-xMG;a0Cb z(>D%sWaIeSdYdzQlBcMsh|g0Lo}Im%k5&w+x+rMTPlZNG!t=E_Z%6y-8hQxiou)r+Mgq-D>Qr6eL939PRu zB~qN>^r>jpTYa)yC#HKM1>uM_uSDa~>V8B$g`m~)d6qso`IS9?i84A)ryS08g?H!> zGAyqIa(U80AU#3U+EzI~nBBd5_s)4G(-u@!o%kc^q<9ji=9To?v+_#x-yauBF@i!7 z^tf=^0>vAi-~U^fGih0xZpkX>Ex5AvNnXj842M*@DzBt8!{KjV_t?55Lr{CK(0&Y3 z-JHCV%?rZsx7VyHITzQ(Thhw|Z<{Z;!Q7Ov63D?!t<$Ga97&`&%-mEr83LjQngP-d9bV zePM;Oz#;WmJ8i+lx|%xHi}3q(J=Xr?&G2B4hyFtwZjk3$eQW!=i=gXrM^r!3Ph0Tg z^|~wcA3wGQ5-zS-yr3;`eIETnRrSPUTQWQ`iVYT{>|e6J4zRxve|)ASftv)se5w{Lg2lOCbJmiU^GuCupfq%KU) zp+A+1jHk)Zobd0oOy3$g@ehymo)`gJ(*_VeLSv*@RjBwN_x1^@eIaEIVvwi7zW_9DM-e2-YBBXop+>N2B3Y@SE@&crbI zvxYde<7f%wGeg`teqt%cAAb8Gv?Il2`*5`>X7K{2E8IP8cFv?w-`uuo3(}&5hHz=x z?6XOyA|j5!i^T}Z73eJ|N*U_V4V~=@4-U$a*M-znw~GCn{SB>5RjSe(q$_FWCCGd= z2X0K8off0;Rc3J=(dwezU1q;DV!y}RAjP1cA3lP2pAuEyGEaLp=A{uG8mpd2F@r~_ zBLk?PHc6?jdeUX~;1RI1c{wptqIwt{^*NKA6n{z1q$yECho^N@qNJEaon7cMV@gzL zWsUwU=xN?KvuE0ZDN)bbwV*qAgh8rV-4*MXs=EEglu54ekT*>y(ouYwfl6+54P*PMwccFl){=KgOJMJY$SG=3H~H zBb+J!+8_MflOKKikG`vGWq(Be7ytd=|K6_?>pbYUzx$uR{g;0DhyUU4EB>SZ_Fw-2 z^?&#aKmGf}Iv@MauPgt5{lEY8)wh1}?|tXXzx*FR{*Ukc=-dDIcfaw6Kl=9n{*|Zy z>g!)JjxT@adtVU$o$vpK;(z_C|3w?(zbX1Z{P};WcIyADKmN^c>G`XtU-R>Cefj%; zO#Z+9@+&`o?^nP6)sMdYt?&NzAOFUe-&BA9{D1z9ul~<>{@~kx_7{HYbHOApMC$I{@~@`{YSs^kH7z0f9)4f_CbdK@r^IEGsgcg{T-E$AGa6|JT^Y; z$)ALx~{ zJor;T^Apd7{nHKq$0`4R`p^HFmmB_%6MJ<2Cx7mzUv2n5Ui^RRul|KMU;l|e`E0ZQ zk5dMO|Al;j7aRVM7k{k*_yC*#f5&+sJB^=yR$pEE|5oAkhX37{f7WRQ_G@R;Rbl_` zGvL3SH(U+FXIiWA*UyPR`v2yfG%ulr{kpEd`B=}ao@%YW5dY4$20-s;zWYsRo=v6> z(Hi#aTKJDMtH)?Vo(QjZn*Z7SHPL$`{NEnJ?3`u8eqC99)&9jev$_>|J?GrdK}&eO zMQ6`J3mW3(YvKQ%^f`3%(75nlgx__1%_rC@=p5?jA(w%@*6R#T0FpBe>@jX;4$bu|H*Iu?0Y@e+M+(563)aM z)~>grccuM{+CBSozxG!c-;K%VndW(;>ymhgzJ5dw&M{u_hMx55t?>V-=d#bT2duSM z!fQS@`T>9CU&(Jn?={Xxt^4p)e6+rbAFSEe*3IB=nG*i20l`jvyb@+*50ZbCSai|- zlC4u{U^CEtY``h)9%5bb;Kk5a)_|*EGts}$3r*o&I;OnW=fEG_MCZzDmfF6SEM7@= z9-0imOY!1^0=BxaI&z**(Dz;!{Gk>6rKd$xI`>9pllr~wv1w=u!z=l$8sAfm4WIwo zw(i*R-t~IIgflzV>@}OXc0Ps=hJ7y^Aih3_))M|d|C_%?Ki9&a^$OirTvGnfSWr4}+<~vxPZ55icjYG{;|9;iKWhJ^_C{@6lhNyXf;m zTkSt+yx9I%$F@s7=5SxueU0_$z~aX36nqt5J`%*=y>$`!picPMVxOOAoFyCZSTgYe zSt4i;@J{ugC?EXaiPn|z*VwT8_>@;#`!ycg@6E5xXHo7xS2?_7yh}QH<}rceyTACo zUj{Sd)#)D^gJcGt7N&FjB@65;!2g->XTQB9N0;(l?KrD3_Uezdzhv$hnrefM!xyQw zs?YJRrUyUqn>b6mF<*vlTgJVXl~YAoy*uhRFWvU#ZQBgJ7Vl<$Vl&fK{J6yaIpamp;Q=jfp!wJ+FATfd4DTr}_!tkNtfG{*tXV{Ou$3@sI|) z5#B2X|FZq$i{9e61|94s<*WRh_jic*^SbALW~}gE{CkHytkBO|VEvluYT>fdw#uO| zjNYnV=?;1HKk`%8_zS;99Rh!ix8zXkz2y`9)dpH0piBEh_z$_5;G}l=64)N}-@31Q z=?j~QuB^!uXWK7M;SXaVT*kW_EN4!y4QIGP+eqqj{kGDzYzYm1v5I>Gi=L5hBdBN%J*+c6x;7p zTzIP-n^0q%(e&?-j^GJv4*hahfwk~+V;`IQR6Kl#zJP`134a#HrtxDVKPa5~F59{a zpF8jLoU@?9O0@9{IUAmjA^79tqeJ%ngFmvs*chW^9;bNyWnE$hB*0Apet*@dT{Ka?HPp{KzUot>ibnt1w-}J&?(Y0@% z=h0W$1Nv34->10bbhNAIv>({7+RD_^JYEdi$JmLQYuevtJeL7<9-;N#Hqva8Guyue#!UIU=dv+&)ssbHFQUFG=d#va^BiWD_i%#fT-KF-QBab-=3-l*z0q@*OXOU;| z8=Lu@e0T`onWM&A_F_JE;q?;y)wcX9>Oc>?3DD59&jmzt&rSw^`W8L!(doP64;_3N z^;P(5oakUZkA7b=SH`R|pZAC+W2o^l7CqM)Q07Fw!k$c|oLIEc58rnk{Y>Pi*S%|L zjhFMGk^wN&d`lmdevS-?_u$2T>ZQ{7%@bMa^P)ZY6G*o*d;qTj^eGzFf6>q0yZF}d z2bZ0`>fYB1{?%UnP0nt>L+x#cC{r4HV;iEf$Q^RQc>GQw<5hk7W^F0En6kv8VeFwx z{p8=LSmU-{#tsM@e6o(4@3w#$x(!by1FQ$w%d)eXv+|Is4+_}n!iIA3$(WQhY zU#Ta(w*6Oquhqe<oKUN5@OzBl-PNWFnG_=OI(%5pyAL&+y& zRDiyHliqfe&FkLj=it(0pkvGZYV1Hi!->t?J0nnCB2 zdbIQUz_=7@{0&>n)~H9Hef)PC>o$kUI5iiau@6j)3w)$LW#TU~z`0P_2jz3`X|iU( z3+kc&$W!o1zbeZ+;m82=qO**t@W+k>H+ZeK_Wi)0aW?$HgR=_!FJuf%u|39x{7y&D zmKoLcy05ynL8{|50{XO3!1vk1U-hzw*pvUv^FGGngJl5hh8)0uctqfxC}-~P!67_U zK7Jt>*7~P%<3DJWp9N2#H}Zo&dfC?->WRl zPu+nVHiEqx@9M1o4PV~5@LdSoQt>wLqfA%NYJo8(7FMf9=zLY5}Ax_Y_`ZpbbU|qc3AN^q+SW z_#ehxG5htd``9MVFrxeQu0S-S$M_BQ6_w|8o&Gz%V_vm}P=ASM4=ryl1IU7SWW7-A zedE9n3`+-PFNE{y#@`Q(BB@GrgY(_Z=W zclYQl>w9F#a;9f&hUthNx{v%KpL=KB%4fZw>>ayoJOs=&pS8P!@O1ZEPVry-foJxY z;J5Je*%3H`m120w-r4sxz$h52EqA!k&EQ<;M9MF_!dM0-g}?h%|IiBlq@l0=jHzOD zcXEa!TCZpu{Pm2lfM3TPxMLPywtPrvFa~f{jQo_|D?K?UcnH{M4&bBtO>Ae%#Pgkh zG?fA4j1G33M|!UR;Dj7`4>9Oke!x-r<*yH(Ti=v#9R)*hhjz!GwqUAY{~t_6yY}LG zzM$<0*m~;9yAO4v{C-velUDGW4w0maHIPS%^!W)lL5{7nfUIz z((q{T6aUX=c;K=i1I|mn>ar(5NB7nMa25{b8>o))57zWYox*>t1{Ozj=J7emJLcU>vRd7~G*@ z`$nwx&(waYuS2wK?`c2pTX|jwzyyBi*)h1FM{^mN=Yf^#;8&M?DP3nlqUU_ZEgbL{ z>~ktT>4*LaqhI#n?Dw$etl{8q-;9_s5}=ha!vpr)=8?Yy&4Y8gxf3G(@Lx(;`8rx9# zk2Ynqz(w_*D@1+@E9OJKXmK8fP4ON_^S58Da@w37YsRz|7^`^acN}2X0%O8<=FUPN z7g$pcRwV-s8t0tI zm1T`SZ#ytPjUn$^jg7|I<$yG{!RII%Yv#tB7<=jKm^(5v!5UtXM<5;Efoqq8q{SzA zY8g-;xf@)V&~NC(7O&y2de|v2XRO};)3%QX{6&*IblX8`_MhGZSpW5#VwF|D&|ti( zH_?5@3(hLX*TN1sz~{_KG4IT{2L-)Jd&+J*Fb8-*U`|QHQ}{A?Q)xZ>U7E&jyP@{A zW{8`_66?I;Pw~^Z5t!Oxw>LYaTn> z&043x{1V^~d^!}wlagcAt2L6g3ABfI1b7Lq!F*sGS+JgJOz4i+NR7p3v+!GVtcM=Y zZf!2y88iI_E5+D!d}sQ#4rdIsPhIkO9&^UWyI8_Lbdg!L&6toI;uCA1dBWTY@F#LGc$Puf2LAA~J;O_UWcDc7Y2)egogCmRa2{A^ zE2=w@0qTl(&I9)Zcu&Z)+969mqeD*g>~jm+2NUXd{E>&?l$ic|nmVCDTlHaC3oXxA z`RQXGQ%^KFKVaRoe2Sj;8B07RPc*o9U^!NsiI2P1=5yt1UdVv=yy1o8!S}(t3&qBn z=aILQlkprZz#0tT+u&XCcCP=FgFpF7vsT-mBwu}SPJ#We_MtcGTc(0_V){-xVI)m;_u*>m^M$p#cO_r*!M_LN38tMN zq?vz0>V|LqS@iZ~fO7DQz6ZX)IU@@HD~6vvP-iX& zX-7VFBLl&Te0UlBlTVyH>ZG00_=V_ytr$s&GdrzSJoj*D1jIx>^ z@)8;Y^9#j!7mN>YUmxs63!l!<1N%?1x!coxmUaCA#(g}#qcN+yDg)qaz6|+D8a@+( zzhm(>*bsv+*b##DQXaU%e`H|L^V&pTgx;QX`k+k$^%zgl8DmjCcHF*U>Ui8L=edW> zL4EL!VrMTjZ;h+$zRK_+d54J{@IJ&gpKHoc zoY1(;d8PT9=RKc1ctIX9*e0IKK%UtPz@pU{k-Ev_ zIb$ZB{KTSxKUDY5+-%?zIZ)X9iQ=|^TAtv<6FJavwsf)b^}-Zk;(ZI?TpF5Huz_3 zl)1lA&NJgux$k^Ho9AFgdD;?-9=Q6BgZtTy#b-Avd#?UDKWC1dGuGW$XfjsudF?Fl zv)TDI?31r~@m_#;AA5UM%@Z4Eed>Igr&A}qraZhQhTrfD{?HFNg1^!ZYUgi{B`@@q z|AF?69s0-sdBoJ~*ru(@SgT*=IrY*HZ56BoDr2wfIV;b4uD0A&=Nl8y_j~j~ z!*^knhIf;7H2l2}vG~9@6u5_rp4K}##t!e8Yj_f#5rg~uxz`(fbsccgv)`4dAKQE6 zfP9`6_wP}-P5LFK9`)U?WCARq&$Grn!5>-iIEL(~obzSB--S--MurAW{5|dhep*B1 zBY~^R%^&(#9m@xG6=>sm-3OcxjZyQkUo&K2BFpe@@XhBT@M|p~6Yzu>d=kuK`Br-7 zcj5iF#&q9RH4S+R`qx60cz|n&rod7QTt)!?bp1 zW!OaIseHo|_lP+b0b$KM$3bjX;iU11dbz?k1{ z5raDc{_?DVoypo-_*0(tU`HD4JO0#({5g$2kHB-6jo_d1F>c;J+Wsj&-zM0NVPMbL z=tJ|W_u&r#f99Zhc^!xhh_@3vpz__`NPA?>A0Pdo34_3=XKmG z_t_hD!H9OoXy6&SB2GSOu%S&t@Z~x96DL2kX{T{||1LV*3-P&*>q+KSUT0EDdmnI5 za6f5Z5}OA$N@EAQ46yI@`G{h$M_0}B;M3z^04~S?amwLquqOr+0{yBk?_A6GgbwXG zW^bcg4nGBr7>si|ySsOHF z&NPtgqsJybdEEmS=>a%fFUEM;Bi9)jJQ;kc^SbeDeuwXKyiy095B}gon(?ZBeC@)` zZ5H%Dw5xo`Wbh`=IFhDrg8D<|kaNzy{JUn$hxA;}*tt3jA+5TTeG+^jPr+-);M0xZ zc`9wjrMdgJ+u~E#<@xyhdlTwtj{O@gUZ0i6eE@s{&r^J~48SM#f$rfK+h%vZDzA92 zI;mSWgZ4wtTn~BBc+GFHik=eFKF^^=-=lxaiOUE6^c}o|f8yB~y*Cj}-}@dkz~1*C zTHPg|k9Q}}HHIbZKg(};7G%WtQp9KGWiV zvNuLfYR{}^&QRbN@6AeQ;eRk74sP(2XJYtGo5(@(i3!1!wy7UF>eKkEU(PP81=h3{l2Ws6|;+M*~2V@(02rt!puKw|Hc{f&eSI@o^ zeW>lRWsFtyz|Y^@8yMnOah~JfJkYo1b5P#khw6Dhq_)N%9%vlgxu4v9fybH`>!h*a znSSB9+7z#$L!g{EWvQ3^Die-r)A6Sto~vH^NPHOo8js~l>lwIcEbyepOdfL`c=3LG z5hK-mrg8I5tK_9&<$D*!WRBv3-{KsjA7u++{|m_L3}_4ybh`yS++l*7=NnlGkw5c@(6RhLX&*sKQNor zQy%rmOFhlOeKfg0b$ zzY@-V&%xOjLC>tMtfRh95?)^=*0_*8)_2}jL6cMNCLwf<6PvrxD+Ce*Qd0q<84EDsvRWy1Z zgVyBU;h@F41E2Nlne~6sm(w`d6XQQa_XR;|f15g3_gMHuAJMlpY!2#q!;ik$ucPbu zaE#f%F>bgVq$NyVX#76&7`$TtwJ7J}L*9KD6V@_nXuHDzU~H`;M-IJLC5I%B#?$jpo6+hi_nhA-(z`!|mQXV?Ql!cL~x>wb~f7Rm|mdnuUy&_}i3$;0e9G>E~Ada)Ow>AZ$N z`Jp$*pEBqWM!mZ8=<)2)s)@XE& zeFt`VZ(Ij3pU@UPa6`|rMff%^nA5C1*jazg=N&G4I!;^Bsdwv|H~3A~NztZ`?P#zH zHjal4NSW$Re+mBB9pt0!#PCUamaLO6t=_bxW6dPN2@1k7N3_ z3?qYM9MmPveEN7vi>~b(ICsoD?&@RFN1D@Gd1h^&*qW7k6B~X5bVbdi5%UcG zr00P)6a2w_^vU=`M>Hm9yYN?emg!(m+;JCO?~&B^WbFh`(Y@3c7k&5@*|}+aFQf0X zDaJGcvcURZ=RM&gJWUuf!2S=MEki1^KM>xEAGMEE+V{iNj(MB^!5x~`P2r+6G%YLX zE9KBl+oXB!dE~o)Vco|)$9}Y*tX0f|xzjF~2lvD(%bnlS-+_B<<=#4iOpU<#9R6H< zh2-Cbn0LFZ|Lg&nOJPmA^RlOnjrI(}fc0YMHwwprN#uk1;X7k9@G~p}#(d~y@FxbF zdH=~DbX{j)=)Od|^2n$De4Jyft|vO2)ph;l43G2p3HA+l>|XpI>e`1^9{x0I8*)+d z-Y_?|>JOc_eI-3FzhlqOG#BvP`EBAY{M7g>gtx@WSN*aX!AW`G08I&+z7Y-`bUrp!T*AZH$qN zJv|m}pNnQJ8tbZz+%XwoF4#EM1^ltP2NOQSOL&klcw5iC9z14#s&k<RD0__d{g`S_J^?v{sa5q z8JnQ`g>llvN%#7}&R8}4RX2VqdRgD8j-BuA+;)dO{!Q#R*n|5TmdFVEVr+!{=TZMI z`1*VH=^8S~+KIowdX6kiaL}A%bMbZJ&she*fHrFD?>5CY#{LIy%hHgEU`ssjtCzXW zkU8iE&ylY0gDc-_efD;ggOh@7d+Mt%>{R8coONJwP7oea7rL~K4LMXl?H)kPIsvBG zxRL{K6hBz!?Mn)Ma@*Em8kxv5aqpw&CoS5hH86A<`pUO&u6|1I zg+F^1>$B)`&X;pB+HwAseduJ}m}92C>l}oB38TMr>fBwY#U6t7;gbyPu<)6Y_~HGb z_{#4)*&BcdzI5FwR=R9Fcm{uH2H#FUdGi=L1lof|@K>JwJjJX%oPXOci{^9HtM{Pp z_mdn={KbJiHo#|S& zgz~Z#8GnyQ|Ik`pGae%T!>*SNFpdKgumQ7RqcYo7@vUq?$GhVz-cM+nu4tuB#p(kb z(#Kd^yziXzo3W~1uxB67Ue51GMtjyP-nZhz)Ojd0*Ft1q(0XWo-%++eJj5TUwOYLJ z*??lN?~#Fl8EdTZhv&gD_(mQ=FV88be$g9p7W_y2R=D@G9?t=s)t|8kThV8KgH8AO zSEoUG4e#Wu4mOT66YT!l{@^J7&E@nyK8u&^6C(qpv6;GUf8+sMLLJ%=8ZKq~RgUgYbWUTy=EtuOjk4{b2knH|t?|s7 z0N$Ma?Aeuhe~LE*lLt+(PWg!K!;f)KY{@lv@~G&DcXcixJiI0==JzAE@!%VM zPMSD4bbOEla3WAnS!9580yw5_$21tHztm4(p-H~lt-jmYu%E80m+%Ao+hxGt`xh3x zf2nhUjy>sM+_51|zHw9?a0>p!Joh?jiwvYq$3Er6X{);UEu0fPDm}gF`AP;}1v~K< zzZqZ5d&A=WumxZg{S8K7m=HR_KkEn2DT4-WM;qkKzGwPM*@#&y@aufubJM(d;PhAb zLC65O2Ag1O3>x-eNWI7a7zS5j+7r+5PrmBoys?mpBEmhV}9UR z-Gq(9-t*3QaZfz3@cRJp3x>qt7Yu`c;*NjPV2Rxy{vYp~xSM19t(ZGrzS{)$3jG{v z^XG4NedE2k&&(BLQzv_6Fba0Tk9dxMaF)!JJwP6kPyMu){NStOvvH5jvFg48cRgnv zh+nsQcVpA{v-&;0KOz3}9+-Qe4#Fho?i2s5;}6CiYtjjnQ8zL)^xx;WVBh*F+=m?0 zU9Ju1v*LVc9pP@R->-vLY<`cyGS6KGfVgdtik8E{=O5IqTnWKY%-WAq@Eb!H4_~ zo;!A6BmSa;_PG>u@5dM^-{&lp2{(UtOL-*&k%h$Ioq(*626tpkY5V=kXK#UBnV;c+ zpYg^f47_>w2i}&;4eQf=0`bi2yKqM5^Nkb#b`D&GUEagkM-VQ#^8-fSmkTf63DtMk zkO4xlPCVoQoBkHugT4CR`F@fC^1xH$^7pmW##j%Wt=po_IYjP&ZF+rJuUCCL@sz)h z;@`>U`v=GXxGSKCd;T_g*aQW>MP*$@FTsm^u#UbHckCk<%FlPK+?U#MzE^j$EKkFZ zBMaay`g{9O^}9N^t!$k);w67a#@~yLttSR|<#YCC{afOp%6tbGtkG4`Dm$%b-_17e zW6uuekpW_!DX0CAGpE%SyYNbZ`(9bIH+;`5-B>|LiaSM&a)^!#)gIvkZ|hx#FG)zwLM{T9fmp^u5LFI(->$ z#9O|3R5~x*gL&@5T)K`*fB9CKeLwJ8!byF+>X=9O(Rtei;ZI)h7ai{_g}dM3DE8lz zUziW$yL5~T?H;`i5#RatP5xdFYcKEbPTC8L24?}W)!6;jy_xX!Z$rR2xD#Xh$%D=u zf0glm5&sT5!2X@z7?tlQIpIu*kZ<5@Ys3+2gZRj|=D-}@q3gWYIYlSfAH?Ugz1H)@ z?$7C|kEg=9?umhYWPuoaPl!BeT%7N5ztHb^cvgARllsWb2)19Uhkxk3>3kg9^X@yJ zSHQgF1MGtpF#-KNg166v^?TL=g8Tx<;4gd~8vdO7X7A^F{PZyb=XU&d!)J`Ni45So zjKH`0D92u~FWmfx({#M>?zqB#@znktdpS)|@ z@H-8^Yx1kU=PpP}ed+XaO!sQ(I zt-cVpulo8wmj!gb;m>c2j^11Jv2W??*$MO>!AiJurgLST@Ad(Dv-80x=r~yS5MKcMKzqrc zzw4&8XYa0Ar@y7|{MzX6r*@pcIM@gG#0~%48Qb>$x2XRer*oz8ANv}B{&$<-WkG5C z8?yg?$8?T0=v?#I=v>X#2!HPE)O!N(2lMDWaby7f@9RHjj~m~w#`n9zH~jgrhqMnU zjD7ywFt;zrGx$?K=MJ0x-*4=ZLG+nDMdVR9zg^OO@`OLX;qc$KM+Sudw*KGq^E$BL~FDfaJt~%P{zB z-Prd3_h0|HKfqm0>#}s*_P=94()`|w`{X`%CLVsnS)d?j99a7Q zAvPfTA0Los`G?kj{6y-Xdkh=B&nin#r1$==Q1l<{BL~Ff6F3JDR@>hH0qy_LJ+1HM z14ahGo%`N>?N^$!pY7h~1LJ{wfETg9~O;2rFV*YL+@ zkUzk^knI~j4?re_wci7PcYMG({=(e)uR5>(_P_ZjA4lNqfN#RoUD9ojaR1f`VO{#) zZ2+?*Tjh!Cv_C%^$FTuka4sJI*>6 z&hL`>t=RTWw|llG#Qt}EkNp?+tO?-G-y2xNm%lZ8L3`ET?uXt}{MiGd^WX^nU{4s| zpkBk?XM*Ux>iVvjWMO+xc#mWNodtUW*e8HJdFVcvvIfZ4JM?Wiepi4D@Qsjd9k?el zfc@vpH~6=8KYwS0ZxX*$`5RmUp}j5k9QF z+|iuq>oGix{wps3FFt_s*zaNA?c2%L^Zj4$jjbs#aCdS2h zj+V(yMvk}r;gxiY_cFC_*YlyhTFHglOz@8lU_BtL?fHal?hf&H0r&b+9)BmyzZp=P zz2j#8uc_m~dL{OE;-r^e$EBA?{ayoHf_2{qBv0jwJ|*&ntY8E14>YE3+xbo{cE9!j zq!oIdlEIbvY~?4)3${468*GNo9pvL2f7W$qH2n8;J9x3ar$41j-mnb{tLsAAZ}I7N z{t(a5FX55>7yj9$`vKPXto_6tf1cO$pK+*cE^pWh_KL{Dw%(tpzlX3rwhS8(4AD*5 zX7&TCHlXW2I!_zggFRuz|1&+wTde`u8|(qtv)&)-^OCYnZVupe3GaMXgWkt36Cbk0 z=yz;A=RjZ|{K-G0{~8N_qt^Eahpe$5xbklW@FO+W>&VWkoL|Pbhg2>M=I?YCeRSrG zu7WeV9{j;FG9mpxxQ-)R)F1kf4Y(5i$eHN8zeL_Pe2=gV_}aq5zwK(+unz3mR_mO8 z@6quO_QU?K;a`92jlP7t_Z{p%PPP97d)_U*T^i#<(#_kNi*P949Ni><^}K)by8idy z|B^5L-#bfU-ItB=H-Q!NcOm_E$kLB&!d{zszj+S!lG9ZimAa2O_SyO=^JhPX?)SjD zFsCu_{}9|03wQqxO!(Bkj<%}rzf+8!BLl*kcRc)EP~QPU29!SPZ^Wq`@0D$*)X&m6 zqy3rrm>=OYf8UpHF&^z34ZWJ+FKqVqgWwMa!96kfqyM5)_MiTRyT1jm@$d~f&iG7o zz86rtJz49xsV%=hevhvyIhx2A^+b;|r20->Z~GY2@K<_u%HRB{-}iPKfL-YP6J7fX z!98)-g!q5pA?)9)J$9ORy3fEK85s0@{+Pa~N1fhR(#mJw=y%DAS@S37f}-iUB4cT@ z#kRe?gU8o8>b|x3hkc#ffXSW?T%j4<;|CIt_22j+2kIAH$A|FWA(MVie0}xD_}m|{ z$}i@)3ELMc%lmzV@i*XN1Bhe)74w}qe0+R5{6GH<=(+9(lk^w-V*|ht z8KUnI_&e3M`--{0#63f72Ip0rAz}yocL$W7$XWV&jInr?d$wg~FOdPC(Sb+feLoil z|My@Xo1YjNAjs~63Ezu+jbAu$TD8x@*?Z5(0OJ!4-ys@f;O|yirw7j5F%Df~KaYM7 z%J*ZG0rUah1XJuRIwM|8{HX9oWnPz4KXM>C#z6V+zc*wfGCj;17m3RHKEl_)O zn7cg2KQ&M#(q8k`9{cXH)JaUf=C?SPLw!E7GTyUZ zgtuJ=SR>}V5KrrzK3E8M_HwMteuonqkQiGZ?2Z2?+y7C0?42d{J}GBxqFuVLG1z8k z+^h!^>{E|?)tlTM>2$aB%37m}!pPn-V+pXZAI*B*zC-~OBxbb$92T#RI&Sgr^;3a&Xw^4qb(FT9< z8$6sJ+~fDH>Aq;M`hN7Oa_)@Jb)UV8_l+I<$Sn1l$6RjbbJ(8urKJF#dU zb&kE(-yO?G2l)*w@99359b*hWAB4Y=0WeTL@6vpB7pxO!uTC8NK-+no2x zuXlr&;jZ$WTi$n_pX)*0i9xnMmmJ8RmL5h1hQ9GPoXSrO{*)1T?)djL9~sh|I0N3Z z{jA$+|2}jM#q=RMt2SgVSNHVUe`i@d<6guY;ekE4RaqC0z19a;_&zXn9PEjM7ilo> zL3FB}j>2yc+zfbn?L|_Bwfq#qY=k_p)L;UUVM9Yt=)hf=OiHt@3<+ z7<%Y`FeJvG?6gReM;Y`8y?)P!w)&ooh4#n}vOK5z2%nJ!?o;El*PZPZtU0Htd;O7# zSzX%=(evMTWbFt~kpbmTWI$N6C-fRV$3M6V>xrHYyKg$wQG34k!{3x;ZR;|D-B|SV z7?;{E*_DTA_m7X6xyF4w*$tDAz>;n1?--YGG-vZa6PtS#=@7kjG3%v99{8VN+=(v*xOJhCG z0`=_u!O-o(mvKY1|WG_l$)t*`zqN%WUCkpbH9-0>f4e$7pod(XIG|H&?272lP1d56RqzWu(A75MZp zmxGR_(tE!Z!WW2)P?z?zHbq}$Z#Bl!Z^@(YpO5@*6G}c-=CqZs+?@!&#M`}nU&kq! z&+$fA9k`>fK)sHqp4khqFY|i_wfFsO>JUPAsV~V&o&R8q)E2)3nW(d+jDL%-W)Hw! zJhg8g42U~E;Hx^|%X@s@ClWZnao`z@g%|rh@6$s|W!$&to*(-H?+sFxGyl*}eq;if z8MyY}eQtVxi7p?h3%2vZ*}u;S@4HTd`3Ri1y+#K`8+%Lu2SV(#&w{`j8lk6W_Gy#f zWu%bH7^p*Hq`VL{IT!0YS4{NVdta1qZr@BN^_+TgndN>Ahp`e3SZaPvJ- zutpAu!9V9fsY?w0Y6G^&m1Rfc;`})_sC1n?%0v&}g0lt2b?6%&>|>Fiml_j&AXj_m znUbaIoRn}n-Dz3Th5F9&OT-8pZnL|Pqw^j zr*gMf+sPhaZ9F5Nvw{8%I_P`dVq6*n`&i$LirkGD8GguTfquUiy9svU*Nv>3&=&6Y z^T3~go~b|f{rwvaU}M{%*!3bWX-7V|U4r?Zj%uFBV7;#0nOYF#@Ib*Zof5YECWH3)GTD!A@Ap@yTEE@Rx$KV6ztp6`1NB9@K zVbMW|x5>gMU)bMm0NcUuJ>Gx|I0pY<+GFAN zMt0us_ptwj;6LOGe=M|pZ!vhQt?%y$^Ze#1XAr4hF*Zc>CU;rX?qr{$jiqQm);w%2 zSPF;5dv@Zv%Mal1`yt@ZTHo8R_ncJ*bbzwo;jZY_k+IXDf5x-sBh9~ z56GGJw(tA2#-6NK;-_suFz+!qf+<*&?%3;@cHRrd_9v!p0y1_AzQ@!RZNGoy3_xRA zx}$V5ACBqwq16#KoVV7R+OhAt-EkkXV4bEdn9D9ZkPhyNSp&|^H)KlV@VJoy$?)b2 zo@N8^#d*)`yCK5bYwEz(7*eLdIcuG}MLyuY?7Hs{ijJ|@^B(rdfb!X|pIsjr8{+|g z1@4ot?jLTV|NBgn^%x%<-Bg-)D4f0U{;hOb&-mB)TmCHxd=9^n6Yy4@()-wcY(aFN zSU7zUos)e1V|c5+?F%xl@pr|~ZfA}e$6c<2orF&VXRs!4j<<-1@_7erY>BY}!F=eM z^-cN4U9@W77yOsj0MR;h4s>PPAQ|+z5cp#QgvDk9!~^l=g>b_@PS$qxmLR>X-vc8X z$OE!Mz+OjxJNEE+@EPn`|M`ueWd(T%{^X^7;$Z{MzD6@%&4<4y?y+f1XZJPlvVQlm zi5GlJgTLSRw(IIr8e9pHhY{lo)Ll`^gLz_T3DXbim*4A^oPaYllsDP`kw=;3Lw5_* z?(F!;w)oqmjE(tso;;GYza1sK{5LV+L+~XX?4rBW6Q6vy0^SKT-nVeyg1sDPI+lTX z+q9RSbEl|&vjw(bycC99xy-VmyGX+1>}Ph&XUzN2tpV8Yp|{3PeD<9X#k{Lw4PcFA zzl^`P_P&(&Z~1MA&j5w@`?>6ZCw3mp31Es3fXz>S)Jk$=sj7&9~^}|KWGV=yP;Eaj@qZ?9ulm_dY@0_^4}Igzpw9i3_SvlPe;v$_0fNdp z5Apr*;a+w8dm8K&czk!FGR=hphV}=zx&n4agMa?8TZ^{yB@QRKWgsM>!;Fv|6TRqzvi1G zJHpz3`*kh{!Cx5ie$Mx{@d4LpodfGN8t6avYOQ?B|8zG;`r>oHV2>Xy{w%K9;_2%C zPkPUJu=k0q0oeb6|6~t%8@$&zxPN@>{ocmh&fSM}#piy(pZ&mEAMkaq_xOO#{u_Vf zB>1b%XIYEY@7jB>qwL}u4<1^+aLV~9d#6?1XWp^@a~TN!;(7c%{*JuwkV&2{J|oW- z?bv4=&s~$fC(`@c`)MucKL6fW(Wxcu7x3pd!@j4*{&M5@r}g$O@j`am`=zn>JE;4N z8~n59?=kqR%=ZFR&wiJlxud`t(4}Fn}SmOJEzx;qp&rRjy*ZZHj9gr+d@Mo_G z{;~sn4`{Q)`}^@d`+D25Cv0AVJwfaAi_7{4|M+_yf8}!*AHT8F;BUxt9u%M8v(NXk z`8~Gs`2OI}T5#F?=k`A`Ap93?hwO{r9bgMCqrH{izKJ{=vM*!hdm( zCz#QqhzyCiU+xC2#j7evo zkMq8xu>t25|9@5gH(XA`<+k|6e(x0BXIzpQ|NRfv{VoTW=>N9f-;MQtf&=znm|p7h p&*YJNAbbnj-++@Gyi>TqFPPPv^z{(Re(a0gzmFe(>?eEr{{tD#cufER literal 0 HcmV?d00001 diff --git a/gamefiles/models/ps3btns.txd b/gamefiles/models/ps3btns.txd index 290af8d77229e16ed6fb3ba05410251458ba98a6..6f485f1434e8b318af9373ac8f93fcb3a524053b 100644 GIT binary patch literal 528424 zcmeFa34B(?_5c4oNeCe!Y|5rW_I+P~Y(Vx6_pP3W&hxxxhGxt7u2mz81Tl)HY@p$iZbMM^woH=vm z%$b=p69R$28DruC#zc<^avcNdI+^o$==xgsTYtOMyN=^JYHT3zfh#}$fsbCnkHH?p z0s*C4%fI9xU#=Z<|tKHV5A3KtDO4Di;f#0_8xh(3Q~FpzlH7fxZO252}OGphPGd z`fojic_Q=y=y%XFP$#q$TJD{7-R05JU?8}hmsWUxU&8rm=*Q5R&^SnGp6rLptN{8S zXaQLk=1wvmCi^=W?2Lkg)Hnw6uiU+FB2_wY8b{_I6RoBh%j2Znz(6Zf*|M)z&OwsOYFgq>nsVdXBT`>yY%sf9jANN|((I1cT3kdp-rSV0dh7*Xff_ zTSNYLHa0fy7bcH{FM_}i<{pA4JS%Fmyl6kv+S+=kzP@gMaZzFSgz=~TD>^1xe0Vm3 z9^<+K`ghC12)_Acl`~~NpX>RS?NIK;4Lp(av+|+ciysTvR_)|~$S5#EgLcTc<5--G)>!5#Edm(whlQMU8JQ!SX z%Ghx$rk9s@x3nVP?UbRVUbuT^2IAz$b`&O2l znwm^)?QBzBQ(-Er%1uRO8Ru!Hrl!)=&Yo==8=FjPi?GizbLK!w!;=ZpP~EX z&&e_(bkJz za$wVL)whr_p4p$0lJZJ)wDdv{SqMrN)J_f`Vg_W89=gV1kBf`zDn~z)4_6-c+)Ca= zPRBJjH-Te@$uG(>=~)>jE4|VbWxUT+WPa1k%=)dV&H0O|%Y6iT*v!uUv#HAZu_?>^ zl*vs$+oY!!!;c(OKCR5u)z_QWR>^_W5q|pOfvBme`Cvvy#>VLA7`2a*0rB8gXsGnT z>7@0j)pN*wZ0xWuwb#NiBA zsU|1A$<*Zj4|wK*54^eH%LS`Pt^ReMcmjbvOa&dLwP2xX%>S#Ip7|M*nObhLv$IWA zRi$Y~#@gq=19XE|=R7%RI*9$WJ{TpvZ1GDsCY=BS)TXMBvOr}oyCx+$d4p^iAG>!Z zAI+w=VW!C|$~CDe`DR-7r%iL=-@()A%GQ?g0@LbawQ?ZbDtnLe`8zzYQw6ru^9!SS}^+CEPRF91{al-i3w96`g*^Ix323rp@dAHMR-xrJ> zH*Qs9gX|f}T)6y^!4@;CuG-|}Bkw5{rY7&Fl$~UGF?c;ZI$NS#k^k1bPSYmJU*!Gf zo~}g}yDNX6AL2o4;ge>1)+bGBQh_NdE;KFZ7u&}4=p4&~>guY!3GwmjW2x^UozMgg z^ibLV3j15-F59N7qM~A#+8xO|_*M4~wYIdH*|oJMyCB14q*R-_{JTthA-H{9)af>G zw^6R5=KQ(T?O&qbDMq5Qo3ZS<|^KOqOfz>{E!8z2MJ&Uf*y`Y;P< zW7bL6lD_J?U-u32W@SDjwZhaF`~mDskyr8!{x)Iv@HgZ=0N(3OW>T$5OUf}Bsp%$* zHX$b`)8uAnn(R#YmzHJHl8a4l@`a`{^LwT-_wVpdG9h_!bw~2hR`8senSCqi6q{n? zptYsNuLJ&>HldMvFu~OW`XpevXn^=X19rW)U_{)A<#n}ndmVOkKJupWr`<6{rG>Or z1!i{s&n@=$g2lG%B-geK^Pe{5={J~+qzaRrm1)Y$OKBTwOhZG1wF^{_Td)tB(VKO3 zvrSdy3{#MwZBmodOjc5>sm`JY}YKBL^?mYozS z2j$qK*k|%1NCy7SIkulXkiK{d68?_#wDeabSCRP9fu^FW0{bPEI{7)UcNvFW_!pTu z)cvOXhfQA61(a)snKrH5%8K5@Ub6h79+@`UFh{y})Cx~#&#o~=1=%JYSt(Ed7`UJE zc<`L#f#t(LOj-IzOiD^JysPbPAJ8T??VmJpqGVvPCFffL(s7STJii?37&dHJ*X-G| z_W1a{Hs4~AzROLey)T$YnJfXf^j#-q(`o8+9-z#dk?~A3bLLEI6ZmrD5j@pf#2CFn5m z;7=g$kMHD6o~7;wJ0?t=u!?;8eOTE#w(QE0x%BiLGb{I(;HJ(CJJg;>x#vA@vXaj< znb}!p_N-aRq_d4wXZ-7)^IJ1k&USswo_Y|ftE=0G|KJ7is1B%2oP6BU4+L(*&Q-s*qoAN*6aCe&>tmd~y3x|oX6tx*awc{D`%Wi% z`mhZfsu8;~ZOU|0T3!VHIgvb&o<5kAG<6-A!Eg28rN_aqx<3!qfCRJbiF3i%J%{-Nw4we3ec_|*ZT-w~y zvd_bBWnX={yy9GwliEz%Jm1QEEA_n%xo@ZL7pHx|WaXqgedO6@J=l*?*1fU!@w=*~ z2Ky?-RAzmJZ}qf^?X;0qw3o@LQ%!wi1Lf4yPlEr4u!r`<4v!Tk^^4RukWGKIqnba+ zX6iWojMHBP`+=VFZ>NscnT(t?Z1OK7^GmG06aMzRF4LHUE=nmeWz$N~5q_KO*ZC8} zt}<17n=P9m6}^x*&z8H|M&Yl^`LmgtlxAkrhDPF->|mpy0}@{Vld#JsOoxtkT)`jI zhw8}9$=M|N>G40bEAGEnW@-=PUj6(xeJ3ZsqPgQ z7hxk6Q0MQnxMdd!e^c&bX6lqYQ$4fN`q$h$j_1hif$`%{T>~!g%by--I2w5Ff176( z$sbSuemmaw&in(W&wZq@xc;BTRAOr9!V61EV1wU6RY<<<>>IMzmb)RJ(T`_a4$se z7FlY`eFpx|q@9HSy<|!KmbA3gP2iF}E8TW2)YqYQ;cnRp;P1j8c^H1#YbC|`;K$Z1 zc$RV(e)KT%-2N7JNLJDRua%{O=EC zy?1)NcO3pDrZJoT zCVq%nl#jC&kU^L45Mz-0#*Q7Mc?FEkTKP{q8hGwcf#f&p95ZIjO8Q?R+Xg5t<)OI+ zzkG(tO}oh2zw&8W9>^Xoc+TW!TxfFg(oHjccv}weA&lWfuK6~75o8~KL-zHQJ=m#t ztt$V#C1zIEPfRA`D)qAeY+l24Ff@Di%$+0R;xvyy^o~W(09sg^wNlMByweokV4X}MN{8Hp)R^HD{GQOMX$e|nK90L4&v$@fgeNI{_ zzTgMJ-DR;m{9R^R`gJBRFB6{uV@5Wg%Bvlh3YC|a;R}qG-V^>mK*#a{s15uzv=AN8 zSyqA#=A!2B;~gL10r?6#&p7>zHHYJuU#7+67UY}cDaEEX?{3OnK7QxJSH9}=9;6>sWwLYA z8P9C+`oR5{1J~bh*roF;E32&B7iXQzn8H(hOWy;3u5{lLQ=NGW-({EF&t`?AVe zb${>Jv13<)Mfim&2Rh!7&I9rnbqpUKx3rbt1_vW4*X zTOO!AP(AoR?9@{Dlx1q`Ypo8jzWSc=ilgcU*WYNjx@P+H>0nPW1sP4Iq2RB4gSO6& zBhlun?9uyqY0b2|1?0{78^ZW$w|RfN=H5{ERrZ=IG3 zU%Jrcn{!Ed8GhOf`Xb-4dO&(Gk_WRH2gyvYpiNArUoyiqwW1TjZ}|WZd-|26X?2!M zTRt!8x}u_dlaY~RiZai3*wx=e&-!IAS)0aqX;xO2nKiSZBXfQr=`2H{{>P zxYecbDc$5!A1cs`4GqWx?ZX^!irVoLwbHgV;S--(Q*BC0^5I!B?R-AIkLe#@WRj-jn^ zFJHYW=OidzlWZ^+4C7Lh#wKZyn!(g@c`UmpGYgd$!X=&LYZmF zp^~)o@cBPtZNacjps^dus;v-tD0~+G;GY-^|2FtOW^$PekjWqHPy%+nV1^t?7m?vh-!7mTanrjr2?;-}@Js_R~ zhe%`i13f13f_Nu;U;%aMCF;Pz-aNo2QX3n}OijiQc{c6y1C|GF{7ZHLWNl>hHRY*s z64?!N@}GmA<$6B%7GO`SAK}K%{BdwM_T_k>bY|!L0{f3XKu(6$5$)Em>f{mZwy%PX zx>xh=T)u6)cP-ZgDSI9dAL=Vv9z+GBI!cO)x8Y-!PblmcQa!-e8)A-MC_5uLl$Sgk z-|){ICY8O#F1dBG>&C{UADoV`x>TIk3*+|d z;~{)qlKVBtt;*~f=zb^x8tkF=LiUh!$b7~EyQ(XzcfkWIXYe7c$5j_*)yxd#F{YU@ zCD)XvU2Vs6+cjQCxjNiFA0l`GKKXHEKl(h-To5-`U>>^T=O#b>e3O!vX2%;f$HLb^ zl6znF)!t`kWo?Lxj#gfuhMt8=p%XncX7U6ip3WbYIBI$Atl4|599aKo4-ce+rH{(W zOPI5fY_g`7Gj{b+=J(tIp1H`nd^WBQ*#3*P<7LbH{E?n}7XRi$%m@0O$xma>Lu#J2 zrK+kc>^Pcu?&J2ca}E{c7i^);o0SRppuS=`{*oN*R*hq3B{wiWa0TO4H!=U|$EGg(H;fbh9$)fZ@aGqd^?t`p z%lNb@NV$aPXIMXH7QXgr_#7G=>nU^EO3J%;*{j^Kf3^&ZjqN0Fl6lb&q5jx9Jl5}{ zo+mAS@nBS9;)?3Zs@;9?z|#$~-P=RVQ3zF6SB8p<@QXpYg7R*}r$VZg(=k-{2+kevr1Nd+a#+HJYQ*BlEu_ zPyHF+<*^e!G*0*{+8O4&YknBxg(F8UWj^R8=D6+yhvvP8^^}uWTW%`52%Nf(#O?pB z2fyWsaJRMXr(duqB_(Aob=}U*0lRIN$jf)3F(-^_U&~aT;<);(z?H^tI&oXY@ zxRqKTkeZybAu}Um6MB1#h&eKwn7_LTAN_`@Q>Uz*G-<->(W6JLV9dHJ7!~Eq_cIZ) z{sX=tKSmUEvK?x3tDs-O18fl4-|{_J|AVj`jjV0O-*xse``5mlf0e&wL;opR=hOW@ zR5oWomqT|$vPpzPeQMtqsox^$4mUr?t#|UDd5Zf#fzF1sc2ITgzwuCcje`oIR_LA3 z`=Jj&AN0=R(|aI|&D24uPy!SMy?wmRfs>8{*gPlKG06P*%2Y83#)Ihk+CVrq!KL1H z9QSSffsbGJiGes#dF}9n)<9?ViS_S^9X+}sJxozuARU7S^q2HE2B=FlEmk9`aD zcKiYQj&H{wcsu?8a}4As4*Qwhoai2Zr0<98>nwkreA&*Q9roMFZ)MZ`Z;LM#uEn23*N_XZE9xDG6hA&rhIxO z^E-9V-p8l?pN>D^)AO>i7e~A^hcK(@bGbzPaO*A2yGYuZPKBm(f`5n!*B;#@vEg zvuo`ds)#v)k@><)$Drr#F73 z^OnaSu=r_Rvr9`TqpRQn`SbEAIe3iUcYN}LW(I3#)6rXX)K}W9BXN7Wj`?lW zDb_f^uS(WB{g!(4_*WfvmHi_(UTt~shfjaV)D{u@ATysdwdOQzC;DkKC+@9_KcMe9 zTcn-(UBP_HeB`v$-2M5hjLWAhE1w5H`PlnRIrGLcva*SzLyW23JfN=2#?kzX6!=tL zm}~C*%oVn-i>FG{o{_0Pq6cbeYtl3FX%}jIykWb*9ou| z)6Dv_d%s8--Eg&&11k^G3)h$*Uh^JPlAVsc?Cca!1x5Rhe^^EZr^a#pr&@y&T=6Z;Nk!o_yQL`~8;0AMn2wc~%}|_oQaznzLqB znfomMt886$bpjqxhTpsDU94M3HhKB^rinSjK6b@g$jr$#1S0wC@ zQ{RPsc5$)AUWVQg|01y~KN`!A$k$sEe;^|L$Zy%}vhryrH7&0w5$q^o&$rm^97KyfJkS0J8T9*z$}9cnA&fuJqi2rE2XvY0bt!d0ZQfO9 zHzD`%AS?q;4jx7>K6yc_x$(Vc+xq=D<^7n|a}N81U%Jw?%_yV3=Q5wwt?83L;F#YQ z|9cTO@esuyI5O?t-?G0w8%D8qO3{g07x$@)=2#v`A6NqCBR5`Y>x0G2eRp=)|Au^= zKa;hV*f-LvN3ZY4&(n~_ALzx`KC%1Hgn2++Kn`*;GtC#@eXg|+RSzEV>VuEjmkr7O zL)4E;n`W~1CJXH7I<=2}x&uDjHfBiT4-7aDJ`b8(O;K67Dag%2_rKF&2fwgeJqJI8 zU-S@k#hLZkNt8Ql?s}~+7!)6dD*nKL@vE#=e)PV4DVezi#5k)#4#da9?79K*0r?-2_yYsSZr7)oG~&wEO)D~g`aJ#-VWo^8 zu{P0F_%n2kJs_I^`S<(J_k7{QreQkmK6OSsaD9aV@Ibo9lUMZTki;MG)9crn?=$Dt zq|$cJDl4@1t7P5jer)0!kOO}I4>sTbUVW+c89ZclzjUDML*EU*YU%%{!@tVvS=5Ci z?fs+X#nZj|`%uOoIO_Kzbc15YDMncuI=rT&0KWj`4mNB5QSP#PWZ(b%y32@Vl4?q_ z((xaC$d>)zkdKFukB5*6*@?f$_fbQf$u#VMnX~JVgZ{~Y->)LSLmGeJc=+YNXl$q_ z-f)ifUnu{=+GG1VJLgV(SLHd`)Qx=GZ?4YIHNV4GB<#|Gj$D2C4fiVx@`&Zj8td8y zj|a!#gDv~8%`mj_2O`S3H!mFa24p_ROviumJIY-$Zu@_>ALy|E_LCnl75U)F$}_WS z8(B-oJLx%Q7VrEKemz9{@Hfie=fOkB%blO{c|h!|WBHJjKilT2-5vV)1HCc(zuW1@ zHW4p7IRm?;fHwX!PUatxy-WUe7BA!vtfcRs#&fe~ySUPJy)}NcsjNwAz+d{OFI?&5 z0Qpya5HBPbw_pE3GYy$ZP0z%hApV=h+N0f$(=cS?Iw|oanq9^ILp# zPpH0w+hM9>Z)rePoI)TpQqIP86K!TwD^4i;i z;&RsMrrY|}*o1A{iwEi-DLs$gviJjG9w;^jF>q5U&(geX^Bd&U={jMT?4#?zE?;;R zF#=ME-KKG&@cSMQ?Qim3U0rQXKO@8DRI-?|+C1^J4^uJ-;%mV0C!;MyD4rT+&Hrly+98f(m7rAtU#@-NaD%Wpo*_z$|E zl)j~WUXi}ge@FZQ;jfulYm%lWn~${3w)I^yAncOWchpvyGp3~4@k^_dd*M75Kg0u# z9g7F7;W8hYQ)}yi#(sqTLF~uNnrGTIy0x`+w(LFp|F-x8%D?QfQhZaX#FY3HzO1>7 zQ)&G3%Cj2HlqpHJ4}UD2$NHP)0X}m1l+#K7(-*dw$MB0k0$qP`t4WzUm3VW+LWECV zI(Gc?-x+_vj$5Du3rmQToSJIBcG-pIOYc6%q!JHUejnv4QZA2$x39mceUl%psH6;^ zd9u0rgBRm3JlABw57oVJ+!6Pk|494+)q`eyJjG?xnVXPd<+Xq@nij1WADaF<<3-J^ z$u2|Jq_dtq-CnEQ)z|QO%b__ksB`j5vSkgQsJOl5wYcJ636k9)t5bXD#rWBh^RVu4@%eMUN@H}UR&L;L|7 zx4OSLdq3y5>pj?QJOlXlUm1VE&D}gsx%-&=86dQR_X-S)|{&Xlb5`;gA9fo_BT0zD4Rg`V`$AGd$@ z@Y!*Leq7rz1!CxRqf2}l`1VN(UiI>Spe51KQ7_D_soB>TexDES?8@EWFRPaf_+u*} z_C4Okp7%>hTjl>F=w#FZ%G1xFrRc3S>>suN`1p_X!S>V%Hu_h-$Vx%a;W|F6Km68sxI{L)_o!XJL#pPM86vt~u&S4_l{RsMy4)llO{ zmqg+}nd|>sgMaqyy|Kf>^_cn+RaI8* zVh<}}SNnhSNs6Cr1-=YDkFBxw-spN;za3Xv(F$Gf4W)Xt^JQ6H>lcI?yqm`}fBK7DY-vVIO? z?2mnwoLdT;Buzjr`4po+5uwL(h0*^Nfm|59uBGk{*F>gYqF>>GKeOE`ydq>T9SR6>nX{ zHL>s@zF~=Egj0L$*t7RreN_2sG)B6R7~advN=v(4JK$sYd2tlGs0Vu}KQC_+y2S1? zKzhRB`^O{;;)x~l5Lr&bE%N`aveJHbsyn)O9@G~P8o9rOKP+Ycv_`|IL{$E~Js@;rNn!Z-FAmyGoApd)tp@a6Jj z^vJ<6@JC?J&CUUPjQHvH+^`q}&k8Gh@pQ32;d1t$ST!;}VfDy_k!waKB>J>EA%5iQ z_z?-KMhqYELR{?d=Z8hdfJ^vo-jrq?6nVt+<58%KwtGcJM*4buF#Fi=J5=9Lf2cv! z*l>vW2!|S)I5#zh8i{9LTUU1wKhD9*s){|Ssj2JOZ)-W<(Ow*?CyLpwymt&69=o)t zs3^Rjw4Ez^xa?C$tghFbI?W^7q`2|qhjI*)#XfHA*caHFbUS^*y?p-w^RX0%iaa&3 zUx+30*?5S((AgtH`J27Jva({=)HBXl6CD+$JusE7{ISC9AG54{?O)gjHRGSbw-dVb(n~{^yz7z>&nO<&e(gJjY^)$rWLEkDd9^$UE{GmBY-w(8 z?lz|rk$tNhZQLB`McY2$>j^0~epD2D_&DBK{3>((o-|>?D)zi$A1?d+A--+MgPr?E zp8CwI@=x9lH8(Zyn>=~4^r*^4b-cv~&-oheJ){tVck750e}Cah#`=|1}%k6-$>@}RtsCpYKO=Go=d z&%f2T_@W96i#B<6Ky~z!9)3Q7-VO$qq1%?Q$9ngfXMvyc*Z!40DJ}VDE;#Re^T&Jc zF|TY`Z#Hb)U~aqZHs(hX3kn`9Z}QnyRLt1r@j%~E**$GBfg>0l>^%MS)7Gj_OJA4g z+e7kyvNwX;x618bB%M9a$A0Rmr>>Om)U&6ptO%37tvo0%%9HY@JSwk#zIB!@t>@80 z+t^b<@-Mm((jolcgiw4QH@l!xXP zi{J79OxAD79xZ#&Lo3h+zAX3fAS$pRZbaPD(@vYbCTZ%_wTX!%)z(N(gj?+?XUR=) zKKszFm`VT7@hV(jEFOK^&&T>r8_fd`K4{3JU8^VDF7I=~_{*rD;O``TwFTdRbO`^q zq36-7&zF^#?xO5n`CA>p+D$8Z z^0L9^O?gya^^C<22EY7?$s_!cb~K;0_!R@$!(Zm`Q|@|SYk=Q%$-B&Bk3D8KZQ5iu zfIZA}zWwc6Z?$t{HE+)5%kjaBi`E)q&$#WhRZIAa>VevD?ZbI5BwmOQ;=x?#Pu|&< z{qWe~U1jCvJN)VleQQnkC#hHjsI5e9frRJo%#ODE;lc&Sz|VC+!*Gq{~cTY=zyEQeT$8!GojwcCEVzu3>KA^6k{t{U3WyC_p$4&Z~J=4&zC!|w|Q3H zg`pSzzU2QFzU}Z&^UJ^8oPWUuX5Q1!P^W~yr|fmT9_+8If5m+3mYa`qe*@I}IG-C`*nNvjgx~p&j)`C2Rvwg>-uY9Wm3Lt{3jUkD45l z|1W*d`^@4+i^DwF=+yyzbKNViVE;J$PXDRw4=aDWUt8_$+Sf)fw#zq!U;54;!_>D$ zI*K9nwK`56f9h&%*f)Y0K4z)tmso{gVu+9HfgR7rMR|`V}M@>7X7g)!tZYKaR!&eY_nq4K{GTF&2=VIw;HvLS_E_8(`Z_p$5#pZVuMSJJ-pw13|g ze)e+?DxKBKcoBD`y18P zmY0=oKW))_>yqPneY}sSAAfmRoKAPxx(p zSN;m~3$_m%=Iv4Frj?a%$ET#eIX*^fE2>YV{<{1~;=y)L4pjajeOq}@ zUX&*rv%Ob-g~8eX?TQ7qmb6v(L>EB*QNV@r+&OAg;;M#5_VS$5egKjWK;-cgKDvJH zp~mLsL+4y@LFoJoFW~R3`&*iu_U2?|Z5xK)le7-U&hJxCJ!K{1IJPgNI->IHp;muw zPN=G)awonljdlAxQ2$^3CtDY=i?>kDwlB=L4S6u+#o3#}t}+Yf*X3I}nOMPlMvoe; zyh#U(k|6(x;o^_*S^Iu09hsQ0IxQ`Az3N?Yaq+eisHnJTTOmFyOT|Uoi;7FOmr$RG z5w@kUpzxLP<4#$Hu9H4L96Na*KYqOW?_Rn0#_sb$b3xR1CT3n$^&WiQ@*`<~QS})l zN8-T(+J(+ZlP0Z1FTPSzT(U`Z8o!h1RrPQAy@UGIT~t)qozMP}#QWTaZ*D#NQ7*T9 zblCrw^rE52Baa{Iqsu-N4v*x|vpzlPhc5P;bwpi3m&jh#eYIcGE5aVe&-MIMPB~>| zZ5`N=SFrUecOQHBEZ>3RMjo13UH$s#QDa^}J^T7VI>GV5eM{eypG|G6zTY>wzxjF7 z`+tX0puUbQ(z*-secl!`55g0CyGIf{a(-~0k!&fie9QV-=c^1gmn{PO@$joo2)~V^ zta%@!++OaE2Tq@;KKNy%{aADzrXbgl+S5pWs4T^U`=BEJ7Cz8ABR2*DNo9q@+#X#XWhFVdN))E#X=S??Es?V19xZtm!28q zAwEcVbtb1IZ$Xxi+lTFqUBA^Xs2(VW4t}itxjDJ(lqRIUv%WF71AxM8aR;Mp8e_+e z^9IKBM=x3bJg~3mts5Zxh=COqGiIRg23GEoyl_0Q@(`-7s@g8wjI<@kUw{UDsHh!* zKML&pH+j-&fq%X73a}*>-U9t`l#^#2>K`UAJ@^|G5_PZ z`u>=FkPOIHs;!;92mG{$LCOCQkD7yH{2`1VArSsRTy$Vv_twCkH}?kO<3{#+Q&0wc z=%t@Q{{sI;#wt!|{)?{%INR|7hu_x!pYn|XXE2PPSEFKL(1g)}%{#XRUKjr12?GY( z#|z5S?a+(h-|X<8X!*PN5_NU8dn52`j?uvJ^NP;{#^M5jm|$S*&g~Zeh~e=hdBTVC z^lNAh__q=(;)LrzZGf#Gz3^*}=^*g)60$F%U(HIRZ3 zTyOCo&DQOo9`x{sH0Bvm{YoL7XR>QYZeU!{yRxzHS;GnF*fgyS0cl{U-U5F=rMKw;rh?&e>*-+`h%?h zDt||={K3B){QKVs438Qz{3@GO;Aj4`KVBP&-M{Xi{7d(X)c)hQl3zgW-;bdI9}-TB zpK}bd9~c%4Y~LmM-#b+Jl_%wGCEr>*bLK48KQNBumA(AKVIQ%**DoGe{FN0mwEjcb z<+mD~{lklv2b`mYKNkJ>+N5{uuoK_|XrO|9;7U#qG+! zHI$o^y`FT1U49$&c?Nv=*maJMi3&u;MFlo*--7(VjwsL`48;*-ZWZ$gNNU-H2@}>b zzhmDV@Xu*KQ+zl?oV?=@{K7XR5_bG<()~N*6XNB&P~T5H$Q@`_eeC{wQQ(hF7#7&D zWh3_Ao!v}{}DjH=fv@oUMqh5v6SYuk3QPZU(W zCrpg;M?zEij~E>nSik9& zz@FE42I6AlNj8dp5l`tsst5V!H$M*}-RqlZ^8yh60(U^mNJqXA_1TpFmC$OBUgUf< z@}JRok>1n$8b4r6$Wn>Tqst22- zup1o^8{_Q1D80;qL&$q2OPa=_@k~ftZb3ZJBBZyuI zu7Fm0XZp#(NYdXuigIVxe9>2x-g|B2>sS9Xux0a_0C64zV@Hh%j2<~QFe*Ngb7CNIL_%QXi1@(BxcETAQ7M7H z>A8^**YWWI*186U4<9C$p90TY$nnSd=(iyCjc}0{gIq-+c4Uz}|h(-ZulUd$ecoe(K4a zf!%xF4D8yyFR*jh8-dq$?G1GAd_Aze`}M%9(5CHs0xxgb9az0(SK#4io)6^ZRRBZ6 zDW2=l`MAUbDrF9Y)qi#TX_Er;yOspjZrU8!w0T?L)$Kb1JGyrVUfa1huygktf!*Zo z^*8nh-gxt1;LQV}!2W}W0tXJ7z<#dxy?G$8n`iXg&NmK_=Qjce_U#WCb0F~A>*zk4 zw*bGR$BgIt`dW9boL=f(%Q}u4i{t6KPhZRB;19Z8O1GAO$Gimn+G zcBJ_NBLBC1E*g8V{&)Ph?2WgN`O322R458$^Q;6#ZTzL7K!s{ z*ABmUAhP`s^}lRAU~HIgTzN8rCr^^g$Dk##v9W9G*^BqEauwdgu^s2P9fQ)`{6mZ- z`}2lX{$GVo#zXkkZY@D~t!rRiNEm-urhD_iA8R|>+4^4((GTp)mr##pmjDczp3_m?Q5y{F)O-A457&^gZZgYzK#vE8$-T{`JhC^zcXG z8R)geAF}wFm+ImF{z;5q^?y0-H~5<3Cx;U-kbH z5C6I*AAdjPJraMfYl|O0fbgsS-v*tG^6$5QD*v_p#qVSF&t92_WkF-O5%Mqm-#Ll# ztG^=rYrua%^WGxm*~fUSbL8_}+c}L+|Jk`+nuBrkNs3?g-#x;Q{$u`l)BeHY_xWRG z0Uxa91miOkc9GiulTrTFPrnnA{j&o5=M9VBt+PDtSkqycJzePTwTGDhw*$wf>|f#k z9CWhc*Zc$GZ$)*@m^OX8Ev>2pJ`V|9(ii zHXa%Ujf0d&`F;I-p3b#MzvWhwKdC={B;n46ObFc;~1Hz8(Y-eAKd~Ypw*quT)j!N)|1V#GZQ}9AIpyo&} z7#=sgi#30)9!QoQ9ZwFz*oz8_w#48+AwBC)(V2Y6zaSZN#JptuNtVE@{OWn1^o)Nk z+0pNdq24@@Y-{Y8H2}dbJikj6?!SFxhn;-Kd;cn*Sv3@^XpZt6tHIG_9LF|ZqW5$kMC5(`KX?c*27zp2U zkh$)`u5w~MMqob*=EL%@XS_VLhuFVvXX40_TFVa)Y)llN2Mh4ybruxlvzCUj_7ci)m-yA|{r>*8WoctDBqS`cJU}<|y+`_=Q9mJSei+_YQ_3Z~} z-wtS=_PB9lSJOg8l)G?S>R=puRYSe7TR!&}bMHKdGBPr@kPof%TEh7wkPhj6+KAvH z^vW{EzjwPiBS(~R@AQuL+sXp*mv*8X;X#z-;A!Y@d{^rm=2ONCMvoq~d9>-_lf6IQu$2Rrl9;lbeWQ>Hnr#UO3rmmatl(&6C`ETU|dY3;`e z;ul{m59qgVA08X0Hbw0MGG^mR&*f|}dgpN47I|Oz$Bkp{26OMcdAx(iuDS+()~tYE zF>-AAU&r@!NDor}4nJ|jgnw{6?y1w_fzk-EHfKvr^f1~+8xzRq!2?zfz{q!{kMw={ zPQtvPJzGJH4u7rIiDCEfvz{mt|Ht^Aj!68=(XT^=-_{S}2p^>Fc^O@x_Eq>a7AV_P zHb*X$37rDfL(CnPn?v^=&NJKp6Gx6ytbV5dg1rwU*&J{$3#az{}$j6 zF&BSN;;2ztmn8fPIjdi)191-@)3}n4vtz=y7O`g0Oq{zLMef5zGpmU%vK{r5WLfMe!*U>%)7qM1$9rAxb^`QS{-IvTp z;4diLN*;t?eD>Qv;h(E};Fta%3i-F#*|Tzg($u6i;8C5Y>@7*wo`qzCNGANV+P~W& z*+>hC1Bb0#uu1-dKIFi^*N-|X{1EbAkY6DD%7@DTT1bcRYtD)AFPm9iv&){PWe403i3hB?j_uO=+Fm^92X+s0 z{Ms9Q&l~9{GP85?6S4j1z9UB9HebYZ5!7M6PzIB)f$83jvIq>-8 z)&U+k{j}3wBF*_=7Jlhp9cqI<14%C~!uDE8e)ihbLcEiWk$$r*$W=R^IFPKMNn!cb3jv zK%ZcFIWZdO2fk_N^(#h>=C$__`BZ*g>@?2AMzCuj_T!h>rC6Y(qxvNoNQV4F_PF@c zp?y=%IQ@(jxjA`?Kd`Ns_-U;3-@zEn4)(#=&RCSz`EOG!KkDwbg2I9==^5$kM~x;% zu9I`6eHeD?H+|T;eQq7X(fhAf7T|&U&eo4aoLgj4ZH0KCHhRADCtpZ*cFqR;quWY} zgP?q=uSvdi?d7dx8!=Ggj+oHNx$X0Slv+HAX|p@)E0YB-RfJ0Z5^+mz7xw+vHQHfqxCD#_0m_` zZeF^VKR=(|+0TDp=ilAm{rA5k*%E$>9pA+o z{5&dmVH!w3&hh{`=yq|d!m(pzBgnt5@2M^Ezw4j8m|iT*)`iA8=*`)5mIY zM>1l-sU7VF;r|mPKZ4ph{F}`GW8RzMK}p98lOw-Ij2K>Loq4u7`>b=!*=L_?&N=5i zOXr?@zB!kevG%O%bI*hL``J84+(gCHJ?pHq8UHWdF5fh1tNl_vRQCISSp0gt=e1~J z4m`71P5zJ_(i_s9OGm^FUn_t9#qYS77?AgyhaY~}JWfo|C!d&WY3`GA&EMz#-6O8` z`^hKy+Y{!A#~wG2J@Tk|!+XU$MKSELW!J06dubqlAHl=2)0Pu2W<4>c zLyCzlnSSWe$IP~EubM4eH=C_nx0tQlpsic^4Q+9>b?Y|nZR5FZ=2f13;Qj~9dFP#D z;A5zqn3$|P^YQ%_kTd<&$0em zYciOhY2au6ryH|W`D-4>36;Nc9LHM4?$?JDe^~z!GjT2B z%@)6H?}-aXOn=jiJb&N=mz!nFmRZaji4`gtP)yIC{_Llwjo5+oCB3qDeNM%{qi;jp zOl$wi&ehzU6UILr{I9Y0b_fr(f3nS=r;oO#zP_#(et1A^Jn`W2%P%usOO_x9o6Re) zyiEN3@0(Wsrg9JCw|ua%4;43ZM+E-ch9b|ySs~gzwD^aSFZp(tGxurLZ020Z{!<;m z4vwH!)7a8z-ucdp&3*UZYrgrdZ&E*~BZ`w~pX=d)-jkm}{cKPERsP=^3jDFG4c)PO zNabJl?;jzxQ!B7p<>L~5?MvY8P2lX{7TSbHVwN@$w^j0>Jsrd+%Li*CiwBlx_&3@P zu>NHO5-;rP!+jJw;Uks=w-bM62oKfCuaj&So`q#&$BtRu*4pC90ApG7g?gwJ+d%e# zs6{-o^Blz|^rcVqfm`=0_EbVbJpCVwU;3})#PaM^hYD+J_mJ9u(n@6{i{HS~3XNly zl~3C~ojE0}gWFYERk^#en)m`W)q5(5Jy2O)wTJx$c8e-1IWzZy=k`=oRPCBRZTe32 zAxDoHy^eI%?-BO}@jD5y`)}G0f z?kh3$^f*pGftE1#@dBiH11~_tWeL8(Gn6I29sQI0|Ku7TMXlyq{rpvAX%&fS&g;K; z|DRmn$KSFb{;Y2>+tB7idFi2OY#J9Uq30|d{1;&ny4~!c*Dv&@7 z0lSu;_535k>-V*m-_eL++>d3QzsRolXWhTn{}0#t{^7&}7#>Je>;d9>5%ECGNQTZM z!=Hk_L8iaUS#8&Mpl?IpfW8LZC^6|v*=F(l7zvG{ z28|{f$rwVpjP+<7XDA8^j^)`g&`3x=oxU@~UBCExpO5lJ_<8(e0mc9WBN9djx+w$2 z?~oEj)7XF1-iUwbmOlQGS3V;;{GXnUW|JdgjO3E&H=#d~Q;qM(IFDH0E-}nY;mT;zK_vfFVufEQ`-wzPKV@F^_{0OVV`Sws8Dz9^( z`Q*RDk+qxf$!q=<#P}K?>_u*lyZxL0oSm;=`yGnu`wP-c8Hx->rqR8#JHY;Iw#|vW ze*)K)4yVPxfHB=p_5)tb*y>_rZZUJTyW$vAW?Z3bgpEazKs~b4_z}a1L6w3a563RS*yz#1vr{~zY>$SkJm}uhUMA@7AtE43IaQEDs$GINP-_-|s zj=B2_GSV~GXuOaZPrGIj2U@md9kHTCDb)z?{Kez^9r+shms(LUl`?bCj@#C+Ss zT##<&ny-T=eq4NwMcr((=>6|F`LReMpNYh!>(_Ser0h{rhvD!2RKI^y_9~~~{FLOB z<*dKiOZua{L>)k!~w-(~~yLJ2cpW0eNg+&EhT)G<9 z3f|4N`g%ih2*3E_<3B7>{b69ohj@G;v>-n(cP*HRpU`|r`{Vg|n2*Vrz3?@&*P+gB z%#8=Py>_@Q{xA<(+5dRfK8hK9S6*pan(@TE_fvDqD$X> zsrlPOe{*}u;Cp(0#q;L#pZ|iL=V6}(yLixwY;e}Pmk_#9eHY2rKOor%LvnQQbogV# z_)jR=8+cpzJMkH90jtF?9~^!JJNEY8_rA|O{`liP`{-z2DfZV|{o-nK!;Lq&xf7b> z(uxnlQk(QcC}HHtwWLjZYUj#ozVeV9YX4N$Lx5k&d<8;A!Czjs4cx35=)wLT_G5bd z@yEcO^wZ=k%@^fleX|b3yp_{ znWrjMXy==lKJ}AzG>#Pon^5T zGtx9SwHz9mILgP5U1isO4h{Yz%3sAes6#K_2r++*@@I|?{v@p#F_*ma-R5D&6XkFA z_ov&ip$EI}J7S+b$-zr6Svjyg@bD*&8tw4A`BReymBT(>I#T`zjbEvM30egH#bsrs z+ob<5y5K^_5%0JAayk4FxGDcl;B~}!4CSxA3pFvxcb|BDVk`wE}D_&-hF=&J-ZcX-Qr=baz=!4H2J`o%AQ zVgB#`erA3K>HPDb|DVylUy85+ZomC@bH^ROGI!o_hq;q6s5|bw)BO6^zcxSl=}*nO z-(~Tm|3=9tg>7N=pL1^T<3x|wcJA=>zmxmkw*LUrzlP`SytMrMf(_VoA;sa)zEnN- z3~f64@JRC7J3C)id$vKyzRu|X1Mvxo&yzN7t6kqaWbI!VKXFoZoFM*7NJ4YKI+%OC z8u>qf{Ss=!ma*-i+CthhOW@Re#J))FzI(>br6dM$-CoA@yGR$=x4r~9EQaI|ep!C8 zVf)u|K)2+x84aBZN#9I{G+{@iYu%F^sx0(eBFsCRv)bnl`nSv3_i+!nWdk@nKz5Li zP3J!GyY^D+Q}uVnkk%SDe5h*sRrh}n`Tn7CT>JS`zE1B&%BO4vJs$`8MlP4`*wMY6 zzE9Zxm)9=?`a06^08h+?m;;TkM(g`~h`HffQz@TK@F||ryc_j6F_wxdw^Z=q_|Lb3-I{XY4PEPl<&SDXX?+d4}p z`1$nn(fb^kPw}G!vOL(kdpACO@JF#G#_|!r6#5(g-EzhqUSRIy3#=hs6&Dx3n)Uvx z@ztzJ@Q7HEtBEVQni!MXJ5^;Y!|WSyFm$y{|}BP6`YT;-RMk#)o$V4t&*8=1eok^4~m24Y^W z!60}pE`in-?pLfq#)!L58FvcfCwA{Gi{0`7K8Ocee`a~$%RwZ5bb;;bcrrg@ zM#V1rJB(eaT)|FV^Uj(dzEo)uLwu+FMGeFsQ2)@Qo)`qgAyDjuy88MMa{>3|lN0jv*5VVn4BG*5Lq`4xw&Z9_Va&z*@95^>y`bF1{^y#UhX{XbUl)e)}-35m32H z=7YhxdQZQZ)AzjQ+A}^qsCB87&!Oqlr*%ii#7G8&{~^wCq|Xt&1f5Ae3ocAaNnJ0bJ>sh{;|qO_}NEn4|9W_=NrO5m+y=uUwk5P znWwK7;AU z#ODt?%J?PO=txOUS&i+1z3BEvKCB!gG4=Zz*@?t&=SSH#wio_@SN=na-`WNE!(YP= z6n4?)px#FjH!S{%6DPgESjd~MpD+~lFpOXIU-FNwZtb1J^dAMXCI^ciDmp_M{bpzel8?^nl+||zi5fb0+zCg0Y6}yjiLH#AIwH1Fv zdRB2B7o;YqyoCS2tyLe8P3Gq*viyZVPWX{S{3XtB#is)AhNPR-?yem;ejm5asypqW z>C^4nQ6D?)zFkkRa@C&U%O?_ZpcK1S?E>rdH`+N4>~&5)o|F9}B4Z2GcUCM8`UP94Pn;*aahuGI)7k)&){PFYHy^0Bn0W@fjIKQM=V>$DEWU(7iEp@;bc9{{PkK1& z{)Zn5#KZ&%n-C=%xI_I_{AerEQd8FxuVkBi60Ct{T|e;$Sl_R8{?IlN_qJ($G|z3o z=dp@?W&L&D(qYo&Ixoa`v8=45wA;$9!|uv0Ty|caZFM{#ey02f@*{}{zD~3}Kp!la zG-2X$;v=jjHo_)!i1J}$5ZL$#_z7HWgwk!r#UDfrqebsBoKIi1z$-C;f@~eI<=ioxc(@;#y2<+JN zzK)8NUH_iXgNFV1iYTvMJn;Du?oX26C}OMjkbXN-yJB^ajsK%O3y18B^B_<&2Ycfy zcHTYyPu-dT_B%LRUB%hA*Y%!o>$gw-Z-0%yo{_w3eu`w4*fGRirEEM~O8PMZdl)bE z_lRrBb_hS&o7jztU*yYy+HA>{c;35wdh+9!m+(50TjZ7*c<>0;(fr@)%r*zUq{Gg8iWUDFeXn@k4Q1 z?cVSEMkOX{?!I3S?&CWbd*9TzmB&v(%BS)bnOE7C`rGAD5flR*c5Kgmv=$2(2yLg z3ATe`4!^LU5dQa(0QDf)nU|NR{ZE3HsJu5>~tYhJpT|FPw)v(FCQ!90d%=RafSJu}ZdZRu&QeVS*Uc^2Zn z{%)U{_Yd>*(@&YF{xR1)^vK`LCq8*Sb7fmX8fznM$-m~xkAsHf*uG<%O~=iDJ7M|1 zfyCHu>OCQ1QsLz#2cSx=l`I?&DX#24fFEL zFWWgkcFnn+|Krc~@#h4&vs;tC(JWoM*j)Ruj~RGq8kj?p!1yL<3%_*0L}*Bk?$>tM zbcO)GnD=#Pk?@z5ms|gh#?go&V!rqNADDHotg}3DF$f&~@cbvukAg2-k&z``i_A42 zyNbs`VH&7_zU3o=YHu7?rp@SSh#S3x$>&3u;Urals(UyY|Wi#Oq=o#weYP#rkL8l9KPnlJxDhF|MH9Da(={^#%yQVMP&t;O`EyGl!nw|LmWPdSPx(+e&* zpSf;#x|j>_z{T9y!o1)|%_WzyY8|)P%M@QAH3gOaPfu2>A(gG#~|QZzahd;Z^%5{Xb;-&&RKIqdHCy|K+5Dk2|=Sc#`Wq{OGaBc?q)Xh)V+xZvWM<%x~}d z4fYVRR)|l**m)SU-myd-VjOipdl$%WFaH?*AJ+H|(XnfnU;l>$e>K^XkAKl*V(x;| z?m-pCLix+y#V79e9Mv30%G<^t@XFejc@K8g8T@uNd)UiX{fcLyM2njoa!{6|*<2AQX0Dgw5bR-`*pmH?A5mjKU|$!dIV-O2tNu&I zhV0n7b(5X{Mw?CEsr_~>J!?m!m<343SZ9{Ay0fnJSOnRUP-%oI$YRpqpZSf?fiWMg zyN_aBz2Xn}F$jXhAb|Lsqo}}I=6}4zbNmj<|0!F46<@-S%KA_BeWO_W6czjd6a$fG z5i4UYMdq)sYvtM94@-^;oqMli|Hcg)h7Uk)53QMH^*n3z@d%Q(qsaIJ{;b#JpXY200^$w0m<5VIz`OD8{kT}xlLn$Dd%^P->JkOh;lIq$Om~$P&@&} zBZyZ_0WZHcK7or-pm+oBzMdIjDKSA9Sob}A7;}DO0&xj(fsiqQoqP5KcEA4rvG*PT zT9sG+{~cf&y;u+%qNs=z1raRt-m5LyP0VkTY`O(gOrj}v<8Bf)8dG;ucas=X)!0jj zK^*A}FtlMRLucr`-2dl$p8LG-ecySff?0O|TsU*fd&~1Z=REy6=Nt$Q>^l$~+H9=W6$6xv}DBJ7;%`kIeBo20|}YEU1}Bd=`$pFY2mt{q^dU9T(vi-s;LdOY{3r! z`)&9l*tv5bz7R;yUeZOnMSG17279?Ce+lxbaIkh?uz&aNVBem-!NGm|gB@Eduyc1? z7`E=LPUZZOL7-!O`u)*y0mrSn;P~b;4vu9bi|M^1`RDx)9LwuYK6{b_CpmDE11C9f zk^?6>aFPQjIdGB#CpqwciUaC2X|7jY6ODPF1NDsPJochq5uG19_P_Py+Ivao@_v!h z<>@SrPlJ?hrN1Sc`p(xvTBGzF^g6`2r;Yt;{->#=af4%_`o5!aC{g@(`wrt1vWuEUm-;MA6J@IS*z+-RMWcDqxaq%RZAFZX* zIL_11#ZW_=uuq0w=YTb`Id2gU>>cblmtqgGtZSF9%dxLq*{$m-*=QBliyd`i4-xOj z_BxJHSB|q${GP^+yLRnbOnQoC$Htn?V$xTPjSu@y#hp5KD#ix2nE9IJ_-tAX58efn z=nd#XsJ^W)KVZX*T@pO(K#eFWWCf*kQM-9Kmgrx_0Ss0*lLgU(R zBKHM6vr=)G7#lxgW9McEqV>Pdf0FEJWEQ{6SCm%z_q^!Kl5CRG8be~2~Bn*Vr*e4zSZ7!=?7 zbD}!y?`NFRql9nCSAd?4Q(c*YU9o+%Mr=B3#imV}j_)jDHfWBK>zZ?qr_ra)?;H9} z_xRtZF&{sB*359$48_EmYV)^l-CpV*e{aU#(vK{UoPGA$tY;Q}iy<>34xZz|Tz^~m zd-OQ7gmsfqY{G`$Z}|Z~S??4Tg)3LC3RkaO9hR(K9sc5HKSy4AwtoEabY|m+{SFV6 zmwxiopM^{DQMYKWN+&#r?9rFG^|nV7HB(hZeGOKRyO?E-{ZcM&I89c>H2l7MO?dPt@))=tdQ4V zdzG~r=s*T<8+tdtCC)#;mwf0;{=$EA2L5a8H}XJ_Gn;{*^i7^TE!?nvLxg`zxPv%8 zFA(p@=|;Nz8%$#sd1AL0e&gYX!wP(r$v2ncMZEIzOW_pdfo9_G-TQ(HFnjzT&A>mx zerpzfl}Qtc&oV7s5B{zA%aZ(eY}+2bK>Q|^3tBstnFku;fyy}fC#C-3-4nt)zwpJd zq-0%KS>b$>Y0Z*+7fzwPvG>~h8`D#z0~^2#FBE>wXG;E`$iP1;!v8jQ6iw29>8ry( zJzT$TeYh3uTUkdb`73@^bLFpmt~FQl(D&PJyFL7`|N8H6)5cA#)lz(v6#kcE__aQ* zA$}%*V=X^+<(1U`UjCoXz^^`%+Q^1qZM)>N^_BxJ|4${Z**fqmZc|MX|6jo04B4YA zQ}DU?M`Aw74`q4TX47}c-LO{>FG%`t@_#WY|IGTO-ZX>1PoF+jG5oh?;2+Dm*3C2# zzr!Z^XX4*(@^1lt%CsfKgsEixt#DUWvJN+*O7^;L_+JJ;c~1J@9Q^cUsw4bb$8+29 z!9U63+O1o+E-C+(;P-juncw|^I&N*aW=#pS23j3%Bo9{##k%d=FDrp;J>` z{J-hbS+n{*iwz~ej9R1ml9m5WmA@+=gkN@84d5StO!)B?sl2b4Zri~BLZkJ+OPBJi z)}>m$r3{cB#AytEnZNa|$G|VYlohr<`Q>Kgw|pWSmKxSTc=>Ccq{ch^7RSG_x$@rt zeqnd`w}yYA{%^Sblfs`Wvz$&zw_ICjGV4yqhu{9zqv(Hj{7w%Ws{h4ES+ngzeg+{Uq|@~QA+ zCt1T|r@p#KT2 z&nN#Unup)ku@gfp!tZSJfp3VP`$P;eQVNa-|C)*4wST8iou1gZaYF)oq6q)i#Gjx2vwVty9ouYlpeYoSr`gwg`9Jz7_^X}% zSF(TUrI)4uj2)Wpv;@C!eh!N3zuJE-#=ptq-%_2R{!5tr$I18nl*B~z06+2^BVSRJ zCnOW27=My^f%|kn{lCOx;HTeb`QPxrEd0}s75`^5@cZ_EGxXofe_CSGrj3c}nrcfY z{eZ*^FT9YLHFIWyIGzc{f*kH>yqMSv@<(gf@UaAc#3!>+Nabnq$?#7|JpR~s((u3h z@+%4Ye@(=1b&v5mD*t7_A~~!57nlFY=(_MXq5bFTF17!s(-$ozhNIcjA^)1KTN1QY z6Pq`0PLypfOO&%0m6dKzY~ECwD1|m`*p#5poLF02ocQpEKkUj1(~GDKi14cq{KR*j zw0^(ZKZ=`*{@Zw)`v1wcQQ|5;~R`?vml6}8dy ze&L@X{H3MX6gvAc*%T?BDYk@^TUAM_uBuKD;}%jmp}InOWozP&`L|QftE{m69O;Vj zf%i`czx(8O%|^$!|0w^%sp|jGzHTCZjYH7>9iaBF#`x6E`4kl2hHzr}AD=g}n;<<- z#&z~-_$QeBH*YRO{=_fFhEi=n_0!C@ihhgYx{9`Nyv6p4bL*~e=b1a^V_ym%)5c2p zhVhp;CEt7Mdv?FtfO@xLWIOz^wsU=HOUve4^ma%@xW;Kv?&B3!>=BjZ3N?AL|A|NZa5Kh^ltxcrkc)cDUvR9<7;YX41x z;@f$g*nDr7&Rv(&cJaPp;`zYyz^-{dU>j!bb>cnaC!TRD+H9KVnL^s9ioi7$8yoF) zO|fSbcgBeOG)|Tr%ah!bq%m~fLtk*l%o)VOo)ykAo9vl(-R{%-?48kb{ycq8`8x3c z{s80)Ncg4y7skPJ+zEOS`Wt?I-x+%4&~4^(#plUn8_l&_)bDnEZ}nB&9DvFiyXN&H zZLj$d)q`%%(8iZ2o96QP{$gAM@$}}qAydbwO zxp%sEx6Q9CXq#W1NrhaCsFJ;?JVgac<3{Y?ig7CB`~f-HtLz_I4|ac9JQxYR1W8v^ zCrEEpZp2AtrInZL{rZ>VvG?zde=B}03?ijT`}l9!j&+|fya`Q)gs-tp_jHGDhkgsa z0xf_%J{^1dE61MnjclZO^=$MS*E8u=u6c_8mic_P@Ax$N-}D}pbzgycL&DXZP4~Bf zlwahhQgh}qDC!ZBj^AtY-)hcYveSA!)oFQ9b8+*?$?YTuPIBNR2TpR}BnM7%;3Nl5 za^NHfPIBP?A_x3J=qC9excnG7z^IctBXR!&+js5>+I1@62j5Nc`(ympd-!-Vg_dSU zm6I2m|54#@-?^>f$D<1T@uZjXZvT&uFn__fAo)@`mX9_+nN5451$@|!?~e9e+By94 z_rjo)$Z!fP|HKjd$2rg)k)qa|=)957>Sy)i3!#osS4jP1_2<=BRv%u+y4D5i0O?+| zl~33A`slm(Q^$X`Zf)7NW7l4je||w>Fm&j!VEDBopy9#D5hIL7j2Ov&WH4&v=wR&V zalwRf6N4#}rUt~N4VcplS`j=jhF|H0nZfzcIOrDW3Fv7^!8aZ@hLW@kQ4OlHz4SHX+I}Fer)b0-z{xB76b+Ok(mUpSu^JbvuDnN zW(RX-%?@VIo)gTSJ1>|w?*{hQ8~#f#xisk52~j%XD?P${6C|ukyT-jd*|-=yN*^C{ zW1Jf2G(YdCR&pPER%3u#FDF_8X^!k==n(*qXMZX-R)|0{kQ8E);H)W|!(SNW;p2xj zqrvp)GXs3qvY!#)uQr%9YfdnA`t)GXpuqvQUj7qOxJ#frp+7^yM%?Ed{Il5{kH-oR zau$)FirTbljqm^5#l$jOiZ9pY@{y0t*h+6Z*0E#9m9l%n&+T$zel5lJjW`MN-_1Cv zBi0US{h(qBm|v-7ZZDtKIX6P5Mob_nP2YCx+#9s(*fz+;ztJRgdiwNP#)Fy2e+D#o z&=o=Zc2a4}i?Tue7~gq5N|WL`m|u3zg?SPFp%#N-DRIA65$|t3@l?vS_6s|x-NYZ; zr&xreu@%E6CNXy0SZJJ)Y|CUvHe%Gs16LELOtCXAy|iyluU@@MPw#$uNr#RdR_5pD zEk)e2sq^FM(lPO53D=8YolvZ|o4a0x!`El#P^6KoBg zeaQ=?QTd}$J{bPa?Sg!KO0fo-{5~(h-)=zsS{@J1hMt5phAqra#^`33&Yg)7aQ?<2 zR}8KZUTi!LX|9Vo(b!yz=CP9mmb!LXb@-9VpR{xQs1xr%JYinw5b-?r5D&5nKlvqv zZQCx9EKDz5S)uacj}V1p{hP;MK>0sy%8Xz%#4RBo6bkz^NU}B}cE#cgF1TR*$dMy&Dib zvXpu`M{#-<5~H#BnyatcL4KAkDs#Oymuz$3nj5ycUz`8UlDE@z_dWYP(g(AZQ{L10 z5%{pb&&3y&VRuPAVR=`4P&*=R^Y|%4bshfX{Lo>~dF$*RXRaALddz+>nhmP(XVM9P z-|I>yA6R!V;m{?0FDWN3iSonSklI^TsI#|io5|nGI-Q?Q{jGcc+PP!rqOqe#??K+e zZulM6I1k=4nR-mk-DmRPF!S&GyLUf*Ejl3lqPw8vwq5zZQxZRQhT&gu!TIN}Q5;+_ zQ>F>O*LCHA*t&>+jE*;z55li|Js*@G4)wj{k}B#3UlyoNNY;xxcBkS0XYgB@*SAlf zO*|{?mgiIWoy^@D`4dk5aXuw^p!hh{3CqAO`M&`r1@7>xyJg$QgrAaN(SUya%B^lQ zxjUJg+~Kdsu6@Ms6LgQ>BEun9T(JxP$tyspGVt$^`k=OD;HSTapHXy2R`2N&>rx&5%LWci!|(C> zeO=tCG#)>_&^z54FSq8WCHN;E9X4#(E{pr?@QVi;bFfYL+uHaS$XS<7`ET+ku2i+! zvtIt0xc#}>04e+X$Ua_q<{0ya*0s5{XR2@f`y4--{%*;CVyGBu@BOz8Kk1UKn5_+*MNF3&#CE}EY#M8FU7Axm;h$@4 zulI_dT9Ya}>zOmLyJzj;)M-;~{hik2W~QZ~cgi;gex>)&S0e7Q@LMdbM)2nlw`x$e z)`$6bXMWSC^Nu?{7cN=4BwV^|dAM=~Hu9@hhL2z~js1b?u7AEMd&A6HyH9@V)8P+) z_`~q+MT^3YK_@Tc^dwV2r2UmyPVncs$G z73Hke)p~B$?N&Leu3~*NYk0K=c@;dqlejX(1u`Bq#9OsjiF*kCw!*JIY#sg2j(>2I z@PGBIUpL$pU^o1%I~M-&jp9#XS00@)eI_w~-VC>F+se9SVXrou)=j0G!(wbv%gV67 ztb`YpTHn6K;)uvTee77)|0c@^UrwaQ+J{_>aSS>LNQ$F8ldymrI&H{j!AmE|$nW-Bi|@tw!{R{c5< z;ooiguW<}`0PuAD9n$eL-ro%T57fc`L(BiHLuajUUEFawx!-Rl##322Huqo`Rl$e( zx8DXX-l28XvSmic87~ZfOu1Ntj+u=*yncJ(Le?kO-$wBG8P8JtNBGsgPuBk?{}lc^ z#Gg2R(qE?z@bZ^^d>}w}*zr&ugbzmMQeD~dVOwY=}FZr)pvC^Kgv_?Y~(0 z-)#K%qyJUtqv}7A%H{7%{?tni$=~zR?VSyWbTw&XVfZ5(Bl5p|JN@G4KeIB{$zF9$ zHMZ{0fs_0Z)BQ&9FF1bqCx-RmCuUn(nr!?al1n=FczNiKWmhDUA1mEEYv%0mr}$th zuPB40_l~wu4&Hm;ec?Ej6T%L4^e51tW|Gg)kRLnXT&xmvw-i-X;5DyHy zuz>6RH@-i74tsXl-<8uYl--u_>zhURy_!9HmgN;ICo|?!Quv4Y@=yBT82)!u{tr?8 zA8Y@{(`)Yqm&z_D{}_JSXHP}=UD;h%zVUa}IVKMXKX$3%t+(77E?vG1n>N|Dl_#kJ zK9sCo8-C)GpA5&tSJVGUSK{xB;dkwS#y{!f{NctG0){NH{2iRR&tu;cfSa&AWW)1Uk_na71&@)jSY^Gg>mvG{=F zWXBg_w0TA0&)`8C{(>gqSNo?K@}Ces@IWMg(*fG9w9lW6@H@TC)PGl|CG&>#S8}8- zojGl0_@_TV8&=Q;w7d>xSFX?>q^5#tiG%e@ip@A9+3az(c10l8vakx+aM~i4i$DT^Dvo%Hw`aS$*Fr z6Q+cJ{?oIxf3aPybn-UrdN1YO_rCxAa1vuJ<0W(YRStjjJ}dj{%D<`j+osw->i@hW z{8wHvq(%6*2>*Ae|Hn}N(|2+8x!O3Avm=)-CwK8cedTXG^35c6;WvA8Y>wCA+v4uK zzihrpq))=`>N(F#;pW)uK$6$IU%ZOs&-$Kv{>ucdLL$H1eB#Du&KA9m}pS*DItTME(`z&nipeCYq(9FDQE9^rBQ9P!ck zs(eFUaQMZ8h!4W;DT%+p<5&AHt^eO#{9bRR{|`O*ko8^UA4_>uebS8^OU-ZIhIJdl z4UAoF1lxv^_2Ig;>nOWR!qwPo7q2P~*Ws)3-g~|te(6hJ#(rJ)+UPnw5dJkh`|*!` z-0V&*eze-g&`f-A&cYYxY>hY4N191&Y3ivI4?J#@eN6uON&IU6HwVAv-4s7l`Bvri z!{8TYVfST#8=rt5ky_W7O|=h(4*TX^?Z?hb$YpFa(^Ze#2t>icS6&imGH z*g))Lc*lMNHt6_mu)TbeZ7|wkKFa1^cfI-hnv9LE<*hgmI9B%$*^pY=6`pS=6EuiZm`y@IyNX2$4fqu__2yj*PomE(@Q|2*XpN7YuptzNe_{M?;) zhHn=w4mVepg`0?vY=r;8O|*GRsryUI%EHZ%_M%Oj`He9_eNTQ*im zbZpln9|hwn(=>jIZ*%I3(To?230bp1tk+TD=+Ps?Q4yt%M{uvF=y#qcHY~bN87SSS z4p2Vz*i}yHocW*Hyu5nwGym=8e~^3-e9_B4*8WYsFaB=h!9?o=Xq-yA;K-HjD(f32 zcfXrEitdfdb1Q3fZ09jN8Q)iVukt^I89t<)yJx|_JBDB5UrGJf`i~g?FFE`{y#1dY zzjzz**Z9q`)eGWFz2q=?AJW>p;|OaKvoOUe^PT#QYbI}D_B?XcNqV#w*H^6WPUG>FY~wNoM*l}^Sn9lYT(|XLx(c|Z}|Nh z#w7l2JGK7H@GJi(@eg+MUrC*=!-EFCcVgW;IV9$;);~!9!Jj_KrK6$ijNuS>IELTKfaDsmtve$820u{yNBD~_A9$I@ zf70ZiDrd9giH6efKlz*R4*`E0Cx67O`d_vdwrxfJ?K>ysuXUofc64C>{uTI^vGp^@ zRUZFnUV#4!{K#MC!7ts9>%Tug-ut>` z?D66g_%FYFPz~{ZJ$~7tAaJ({e}^tC2Xpzq4_D=%Y7str5#!gc32(gWO2M@ ze!Slo@!jJ#-%g1UBS!31Od>F8-GgL16iRNgf9iBfM>ygd0Q@i+G8>C_#2^}k?%)R! zTL$?`nsU_qP0`k-zmZ6%shm$uOlbk>x%78szPpig@~QG_@*VO8#oE=YX!o3Q$|>vd zzl82%GZO^AfRJ%&+X?>8!r!_Tc4Ulv=P3Aj@N*hN*tP^kZQ8V1tQb#c_BeCHdFP#1 z-ur^yl^0!jVfDoqT?AcR>FJ`2E~+%TkbR6UGSE-UhO?$|1G3)J?pk}_g>1s4u=2q(@(_)Zfel` zqKoZbS0dze;^b=RZs?cLpCHvCvh#bb8KnC?$%aopzC7t%BU(#K5lzxn;^ z(L4UY{$c2Hs5MmYwsQ~q-wphJ!}b*eU#Ua3O_x=7i1c1h{@RJMuP6DWIAhyci~g(r z`~T@?_+|f`+?vd~vFu*J=9jSU`|i~BK2S9Ubgv99M8w8CDwO_0~NHPi~5wN^oHA;(=C=t73ivLR%ZuCardGg+ zp5h>VqaGzaJWtv>bSMZqqi3g{)-5>w^lrg9XLJuLYAOT9{e!#?asAWl+&}kXq41=H zMTyIiJjAh4PA>e)C4Kp=+T`YT<%Bk0&d0g=Dc<}%q&c9sBl@|3Bho#;hdvEm1WD4gjraz7(7FH~w~p~fKQ?nKtE>uk?AaaR&-N~3IB(TH zt^-O;PSB}c`=CpQE*#mj$|-}9#rN5pjX1~bTVX>U5j?<$#bVi(=jG-a<>t0ojBU_j zd|IgO;_YYMo_obRNc?yPnhC`!OU~@u@pRUAtn{ZgX>a+KnqXJ0)}JAN_-ZKl8{y#& zcf~ywe{b3^Qb_6d?|5z*x+aW@JB$5%tHt?w`OCX@=~jI1Ip=QZb5Wm4;xKH*&UN=S zS6@?m?bX-TUVYUyyE)$}U#*JKbN>0~m(uqw!3Xb3`pnXqNLOsHu@U8!k3gN2&QuEh zS!(Z6>C>H#AMFXY?%oxs{we5?4}Sly)Egb{dj7iGd-Cf~$#AswoQ}7`{vIC#E6?nH z#`=Ny93OG*@LI)_jK(pn&*{eJqq$`Iw#+L#Ke~){@SFTK%WiNV{ikj8FG@Rg>b#Qo zDsL#Ch#%;L*3snr6MGWh*yee_eG$BT%8ng-_XfLb_XhdxDM-mn?x!Z<=K=GrAw4Hu z@{^FWv_t!j#n|9i;=f}b^Xi9_>(|YOQRD3q8D`;*$X~a;^X<#M>O-16w`{!`56749 zY3o|GHrr~IDdLCP*nfcfLnK^j&zAnW*9)jTcJA9}`19IPNyPAHdjl`_TTc#t2fYi& zEXFea7FJ$z$tBguOumvW&5YUjeUrvx>Wpog&F>_|Uv=-nrjj*jM}{$$NNnX2aH`KE z-wWb{>XO?b2GX0h6}Bk|cJ250DOwxHFSd+=R9~rlS|nc(=bUrS#?d23VvCOrxUdvVV?)Ri=Jx?b5UVI;Zn-7ZH&thD|B))Z8lct)9UPCnlhGxOHwAq_a+Mn~teD_+$4*Jhrj6Ugw`* zhI}-4D*W=7@e_{gts4yge(+QN7s&o1mj7dn>dEl}$m(FQmy8=bPIcK)ecSS+!~NdK zI)>GFoBdpAQN4Kt9~tl% z0OwSp2eL^Pl?Buxq`6#><#sN#BHj*Se3)~+;>xY`sZ<_nzEyn& zjWr}Uk6-JLo%|hpz{EhA0yF1vy`lI}IwEtZBC)vLYQQx&Hy0mZKEs?zI&F|C!ZXFH# z;NOxMDslJikn|gQF_oY3P*@l>$7(IGSt>%xw{WqY~UrM!$gnx(dGyk4f z=)0P33_4h-wo|gM#+>TidpKXRvWonT?|{WOzNL z1O1y;i+c1pWBo+h)hhQ{8&@xW=_G#f!tZ{E7-g)rb#bdJi3hvR?CG0=-)t*#i1N!$f-Iwee!Y|#%ZzA?)-?z2Z4u2K+H(*OT z!`4IF8m4;X6WNx6VgBuRIGMA4Ti6x*{i|R7YB-a%#dGJ)3m^UFV__L_~BtTJ|LsS=uxBgvHnbBh-wchA9QY;Ul45HwKM43Zy={Z2Xz0h>f2(c zvvl}1SMQE=$I9V`@-S@;^q&~jN%@1H_42a4(0cHO@k{Q`uK1a!pJ6?@({HUqf9%`e z49AQfjgHIid;)qlE_|F=aNAgOt~K29Pw?!se-0-^wi%X2@gNJY(UBwgql@x@_2aH7 z%*zjU?c7PfMg8IUDi z$+V&a#4}u7yxP{@%U)p<{JVbMT&qtdQ`Li7ul>*e{K0TDu@+_PARSnYEt<+ps}Gdc z&N+T9S@Db$3E7A`XWsvHuL z=B)AuM`F;RL0ie=k}+dNt^PBwO+n78RVzIH_irZoXUIcHO)0qQ{w)yOBEOP*H;>EA{ z^L3A7_$hycUv?*||5SEKM$-Sr%m0*~N`AH$9iEy#OO{}lebG(V-$;4znAu^-zIE%i zZQ&~N%lqDU6VEu`BPRbW`1LLkb`JZnK}FzNf2+1oPDe=a_2&VPpLNGI&A~6<9}d6j zzX<wY@totr6FV}8S-WC2QP5!R_ zPs%@u-#?RmuXM*L`AuZ@-~aWia2v9A@l>51QdwD5_}wSI7v6N^O;&EC?$`V4%l~Rm zk3YaXittBcc{x2@J54+0i2WR{uHqyZql$`HLT<7yMto`z!dRSwd{p z&E|`!hB{C7scQeMEMAFy-p5ky;H11W`7EALmKgpnhF?4YZ*SUq9{(f4PaP<`+a}^y zK6Uc{?sq8v4Zmz~UHKPX62zM=YG ze!u3-j_S#J@jJah{`)#~?4VF)+Z~sL3A6r3(KT{TU z&wcqc0j#p+QXE;U$HWWxFaa7rX+k&}yRMIX^rInhq>abov+~6Q_uudQ^dO65UdZ4D z`jo&%YG1qd9fV&v)ebxtd9$-kl!hksx2 zH@=~|#>GSaEuu0Ox8Oyu%nWez%%{U*Cfm z4-cPulKzkCKjDWD%Kx*ew}h|G*iH1DrI$Rey8RoEJYw~EwPGYwzu$NNJ>jUaqpe(& z4%j=mSN3(!{prt^*VNXME$e^(@|O;OhRic`A#v@s!*^*7J{W~xou2&DPfxm`8N<2Z zXUu4$wf)@uW&QGx;s4%~^nXqM*qg$KP1woK!DkBo{H;%~KAL!8{D_`&dQaWW`Q3Nl zP2C1|p4I*j^zGzt%k0a9AKYpq$=Bfme6;ztw)(^0dHg%*zuEwiPG;wWY%sP_-fJ8{ z_4qC@48-{v z&=`>$Cz3t-G-xt;dJ=hkI+$+$z|CPPeLL0f(jUbW|IDX9gKZ`KAMlJv_tnq%(iiV? z`5)O!|0}R_{nRHvWj2rwe^wq?UhaG8rInO-n#U3TFGIn)DovMIF6hF6+C_`7Q(neA zM=jViuT+oxqwD;xe#sA>`k}Q;rT;Fr`Ic}UcIWHYZwgD%1>)YPsI-jsVJY_08^a~^ zUv9kNCd$fL_*Q&AtfBAkbO0ZNwD0b^>+WzazNO~QnG=2$KZonEUHA1&4Z8nl{4r8i zHCE4nfAZlodh}QiMqw8Z#;Mo0xuzoMd2UaRSV!vSP5B+)Yl8;Ypr0E15%22f0r=Jb z{Qh@;K-x7%^XRnhm94e- zDPJpVi;E5S7ClSZS3^1R&O1fnP4AQ4wX?;{o=)kRBJ>!^qjyzCbn+m=NKjoL?uQUml(x`ID@REMXOQiBKN&GIJ zY^5#p(GPz#S~zwyggs-&z$^Rc#DduBWXxMEQ`jh_y${v5BsYc#vHOlsAN* zvhC4te`wI*{II>o2jGKzhRJuB^7v|e2z}rKA9Q6GX_Zfz z*>mRN)8(P?#TQ<&u`iViqE+~7_`@Im5YGSX9g*Fw(|cc+X3F2j)xa+NJz0ANF7^AQ z|L8SEHCLwgaS?M~Rmk4*fZC&(?-zEJ53-+j%V7ECSt@P{At|MdryMn#7yMt4ly#>&7+Ve+kqeZNHr>&poE}eT1EK#`P+G?4M8Dd;ASxPrDyo!Z$%}ZeBjN9Q1iLmz|SyA$ras zkb!n>B3lGQU|h(i3ocG_|wxK}D@w=l)P_o^}PDg3cW}2AB5f7tn?Xj)Y;b_rQUmgmvIUhF&8Uw1Yoy zvbX-=#TWM}cRG-zO?;waNA`n<4B3{`rp>#w`6%i~h9>Li@z)9EfA#g5yIv*P zgP%E_*6QE4s-e7dSmU^L>}dC%?a?B9EpE^G4tikiMa9UXO?c4dV>hP~(^>K0gy94A z-J!G2JZnAJ-!a*@mOuHN(xSca4>7N3=YoCk;6c?|OK;e1O=Qkf95cD^HZSw~@E=6E{XYuyG^$3uW|Yjo;$Kam3N0cah(ZO78f}t|rcou&aHqw%#8hY)?pi zv}MB|=S3oMIN%+T{;M1`Qg%?CsIoxsUUXKE9vh=|fSGCb`Qkmw5Apu3jeSAX^g;l(5-9NlHu2A zOFyWeN>s0HVSRd_|b*XWPnH&B?R}CGuO)&{c3)oqs>gd;;_k!wdxg_6Xtq=c!gZq&`Gb0htDF6AFw&`>P z^crMq;AOX?zQUDP4%N8%k%$Kk;%;X7DR~pW(BU3EYIJQ+*7Q)$IepKey)FuZ2ccv~ zhU2s?E`QGl?c==I&wBXQxvg0W>`>Q1pL(MP4u8mZwf0_woqp@3XPnW!MB{9<7Z0dB zcDibPBWpXUkL0k&`v7(1?es@u(83JSCp7O?Z4wg>^1R277gXhf?k6Z|5E8%O!-0V&91Ba_U&8F znCouFEoB>FyZ}3ErokQ&xNM9inP(!*_!d3PZwE(?99cVH;D9aN;cISQuH!lGN zlsAezRy)wsUhLln z(=Rxs`x!yU&ZihAmcrRSS$IZgshwTt=I4{DV&$)=FIz~5Td|99@f@GtLi*`D$*`D=X#`e-Zgj|yhbyDm5t zzXh=^kK-$#`=Qq%;SoRLxUBx*T72)?E$*7`6{#QkBWMPsF=|8Gv*!iD**(v*ipnnV zL*tv%2mMtG-~DUN_z(VPx^$rQ$Y%do&s$?3MW)tfKqi?t>p~&a7rGhJ9J9vPBvWB~ zH%2_>k`>_yoQ z^>Isp?r+kj8>N7qptGS%pv$5D(0P!sY9zM)7wQ*J9Ht%XycwJS$nL$7{c9We6J7Mb zHTt@ES{l9i_}|c+&pY|2>wr?^i~1({ANcS`G)K_#4e2V)Bl+k3548McO?pzFQ+d=L zlHRF(Bt27|sc~RWI**g?(=&Qj@A%)gNvs;o`zE9^=OyS>Nae9ek}kaHt5tZw%!MOIMzIQa&;^9jg5=P_EzWmdMLgZU*3z_F5svn;Pg3+7=Ogxw7%_a`wXFSD%)-lw z+sZpOiif;YZ58Q+zHy>%TF0^kdZ%a4bJwZg#QK?JKTQ2`KcD3LpsD^?s$W9?gnr5d zt$k0>e>rsSxji@WPT|-1$0wi@b-M@ke3$moyR2i}Wn&T%Yp$UWZnmloj76v)uDM-DrW>*Tsd%KmDe+5p)8SakyCwg} zp%bwTP@296Ev4LAkA1oulgg04@<2nBmM3=x<+H3dy zFTwvG;4cP$MTB4FSF`XZ@7Gver2o{Pas1ysf#om!YmPU5%91$#6FL9CH~2@4*oVI= zm4C|rs$)*n{I9W-V#dbH(OL7Eo7CrK<^vn6j`W|r6vzMA35@><(zcTNZxdyG5NQs9`N}4;@gT0ulaA`|C~Pb9&hT$wu4TEx%bLeZw_c}(c_5Pg*wLd8Xsn+1TECM0ze4(6Tc{JHF(jqMr}IpXl~$$k zG)QAfy1yx72P#)DgVc_FlM}_ue2Z}l=00qGMROsnWs?n;rAOm7uS3s5k3e6Ate?WT z^ipj3n3J@*r>G5J^Tv(02O{jq|8VaMF4)XF)$jG+`Yp%5fu1FOuR^brzBi!-5m}n4 zBHn`ZjK-4w0(}#@6ylMroA~oVXc?rwhU92-YV5U!&xmhmj)~u`KgK#e!wcqQ|4d^w zniqUKFFz0e>6h<_=1#%g1pF!NT1!(&St38=ntKu!KRza15KoLqLtIY6E%LuhR$7Ck zyrXNgplm!C%XNHD1WQ?e!(32qNnw6LMcabHEsWi4Wt?VfySDANwr$sL3v0WoIIiG& zDZU0v=$ouyN(jDT!>l<%mrn6u5kAP5YaAn`2MzQIV%RUaxDVLdsL$``m%$kPO<3jQ zQSof>fwrc7+jb@G+qGZczFh}TCGFa_FKJuYZcSl+;i`hX{1v&a+sLN|_$_UE=O`$? zwdLdmNWL&v_U?T_8DlU9MvWeozy{*z7}3}0xaTzU3=f|LU*{ zzazumwM&;(*hp=oPq>foA7<_{fo%q9A_kWu(mD3%=&@rGq@VPSI5ce7(B0=?SB)hj%ipFDw*>A&5zZtV+4t>L<$rBGL9`$5maAzZI1CMI%`2FvHf8xfQZp80Cd3^Gu zL$Y0y&l+B;`C<71i+GT;uytq%h$T#2tq=}uhkcHI56 z)7Fe)+)OqFv?=QK3lX(9^t+?Ula691a^Q?J&QLij*(i@s@Zi~N{&)rZC4Ku|QZsex z6yg{V?;s67>zO&1y~DJr(-Mz9{#dwV+0yW#haZ*=8Ea3pUSLvU7_oNRo1L4Lk)%7R z2Md{}U5tHKHS1>NvyXMsju%=p$vWReuk+3;BOeL7&*uxI^Wp_QG>WkyK49O8o@-XS zim{mf{RdRW%7r^3{Ct9PJ11C1xwd5BzyUj^P6I#kR}6Mf!mja|ImBK3^>2O?ZdOcQ z;C_3oQ+#z$6HG|w370`>vD<* zt%8NDEm$f)C-_U-*r7vv)iug1!maw0z4RvMEn-isyq5l-<5knKd)+V|MELPRAR9Ez z^{OtoAJQiIe*;=Uxw>M|;LCR-dnbP@1Dp??8?L`TeEzxT&G&`kFmEOnq459PzyG`0 z$r}DhCN8ZLSra&D7ydj{CVHI~HtDu6)4ZMwx5v&s#GWAEv~S;jxneh}?$A3ursnM9 z_y-RjEd23yG@mv6|HeMTKgi*CF;1{`nQXS+FTVI9b~Lh`aq+0V{AD{S8x$+ogievRKp8Py0drA+=qHK=2}G0p7bc zC{6y%-I(p~`~T?!;k)m=o8*DTqL==Izm!)EqRbDzhP2O0R|_5auT?sD)iqm5wrt^KDqAok(n!N)%S z$#B)mmDrU=Qx~S{zi$XXHla!UmR7SPr5{JVr}maxC#+dD|fao{{saU}6TYx{*i(zW_^-ms&u>ifC=-{kPZ-WP7<-O78SIgsD_aiBC8b?n$-&6u&H z_agVhkd195bpU>-k0%;Ce*DoHbLJ#w&z-|P6Aw)oKW<;2i!Q3kW!#f@rDNwD|9{2I z<5*ut{h0_uq^C(ArwQyzb}^Qvxh~HG_5am>vb;dMxSIB+^@Wj%*`uWP@>P=}Y#^d@ zY>~0sAP%I`rZQM`F66g19Q+zSqq8|n+jnSJa{l?f%9QW49{w^2JAj)0jA0oK9I$P` zz{|E>Mt&N6#TC{4`}N;^YS(USDC^?+J(7E{@YGXJRsTJbdnR@-L#+jI{pYK%y1JGz zZ;d0pO`ee+s7w$K7E&)1b?@H2m~wIRWyI)Jo@U%hv{n6E&bO1lb_^KMe+Thgwq4w( zPYq*pW$oLwlRs+7McAK!T0`-zFDL4wt9>LK5otWn#`IJ^EY2b3gb{g#vczJ{a9#D6 z$`!poDSM9JlKsKRQDCQB0AGgOJ@({YV+XR)IC|~XR};6h^D2sGUmmDTaC~sz()TpZ zrn*(%&ra?)pEf=J8gw3%ZM%qf{Q^?irSWdV%#H9w{weDaJaXgU+#}smTKSfZv%V!6 zYAss~dt>;OAB121MqBrRA7s-5-mA2Wlpnl|6n8?$NusR5kEGS7aehda;=%8r0sNla zDDy~e@>Ivti;JOug48}!-T1W_eU;<8Ak`llL;Do;FOb^wABRjA7(ZWrCF5X}6()CA z)+Obft$s>gll+BWd>fA6M8=g}nWDG?LGWQ{D5U<Z)yO zoAGYx@t2@xZxXd5@V9DZvw>%H?-8usycyV1i|B@Czd8AU@IL~rYTYVlJ?kI*Sanjb z(dQN%<3DHk@ZGcz(JL!!9!P$%83$hO%J0-6K~7=CL<4yJ6D*TT_ zt6Be8N`1%rk4DS;2KixS26g<%kt1rsPdTW#0KsGRrl5fzlK4>q;SUO02c25>`f1S4_XWU3g#+~Y5j|IB`Py*e!$_k{Qnf+Xm$dV_<6JyHd8@f>!4~^ zO|Vz^^V>BWY?cRlTh(|Fh!P8q*fw=OJ`oBp(AoZmXbXxA5-|3W&vZ9JVBW z+QC($4S#)Y-KLd;)SoIJ5}Naj$^XYK!7qFcKcdIRTKKo(Z^iHvi|sgU9{)PlzrUCG zk5T>}e-7~{b{PKr*48XKRu%~VPoNUkPgF8D@8>I#p~h-FHBI*E<)4-RHb2e#TbTbP ze@9OK;NJuOL;H!5d))9#HfzAo`e#31>v6~TP3D2MfmQ!AZl!Sn)qhVy&E6y&!_U4A zx*z1`5Pw4YzwdbASDKWzV!pKz+k5YWz+|uS@p{I{mB;HN!#`~3m9qa3c8y!Lto_4- z#sl`Pg+Gt-Z|7F<@8$5g$e%Y``8EeJ;_^W?!>+t)r+k=cY>V-~UD&qmzWQp>)wM}tp8u+0qG7eH zq1k=ql|y!1e)(mU-A?JI{=ddJG#>U0MCH}=&FA?zG|9iPQ$bKxxjCrayDKQjYs+h~ zXZK?PWDnBMIe8|HbS*o{CLZEn@So5!UZ}AV_1TpEVyGmdb?oaSe~;#i^qihIUlt^f zd7`rwRtPLmIrh|Hf1_s}O(`m7M3eG+u+)-fo>-^L!wfV?)Y{nttl zlW_W);B3wP_+p{2z#N6`buO~F-|;=q`L-4N?!4qF(k7X)_QMDqIg|@IE1}|OPd_;) zPWnBfR&I~Y7kyQgdoS~@k;u{jyL6C;qxASaYow#}`ZTv8COH12be|Zd$59{QJhl62 zL0QS_pt@>(aLzfsf-W692c6n?2|Bjzz`jG!p|Bl38ru@5sBO@$UTVj0y01ONaoe`U zhcCdFW3GDG-Qf8IK6x7-eGpRL_+jWi=7@g5WAh z5uyTKOS%e!4s8qg9#oLe_X~n{`33Z0@&m<`Da5a;Vyk#6%*(TT?00-jb|$@@+qMh( z54#wf`i7*lD*?%C|vu}GK|3e4y!?N!HwC`ZBH=^2ohsY-fgFUqeiP>@>*tL6q zuygl5Vz=!Lw(Zy(Y=tVf)driY_XH)?yMyN!tO)w{9SRI7r+BVS`$mZyBxN>~)jxV_ zkM6-+i~w#oBcp5(wu4xHq`Ne-Okz)23A*^ zR(9^(Wo4JnT~`q!V^!BK-Bxw&+O61Ax2~rYr>Gmpaq7ysr}*`z9d{)rhp0=JF2!9s zcPUnE0@gJav$igxj>R3Y|C5ii{QNwv55w=9>8Zx9-+-=#>f?bHBK$Y>cWx*uEGSrY z(S;XQTyyO;yGD*0xp(wv`K=uzIv^S=!nPzE5qIW*r)&B{CMsCH?*&Z?7LZPcVlxmny>YgT=#WoFg7LdfU(ac4^*aQmWvvS z()`(5j9C_8H)iX7!Kbxg9<#F@W=(6-KahTl=8xPuSFM{c{)k5@(lxtJ`*iZpAMbs% zhDqz3kMtkVe;YmlD9g+y{{?VnE;{MNwO557+w$eo^GLRaU)bVga)|iQSh}NhB>9wn ze~N$U*Xx^;(;QZPztz2NJZByUJM9DQJG9pvrt*R6rL&;;){7IXOH`&QhDs!R@S7d8 zUk{V~zUI{|hE-N`yF&2Fu}dynZ>-E^njFFu1=-;+*Zm*T!_^LmXuD_cm` zOUvfDOV=)|!KkuL^}$7P@EmJ>qSbS!oI>oY@lgzL^q+5wlDLI&qGCIeF4^c!Bi8fO zsna-~#(sJ@m1|R{aSfWzZ!>1j3}?)kX~(i>k-duIh8m8DcbV^Ze2l)yJ+jdjcJ0Ln zl|gzYl5Z?+@pRg;;m1Za(e;$BB~}i~XT7t1jI-cMPQ;gmr=50sNfZN8^MD!H^-hO< z?3fAR3S#rEEm;??Tf2^Uha19@lJyqqNIxyJ6#v z{yY2w>xyA(yS z@Q8s|t=NDf;w8TR#v9>v#JPvpu3Sy(nDDsydSMqIWb^Q|pZwBd3@Y|z`R4L){_VFq z+dt_;^4U7_m(4&Xeyvx&9ExvaIWheBDOiuLdAp~ycRPJ^W#QN{l19b(+st0E;j4*bsJNAi;iwpqvS)tzrI&~SI?ed$bl&53I?w#I<@I^Q zgYXbd@fvFyc+xtLj`t> zmDsa=`OZ6?9#f`Ff+nj>AU2@#_{0g5!t3VV5I*zU-$ij1;j`plRvzAdoA7gA!}@Q! zB>Y`Z?Y0r!*F3iH4}#*`bWRLEF>srNfBd+KW`}LE$3|80TVHwcg>dYcv6g;fC51*4 zh~Z3(TGr%*pS|Pr5q|9WuwSj>x#yq#v%?ydsj6FNQEuKy-21QG^_6h>vX$tNY+xOB z>5c3^Z&#dT@XI!+LH#Fx82(cl#6R2PKMP+ajmn?zP8dJQ>~c;1;85)1my-A;!xZV> zapae2)Cud?mV_0gU-+d1vTK~7JYesf5PtfTw}d6cJ>5W=DP33Iv6!0W_ z-<2ic4=MjQA$!@eXf1oD{?GIH&pG?-CgB%8*`!xU|0Db_{N*pQ`ocMS3Q@B|DU*~cG02>&cC3PI+uP}!}up5-%8>4@~7Va z%Zo2zvpOxDPI*6*Hs7onvncy#hjVAo32*t#?X+E%na;?ENd)O@IHxr5DIo8^krPQmcUw!_+wVC+4oYJ){lE3h0wtsGp@W0dh{NClXJL=Va z>4efJ{y6+j{wfF8tKGM0Bl=q!mJ;K76SP6s*emX@(yqPmufTuN{P~J?PaUp&7B9!6 z{48FKrR}43^k(7!d;FWR{lBGU_|3LC3;qvB_=}K#Iq7K>|77Yb)n97+N&i(Al#wpW z52~Z3=O$-<6L!fC((z`+F8}z)iEB=r`?Rvlm61N*3BU5r^yxFh&62<6wMy#4W5z!K zyz%X$oJjwR@DWwn6#QzdR3Y;ue#sv>uY)#{R#Bolb6bPmoNWYguk2Vzn6a|{*QxQ?Vloi{(1cM>VWA#`QPw3`6tl- z#0$?qXTH0pPMwsPh8_F#=~EN4X3a|6grBne?|(3{u4G+;xaWy-sH&xsu6eLPW9U7f(EOM*O;z=uiV6QBG-F|0e@KL?8j)PIy&yfZ5Qk!N|Lvbrkq(n~KT z)Ymrr;P&|SKJ`IA^3i`yQ1>Tj{}@SU?!W&&^XG>g(|AB1lX1sM3G#np`n2f@)p@RO znIZo=_|vgl{YTph{A&Mbj7R1FrI6n;@L$jb{It7yXC*!e$p41FqPo)IN6vBlt}ekZ z13EBs<}C6+3D_MEs^HmAe)1n#@l(GTe#QtA)2F86-wZF3`dGzg5jAzbf&z|-27k>HtqtBOsUwo7D-|*k&@_!TYckb4O0C!3JeKPQW zjB{W9S2_IYb&=|O(v-wM8NVYYfBL=PryW!kzVy<|CTEXdG87*~l0Rc#iC15HEdk%) zK{;hWW#W}rUqN4zKGtIQr@l3vu{G7DRZ;m@MxAoYtq#A94`s+Hi~Nsv?%GA;Ka#)3 z`7X@BulA3|MT&a$>ZS6}`lPn^?-uq5zxrxZ&?&3ek%{Vm<;|C0dByQa{rCvC=YjB# z8#_Mn$3Om&vLBrhe)0}+w-eJS-yP4QGQjD+@mk-SNxwmTeve;*>i1W85!Y>|Z9y`8i{L}oCc0axQMtClHq@`axF&VK}{wLOUxQ2fE zX7o~Jv--61RVN)$TRu}R!ms|_*S>a7Sj=;)SFdHfbX~ZD{_xE=-|WV6m7AuAvJ4J1Bfl?r4*nOZg_>%;xK{APzn{p2%KfLyNE@ zSc4tRKFLS#RXXaBd$*0_>pt_<8eQ}H@1M~)uKdAx(z$zvy?-X-8~%FQz4o2hGd!F5 zE&HZj*L_puCwX6|PMyj7_%gwd4fwtWWzK(cDaeO3|1BQ8TY!IOe9-J5R_j6X`(b1p z=|ZFz(gQC;_R^OmIURBO!?D?+$rjBMJ|3NqH-F9BUFqG*W3g}eWB;vWz2fGIl`hg3 zqX~y;Gca#H?!d5N!?tzp+I0 z^cTh)9A;#?G6XI~jnGChTD3re94`33pKt?^+7ZrLyiyYl{MNbTMFHvKjd z(pn#llcNjp&9xcSZV+h>RiwOhyvV;(d;gvI-p1zn&B-PEUiWyCzdJqe@Ba(O4Xyp) z=j0|HXny$1&>tY_%mPU7^LWKeUCX4ua!tI8(;J-Y9hvkR*P26_&+9z?9e=FruR@yV z|0Q%gq_u0p)tpWD=RzGIt$#ZM(tAAV{Jkdst%mmTG^k!b4eACd-AaFRar4N@?IZ_I za^NHfPIBNR2TpR}BnM7%;3Nl5a^U|O2Q=uVtx5g|GFQyFN1Ohao`^akBl&kM{s+8Y zhNge`J-+iF)VmVyH0=8BKj_;{Og}aCMVa^6Yq8AWdK$!T9EI&5HYa=cAd*Lo6M?P-MM-Gqa zA6`U^^pbjC#BYsn?tPc^?H7!nG$puf@Q{EQPUu70TXj+ZX{=xI~X-;d@y0+)L`_O z@xh2|M+Ep$3Wg3D8eDnBkYEUO<&Z0l&OPf)r@!fG)~lMdiI?Y}-#h5u{fvOIJ;&!9 z8{asa7tDbE4SEsMxZQGSX>_c4Et}h6Z{uRT3cIK}He>FZ-K#M_trIjKN_x*SNaN?S zse2F_18IzL>f=A+AWCy5Yd~)MU2@v=hgK~0y1!xY{o_>uq(552Nq9p?AXJy zBO{Fmh#kCFv1;@jbHSzf5i5Z|tMcF-KAz-v9UtE|o-Tj&@;8RRtsKR#`ypvjK55;q zUAtfidBEg9cU~}e?sWn42ra=c+*+&n1IYOscjMXSD<7Mt<;Za5*=Lj z4;Ra(^PF?eSx+3bZIXxZMr#aQ`jhih&BB_Az20-1cLaNCo|bt=_`y7EV)(V!)b_df zqVg_XI&3 z8F&=`Sb5=Dc+gM=(A`tatwD+Q9($?`YH{8@-k9U>^SYq*07otxIA9By zs1wYW!W|sfw_V8(uZtA3P56b^$|t`+ab+IIuVe9mwHd?^8Gg+k>PFh8hX1kpz;pdt zh;kx$^Q<$^Dp474@)l;V2mbhf2_Li`WYowJ2Z((g^&bMY5h>oXZt7DA{{pi?v$hxc z9jtMEPwGUId7$+`|1q7I)Q7gdvLXEA!LD)={Meuge}p}4->kflS_@_R z*aAMVHr4nSmqAnc3I3ztKLq|&;8*`leewF_KQY4pw`}-R-((G#wFBaHK{`&m*RPF= z?Njf_q7U&r7V$}#wVqGkvwbu9C;aMffq!*`|HlpBpTuuAHc>x*VR!2*wcc>b6xrQR zH~S#j-%n$mtf%QSu)m)nTU_k&SvRJ2v?8lR!BJm6()uyOt@|fU31?%wb;Aueg!8VO z$9hL+tE}~hRyH-Fi-w|THM>;J~aZ$`A{GvYxktxESX z;*5Bt>Vg6E6py`=i?i$yD?m|cCE==j7A?D9VSiBDL$J^|T3 zaQ{PKmahus9c-+zx08)2F@(_%VvkZD%C`Tz-+2nX*urNiYYl_3`ue&~J6YA4y z_{qQEKj_Lo!><@k^~pag{`mWZU*-L~i_`I!VM{%WvR~`#b&r#&>Izq1$nN0LM<2!i zglx%4w|GbT@BG~7T>hOjHGKLvPn$iq@{I5oEm{;#r+!iXm;`?9<-27bST|wg=-xpd z+0wD{em{L4vi8MX&A zsq0es(|I6U?0dd`5AsL0+^@7NAAk9aU$nLKQ>V@d-+bfEuu8U>=tVWZKl{f&B+EA0 zy83cr26bRDcFPur*z~Uw-MP=~RQyv+7{H`yZ%vaLuI`}0^ z{IJZNKF$1LxHb8{ZRB)7vbpcxdn5c#zm>Prn6_y4gdbu-?6V)kA41H{B*1e zzxnTvkbh)f5?lL@T<6W3M-1Y%hTrGE2OqrOc%Q@{m4gv}+P`g7|7$Go$p-LGs3ZS+ z@V^_Azho)-&%hQ#{y=v>3nDQOMutfAm=V$Ck|M zxf#>J&pqQIm1l;Zz4F8qo>}NFseAtQUq5EwJf8ST3pNL__D>T3v{?D)$}0KTxo+N^a02O- zEM;e*dRcyFZvMcB!l!@x3_Oy|o$gBy9(wR0(|waM&!p@vV#mVIyJYM7k^lFRa4Ge! z?7f}6AK%9IPuJ$)pJ#%~2z}ouR{o6`aUdrD$D1nuI{1-;<$ubb#j5{Q_Mii1gN-~_ zU=t-@R2v|*f8}#Z`!aZ=HlV}q+5kWO&;O)8L+?%A;+NWLF21zq!&K7;@c)18oe5x9 z)s_EWAR&;19h6OFO&~zRzAu5S1hj5-Z>w#s+SYMuZKun0YOVXy*4oZ=y3DlyPRG${ zXIyHnTgO^gM0OAn*+d{9vLgn<`+vUYzWe*VB)^0t1dG)NC-?o{a^L-)d+vVDx%jfU z;oIM_GVf%~wIAZcHu^w!-t|5Bj(pU?o~Zwi1%HbEulyw~UPAu|{Hps^{zc9<5PT{Z z)Zykk<}I#E-i>5~zb$;^kw?R_k`m`TN%&1(VtLMQjhB>3< zZl{0z-~$iZ*h}N2c)t5K%h!L+&40#!Yb^g$;6EK7YD?<$|CFB9%J&T$%27-k;vXr0LCw+|imIpHTR`BeDlKR<)KyEapN)pxMpxBkzg z@bN6#4UI=cN5QZ0uhwN7lmA5fmlD6qzxqF<+xLGrMfoq^AfLGCBGQ15p?UbFn^$RL z-*eABH~iccSA-8g^ayP_WdM0l-M4Mq*6?RP`>AW+DBljdlm9u`mVNOHe-|!Ww!-jQ z8RI*`E#Fn@N8kTn_v6>@Y^!Iq=eOB)#maq({9n~7_|^XV{73!`zv?v7cQ!VXt`FwM z_^#jP#;6xwa8bA(+sUoqclF@ra4BOb%@L^FB5PL9S5PN>?H|65T_-+z!0LT=$X}W2 z%nj?-hqv8&D}46(?dn?Jc6i)AjLHA;!7u+Jq*J!h8jGrr?!WEiQT;aBMB2b7{`iEG z0c!^~)7N<;yyW7G@joIA^plv=_|liY9Im0xjJFj|UbclVzcfF*;&WH<4eEBa35ohn z{Bt}^e!E`%FZ`PSXiWZn|NnXQf8ky2@xO2X=FN5GU-=JiKMqpA)Y3*?x^xJ;qf&fN z{q!e43%8Mv*8fLdRAxSZ)m7mf#)-0D)jW^dGWjZzkDARqYj(}l@&Efjzhh2BzWU&= zu#0C_?vvOhL#>WKMf)#bS(07h-lR4_`A=W$bof#mztZFItKW9>O}ALt_4w6xeC4ay zkb__C*PVBL-|z~%c(56Hf0Hrb9e3Vg^^WQuz}Y%`ZbNAABEJ*T4GJuQ~iG*G5~zZ-3{X zz)yXNefffguUK90+EcahTf_VAyPrPPne>g%rhMVkiRWaCF5gc2{jraoZQ~L3kxVv> zH>9^^`2GAxQvS(*!>{;6s{hFUWy_Y^*jqB7_DT3vhBfwadG4M!{P08J6<1tk<2#Q} zz9hbPH)9<5_PNV1w>WGLP3@iLN}%=laau>6x0X4@bvD1qydwRob#LI;X${w3cXN%u z{P$m4|KHMTGN*LZ%YW%)HP-)6f!~d13_BRaW3|uA@tLQ&2k&=aEA@b$ao=~}_P;fE zr0eI>M^(Sb+HiY!OZdA7{wJ(t++<^8`bJgs70kx~vTt)`_^RAu{wkU4;odgpzZ}Vz zrK8<%?+hP%43^>*eBH-+n& zH&nk#<$eR_BKdGqT`9kwM)={{fN#2WYen?8)@=xX@$-LUoaNgd@t|J*%l2OQ|Fuc@ z(cO|BkLngb_vho(9E`@StSwu=Mf3Z5rqsr`mBk{-41;SO3WequRd|_=VN{AJATF3?oeL`{KXq=sLvnl7Gh!-qpF{AXGf+8>oJ? zI0*eW-Se^EyyNh>{H-Nxrf=o%C&Lu@f8HGYo{w?9D(#}gHTxZ5uZ5pye4a#@{k#7C zBu394@J8{=-$ZS4-*xxhJ*B}tQ#(CAZSY9*e;WTP??sK_mkw*K{7$ z*T-{|Fos{))&FS>f1>=G57s(k-xlGopFXcE)>zmwUf2JY+M}AN{S$VNzoGfxc|2qC ze;o0*8n!0n2l_vAYS80S`S&{6D*p}P*ZAip==oEk`o9U^ct7zp_gf}oGiJ;%EjSJ2l-hdtSsYy$pcNo%XWOW#NO z*&%!AY{KwE`plAnE1`ytZrqUm=QHfxvp_ZonwQXAgXHLhCf}Z_4dC47gV6n;?%&@b zD+?byrq8YVe^^7{xvqY}ozSy9{~|UN%SVkKwSzu+wRB0vi%N7K9O*nx(gjMA?%`kR zNPU{eHBWPo@LXL=`elmyXiA*V<9=$AuPKpyJW+P5u@BhUy?b}&z08(KHVnT7n{=ET zI|g#|DM)%y^Qku$=Hz6rJo%)a>rOfKl(*!Y5MB7H+}zx%yxcs|mc}TT`zdKi?v~t? zWY2Hq9T$Jz(5gIWsHdUBs)l;X8@h#aqhW;5=3zsJzJ>qX^}TwXyecEJo%6jEq`i#Z zyUKoJdCzS-)HY0o{tQKRhS_2H`lF#xIp_(WAH9LIhex>@W z2m3?P7315cH{sh4pB8MH-25^QEjuQ7diK2eO7)y11WtEK(|0jyNz|GO_?4rH|uQ{x!mkS3{za9 zwvCW~=C2Vdjh;Alhs3>>-P6(K-@p2|8Hz(69mW9(vW_PCACP6`u^bsrIE#X!!22KA zy?1YrnUjf8ITkvWFNDqbMicD0nh{$w9wo8ONoVSq(}LZ5_XX{;GJ-S=*ggK#&(^tG z_v4M1X*~^-&3;_AteWS!3i>kidFX6t9MlKu0IBY3_^A8shMzp@o!xu(1sPfChTna( z36b-No=V5yAA4Z?MxD3xQ+V^BOCjm}sb4P}d)bCYZMd_qhVg2X)t;;W@+at*koY2r z?+n%Ahh)y=&VSU0JlNc0_ny58{4ScNM^-p$d@yD_CQG~$z14ve*)ZJ#35V~i_#zl`e8aYzoZz>1a8&KZ;co+qH6f?;Z@kEZ#nJM zQ`h(G+4D7xc{Epqp8(0p%ZiVe*V?+{2R1>&cSmNu%wx%iHs1x7scvW3l$R9Wr>x#)%Uqyn|i+0oE6==QI0VTdVYX zN6{GH_D3iwEq!k~_O1ok-uGc2I_#>KIp4J=OX`!#j!5CnP|sRvYQYb~pRM{2nX>nr zgkO(J&L88Y7swCx8V=@T3%@}71T+5GIBnXr-Ln5=4m~k$kIw7OGuS+Pt$AqYSD3X4 z+0h;tIda7I?%lhsVJxUVw(1F$3;Z9Xy+n8cln%A%5dO>@8b;Os7K0BPj85OW98!Kq z*wf~B>ez85{s*dLmkyr8ey&0`_(rxS)wDVMh#$3VyIJo$JaNMK-IS5FY4SPX$_0KH z%%(~h>l_YN-}gr zYYFJ+9A;nQo$U9FO>LTF!Pl{W=Dac6T5i`r9R7Aq$^UM={VNE2ZuS@ld-v`=R!*Nf zZ7*{@!s^M}DqEV50dqZmAs1#>%lD4J@An1_=)Wnlt5jX-=}gW^UegZYZ{HF8^4nuC zrj-94+`1p4ElPWyZ_XbyVBmVzPTl;Zv(L7)!3P(nSPN-IUK|k*s5d1GZ{w?7b>b_e z-?tg(8x;N=?Wl`C1?$x2{wMST^n6Bo`htQHBe(KxpU(;%MfuZ;IP1wkENKEIG&#ZH|%EiHAvc6=Ro zLSh#Wz%P={P_@Prq@VtQ&Aa~(=PCP$J9qC%w0}GUyV3^Gw~_3;NPly|M0^bqw{O!L zDDzsMs!Oe1H#BJ-P-Vb)fG@8DIoa7>=UTEbTlnf8J9qC6GP7ZgIc7uRgR~!jUwJ>j zFaBq&ZaHe3UKe|+w5Gb&6dt*_y$=E}>qiOI_o^-|EUW^{Qsi0qABF14z&pEk2ko+$ z!*K0iU+}BGpP#|_ZR*sid*G-1+4%gA$$peBSN}TwGOLf!BahZ>l@~`zr`=CH=i1cR zJI;1fx@jWP5yjmkUa}8g*}<;b^U1~tHin+Yd9CB^cisuwb!hA6znG5#KYjw!T;9{y zrYw2<_0pyBt8_87->dl`z{bo%^zda@z`l-VQ>Rcii`wso{lCnf*85ZtCgYLEPN+3w zU6(GuY^wDBx$G0KPN4rsI3=Ip>Dgf9Hnqkw5$%yRH@C znsslOAA%>JdNRBneRSEi;2Wwz{E^(@f2i~TJ_#8ssSMb7=`_w0$GY{KT;8`0CV*da zPV?nkuB_DgS5y9{l3{)O?z?}CPXT93Egfv>BYVAR=_Si9&1|w{dj!dsK-Kmt^DFSw z(@%xxoP8Epu|bRQn+-lXwBPvJH_X04aaCb^Aio9jLEzrUj{oiL;mX%mhF{0#Sm`jG z&pP?9G?Q+a%A3fP0 z{NRV!i-Q~8bM1jF9!OVsgZBQ#=5GB4LUe{@OHj2Py=kx*UkJCoT@^m?-~;Aw!Sv>p z@93dkd+l}T9B(wN@>8%KtlD2~)$6Z?>xfr8klnrbv2oLe@GD=r&h%DY`%}NZ5fA7S z?aXM`PGvyjWvwClWrrYtL?J(ecI5q2m$@K9FAj>2uErpMCCG zFm5-S9@|g*i6_I$F8!qWF!|&sKN&vs@WW=KZ?;Lq@yeowW{=?ZT#Mn4WJ>r+>%s0l zx~mKbzo;MNj<&{%-e9->Vs=i>@?z%dz$hJtSe;k<+~L0m{LThfHU(RdgO6iFQ&Nl% z0_hY}N0gVqtJ!7Y%;~ej>%R0AbmwJP;L3{R`X@j6XX?aK^HXs37p^v0lAW34e%`T>dBVYyZD=Uv_F=`qGzpAKwd3Ps*h`;sf=! z@E@5taiaFWW8T<&klhE~csr>1O!?Scke8Q7-52>CYlH{dgV6AUTlpaQmks_ow9%y{ zQQl(@;&?#*bM5?d&I>nUv!QlD_*J*vci+8WbUrH-r~H^4O(|s>TNK$!l}O$p<*Vf_*k>1&gx|g4yV%XD4N&=Z`Txyt zd=ptp_U*hKg4(q*Fbluzz0Nu3tnkXuT^0WE(Z~2!Q z{vSXKShra?fwnK|_t{t~9#<{=q}k(7+Td>qU&AlP8uLMgE%rKmX{cX_osn#c)SjzP zBfGlCpLi_1;Gzr623_rcvOg?YaPlDh?452tt;}wD6TAce7Vtm+>`URdzjeLY;dvg^ z^KY#DXWrf8@7S3+bLGDq-<>M(9K!#7$l<5o>+;{$ZR*IAfr-Z0ghp zlD(LG4Nx!8Z*e{cd_R!3k9%*BkC%Sx6Zol!e27{8Cvi&#j3?kfhxYE3R~DL|FWDY% z1-tQJGvC3c|GsHksx zJN)DeW#BdPd+j>>E>M5Vc2GX3Hc>}AA6n}3P+llAi#Q@)FUcn^`9%1eU;ifDvI$#s_^=foY{Mq+?(g4Co}deAl%fuxKF4?P!EF4U z8-6!8*cZ(HQ2l3q&PR_LW#vD0`aEp?Y8Vw`|)SKJf4ZH|-nGG#aZ%B7R2IZ+LIvLJtGtw8nHM@o9g7h>Oaa+4Z7s-L^deG{~%-?e+~RN3L*6i)&FJAE9Q3< zp4Y|_;fdwH+2ETDyk&it+BWDsFPm7(we08D(I$BOTk%10_uY5ni-f-6+%v;P3m3ck zlR8u~b?vp+lHZJ_JbuCw=1=6GZyR;rcJlu1ZEuIKvyb+9A3xvO<*N@IOS8jLQ8Q}P zs4Duul5vsRJ3F*r2Zz>Ho(L1hRSZQNU`RRI$KF|(u zZzJz_zWomSsbj-TJtA`HOnyIV%MYPrvO)DbI7OF0cI4*|SBL_H?f0QI{l&=2ZZ89I zUV0v=JZgM*5B-0WXXU-xb@(7ZA_*T9VD{q?-=;nN^wZ$e^A7(*4?jfxrun2f;g_!Y zvXyDsT{}N?_!+tXw^p{#J^SqNs?S{+KJ>r?Hb&aMZ3lV31AiPF!^=MX>H7WODDQ-W zb=vn%I_V_M1q-|8LWc;nju&2fj?uqOe%`=O%0}9Pfdk$A2WhU;2U6a<_Fv`lN8sPa zJcNzKBm8QEUHNx1FZ{x;P<7^g_uUuG89DsV{N-up5YI3k%*Dst?;n07+_8O!;Wt}! zY|Pg(W?Z!bf0x)@ze9d|QXP29t+(L6gZNeM>y>@=f8>9!XkTV#d+Ck{yY#ZOu4zZr zwl{;enN$U7!6Zt8_V<|2n#U^o-ln@^X-|{`VM^lvG2>O?m%Y5&A^BFZwp@4<{CD^j zkH%;}|M}0Yep5eKb73o2EH}G+wO!)rnfR1>@WJ0RuBZxkyiFd%3z0BO)_1+LE8M+v zH+{|>cco5$T!;!H{OKZ{(Agr zYQFS!^W&#}jpM6ihdCqgTyxE};eY9gF|TC%bo~11 z8|HhL`>sB09Jj^EyVPYn+O(10l;!;+V6%3Q(2iYuSpUj#`XA&!bHntFu{}axed*Mx z)Amu`>&t-fMR}^aPUTwjVd96|Am$-njRYaXY?9cA~zq*C7HI zxW<%O&LWKWmKjg0Zhx7aN>$j0KrN$qn z-{XjX*Umj2o~w7Sp=;t>L-%6W)ek)CbCjXcV@B@)m$P4SwjgA5?IWrGlFi)w6`VZLXu-kmE`n&bkKDmbedp-PQ zz3Hhx!^!hJGQWTS{u_Ngpn5-s*W*87WP!G$X3Ur|+p)Km-I?lq=|$y3DG%xY*U5k3 z*C8D;)dT4E1`7%q7ppHJIWQThou{4;ao)V&=SS%OU~4^NH+#eRajvj`9f}}vR_AC0 zzvSh|knuqF>sA-|`tXF4gUTb!6Ypi;Az$W|_iFE`+#5a;^4TQ;>*4x2>f>uHt9;fhHnbLnw zl>d72ugCmxGABRhTQ5QCBhBxKZ8~$N+tt@h_RC!VHU$rk1vl@iFJ4(aZR)h0C->^L z2Aw4@@529Q(l*s6w5g%=-{Sa%{wT~-eR?(YobW?0GH_aWQqLZ1w8qHV+2MHK-1qrS zK5ENIGk8%c9i(bxeRux>1J+_!FMBZ?rxB{W{{~8~>GPwh$Ie~C&vZb#>;HQE#)A}$ z&?QL0X#PG#DE&&+wezvlSEuDio@|lpBlZy4xlI0{74@{?9Z8_umnzD+D zgYb1nzkYq!WVFjrK5LH3zQ?)hWX)Y8z(+rnXdOP(xs89pp9X$+cn z`>4FA98st28#iv;cIKkjDIV<1G-vDc+rGhf{)KD(`L6zRDvBL-FY#338J$Nz-`Tk< zXfOSD?MrD#>gS@H(R=J^%y==qUAp!^X6C@`HgDq@=?kmvb!k<|nmYS5FUF2*dDkvo zUhmtx&qmq1p-)|f9l`by!-sFn%^k9(Z{NNfyLRikrbAYTmBguXoy6S6_^P~L0R0*{ z8_V}iVD<3?7!N8Da!ZFj6NNfgRxAIYx8KCr@7jYO*`GTNpGS?w}{%*=G` zKS!x%fa`}(6>Y|6@e8R;3O^7_s@yO{s!06&!fE;2qrylsOvV06Se zzp=YAa^K@w?z5pMuksxC(HACNP@A@y{2s~0ukr%@N0nFRp3OG|b++cAZLd`PqUhZD zjIeP!snou{3&`F_+O|o%fjB1Yl|CIjW$86w{PgK{X>JR)x}-E3Cemr|^Y;s% z|9r4x=bm7|fYSnWg@f!4SwZ^@@|0&Y_*N~}^1Rjx45OZD-#%!UNxca#?LqE0a44D_ z=oG#?mWSs8iq{gC+L2!!GqZyJy-p35ty&oz3d7*w!GlnBaQMCIAgrkg!ox=h!}@fD zYjM&uhr-~{yN81Pd-eyc#RTYj2G2kLQt;ac9tysH&pp8Y%SoaU^xb2qU4-Y>atXjS@c!#*(+kcSn9d_wc zI!Jr1^u*H^KlfOo=MNn|6x2XR!kWZnV3Yh0Ty@2j*CjaFf)m6=Sc~}Q{SUMtmgc;o z&c{B?o4)uHbE_N05#iP3YNA-$t_6~_ndP@0E9cR(5gKMg$#Js;5vgr590-G3&c zrwN~e^zIL!X;8}Y$n_KLP~rMGBwP)&H`4!z6MYt*RXdd+cVD{jko7Uu-{=IL$cOU% zJV>~)$yVQ^?IPJSP){zV-dxOH(o5M#yDlx~nx~c8Z(24~w2|y}k6ui&FY-g;6@O3E zLpnXezCda3e_H?b%mwb4GG)r%=`*J9o5}v!GmB;(C@Ly4LMMpdwdf%CLkV;w!X4_1tN*#+wA1=;U_FL4OzAR|Gk%gChg)Ycoe1egFdnN- ziE*oqH8sD$dQNr!{-?bW#k+*?Q_zWe+)2VzW*3hgGd9v=6aENy6T-we)y?Z@E%FFD zfxGGZFsEep6E~iq;8pg2481}>ap{yPllMg9sc8KynfHv*$zSEa3+rNz{}z7ii`l=c z&8x(%{QqZ2-#XC_rAfZ!U%`H7Ir_e=T}Eq%F*%Q8Ys$Is&zvzs`xmYy?xoPrpc56p ze5)^_?prP&BH(kfe+>AgQ-SVqHGW<;61Vin{{4f1f5!Cbvf)UqEBkt`DS7Un(K|8x zo4~Cy@XHez|G$zp%YWLhTKGMtW{1o{Mfty(xV4V@s}mT%%D>^K%pMQ?vZXwc@vClL zgzur{8dpP=|jmd(A&56;WO^Yg37PqqIo#jp1aKjWYS^eH9#!e2{&P#--GhsKypO50q_ zNrb&2`9{?Ivcg`_$&lu5G*^=a>G>-m8>dN!vt;({gNC7HJTUB9>+gT+Y3NT{-%tI& ziy_U0=zE$E(7ch-;?t<~c~UxiLfKGL#?2~MBOuMWJPt7@lg2y^{?$b0XAR#|X-3cT z@H5cUJohN{JLrF*XCTe(%*PMgo8@5Fi}0IbX|;6Q+L-2+)NdXQ31g~5*Uy5Oi!mET<)eu4yv^0H-Wu^B8L!6r zo-{Uhb6M!F@fGvm!TQRUs0>I~;V5On<0quvm!GkAneDtU8GT3b!v|Y;)!c~q0i`Vl zul&(T=O`lN#ruMG;|B3?8FVR>N)~2uU2z+J)>oFaZfRzR8=$g9Lu*Q0*{#5v@5n z9-{|k`GAjrHp>`et!SUwehqU)8?&>rH)m((Y|YBf-p2Xc%q6|e^|!Oyci7e;v;Ah~ zpVnYox16+z2O2|`K=C7sA5U>#z9JW#+OOZ*$&)ATVXmfn*6dk_XO|S$pwD*%8yb<> z(y-^$k=ez?HQ4nXVyt%nU4R|kx^{h4JRmN|19$!+x?l^2=H+cc&os(^3v0^)YqHYo zS9^yI=nm(*9qhKwFaM4vm-w-4zZ@U*8z)bhw2!%?!+ifRX{sqHEvYFkEk+NgSb9k4 zq|7FLvyYJe8s?r34jD3d6MYD^pOTp;AYt}LIlPr@%P-z%wpcE*GVTy*I9C4`R~#nyvTage62e&C**M_L+P~9KB}(E&(Gi9HX}nataVn& zk@8(-YXNz@a@<(#Lo4T0SI(`hx$vS3Yc9Fu63r25otk|F(2Y+)bFtx^Q&~~nyLYd3 z#G^Gq$w6E{=PSZ4*)J$4+(Ow)>2pD8Y=mk^m;8VoJlWYg__E;Z1nSK;^9K$Xu&Ipv z^12%0o9aB)>t!Qf)kbTtZv9d9joyWiX)ovGbX+-k(xlz`h6sO*M{d94j&KS4P~P+7 zA7S@$dQCa=DGoof6yw8Ocr|a{+?wIT^S2Y9Y_QdiUJd!^(dWo+JKe`3>qg=eAxT z?DK_v(xi#_!lB$a{70ml{(~RPY!6 zm8=UhVrs`N{Cx%d3&%>noGcptW?(m7FlLv{3T1A_0sNRq4^kMEk7|RY(<(kZ-?3xP zQu&DL)5maBm(9Bfo5q^oKk`V;dFOr{ zy^T3F!XNFyfv!LHYv3Os<4ei^e>IjapQKQ zv#2)O%fQoo>wh4Hx`upMKjs0#CrOd@9cWXRj4qVUZ=$VG-aA~>7qY>)^RBxLe?kVt z1MJ|QeDcZgq6;r_`wF{#Si}SHkB#I19^b2rU$$qOw>~EP@%NQ})#=p#>Rb5yp1`-& zH!XlhLh8Hbk(xgdzC<1^9LC-z^chTNhxlCHd;H7^3jZB<-D&_O_G3}oqr6@Sl|proFQj za%JD;dx8hZfowtL1M9L&KaEY0)dh9&YYgG#-_?I<*qt2@{IrRqg`c%hzA5}?Lv@d0 zE(rhp0RslE70+TkOys-z3gUxo`EI*|J!3a%zu3C?RS#?qpL>?QWzRXsp11rTUn~Fb z;9DO5ZJf*Z)WQi-{a5eXEh`I__wp6o1N}_CMjc@IM-l4K_k9|)uBrNAJ~qHhi)I$> zV(mk?V|>tW**`k`w}XG9?Ux&sdoTN7U-ZhN@RCnp+fKR_PYU@LX8{%>Z z0sZ@H|1ssQNaNOANIDJILSKc>gl0j%gT$kkvHx4``r)SA?068#zwpcdk>p>#y5jk- zd|!c|w@-ii@<{HrUl;pgx%%Iif7O9ELmvN)oLl~nA1D74$5!t}d8WCa>b$(%EoKYj zaM8!M`RfM=#S8VrRUUM%ynm7esr@s(#X$oHZouER?LB63di;dKf5-Rkte5}t#c`lr@cI?pkNF5<#VyQeV_>YoSK4yg6+}XYZ|{xSKniQnZDqX;luK`BEQadLu0v$ zaItd!!KX=W$P0#&Wq|h z)p?%qeE|N#!jbRT9FZ$?|G+o=aSkWSqnC1r!mhPWVb{Ek z%Xc@9)!c>RewjI$W#h+=GdngHpY`h%pN$)tGv9~*XpI-*Jg~BW@9(9BBSx4`h44%M zufO5?@c9@168_!aUG4l-P%b1JR^R*cxoZ0v4}m`~Z^#zu$deZ3|7DOrPUA$f_X2+X zm(HFwd!O|+)Ng{+fAZw@#rcNm$t&d98v0`g^O^H@GH>%X8qcXNGwjTnEuS)J@@~Uw z^D1@yT1vKUt#e+rNi>_wwITc9;lpKQGNEg=hS@coO5bQ%F6t> zkU0?H_4!U38T&(ric4ni@6@TI=4O1otA4jXG@tx0kk!5D;%bg*)6ikVwzEgdj>5u% zoyg}->V|hTK4uQ)ZD_mdiqWG+Z=s%hvsbTPtElHSepelDV_9U`urn9Fa_W?+jA5-@ zQMbnReByHDc*)$rKK7Z={6Re)P$w?#*{%EPf{_JpjvGI|YBXsm95s4J!KlI=1%Rv(4c{vayn+y|FF4H<^OM?bSQod;K!dKSMJnaIbMlh^(oRV=bq{} zPksy^mEW|NJ9p~x>h!5o_fs~gQ!LLLZChMDhtG&vMf+^;%4A*O(!AQd6Q=Aa|o{^x5ts{qTx`j16k8i2t5c1kKQrd+%w-ygzCR0$;GGN`ldpa zp$L2Ma;Hw6S4s~=^@0f5Zxp+$6WsiX%87L5Bs(rn&HY-sG$$YR8&sB!__o)N@}c>X zC0)i3wZTf`y}X+TB@XICF6&?7XvbLrbTK4#<9~u~fNqS!??l(WPIxVJ1*GxJByq~XM}&W8KKgoG3>(pVfh=GgR=dGB=^D;I}+nb+6%UqTBcERg!z8P%Xxs8=n z*{y(|d!CvfvAyvl@Gk-X%A%r~>O<7=U(~!ZU_1an?IG*`Z8q|S*PtImJ~!>7E&0=~ zO=j@!;dg_rySHOy0Df#(#Fb;fuQdG>itran|ECr3+uka|znQpShkgdN0DtXQvfAea z``$YcY}>tqo&Xgi_Aeg0_|SqwFG)AY@Xuo3Fy$Zh*D=dKYf8eumAIt?@=K^i3FN)R zk(HSp><9n$J>bv4mN0|-_wt{3s#zyW)4xNlj~_h>@KaC&)dBwj9W(w8nOTPa?Y-|r z_*MRi*y;zq(ELMb`X%J>v%clz|5)?CvSv2;>FX)~TMd8vj1J&`H+W~?PVlFZ|4IBU zWUgLI=6|c>PxJEMD*4|&y}iS~w=Vt`3zzWw^1s6B{}$DMZjMu9a997cp30gs`U_i# ze+~3&sD)X?o6(Wkww>YMu}AW+{HOoJJu3tLq2`A_;gu!Kqb+mozs)1r+<;*@Y9BC; zJvyfiojJ2e_%{*vYDhA6?D*S&zxv%^`>wZX|JX;?<3F~@>HlbMFKx->N%BR|9Q+Qi z=5`}J5b|I18Ti)*(w@?QP_>!D*l+8O@+!CO_EgLdpc+6MgouyWvk zG%w8Oarq&5IV(GBIr=cWZGH$IfG0-sLC^@{qhN03Jh0=xVa}X`_|9BUyl&k-&2-e7 zm#P#`XQZVg|NDbYTiy&hbZ&3??;rE{o81&@e3=$JApFF&fITl(ju|t0%fyKjcA~qo zNAr7ACQsSN*k~Vn8^vhK9&F@vf4AnyCW|Ic*)<+N7T7GWXYE8fa2oS#YD-O6)u~9v-_9GXbf$k zuGu*@uo0s_cQ<|M3kre7l6ISRR#k(*%n@JYdA&#ws9RP6~iRP7D6?ARB)y>malBleT# z{rFHifFH$ogFSl>27C9thg?Gks)PLp-ZMHtc;MiB!F%t$2PUu`cqiEV?!lm@nf?d9 zeEAnI|IBrytEESVLtRAi@csvm;1j{oktp=PKP2H1aN{e&c%ZPQl;C3nd~0dE$Njws zzrJ%c41bIFC+hjO2eDzxkAkc=5M#-gvtX{$s@3c>E`Jzaka(4>F$SrrqH` zb{R;;#}C4_BO&b{^g&4L@kyh@F1a~A@t^qd?mu`qc=yne;1GTS58}`8J;LgU4$(dy zGr?Q=S!`9Ro30e`ALiQ8XvemyAb(gcx)_}T_Q}SdWILO8Ow5+Fbgtn8^4?DNfA0ux z9d1TQ^N*TB)ZY_>Y(A8JT2J<*-=g?)_ww7n9}jh1&-r)$ADQ?o zexm~v{2g=}loAZr6UXkodsu$~zt$O|t94$|W$7Af4*X^4#fV-Y^yII-?;&Y5U2TO? zx|B}of-d6PEl@ko?cm%P5)XH3|0nbRtTL~|htUt|GP*spwXQfHdd0}?qpCflBWgn! zBWx#FdtlupCF!0c_m0z}l`gI6)7E=uQQ~?3UNY1@(PGx9@lBxpjg1$i)%-|2O!{2~ z$Bnv&`Ty7cSLDCPAA6>hIK<2O-Me;Miq7+9*3R}8&6u%&HaY>tvt}PGMmNN$xcFd6 z15{ibd(J=KP^f2%XX69iQ!(dpsux%F?Af!bNkg^L#9ICS5hF%!L=RqaV0JtJ`!%G> zJb6SyuzSzGAd~gi6!^IqJPo~w&BTJD8AVmmTB>{vn7;wp0Z7NLg=BVd@prvWfBaf> z?w@TSOzQO!2YWEi4TlaJx`jGjvMPCyF7+^|-XZ*2e@=maJp5Y73)su|SqWzBMNE(S z2!2E&9eVFS(TB-&G)>>4HJ^8BFnu>{FlOO5qkR_pojd$mx4oqvcrHl(8^He=@THYuh@Z94Q$pE&M6@)&ij8q`bie2s^mXYp(G&$0Upd-UuneJ$w&s0{xeikAR> zI{cYADf3@#o$xQfw+QyIF7G4k%Ku0Pe0olV(B+9_Ky=z^r%7i=_$B{;ff~TC`p;Jn ziAU7t3ID=Th4|!f_!VztM^V>)=0w2n(%|vq&to&`_xRO5`X-)JcO>iodibT&uexL5 z=+UFAh!b7fgq$_mmf-!b2a-Ckd3kwTNx#Q0EX~3HEsr0&#VRZRR!+qO>@9UZRGSCn&S_@lK;_+$7cm9TCM|X7mvcD1P=r1S2FP<%S_|2BYbV)sb{dbxY zHYMGy^^8wXK7LO~|1sf*CsF>_#_zw;oUpa<9W5T8reXQR;`lWls9*m5{-5>pU-iH8 zzaD;l-+!Yi;nC9D+V_2$hG9P&%YXG{T7=)#f64s!>D71q`H2*I{Pf$aD9)09^?y_M ze=Ps$|2C5U*cns*)yLlg%yC`hrkuBkzaD>XUY^IVaoqC_=D+&?_3^9!XYxO0^l15{ z^XY9-np(iC7JtX%AHu$3QT_}6v(3c+4W74oBlFBTCJ(ZHBfb(> zvA^&E@Bfax7gk~M;roUw`fl_+Z?jUn9o9VJwCU3hvge|7_toyn24E;u??{C|5)vun z{}x(=!v9iyY^=w(&AamDWaNC4Xn)UEqiC)(;n&2^hc@jS@`s|dRMwQ1mL421V8AA9 z4J5xR`@$hS^^QjH>)A1oWMHv;K+CTx{%JPIr!qcrtMKtrMcbH?G-qNoije0-_yeg; zh5RNS#T6%AgUo-3e2B=Gh|y@`@$o8*;vN;ngYTOy^!Ya8XLfbljCA>%5Oz_@yytpw z6#No}%OLSUGGx3UUe+nh=QC>dTQp{t-TLDxZFhOUi%|2^R~ zb?EQ--59Bz75Qi4?<+pVEz)=DlD;qhBO={X9G5_&ASQK>el!FB(Ifi+KJgL$SpO$= z`TqdsYSWYaQT~(v+W%bR-w$j4$M7GexoEmzeL$Wx`Tq!iLjFJO`CqU1_W_aPmL{{V z{C|YM(e83f*?hvj_fh`WZ~sr&%sLJUbNSCuDc1iv4xc$;qx`Vr_mg5_*tSbga_PFF z06UPjT~rHR5}j+{-=-@A>@R)gvTHBrM@tX7*^0M_f8PHgfw?{4m1{$;}k3MgpD63F88Quf_zBxgTI5c_PvnW$Irtq zcEA1nxO_MV^7*rpa2cd^U(KIN2UI-EglZorCiWZ>`6=je$S{&j`Oc2k0nCq)e0MLv zjg$6wFygoToG;L`ya)D#U+We8me1Q4p>IR|AR8j^4)Z0v!GAk^82x;o1I_iG2|YoQ zw2y|9?rN)(0$~ zg_%9Dm-g)5W3~3aoQAKnlH!tT_A)tAY5P3lqu=@Yi}{3OEs=ZL8<72e4-U^CzJv9y zHSO3#gO5muP;&DM-;jLh{8BKd%b!<52Dte?9x9W62T5jKo|9krr&`XwE$i|3zo)#6 zy<6DR(J+He`26~5grDEZHPpyQp6$6H8w%Mu;79Tx`$lfd&dz={!f(FsO+I9Qm1cW~ zy^pZ%Q!0n|L&zj+X%KsNEFCg<$i^c1J*}8?7<&!FZI~nMF7KUxM~}ae5E~a~O9C(0 z&$IY2dx&apQ`HHQgO}lfc<}-fFrD9$#p8YG8~8LcT^{m0ZDBflx%6ePB4m88_U|-2 z+Rw8BU;lC3oHv5?X!qm`k-aVE9>Ev#djkga-;|!7p*lhP{6fZ$3;BIKd7!w@;tRg* zBG0pBleLAtKge&DUn6k4^Gd>6)Tg)HpqeLi;E9)q1HOoZp7Qd5&`P!oj&i!y&oD z8lV*S@_06)T*BI<=kttm`9>abi`;qc5%vdR@1Y9z9WJgu$?ci*65_A^;vcH?HF1;(f@v}b-Z~FAl!ka$xbLbc0&7b|Z z@RrN}y&m2AxqlB+)4y>&qRW55d(dZp4*iU{pwAFLbYny}eC8+N*FJeyIA{8qVg87r z$Uu2bMR_Ir2+uf>lbz*tu6&=lrFB6T*q;%0?D!WC9yEAUdAYD-cLwF=4GHrH6^0Mq zydr$;)-~bdx4up&TI0goqR_6b=GyA;k1^8kqtk1#XI>8pthVzY#tK-Sp`n8Gh=(u!1@O z`LsRQ*iU;OzG77lwD;U|V396mbB>F7SZ(RTo;`Z5rXMdoOK)?i_BYHO3jW+t;U8{Z zY3Y${IvGIDZ&?K&gjsp$cp*Mm{w4A-iB)*wB#e&W9k|6)$-tAht%Z{KZ~n}WP5uqP zu#^9e$`4_CDcx(@0;>z}0ZUWsfpnhL+{1kB2RUZ+n4R>u413hZ+n6P9SgzrJgz~Sn z8-CLHKi^&$erE2q;f1AFhL@CoA-t&MitxhX%Z)A|G%DeD$>(_Hitr+%E5nP+L|5_7 z=Og+;cuCn8!cUZ69bQy?W%#`-eq(v=@UIDKUq2t25 zp?Tq`QKQ4cg2IqKayW9tNN7aJesUrEIYPrzQ$E*4+#k+!`Go!Y_6|Qc@2gHmkcTI4 z2S0T4XOaJ5gKOiLj=1(4)4r<%`n!67F#>orFVmFcMjoQ=NSi;5u{(KgI>v;x`eTNF zNQ9rfcntafBjx`;zwul+I)6+!e&Pg67kbOoPmYQSMgDh#VJXieXk5qusL;ipfi{I|X#e)s7g;zxZ)+w`{b!=e0q2s&ClsQwOZUhrZ@dd9*T z)28op_^p3i3qSr1!V%Q}kE;CNK^YZ(^8em%J{OJ}J~m|UcYEHA_f>b+rBr?6SRXf` z>s~=$XHfX*iZ6!3{FIgdHFj?J^CJANPweIxI2Zm>_R#LqrL*SGgkSZUb4txg14m!3 zYYyl6?%ldCuVDVd#__IiUk|_9KZie=|M!yrg~P{$Q>IRHdq>t812}%9#_q=p{uv7^ zE9mg^hZ;Nno^r1-#Ea7R_GRD8ZoCc{nm;tmA3TyWpTw_r>R#a= zHp<~QnLh^nviBE$*ANaPK)zj_$B{_KPmsI@oNr(Z^emkGX_0C zU&!W304*N$Xb3#le*wKjpKqb&FO&F%!Po!p8xH>n>+1;r6SPO_>)iWIpa0V%z8wpG z-ZlIK$^QoM5BB+=8b57Jb*Ijq*MJM`w$4)62>$;Re$DAkpEhk@D*Tq0@OWtcFyuc4 z{)GIu27aIawectFKgoY%_-O-}n>)mO&3bTAuiN_5oCff#e|SIiGWeI$hqnE@l00zv z-za|CKrjDOr?)o#tHS@gV_mHNU+c>M;Qp@uQ(aR>_LWw~1cy%Ub@GM?zveN{gHj#B z|KHFn4*!fM;2%k!f0gw`)hAOQSojO5|EEr$aSY`?R%T-IpTxh`>O!@DLsH?7)j1A- zul3+k{tN#(P^!b{e}td>w>h?C9q8&mU;c-M!>Rw{_%)vUFOz?V|Jdq2@j&ulPW?B) z%6|es^^N)hN5@~OF<~|P2dxFL`ZdBoI~Dlon#%v8w(Q$7eQH$x#RKDK-TDvwwEvCb zM;?!j2N8bC_@xzJK>nlt5BPQ76#R@04|eN@9byvyutxCzT=?lPEMabYZ`A&){}b!` z#qvKD{;yO24~_D_mGBP+|7F5|r^B!QRs#Q^c=?a&0Ogmf3p6)+ASWk>IlM&vcW(s0 zd@g9buw<;py~#bRlK7)KM(v-=|5p>`Ut{$D^7yCCu(61xBUT=rEJ?PTLX2nTl!Xre z7Zdo^-Wq=D{~_Sl_}|aPyU^pWtYN-(Pdnx=BmA-( z|26(W{^|cJJ*xk#{MW&+@mSNarg|>I55~(F|NP%w)c-02!jCN6blE))e_6S$GbMRo z_$}?@$Bx^sd5j4EzYsQd4CJP*@$~G`W3|T6RtHM{wT5Hm!0|S3m>d5+M*laC|32^+ z3`72-{CDHgq+F(|4|L66uYFz-md_~-2MK?9ef&2HKlOiUgg;t`ie!O&tC(|$wc|Iz zq`FUZ5!Bd`!A;GZF3`F={uOBh8UM4+(hz?2|Ks@Y|HiXnVgA@e`)Bwgd>&iFq4GOM zw0#worQyIqr$zbi+C88Dwehnq7_GBO4mhtVFD-wMzK`}1V;;=#4`>X0bnnN)&-ubJ zg`>A4yN2K5R3Ag-7MWK5k7WMCkAF=5DFgR0{vSPJd^ls~Y#aYFcc%49Hx{(8uAIm4 zs=f0>yQj9Vd`?L?0Q{e>Wc+_8?ViTJk^J9y={;6A(8mL>@Iy&irR-1J&ANqTU-%z~ z8Y}zUwqqvvHC|kB68b80Xg{qCMDm}&&-|9d@8&-o{x`z=zvagNBS#g6gu_VE*?} z&3}?EjekV<|KkhcjL{`we(q@6!7(;Ru6gp2^{6l$$^7An+=6w3N*kNLw~;uu&M ze)arYnEQP_+5e^fyYVvcBOCSc&kb3xIFOy4qyCQOGc@iy4QlFfGY?vwamp#Du6Oxg zAAjMHQOLi?PaDA8)Z>iJAG&2p_~1>;!iR5M9zJsO^6>XO^N8ryl}3NK_0`bPN1-- z+T359H>xKzUoxLP02ia%QCkL7{>lGB^68JH-?e>iK0mSEaf@3I_#^8<4N+pf$gdkE z!sObIt(%bVCSNx9#~OgmzseK;Dmg?NStG-l{9B*yz z-+18q|H7X;q(Ae%noo53uRhz5L4!7u_p0|q>eDwT?|Iyg!Thzllm75R=JBiK-@&y9 z6*WVd|Cjtfdh=^FPu}WeU+L2tPp!3{__|Ls&Y$F2i&t?+^c3qqPu)fzh)`pp8!r7m zV+c)T2L4C}z6&Xy1q}v@(3?h7}NH*Fv4AriZ!iXgQ&thrSc1W&EZN(KWlr?;G5; z2d`hs`Qq@)=YNa&kJD)P=7jSq&j?FP$_{kv)^!!wRqv@EcLO9GEj@C0QFDgI19U%D zmKK*Bm@~JsreM@a{JV4w^9GCv^9B`!xr2s>Lk8wU!@|J>hlYa(I2uG~)F1r_XkabM z<#&A=#5G6gQVei3githeU>@UcjlGA4{ZHwOkIg|=?^RaJtL}g5X>S;IhyNMU-MOW} zWABaN+}ES?`}XO(x~!zEx}>};oG^Jp&6u&H#EY41q_0bB1CPZg9-IY9=hk$xrDu_!pZ``#SsDJR zoE+E~L2Fm_uzMc(G0@R@;Q2}0dqnY#~?NP6zIWd z=rPE~N$8+2W}Nxj_;KU6mub$xbY+Ci;bgp<@ZIOH)ealvL&6so{?w|qkN8QwPI{wF zhShVU2)FbRLVR~cV|zE( z(ZC#l`S&xqA+IZ3ejl7LVf@ZMefzA>$YdVN?=3FeX{O^hjc-dX{|bk8MGvNujt3ys zjjDeaQWr1o+O^9{{C{tlGRVc zJ$%IQEhnAab9K7K%PVKk$w=msUoi-?}FM=(X~h-zwWr zLN`Mbpbl->2)--vj~+8FIQ#662cNzC^TE8+&kV4Yiishyy)TCoIN4tH?bj!mK4WG; zA1%N(A)x*ba)%BL@E7M(qB%FMxfehckmg`N3tb6`KMIw%($7-cDqZ`2P$py_Lec~J zTR}-lMKEX1yr87CJSdt~9OUNl9p%4E4v)XjN1g9dAjyyPAU)mtGH;#qsF;)ekn@ow zywn5w(>fnGrdX5)pO)j0o+$cSNlbOE)&qarKU$N^s;G1{$^XE0mt8A^-WDHGRaF!e z1>XNabN5UAP(SbY4QF4;zezrLe61Ot=)7u8tbeVzPIMlBl)k^s`r@N}ZFaskWsm8W zv@LbxjmJ^mw{mp^|$!}xdO=dGOv&#Tssw{Cp?J9R_< zoX6k!(njn(2?N1Lp4D) z;V$-voxfyJaK#s{3Z_h(63k`}9Y9?YCk7R;PJJEG#CXhvx;dsbOc zJbMoFX_e62ptN*eP+opUP*HIv^J`}Xm6eX>%+c?UaUJ4*dHLzg?}_HwJ0+!aiMKe& zXxpC6J<_4%KXQTe=vwXTq#J}uYJ^?NnhPM|#y42PcNlsNtn~(I%elUihhBv=zj_B$ z>g0rMCa=46>=+E`KRB2%WqL5Dq%1gN&fMS(<|*e9vJM-dF9<$I6_xXXTEz8=2FTvw z`MJbZURGxL#f8mkl zRi*pV9uhB+jrKwBUj2fRBSreZpa;+n3 z-B4?%POo+j_8nyhXUv$syP&XOD?U)xcECTB_G%$9T328#g>@LG3+Cko9r(1{N%QIO zr7!2=wI#hnhpeDa@4ms9(c`EeN+VuqUO&kX@qqPRBhmoR%8x1kQ!q_w`98!NQQAWE z7^`d@)$F=iJ4M$?_?=$4Ur(1mAfv+-@I!jP?8CFUC;rn|Gi9CJ>_4^UBtoyzWJLVX zddy$={X=Bqj7UDj4?D8jcL+}DdrB~2!lVFwmtfw!GmMNMtaVh*t)xyYXRV{<^6$SD z3-$d+A^G-V@6&Pb$mfXVeZ+&>Yv;y~NY_I82aYF|th3^$C`zGnm3H~o+2v~r=M{; z^~YS=)0Vb=#9sf%;nLF({uk1gVTUT8Gba1!;X1pPs0^gwgJeVdLTj%$$nygGWqdeb z&v1D5tXT)xPkP6xr=GU4W5-S_sXG?)9r<3A4@Pu_;fK?km28Oqg#6q@CeI-3#%}|w zb-q*k_6x?28BgB=7Fh}6?y(=8iQ-vEJ|b64o-}Ds0)OMU6Z#f)_+tEs=`dSa5ufCr zZ^n!n`$vozxlO(XrOQJ9NcufmmwgdT_>M?>o>1qe6HfRb*RF;}@=OQFA#XkW(yMqL zT0mM}oje)*%G0Ra*TL2h=2X{{{!1hmUN&UgF5McwQCd=5J#oT>-T0#1)SbQSGTXOb z!WyUi?7cvGo&%|PArdcM;kx|Kp(o7Rzgy#M4K8#iF7;<#5&kKYCkwx1ITfbXxMtYF zuet+XII5^9J3MPv(ZMnJzUhD3X&bwA?eZ#mwM(c6WFHgB2et(!8|If%_33{@v!P?D z5b5VT{H%Abnlk0Mc>B~-PFasl^@{Y23}m2<^cko( zj3+u*ogtlB>E*OU9(o#2$$$EJ;Gc55^S>_s_;2&|9ho?@RvJXEk zTl@6sv${iew)T-z`zqN`c@a;(2{pHIkPe&4zsE2BA4mC*<8APq@7Ljl%1P9&%qhn& z<;?vBBS&ne-dIN6DD1)@`XbaEIY{8g4%_lSj-R@q!8G#Ral4n|yLIag`lNI41z7yv zpg{vSQcuW!L~o*Na9aVe^v4y$A3IAwjgfL10PzwQC41tKf*p60Ze_6CLa7h zsHrj#$B%yP2L`{FJ@qdRPn|a9U2G^B!&p6_IZz8Aoc%a z_$R$D_*1m+vARNb+2;Sz`o`sqo$&d4P_}kMhYo#9vd&)D%W3m9A1U0*b77Y)N;cG- zqZO;|&kS%oc^h>iahS+oD27pP#M&meCKgHx`6!|hrjJ|`T1@g`H$nTdv5cIv|A3Z z=2&H4qkXVtU(};}x0UVNXKHSMc_Y*3_IQO|n6)mUbM@&`5zzmDYX zj{g1oZ^T}7bvx`zSQe8Gy2fuJ%@1nt4y`>fUzoPsVNZJoKKz7x7Z9pXp9M9wUE|Rv z9hy7%4WxOvMZ<^ZS0VqJuZh)1v2$Iob+j>r;4MbD^0K!`wDOW@ftpf7{Ff_T@3Iw%(!G zz6NRB^fGPfdh$)amp%S?-g3?1l?@(#5Dw0qS+tKi;~n@tpi2um@sZ!zj53r1B9>_2dQ4}8-{bC@Q-#Nlzf zymj@o`1&9?zr#Ft1=-o3-yI-kxY6HFPY-f(ItC}7)GHV=Xh<-2?AQPwf~@nE+nhK1 zP(^Yeo#lP0n5GuzfQC{u=)x+7Zm^6Ov< zSr^lF!$0eI;3tVeF2q`ul>_CO$jffsFfPmg$8$e|R7VXZ%z>DqZxgV03hSS}gW<#S zgQ=4zv-VvA)(XQn7d#^2rK}lt%2w)7&*)k3Q@Tu5#+h=dG?k%!A)W z1}Y$}Z>s%BYugq%&dv$?_30NBjx0bAV20(Zt$Wv7+iU=*U+eRHh;R$L$Im_p$D{lM zA#tcZI0aIF>JsQ;h;nQDJ7}#S9imQdiyc~az+NHTH*~{;n{2kW8>w1nbsysFrNhmjT)x^g&|8`>G#`X3e(szgF%8w1}NbgQX)1 z{qIIYz9i|bOLY_A@B8bDQ*uw8<1hUcL!Y`Rv@~(A93I#4t&Ick2r8N4rp+%qbdFeuDkLpSAY78?)et|WmQ5w z^&`i@1gJn`;bLX81J40F<*Sw9`@xBfwcJAF9;b)}d z$4w-nl@4KP2l@G%YdQZH=s`&Hbeeb8{G>wt{w;J9^a*GTr1_oWI=QfO&)y)rGt<9d z*S}U`zc3d---7-K`8ipIb>}Yi+kB40fAk5{wEuwCT+kykAH4T*U;NPeL#y+m74eIC z$}joxc@z>>NPeJ-`Sq=k zk^C4Rw6^{LBt9IoJnY=FCx)LG0nm(tiZi$rGTelc<%QCzmv6|t+}w?mCQaPI-sK0% zE6Q2FVI2=0L9J!EwRZ0l&+J-EZ;E+kTXQchFRh+FW7@ugf{|PM_UW^xLso}n%r|NN zTXWybA@SiCP(P@}hvDzUQkUhwqG=L-@m=d=4@c!SfxCCFUaQBC8;k!x{N%D`1;y9v z%)g(*E*^ONo*%Zx=bo4ShSsRzS2?=aGiFZTn?G#mTkQG05GF$X7(YRBTB4YCUh)3590Sy zoIBeEr+b1v#+)O?#j_8>hpnuAt%%Bn)_x=xzlOAK*{s9ir@B`DA07W7B7eY@ac7&B zgC0mBWg7i(w?D31s}^RH^Awo;I&O2r1TWy-k?GT??eE7rAUY^ZNRw<4WbgGC&L=d7 z0fxV0lkkru-akXw%AogvE(B|7tBcrYG=|k~fD#$z&2!H#dS3&H3^U4lkuJ9f0Q2Up_Zx7dFTMsTr?RnY)?F}~qf4AT`9AT+dzFP}l6XS_w zp|WP$w5j{iWqD0JAibiOpovhU$5HTWZBgs+wCQOJRL>1J?3EsStI2f}@urj~WI%aP zGkwPNce^|P?@kV!%r@FSCh@!8Pn}|OA=phH2B}zx%x~0pp!Y?_o5K_10qv!1blCHC zC6&4A1GUTl14)-9G+fmmO6x)pu;^j(9kr}F)T!|wSc9*EGH+^xQ~WY%E_ zzDiiHU~`T7&zFCPJi@R3%}-r@lD4p8PREt>;r8o0#D7A_yvH05Nt@CK4=QTdXS#~E zQG1z*2dWEHhu1qAz+cFNYF8=qZ5L0PFmVTZAwJ)a0l(8Xji11F|4Yo7;q&o#*Z?jld z3p_t|?oQ%&_tHj!U46<0*uyVHA4+l$<_h6%F?Q20#*P_%BZ$4NWY3@QfuHOjEB&oO z;(_$i2M!#xiE>OCz;4scMbsK67=G*jTlK)7w4du)P8Oisy-EEnhu!cuD{Wq zcb)%}gq=I{+h?|4TvDw4-)sz{{BIU^rAK8E9n|ogbI%V~y!vYR+Usk=H{MtqE?d4d zJR5$XgQ77_v*T?5YpQrm24uerzGyBc(0o#2-oW8!{=>50{4%TWIDY{9hAZz?mqt8D z6@R1G41ZY}`F>%zanq)7^VY557HIwYwIM#U@ri$2u`6vhhNge4ec-4Ebiuk>7 zhveVpe{h1pm4}r7ZJD>3I%U!>Vb>Vl$$#_GD(oWmYX~p6@Zxaen{S3&s)9jNd2^n~~QI#Z#lUpnJC-tHCCnZp{~59>EXZ0l%C7G`lm6qvxYHxSV}u z@Ht}mn=ShuJHGzIQufKY@Zw9t4I3l;+qQ=5g#Y4;*xQ`)f1L4?7S-7`xw*NU!R~cs z{}-HA1`L0v4wC=bToe8U=v=P@dvz@T8{%!s>k0hIfAC*)$tS?S(d9q*UH)JAzTh|c zp&U<`IDs<2J_>=^<*HAV1G)Scez#{1{iU>p*fCeJ?|7`-H?Quig&+C9=o6m=v+!4i zTO<4zUUWen{LTADbIV0hQBieH$Bx)+*qpTH4~GkMBLAIT!y@f>H+k|zU-rd=lzH6P z_v83W%1XnF4gUs*pYp$M{W|J|^C|z5e_yXO|2vJPq3%8EfWtj{vR{tolAUiPjqSj{ zC&+gBPu&+RR)1;cjOqKBuf<-ZWofE~zqAzjzl8i3e(Jw%Rp3|sFZ}WLuVvq=i?gBM z@&|JYejC89c`}vr+l7C}F2k?ZPwP*Mu@6~ZJbMFnb!iH5HpP{%`Q6#qdAJ??qj@bzOlUl!N3y{gamGiIaf}_NFflFTCjDa6=6L zTJrzA^XUIr|JUO`-eF~!pP#=SMRE1*)dtE(N1JzC{;Mr`0b0}*TQ{|rt%?5v+IquJ z-$(gx_&@$}_O?ClZGW=vqO6S^S+IlkHIHBU-8L%!!mly1@W1NtM?RO3n}*6%W7p&P zf5C+@{Imfczn;-JD0MsyU2lGR{C8M;1AklL*ZiRJJEIQ%g(;Fe&;R(jjr4zo-Ba`N*5#+ikA1Sw{{;RW)c-l1v%LJj(y4Qo6|Ik- z{(qwXQ$_!OU3mU^;7^(V9(O!EHXbd_dbm6D}EBw#sdR9)yWwU3` zIvC}@Y$h9!&xWt-d!Dclp{>6#d=vcY`&U`{7k)SX)BbKEpWpVIvg)t7u;Fjj&FfUZ zeOiVL8L}nn|BDB*t!iWP-#JU|pUv@OZ?^>hiU%Bin@?;Oe*Y~W3jc-3|C?_*{M*34 zejWXv^J)Kun=!EQIO4Oz&mM`44X`^gKZmI>HRqbr!dytrDW{&gfhJGbMfXB!QU6c) zf2Hf#O)Z=_VZ8aA;TxJyZFT(X!2g-cE(^~*>+JB1)7jsW{KodoXdbxd%@tqD+3Qhr zL~4U2AI(cg{CP0Qe^t%@r|vuetg5c{fA92R2Ba#WfC8c*N=KzgFVe9AYU=Y@5@SrW zC3*4rV!BCQUP)dOed)5ZWhy;=0{D0rtXWx77ojWsk z3MTKsnp5vN`&)bMwcA>2)Bf9P?LXJgxgESV{u{Rc{*_Z~PjX&iPHmsCw-vwAp#JYN zL|FwJf2HW64<@O!Hj_p-eH&#_uAs1CaWo1>ct#W%%1%34^ck_EURu;vR z?Xj0Z;h%~haB0U<<^?S8)&AG~J@^mN{_UW{g%I;RIc0rLJ8h@>e(ixDztLbBV;y^T z@3yjEt2Xc(v;%ARy1nWIBd*zX-K!1W+_x|I@sEBGu&$)(l58y9{jZVbfX zrypp3pbq~@hQANjn9q-wm6mkeG;`(*R|mFG?)*3XUSpk0mn;qT?0F;DySEP7>j;ds z;H?FFa?i1@L;Jyh-;aMt|Cx4Z3)A3v;M2gqe#np^HMITI?iW1-7t0{-pWcLqCl?Fp)P*96t@Voy!2QOz5B zX&2NQ?WuVq*uAGF*j2ro{hr{S?|j?vx3>I;X&^@ItfQx#($klH&1-yI*tNZN=y0r4 zw~oTEO>rG97Un?KDRlTX2Gly;W8YUl0v)#alEuON`C1ovF6;KrgXY@teDvM?d2`Tt z7o-0iDfY&E^dkP%tO5cnds%MHKFl{{fADT(U)Ux4 z_d{y$*mmUTu~_eZz5J=9KsHq`aIo&&q36EAJFE;?jD=RTg;LY)`;%^O@)0R3VR|ED zBCV6V=r^a)mp!R-XX$;7c`5IwK#5Ip>Ia;CX5yTKk;2aY#g5qR&6v(QuF?T*l!0iP z-lt<5_oU5V>-xMF16gf8jD3=u;`a|D#(_3Xf$(49?0>_-3!JSRJa|Yo`se>5{(w6F zaHme4e4Venzruh<{s{k^d8+y;6ad#o9XJ+dXwGnL0rNnUE|QH?Mjluj;eE=_7U>_# z(y;;k`)l5Z{;suoR|AcSuGCHVzxVI|Wfv93*lo-K$K$elQ8`$9^2w)cVcwGQaMgv@ zE{dk*AC3p~E9ys$9=(tFtkQR0=Z|#QQvVA7laD>_1m9~#Hy21O1&hByIf$)e&EDM( zzqN}q;TIpG*Z&U37N52LqDhn9E-6)8*X%#k*1Ho5rJJM3Cj75eXh?+4uu8r*!*9pe zaBRAeenHvDQKRY_;eoLJo#jCG8FP+Loi_b&w{G2N>m>SlkATP;xP~q5kMQrR+GbY? z5fW|*Rz>)m+3JSsdG0}q@YfERxcIk)kVIegoV7tA5v=8VHV zd-eo7<=tV|7}xY9kjzKIfAGMYuKauP=g|lU^ur<0(~#o>89N$-L(E8c9BP(l+6L&+vyGV(vGAU%!?;@c%%HfiE7E5nE})>8!=V z9II@>quBj%8up|Nds*gpY0o6i{W}ad?GV@lr?sqwe_*y zJ#xs&zb>#fgI|y2LyAKrdwW%$Ds$z;gxg4)YsYwEC(8Cp`IN+$33H}vX}IMBf}CS( zPW;I+b?Eo4IeA+D$bFN&$~rb%v7S(ix8ui;Q~nP&DF0b7QIDwO_#NmaPUQDwe8?}z z+t9mL&&uJ$hSyzm(WJv#XM%BF%fBQ)5;!T#POc@}^nYDG6Z4MxjQDQj_n(8!b@%Sw zHs|E!`u3df%RbGw=R=8>E5|L`>W|mQ4j+1p7)G>zLeQ%JbQqpC_dc~6&V|%YP#IMH z`9VHi7l%)ar&^Tuc5Fgp7PeM|Cn=27C<9ho|1>S1iv6ua*&V(Qo7 z1GckE*Up>s3vyjNLf4K}y{>VL=lRwRP)DduTRm$E9(e1`nA-l4{tqf8r4^9PH$+fHnWOnu@k#v)k+m(vFZn-0;#CFp(xbfV7U(Rl<+(IOzt>p0 zGF+#9uix9~kJ3zz3IDEb+hTc~=jP;*3~*DN6i-d-8fl-2u#4vTR8m|_#R5z2c_KHj z8~mKawa@VC|AjY?!-KUj$q0UX{90G#d4zB|iMX3&F65cMP<}KW{Fa}j5#O{t%b30xWebtGEY3hhvEo8eA@@WDP=2gKk)z`Le8*qM`2z5DgZm6R#m7M7I3Ei2BCjns#cIe4@?Z3s|=6U_@ zE#C9yn+Ie2{`yvIZ|z@WZ|vR^+flhA_NT4eVh=y@MC|0#dIMFgM;0v~l@~7m@^bTI zW5!O8J@j-%Y}2lNv2DBGitT#iK&-azV61N6+p&H755@Ms#WxNdjvYAox7b1G?YH^< zp?714-XT4QkH!xF?Y-FFj)e5?d$A+$9*e!p80Wj}|Hk>@za5Dk6&?N?wm%0F6-V~* z2NasMl^d-F@;5e_e?I;|E8o=GpXu|IbQ=dMWv_wn&XDR6jScCZo_U|QTpCoAk??O` zoZ~nvNH#;Zz9i42>~jk!>xIaa5rS1fU6DVO{bjlN1$R*PW#9fVP}N?17J3ePnsdep za_>d=eI_TKI~y%F012f$N>lI}D7tQ?KTi2}BrQJeZVgPgE~eg~H>GcU&#vlAQcG>z z^ai!j7em6Twt|c0%p3rE()`jXbK09PC(pP#+S$cuoK$tKNaMv{g~mfnl4VFd7qi`z zuuSlBsCOJ+!0$K_KAGtk{#t{*WcM8C9+*g7;%t4XJIV-#Dk_JlgLA1@^ETw>=n(Du+;qw%Mqn;>k*QCJPO2I=7me@#aonXaX7RyT3UJ=5^M zf7;#gZ}L}RT`Vr#{|jd2v(m112Jy>t%83uUfpz~j;j6o~{}}^zoik);-G~t*_KzMt z`VeDTht5BLEc?+1M~)aqEdN2Z{rdIY)#KzITWOzd(ru|k7+eT}~l@k-Rq90{ z`oEth*(W8DG;x$jcf)5Co7mm<4>f!yaYc`?%rSH&Bso`{3~=M8hwbX%Aw#MrPoDf1 zekVsXMkhNS)`0}O=G=U|0qxx!wff!um^m)ZMcQw|`7T>0ZzlGT^jr21=s%#Uu&5Xr zusH={rE86k_#dF@q)P4o=C=$GgWblwZ!mYG} zT_k^SZ991(S&&{34`f%Y_Iz@SVvZh%Pk8(p zZuxgG9~t%!!7h0pGn#cVv~Hy$R{yb^qqCJ;MEwtt^tQjIX@NFl_!D$|LVxIwHLjN_q*MZ+@yxII$I~13IeZo6ncX1D7j}h9B zINcr5RE<8+c$Mk}@jx9$2atm(K%Hu91pgwQ zl`YmwvPT;=awO$l^N!$l*pv7}8E=0~Et4O8AAN94@vDF(9*ERl909p4lEMB`6n}WF z2YZbRt>y7`g9Z##yb`ZDgVWT`yutO8_j>Q#WiV7 zLcY)GAGx-+d-v{}89%qU6TVJM$bFdaO`X5rGQsyGm)M(LxL@mcfdl;NKQSJvEo1(N zeIxGie;7|`Z1e?Uryv$uz@$byrH)?jSzH@+MUI&)ABc)Z{7!yIe;H)Ug--_F7QeMobe>-wJ7r_$%W z$KTvH)9+h-h=0XT@B3-+(%P4T^0HTgjjwG8?z{I#CIcrJzw!&)glUHh3y}e{y|r?{ zn0M+H;_pEIEAR2Y&n;&yBG!FtdEQG-JRcnXi-XlG*9441V}rlP?9ErLT7JUuD-B^< z-aF%r(-V4tw!!znm{JNfU&1yH{OU)p>r9Nl*~vJ1sd`Ui772{0`b^(5%;9|A2_D<{Ni;oa$L@apq)8VYpe~?o%=nbed*x`{Ik9Q( zhI`)xzuF3A%%ShZ2Sz$nSRH;hR+GTaT(M!Z7!ugnTRf3Sc{X0?oU;G$ibu%*8khh0 zUo2l4&Ht9+7fFAu)(`7hv4i$4{7@OhJhf2H!j1|J;c z-|)9G|3i8D^rt^f{Dx%#?Hu^PH#L?f*|YqL@H50ehrA>fsM^JnZ~2&fO|U%=kpC{= zew|BYd5k$un>_ij@_#OVP)5Ap`A0c_FzN33^A`lS-g;Z`#1l^j53X1q%wI4cex%`7 ze3gq`{@37hu^ai9ug!xi9%z;P>$~!2{?w;#4k|Xh8vOXa9|udXTxLERv&4gt50YEi z@tbeI@((Qd-{5{P4=vf#F97yzxd&@Zj?MTZLb^ z6wgMqYSqKR8#Oh-pZ~l$_`whVC%Amc<;cSfWPp0runT{Zh#z){F;wXQ%{jab{)7%d z|1*}EvmPFlb?S7|R`UMX{Q2OQT*`C@oiqP`k^HL8t^|L z{L&RxJ|g;(^Nj4L9D1Pg7N}8~nS`Et0Pq{FgTUX;bk1|M@|%l=v?4d6^|0 zAb&>M!^CIY3Vv)KtWPvKgpcyme4K2D;$_4v+l@bv;s5vz9}gZ{v6B4W5#q*Ij&Ic9 zBW3t0%PZ043l}XkIhRiK`7Z2@;lCgJ^2=%sew6|9X~U=g&zrY|_|>*h{o?AF8su^_ zeE0$Wd&{m`!ng3@W1NzCgev7fSk)H3EX1$M?^%@z_)^xp*Qqr(Tz^CG!0+x4wr|~L zdHe==6D0gbHP)8-tqpfTFC>2>(7|3b;k~s zFUeL?zLfta1KLv-e)`j&peNGsgDIN-YaRwa&r4PfKl)EP%=0T-{E{s_D<7^!ix&s4 zZFmj*F3&UKr%Y_G+8Mm?;)}tZcimloO0Qnk!U$5M~$faTsET{f!9KU2D zvs^^+UvlXs!KT+YHNdZSrqZ^Pcu!9~`DAd{U3U@x>{6A>`kvrN#wq{S5BLapwQ(u- zOU6FLmvUmX)Lyc9alP7e^Y9B?x@>9i^{;;;cr2Ox2_$~i07x-}dSK0tJZ;PL1%_7Cev%256 ze=bJHUmkq*t6vXZe(9B<7FpN}cKOae_w2KjE%d+TStQ>)elQBZo|UZ1_j(07Q*A}o z0*(AGiQDrrQ@K$6KArmSrcc}iR$_XQ-+Fg7@y#B6^wHp!+is&Rw!qqA`n}pMww5}5 zxz1fWZ;Rlc;=z;mOVEqVo#d3^t5-FTcvZCbAl2W_A5z~X4!U8z=bQHg6|b&0e!sr) zwcsNk{inqD5@{CxS^VDcuR&&9y-`mExs{JBa3Q2OM zHs-Wx(}Qn*<6D*oyNPS}1o?f-t+$#UQn@nuv$l_ZtNfo`KMQ~A4kaBngW2nU&Dq<= z{P$?^zl!0?D;-Kow#;F!8lGY6O&UT{8XOPQ_n3)K@fE>;|L1=Mue`i2xa0QQtxihH zvcux=&msSl_-pYyU%h%waOtAO!GZ;$oRL;*U#q>199g|h9q-bfEEX(}UFy zKN39u>~q2GcidsPb=~vH_V7>X6$$?|Vk#A2t4{t~IS07>N^E0%yBF7Ar62GL^Qs$( zyLd!%@hR^M@%ubb|4V#WcGXqE$7zcw{VC5YKgrv9%Kz2B5B8!f)%KUpRJ*ORk{AQT zAJ{3PePKk5vMT(v6^r2ImtNwXw840Xd#~CH4*!CM3xeB_^Tmr7SzAbavOFh^(KJNy z6Ho9>#gBI5AXeWMCGh9v>X`Z59C#D2IDgFO{n8h_s{s%6ex<|GqV(8t>US*-hM#^h z`KkP`BkqFqlSuXH8|YA#37sc>@a21te?B^L7x8N5%~PK$d^g|mb4_}`@>^+eGNQen zOFvIst0!hZb-&rCXw871gID#QZOs31DYjgFU-sn#&NyQ?{hmhgC%=`%-GKk%3p!4D z_~`1#g1TB_58!KWdQ;fZpL;_dhz~}{hvY=O+KnEcM<3J0s7c^R@ZMofUQc3Arpcw# zo;iw78a^tr!?L#jl@7W48_s`RCmpEr!Myrr-sjg*NRg@JJ2QR9Ukmffbo`v)x4*fc zm>N5R?Ug%&owTW{cM)HJHpQOZE)GErd~h)c!nP&#4$ab!-{dltDsNQj0_~dvFrB0P zhZKKAF*s(;qHii4#kD!4+0)$cSn*b7@hszRR;KVhK)>+*bo|BxeYa`cK0PYOg9e?o z3)xrM7XEv|nvi|tgNA>&2KMC~G5#Ab@7uTEPWeSpCuP(D{{2nvLmo&+xc;8wiPImh z{JP`l^$?eSYxy3<>M{F$L;gq8qrBH#SceWBH-`At@0ntlQ~n4)=wtDj{Ke)hr>wBJ zc;giOBxuLCo(CcR1P;!l>C>^3m(;z#?w<8n+1u|U=L!B~<^%b6eAuvIwX|!@E)RfD zL#gxOT!?HM6T;SkIubj!fddCtlRwTLtC?@5<7(Tv=Tj7`zvks3Gv?@b=_eiO)T#3( z#&_3Yo2Nd{rz2P!J6sC>3Q9v+K~dp`i!Qq8kYs>-YJE9q6Yrw9o5$?&tK1JgcW4dH z2G}KHXPc9&{#~NY(-?TJO9m8+OEzALMa#MavqRte6dtr#H~O@l=)KzeGiJ^>RNR5M z+h8X@Y1`%A4ki`yW;e!3NAQs3FTU_p!7xYWP6;BE7Q5&mAD?Zk=16^I6rYGWEboDIq~@S!Jn62nG9BnH21i@mShx?a6{Zc$7g+J?>A1hfQq`m;@8joee)1b)w{ zA3yHG{n)6vm>XuVXEuvNz#nQo%TL4C+#i?!?y2zC@_AG_kSwe_nK;fJ56U@$)JZ9>p{8a%~;w{HTg$83Am@4V~CptH`Rj?YP8C#A}xN$jb< z!<1(aogXAMh5bDFTOC~j{SneP*5b=pp*U^Ktr3GEqby{^osKcelT7#0u94?+WC#Ct z_wGF^Nr(D%-pBVD5_vw?T&nfgQ+SCh&2G6N)5g5M%vkR zv^kDSFNEneIRIM<57MxtE~{-Ue=aVD(cHD7*0 z+$L8?rxIgiFzYU|4kv4@$(GC7^RnwwJ@*A5mI|gP4#P8d)RMpXa>Tb6=})7Z)Z|5w z+RB7-7Z`w{mRyW~37ojovt_0c9znQ{afIm+0`dyI3uN1Vg= zCQX`j1e?u6!-o&scjmx>dwTXfWow6$V)fnB4!3bR_T;FFk~6>)byv=Y)-3;Mxq>8#G=1NZ>OE8z3S62{@-%hoPkI#;n)Tothg zDvOE=H)FrQk#9%w3b*u|a7*8O50ZUqL);#o7XW|G!+y)p@H2m}5%wf*x8Oi&8wh;{ zlFg|w$hJWIfEN*e`>;L1eU)KP8l#eZf^2s6+uuM}K;5Abl?SOS2){EA~fLz8_(KCo~Nb z<`xx3p8rSQghiR4aR}lMSPbNe?9YS5rxK_Uygp<6o+sO7^O^4UD*Glc?fscHr`0FO z@7w%Bdx2LZEr>sGW2?XX_m4lIq>F(nm!;4tkmOE5Av!~(u$?skFU)o$k^ujRJD|VR z#p#rfpL%`{kqSb}6nY$6^2&*Tw{ATOtY>79Ze@tnf(xp_s`GspSgKzxW|_AKdg zbyKn}D}7CyB7Ot4;aK7VbcN8UDw3{_bddyHI+a#C=lhB8hR2q6rO(cJit!hb>f7X& zD$7#crq5F^Cm+xLNMd~k^l@IL`dH)N8)!=?zI-`pke#dS0FC%4df03NeH;SS!P3jJ z2YwLx2y`kGO+2S<+nAF|d4YR5sWK516Fj9n7M}QfDSLEld>#+n&t5kFv=zg63yLe? zh!_NU<-{MTP%K4H^e4)5^Yav=K+hQ;cr*2{Y~p1%YV>Q;Mw^#R%~(uQ(h^C(yY7&A zd^jW(6r})5;`f*JyG)yZhyPxT7h%I0i$BX9)~2^KTiUgLs@7lZ(c|PTr}sO(YVcWu zYeozk@g{Mu4!ZaQ=N}?|-k}T5AA4}r$PsUzGh}dWfBLi<>+0CC(`&3*rZvfs4{M9a ze)u&={l6KISDzd!kCAr55M%@>@1zG8wB>yAFRpSN>+XE(r{ zv2Zrl_YUPC$s6ODd|l-OA^Vm&#}$iVMa39oBhhyJ?y@N8coB9A=8vs>3&&c(>HN~Y zUq1OR?5&$iOyi5jz5O`FF~uXsuIx|BlaLsfh}{Hvw8=d7SHgX1amVDn@W?-sc0*Oe z7a-|4)5VH2JZrjQzdFAJmp9J$Q|Sf2qxQocEjN+{#UC&}Oqnv}Z^RP(3y7W1wUdLJ zNN;913H+VXVDf{8ztELyc$4fBq2r+gn&Wt~e1&re-{1?klJGIX)>_!!bR=UjL zJu&!N!aEzs!`9?zZ}GtO<26pF_Ty+Mb;};V`u}R9TfP%(WxLnK!Y+N?hWu;q-x?37 zcaNT|SkTf3YCpSJ9O_#oOG5&GhVsw7@V4}w#y7>oa@JAU%-o}owW1gV?VbL%zE84f zJeWFl%HKMjbduTIk#^~;|AbugmIJ?~>p$U+l>bXPRlb+y=jT;S96v#8K$u=P>?gKt zx0)ALH^7H+<1Rday{+2H!XR0=07}_P)9OEupM6&zd=YLiW*93!cgQ)lly|3ZqWRuZ z9;Dmoo}ls*^5EFu!GpElscR#-81^m(L&$~FwDw;F|6M#Hd!2RNx^~@y9qBRh+{fK; zc_Zvu<9D{n%r7v<@V@B`i$lSj5bZ>3BdX1uVs~1S34bi!4L&H}*U@(?AMfKYSj>^^ zVlYH?qS>#5Te?zh0<%TL){?p#K6*MKJTYA`dd%2;*cYp>q&D(%>=QCjQkbdzAHR{N zljZ%Xy?RxW?`q4d9f!Vejn2cS9$%KrS?_fTYaU*~{!;A5<<}|SWXVL7U+sL1-@(jx ziLtyD+-e_67tDujD=BQy|0|%pJgah_8<`a$|894v^ z^NGh}@yVnEqz4Pq#ylaI$Zyn{0G0w|0TA@>-&PA_Rv(;0+atWxP5!5e@Ssl|9=_%yH_xv!R?>_y!jfW^a;ZJzw)XN82&x@mq`AV|62c6KHerX z5ni1rSy0~yyD{~RGyqao?yr9J8^OA@^2xmNn1 zi~quZ^#?u_;&=Lg2l;=+71aO8)cb)yl*i-Pw(KX?gvQ6zCscm>2_VfwQYPZBcIZ&D zY0BhD2T6DRRm-jp{{6e(GdbVI`o(+p;5WrOzCPdgyg}>(c<{MfKI3G*L0itohYY{` zf_?p`y3parZZ=Z?rZO3>f@-Nt4-_J2!BOMhmy_zbj`JgSFBi7zvVC6z_%M7 zg!rwzyE3nGuNV}&&;!?9drc$xpNd~)B?UieisEle9yj${@l_=It}rHFIPV(kA@FS4 ztNd3e|EJ=sOSE-A9`VT`0@MZ{Kk)etV#SIp!_TUg3E?1?YH0N;wfanA{qYx`oB7XpV$Z-FTtPR-miK!%%4=; z9>3qWjt}nLHuq3}KJm=KuX%N~fh7N(A#G|1Kdt%sJnXpfxjLx)R~ygEr^YQlfzSWS z6%ScV3-cERyW&ZF=R5aU+sEZsYMwd$|3UmscM^L6zhl|}!oQ6A-(nCL&!QOpv3rlT zGut2s3HUYY2k6+KLF1V8Zk9cE5+d_Nao)#a)cTa6C2O75^9reS8orf=? zY!a;gdz40>^@G8#_TM+TC)8MyQx2w_rkvu{MTQ1J+T~?(3ZTE*o+G-ew$)mXg%}CijiP^ zm@_;0*vD@OKJ?)aH-ex1zxrx?t*eQ>fqyyl20rFHh&7=2Hr2$?5bfHrix>ooKd>XH z+*U>GpUU9d#F&^qLva;+nP@G3%}38V+WXYr+k_EP`{(K?c+St!J*^qhxpQZYeH?N4 z`DU677@y&R@>}sPW|KQ8xR+uQ7l@d8s~W8Vr1a{4bM^)SB`9R`RcL#0GNh zt~uH8SfkJRYr?;D$x`Hh53vOlTS25a3oZshBKCmAAn?~}gZ*`H2KW8&N5OQ9!_nCH zv%8M&uAeYr{F~TKc-_w!ALcKtg%#N(4*#RJA^VDRhYo#1bpU!PBYuxBiaFD<@T;vW znchXrf!&J3NBkPqqb}~iUg{8$J6BwST|28SUg3AX^IgiAQeg0ic_{={`_D8 zyFpgsd*e9lK zCA5nbbDJ`dzkxMB7z490z>G4`#5Wt{nd5_a;q(T)HT_}NLtSEZpyjoz`%UjybVQRGurpt+RMv|1j z=_Gt@%XiuiPG>6L+?vp?y{EGM5sx-~FKbe^o^SyfiI?XU6mCQhCS;&(X-enAi8^<6 zCHQSE(XrzR$1odH@;t2j)Q%KXHHR z&pr3tH&|RjYiTmpk@FmQ)X&RmBL=}oc~I?yvW}&lHnBeIAz>FE(qth0yn*gZd;SF7 zcV!;AKd!PrdGe&U3yO;5mnwfS*=Jso74YyOY{97$8(Gj}19;ueEb>%*UcB$SL>o=oWih zzWWNK#bqhTEyK_HyXpAF2aS**mCGPbd=&wNLR&U-(p{oz}+(V_$?*MzjUAxJ8eCo`=P|QI+m7hV!Vv@0e0^V z+v@F$+x125oy;{J8Ft>VTGm3-e2(*Zc6#bA($}D4!?mn8{BZDLu~uC+yFF+GUgbeU>o@BnzK~q;F+gW9*PUyRl}v$a^V}pw`$jl5AZAdSt`ZBI&zLEM^ z_GfyVcrhIM2=rZO6(sq65mFtZ{I$L|d-38?h`EW_N1<~e{a){B_bvUU>F4eKL5Cxs z_o^S>7a9tUfCfXSK^-CKvJ;XNm;b3Uz_-%26Y}Y_Z~Wt&dM)3A_ybvuA!S5J&WpQ~ z`FFZpm?vj^>O@}D=X0O}Nb^0Np)Qc>ap@MZZYIs8WhjTUyzemcnfvQ4}iEFsE>p7Y3Nx<^%ef3@t;7q$78t*ss9H< z9jPhcm#Z%<)yv$h<8wInY9lRSJ}nLR%6I)sVoUw0>uqAEHXFulP#v9D$gZ`=f z`4jI#K8{bFI^`YN(a?v{dhahoio2(_?02B9nUfs3+9-aindY~%_|}6Eb{g>)c-6X- zPU^e~-^~4B_H*?p|W+4CUsY(hR%KHx=IMvgJo^LBUhv$g&%d0}ze?`MAw z)Nu3H{66i8e8wD`*@p98jki1p_UD!F{a7P_xekpjXf9p;$RgnsUQhnKt@uNJnlGI3 zSTRld59q&#@h|z7{ZVNP(ia&A-g_RMUUuHO=hn(bGlAXN zSwu0n3U9ic`26?R-MQH?m|qa*$A%M+qo9B}W>+S~2gPy9%!6j}H+Y~2?_0_HUJ&8a ztMx%yA7(CC%|6b>n2=pXL~eb0+p^DuUGGcqz{wkBVvgC?GJYZ3a`o}05B>lRfs(q< zPBQ;-`7i7d{Bes1b{`jcU;KGtKc9FP4tt7xN6Wh9dwcVuDL(Qot3NNq=bG^Ruy@jz`QS2s35oxEW9X;kQ6xQ!Ne!%zEb=#U{b*kYTG!+xd#c8{yM zbe^dDAx|X-$A%9dz85=U^&xzp;wlfSv3(kT^+g|}EWONr-Ko7#l`Yya)A3Hvr{sGk zOeZ3bGkqs|Ey;t~$NKf_S4G~rzLaYt$j7G9Efs(KQ^>r=y4RJImTZ_dWvYA;k7I}9 zb#7Mpl{Td*n#L1+to)aZVsAQw7!;ktxIETQq~8sqMz#q4K0G9Q4QtOc-(G_~AZ31* z^n57)*%`_uy|~9cTDy&&oF6$ku_9?KW}|(h21QK8N_;%jXjO7DMgoV1XET^aS$HSVO#g z$k~Hy#Xs^MUS_WEGJG$EKf*r?-;&i@|C@C>_u$8-wft%S>BWX{#`BI`}}`+#lt}j_V;`6 zU6tMaij@yq`FHsrNq0-+E5rys=OZQChX`&$*|5 zVyhnF*WT|D0hv+svLYF9Y6X13Gg$flv9SEGIgGnd;3O9Fh`$t z>w72h%Ll`)|J(Zfmu>!~ms}Qn;$xo(7P0O&{qH1h&x;i778jy^#PH$xUMpT@Trne; zgFjji#Pf6Fzu=zM2`eX#mCFCBQ22hYAceu=b|<7LIg#hX}zQZYnZmG_zO zKe7t_ulyH&d@vte{<{eNY|DJ|ImScD_fG|XvGuRQ}*sKlCBS4xL|= zEC2ZO&Bd2x?!05fWZUBEH`4){tMJ=d=moV8%erDWGe>n^i}X=4Z7FqlnEz4yia+we zgTD*gfGySiPPfUY>BArXr{J}X8}Vgw{^5#;P($6ab=%h9r$7IB@Zpbq7}<0F-E+Y| zf9`^ydygJflzq)5NC#fv!LuKaG7$ckdl7SLF7l?+0Qos;jrgDa;+MhISA8(RhU*P5YfM1>;-wM%b2+yB@7J$yb$jDqjjmRjl>dr9 z;P89D()9dyGM>W6kUw6x2>+r*mjq8d`IO;I#D)mtf`})=ueO%rCzQQX7JP-cDLs4j zt}*=1uIU32{4>1#_v_bZcYEVs^Uxa7AHJA-$ui(Er|%;?2>GQt?sDR{z3}1-R{p*0 zzd@ew#?Sfr=bsJ!?d~s|&!e>kDT7)|{Nz(k*#$##CTcv?%gZN|5oe& zbo{FS*F3!1*7x2+8PNLXE3Ex1KTD546|>r|jxX9r@w;QiCjaP1|0!7i+6K%2HxvhE zPj&FzbI%6Fr?Gm+7RZlpA_mquU0ddyJ z`?NZOdy;+P;08bW$xnip*1cqMzHsqE+7qFlvSD`hzVX4%VzA6SWJ=8Sgx#{3lOZUk<{&LYD+<9$8~P=kl?aPS*PGm6h8q*1%3;yX+*6g<@Ik zApXF1)`_pGstR6w;YDl9OFj}Z0CwS5oA#48e==Bn>0*nA;qR-xqdu_3I8|R5?2!3k zGBK@UIT)_7YbB z{36ML;tbRp!4vd#E&k`V_@PTa_9{lljvc16G=5_Ez%6+Yew|B3{IOwT>Ud*YN zJ{vJ&xMFXVGgm77k3cCCp2TIE$~CnM%1-Nb>Q=sC`S1EEVH%>}Xyn+}(bj%eUZH~? zedN)guC^}N3%83?nmAg zTVp4&H;K7{{437Dp52P$9d5T*iAOzyA9Uztai+S|j_U>}w1}F<6h# z_uBw|)`G?^D;AHo{f!Uw|8hC_eaM4XMvWL*n~;Gf@;ZSxe8#ZrIK+?NgvlyvilFDw zQRpcbV?gy^k}l?+^g4Y{@|+ki(`TT|!Q3YNP7i7vTX~P|8ToJZe~E#P{9&FzXP054&RR`kB_aXEE zZ9({kyoPJYgylMsCry37t@ngg?`R2T|4nP_DBqzu^{iu5$s%Cu!2NPgUM@B)d3lBT zGJ$V&8^lC_+QQU@@p9Hl+Nbjtap|3GIG!QKzWNA zMV-8XCWwDe*r9b=V})3>N08%8<)G1Wkt&bbrM~6B?Bwz-ta*EB(;;);X7sPjZi+rxzz+7;cu1)>18}~Id|nN{n=LVa3ntkm4mg! z;n+BJGPWS(Kcupd-X6%r7kkEI%VwVmUsKmScINpGVK=V06T*${5`Ee@u|-?pfA8>n z_-H`ZuYs5waXjdPy{mXYdJKQagGO;j)13|W@O|lgZS>q@XT7>Z-MV#^AG)`VmQDId zh@K9_=Kk7YqkkIUr`+(n+5A8wKwX?b2JbdBt8>(O(EPqR2HIf}6p z%Dl;^WHm&rWGAn8X&xxN0L1uchctbl!aadFY6A%h3k;75Ig{#v3; zG>2O}i0~})u^WR)$P>OKNASTEQOV~xS_Z<$UY(DwA*kr3W{FRG6pjME6 z2}NHJKEtjfgbjh&8EY&}eWnWO1@S@aZG!EX#-7-l-B8F2>kq0=B0LE{R_ z2i99H-iU8N)u_>9_9@-;e|;C+EiK&%O^ozaQ)zi7t` zukxIE?3iL{J^+n`GUrm-4S6&=Y@W1dc&XOJRhh7UliFQsduXh!f;AsDo!Yy1 zrEE&DL)yh=qNhm2)M~xbFVDR9{aG@|sfd#gPq=8l1W1gVZNnP6|cV6Q%S z1+ghM78Mt6D(zUZrE`~)wsz^-dFx3hb=q1|+F>)}(;F4LBAlZR+izC3lk&ezk$RHUrudog>#23tV=mp+rs=S z*vsbp74}}Q$cF!8P#-9gV9v7Gq6I^^JvP5jzJeMK3#rTug2X4?(=#U|c`pBxGQfAz zwiEK%v~T=loq7eDef)vjTMvK+h&Vi%e}AX=14_G+pfV*J*iO(%klHgvkl68mLI|Y6 zy~VrGN_7QR;QoIb!bnz+fcJ^vkX6ABI%l zplk8Rr;P?K>KDxe=13QN@^zAQvGlS?_0rEE*$VZ9;Ke`Mmf)xkG>7*gNbMu}t>KSv z^PLWx`bnDq${_}UCvYmpEItB^li_QxXN*V86*BGzuQ<;U-(G?4h0xdOEhwLc)IHCV z3`hQ0XYIV{m8v^F3q8sAh@Wlo7s*%B&pZxms%-3W@+n)+=s%!p@YzFZ&O7hCeWON? zJ~*0KSd%7CIm9^mL1GZRMcZ>9YcJHCamE={J&5l{JKo|C@V=M%i1+~y%uZ|t-_jgn zmhzw^dg8EMHhW(wuli@`N%HNFq)-02FAyKHtaIls>Wl5fPx{U2#NKBvgPq zejc&UWp}Xiev(`lC;PVAAjuF3&e_8*QbL(!d$JQQHe^v1Z>ZdTqLBIPA z`MXno)IQbNI`;DF^Tj_#TBLK>8UbgQ+XcVstAB%De33dZ4T$!8aT zfb?4ana`g5_L5@^ZoENr(X)ate&O>$73+ZQ#9nSEYon}qXccqr)7|`ZIPYjYuw#3N z}qefpeMMVVMnI*7x-d?96!w2f;_1R6z^-3^U3DE@%OUf_5g_N-f2E9o7^ z!;)hPVfw(TYu-=U?~w!NKk)Q3PhlI%x+h@YxqD}@t*SD(;bS+j-UB=c@h9hBlRON^ zFKm1dJ{}!0V#HpHMUi7XP%H|?q?kwgQgb}@EIY)>rGw&w59L64{{_~HRNiatv}*AH{MFbG{_es11L7eDvy$&i{yyzm$Y1f{*o5)p z5738~kDai4nww01n~u8jYxG=9@$-er z;sJVK`_|x}ue}ysIFt8Td2jB$k})f9l!teSgNuEkl>_4eS+2faTQ;@FzYliv!RNT_ z+;fK1U{hswc}~8wpC6Z<<>zm|gYxe3TWjliGG1Um{M-AnO~=2)*&b!ZgRs7sT|aH= z)OYY5+hja2`vHsXby^!3a4Fa|9;7yE8L^RehvWX_dA2@@Nel}YED9cf;&EF~Q1WgR z;epQoQn@X-?)vM^u2A+P*~kI<*6{#YkQ^{psWExAzm#tJ8ZD0-$!|1pAuZ8>diFp0h1#2C9Xb?mR4m$1_nNLxFV{_-D}UzWd;IuQPvC!o zt+dvY4A+ztFSM?pUmI{Y{t4Tvwgoq_)?7>1{)zHHbu#Tx^`+D{co{ky%61#dgX(jr zy;(ub5sSMa{1IwSHzn??Jl}ltXM$HNUZI{}8T|0aKMKD5<-3AA?zj!QJ-7>-@$Y@_ z--F-&?zh;~zsUM}mBE_dug1=HzP-bhgXU#Gd4Nt5+4%jbr=GeM9ALNc@CP`~W-L#$ zwZ9T}o-gZj>Zz4{-{uWkgWaWPPViyuN{b1Z<aO|qAsH{Y%0Bt4)ufPAmiHq`vN={SycuJzQWBQIL_P3I=lY1pDTn>bdU z9UC-gP&I(nr&fN-zBKG7WMl)XKK^4!&z5UF0ogB7ep{gL8{`A{=dsq`WvuzW1V5;& zj1-eVHmdRyP3U;zfpod!h1*lVa^3{artVQ6Og>y}ewW4r_|QmPCdZDG9d_1$&o9_O z+t&M_w+a6u);N6a_1Ea@Rk8LdYx~jPS*rCPu`O5GHhcLd@>qOmEq=+s8N@vV9=cFt zE3scgjg1?8i1r=&GEO|XemnSW*q5;w1g%PgbpK*}<<#DlZkNB{4*I-Hmo9bkpJn~l zO8n-3F#f`E2l5p&-qi&fSIg8-l-^tJbbe07gz@9N?QK}!w=55&_mpPgzwGiQSa#)=rmLgtKR1Wbzq7gL((hx}eN-{n!L9rk{trWm%|=+`acr$@jIFGs zL+K{QC#dhSJ9X_m>An`_zopg2GcFF6EW0v+U;d}NX#XxX{K!7KG5PMM+tPYxD|w)` z&!q=_dtf=oi87E^#JF-!&P?#z_$+oERoH+l_K4T{ku#w) z^F5iD@F~Q9{?UJG+xzlwvMu~AEN7l~&FyJ( z9P8HIbb!Xur2`gw`0R_wcj^6#y!`yl7fl#{C@lL;^0c{cTKZ-levH z`nc~Ge%ctv`u6Kv30CA^W2QNGCh^C+F`z4%Sl^+vWXrV4Q$pR>g0h||-z5Lwznb-* zHO?j9Yma})65*%*XDrzBQO};J{8u{zyOyvm2oK`K8-Woa4>X1@o1ThJojX^~z#hi@ z50hh$i8T7OX0=b?|4>jJ!LL5B;Rmnqo9x4j6Nz7C4f~&3Fscre4txaC_>Q(SA;wK& z6SDeuE;KL0&_$$;=LRsIV<=}O0cLS%sNj2=Czjtn>a=zyod z>-z$OJbr9=tLW=1)}Y1`T9@yU-wC7EKNo(gAw-tLw@fXw ze<%Oxc$4RDe4zE^Fp7VOd~%%blm1gYWvBmg@WqbX94>4A7Hpb2Ws2f$O8>Q42Wrgw z>Z?CM>@|m9@yB)||5wrem29XDpnal`uVamgAg|(0l0TVw5W&}ktXjXKzTfGmZ;#;r z6~|WpAD_{D|n(sH|s)-}3RjZaunhj^Mw8W7~2Hv98I@{SqhC4e^RmBS&fe zy8ZH>_WvH_zjiOa=Ej3sVhkwG0RGsb9XrGL13MTSsbZ~oViQ2${nkBJQtH57v_|^ZH zpZOd3-z!d%Vx}loj*m@XaS6D$|F8RkpWJ(&;n$dHD=;U1!}wDD}LWXCY9#Elw>+{!14=!ua1h z`ag9+2Pp62^bFZLMV7hq(`8Fzwz=JBSz*ipf?(`~e;7n&K1g+_8&T zYRnDqtPZ~Yo$r`kNK@tCV{B?Kn+)tTE0Q|uM%_euwx9;$w0LSab}-9Z};>diO^>)YaARaCqYdkm`w+ad#2x2Zn6 zSn**zi6`poH{3hCzPz(}{C+Esfi*YNR$N6SGef}D-sLV_5rT2WBHyyV>mmvHG1KPFmyxetz7&n#tgQHb# zL5F{K@J}E8C^7REGxs&q=D1Au!~Az`Jcm(jq3f@^A-MP6dxH;r@Pjs2)|&jM&O1JJ z+SGTjz1$q)SKH@O53;E}(lM6%CIhTxP$4@+^@m!^1KJ+M%epOC%iQj-fBoy=8(;rM z@Y&CPF1Y^s8-i=Ey)L-%#!p}i`1#AM8tC{E~~oYcYqy zSVM|8WNkoV5y1n+A6l{eLHa}CSa_DW!!lxix%jfZU07Va8Qk)P!xukxCm5PkdfZQJ zstNHy*7Mgu>MLUR6)ziU{eq16o7IcbW0zcVY4GIZPZEo2uZzP4R*T1FJW$-F8ruJr z*aP2eG1jb4m_2@*t08XNkuF`j5O3Y)@P+?TGP4K_S#NpNj@BALSHgt#TZ`ol;;8c zh4M284%mrpli9#Z2ZsFcx-hyA@w-@Di!UK|>Jv{TWdOOas@hIW!J8ZE{7m?D&1|ve z92LBfL*OqE;_3ufADn5Pr#I zC<_g+>z?vVd%_XKZIpclq5L9}I8maY6=U z54U*nCBbvgJ{SD8?yuN`R9QU9Y16U)7k=~vF+e>JT)WHKpAI)VxDH$2FwYIQ>ZoU+ ziBOw27lS~V9+J=h<7ofFTr>*BHJ^ymvx#!i=?_D%`GBF6I93D4r+*=LGkB@`jf0`DL(f8LGigpmI>PjX zVn62P=aqNBo|t$!o8ilrQ%>o*RdY_Iok}+s78h;MefXyG>`AzVS$Vz^S_lxYrvCJ`(08GSAYu1-g;h93I#!wf7NmSu z%!O2e<--5rP23fpj*#YDRbJFD)n4Q8ogm%MoITuV%jUDz%RyV-^?&WR4l{q#^qMbF zEr>sGO{=lfYET|b=HK5b{(wHOGFbqXLMoe`!(-JYx_3fkkM}mYh3a`|s!B z=AEQGj+>`k#R4GyKyI$65R=EkPVt<=bK^M$SLEgue35$nK43nKD#cgZbn|oUpMtOl zigPdi8B#I}-;w_KyHU?rg$PrWI{%MvkWwRkFFjp3q*D~$6CRu;ry{99Bs#^YtIz~U^3wWL@#E;0 zzTUkAPp@|$&|gn>qme)U8Qb#;i!u6bekvbTVU_Z~Va5GLN%!)Z+RE`Xn7vRUBwpOp6y|(s0W57=OjCCVMjNCtZ z%$P%C#*RHS_Izl}=z}AM58HqC*=N3)8ei4?xnx3h zvl7wF=F^$_XmP$&Q2N$9cK3_$o$)wx*m3e(YpUgFU9~a{dCTRKP5)!d(4j+jkH;5| z_yh0KAG3ai^-IHfhuO@tgmX|X?wO5Y&^MVi^SvpoK}M`F@ua%P$vubzR3IU$MmzDpOlWG!MQfnn!bE3z~b;I7K*Ck?5DIZz?`Ha`PQrvseuH_U|7sU_e!2Q89LM z;)9JXYnBL_pe-#gt zKC{Q+aEId&HU^RD*z?2lBz(sDq&61AI2+fFO_@C9?bG|6z8$>*AJiw)IHTFleVKE$ z>l$tuvbAID@DJx(@Z0>6nWv7IF&?m)*bvw%TrA&Imv`p3q5M@od$KXJM)7CjN!m5x zrwqXdzIDO*7yPwTr;hkrn=QTS7xmMA$2s#RXU&Olymf_c5c#>}P!;<%z?c#P6?d@#b~K#U&djjGyoh*pYJSw~#P2*h&iGVdR7<=x_}fIG8aTKi*a8IO#&*iD{(dcP{bdLF2~I4T7^C(Yp3Sho5t#L{B! zeZauo%?MpYmU{3R3?%v6U30w*Mseq5SLc`w(M< zv9+3CVvS+dabdn2{;Xy9{g#RFd-dbTjo;5$F8wBx1MM$`5?d4ahw;!$&j%9DBI+J?4 zRqxCq9m;>!0>Sq3?6YgZ<7Gg4z&ieo;Qv1OZCt$1si#%?yjT9W2EVljh%@oC`+gd% zW3AruvR8tQ8`cN+-TNbFV~~db1eA+<;1jC!zCYZx@yQ*5TJ0pAWBiIH4e)=9@haL1Ic3-q?4+GX-y6)W)cY!<%70Q~uvsRFE?MsWuPwV-B&lN;cy&BU{_H zw|Bs!HI5&a{=?Tqz9)u%`R^k5BRoDq_{A6O9p0fmhz`(PL(Xpt^9VVR+?H{uI+FFD zdk|+0-z%%1BWcT07EiTBV2GdljpbQ;U&lW2XmN*P)r0cAf0})? z0DOz_Gs#66V~ecyCcWQs>`Jq>`9fYP#+2}{UX@(`T|T(NuXdpBw>Qql-ba2O>+I}u z%gAT7alE~f`a2Kt=Vjp^bmk!S^+Nep*3x8@J z9w!F0+5y6^HNXdPtWD$QPebdVvLX0u82&8fy)k~<^$hssfB(R8Vobiz`Hx-KamK3E z9}<4mgQFpB!cY8YhyR=*Lu&EeXdk%@@oW8apZ`hx^2K`pY{I{(PMDVY9c(tu@E*(%;S7&zivxz~ezL8?^ z8HLa5n&D=QfOcERht}hF?UC7v$9bfnut0uD%6rv+T|9X9V;K9Bea0({m$2q>WUe~f zvY!4Nc!X;%cpQHD8!P|!2CG-E2`QC^S=(?d*K&J4*ap=4;WwYLy-TSY3?__n&cwqI8 z)qnCk+$&!T!-*U)4&>qur0x})pbmeGYJ3vr&0Ekg|I^D^crJNpL?&cgaumI${=eGz ztkV}8P|VsmY1_5JPrIJ+mP&6lp_ZI#KbLY*m*eZ%Iuz+<(6l*~1kNETX z_*$#pb)G?@Qp3@G*>rGkDy zyu44JzKXw~eqfvMiwA1!m`=wBbv9(j((!4edroFTyovfRf)V5LmW<)t>O@lBd!Cao5<>C;eV3RG0vnOdT z-^2Twvp7ONYrPuA^mAUtF85YpKdHE5M)2Xq%i$GkL=k_RIe&a*So6H~Q}*Y&pjLb_}(9b?att) zn?4!baQzLz$3FJ);M1S}Y;gD8Uk!f#^PdOLKmR;F`MZN#Zo7jqf|>BZmzS*f_4?k7 znKKS)-7Cty>``TldKZ`)75osp?XYDW!GY=u**=uX9}3$FD+khv5&6?`^gJVe<{^X6 zefG011~uyrXq^SE!J#;8ic4C}yig78pjyU86qo7o#~-)0u=!$wrKLQe&OCY=^LLbc z*&e@)Y5Pkk_ij;)O&wDQ!l(Ebct&mIm+&jxFnJO-evQjOlYEf8&m*q>qmMmi@weUj z6Yv4tyS4tp9_EI?zlZ%U;xXLvxzCY*F7JiCCHN)x=bd+MjoDk<`fp|*NtsS*?==Nq zu?NI}4$wn9sBy8i-B{N|bBSSk((~NoPrvT!Ys!FpD{s5)cFS{zIf7mIA&m___UP|v zC(KXihpe!Nx`X&FinF{=w&kYpsmGE1A974z2Q*o3&XCrGU?9JGfu9)<3aG>sp>1gX!wwpXv7TV}um>Soz@df9B4@7yyzLEc*%fW6`h z+>Q)XD;6<$mFIr1*o=?Cn*|FNxVqB+KCAtl`f=kf++SE&va*O` zKJpt!I=LJ&8PHzqZefS~4m^nBj^@8Vmi=;w-}#--C%(?(fA~WfgC)eTyhk72dh4y> zxNw564P_~nAIwqBsVA=NUzxWH^BtQtm-pk?liU!2JK}HiTU1l%4Q#q}6_k*JQtUv- z5{tv@|1?=h;+M{J?FY)hY>O{&+pV`-`~{0g3wF&3|6b*u{(x&IMe(P%^IW?ZJtv!_ zBU)FSIu7jUYDY@rB=VgC9Hu^X$L*#!k6%CYuh1d12r|1c_G_sdD+Uf2uyb1Kcu5L& zl>sOJ+EWJ5>vM^#_J_y*Ks>^|rt_+a&8fUMop0sEw{=qYR-QC3IcLtX$&)4>>fWPA zCFx*HLo#pppW*y`DC6dFWxN@=m@C%lUxbC>ZSg?!2C^a0II?tt`pX-K4;xlTn?vi| z`*~C218q>+P0|65qzB}!;N*sBO zQKREEmgljv24QRk=lzwy=oUSX9!H-^KNfzM-HrZ2ZHezfiSj`8TGq8|=gri;wXAC| z{Ybi&|ITNW^p2*9~#QzoV?9a!CF`%wa0- z0&~?imIZ!mr?F#jlS@oGyaaKu#90k%x6#Plp@UBFG) z5$<5k%(~H|$GkmZ;>079r%X9IdFqs-_&*){+-E*_Y|7N>_&ZHIf^GRB#m!=!w>`ak z_u5)g+F=uMaeW@EJucj$UqhO|XeObJu!SEswYhqusV6etE9UBaXa%G(6xz<_Gawxy zo|NU}zQShBfmx2{`HKDqn$?%lg@$B$)OQE|~`*{jk|1+N>2)C_K($hb+X@pk^nAGEQ}J=56TX0I!4XF{KW9)r|}pzq1Lh_N{OA`y>4?MlZR z_l%ws$&W{Qu6)+{?;zP{oD8)%L!&+!=p#{+0&~ixir}Tw%r}9*J zEW9F}uYm4^WmENmJ5s;!HO^Osjq$-H02-cWHWAdUVrfFh~ zExl+oFVW;BrfKXgw!~;`F*uInNEtc|3_}r-Dvk{2|NX6f_MLNQ?hN8+8F+Ur4(#$fba-Ga%NjoDoJ zSIanEskE{?X6m8}PCIO?BKf2g)T6L2hXS;pIBoAv_)^4|cMTtT(w+$uPuX+QsFQXv*7yFf zVZ*i$9yF+;SFc{{$Um^6Aitob2|VF`Z*X7bsnA-qZ}S|r&!eEjDi2Zo+}mw}nR4Tc zc)U4ZeFkFgTAX;D_$$zB_<0N4v~II>;D7;TC!c)sd*mL_8j>H8^SMf6+8T?PMgC{4 zgZ)>04p)Bhb5*Q&&3E+G=(DN6O8=}7(Hr~){apB^CS6Y@XLV9 z$i`A<((hz#LGm46%X*k=SP%CR%W*%IaaQx;*m&1e`TFUHvX1T4sa3?c?>lbLpv|pY zw^_zm3i?BJiutmtFY(wFkaSL?w(L~+Yu{1r)lJa9px0F1&?539my#c0J7Z}!W{=O! zxSbJh`_mHnw{tWF8GMD@V;_la> zH>D5A!=W|b&8{EQPzGc-tylilp8btyD6fpLFCsVJ3d&<|_)aQ2$-2Ft-@_OAqC6Qc z%{_SWpD);Y_gWLKth|i%uGcUQ_c{D;@F3)q<3Tn5xQ}>ge9*J-RaLT{*;Zn!-l0Yc zzw&WvKa2NERdefQO^)!}uWJ2N)q@9QX(1C{+Z zuXAO;fwJF-{BHoi#^WA%_`%>*`Jnu7>e+|<6~7Nq?{>Co-FiugUHC;a>jj(Q%R2D4 z3H;ow07nV-qrBe7zZLDe%kA_;2nhTSj>|3emv{?2^SgWHco|_(c>iwc zvcTgd(J*%PVo2V|8DEv8~z$R(7BasRtJ|| ze!2N4c~*KnaDHlQXD1*Bty{O2pVHaY%qIeg`c{YBa>M#hS@ZLFCw@RKSNYIlg|V4 zow(z_zwmrev4ypNsQX69yLeH~_>;z=L|Pwv^}5x;7ys*vv;~@uv6BV--?)GZAx3(;U_hQTu99LcS<>0O2H)-b| z3-0>$-NDT_-xyqb?bo4i1UKIJo#6J{Zwu~!;QrvXfBh?1OI!H#Gfy%1^mKcU)q^zo z;N*a|kyxv4-MX#iS^r4ucuis6`IIT}#falm8H<>Fs*Ov|pndq%r#~Cq`u*<*7hm#e#$qy&0WT{y zK3R40xRdvid-xpy(}%P^^{I7&=L={5#E+w$Q(wI>Cp%YhnAkUo+yiOqJpUeUuQhFE zG3QdekRFf?ptv*HhMIdO8zO8=ZQjAD$jhly-2AMtJTsEFuzsKmrXA?px9>*bmn^e? z2C7pA$obA?@p}*fu8kLwb7Uj;(tW_)@Z1xcLp^WaJX`Ph{Dlhxk@67;vvL?2e#tkV ztc}>;Ci4&B6LE}`C0a2ayG5xF7lK3FH&s8Lkna_Kdn6S@*A+4NSSV_0Jb6{(Q{n(eH=&tv{0~|E=vdIi42G zW9_^3W$SI-U(Gw(uwi|0-U7;>@3jtAy7%_?O!spdJIY=*uJB9$`SSNzecR_hAI?2C$AONWZ2e35*oA*? z0=cUT@^8@YWtW^XVLbEA8?N&c?;YY_$lA}s?8{&NuKDv>``zTfTK^qM{JhhFp1pc% zu9p0!(u21|@T)z1Mc=8fqu4v)59?0DWioLSBtwUbXa|*} z5{xQ;)&Kh;uLI@hkWa6$b(_{pHMdk{(dcJ~__g+T5`N~K8-Ce;w0|DA>Pn+|UKhXc zTby{}kS*AE8at40;O~%dYfIp7*RJg{)=$%#uZ_pgy9kry-{Y4ItT+5x``p=o9~1sy z*zjT7oPBHfUj=uLp?7@(`Sags-@e^4*$amSzb}9Ezwp~!Q}8S1VE(z_hd-J0Z5t(z z=$hdphHnq?%O4=T-Y=v+k>vjkSN?|yKm9r@fAE(x&oY6(4E-nkk}=*Zwai!R#YW+l z42E@r^53rZT{t0?e=ej=@~_W@ZQ8V663V}9pGMXJ;b-k{;m6l0+fVC$YmU9}yZi&y z_1`^DxNB15-ow`~#tOECeIV(-sQe4Re5G$TZ-%eS>A%B(U-e&WpPz4QpDXW_);E+b zaNc~%AAhiue~(u<{jv7c5Bq#r@K+5SIItXyDu3bs2jumi+CR;cdy{;VZ%>*u$zl$9 zexrFHjMexRdr$de3ogX|HGS{%51 z(c_P{e`*K+DEzdIZ;d~B-0s7Ye}MN*#vhhH_%FZga+`BIS2+lXN02{cmi$B_`9zqb zYdIQ)8D6BqmkxIQ4jEMLg^#fRN<;kO!SzsdyD9Adyft*l(Cvm_W3MTAp2<0fe<5+! z2CGS01I-S;)hKR|ARpZwrQ<_D`;{=Pn^gWp|i^9lAh zYnJc>$p?)-b( zwg$hsqzab2ZiNY0DE-~0)K8xuw&bM!Ef%mJ2=(mq^GXe z8OUK3xfdz`t8y1f*L&T^p>4Q-Y<|s`VH=gwbgx`3Ovi_y>e98YgXP-lU4aRsk zYJFqn7;sckq1clMalRZrDL+94xf*}^v!B%-1Ie%~tPH68?K`wz0ZL(4*{iQ#YirV^ z$rsT9>K_#z)4PwW16qf%0nhZjfq(FB2EPAug4t)zA-0Ts1H|5(!TgUiu>DUD$>$v) z@0ARpi@d59mU8C=B@fz|0^sEJ*6U1hB6@F|))-23ZKd^DJ_mTSI z_#j@`ycV+ybS{~^oO^xGz7E~*`Fp56?Pyj1{{57DfwH%Lzw&IUy-%^(xZm&Kf#!G= z4jeeJ!s)@o;0u5kiivjbD?YemuPdT^eOIg86TkKMNNazPc&L5NnzvXASjqk}a1oc5 z8h&s9t(r~I>I-~0alq1d3Ykh|f5{3Ney zE-JaOG`}rX*?i)7Af2Zeu6R@OEem^AY$-fA;ZUHX-xGh|Bg8L1f#!Q{BrjTBK0)!| zlfZ|A!aiZ*gx$IMiczG!i^rFO{|025|LJYgj>KGTI^ykV;%XqbcbTaUeC+TFCN93a9-XIQ#;*A z{>(Ti?43JzTF3jU%!Qpb$yk$3*u%h%ng)LqbM!d7iDE>;jh}OiL3~n9B3pZl^#qI2 zFWbOwbw0v_s1Ar8Hxge;y{mg7^R#o5ChcW>*R8c;cAjkf_{Hcvy}bbtn%rtsA-L2# z&4aFiUl)$xR$A-bctBr)`5}GE$S0vWu)glswLcR0h5dlmMzOr|iE_98&1JkVW-QpX zh5J0>lG53-QGOo3?%;339VG{{pIv-0?Sj^(3D;+dmUom7hZDQ*E8NWQn!2A@k&Ud$ zNZU@oUF6nRSfE#iYHj&x;%}0z_$enh5}^cscgGIw?t(Pe`gQiN=dfOR?_RyuPM9!p zkFOJ+GT5 zXnVGiKY4}ABWPtV{Gwm+{Ps}28><1=`@R2Cq4$V@lcE}h@2?5J?aKa#(5qZ5y}*1~ zty7j$)U`{Ol_#7qWE(QEkFjSkd0rSl3}a|dhj?A=kNPaaj2u;>TlS9~J9g*50RzjK z*IbHRst+ew*Is^%XCe9Ve0Ak8x*@xfkBUpIZzI0}vhI3EiW5w8)3c=)R40%F%lRXl z@pW=|EkY)WJ9q4~vfnX%%ZHpWWCv@y>>;j6`3F8E|3W46{Xb%E!bik&RDyNi@ZrOE zP_H-l>e+J*GQJdEx^*QzZZ~(~CGI~T%7rr8vU9)}WeUHJBNyV7{wV>Y`p4FEWOQc} zt^xey`w;Kv^A03p?U`23S| zWOJQz+yMiHf=#3sIkyonqpzE1N%KWzu;J%0-v<2^dIj=$g;h93ny;;SC_jP3KdrCqDkKModlS^?R`YZ8yTf#>M+i>~s2imE zqJF9N-JzC{%J_)9iYtF#2Y5=#?T9=&<&!=sCw-+#JO99!8u8{dLE`X4{`vd^K@h|~ zJP^b-@7NvNvUO){`?j62T|4*2_Uzgh+qdU~*a!Re$M)^}Fr@vly?l1`VQlYSj`!@3 z?b-c7Y&X~Ickgqb_uktT+y3tRv8`L)jcqR96kES$eQepP)v+g^e?Hc+yP9ovi;xA= z_2_@?>Gw8mk{uf{^3>Q9FBZp^ZrC1MUH*P-!{(i_E!%d*wr$@X+rDE@Y{&aNW9Pou z&RrkGc0s#$^ZY#@#`f&xefCwx_I>bC?1TLwefUvq|Az-+A67!_Kj8De5BA3@Mf*O8 zZGV4f?A`aa#*XRVKbG4pH%8u~SYAGsiZ2v<)6D;f$2E!Yo~-;Ptg+_w%2+O009^^G zL@(zDv)QXYcFfC;k$N>2&!xPw`9U`CqwrW*1h2TF0UJLxyDBG#1`Mptn&-#5ck3M6 zw|`%(O=pE0Y17Tawh3D#%TpG|*e|Il9?#~TYEV`V<(WeorQ9~`$7MCm{d#sz-kYM=iY@#syeh`CEL}`pweA*m7A<6J~!q#2V{a$3pl})R7hgL@>l`Bo&l9mhBX! zEWLBm`#U>>A0#%#Tz~N42eH;2+a}I6@<0r14o!pZhKSiDr#5TDBj3tJs+-k|RFDn)Dlyi(kHxV+;{_0xWJ0P1)mtvUrak*Vh&5|Nkx{vHC*4o~ z+*bSE?pt@>T^H}nwLjr^l4q?UL9SgpE@BPMl1?2ut{6OUa0T-^cCwBv^V(e>LwyqY zZXDTs6I-W%xfhjFPMy4O^q4X4_v?S`#@21xmNI@w4hr!?cCC^4f^8O`1*rn?F%>x! z$=~^NB!S7!iS69GFP7IT->R4H;I6H{rk*3o;l&X0D%^2$$H$8`&fkuAR^Dyms)%8k z@sVZtyro(eU9m~iMV_D)Ya!jM<|yT{oi=( zKK8QJ(%2kAU%Ummd9j^)_QrBs(3QdOk^z1-V)yZbxA~RTQQ;;(>?+<>Ye%U6?Jx*$ z2LAbkOc3iyyq1lBdl?}{zjDx^f$tVHYo`1I(iiX{j6086`w;@HixtUVYYl*%yZ6R& zno*SL;aBq`KZkrT^8IKnh2r+@I+TtXHCp)>h+9aMvCF~W$IP|&lzJ>D;fqM{z}F9# z%fS4NJfn&^a+SyQ>AhL=#dr_N!M`BMh59PVm7EiGZ3Q{PzX$xZ9TEJ=TuS^}r_Tek z_jwiPvRaQ_hZNI zZPU8dO5Q816ILI7#OJhlP>_=sdw-Y1A1(hB_;u=2U|&o; z^nMYFzWZT3Mh=`GQhd;S;T}i#DB}gySC?K;`*}w?JSbqy{rz3Lt^A|-`E7I)_H&?; zu&x)iYuA41*?0i2(Jkm1V#5ay9=w?xFyevpjmE9NTdy3X ziC=jPz;1oyB61&>lEYu|S;CGyYHj33#3?nLUlAUdo;)yQ$cgVZZ2}L-kpjKSd*1-5 z{8DcDD*xTPW4XkG+=T_Px zQx1qIlDgGN5Se?SFE;Q1i@YX9U;X{)$sbA*)yDN;ccxd=1%QnKE3Ntx}0b~FnIj&o5R0175+IGIyvm*V zXpPkG(Q$~H$A_uiKn}wBVwJ;&4p$xuwb!x_)HcvZtKRanbIty>@|Sagjq=Y%4qjrf zzD)6O^1`X?L+lO2PydGgj)*q926@~%?~fa~cXpR_LM1l2=ADCG^ATcyFo^uoX85sx z9e!8q!F?Jw&O5629olzTp}t5%uzS4LMufJY@-EcEuW>qJl@g?OHKa!J!^X0RKi^K9 zsCpnCs2xklK!M6%^h&MQ!QBDsDB@_mclK47{kK=N<)Zvid@@T2pt4e=KbA%_j}C;nM`pAmk^H2BXso7jUe?pX0> zjudmiaY$MdRqG+zUa<+x&0oHvG`QwVU$T5;)ZsMwUgvf67f;>a+|9$az6;RD82+4G z{K-3GS_&PvVmA0+fD3QtOAHD^@HgPVHRF*V5QJpmIE_dyh4){H_1?OOOBE_uh*& z$-yhxB;E%RP_ENL*2xXmK=ry$GMK&`VkbHL=Mj4cUR&b@9&FsSA-MX=FOrW&>zgUh z+G)XzS<{0#XU--k(JetaYae-8P>jZ%zqk__IMwL@$w7l;!Q$Mih8#a+JN{Q+2V@iG z=Hm?Cvi03qmhd-?FGK?fe^I}_{cP^JtwCY9)5k8I?eQ;IZ~?J*A%1d?C=T($3ocZB zBEA4QG17W((}=a15IK1|es2I1HHOs^V0Zrnaw8;JT3 zM)^&8=4WTe)~(wpy+>0YlT5rRy+3T|P|H6eENY9i&x9QQ8RXiz$S^C%mU3<>4)+4` z@93V&Jt0zlB3*yl)G5JtzxVy%UDg9}>jG5-C2zmY`pGViGn411x)z_&ffg-VSRNAK z%D+4_hk>3KUy^xD`sggJ-w-QgZdu9Lv12R;fweywVpsc~z<+)ezsi4u~#rW+~$BCP>x_%q{wD*VI(RgotZ9bo0pyq&D?WHUx`!jR#@-wN4R z+fYbO(Z#1soZxa0sQqmKew%xQt#iKNuau&39*Q?=ocF%~y-Z{|w%EOao%ESTAHkwozfrmaR%@FFy2b zZ|2W+wvX1ami$NSzt+21a2~mbRPQN&lYjQp`7C?qsi&W*0(TX4zl!y8t8TgV7R$}+ zY{tgQz>I)(P%Er`w=tRcQ<0_wkFPp$oj2ijNAt~*|!5BW~G zP2aN?oY@M*rvB9BHr|T4>j-I^v)|*W~G*0#- z<&XSpOip8yXg%Rqd&hK6>-VcqXmZiARjUt`Ia-GpYs+98`gx zclhI$k1*@F6HWlSt%D(7VIgY>F2?pxw11hEz2^-)Aiv%Pl`$k9d@n1W6Wdg=KGr1LoF8|( z^YORvdF>#E&5czzNdJHdj8^`_4j$RSX8(d;_Pq3w_Yvt@;ru0fZyUJPPuzkXeBXWd z9wz)Vc8~6^?wXM_77$6${+g&-_Omr++zJ7!;c;C{PWLSo=VsMX>c8|vY$kMK9_ZT z!Kt#>zK>=)z5CvdSWcd`0mp(LzR>?|XMR7wZe7FhBmWl(zx*8FHy;4_FS_ueTIDYu z2>+E=U2S;^#54Ipir#z^zu6gfeZ%U$l^yFr&!`$Pa^yC0ORC(3Ut>c|Giwri5C2DQ zf!zJEJn;V${aBcrol`QAwL#!J^*{4A*kY}%{$FT$7G%q-Kf489T%`W5m;V}d;C#~; z&JUve4C`ns7o4}S5js#Z!@3{SXIAy@-FvO3m2XrtXjDWyO&%e_T#pfW5SId2q$&zuv**kS=FB-W zm_7SUY#{ajGu1&!_=AxnMsCB-m2MM$lYNhWC*!|{U;a;gLi~M^@7}~;S~6VIPVvwHqtXXHTFy@kFkA!cT~*8{bmmyF{-|9!OVt!=IB zO3W6zEo}4SKLr=?+*SvEeg9)fdZL*5n#++}>|v)1BN%B{8zU1(f_K&UHRq5vZwtu; ztiKNy$~4}EePYXHPIHR#*Y}!F=xv3ffddC^w0Snt1<9B{K|F|Hr_E#hXir4v3(Hjk z7Tp|v^j~EBU*drPNCvKlBm;%2KckrIW%a=2rWJ0l13m#f@YwZEPVUJez6zbD_FnUW z{tnrgR}%gv%zu^suZ>@qHHTh=WG|4LwfWMCtb--ojt|Z*;#hp}JTSiKTq=t2%=7Lr z?LB_k6f>&^4;s7yxewQYH+z357;0^~;J5a_2L8x}at=#&%r{Ifj^)a6;IP>o-J1Rx z<3lR!I(Ovohvg3TVMB+pHh5F!+gl8v@~wW6_fP1&2)0-rYed$I->O3FQhuX)U_2nU zbd~168AdlxxfT!V!tc)?Rz8Hbk;!r;&)paHs9ua7H*cek+;= z=D)curK<4v(wC<}Hde@9am9t5$!$Jr)F^WHF<->_%nW;2{t2Dv>p)GJ(B~-WI{(@K zCb7paLrlbe<&!OFRv>?l>bbA)iaBZnrM0yzXzuEN4gB?Tz};E={S(CeLW>1>JsX{S zbdRIfk?Vgq^5F3&aCkha_EEg*>p61$CiQ*v8?Mn@@BJf2jNGm<8rpWRk39ZQ^FDRz zI``Vie_J(g(NO%lk#xdmp_k!-`0yIXuM-nc%-qX0!-fstp%{DKU-Kqw$h$B(sy(kl zeI)BAnePGHTXMedgcDBK!q`M(3<$4aQ%bI>CCM@_zmLZy7Xb&^G4n zZyhjTz~(;3^e*q*rPI2Wty?b7$;(~LxU9zLCEK1 z9Xrr}1#l76e65Kf_&y-b35p!+bA-@)yq+ih4kDoe`#~`9C%9IHzmT|^H<@>%wJli3 zFiU!>E(&p)|4lwP#SY4jD}jo5_9ML3G@g+MDO}GH4|MNs&(}Ld-iy1aWY{^;!DNLxqfN2PtwYlH&hub#)x>)_+uPj!#y=GQ8#t(p!YYR0#^M__P&f~ z)~tYieyl~aJSdm%w1@KZVmZttcAU04+LGt?f<^&iF8eEZ z1;uN99l9F22$~8F;rs5CcXQq{E2n9bSYB>UtXV$KDQL#tQS*X=SPMRb?p|W+_d$E9 zxBFu6zyCpO=T5!Phq2vzD`R{1eH7bE{QJKBigiB_+h17~`|zWxSmj3tppRme#QGli zfSCT>#MN)v9D5hvzgM2==O0jUHE^TF6yk~e^Z5rFc&GpSS!Ns%+f~%+5A}m&!>Yc0 z0s0(t9yAe>9nlO5t1U+#^QIVn%QN8jsqzkxZ$Q_$yaS5+_s8L$@0zmcT9c+tdh#WC zSK~he#&guI*CDknTFc%MeL1Qd`q<{b;3G79_9^zaBCONdcV-Xo#6mXhAgSOc`q7Gk8IN8p>Offzwx5jNfwK4Z7eN zgMnqX3%uZZT-Tvv zhZXtF@=KaD&7zGC`?t<81mu;*Z1jVewySQ7|ZtI5}f5Lkc#!uKoU!qdJ62)bByPGjcJ`=O8 zcy-2lh`;!7B4fYsW_$PU-PVa`-d1sYbO4}SZ=4)pa_vq1M&4dZ#Su1x2{+DpPme^#yyT|PIsmC9a zcu|u#`t0t-JOamuF{4h}O@6%9VAq^U=}GutF?JL993teXo-N&cppjdsu78`mlUv2c zu?t%;rayAT2*xK3w~qtX-in4OxmfI)acW+MlVv^?zBJG2dB}`(rgAXs zZbhG+cM}h2D~$*0+oV?TA!iDj=A;W>_qoxq({|I26&>5JUm0_hz{Hbps7yLPoT&t)UXAFc7CIZ$mLaIzU=FKKL(`L+B7$`@5Q z;Mil!9p9zbgxmWNKNh^H_!*Xibnf&j=5X%s)Ul)FK-fJENx~U&qxqrnt9^H4nCy@4 z(Q_U1iNf-(#-6f0JG`=<3U~53lf_UDrcC(&Kgv?d&Bt8JU)Mf~2YhHo>}5Th>iomB zFS^Gf@{N?D>r~%8exC2zvQGs5kl(zE)rFJCjoYcUTzPlBzwCrxK}ik%A@tt@*>Y5! zMa;)8IvE|yy&ZNN52(g2{81i6kL#$n$z^w#WrgRPy>;B6!JEPCbb+f2llh$3>al-X za}oBe>OAY<3>c_+h?aMPwmfMpL0JFOc(f zQ+I@)^&s174V=T2d%^2S&6V)SexK@`|E|7$y}zqs9rqoyS*izW4^$6Ec*u3&Z_fAh zDQN5P{j+B5R&>1jCbTt~=ALl#Ceh2`cp5k&$4TdF@I&9#=26Dy)IL_xCawk(eI}EE z|KZpQJ_nyjicNkf@u{$N>o!Z7YvST?GK#;}dphijG0>da(@$5vf!V=qat_QU=YZyx zp2^yWbLXBFoH=){eb#kTPb2>T^YGoAO~<#?d{DW2s+TWS<4zv;J~ALZpnjvsa@FA# z;xK6wU!H^Hqp|g`RQ4J(Ga1OlhPQH_5!`dnAA)z5EDn||T}n*-@?bf+2v)2l7XfpU zS3}ybgqAN~5fr~&5wPNfIb79iW^ z^JiCU>%|%MD+^iUqGZDO@q3YblYQ_@mg<$sBt0nn(`N>cJo=c$A6Pss@dvh7d{Iah z;rfRatbM2X_F5xSbMNne@B!AvWc@eAprxn_Zr-xZGfT`}j>?0Z(<}a%ELIUuqP35G z`M&~2{8hEKD>-9w!ua+Ii$OGf?`)m=@LM}zWgg)Xvj5=24-W5Y>NB5M1HCE({z`opFB&*t0P**-Db2pEx9n9{r`tU9)7^Y}|1PZG z_uwPoSL})Kvw!aCr-(gM9une@W)g!;?Cn|e<_2H-@|T0Rir+F``FsV-$=NaQta-#9 z$ky;>>3E8*)1L*O`SfR9pFezu8NyHbOXkbLzl9i#Cm(w( zm^A4W%Pk^3r#j9Yh2Z4z)uVCykGMKQek&- zp)-O@F8NgOo8SC~n7PHlqmMs^en)?+OhW$8AfJrG@8XU&Q@5Xb{7LXnGTf(4nQD8* zT}?V=67N4NSX@$K>qBoOPE9iN&Fj9Ah`+Kn5gv$Vl8chXi-Sdr76rH7dMkNe=4sxg z##beO8ROycm%$tD08Znx{Ah~5UWVKsaQOMHasyG{6g!}M zUdGzJfBfSggQd%s1ZBh%u35J(_|~_+$y%LSt5w&Aa!9_NhbVs^cP0JyX<)yjlrdw<+>5b^mO|&DbW3RmWYH-Ufx7wPkrU&#s5bc-h+(!j1 zn&T(JuE#eI*1;Y;`#*!9_A$PwAHE%}KPp+4OkR2A)xm=gJ!Cm?HjqC;vB4Xtqs9Z` z$)5ZB-_U8Zd4|L7%YP=ZHV>=(xkfr|3v1s#^~7H(|5K>*r-8xI?$d{1-Wl*4Vpjv>0v|vnD>g{_lSWKltGf1FbzQ z8%%l}`9094ZQC^rm|)+S9pL*z(u2{KV

b=z~Cy$Z?)tmX}ogXY)Rtmoq!|vKv%VDHEJ}!qrP*_wL{FE5h z^N3?+U2XDjbShK%gI9fmd5|{Y$L_PSxz{xwb5wQ&;Xud)l6PtgF1_oy8%3cYn1twvM#f6I+O7-4<+x-dcSJ^1GP;r^=UER9RvI(^|@?W2NhS>DkwEN`W0>3A6mw$&}Jk{?N^ZvpM z{|K(X{(9?Qk;fX|%?x@T-E+O_I9R3sW_$4L?}Tja9da*~&zd#Mjal)WY15|$7hQZY z_ULcu%PdXk8`&uvdCqfxd)C^1U+*0c6k9(lc=XXnCmOD+li=eNJL{+!7(GF|v)Au*-oRI+#UG1V@&z+;b9ty3DIDa8^VZB=$ z9v-Y*xq|lLOlya0;%D8g;0NFTftB~0#Ax60-CHSdUF&j|IP5C>YB~*HMzdzkr1uM% z1tK4Zn-siA#DFD9(XZJO&#$PZFVeOCF4%4l;IQpcT5?PUNtWhIor1yx6X?X6DLgA)08+e^@G7L9oQW5TPqIKFMNwNLQ3%W?g6jq0Ds@) zy^~wb5UpZAo$bI)?^zwkf)_@maQJNy-vUoBDoypzAD_@Ve@^#PT4LHN~QyyEkp z5A!cYuXVccth3HS&K*DeeZ0+@_#9#ve$CfMziU3L^c?n1l0RI|uooe|%PKx@@Zc?n z!mn}=sb4@mK%z{28zB5ofM5DQ2|x8dx%}0hQAX&f7sxlaZTq{X1J!O{N5A4!Y(1~{ z9Imh};MpFhm(9fIkhcl>r#|BcwD^0ltB?`%!{@BBc~$k z(QA`=A-Sl1FL%9@L%qwCDW_KEG8YHiPk!JfV2rkXe6(#4f6Z5%$DEr}CTcxP^MA?z zm-G(N_lX|cy9pauR3GlS=boVCop*wzOO^yH@%{bf-ups5SuM}{z4#_S#~r`;1v!bx zJ+O{^l<4(){_qDY|L8LgeO%oSac$p>VEFK1JFxq~Zus8-Um0%T(#_<~AluN8Z*alZ!1z@f{`@v8CHMX_^C*^fDS>@Mcuy0VwvkH_YM%{Dc7 zb!?IW$%@TyJMOsST^^R&`0KF`4i~0O?&IY^B~)psq79?|6Ryw z(*yYh%}ORO7U>?O@j=@Py`1WB!}^1g;*?FFfX$ zz8ld4l7Un@+4CXM{vE15*SwEDAL=*tfA8d<{^hcW;Os_#c8KaVQn(s@3Fn+ z5x6!Z)E9M^Yw9wGA7+0u&v_r?*yV{bSARXuxOLoePW0kk(%$OAFXnj$Mvqh6So32w zuTnfv8EBo^66(ZKa-nQsoLf2US&z|S^0E;1d;0Hc>^1gk^@QIr&wpCw$tRE7)%TcV z%E0Z*+m*S~b64~1v?sH3t!)J^@4EkJm=A$Bac$&4vM?Uf+!5med-xD5ZrP$)3Hc~i z9Dn@r6=TPY*#$o;86&S^zKF__xdpOU#2at7Biqjpg#EWt+@QV`#s;)yJ_u(!?@{Yr$aA6o)6ZCb=asZ> z-LkZ6=g#Yn>Cu|87f?5vOSfL zk3uRlUv3_U*$|wM?)`UuukX~xi1d45)|l1Ld8OmQ2s?>M&u&6&c`kdhs45SFy^na{ zUYYA_Z4wpb2hcm$jDJ%e@}|VZi3nT`kBQsoyo=xWxfm2<%ALYzDgcoeQc$MxpSAzk z6M!1C^_Z_<{~(`V=O!gE$`SR0duY94{LQw8tMr&7eb*%ZIx($(WxmSynr6i(gReE$ z^N8@dJR?i>7yPz}-c9et@0kl}e95lA|5uB5jX0qP7C?$!RiA1i zG#~mLq_+C=ko;~_p&?KYs1>9-MQQ%ub|g8Vx~naN`~zQbzi7Z;N>l|pk$)d^{sBF< zhAjD0HTMm`^}pjM0;)PC-~S2F8PH|WRnTXl+0ZaZc8%EG;i-S1(+XV?#f%^rwXf+A?XShxs$cal=r(8^BwhY7ZuRjw@f`>8qbQOac;{D?E5OEi!~6rZ zg&OlMCRTQFt5&T`nFq3lc`jwg2q^3wRVuo_{bZ@ak-n%{w+Sj0KYKY%^{5pz>MJdM6A>y_=)dOe*wc3zc}ooj1v zV^xSB)D?}T*nG*aux}0}VdJ{+GdtV-=Ws8!HGWgmH3NDH+~g2pUIVzXk&0P&wsasq zD)p1;Q^;?f=ufFn<@;M4SNF^1+colIzRu6dcxBbZi4*oQFKjFMe3$ba=?U=xvc9kS zKBJ-ZL8X5sx2>@`7PjDNipQ1>X|buCE^5`PmHOb@@YOSadnPz7rv&{i`6)%I``4Zy z+9$5{v5sMEH{Ts(JoKZXCk}b9b?ereM=KplJb~tv(+7^nm_uA&PP7Q<$YBk1hyECk z_2gL(L1BzutdKeDC7R#i${JY?%Tj%9&Kd4>uqX2&>376FnmkB$4l@7h!103zze{co z^+VNmhzHvL8B+UN|JG3a@z_wFqg=|S$C39!bk+*i)+1IYD!&f5`5M5VhR>lMUt6`z zm~1#-j@2jn=^qeRp*eM`6OskBozFtOp}Mz*;U5j|*C6!;UvJv9Y0(MCAHSJ$Rn7^` zD^M93fmbmr78`xIuqVle`LRNs!aN!B2yWtilz-sg#)Ek5Mc(n)IvJ2T{^PjUE0AH& z&CMwuHS(k#jPZikd~Dh~>>hU-bv=qH(__<}Jd3^MVHi2`q<3@ka^$!0JopDNd)CQ= z^uOrHr5d|6?DC_WJZ9`}&6l!wNa(3BMosd5gt6DSzhn*n=8UQ_W5@2u%gd84R6UT5 z^#s%!YUoDCKK5Jg_b=L=*W?EqJ!cps56Fc* zZ0J_}H`t5TzfikyZd%~ED1yJcWFG#BkA?mE_T7xF7A^M#_9$*0|EFX?&viVQexOgE z-Wz#u*$A?eu$j&O!>;}<#4ls{uCP5}O~j5`6Ed+DxVL4r51*N6%n z+iE;YzMeA?SL^%p%sjSd48)|3z(kb-70|)>YQ-yp5@ZeH_^d&MvHTAJHAU zCiy}#xZpU&D>$~$nz z>Es&;qs#(;wiUI$iKCldAWHdlgT?y*=v4*mw(D6#hl4Vxq03Qzv3+K`RyNwlUqh? zWofX2JOeA1uOzn6NFg`_*SL$Y*_=0xjE)Hksdfb z1$gO&N8k~CyR4#-BZh6CK0S)R?)qrB!Rzt+y<+q4yZ0}wX~>$UTHluVFyUXjUUAFh zAy~5xA_k4m%E7Qr_&smn!L7Hl{J4KzV>l*Af@{pV?J&3=+bfA3D zEo;cY$>@IJFKpkw!|LhNw5EsQ2UA4u!@1GYO?t1nbLR!O-f}Ck^53+$SQqQ(%1hth zEBwU9sq7VB_W)~}DhAo|4=4u#@#l)CnlOPFnqT?E8u-5qe#PJw_3e91`HbnZ_oDOVc|O>ExoT~~Z++|f;GZwP z7_3^oHn{4lt27TRQT}=-hyOmquku$+%|j2|Z!zeq8y0`AJOqltpETLpg;nT5@j&&3 zHQ<9Ee(!t6AH`A}8fTP8$=B1a9O&My`#Pjv_+=AmY{74;3-?Mk@ZS~>#fRtWeu!VV zt-PlaCpA0x+Sk4jJWt$t8S%7=D|_XYSCG>)Oy3E!udhk?DgQ0tfAD_cpJcgq6pLj! zci2-tc8_Jmcp83WK=^<3gC98j<|mHgJJhkavpgSW9K`3oiT2I%?}PW}kkS93dhqNsPaE#?igJs?R_ynm{`h;!T5(v_Hcq1a|9r2- z9!dVC+aG-3FXUU8Y;iaqyW+`NPYJzncCcpEn(DaZEyQ45do4PU+z*L)Du=?Y@1xiq ze)-vtKmLSmtm&X}{$ha3H{gd~TRGhqdxN}f#2$^`1)i$O$nz}X<&_iY*=L`z^}Cfz zK=EWQ4*@aB#3g_4d$(FlqSbx110hMq@BLFX{;ibfBjhreL=FyXeNP#zkMrMw7!jWcS~nvb##-yl!T zlF5@N?jZ)e>U!$;Kc4>^xYrVE?BeJ)l8Zp(auRG{9ryKt@?@N**c!u)u8iWZQT|Vm zgF&&PbFcyDXq{8pgzP`_nahI0!Z#9j!Mn)HAOH9#i&s^S6<4O|VE5Pf-?+WXAK%SR zd?T`hDF66t;LX$g61Jlt*#&PfpJ(ayH+*Mb@tbc{ttGdJ%Q;cz_91R}PB|H9$B84q zhFlF6gNV*^Hmj2XD}RsQ^m>K0_sfVgEhTrtGV)R_AvSF(xm4C+3pl;6IO@&8{eQVX zm_^&D`(~#1>cT%WP=7EdCkOnJe~UpaASRWMvF?zSKmFZhQ>V||cina0ta=)mUo9RW z^M={uw;UXb$7fAnV!*$2)s?&_d2%RsPm+aX{4NjECgR0q>r`wa-@r!BmDApVcQc=L zPPBUUy5M|bS`$2NP}^6t{A=PjJJ;ivj}yOXtdQ8lrJDc7++xiG48Ho+uLVy(`<&&C zQmzZjJz@Bf3376*S+_R$>Q}Bo_Y)^6{CZcl0c!tL|5g67|ImNR53riHa=Gk(^qlfh zD2Is3p7k=U&a2&%ous(xxjx3WLHPA9o(C?zb@b>l%1cQ;bDP&Ce{OzLO_h=@6i5Fv zUaNkB`i$r@tv6LAJ7p$o5MOi6SA(aYdCuY^m3Kfou#DUk%1d$6%{N-xpM>Aae`*51 z;^c+v@kbt|&YuCzA|CN{?7%ZEhWeUoz7mu!T^4NR8eO;T-L1jxx8DvAonC2N9WeY= zteqwOr`*}{4a%SI^`F9#p2qW`b(=~UtKCICuEJ(e|H1Ttr>s+oF z)q#8daF5x3zTLO}T8RI?KmR$je<)w*nJx!eC|eoJLPGylkz0jzpu>EOG4NKmf12JVf8QJQ5#C}A$?YD$^jV@#Qx?oG zrf*8U_{vv<=bn4cY=M_wec5u#NZ!5t>o+R9`|g$e%l>ycxE`kcQ@^%aHuZj7%ehNF z^{Jqo_Eff_aSKrzA2OMABb(zb7{m$|!^y}ZR0*oqq>3Yo__Vy2_<6q*la*!1D z@7u3J_<4WJ!RGP1a+Qta_#ofLb=Q6)c<{mdgHM0@)8G}Z>h@oK*S}!ztNtr5Pz8K= z@PP->6%N0TRX1M1XZb+n2M~6Va(sO1;!9lr2ieOUyVn6WR`wBNmFqw(?Bc-{P+|lB zDSS}uaUuTRHN1PJ_71n-ix<YtngYla$c>MVByK?jL)bHQra-1Rzs1yxQpTqvgu2Gw!`y~3b;sGRo(S7$he}VNE;Md)E z-DUi$)&J9P>UfXp^CmBbU+V`lEm(3dx(`b70|Q^m;8Mvy-xc-fadcTN{D*v=a0t7T z0pY*rx4*~7w>nr+x}3hvs^E9zuTj6x$$m8k@lO82pZw%!v@P-tDK}A>$5+KjC$Md&)Rz z3-MF@@!#@=e4uX)8aQ~1$$;s>x}H_{d0!XQE{Yc-wH-QNCl>U)$Lp{2pX>ZhQrURy zR`%jWmGb6e+koBt9vTm(h?6&)qpmNQhShn0OTz2|um!7t$$!+Et6i|7xPoH7w#u;)Q?d8Mrv zGAqZ1@F*F(%e^sSXI^!^*BICkkGJMt__b00gLOw*VLvDh}|^$s{>?ccvf9a{FiQjD!YI2rR3ms%?~(f-Rpw#2(6;C-~y8X%s&~+|u#bru%yL>|LfYD=>#~7qORsU}KwgqZO3oEsgT`Kj_85 z!;tEOe29xWv}?DN^%j{gFg+3L5Wy<^nU`^$zfnxV^h(J)>%%Axz_oE2(~8F*1@qCo zQ^p%>e%31gdiYns18#y6I)PZ(LdI8DSsUr%?xVP)$7%4ww`by;Kc1o3^-AWl?8F{h z8?Hqu8&xEK&i8oVe7$o`;?yCxn)qwpL!bQ?9?O=JPWT%nT_ag|jdit)x^(WmYS_@> z+ZopM$$-}s5GJ(c`Zt=TNO z5N{IlVa(9=o_LCWR+Fk9t~$|&3vS^)j3-&HW92*6oGN(Hgk#J9t@bGud7S!A`3IES zM7F!?x8zGYr#IyKF*V=AKJzE>zW$hBByb6%be+0*)mszRW6jc<+jRY!@||)HxO@cK zSCh*}5Y0sp<|E+#*qj#M&u{5+Hz~lUJQ7~t2=1rZFN!lK9Xs3RU+`wcjyYc&KNHSk z9&3avvIKjKxfoebAP3*hZqj5Jv4nXVt5fa-5%*3eek323-aA3conZMB+N2!;3WX^>9!GaK&CVeYOjBOgUn4(mydx(jLDxg_>Ang{@6uOby#W{7 zq<*qKtDSiZQrq(!^dm^~gf%xvH$I{p&u`>rH&D6tf(I(shalQpVN?5Samt$anyTH6 zo>LpF+_U0^Z+n%GK{j50=!nQhGJekt?b9LTIv$_PrH?@xG(>N{cr@MYd*ta5nlvs7N}9=#}U@)qN}^$=C8R+=M^FO=Ea>Lt$CF`~%oZ#T`3zTt%$nHpYI)4>|oK z^~J$vzH8gt_^cnJwJ|F7sogd7*Z57??_^AtnETPAN9{cN=%dRR6Lo97!&~^Rcw^0_ z{59{;A^mp`ae7vSKMaQ-(z%U(IUIV4XZyZ?5&g~*tudf+e)B`P^0cu=FuO5F^+lsp zhmS${-EYEiFNAi_LV#2NYg0fph*!DE)u5j7ax77e1UP_KFJ4*d+ z;(q#i9;E(&WL;Fux+*Ki;F|}x^8KkSd4Csw?y-k>5`HtTOT!NlUgP4~RYw$Sd=TH~ z2S**%eLa0r#Tt`)fVctIeteeqazHr9Wb^pz`HkA|%OU08v-+5ums_Izeqg0vZJ4WN z*vi?@Meya{z;W1+SFT=I?m#`~z_4LM-)r8y*)qoi>#wO!e1mt?yJoZ<0>AEeCHG#U z^5(d>ZM(Lm6UL3F%)^*m4T=J%YOvFxA{2QlV4in&>?molbC@XYj}Cr#n);c5HCUu0I`-m z%aBvqUa~3WA3hU0*zEm_jSG7$9Z0L zPw_JNE~iv>?qd2t_~i>!pF_UEdN+^X*+^z%%eFDQTw}Sky}O0CIu_OH{Ktv$P|q?R zh!2w{PueG6Cz4P81dFrKT;qcJ7?92QgQ`l1e-_=piZ$Uz}}Eg2Bq3?+n{n@1gOM zx^zNfEQM=o9@q7ojL#bnkkd-V5QBsIYvuTFj(b5Vw+Q|#xWM|U_+5)mK6$L{I__!t zWu$NF!B^LJHL?27{(61($Bo`Q8Q`5Ko-%PCbBSdut4)*){2odv136Crk-t}KBOAXK z^*E~gI)~l0@0q=$=0n&#AlV2B^5w4ja|G*5wbrAYWAjhvu-5UJM*8ex(KyE%S>mtatz9ge>mO#u^IEb~ zHEGf*l7YqG_Wknja$IZ6X<{AVTfk4fk1y)nvEyp3oyGGd^V(-5qbl<`v(E}jS;uju zt#iA^)<3O|Ia1uwTAOFASfu6TC3v&wt>D-H^FPF6Yu)!S?o9oN44)mjp7)+s)vH&p zjR3|rG#gGfK~7BuQ2sjiLWsX;#IRxSMet`<@56Xq;aA++Ce}07dWM=)uDEKq4?i<6 zU31ed=0w*JceAu~NpQ)*TVY zE3#4!A2uTgKfnEF7NeVp)d=};`m9-&r$jyluTPWr$-E$ru&Pg=J{91TuS$N^d!a-- zAlC=wPoGio_gRG}o-ky);kWxI-zzOS4DruDZ-K=pd;D78eEvD-SX-cV$(6%RYb9%5 zy4FE|niIvuf6uFbM21f zNBHj8ZX-vG+)ckgK2+6#mmqwXZlnC0tySO_soz7R{y87M)Uaz z{KBI(UFWl2tI2bS-D6WM_7A@QLt@ma1B!2i2k$H{3FZ*nRDC@dDHE+v|Bn}52o^7X zC;0DQ{xUfK{0oeyF84zTILB*kkv*0 zYivb6tlkm)Bk&vO+@g*hI;A$)(dv^ z+U!HlJ^zn?82(Mj|2Fi%op;=cEu?isLtPQ_K(aY+-Z{adH{Nh{#p0sF*yvCme)qfI z2A5xUxz!cvhnX`^KiIRU<)jmS>41|X_)o+Cud${@-Me)yn+4Arj@{`BVG{oG5Wm_s zt?POTYiG}$cQ)^THtU>{e~SJ5bLR)Qe((F_GFWHzWb>8^)>?muHBgB?mCg_GtIk-x z;oPiQX9Uka_c!A7RQ4`6f~`*fEm+Lu=lK-&%Q@dpHk3FaQU#_ws=fK+a>(PbE-9h|5 zI8rw%JZbREiSp556A@P)USN`m6r{FIdxr_9qwYo zt=~HP(8;Fw#u(x{FsuBf|3)Y9$6{S5|3$*z5<7XO#uk#}j53x7Jv#|MGQWYcKJVOf zX_w4*YS^@Xy!yMRlY?dPJBv-8t^LOixap>wtX-_e?#f^7`=ytDhW2iWVXlB*#c#hA z{QM4A-X6E|XBbf)YSTJ(>a+sP@@olyKaW4VX_I{P|BHNHl$)Ek80_+KXWZwF))~EH zHGbFr$zGXHSxXk3y{dMGwh}vY3T^s>_i0 z{-W^AqCGs9dgS{&x|buz1IO3IG5Pn%%RFk-j&ST!_+NpV8hHL>Gxo#WPR6y(KeFhk zZb#ww)A(ZJ%75X4h3I34-^!nMIVz|AJ>>_KPPpRppSLzZZTcp7R`k}JHo2CQXkMSY->3AF>VTfAMc3j2P6mv4_hiZQ|qFaOoN zN$`L?GE*zHp1rgC4F9#h?6sHcA73{)Xjm_X`QrG%3P&=2fP5hXMy97y+&fYhiRall z;XfOjV-3DPwe=fl>sN8C{;${1{(e^e;Ga#beeqkx zm(E_YKYskUJx#NTTX1z>zR-cf?Kk0P-VQ|{zZOCV#20m89pUOa;PiAl&#S)1)p6;k zbLsP(L%GY=R~`1(n5?KRpiI>U$mToqthv}~^T@pfk$*t`A%A^C_QKy!c8~LYO7Fi0 zF%!0W)6lPt|Hb1y&HoJ#GzX11L;T;3(*wffvAJ^hJ{9f#aWzjIFC0H~eS>{4VLh2L z<<$Mnnzc}wYfMKnpt+byTLeFn5WiP;Fc%c|>fO7nvG|3@>ZauPP%`YViSDEIJ;P(Q zd#nS$#g)CaZSwtfNdnIY`TxT5*H=+8==rc*$E7Kk_eec#JF5P8N3S)_o2B*N>>HjcO0;#akzykr#}qIl8pVIx@c+~WQkY!7Af?v1+^ z8KCUPj2*Lsd4krb2aoK&O9U*{7R4WmhfdwjwfcQgetyB?Nv9|mH*@=(95hNNHxA#S zWkT~#S$hCqud`>t@Gz9H_c%`41lGpCDRf^wIBLrWjTsvcI(F!^5}U})e>np3+IXJW z+(_EcX_e#|TWdPc>2cZmJ)t_cI`E4X6Zw(a4(ZLJo=5jwN59b4bZ%_B)Ofs6IS_X1 zM^*JbrZ2g6EDl?BUOv4!P`w*9zgGF%51caiBFCyf;z4nr-hIlj?a%{tw#^@}j&Syq z)_OW{Z2$fhtcC36#JcxYTQ7L^ZuQ{T?=(*IW60;NE$-c`R~c;!K7wiqEPlw{}eIpwBW@9MuqUY}}h8XNx^q%malLHuoEjMtFY zio86v<^)B{-ydu5j~k&oy&Z0S63M*9;9Fin`R|+$SJ*WtJ`YN3tBGHqQ*c50^P7{*ZVQ2Pe*APIlvxRb~2V7P>vswxX1=~U`jyofQylHR>~u49cv`U*}jNVi4oC137--$3kM-pa4Hm9_M;`R&=C0@d@{d|St+Wh1o_*Q6z4v#cX?Ou-kVG*?e?O;+Z-0`uA9zv8~b_}=L^PNw&cx{zPhB7XyvI=-)_aqvUR zKhT7j)!Ng7upbhqPzqpJXU!Jib-Ek$n&0u?!YfMgFFcB@K4h*uaSE|?-6+y`<~Ct z-AsD_1Qx?Vjs?nEIS6=17<0roabEV5`cr+NG0;5d3g|1)mm$T=o(+wI`a|uZTu8tD zzwHQez)L{-`3DqU*1!#`Oa(fTe;-Hwfd;)oQE2JDCs&A@;S3{RWXF@}v zPLS&B|Mt2kyt0d=Q?5ljKg9kONVdD#Dj-ywqj)iWR$HS!zS^XJK)-`N104&AAO9OR zm04?wZVvl<*uMtZoL=z%8?tq?IR{4bjR|Wt;V+^+()icE*{jXPw$75B&3$6ug^q)~ z%HZ%5vk7-^=zEZIK4C9qVS6aoQNjmEjCRu!<~NqoXIw+BfwFE#9aYh-Yu7DZx^~&p zu}i1&HtpK3ZjSwxU7h1gwu{KxZ0;o+jF`B%>Wqk}Td-2D{sW{gBGxh1m zPZ+1 z2MyesS5QD6hAhn^7C9a2=2IT&HbeIx3-(tqUU_a7@*XQ})2iLlF{8$8qhIOrKRVxF z3ZH|Ou}A06Qu&J%1EKqAfAF*^r&h|(oRgFL zHt#`fS(ak!)OLIYI#N8)edj~eKg;1(nB641c;K-E%b44=AAhKPz$z=fW1`HGk5#_T zXZy=L?_}$ax2hicx3BrCU^fvt#i^pzBF61$zMsKHXA5@Ht^TQ^vr{;l;t1>Tz7>uQhmoPVn zIjO|rY+^4N_}2C40j(ot*NKPTzb#%QcpBw_;*CG-*|XPr`f7@=Qd_F}Am8)h;(@TA z2QfdhiSAw4u1(velP675Y##4o?`U$V&yn|xzOx<6ucWzSKfmpE=2{YG!n|?uK=>7d z_3|sP+T1FwIT$JPTK5T``jCH|aM+7C#& zPVydN_xw*fS5;=koM?T~&+h!0$-H!)uvSU5ivvu#*YZ^A}iaqZM&AZ1KNB=U01Wdi}3)Pfc;~FtFE~w z_}xAC1XpuD@B9la9`A$`v=998*#9R5r=M|paK#mun~c2l!b`!6&pnGxczhLYscN3b z_#qo46t(o=*)_1cMGfVuiVv3FInmVR$oW*|2j04zDZ2^0VULKsv`lX7`kKwFF_F~_| z1NNgkcqIAmzyfxS!);HK+GJoMV=L=FSc|cqdOrki<$H4N-r0CDnM^F7$L`CZc8^Z7 z^%D;30*j~CK5yzj{e5hqgimWEwXgEK|9hB?T-+CCJv`8wc7kC78CSj74htq~F?VORcv z3okgIb}rf08U*&o!xy4F3pd@g0^5N7T$_R0hyP(E|1lkWEM% z5PsRT@?XUc`o}YUj(MnJ=M# z2Dkdbun&}-Hv_%#z(#y*IwV*O$1)X9_f8~!@VzU093U^;n(wEj@_@8y4U48LSQ ztbfM?`q+8VTW`HJTDJSWDC^Inf;}TLR&D> z1>d#Bn3AJm!wlkIB%`(Ub%}ECuM_bv3H6`wtB;eOKb`uQ4QzNM*O0?FFZze4o{H`+ zFN<=2l>NV>D^{!^r=XYp`s#r2cj%h@{QPntd!Mm#3wr-hU#=C)w5m)Kcdt93h$a>r3umexT23&OVBKDEKhCSvtMR)Bkv$|iu zVMFwklNaLGaI%uhyQ{t@-ev2Hb=lxEVW8>&!M`3u^7OtTZ+55k5hgD+ zzqjhLhS-gV^Mc{ShieTc`p;|t^?@G$Ag(pHwu(HHo0(^56#R=r{MP=JYXFS9%gYn& zzR)hBZD`G*&pY$epZqjBclKP{1IX!#hG927OZ^*u*Z<2;{7M4;{#>hXT-CO1n~j=h zk={* zwscukIa+-Er?hS+3vo_RQdz z*R8p~-~ZtcjDcK! zlHKp`CTGh3*q-Q(fM5Mcv`g2n8^Db0TmQd;Yj?2n7#}b5C6<3|)u>UU*!$hue?9SQ z?Vpo><(v?9k=larTTVIQ4`o{Ro$RICe((d^BVM+`?(*Hi6OTO>8v{FgG5#C>+uF}2 z1KK<8vv%YVrp9IaDAs0Ph~6Su@e`iS--=Z!*7!&GsY_9;oVC9zwEt*pHvVDlaST70 zWdEIhdKLJ2hsJr|WA4X%0`N+Hf@jGwHkY}O`q#geojROL9?EITLy14w@XOZAiQz{J zfIlz9Uqt)@Yp-Xc1M7<)nFfz?O_}_I-NwJ*ud@EZueqU1zWNoL7gYU=53j9UX?Z&9 zhhOy`$Ip8D55oBn)xY|_<}v(O0r+||`TJ%0Khm3KtYHlwI>7MPsSTLCs7>R?l^;tv z2ZTkmm9g;R#ixeypR5D4FZ`)X7TNs3d-Mal-zy6?;5%Eih&(djsGIyJ={>9eUcGv4 z0iXIk;r{^?Kd685?@Jf{0Q|BIipjaW%g3Xn(gyrJ{;YN93l}a7-d?}n@(d|2(mU9G zi}TZaUh^QGpqh@O;DOr7tIV4ekGDAx-v<1% zNGvaT>#OXW9l5#W8UqIid`_)!z#jSgM`CL8CX1z3X zAKIHkb6?_t^d6Tr9{T<^NPWc04o7w@C1%Cq7S$FK%AxDTzpE}IWfz|F&pR);_@WEZ z1E(+-v><^8;D!g9^E-*WBVW1XlHjMrMm>1ngUc`6b(D*P;*t!S1AKiTeMvdmW zUS;8q)~dzq9eg0T0BefZqqZAm$hV)TW=ip2XTIf<*BwUNPaaR`1P-SgZZ9~ zVZKOwyzs&04|Lbcp{jYXAKZ2u=EcMA9uvEwg@;^*5MNl#a~|IWBhx=iZ|l8;*9 zBLorbgeLTv@DO_Chz{*bnHN*6V}eiG^P&3sH@(Df=FeLYJpR}dVOHD#}1m6x*1*Qfq01+>ZR3IEdXE`sztlLPk8 z!#_OT$ABfYN6!bJuc|UXl#}XG^uR{)j~ZSu>nu5Nb-ye4F)_g!3z$zh>>sPc?&J=+ z=RWX9M~o;a&uGpVN4i_(b?eX@x=s=6Fimp>W*2g1ez3!a>4nqSf63-ZLb;FOuhb7& zIVCgTS8Us3k3NPkkeE+&f$}FSf2wjwmXLGy6l_I{CzVd~_3qE6=aTtK{cAm|<-U#JSDJ!^Cs4J?1Kl$f_Pwdkzv+nvA@GMz}{uSrI&sazyBul_3i}!kAM6_^YzWfCJgt1 zcRJ9<5ee9}4-j=egnjSW|IXzfpnqp+Dr-U_zoBfztbXoCSKe?h6l)KxH!opb^|mSW zk?_Fy5Xyt)fAnoawt)IV%>h03_!B1gC2y{FF)!jB_-!pZ?LgxoN3tPVi;o>TX4L5N zBV5i2wRQG{1GmdVAU)ksUB@F*J~W2>3iNkKe2_d8vv$0sd$+DzMzQ9edS>kl>wLm_ ze&0TH79YO$^-F_oU)`>4o3(v%dTkvsykO7N$x{#D6V<%ZVe*Hfv*r6g zHu&`~e-)g{Jn=l@0~Z{7EbE{aM9D?_sd6q1AqJ^iw=Ns9vNKDNZ`rWYajJLaAka8{ z4&>*sxct%%^^x+aJOGIYZp`6qZ~L3Qnb(lVYi*mhZ8mf~s^hk{I=O@PUm8?QTwd%5Gn4H*jLxjyn=lEku{z-ah}Owkfy4_Q)5u3eX1gBi zAMLMGK1;68;`je+eXQd9T;2fXQ!pNozh^Z*ytSP=cUj-3cc0DVCEhV?=&&+kV#@OK z@^|FqYq?pE*o|RCA>EdK!a7iY0%uSfTuj73KMWBRn|#B|O%7>-fH*ecDh z%;S0ZX6B>l}CrS`_Q z`Rbx(s@NJvI`vwO>9VhuhVq%I>hsk5D`2YIuUb z#rtr`bIbbs3FF3p#8~`Y-mm#Y^8J^`1aN+q7x5&ak_Ej@56-rmCen;|!<;zl7s@$grd1USThh&8#UsWd7tB_89&~#ae?* zh~MxR|J1Z;AG6MqJh0Nm<{xMMptaMKcu)g={r(~d+bp6zkyj4P%iBSJWoweG&SUt^ zU-m^|_wSJ$7!O$Q_KD54OE-BQq@|rm*=yxN41eW2r|^5N<)?p3E6UH!WgWK5GcGv~ zb(`wJ^n2pDhI;d5Z^X09m8v+SBRk-ubatkEInoCspc)U~|AR4+S;~W^oLR4Ne!X|E z-W$WVt-81Rk71O)tH6WUca5Re1u>VsZO2*t}1yElij=;Uo5Om5)n2kgaqVRIP6w z$Clwn&OQDmX2;XFW@fg~J}`U1=kKVePky&+8=@vN<#-A00b(>|X3s%~z-`XzY+%2|OPVqv7g5 zEt1WZ#+jDqjXmJYtnQs{lXCf_3seUBN1Jokyu0kA+DN}~zYB5m8~<6I&&=cUn?vkl zr8S4bFB!PCI{f+^?2BjvHpV)F981JdtM1`v-RxK4*B*xph$%aUyaUH9&|0(Og5#BU z;5e6eK>Jso1ZnN@39PZyed3emW)-hxyp!GB5FTI~j2(jvG}YX^tvgd+mQ|4ls(%hl zyU1VQ0ep%S4;eUUJNy&&%KcqfPu10l>RI_Ce*5dYgLUiH1?$$95_`5DdM9{?__BB3 z5s{04v;Nk1Z@lql@TWijIk^6Y8x%`o@%!RI1M%zkpJ5Xy{#3Sr^r7Z(k`C!TjvUVP zn~~L-?14FrJoaJT*AxG&;Nb@!33d~Au6TNpa&EmxT)C)B=Utw56Q2&T=0NLD9(nX( zi#b%Tu7=?!-W9*fQ1-J2pX6UWPz+|$A^iNijI;bp#YY|0X+1F&;rjauwoWZ|?`1-9 zBoEy8062x4b#_MYvF>ae``c|{U%X95Tlsqzd?*)w&l`Af(@o1Q50_-gKeIk(^k6Vu zYtNfEmmZY-KL<5SVgNlK9+0Q`AHQ4E)q@5Oq|Z}qk*&c=w)IlL@7n+D;Qsp`G)&4h zru7&9`_%8rKXwvv_Q%lP=R?Gt5^MgAZ+tU&{k06r*f7QL#6Foqj z>C~xHO~*;k&73hSU{8l&^5iMOH^1?%;63q)HsagK<=_04-K*Fhdq>K$kbs}xsxQpX z&D)Kbn{N{Ai<0rD4MzEuum-0Xdv7iI9ks7ZgYb)Y_ur5FgI}?wT6g;J1NR4og@sn9 z!tQBW;WYYy6IgGu-gvN!JZ$B=%Y*;8`DWvfi`#$)^~I0BWb~-f`>=Cl3%v^V+aObV z;sbnHthTTECua9;?U!lz>)7ul%7O6TcmMq{{AJ*O=z#}Ux^MRS4rF-TnAm?d7$&0U|QkygXExj8{CQ)dI6H1uS2@;NzU@G7qMT*Hr9tE z`)q6Fw;TU@>^d9%d+&?k-(CKG@F@E`7Zy%st>H{tpQw6gt*_~XtFFAt`a|Itsb5g8 zl3C;~!^cqv-0?bhzjMDu-yG`D!F;AKf%Qem>p)pQFGA9dMfrKT_;<|iiTkWmz@La+ z?bPFU{XXrVzWs?OesBBv9!Fb0&hign6LLQP{0oDkqSs<}!Ta2M_uapveUN*Gxb=qP zpR2YO)!y!41b-9BfZ`x@s2#BG&c(kB9yD;5@H_eUysYCn0e=~5%9UGG`3E+Vb7);@ zX;8YZ6q|6Zsk*9?M88*noj~N_@x8V z#$y+AvN56LL3;6Z@Ru2W+OK#}ulHBN&sqcGjkOoDY#r%$mv<7rSiV8*Kz#CpuQTD32U-&~CNOi5b zn;{{7nZI{w?vBr1@7t%haxaB*SM__hY*vloJbuNR%l>=(kw+N^E`Z2K$ocr=k0a)I zVQ~57R|KWxA>R#l;V1VBvDn1p+BmR&Wk{A2)ph=|3@Br*v7S9pL@GbvU28GX9ZfLt2UrK9PhmIPH+;rY25gyzB~x~4(#74QwsO9 z2e^D2YWshIni+Wh!}b}34#3afq=<3SI-h?;?{@F61J4uj-$(zC+?)JUw+}t|Pz=AY zd(!;i@vJvgzhL;`f!1c6bJjW5kJ=inYT9+pvf=P6zF^$A@q5X?rZKQ$PkwE%`A-M+ z-wyn%_+EQPSpEr~iwwm4iFK1f@r^ot;Qj>sjBg)&;6bx{RsSBl$pA7gpNH1lYwV-( zg7m=UmtD@SkAES z@qwxSyReTnc-6Ub17U^Y3Z>Q?{8D=+`Z^uvt*&HqDv zmNWi&MG8PGW3p5Oh>^rYH=#*M%H`OnQxZYX}9&Dh7*W%>GVUlBj@ z-w*tXJ1T14tU3NKx8JkLfv?wE&K|#XhV0*8{o+^V<6BRz4%l@Wc7%G5g(`zpd9K8YLL0g-#H%eIXv)fopFV&l|&!$8GF!h7TMprChx%f z`O48u{sBn7%PQr+3i)w7jOjf4-8}kza;I;la+PyY*q?x6MxSRw0)ENCC44S9DboBI zej3SutBWe%TN!(zEC|1HjhYOI7hn=j!y4jMJ8{^-%x4SuTXQ1y!S7{CznwC5>PM`} zR1S9ZzI@xZ$C-y6J6FIj8IYb7&x-M#?^0b#pVd_cd^=a}`D?GfKDgwfi!Gn1{JO_1 zV7(D_EjosFulb=R+;`>ot_&W*Pjbb#uWWxCslo#(ci$- zA_h9)q5^(>vlucxfX!Tj&rZ2`#Dj|VKuY>?0c*;hc;ZR&&%7JF$UZZFqMv`_vB%9G zmQASjxPSTIzXZjv7u&c{zVB1X-6WoS9wy0DwQ?BBKkp-cw2Y2j^VsV1g{2Ux@~8s8 z2F8y<#skHAF@9w2m}>_W%2F#2l#A;8bI!Hg3d*&&1v`H$q+HC}gT>ZhYb`E)-gdtK z#n1nT@fvx^tHtT%Az9y<4nSVmuWB#r044X5W3}Zwp-SzZ&+MoIzdr8=3BUA4asPh( zw}Rj5zlw5s9#q{|QjhZY{^A$EWWDWn@~~|Qwt#gjSj7iNT$7)wbZtp+_St8rum(9< z*LnR%-l+ZLP}Kg=!Y+IEdCnc6YL5!@|B3gV%^$`CmLwD-Q_=+?4=VYFJP)euC)AfM zAs^ve_`QT%a-g-xG2-tXti%4*FMp0MqzzM#738eK->#j<^c_Ba=3(7ya z?R@t3+v|e!&ON^t>~Wc|h~4J;*g&UhzE<&YirqqM)s}bU|UE#$U$)T-M^*oWe-$W|H(3M_=(3Oci;X_ zosQaw%zNyT*~_6MJD0z!JQV*Y-1va1!mr;P2|W%O53rAmdiUzJ*=z$B7ZtM))IO@> zf$>Lr0J`JOJ8XRKd9a;)qwC*!8$b93#z)ynRgL)*>f7uajq9dNo$?`ZI_r^nx93oV zb*hoHD=BNW`i}3Cjui0ge(8|Apir-*6?N>;q145OnZJ;-V%?!gfwMwGY6&RPq0U+==M90@7ayFlqk z5x;KDgqB0t^(7^od#9n@)x_3N~UNGHY_^s~MMy&ps_axWmFMs(<^d0#( zkbkxN3#fa^hRKe2VB;4zMsV_EvM=0G=8*UG=-G2ilMLcoY(H)Elk%-ZY%NL^O_-9_ zaIn_d$$oC z@FLo~8wb(%k$2dxiDM+^0(w?)Y`t=NZZ+KOlWv&RFH6TqSi2jE=T@Q|RU95o6<_fY zIW+8x+VEHLYyEHn^k+zYt@vPlZ;KY0YmVyJ@tpw!a?8kFwU0GT2iYr-apWx4vbZ*I z27503_Se5Q|G=?~cjnDspzjZI@BV^amP_VPUFuaLIu_i&;XcWx>PzxK{Je63v7edz5T2Y4l^)e+9;@lq zgx~8K^4b3o8U!`fqXs8b@65VNNIJ~K$k-2LGvMfe>Bt*Qlm_+C_ec2 z(YPFNnlCM_4*3UEXZ1VKlB&=t{QDyE4T^6)z_!rw&~GR&{U-ej zYm_0a<*3D+SRpdm$J@XJC}9r+-V2-HQyyha4maK z==WyJ@;upbT-#crxA^-Ru1|uRL;RU4c{$-HNr!%~r&NB9|4e6pUHN@B4*4%0VX?j3 z=W`GgYfXB`BRj6wm}&gDaUbF*IiN8KInJW<7tD>$pFcOao;}`9I_ZQcIe;xE0pqmK zrcEo{KW^OEfA$~He|y_DZA)!WXD3IJCGi58u>HDbaRylBvRD6^!Hxgte;WTJ)hpTD zXF-zj*C^LY#V}zHt!97lQstE(wpwe_$pNQ1aQrfkEZ?zwjHk0d)S9=}1~)9dPWzt9 zuW1zKKGbhCR*R0GFn(XpUcGj(e;f55%7vRxdXx9x3w4H4KU|fket+dVrNi%m?dUIS z(?v|)7At?oxN+n5fa9R@Nof4Y_%nvv=X6xP%RliGa-GWe{sMCn$C3+fmi7cR-;?uS zXdG|r0L+&$n;6={g98Q(*iB9fwFBu<5$(&)8vmq*EVa9MT%|+591kg86?u1rjIJFs zYLsF&ShE3M{E~LA;6LIsd~cR_7km9Y49<_B`LNeb9+ddmb6kdW_kY8$VY69>4t-URa(3@j~wzKX%+l zN3?7EHsz5Vxcmc=wC{5*W!IR8u%8RPA^pa=NVylrjvk}^0aPaWnf&@ptD^)S#PLhE zsnbR5i=jQQwGX;tFI_I&9l^ENUP~Ox4A%zYbsysa@6xsLK)OP{IOZHa?TIgrKF8S( z>Ng{4w^PQ(;(@TA$}@>gaoF3p@33|%{w2wx`PE!KSC2cC2g$yCFF#_hC&gK5?rn$a zUwgoZGO&PL@Y)YZSRD_YEI7Fle*4^b9nObIXC53hc<@ffoXSU{d1LY5$Bo2;F+9uK zy6XK%`ZLv&p>`T6l6kF9Oa(t{O{n`H z|M*8%*NM1yfnE4_5`X>t3oqJ!;mI;kJx|30NcbfOhlULuz8l|#Y-!ooD);G7eGavs zJ9&oLtl8v$C%5g#AE%vy0Q0TwHt2b-{GztR?HA zyw~;)>u0%Fdht+RZr*n311es+T75)*Js2`uz1FhCuzNmf&Pn_KsIS*L48_{M$vy{b-dGd7#aU}|w{P8U z>k!0)WlM>@WX?Xt`j5R&I+1rqr%jvoNjAC6z@h$1a&Q}zsxDCciS_gC+O=ED8X;SQ zAGY_{yF9k4&!OH{-^d!GtFE~wxaZz`f@?URcfked!A0!@F*uEd9kkO!K(A(mG55!h|qa2MCL$-v3nBfmru>opXA=Jo=O~(P>YmoJ~_@p&w z7N^N?H6NMCqk3Fh9u9Idg*LLqV9JkD-JyO$d@5?+zI`cnh^<3qJd?8Ahhrb~{cPfB zPY%{G$11(|F8kfS%Ut6I&KubSWfQbT`=3J6ha0%3c=hVw7r*+I*~f}k694Lfxx#Pe zMu!d^wi{oJ+JNibV`HeKs;wAR2#-qb!DeGO&Od@G9(~b_@~4o0p`&82-B{kW`wB7@ z*IO0&l8FD*#Qnd)w`JRw;Gzr8r=8Ct?pW)JIWyjo9=PeI6&8oG3+&qeeP`JY)?X~O zeK8w~U;Za@owEO%WCPPksHXp0%df z$0Yl>YwdS31HJj=@1JDt9pl1X+k>6EcLq=Y?Jw}i*MI$GfS8WMlP68u->i8v)vv~K z8Xr{b2kziA*5Ef;!yZC=LhN4t>xF*_F(%S)4*#xj|KG*7)J}|p$hYBhsHR-+!d?kK@*l5%xBu-KrwhMgiok6$pfh{E z%$^s$_10UXti6oxWDoH7(1p)D^ECWay?d%&@A&suf1Vrk%E{SE{cBt-9^4IiTTpXu zvXNG|Zq=GSzHEOh$$kUy&j^+z>OZUht-}ySyw)dx>fd z?uwgNU=OPdjes9pB9HyQ@rii+e*mxSJsrIutAEBj>$U!pay1M;xfPaZ|7&8c)&8~q zeiM0j&OPTG+xzC&F#o`b*oTWwUPP{mYiwWmUAxPo?EM{GzhOi46mn7+ZyIC^ig)mk zXRwx{-0-_Lp!TkK86CNh)jxJ$qv6;7-_rlWF51Dmy7kz9vH>?io3R14C%kOIo$Ljr zzR&ao{iOWi@|UTdxcaZVEIRph`1PCu_Jc(CnSBdh**da$bPR$tR(_*HW8ue#mxzBC z`yC3S@^Hxhlf7sC0zA>R_CvJ209mVk$4~E|U0B?qVRwCC!|{{Hx*SFC@oS9h@iWKl z3zd&T1KKt5#q?LhZ! zBOZ6z(q-64T7%{EWPNl|;%_vTAa1-Yq5c!)U%9KL6W<_rr_+CpfuHpTh9BEcw*Mxu zpTjzH*?#lqD?c53Ad!dQ#FI`4ZvF2cxP1{N58Nxe_|!#MMuBd6yUFjCJpkMSVazWm$#;~$FK3 zY(VheKm3tfe~lg}1OMZXJ!*3X4b%U67xQF{=UTOCqquFgbM^HLpv2=`{xDzRfPVdV zIiA(C{%NmTPcEOY;aB~GDULr`{)J!mvV5fS3phW)?%NBU1Zsi^-{Ud@kaZ*0vEDF482@-=K&zux@h;%Nm; zDf}JNnT9`yIpT0$RQPX&yzb-D4*mV#ki}jN9yEwHkox+2Up`m=;6bOI%v$>O2j$t=GX-!D0)~&T~ zqUMFw_D34x%Kwe!Bk^ZthYm-UDsKbttFsJP3`gkyUwF#N!6{(YdfG+Ae9W`hm&*02 z`2wv?lJEam`alTX>4nZ1H22Yx_n2b3XMu6&tmJcn}{sz;0cN$B@${auANQsezq-a9uK zJ8tZrF#m$;U;4dM_0a7b`2vLh70C?qz8}Qmxax~PESqfDhT5?;^Pocgu-}oZd*t5g zK5`qlD(XE0o$#N&*L|{wSF+b^DSa7wKr&zy%0Y^@L8|p#W&PDb&Xay`V@KN$oI13; zTA5+Wl8O zxD?Kkf$JgJiYplt6pvz`9dwgoOoZ9XfZq2n!UK=pbmzhDM<2a`;BOyet+8GvRF|VA zH$MxRE>!%>Bz)+?>v&M1t;P6KUEO>!pUc)`?}e=_RuXpEbDHzhx`O%~TBo2ff!e_< z#J!agS0P>CeO zNsxWtN19xGKKzN>!|X#g`#`^b{dTbSnKij)->cpKnKH_!*O-TVWtT#FzIag7A~UmO z=+GhM)CF^;N$tVouI`+`FRMe^ls2A=;9wc5T@q@Ma_;L=gzG7F4tZ*H^{5cWZ7ydVt zt^MZ#yuvdjTlYa~59(ivn>EWQ>6O!S8+#^dAXCA4ww zwOH>1$~i$^uy^R&wJu729N9QJOHU{1I#pKu!1K$$#yG;KXbkxkNPVo+3(T!4cBEUE zE?Wu;M(kz%i;bP+zjp1TGXBK675>DrA%83XK(w&1@MHAbd+j?Mv7UZixJ7G?BDM!; zKdzIG%19dzf5MCOnx2sQ8Pf^=tQh3B_#1om%-LEnykHM=$_L2NaR@xb6U{xWx!)L1 z#2?7;&YBf1oHp&#v8rg?mg)8|0mhtFkAhl*O6 zD>eP14&SMdl&$mtWc@>UmhFg+XhQpFwx(sPmTQk>?OTuT-M8fq=wC+Ol5*m#%JXsu zyw|H&&mEmQb==shb<5Ib%`?`ZSES24PjxNqs&lQ4JORpt>UdOvp9xX=4OWr4a}tYm zdu^0l0@X!6^k2}+{8l>BaPS6rA$#0n@XV&>o{DFW*Z9V7rPqX8&yc>E1o=6;TFNFo z+?`1F2cIPz_(a|M{BW(l@(*~5t?6f-zvUb7XM|B}`LQvLs>ne=x`FgotVJakLzAVD z_S0TTk^q;3z>USVp2Y3NEx(koHjS)dxhi!JHI2MVpZ-vK(@gW%{4lEheU1m0`; z2RJ8|sj6HAu{;FiBM=t17FMGAg&&fOR*+(j3ZMnh#n5-5??Li8oeily4~5jfWIH zt=7apF_v8;{_q;{%+^Ej3SBFH`Yxy^^yM8e09?YYizA?0AeVQ-<@RFzPWtLL#Ilkn zbH|ubqdz34#6jlR8GBhy#2#Am~wzTt9$UFZ_UcidJ{Vn9=LH0 z?|q%OiZ_=-(koxi5kWsiuookd=OE45Tiz7*4k$jlTel6PM~~j4^*i7SF;+8&8k=ji zoQYaLs{1t_)tOuag$EgX?;$So9nA>?){RZv*z76(&iN7;AX|Dlm{sSmh%z!Vin?_> zdi{h66ZSfPoYu)Z5)Q-UeKO3+u^(G7al$0xF3d+0&NnB_No$<$cp+I)Zr{TN!-suD ze#Lhr54``?kaR5_DQWy74virm4&`0-zLJ>b)vQ%3$G3nVQss`3$#oKb{0!s9PY8PV z>I3x(2IUWCeI~d=pHmW_9KZbfC*#A68Ph)-n4h;hJ3Cu_L?RC~mifHLE4gs_FOqlI z&AQ~KML9itZeUJE`$f7nnhv|gl_%i_pL}xDr%eNQ?_lPlnZY?%o)h%z-!B+5VwAt% z_)uM}0sa}s3*=$Kgz=wfE(HFo{#73N0hfJ_Jm|x-|K{G6wz7G%X2pupk$=qmgdTsq z&V1dwv-!+t2ZIL<3G#;L2iM(wO|aszn}T_#%?IfCt*w()PAo`Z@4G_QxMR_RP%8)gwo+H-zRsoZQ;E3fYZeSKUt-KRzIDZE)7r zX9YJuxgxmf@fE?f@L~Aap~2w1fwni6J;Qk5^g=by6d%x!7FT$vfB$|vnIm>Qh(zQM zRo~E9`XHTW$-gN6zCyhVJMo$L3*)*wF2An+<8{wHb0O{bI-p-(P%yb5SpLYe;HD>T z0{>0H%}=ZdE?jnA(63+LVDyNQ{4O!~Mru4@4hA0d--R5=fAuQJ#e?IZ#yA%9JlQei zq-(bAqqk_I0cK6<`;BJ3o43FzxulpkMEP z0kO|<-c{sf<-f!H8*{K5W*tJGZpV)(J)rrwmpS)nAOkvw&r;5`qTV^Zc6r?4IVRuL z$SK(828CeiD{RM4HoPmSd*SwUGk<^Y=id(U2j>Sv1`Y|=omRuo8hC&{V83_PSXtai zMEDbwm$*8^iQp2(;CBx6UGNQz4`{noqr5+4{lKc{uPfeM-G-750*Y~T`*!?K`@~2 z0NeN1#WB|Y9$yyEgCRo(mxnfz@JkL_)sX?Jd*v51x$o1bkK(bde^)=RYyZyb&T8|@ zbDf_*D99g?A6$R$wdlO%j)WOLET{i7>}m^qcMG3gy!-;Q4~7jbu=&{Po?pY~#G21M zNQ{7D?ZI#Ue$CC*C%g*o)t3UvP^*O+nTY_+hre$dM!WpszKC zmJG|6&^$#3sNejV)jjrozrOvb`xxSRPkL=e%%)RY-E*X&DAQhYFSnjfR z)45ZpjpPeMuUa1a8s*;0pZYt-tU;e%VSk6bOTMk`8@?66oJDhj+a2 z#o!MbG|24(>H3zG@M|2W{;p4M-{3oUUJ=uGvUODVm;Ly%U_k%=!Prq_gIU;w`N;Ti zbp8$ZTo=a=zrN4CU%C0>pm*=S!O%g&EQb%eCl%bWd(hQU`69qWJ~Hzk&8`VN-?e~b zJFZmj(1{a$Oi9f;FJAX^f=Lr520eTB3XVPhSnJcAor~T_zuolc@?g@;2|+$}KZ`tj z?9WDDKQ8Fgr+;wVc_#$7gnB^dTj0UX=)xHbrw2JbdIb~4O{{Y}P(0pH@_=HynjZ~Z zKZI&Jw4Z?FWTo<+YTW|ZWLLy^THUpDo^tEu=M7?fm&dr~s$lu!H$o1(`nwC4T^RI1 zudD9aW7wXlnEWAwh6erfbA!u&aydL$0ig#)@Zic{eLEO1WI&MDKc6)^?1!F0S=>D? zreWg5iTj90l&?Uxz+a)7?7^9QFZ@MayLR1#{CsBlcWQa3#y4vBW6@PTsjJhjSYl;g z{@8Nkf$DzQgGNq*afbibUuNp^mF}b=M(2l3|2gHqr=W`%r-)QEWTo~$<)XZ zqn!-YQl2=Ev<`5_!IrICNe8Gu7q$*ib;o&pVfe9mcJLe<+sB_*wHycwIl6-WeRG3? z@xy{;4_t5ZZusGW^xu+iE(!W#2aX#vj{N{b8zJl~^n8tvdiCxdoO|`T=>HX=J)qyh zyN7NFMok?V^y@Pqm^!tPbqtDKsk$r`Kc@~E6R`e5_}$u@QPqLx^Y7Sw^p|;gd1X9H zvBtH&OZW?hk1(6%;+rnAGB2m?n*3A#YZ&7X96FFOKE5vG-RfT0LsH+S@p0~eykN-4 zA;I-`UuQOf>R+-WyZLMXc}dWRG4fD!D?XPx$N_sm_U*eh#IJF|8Ble{4Sew$`l5I+ z@tmpPm)x@lQqZSo|6uAdQ?TC{+pFCRKcu=p=Bx$uhkenFlMK7r2o><_vkBwI1vx!) zg8666H$7nTAM!xYoPFx7pjXe{Ha<#O2GD`R0xrqF^q}V2symkRh5EkY;lqX}_I=gL zfa-Hl{t*0l1A_1T^zt}%@qoI&?DlU3{RZ^2ajma=vt_`W$Om1^4?1|@;GlQ^KEbzs z_)XIxD|n8u%YL}(H{T0#hvwr)$xVHH1pb18;pN~`yB4j0sykx%S%X_Ee$_oWaIw?+ z2FIR#Ecz-etFVXlKY9K{t9#aenvP7wUe&d;o%#f0XOA^qX#J+)N0y#k9xVCJ5`1Vm z!SG=PDYgOOFZck!s((>U_?Pm%)qidHgyRhBhvrj~G7E{DkLRb+#KfCGd6G!`BC+W{kFR74t+j=t8d}m3wKZ z>fht9N&XcJq+H^~%*na-@8@F@^q}wWn7gAr_6^Sb4&yuIQ~J)y>W#rt`n!=6-B_M{ zwN;igt_N8!6yn#jXU&*pGCr_iAiD7CB)L+5@Xa4x8uS^^HyFs+8vS0Gw^mkBk1q?^zCOhy6VJZ zm!7(oIvYHEklF28S1dbMcoWLxu6dU41AYB_oq$i5JzNXWg?)odZ@VmqbExXY52k|-&-^Dn1c9fhVYr!P^vH|7OtnSF?3u`AG+ILuwPxaFz{2}&f z*dTp1E<2&n^>OH3{9sy#Rnwet zE527dd5y9Eo9Gvxhs()8h+j5HF5~xa|MW6v>zM3=AGy5jCzl0z1M`Fa`135uaV>fg=`sm>F@1ACIALqgH;6`kXiE}66Gwo}B z^SBI{9N4;Z<|Y3D9@V`_FKIaWmpHKH=IvpFSoSXEd7Mjt<5Yjt)jm85IiiR6H@Uw5yzueulhW1!j&*@u>2 zzgyRCo6)baTvTey1DU59I%-&O?QgHLy7%&^v-{Vqou(zWPRDgH`wp=tn2T)hW36{u=J4|&@QBm@d`c z=Zt+m&C1GB472cST%XGNQ^hT5jSc><%o1{L??-n@{-fiWzw6hxf3W0Ri>>a>J_mCm z59GgeM0=1eoIuODPKEq$+`UU>Cv`nz`xP;q9Hc-`NL-`D-x z@j$XA-Z>eI*@Phv)E}OC<(X!SjA!n|^8M0g*?*D!Nxudh=c_5$!LfBniU*l{Snl=KGG9fv6Ky5(tD0#WL?~#u++JC@+=!MHJ z3a43aYZB>rkt0Taz@DDI?u9?661v(ykPMhFnDa{df{in#P5+Fsestpa z3DJq@TIpNn1*7;djm9z-96N^oE`j8~uM5S0t7nD8bLA(E5q^Sk_HMm@0=DwRU^2KF zH$?HH?AN*{%B=oQ*l&jFTKD|K4)IOT`8)BBMZ_(ZNw;FNM(1Fo$=B_OznzVcY%5n~ z^QQ7yXlKRjLf%uA?PxZx?sd;pe}Ax7POnV_W-|Y8^WQI0cJ*iVJ;b+*Ao1~KeB#CU z>GsC*am3%PGFTrOmc^H;(a!S2Rr1Bf-jBUQz0f{)vG9lSyTu#J);}3)=+TS^{1%cN zyxbzQMG5=v*j#vsxzRAzk9XL6^!2RqD|dNT47>E+kD!`--F%($A-hSwbL&gU<-Hbt z_%Zd7;2$-cyK)_+BJXv)CoTtO>qh0PW6wJIHdRM2Ko3DjK#h3}<6(NX-tkIyi>wlS zM0>@93iZa{&IZ@`D?vso-j|}>#GX~*{<&Ivevn)fWy%>CmP_qjd1ZS+pT{wQhrWbT z5D!*1&uG3HKS>$oI20dy`LU*qc9606N8P)3-=h7*dB2U(?Ck8j+UB+!k1y&KBbLMLLe4LMU-9|ubsi~F&L7(3 zE_^4JtA?^yQ?IT+lP>cV>Jj9Gb^~S+b3F%%DgUr{?><}ELtXp6d))FA>seu@dikdR;VAp0qKT#C;~qS;o* z;GHw)GxnbPbmF9m`vw!o#hQ=}%`=;846pVkSr=}dZ-6>NU&^8Nyjj^T+1_01kXaHO ziHxR<_w$GB4qrx-iRPKj*0gEcy0lZLqc(Q$(S2+0-o1Ab@48DdtHgir>f5jHj^4d{ zZSB#s`{quakJ`|-U7NN1#`bXKS+0G%cr5k5{|ya*nm}LLfvmHn8aYrYTzk-2aySxx z{G5-%x^l7dd~W(O>Fi|L;qy3??-L*8yL=Y99_j~aT=L}~!d(3!u1H79mv$eddh=L> zN7u>Zbh%rH?l3>kJ-0)1A?dc7-^dOBqKE2Bw%9;u7IZ3fE_5MuQFuO|^I6a-&~&IT z)DjXO|9$+M1OMj0=fnZ8OjF4}aK$$oSO{jGq{OE1?+eO5pw~5nvY|GR^r&=^s6C}= zPacu>^x*BuIwCrP>>j$OEu^_H{kBo`t{x&~CVn?>8cEB{NKfn1SzW~Ea_Dt~pzlLZ zLeD_YLoY(=i(cjiC;~Nk87uB3=tbyxK6?(x+#mTX-#rd3hbO~0r$aD9peUrkP!vVx`&6+h|-8{3! z8c}A8tTinl=EtBGC0XpdpuHDZ+g8FF-nAJS&DLV$mhhZ6AjM5-%=I+X2Wr4UsX__J zY@XSG=T!MqG4wHLWkz~NaqpZyoAFncPnA7C!T=I)rkI~=E(7H_DW|ICqE?tgNFSsaC8DU66w)%ulLvt|V3y4%My zkp=Br5rMxE>BYJo3gjW~*^@DrDO*!=bK*+X;j zrz^ffXZhI46UROe9P?3j2w4rx+Hu$AWBeG5Fc!ZU%Uxk;M%^Ds5w|KhZ zH;aZ09#SU!G2Gx(tj#<~aoQ)Hcv5ihefI{>JomTYE0)PR;6-=8x z?J#X%GX-Z~*2qh|Lw#g}kIallm;Wm%)N9Puyk0P@0Q~q1iKp=~Mp}=i`I=KtSseW7 z&rh)*6nh@A*TK5db-{PP`(5T(gq`~LJaFg3GiJ^>j9%O<{5)U%X9uXkM`n7X;+Iri z2fc>g);vu)*kkw|_Bp}gMN5LGpMILXj)Yx%KJ8?$yPfQj`c81=RaZG*l-dWR*gBoj z4TrO`vbTa?{zk=7G>YHlbHIOt;cuGG-T`A`_~$9E4mmjWLd$oL^4(XB^IM*$Vu$f0vUyl{gY^uXrTr0KWRX@YC0?BF;XB ze=gWhK5MExlnT=cj zdgiyGRpd`9W(|4SvBw-AefpVaq9yCr25**>1j1AD*4p5$wQGa5Yu5$q)|CdOr4V~$ zC)3-(+w0#BR;^wYoORCG;GY|%{lCq#@oigviAL)G8dd&<|0_^&I{JUis4+VV3#Ua{ zmlV~0@AKv_VBgF6?0W}sUU19;_C!x4_Psflz0pHDjy=+kIflKT=>Lc*Ihd8za;@QK zoD2^d$Np*D{$Kbt?$ubWi1^wK^xdCf-$!NJD|S<)*y2QD?l$~RXHT=R2X#NTGV?Op zk5B6%d9G~hzkpx_kUcJAdL~Lx_Q^`d zvTGRk?Slu}gWj!U!}gWEZxqHH_DbBV4f~t9d0hN{8n|{{f$$#EyRkdNHJzIXg<@Ge`Jq(w^o1 zKSPg0k3!EwuR`pV(CJ;x$0EbRuNb9j=OW|y-F&66tL{gQ9Pv@}W|@rroKFG${|xWG z3&J-P`5W{C^pYzZJ{Mx{xaRLP%IGL8(;qlr4|Rj=$ZnA|j1u-)&~yCW{4!jN-^_Pf zJd@?w^55~!B!7+e|~FEt<5qrHsV{9{#33hc!;uK8=vBqtnps#DRP^Y0|{~!-fql*P0E<1--=SDKuPy6ZJlh$Ug)W!00`+Pzb@R%l7CjEa=CHTEOMvJjP}gwv6E-1{*_PZH~4@3^us)`t9`w~nyC%w zDcY-a7UfGxXKAcvIT{r6e~`F?ttPjLa$tOj6m{y9Q3b?ryO>2;lRH{^5v*_cJ+^+jqxL_hB7Xd}dXDCzQo_fNnTQE~w23Z9#p5 z=fNu(&C*x%{k!xJn~9|=A!b&-J?V?TL(hm;lutMwIm<22kKkGNm>5N*>`|v^Ul}AmjV5A-Ck!Y$$fS2bUI#pMIG6JJV2%o)UT*M zjfB%*>nwdC{POL|$8U2d+A{$?Tn<*X?-+LRKaRiZGWa^8U6~DS_@_+yn7N0yC=Xa= zw?upgcs_sgeurOcm;CSRd$uy86Q|(gCqE_o?z;S>?mcERz09@vpt6VuzlWZ}Zuz@p z23^e>(1E)szvVFHc_#C9EsyaD9!N&$%RX-2B8FdfT5Cv$@XL01J$FDZc^4XvU*%Mp z$)BWkOZ$|wkaq~L`X9A7+0psXpzvCDDmqEB5Gm^0r_W~W<_2L8%OKrsdJ?_65B#zv z#dG0r1L?Q`68_@G#2?m`bak{pdo=M5;TIpygDM_J^MU-kMd-(p>4k+Kxju;8Pu1ul ztJ`Y6OO_L>|HFlaG5l(4FF3adyu>Qln zE@SqYwVgOGYkg1R{gNS#e?RMVRHx0nSMsg;KL+xLmjjJoRi>3Te=vgi1N0EsMTyU> z?{#$Q)G7O##qq2Cd-?bHR}UC4pt0~9cHw9JS~+!(|H8&*&+=Z$`b6k5=o;v3XdYzx zkMm0Mkgt{BL%)|@<@qmO)RQ0N^`5+sbqdmds{cg&cMgB6{#RrFGzNZ$op!I>>h$A& z+@XH%PUs0pav-0M&LS_9W)JZ9O7^aOXNK*eB^kgT53wiWuj(_;D}N5}k7EA_zuu{L zJqNXhbesjfNx$<3_AmII{o;RL$1~W~f7&>14|}vRhBdtgF6OS?+91VQ7NZXt$10ZG z+QqB9KW-z1wsMc|JvK8R9*!I1JP6AalZ)!g==sC<(aDo1?UPN#yM_N*$lE_l9R9R5 z^t)#NR`--|pY8;JLio4(0va@(y(C+;3IcJ!XUeR}W2hoG^! zY~GlSOgU}bNWSXr@}cS7>Jt;npzFlHtJDp?{u!t5%^!!aOu z=Fa|%vDrS_yliEY17W8;inV`5aY5J*yKFwa9!^V{TBm7yAjxo@i z&>Q6R-iW^OWAv)AR@BEKcH!3;vvq6MKe|3fK8t5V?5{DFd1Kg+p}VO=C(jyVyEY9E z=14yuXy3j)`#GBb06&-UKr-`+`h?s81GLvdXUI=ndlT?S{(!Hi z8PC?y9umLbVD73Edv))edGik9w`cu_5xL*z;g2+mtqBRgv;G}l^{4Dj_<{Bb2Cv$e z>RUQiw> zl`pZ3VOixvRr%*CkIMe8-MVhnIFs>(>i_o4rZN8yud=xdwT%+|XzN)cuw&rBL1pCc zD@TWy7YrZ%fl)!h``Txg>+)ekhm|Y06@BIo#aZ$g(Yo#BD`50ZGGSh*uRbXc34o3~}ikfFP@_D=bg#Cs9@E;p{shL)2fzN}y0K0A&$qTL4ePF!s=g?v%2Vd=?R=wqqr>)#Umi{ca%?$%qIt7a?)dyyD%EelPs~nHA5B73?0J6Tj1#LiH}0 zf0g#W200;DyWy@8dm>L<8<`_t+5zb!o)zb-dwx~8m00HKeMe5^NO}mJ zKk58hxb9zjAQE%RS{gV3KN@gM;rWsYt=BIF_W_4JwVc%+yFbfkqkduNu%RDNFzVde z?L9nSbyT-QxGG@N{8wfR=K`dUweJmo{aJ7(g;LuoLho#~ye+QoQ|m{o)(eNHOr7!x zIYhDB&3^h5&qr|Uaa6$7JUuJz-iIHtHDuZ=Qv7LP{UeKJ^Aw|hcQu9|O|l@LI^)*$ zJX?Ok=Rn@N9_TCmq*;^9v~4>#+oWi-bn0JfK|H8*XUZRZn>(@jnrM%TGRiKyqak%~ zzh%GYXp5|D^q`H~U*a7{q+Fudjg?VlM4G2<-?7c^$nf|Zg5Hf~W%Ghx*~%P8jj7vYqyXW;PX6`JR*??;d^w_iMkfM#V3?Kf7h??Yu&~ zRX}ch*HOFyR${l{Se`?U% zLMi;b;w=gFpSDWlgRuQKSO+pscsM(|C5j4r+s4t26aOgu|Jd_>96whce?42l4LpKe z?`f+TdzAUSZFQ;Zs_sSq9Y+6eNx)x^_Fu8O)c(`c_Wbh$ho3cJIvR*yetnIFR$>3V zR~f&2DbbGpSX&dpRsnTl-dz~#a^}H+~7m_{~6YQM!K(m$$+DJykHi;c}+x|gT+x;{Dk?3 z%qN;q$JOxw?1^y~Tu+`-xL-MDD3_kC+$YWJQMTAm98$@DM%ssa|6!k}hw|@QK)vyI z;9=&!l%H|(#EBo^e>o&Oc)Iy?Z|(j|S^P$s^$oX@Ghk`tjwE#_R0M*mf;@A?+GHa?~E}wK{gp zm=DK|9lMX5ZTmDQto3c4^f&p{pt1YN!M2aR3_cuHF!CS7(rjbyM7~Llt3+dvxj5F4?&L=hp>`^d%8*#D3fC&TOgd3mR-GxE`yB;ro{^Qd z?}PW#S~P2BvLFyjq0t12@Izh&FC5{2O-m&4$cTr=&%BH$V54^7bT=3H@0+aR8E^1e ziIMHIY}c9-S_hT#3z1^yG{zIJ^qu%7>~Dcndhb8@eJe=M2SdDUzKlBKBZbnF2>GEd zb-&8WS#A)HO#DAvHg8Qks$++=wpp#yT4iRYwQ7--)`q+)twmWa`8zwUWoC9-Hfsg5 znzslklQYEq*+$LNvRm-mEd9O({8YUtqu?UtFzXf?Ar?`*+4RhDetlLfglwV-Uec0}2@&gQe0+}o1h z2uJJeY|5x}o3ysA+NAaF(?9Ld;UMjwAAXd!_oMx3pX`G^{v>Vx#|Jonn)b%*zn~ literal 126760 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

I&<@%yv*XL{g8@7sH;kJEk{?)b1rQ#^<+ z84p5Z`h9=;hWa}_qTfeoSk+Zy^}lx1Zw!3oj~$7a{@OYnmFF3`zR&f1BQM`4?_a<5 z64lot<6Am@uceg5_#^vG3_p$Cr7Vh>@i%U&_Cq7g=>LlezhnQ&@rC}k+=nQ% z|B0Kr{7=pPzu54n(_eax&!PBX#14`d?>P5e za`o2*doKOg=>|UHkqoeE5s$Jt+JgHh@q+Du%9_82qEl;*;aPL>F48)1p0g+Gt<1({ua# zcKY34Fm@6@@jaD?AMOiN{hyr4=@8A|&`-=`BaL)FJ8-m` z-(QSG&hdDYr)0dzPv>`E+lXHui5#H!E#>WIXJ@@l@iB~eY7yM$4KMsWE8~sT=UcqL zUXlKl0uQ}F&zUDo^Q>>{p7zPJ)jc&IWhzK zfQ-+VUpzRmpPuOYZ2E`Xqr}i2>Yv*WpgkJ&ON6YX_C?xusK}3@EJ`VOk{v(d3-um@ z3yUHDEx`MO*@uqL;NK_B`1ccS?*;o_F-CvdXDgHnH z2){M{{RL~kv41VPe#B#3jz97jCVg0AJG$!eC*+}2_;-n_Vfv+9%&k%4<(ES?>e`Wi8F-`DOf1`V) zKlZNCw_d_Js|tM7zlaAT<-rl}6v3a%-e7;earCe5K|T{{U)wdh_$whxfAjfoTpIIl zHhbiG>VLcZP8r(8pU3*YH;}RaLHsIx|5JkaRrc|CzG+Q;Xa(~BG+;l69bJL7 zA4q$W&FCq4<$>AB*^*d<*N5JznG#q<>(vm&c=lyV79q zb#lKa@M0>-(1)o1Ph$QM&j~-RzZ(14Zl9atbn2Nx;tLdHf4GjgHi2Jm`-9{^)iR#G zs>`R}znbgky=6KbBK@^DaDR|D($I&u!G}%KdOS)l{=EDVwtL~0-m*3Hg7N-_&+D%X zx;JpIsXvPRoO*pX!9arg@F%{{mnM0$-v1KwPp#8T;h!$; z56BOIcf@{a($-&`=TciJzfnv@eft8}_15?vAj(pYkrIcgEv~6Mo=*X0>k? zAC~kz_`iRyPmc#T)MW05Ck
yzcYKLpI_$ne3=;}u&uKU&-Ay#J>Gq~x^oL*N(w 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 O>-Qx7R{MkX-~T@;E0YTV diff --git a/gamefiles/models/x360btns.txd b/gamefiles/models/x360btns.txd index 8d8460af656449496660ff297adc49354da1675b..3c6ac314513a2f6e09e7046cf9ae3d9654effdc0 100644 GIT binary patch literal 528424 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

Us<_c=H79>p~&Cj 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 z z=wB83@zzn*9`zp_YkoApw*7(SIRD;bR~cV5Iufc= z^|QU`x1ILM4~DeXhh?pYCd_wJ3g1-Am$mlRZ_ncg{6f2P_IxV&zdfGGiQBxPHfO%f zA^+k$oWF_LJ${MLkDtOnRsKHe_bH!nCIkE_-)iBLbC|>n`^%MrKbgsdv90v22tx#R ze?$LM^^yKAMMGcktC#xkuM6q%MERlMeWef7chGwN`RMyMfBv=keNgdB{m*3Lo$UX0 zZO-_|{FkbU44xxusSnv}QuF%ycd)i-OG{e4FW1*jXS|a>9!sOO-b|HrR?dlQlU zgPYmg4OlSb`4T1wIiGrc8joIY)OxpGSnID%e+%nD=+j-={%rB@owUAieTm0j*Xt?y zsl$F=$y@Vt7IG0HV6TtR_f*ZUf!}Cmf6|`4N^G3)yp|PxsjkQYEuUQUlSlk#2D>T0 zSuI#!?D0`_{dMFa;;#K4=Tlz=^C{((Ogj5V*?yt@k8aP_|Cck5zBY8rZ}ItftR40T z*q`ouTjMeNyA+)jOE5n^rr*!~?kA7bo!KYlQAc@5dDnZb_14jM(tsaU{X=~Pe7&BQ znlI#h?RuZ}&8owCWcKgN;*r>b>~ z{Z+^sFQcBm$AXl9_=nDZg#8bD?ue3yJwNIE&i44;s>&&^OgMf!?Je;mFUtBn|7}|| zCz3dRA6moSroA5h`{+8@6BR$D_@C}_>?aL-j5jqO2PDN$PIv>6;ip_QNYfB7wcU0?VqH*h0U Date: Thu, 11 Feb 2021 21:51:22 +0100 Subject: [PATCH 073/113] better controller menu txds --- gamefiles/models/frontend_ds3.txd | Bin 328360 -> 590632 bytes gamefiles/models/frontend_ds4.txd | Bin 328360 -> 590632 bytes gamefiles/models/frontend_x360.txd | Bin 328360 -> 590632 bytes gamefiles/models/frontend_xone.txd | Bin 328360 -> 590632 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd index dfd11e263fb8d6935671bf5b3c5f94d66bab16b5..1e5da6e1438f966125b32a94c41e1cfeb7295f06 100644 GIT binary patch literal 590632 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 literal 328360 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 JCNg~g{{iT7WC{QP diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd index 88f317f18ea0f70b1bcfc7989041ddde0bc7972a..e3cd2bffde10eded9a1b56e17cc0fbdff9378d0a 100644 GIT binary patch literal 590632 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 literal 328360 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 + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + From 49d9aa8188eecc6a6fbd0701cd15cac4706dc074 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 03:11:52 +0100 Subject: [PATCH 099/113] even more readme fixes --- README.md | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 48075e73..d52e812d 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Intro -In this repository you'll find the fully reversed source code for GTA III ([master](tree/master) branch) and GTA VC ([miami](tree/miami) branch). +In this repository you'll find the fully reversed source code for GTA III ([master](https://github.com/GTAmodding/re3/tree/master/) branch) and GTA VC ([miami](https://github.com/GTAmodding/re3/tree/miami/) branch). It has been tested and works on Windows, Linux and FreeBSD, on x86, amd64, arm and arm64.\ Rendering is handled either by original RenderWare (D3D8) @@ -23,8 +23,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_gl3_glfw-oal.zip) - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/ubuntu-latest-gl3.zip) - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/macos-latest-gl3.zip) -- Copy the files from the `gamefiles` directory to your game root directory. (This is not strictly necessary but very much recommended) -- Move reVC executable to GTA VC directory and run it. +- Extract the downloaded zip over your GTA VC directory and run reVC. The zip includes the gamefiles and in case of OpenAL the required dlls. ## Screenshots @@ -85,7 +84,9 @@ Sorry for the inconvenience. ## Building from Source -When using premake, you may want to point GTA_VC_RE_DIR environment variable to GTA Vice City root folder, if you want executable to be moved there via post-build script. +When using premake, you may want to point GTA_VC_RE_DIR environment variable to GTA Vice City root folder if you want the executable to be moved there via post-build script. + +Clone the repository with `git clone --recursive -b miami https://github.com/GTAmodding/re3.git reVC`. Then `cd reVC` into the cloned repository.

Linux Premake @@ -95,13 +96,6 @@ For Linux using premake, proceed: [Building on Linux](https://github.com/GTAmodd
Linux Conan -Obtain source code. -``` -git clone https://github.com/GTAmodding/re3.git reVC -b miami -cd reVC -git submodule init -git submodule update --recursive -``` Install python and conan, and then run build. ``` conan export vendor/librw librw/master@ @@ -120,19 +114,22 @@ For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTA
Windows -Assuming you have Visual Studio: -- Clone the repo using the argument `--recursive`. +Assuming you have Visual Studio 2015/2017/2019: - Run one of the `premake-vsXXXX.cmd` variants on root folder. -- Open the project via Visual Studio +- Open build/reVC.sln with Visual Studio and compile the solution. -**If you use 64-bit D3D9**: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version) +Microsoft recently discontinued its downloads of the DX9 SDK. You can download an archived version here: https://archive.org/details/dxsdk_jun10 **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).
-> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. +> :information_source: premake has an `--lto` option if you want the project to be compiled with Link Time Optimization. -> :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of reVC, but you also can use LIBRW enviorenment variable to specify path to your own librw. +> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/miami/src/core/config.h), you may want to take a look there. + +> :information_source: reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. + +If you feel the need, you can also use Codewarrior 7 to compile reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. From d0afa692f523bf6d3b13403ab5c7eb6d8115a6bb Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 14 Feb 2021 09:48:40 +0100 Subject: [PATCH 100/113] optimize performance -> readme to-do --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d52e812d..52628982 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ Some of them can be toggled at runtime, some cannot. The following things would be nice to have/do: * Fix physics for high FPS +* Improve performance on lower end devices, especially the OpenGL layer on the Raspberry Pi (if you have experience with this, please get in touch) * [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) * Xbox port (not quite as important) * reverse remaining unused/debug functions From d6fbfab7b69268b16d0df6acea4e6b2c09de2d85 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 16:03:15 +0100 Subject: [PATCH 101/113] update invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52628982..45a40ee2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ reVC logo [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami) -
+ ## Intro From 70b919137d7468404a34f20986de5fbf45352bf1 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 14 Feb 2021 18:07:21 +0300 Subject: [PATCH 102/113] (Test) Try to fix streams stop after a while --- src/audio/oal/stream.cpp | 11 ++++++++--- src/audio/oal/stream.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 4817d6d5..8f074fb4 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -1152,6 +1152,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; @@ -1234,12 +1235,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); @@ -1343,7 +1348,7 @@ void CStream::Update() // 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) { - Setup(); + Setup(true); buffersRefilled = FillBuffers() != 0; if (m_nLoopCount != 0) m_nLoopCount--; @@ -1376,7 +1381,7 @@ void CStream::ProviderInit() { if ( m_bReset ) { - if ( Setup() ) + if ( Setup(true) ) { SetPan(m_nPan); SetVolume(m_nVolume); diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index b3e96809..9a2a2fbe 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -100,7 +100,7 @@ public: uint32 GetPosMS(); uint32 GetLengthMS(); - bool Setup(); + bool Setup(bool imSureQueueIsEmpty = false); void Start(); void Stop(); void Update(void); From 6ba0d2e6bd9b874e156444061621958e4d17e18a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 14 Feb 2021 20:08:55 +0300 Subject: [PATCH 103/113] fail --- src/control/SetPieces.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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); From 0681fe3ecab0d774bd6973b3df091567031898d5 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sun, 14 Feb 2021 20:11:58 +0300 Subject: [PATCH 104/113] cannon fix --- src/render/WaterCannon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp index da05a1ca..0f8b22a7 100644 --- a/src/render/WaterCannon.cpp +++ b/src/render/WaterCannon.cpp @@ -132,7 +132,7 @@ void CWaterCannon::Render(void) int16 pointA = m_nCur % NUM_SEGMENTPOINTS; int16 pointB = pointA - 1; - if ( (pointA - 1) < 0 ) + if ( pointB < 0 ) pointB += NUM_SEGMENTPOINTS; bool bInit = false; From e604be65d9b7845ee7ca975545fc9277c662bc11 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 14 Feb 2021 21:09:48 +0300 Subject: [PATCH 105/113] More compatible she-bang line --- printHash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/printHash.sh b/printHash.sh index 71f54466..e7d6f018 100755 --- a/printHash.sh +++ b/printHash.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash > $1 From 6fcea142a2959e9a0637976527faffadf321253b Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Mon, 15 Feb 2021 00:54:43 +0300 Subject: [PATCH 106/113] readme update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 45a40ee2..fb5c7ec1 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Some of them can be toggled at runtime, some cannot. * Debug menu to do and change various things (Ctrl-M to open) * Debug camera (Ctrl-B to toggle) * Rotatable camera -* Xinput controller support (Windows) +* XInput controller support (Windows) * No loading screens between islands ("map memory usage" in menu) * Rendering * Widescreen support (properly scaled HUD, Menu and FOV) @@ -71,7 +71,7 @@ The following things would be nice to have/do: * [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) * Xbox port (not quite as important) * reverse remaining unused/debug functions -* compare Codewarrior build with original binary for more accurate code (very tedious) +* compare CodeWarrior build with original binary for more accurate code (very tedious) ## Modding @@ -130,7 +130,7 @@ Microsoft recently discontinued its downloads of the DX9 SDK. You can download a > :information_source: reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. -If you feel the need, you can also use Codewarrior 7 to compile reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. +If you feel the need, you can also use CodeWarrior 7 to compile reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. @@ -150,7 +150,8 @@ After a bit of work the project lay dormant for about a year and was picked up again and pushed to github in May 2019. At the time I (aap) had reversed around 10k lines of code and estimated the final game to have around 200-250k. -Others quickly joined the effort and we made very quick progress +Others quickly joined the effort (Fire_Head, shfil, erorcun and Nick007J +in time order, and Serge a bit later) and we made very quick progress throughout the summer of 2019 after which the pace slowed down a bit. From 5ce5000b149e8df4151b758e42d0b39e1055b5e7 Mon Sep 17 00:00:00 2001 From: erorcun Date: Mon, 15 Feb 2021 05:09:46 +0300 Subject: [PATCH 107/113] Try to fix streams stop after a while 2 --- src/audio/oal/stream.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 8f074fb4..e2e87f2d 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -465,7 +465,7 @@ public: #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 +//#define MP3_USE_FUZZY_SEEK class CMP3File : public IDecoder { From a76c962aa348479ddb5a4d30472183239ddb9285 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 15 Feb 2021 14:27:35 +0100 Subject: [PATCH 108/113] always console for windows Debug builds --- src/skel/glfw/glfw.cpp | 2 ++ src/skel/win/win.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index ce8da817..941a2a7b 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1508,7 +1508,9 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER +#ifndef DEBUG if (strstr(cmdLine, "-console")) +#endif { AllocConsole(); freopen("CONIN$", "r", stdin); diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 89c901b2..5cbc9ba0 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2019,7 +2019,9 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER +#ifndef DEBUG if (strstr(cmdLine, "-console")) +#endif { AllocConsole(); freopen("CONIN$", "r", stdin); From a58d76d27dc3f9fc8c6de6cf0cbbf9f957391d52 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 15 Feb 2021 14:58:19 +0100 Subject: [PATCH 109/113] Revert "always console for windows Debug builds" This reverts commit a76c962aa348479ddb5a4d30472183239ddb9285. --- src/skel/glfw/glfw.cpp | 2 -- src/skel/win/win.cpp | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 941a2a7b..ce8da817 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1508,9 +1508,7 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER -#ifndef DEBUG if (strstr(cmdLine, "-console")) -#endif { AllocConsole(); freopen("CONIN$", "r", stdin); diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 5cbc9ba0..89c901b2 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2019,9 +2019,7 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER -#ifndef DEBUG if (strstr(cmdLine, "-console")) -#endif { AllocConsole(); freopen("CONIN$", "r", stdin); From adf688635a9a9fb72dc6b33a8b808edb9ca31f49 Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 15 Feb 2021 15:06:30 +0100 Subject: [PATCH 110/113] removed some f suffixes from shaders --- src/extras/shaders/colourfilterVC.frag | 2 +- src/extras/shaders/colourfilterVC_PS.hlsl | 2 +- src/extras/shaders/contrast.frag | 2 +- src/extras/shaders/neoVehicle.vert | 2 +- src/extras/shaders/neoVehicle_VS.hlsl | 2 +- src/extras/shaders/obj/colourfilterVC_frag.inc | 2 +- src/extras/shaders/obj/contrast_frag.inc | 2 +- src/extras/shaders/obj/neoVehicle_vert.inc | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/extras/shaders/colourfilterVC.frag b/src/extras/shaders/colourfilterVC.frag index 9db3950e..283aa817 100644 --- a/src/extras/shaders/colourfilterVC.frag +++ b/src/extras/shaders/colourfilterVC.frag @@ -20,7 +20,7 @@ main(void) } vec4 color; color.rgb = prev.rgb; - color.a = 1.0f; + color.a = 1.0; FRAGCOLOR(color); } diff --git a/src/extras/shaders/colourfilterVC_PS.hlsl b/src/extras/shaders/colourfilterVC_PS.hlsl index 1e62950b..90d3b50c 100644 --- a/src/extras/shaders/colourfilterVC_PS.hlsl +++ b/src/extras/shaders/colourfilterVC_PS.hlsl @@ -18,6 +18,6 @@ float4 main(in float2 texcoord : TEXCOORD0) : COLOR0 tmp += prev*blurcol; prev = saturate(tmp); } - prev.a = 1.0f; + prev.a = 1.0; return prev; } 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/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/colourfilterVC_frag.inc b/src/extras/shaders/obj/colourfilterVC_frag.inc index 1f9bf6d8..b61322d9 100644 --- a/src/extras/shaders/obj/colourfilterVC_frag.inc +++ b/src/extras/shaders/obj/colourfilterVC_frag.inc @@ -21,7 +21,7 @@ const char *colourfilterVC_frag_src = " }\n" " vec4 color;\n" " color.rgb = prev.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" From 63e5afda0b569903b59f46192294f1c1c240c6f8 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Mon, 15 Feb 2021 21:25:18 +0300 Subject: [PATCH 111/113] fix mailbox particle --- src/render/Particle.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index 51249844..8c9cde12 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -49,6 +49,8 @@ #define MAX_RAINDRIP_FILES (2) +#define MAX_LEAF_FILES (2) + const char SmokeFiles[][6+1] = { @@ -165,7 +167,7 @@ RwTexture *gpFlame1Tex; RwTexture *gpFlame5Tex; RwTexture *gpRainDropSmallTex; RwTexture *gpBloodTex; -RwTexture *gpLeafTex; +RwTexture *gpLeafTex[MAX_LEAF_FILES]; RwTexture *gpCloudTex1; RwTexture *gpCloudTex4; RwTexture *gpBloodSmallTex; @@ -193,7 +195,7 @@ RwRaster *gpFlame1Raster; RwRaster *gpFlame5Raster; RwRaster *gpRainDropSmallRaster; RwRaster *gpBloodRaster; -RwRaster *gpLeafRaster; +RwRaster *gpLeafRaster[MAX_LEAF_FILES]; RwRaster *gpCloudRaster1; RwRaster *gpCloudRaster4; RwRaster *gpBloodSmallRaster; @@ -206,9 +208,6 @@ RwRaster *gpPointlightRaster; RwTexture *gpRainDropTex; RwRaster *gpRainDropRaster; -RwTexture *gpLetterTex; -RwRaster *gpLetterRaster; - RwTexture *gpSparkTex; RwTexture *gpNewspaperTex; RwTexture *gpGunSmokeTex; @@ -425,11 +424,11 @@ void CParticle::Initialise() gpBloodTex = RwTextureRead("blood", nil); gpBloodRaster = RwTextureGetRaster(gpBloodTex); - gpLeafTex = RwTextureRead("gameleaf01_64", nil); - gpLeafRaster = RwTextureGetRaster(gpLeafTex); + gpLeafTex[0] = RwTextureRead("gameleaf01_64", nil); + gpLeafRaster[0] = RwTextureGetRaster(gpLeafTex[0]); - gpLetterTex = RwTextureRead("letter", nil); - gpLetterRaster = RwTextureGetRaster(gpLetterTex); + gpLeafTex[1] = RwTextureRead("letter", nil); + gpLeafRaster[1] = RwTextureGetRaster(gpLeafTex[1]); gpCloudTex1 = RwTextureRead("cloud3", nil); gpCloudRaster1 = RwTextureGetRaster(gpCloudTex1); @@ -543,7 +542,7 @@ void CParticle::Initialise() case PARTICLE_DEBRIS: case PARTICLE_TREE_LEAVES: - entry->m_ppRaster = &gpLeafRaster; + entry->m_ppRaster = gpLeafRaster; break; case PARTICLE_DEBRIS2: @@ -773,11 +772,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; From 7c382c85b82c0d97c3c2b56a0681ea10552430cd Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 16:49:42 +0300 Subject: [PATCH 112/113] Add PR rules to Readme --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index fb5c7ec1..c53eac62 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,20 @@ Microsoft recently discontinued its downloads of the DX9 SDK. You can download a If you feel the need, you can also use CodeWarrior 7 to compile reVC using the supplied codewarrior/reVC.mcp project - this requires the original RW34 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing +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 original 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 original game supported +- Code that increase maintainability + We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. Do not use features from C++11 or later. From b451be6c7f354c5faef204085402ee19a5dd4d44 Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 16:46:09 +0300 Subject: [PATCH 113/113] PR rules --- .github/pull_request_template.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/pull_request_template.md 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

#rME| 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 diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd index f09ce09056a1ad1c33b170ad794d31ea0ed4cb92..9ba773f29d4945aea2602dd61c90885b3afd9fef 100644 GIT binary patch literal 590632 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 literal 328360 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 diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd index a9c297aedb6d161e41ce14c7394b4a269d5864da..848580e3f1a5d18afe78cd65d64e074870f63732 100644 GIT binary patch literal 590632 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 w0YktLFa!(%L%4!bOyjhzd%A&`VW5 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 Date: Fri, 12 Feb 2021 00:29:09 +0100 Subject: [PATCH 074/113] enable screenshots with F12 --- src/core/main.cpp | 13 +++++++++++++ src/fakerw/fake.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/skel/glfw/glfw.cpp | 1 + src/skel/win/win.cpp | 1 + vendor/librw | 2 +- 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index a08a9535..bb94ca5d 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,8 +1,10 @@ #include "common.h" +#include #include "rpmatfx.h" #include "rphanim.h" #include "rpskin.h" #include "rtbmp.h" +#include "rtpng.h" #ifdef ANISOTROPIC_FILTERING #include "rpanisot.h" #endif @@ -331,7 +333,11 @@ RwGrabScreen(RwCamera *camera, RwChar *filename) strcpy(temp, CFileMgr::GetRootDirName()); strcat(temp, filename); +#ifdef THIS_IS_STUPID if (RtBMPImageWrite(pImage, &temp[0]) == nil) +#else + if (RtPNGImageWrite(pImage, &temp[0]) == nil) +#endif result = false; RwImageDestroy(pImage); return result; @@ -350,6 +356,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) { @@ -361,6 +368,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 } diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp index 18a27ec1..1faf6ee6 100644 --- a/src/fakerw/fake.cpp +++ b/src/fakerw/fake.cpp @@ -947,6 +947,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/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 8fe1d93f..db9d101a 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -207,6 +207,7 @@ psGrabScreen(RwCamera *pCamera) } #else rw::Image *image = RwCameraGetRaster(pCamera)->toImage(); + image->removeMask(); if(image) return image; #endif diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 6ed02011..89c901b2 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -262,6 +262,7 @@ psGrabScreen(RwCamera *pCamera) } #else rw::Image *image = RwCameraGetRaster(pCamera)->toImage(); + image->removeMask(); if(image) return image; #endif diff --git a/vendor/librw b/vendor/librw index 5c953008..4c77fb57 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 5c95300890559c85a2764bc200361f904cd4f9f4 +Subproject commit 4c77fb57546e89da1e6f3bad3c582848de9f5c93 From c5db1e697b88794973148121d6d89de5f5d5896c Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 00:57:39 +0100 Subject: [PATCH 075/113] improved readme --- README.md | 95 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 84713f99..e2acaa8f 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,85 @@ -# reVC [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami) ## Intro -The aim of this project is to reverse GTA Vice City for PC. +In this repository you'll find the fully reversed source code for GTA III ([master](tree/master) branch) and GTA VC ([miami](tree/miami) branch). + +It has been tested and works on Windows, Linux and FreeBSD, on x86, amd64, arm and arm64.\ +Rendering is handled either by original RenderWare (D3D8) +or the reimplementation [librw](https://github.com/aap/librw) (D3D9, OpenGL 2.1 or above, OpenGL ES 2.0 or above).\ +Audio is done with MSS (using dlls from original GTA) or OpenAL. + +We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in touch with us. ## How can I try it? - reVC requires game assets to work, so you **must** own [a copy of GTA Vice City](https://store.steampowered.com/app/12110/Grand_Theft_Auto_Vice_City/). -- Build reVC or download it from one of the above links (Debug or Release). -- (Optional) If you want to use optional features, copy the files in /gamefiles folder to your game root folder. -- Move reVC.exe to GTA VC directory and run it. +- Build reVC or download the latest nightly build: + - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_x86/miami/reVC_Release_win-x86-librw_d3d9-mss.zip) + - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_d3d9-oal.zip) + - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_gl3_glfw-oal.zip) + - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/ubuntu-latest-gl3.zip) + - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/macos-latest-gl3.zip) +- Copy the files from the `gamefiles` directory to your game root directory. (This is not strictly necessary but very much recommended) +- Move reVC executable to GTA VC directory and run it. -## Latest standalone executables to download +## Screenshots -(Put content of selected archive into gamedir) +![screen_ 1613086852](https://user-images.githubusercontent.com/1521437/107714115-fa18f580-6ccc-11eb-9de5-eb4cd04865d3.png) +![screen_ 1613086989](https://user-images.githubusercontent.com/1521437/107714103-f38a7e00-6ccc-11eb-88a3-c8c2033c51d6.png) +![screen_ 1613087193](https://user-images.githubusercontent.com/1521437/107714106-f4bbab00-6ccc-11eb-96a9-13821d9b9684.png) +![screen_ 1613087332](https://user-images.githubusercontent.com/1521437/107714111-f84f3200-6ccc-11eb-902e-d757481d579a.png) -- [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_x86/miami/reVC_Release_win-x86-librw_d3d9-mss.zip) -- [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_d3d9-oal.zip) -- [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/reVC_msvc_amd64/miami/reVC_Release_win-amd64-librw_gl3_glfw-oal.zip) -- [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/ubuntu-latest-gl3.zip) -- [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/miami/macos-latest-gl3.zip) +## Improvements + +We have implemented a number of changes and improvements to the original game. +They can be configured in `core/config.h`. +Some of them can be toggled at runtime, some cannot. + +* Fixed a lot of smaller and bigger bugs +* User files (saves and settings) stored in GTA root directory +* Settings stored in reVC.ini file instead of gta_vc.set +* Debug menu to do and change various things (Ctrl-M to open) +* Debug camera (Ctrl-B to toggle) +* Rotatable camera +* Xinput controller support (Windows) +* No loading screens between islands ("map memory usage" in menu) +* Rendering + * Widescreen support (properly scaled HUD, Menu and FOV) + * PS2 MatFX (vehicle reflections) + * PS2 alpha test (better rendering of transparency) + * Xbox vehicle rendering + * Xbox world lightmap rendering (needs Xbox map) + * Xbox ped rim light + * Xbox screen rain droplets + * More customizable colourfilter +* Menu + * More options + * Controller configuration menu + * ... +* Can load DFFs and TXDs from other platforms, possibly with a performance penalty +* ... + +## To-Do + +The following things would be nice to have/do: + +* Fix physics for high FPS +* [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) +* Xbox port (not quite as important) +* reverse remaining unused/debug functions +* compare Codewarrior build with original binary for more accurate code (very tedious) + +## Modding + +Asset modifications (models, texture, handling, script, ...) should work the same way as with original GTA for the most part. + +Mods that make changes to the code (dll/asi, CLEO, limit adjusters) will *not* work. +Some things these mods do are already implemented in re3 (much of SkyGFX, GInput, SilentPatch, Widescreen fix), +others can easily be achieved (increasing limis, see `config.h`), +others will simply have to be rewritten and integrated into the code directly. +Sorry for the inconvenience. ## Building from Source @@ -75,15 +133,12 @@ Assuming you have Visual Studio: > :information_source: **Did you notice librw?** reVC uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of reVC, but you also can use LIBRW enviorenment variable to specify path to your own librw. ## Contributing -Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/miami/CODING_STYLE.md) Document +We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. -### Unreversed / incomplete classes +Do not use features from C++11 or later. -PS2/Mobile stuff: - src/core/Pad.cpp - src/core/main.cpp - src/core/Frontend_PS2.cpp - src/core/FrontEndControls.cpp - src/save/MemoryCard.cpp +## License +We don't feel like we're in a position to give this code a license. +If we were, it would be MIT licensed. From c3ced5825d1b9d3e82ba33c5de68a59872d3fa47 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 00:58:16 +0100 Subject: [PATCH 076/113] improved readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2acaa8f..74eb2fa7 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,10 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to ## Screenshots +![screen_ 1613087332](https://user-images.githubusercontent.com/1521437/107714111-f84f3200-6ccc-11eb-902e-d757481d579a.png) ![screen_ 1613086852](https://user-images.githubusercontent.com/1521437/107714115-fa18f580-6ccc-11eb-9de5-eb4cd04865d3.png) ![screen_ 1613086989](https://user-images.githubusercontent.com/1521437/107714103-f38a7e00-6ccc-11eb-88a3-c8c2033c51d6.png) ![screen_ 1613087193](https://user-images.githubusercontent.com/1521437/107714106-f4bbab00-6ccc-11eb-96a9-13821d9b9684.png) -![screen_ 1613087332](https://user-images.githubusercontent.com/1521437/107714111-f84f3200-6ccc-11eb-902e-d757481d579a.png) ## Improvements From 9e22eaf79834dc6a462790b78768f5cd0f522428 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 08:06:34 +0200 Subject: [PATCH 077/113] Fix RW34 --- src/core/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index bb94ca5d..bf0ce5fe 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -333,7 +333,7 @@ RwGrabScreen(RwCamera *camera, RwChar *filename) strcpy(temp, CFileMgr::GetRootDirName()); strcat(temp, filename); -#ifdef THIS_IS_STUPID +#ifndef LIBRW if (RtBMPImageWrite(pImage, &temp[0]) == nil) #else if (RtPNGImageWrite(pImage, &temp[0]) == nil) From c5042dcdf66ea1da380d5fa0964081688a217d50 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 08:14:10 +0200 Subject: [PATCH 078/113] Add english strings to translations as stubs, also translation notice --- gamefiles/TEXT/american.gxt | Bin 424006 -> 423974 bytes gamefiles/TEXT/french.gxt | Bin 468284 -> 469972 bytes gamefiles/TEXT/german.gxt | Bin 460058 -> 461770 bytes gamefiles/TEXT/italian.gxt | Bin 457234 -> 458926 bytes gamefiles/TEXT/spanish.gxt | Bin 455006 -> 455258 bytes src/audio/MusicManager.cpp | 2 +- src/core/MenuScreensCustom.cpp | 4 +- utils/gxt/american.txt | 5 +- utils/gxt/french.txt | 144 ++++++++++++++++++++++++++++++++- utils/gxt/german.txt | 144 ++++++++++++++++++++++++++++++++- utils/gxt/italian.txt | 142 +++++++++++++++++++++++++++++++- utils/gxt/spanish.txt | 38 ++++++++- 12 files changed, 457 insertions(+), 22 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 919cd1394299cc930fde7f98ef1d4af9cce7946a..077590fb0976acafbf2272ce47e92441fc32b50c 100644 GIT binary patch delta 1064 zcmX}qPe>F|7y$5ZW@kh?Nq8|V>=H|C(f*PC9Hi$s>rOK}v&_uuYKE?L=n#e=w2(AH z2PGml?2iYlONj@mWCM%JL?kfn5JZ$2rbu`R_OOxE!M-=|O$!6R_s#dc_r7oEZMklu zTvx33dcKN497i*w0O!`YV*s}{xZ?oDE$#$BrOe$3aQ?3d&BWACVeQZkH`YdWg;*SG zrM=u(+ZCp^Eqd1H7T=y_V!@`tUtmGxG&dHwz1(9E9B%y89wRKqDFF~tnsPzdt{ ziGgu6a2&Rp11F$5AGi_b`XxvajouCC&P*q9>^d`@MEz~F<*EjHa9jdSQ573!H}!}) z>tgA&1fFKPwuMQPFC@@azhM~qh}IO{ab0k~Nnnun4izW#eLZjt#$=ht@wfwl6EGH+ zA+3?LhQppC=rnGQzlIhWtTtlUS}RnNGGtPkfem;dS!_W&SZ+gWot*@IA&<6fI%zoB z$4qnThnQ)Xk!#F2X_$L}wk>}u&z>;*`LCI2zO*2NO%&BZKmCMOyp(EaQFy*e7a7CE z5#`pXX<8I&Hqe%$(@RWlGSf{fznJN!n>#W%s@+O+Y8$G2)101z%rs{_UIi}6;Ys-2 zILr$E2iu3vvPC<72U1_)7_9aOjzeJpt*afCfzo{FMtHOnz!fi?fB0b)2?%M5c-ERKtg(Yuy`S!y3K9zFlr{#g-M)Qer(<+n{j#vluvOd4VzXfpLR^U zEj%YD>CP07zjjRVa~~bkDSEy+rVFfWxe?Y3rmMibTP9noZAGzpNJf)ts8*W!k@Yzf z7Qp#qMF&x;6kQ8nXVG<7>y;5<8b2EYT?3|SR`voG-2E5`z%9eEo~}w2U>uPPWWKR~Dy)3;B6rp6{LWz+#G;AisT2R?-nw*Zlaf!Y6Uv zpcbW8xp|r&HS1(kiSk3tZwT{6%YF&-MP-yAp;}Emr?yg<=VT5G^PFeF64uATnAO9ss@&J= zr>=cp3Sp%qlnCJ0e+RLvEBE;5LD^;GmIB+7>tb%H?sBPXXyjBwR-Q%MuMY4S8m4*)wqWAI6djmH+?% diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index a213bafb8a98134c4404212a73b3eaf02b46220b..541f98e6b5da0952b96abe7a0fc636ab9af64fb4 100644 GIT binary patch delta 2932 zcmZvee~29A8OOi3cY75#h|*NkxU~a~XyKB}?IssvF0He>vwL$lzdAE}yO#)?7?UP3 zYK)tXR1~{z!VJxgG(3P-+xK|A+=5ncXvQ6wjS6&J+`8xEE#=+1?Ov=vK`o;NXbnGO(hmc^%+5n%4ts zTfL~5-uM`O=eKI6@BA*!^j&s9GkuRgEFAi>*A=sh6W^o5nG;$e4liq_!((SPbF*{j z$@aKKU-T`eOjjKLIAyw`_&M2acf_Xl71=lAN^=s+zwSlV43xax(?$$luE#_|89EH=BZ>{oKBa{09>v(tESH97QES1$Y_ zWwAf(r7ZT#Ci)SYRVyO@cQ3h`j9QL8gtPa_B5*vm=->mwVm5?_50L%pxFqrXZ&Q|_ z#-WrYXz^%2A}ef&jqzs6VuSN3i_M7-`VpIL?gZ@X{ej{t&tUoLAEk>H=iqrG;}RZP zm2nxnZz7Ldlgkdwz1sW2&E2VinZhT3%b{*nJLTcEbG@ri_WbNwEvQ8$%r9{n?=11U z?%bMVg_WmM$9h=pZXJBOvsdfwi2%31km~G-30(W9l*cMQiu0Ol7FM0=Q5%oB0S0ue zF~5fRIc?)l!pY=8ICs<9ow>r*3#rogthvWamvV($v>=`gy2<)uga1Ay2DOf9Mp*OL zlq>r_G;|4>=fI#s9MEe{WMuGDsQ+U?5NiSS7d%4f7$!$5Dwb>vi~wT@e1 z+>GmOyr=he?Erz6dzRn*-SCeKhxML8=ytoqn+qrOI&3)Iw}-cHx=rsJhYt2@-9+Hv zkj}ehNBB_7TaJrZ+qb;h+@=k$_at8{f!iqsAs*6PjVd_$XK8}lsfR8;)ACV1It!ZZ z$iWtE8D>uC(Vq-uPutVVi0}w57wKi<{mr zgzEU?j@gL1r$?SB%&Q}aJB@m~+t@r^xJ}u|G>_(9+WeD|+|1ssak}U9#p&F_ zsic7rCIXDYMimhZek{ajQUb%ZwqV+=p3jO7r>#2r-cq~RLoUn9v%%Z~hhG55m+st;0ZleLG8 zAoCURvMG~;ls^4m|4T|HC`o72AsOtnOr*6mDAId56NA1s;~7dLry`vX8P`{ z{zA}72^MoI+RD(PGMgY!CZj7Fc@U)fP>o2S>&PTBDDvz%9GrAJ8GLDcQ^_NCz*oa$ za59xV`Hn)qP`}SXeg$NS7${>HYgwywO&)t`s%$K&U2Z2@Iil~kYhZ)SzQq=$ClWJr iIXmzf`nD#014)zRZ4*6uazr`O#-=C;u)(L2&v82#r0o+Qou@(#5|)8O;w-84uNEd;>>Xf=r;p4d;FR&-ox`w%nk zmN|t^H&_zW0Y|yx4nNDJq(fHaNI#h9j8F!^)Q17xGH*zh9jY3Pi@ug+JJIQ)_#Z+;y^`oO< z>KR>L&c!tu`j{m(1|??tN-V6<#pIl#g7NvnNpFe8_<0z|+Qy3WZB>V{aB;(!y7a(k ux;$K5x*TYCmKX1@jf}62I9{!dINvNj9*#N#<5IH=FE?J?E2-Ht@$WyKOE>ZW diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index 700ea772b99a32a9fa8f364fbf4a7a69e644d1d2..fe42078ce8645908234b8cc48d4157df3e9da07f 100644 GIT binary patch delta 2907 zcmZuzdx%tJ6hHfzQ5Zu}GmRy#X%Momv(H*x(>pVFX70{?aqpd-851U3wS45-x*;3F z{LzNe!?Y=sP+Lu?j1pbJB~~FLvq-SoKg@z&TSSN`m~0r>?|k>0P03yE+}}Cpcb?z5 zcjm2^>b~4lx2vu+UROh^=jm1>QDUydO+*9pC2l6VzChv@q8+Ugw-TL;)lf{eGM(_f znv@v6hAT0AqiZFGZ+$Og*XCU3UK6-vTX0ypR~q0j_O8Tm`0A*{NVfSju%6N2OPfCn zFkI>I`2fR}wp|1^^F`(i{se5Rek@y{;Jso+)`9<8Ocs&j4h-dKQn5*Mxom?zP9 z6WI1O1Nd@Hi1fG?cQLy^?g?<#CmOjwL?zwwT^l52euy%fXqZMH1J>gi&-bY#9U?=` z6*NpJYF2O)O@6k5n`vx!1-DRsFhr)VnmUF(@)59!;P~^8g~;ww4OdT*aUw)cS~t)@ ziJVh`z#S-Of%O$DRN$Fk1KTc7ni4+-m^oLk1(>_s`%i!|X&RXxCdakKRHn@fF!L`r z2AKKj_At3>T=Rer8^G~WS~K)U+TpR_7#2pfx{EQ>8tHHW*p6qoh|!e+=Acu00?a{Y zKOZJfb5qQj|6zccQ#Tx7=Ir_;Oum{&ChW&=0gmGgq6=>XLJoWI15Fa79QI(Wwt|~! z$0Xp4R%qEebf)IY!{w3sU6J(%t0}3)i_LA(q0GW#Rr4N{iiFohizje1xf8ghe6!*G z$SVf|$D|uCzq4q6s?NHS#-{loo@$nXF{VxN2)}UPSc?S(y!A_P~FRtV;AUj zMen#nJ<&DQk=JEH+tP-+VHQ>}T&pQB^$}lsKjv)O(b(C5kau zr?jXlQH&eOa(7!}ahv2N!Mj+&hDXOIlkiDr6ZGc9#y($d$|9r{M< zEzK@}&^9MBOUjOGmOpJ<8flWUn=;C`+Ey(&E`5F1pzC5viDH*y(6FpKr+c(o`s56g z&PsmHN(^my6o7ojee;m~>5AEjejCCiN2Q9-4kN;20Rc zCH01#qb`X}EkRKkhab6NQHWVI?HG-p;vt!JMGFu5Y;hVUuti5C$wJ57?GG)wBxMIX zRDD`F74g2JX)=iyPtrcg@pQ9XZhtZIiU zlvn<~V|QeM=-e-+lKJw6rTvlPg71Uw4gI=w?vm;o2VV&HZx8oZoecL^*Y7W-$R(8= zN|R1;@<_p@kxyCZh)if5=uE+JAX$`xUd7#qqyQPXtMIDWeE8=@1Q$r5BrFDG4VfyO zn9xBgL9N1oSC}w!Fl$1W6HACIw(~^fvWK2!q^@!;igb0!WRUY4Kf`5fp(I)E0eFHRn?}4mPA3Y6O zq4kja!Rw=S)C~^X*W$Au_vfe=s2j{4VP!u1t-@!(C_M+TRit25ABYOvwusPoCVC32 zXP~bKgG*YC`#KS5EAAWduh5gikG(hI>V|a8Ckt=5t#Tf(jw$de**Hf9 zBiF^i`4rR88GEKqshLyaLtciMT`&fFYXB)Y1>RN-rxh#_p9`Ot0(Tw36=C5M<5O`F zP!(2uX99C#UL~Z#m4*Gz-6fR6yJ3`s6DJ8m1rG;1^YZXx5mX;TAP&RZ$LSr&yiAq| z!(RORfqjCSr$lj6nK kFoR&^K1$=m`M)K2{csa_)ofR1)!?ed6*{TT3V(OyUoSLb7XSbN delta 1235 zcmX}rTWAzl7zgnGUKJAQi)fS;_94Ymqsd-kLbKI9nVrp!JD26`tVyJ>KC~dV57HYY zq->xRwcb`nuxbKYibPSgU1>^dt%wvVQW5g7N~=EjAX;n#TS%*J`<*>!J23G3&V1jw zd^2<7Xyo{3k!qxpTM+;&77aTF99gX#2jp_psT7T$ zq^T4)ZEk=FU-X-9xhZ`L4olYa(|PZ0zIQ$KNBw5 zF3t3NQ<+waE(<~{(V1yH*QHG3d)6w`E~@>?bb$GE5Lv@!rVh-y!d!QG9>EWT7}0H= zS6B>_AFF`HvHxJ(2~3@6JBiERx80AWzXXwEhS(bxf0GuSh(3`Pow(j0JFae$Q!j!r zG+pD=yTK))mP;Po%{uAN?gwoknM87zOUMy0SeYE%H^jo!i3`afhaO5Z`xKW)d6Y_^?19ZTTm_3_jPwQGT=uXMaR z<40C!<*a3U7kUoY%=H(2UbJ`Co9~_WCi}WpesR`E30irJRX}8)NG3buwOf5}`D^J! z!|$axRy*FkAhI&$VQzT;Zj7z`dMR3Qu9U&!|DE*?4XpAm4Wzv11KT^kRW+kVv37Lu zXJ7B~gJOECoaGkk2c%6WgFZDbUjO0`Vq&XoJMf;p_Hu{+ij3)3@SLGfYY&DNecr>@ zZ+e$ERlTvzAJu-{93Ap+n)#$TvAa3pn`=(^duCqZV93CLgD9!Adm$2_J4knEZXpuB G^YlM6WI5IV diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 4eaabb2ee56ca38de8fc31c0034f868850d13711..e9ff1cc06b88f84f27689998c06702d304a3dabc 100644 GIT binary patch delta 2945 zcmZ8jYlu{37=HFLTQE|8tgK9iu2!bIv$|!j*qNC#vuEerIOmMJE753bS4+?>Tl#T| zZW1Ea7)cowneCQ{wNd*cA}WF|kW_S`3lU{e5gV8lN%g$n_Z@TF;mr4Z@B6&h@BPls zgNM)Df9KpCbJPCwI$*`IO=v|uIN08aau8An zbms&&{DhvyPc)d(zCM+>!I~+bKHFf*Kk6}jAZ#9-q?D|z>>BPBz z5eJFw693SigHyK45qr08md1?)m^vkg)bW!jAZgFM9O||z7@fVuPPrZ@39jtV!L^1) zY<4KLGF-%E*JhZBZq4vw9DO(k&#^p*%^uxL?9n;@=1=4hthC(7sbTfL9Kr#|WdSJ; zzNj}+LH{en&Z<=w@zh(yK_s2VA0KKgoT)<^OO=Oz)tH^eA18Dni~`k_={Xt;zxx7> zg@4_`E<{$@j)`9@5tq{e+jV;Ig(I8L_1U6vPq5H>upuN4%5_O%ccig6Ev(a6oX*+U zh1ia2!rAqt#=<$UPh;VPFLfcYh8YQ{e5!GoXK=+OKkCg8=OFnl!$qw7GsC?&@hEZK z9y#~6$=5qxo!{EFU`PJd@pe@0aHY-y{1<)3Rc;t86OGlH+3A9*IUAIoSP- z=9JxPtKQdh+E>P=O5Wwhrs~G6+xt$BKQ&yhDz7TK_&2-#V|r>a5*mF$DLBF*Q`b!-ZJt5UX$$xJF$y#!*SXE14ix! zLzptyvn!bOkoF^2Zk8(8YkENm7wwmVy}3=F7kz_K_<@hVRkmK!XT|lU=Pg=jbRlP` zTN^d`zQQIGBraDmZERx4Yu&!|o_wFN87>V^{Bepq>khzh7u<8p5^QpPDM z8Fwkg78M{t)Z)xPCL2<_3IYsKRw1j(#9V%2CM)i3vO(OSy~t!QK})oWXdyx6eRMou zQWC8cmGVt(s*@^hKBD5yqsy3t8f9QWNkN#BhC`jac%^4Ge)A1PZqal@dT9|$#WBAn zX`O0;30lfh5)*wnP-H#};970_=+=TVm%ufMpa5KiZ-bjh88@VrF6xVTIzzy7w zkvEF#v6dXsU&HS)uD4(l(ONP$Dy{IvZVkURBfW)SiwYs4Q4$L@+pJvA40J77H&MQT z3`uDn*Xxy|EnGM7Q^3{APOLZZSxfDD@)ok73X$wGnMpi7E_1L=(ol!pkVeUYIP8jy zR-n%H|BMxMypnCy!|M_icoZ_S_OVHl!;wQPDDNIunK3ywIhr)0YfGtX>Xap%3{;?Y z4I0gyU~mp(LR@9@pDTSs#8xIq?uMi+gXnTvWWc2ikI6`ypiYfo%HZ-VLX7mK5T!Uv zI5xwIXj7Ms7$}q37LD8#sXkIO6q+(JiA<9Cb~#x(oZJjKh=!8K>_C82#;w5F{l7xX z<-hAp11*=I1X&^l^r8>l^deo8_k#3P0!wPg^YkIk;8l(z)|i)Eu&k1VnakOMr!`Zf bUs2Lzc^$>~Jvy(0PbZ(;%a6|M+Vc6oP0MRD delta 1243 zcmXxjU1$_n6bJDCe#{~y&>%tr9f|~lQln;*P1cWSdNY}1uRCANPMQxan-?L_K35@u zp;gfbk;F;+pn*u)hJ9M4o1zaYqIpPZO6^kvEv=Y9#Y!lWfDeoG+`V@f27dRfy>IBrO zIi8fJ-G*AoqjYDA2f8xFj~`a1Q|vpTOc!`#Br(h#W|`D;OxQOAKaZW+Bt}ff^h1_L z?UGusZd{BS?m@8Ba0XkC8tz5;*CcX`i?d<;FKID}+G}YsiEBG#H!v--RZD^!rs31< z)-Q7#^O}NbkMIG z&R}X@gUy-EY1kV}WSg4P=lXXV+)tV1^AW6muffZ4i!Kl%Q;`dCgF8Qx`Q#)c>rcq8 zFD8w1zetN5{e`r+<@mqSG-;fRrQrE)eJa6TX_3FMUs~j^A56h#hFKsV=qDRt&a`+M zpBQ4{Sq_b;c|=&GrSY7TT_Z0J0ZUpmz5JQ9XgWKcLc#P$L{9CNw8+`FEG=?Y?xqm1 zaoPze|0ZqFcThUADHmh(J9x0&a5vW8Hr#_RcFB2jqVvn@)5POLP1j3t44bStY&%id zIbYR}+>1s39W6(tV~dg1)z-SO6r%*Ac-Hn%nHR}qccQw~bv|Bg>Dh@#Eq!HbBeI5y zgFcV`=}Sjl*|yg9A5f2ZEQgosz2_F9+u766R(7gsUB$+Dp&B0lDR%7jf@p6ShkYAm zWy>8x^EWaszW$FZqN!bUTtu5EJDR%Gn*It=_SBW?+NpQ3X#Mm?bnnbuWDQ)bJ|EEg x+cQ_UXJYraXW}&6&+mWCrNso3v+mX8P$Nx;pI8y)s diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 5af714c13ec637c68affc513b71de99a91a360b6..1f1631625627bfbb98353206f4db78d83ded46c7 100644 GIT binary patch delta 1315 zcmZwGOK1~O6b9hG$s`2ZMHVe8Mi2yb5n}VGRPc2>xoxJI%nUOVO+_h)h%SqQMG7fY zu%bw{MHd#dQm6|TN~Bc~sUT9sg`y~m50L7{`dFw43VLqt9d*&b4BtI-&V8Jjynegl z#r%qqL^aV82J<|_N(1I{p9tGen+_nl^0>?%&Eusz7cjs7z>}P^?}3OG;Vw++YUVge*F+GTRzP+`AeBr z%P-NOm+8zDZ(gcQac7M(?V^xVrUUp}HFO#lGdVEe3A@~Pi-;Z6(8Vq8R#_UYN7R62 z@bGxxED~n}=TMmr+=hWU4FzV1y%dD3FirhU?4Ql~EpkGowWXW5vv$cbH$7CApIN8z&ytpv>7 zm)7YWv?pK6!4CQk7TyQWApRk67O_v{BJa6UyAwXVZZw}9X-tfV(8=}Q?1t9b;jgpMRAS!C)rL|nTH`hquq|FYm-!ZI+^Yh9k5fC*))#9WtOxvF*5!@< z+dazhrytoq0 zV$oBZ>hs`qub_iQ6;c)((7Jez^*70;a{7P4hXLomY5q+NTB4h_>roD;d$7=d8OK&O Qhw0Mjip;ERjDl78HM?lw1_?!6d7$GBqY%f`A`ND{p^E*P(BYLF&049maKb{gMd^$v5^a&V`)Kf-ug zvQ7dui#_9d;~rsLcMb^SEzGDeHjs-;(4||%)BuWpR+ZG!wnDErG6TD#h82{^QO% zIK_GyT-|c0jY*0kgP~O$2Bj6Pt479gV5VILlXUlJIH6*P=LoEv^&EwrtDa-9JT5~@ zCn+6=U6?_qaC7{{?#p1GCMMMraAsD9bW%650T+^wc)&VnUP9}=y#%d1N86N58dlc0 zS9pldtPs+-hIJq%k(7NkuJ zN3?1%v$QZQS!i1|*d>CLn{B%5JU83a84N&1qY0K1n&4(R!8_b6=kLP+I3$NB0j$2_ zR`DBjw0z`2H~tSQUp+@a`Q|wa!5?Tt>p53?=D&QXetp^pT^i}@N?8-_E#sy2mid~} zT&p6L%8_kfsoXYLJ8?38!$(Q!P5j=mx(enG!37wad|j6JU7IQlPZeqwrwYEu(~}o> U`$EH^20uO$KJsFyArSxcAJ Date: Fri, 12 Feb 2021 08:46:32 +0200 Subject: [PATCH 079/113] Add missing rtpng.h --- src/fakerw/rtpng.h | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/fakerw/rtpng.h 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); From df336f5ba231860d660f91746ef3e9091ad08124 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 09:20:35 +0200 Subject: [PATCH 080/113] Convert TXDs to VC version, delete unused controller shadows --- gamefiles/models/frontend_ds3.txd | Bin 590632 -> 524968 bytes gamefiles/models/frontend_ds4.txd | Bin 590632 -> 524968 bytes gamefiles/models/frontend_x360.txd | Bin 590632 -> 524968 bytes gamefiles/models/frontend_xone.txd | Bin 590632 -> 524968 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd index 1e5da6e1438f966125b32a94c41e1cfeb7295f06..0c9fc84056ffe23cd3dcbb657da484fb566bbfd8 100644 GIT binary patch delta 233 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 diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd index e3cd2bffde10eded9a1b56e17cc0fbdff9378d0a..4841ecd1b140266d2076f862c55a171c55f68c70 100644 GIT binary patch delta 233 zcmZ3{rm~_{!9}^5>>lnp#DQz7q)Jh^%*!_+Z>{9;(ie(iBwl!OQ!01@CvjpsKlb6Ad*|NSJKmq} zdUmd8b}aACnfvp7=iGDd+_^Jz_l=p(H-7n8b`Jo2F}(v2J>R2!pZdb z@a0l|EF)&0=+yk+QfA|08I!enQj||6nLMu*#cs|Pwl+X(5xz&oIEP%1$y%xIxYI?n zLNazMcHpedy>HN#M<;CgC$HP`@7}WI_dc}c|4fDElRm0wFbf1&&$XDK`ohdc$yC$-~6y51w=JYK^UyhE6k z*~LL7qMV3b+Xz5~`l-RID-d&jb~u*=7~ds=ioZ5 zI&ygsE*qSz-H5q5c${fd>Ck08+DXhE;-SAsV{n9gU(P>ik0sm1<^W#88>B^L{+z?8 z8&iG}cZF5f*NBPu+q9Y{a1s;Ph9_}>Y0@=UxTWlq##z$06F`xa>1I&<~3xXhy}pve(8uIk!OjdRHT zcn(3m!9MBsTGUZ+MGd=l*;n5~G@&?7Bd+U|-AS}Gob~>8R#DVhqt07Dxx0kdci>bo zBvTpWr)Q7Iy2Hujn{->En%g_^C?vR=5(*fEI;Kl}hXfS9I|2c|GXfgl6@eqDw@>F} zKJ4HTn;k`6Vj33dc1L3#jEwo|?5M3CPk!O{3`FyQZV52{mP?CxOLfoRz9k%*n)!%&nOZ6CDznb%(=4T#`i2=9>H0`dE)ZAfMRMsLtRC@ff&{ft8phEoyzg~@@@k`Vn z;+M!^%GW2oaiN<0g=!l;(Z0aZa@wZVBA)fm-UhvWIZ2#B*iC z{63iO^VU$UWuWCGx;&vkiuW)H5D4&-@6@Hna&FkE1+@N2wt1n#A-K&?)T=SGmi3R{&diZ5x!FbjPH_w#CJ%bzqU4~WjWHc zwnZBcoxdS^aGGw7UUTC?jaQ-@G2}LgRSdfe;^SCb5Yt4m;Crtsh;QIcTy^nugJSPs z9J7fxXV2}Yc4PBVBdQZ2UqaMqPgOx}D&pYfPpqPc-x+T6Sx zCvQroHeI0^J$kKqL}xI~Q^I_)ravN?$SQ>);7`%&W!*V{RNqEF9}-p(aVNps>cmTL zOoIq4(`mu)4=l*5KdMdhU!~V1$fR+-C+?uz*ZN8iIB0c3QdN^4xJWDTUl38Nbe6n< zA5k7{7M(p2`Q`d|Q0WC)9bgCd9|y%hF>@O_bvP+gZO~vpR_*&~ZJWTF%l@N56UeXp z(VYLRywNR`bt#gGO(CCqIDl|jm)C8vO?k|ezk)4$8Lu@U=;aUQ{7$g~m!f7txx^-u zQ)W_B>LZJo^rULa5~O7}ReCd|Wk(Rm+%AX3Md}AK2()%(*-9#b)SCX?dW3?Y!B&%2 zNH+Gs$j4ee{rxY5KNk8R4=^&cs-jLOjTRm@K205JOA{sO^fbHBS@ZbDkrTH#$TDFD zDvlo@M8+_@N}>T+{!=>4f5mIcKaumF7uP8=Gn;U$AS2gBn<=Qo`p9SFZ;*HB+}?q$ ze1YAjA~+wtKF#o=C;ScIOa>UWS< z_pMJuZfVE3R1XPzvor^smQP3s)m-D$lfbmyyojHKMQBfLF*k32twtQfmRU6{D8DrJ zkf8C>8auDuUWvU(@RcnMs!eGV;&p)o<4$3#0AIEb_f%gJnY*-}G;Jma-D(@S2c4nJ zb^e?FgBlD(Eb<+Tx|F4XzFPd3E5q zF8U7avG;lIv`@?Pz)R{FoYJ;Z-~T{3%zLH`{`gH>{>%He{D;$){DTyWro23#g=d~( zmXgPYPJQRDENDt1p2`>2g!tZvw*2rc=Dp_pyw_4T SPd3$(&!$=@+dRLJ+5Z5h{taUQ diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd index 9ba773f29d4945aea2602dd61c90885b3afd9fef..7d82e769ada9b6c2c44b136d24beba7ce0da6fa0 100644 GIT binary patch delta 233 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 w0YktLFa!(%L% Date: Fri, 12 Feb 2021 12:59:39 +0200 Subject: [PATCH 081/113] Update TXDs --- gamefiles/models/frontend_ds3.txd | Bin 524968 -> 524968 bytes gamefiles/models/frontend_ds4.txd | Bin 524968 -> 524968 bytes gamefiles/models/frontend_x360.txd | Bin 524968 -> 524968 bytes gamefiles/models/frontend_xone.txd | Bin 524968 -> 524968 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd index 0c9fc84056ffe23cd3dcbb657da484fb566bbfd8..06518848e6f069e39798eb58cba692e583c402be 100644 GIT binary patch delta 162 zcmV;T0A2s6g&?SfAb^AcgaU*Egam{Iv<3tVw}2G`EdsYO382@V8WW1~LT#*9w!tjc>R2eFh2yw*g%QumP8` zf&``k9k*D61d9>@0Jr3o1QP@Sjkoxj1WN%04gEj$zmvg@xwiqF1P}oM5SLhU1m3ss Qodi{5heZMhmqh{yW8pwKfB*mh delta 48 zcmZ3{s<5I}p`nGbg{g(Pg{6gc3mXgf_7*Nye&y}Lx-3mP+eM?<+n2Y?FtJaUVdCfk E0CPnR{Qv*} diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd index 4841ecd1b140266d2076f862c55a171c55f68c70..96193714680acd99f778a6d7413c20bb8703713f 100644 GIT binary patch delta 81 zcmV-X0IvV2g&?SfAb^AcgaU*Egam{Iv<3tVw}6!bEdsYO3$XP delta 48 zcmZ3{s<5I}p`nGbg{g(Pg{6gc3mXgf_7*PI1^(NYM6q3T*#31E>xHy-S0?u9u1p-s E0IL}hD*ylh diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd index 7d82e769ada9b6c2c44b136d24beba7ce0da6fa0..acb330998aeba28b18a6219925846727f6e05eb2 100644 GIT binary patch delta 108 zcmZ3{s<5I}p`nGbg{g(Pg{6gc3!94Y_65c)Zy2`=h_I-XZ8zy=Tf;p0!cxQSg8gjg sp{&Vlm)U`0y4wY3!^P&qS&MF*3_A_-~)6&tl26t&$~(i}Awp;AR#^Mu+VoEi5@qj8~=~Y-15+T)6#u8;c$D zcF}IO)6A1U%s1RF*w1#JdAh?y79evn+XZ%@puu***+4;%^mM`bZ1#*y+XLsb^+N>~ kvpF$}Z4X(@*2BE{!+b`@?GKl+q(rs5GOx+hv&8r^_&L^Z)=XeGIz* From e98164ec41c3629c592bb31d8b110d85626c5e3c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 18:00:20 +0200 Subject: [PATCH 082/113] Sync aspect ratio setting with master --- gamefiles/TEXT/american.gxt | Bin 423974 -> 423994 bytes gamefiles/TEXT/french.gxt | Bin 469972 -> 469996 bytes gamefiles/TEXT/german.gxt | Bin 461770 -> 461790 bytes gamefiles/TEXT/italian.gxt | Bin 458926 -> 458946 bytes gamefiles/TEXT/spanish.gxt | Bin 455258 -> 455278 bytes src/core/Frontend.cpp | 28 ++++++++++++++++++++++------ src/render/Draw.cpp | 36 ++++++++++++++++++++++++++++-------- src/render/Draw.h | 10 +++++++--- utils/gxt/american.txt | 3 +++ utils/gxt/french.txt | 3 +++ utils/gxt/german.txt | 3 +++ utils/gxt/italian.txt | 3 +++ utils/gxt/spanish.txt | 3 +++ 13 files changed, 72 insertions(+), 17 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 077590fb0976acafbf2272ce47e92441fc32b50c..4db81fc6e878ff9e43d0c1e18f6fae4364124bd9 100644 GIT binary patch delta 1013 zcmXxiPe>F|90%~PyE7)~(ZdP`1ribj?jH*x!sj^djx#&6%+C6+#1s!6L==qn5RK5m zh&>osCn_ouwdBcta#Xac+uzVn$1Rnp8P62hlq}zcTe{nt|;$LUz6q-jux1%zxAj1s)ZfKkp=992W!h8~K_sEW?Tjcpg1%{?;F3oQ1iEzQA zPqwDOH*C*!C~5PB0#gqf#zKW`XlCB?Futq6VtoTTP3ZU6&6%v^ia=E)`BMvs@#My0nU1#;~XXA2CNPcnABvWMgoUk!MH9j>{(vZ&H}& zw9N|hE<5fB)1*;(NOqlIDsNVWgZ#2E&yQ`ZaG9p($=e^vnxD}vBaZi9_#$W7G@^+; zZk`rL%K_QZO#Tv^--P+5b$^8UriVu=^17SmIjtva1M{4jGr~OQX|fg`>!*|GzsU=0 z^bH!$j)_Gd{Rgqh&F|90%~PyE77}aQe={@Zxx|QJr?Y``UMNxFKDwM9MR@s)$6pAwONa{8_Fz2`Ia(Ev37^fl`hGg zXVbJV!p`CV()Z)AL_Ug_9!Uo>jHbCtw8)DffsF;)&+{Fy|3bRxh1_X>Nt>rFe4vZ$ znemgKwHeQR*XAwqzqQ%GyJ{TWjwf6jn2#HDV242#8%GWF*q$9!L;~eDy%0&br|V8( zue0tn4h+}bfz>es8R5vgaqh};5@+ry%Sp66r2Wu#>6^0#9Lu%>&TiqkaxrA-l7Wij zg@Mnc`8Ni#cGNH?ztE1AErcP$9|l~}KVWl0KY!Jo#Efa`IFCD4cN#M(6FEoZ91eR` z&^d0-Uu%~MzfZV<(}P;KiG0R!*+2z`uNJa{jXv5L92E4mVcHMmq;Y;!S?07%D$6e0 z?<#ZBSbahVel(R=FO{SG_sTNgSThj_%P!E1Uumn7v0W#D*IROtcRh}%v@I>u5@_0? zeJd+3F~6%UH?93qmYeSWGf}XE9+`8fwK1~H89J^kb7oVG2t|n}@w+J~Tl^39Ph3`u zetrkWXx&L{jn$n(d4kT`1GS0ekMZ79%ZJY{o@;n~d%ZlhUT#=fFUOvaOpR~G_{8}b KE90Byr`iAK`tDo+ diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 541f98e6b5da0952b96abe7a0fc636ab9af64fb4..36f4225cc4cb9ee8724d84ad25b43a1f9322c13e 100644 GIT binary patch delta 1013 zcmXxiPiWIn90&04)}{^>(Stg$=nexBICI3Y#!Q(1XH+VZjU> zPH+bg9x8emvO@(A;tm^QV10Y2P62l;~jB8Zen2@I0#!YFe?VgpU z+Rb@k#};RG)dKsrMFl(Wc7I(o<+ z^-S@OK52^A^U`#SLr(U9or;{nlgE*>sJ@A;qPC`>$XSuou%|we zi?liYPJUKk4>Qx@d8l6$lnUIW27J_;;X-tvek1eoaYnBFAlr_ZG&cW)7CCcA6G2>b znK~1iCXMYLvSSBRIlLNL-Jji$+wvFD%m1 zcr{D5HA7rt<3VV#Y2RXKv8h^3psYK2k<+&wTI6)LLW`WOy#!n~N+$vHu_J*s`Ua`g z>2NVZ|AURL$QeBEj-18ZMY5rfb*_AjRdUB>*4r_p7bltLt_<|QU~LZ{H7g6vO519) b(muQ10S_+dlP>UFjGj0>$|}z#p8oz1nKA0y delta 992 zcmXxiO=uHA6bJBsO*V=YL8w}A(H;a5Dww2=P>V2K$7J2jZk%lTc~B3PB0VTXC`Q6bU;~7;?WVZA8?mkKW@ObxFu+Ity9XC0H|gRgtiw5 zpOTvA3^+V$7(18Aw&j$A0F4O)E*lx+G@-$(u`{@NKXw-NC$am`Xc;KltZ37)3vbCq z+MIrW-Wl+RnJer(%nt@i1>2dp2b&7lWd1O>lop*g5fK@m}?px~j{3RQX%6FmUTePoQ`i^Nc+d=61CRMBv_pg8dbCEjjtQ5YfOdMOE7NJKyUAs$ zndaN~Dbu`tM44_8oKmI&>IDrwro(IwjGPtrdEi@kcU?n)JKPUh3b|1=U}<=FB4?1F ziJZla*O9yM;j@NbW{SJv#j3RE#Ofbu(TQ9C$Zo)GGBh2g!402!x4Bcg8~}@ZbcCi8 z_%6j{J9JpQRWR00lTE`a1p&NX9X9K)a_UgN7&(pPmB<-1Cn9Gta#u&uWJQyjz4(M& z6gL1aJlEm&G21r_7@pHf5u^Q;7F9ml zl%`H&aaRJK@3y+qaZp;sBP}iB2Tvs6GlQ4N4V!F)z1%iam@0{ZXFJrQYkk5ZEQLmu z>>8H1#M+>=*mVCTX|ZW%ErAmE3nJ$DV`&j{v>`2G?kyw`unL_-@8gHGLH{7%xgiJr z^bUTbtrgTy@1Utg&S0vIZ1HMtb|L=o*p7|q7?G0fcDs*P>cw#{$V aV$JC`hB5-UW9!K{eHwlG{CYC+<=206|LuqX delta 993 zcmXxiO=uHA6bJCXO*WOFAnHLRm5Mz{k)%mQB}k{+ZL;oWcbRP3q!zr0C&4Nn#1{5o zpuHJEX%8M+2`Gq)w9p=^P(dl8P$35o;s-?WP^1MZ0R?@NnO#`;&Fp(K^WM(q*~Ht~ zL@g1t5)rUs(R5P4&{5?+pxUFH27Vt`&Hyw0%KgClU<8BAvCdKM*03_=+FY4(lb4h! zxA&Sbcg0@ox7!X}hZ4r;)CWpvK2)ZJch8h*vx%2v(=sR*6R)Ky74`Shl!~d3W8$tB09mF{cGwA;o3 za*1lD`PLC-nm=_ynNBf~Ri*-}xhRHBhuH>DJ}=A-pIca(iXvw?1`k*Yy;U_}eaPMm zoksFO=nO8u3f+&DMihBwinHNSQ(AOlV_RBu;`$%5>l-$CGor!N4V_c(e(sen`M~O7 z4T0(S+@+xI9u1b!E*OooWK*|_zK?8PgUv=O26ZS|2;GO>S3{@Kyc0Tu^1OzE$qFVl zd-W-~K#SAkKiA-nFq@k>*h?C`ylGPb0lXJ-AS&p7LpI0882R7_vdcxMG4w@R#B6O# ziz?^-N>it?x<3YwyX~&*J0>mSH&fCgK7Tp}&UB+luG?fi$Q!nq!c0*NJlmlbT^tb> zVJXxrWLLMuAsXY-V$nTUq{X6#ZpKhFcuvIhJdqYLi4|!PQ(KF{XJy)n?#Fj&o&G_x zcSjCJ=^lJSXFF(=?m;seI*pl5vSm~F|90%~PyEEHD9=a3;OP7#}B-%elmQc^}sk8H!*_m8DfPP&#azm=r$STumzYdTi>Y4Vn z!^*V(HLpy!SU;ys4J?#3445vnIn}%<9Plu(@N`w8g|F z%&jNxM)iY+A!drZA^SyIOrrinT1?{fKe88co4lLSVH(^BXm%6r(oqOB_v?sFHw-)q zdU;5P#aj)dqewOls}hE|)~my2!y}v~RAY$?urDX3i{4IL!oGPOj>#O8hCRDTcBnZ0 zdY5!~7nmKGgBY*t@P|yB8i=vEDi@*yzd<%fM;W>Kmh1&$(rDk17BS5&Y0+i&r!-9( z?b!_cz-vuKJ18yU`;SPA_?ss(2$;bu`=|Dnmr@wu&KQfrmCBiitSy}0nVi{~Y+KuzOgT$?7$Su5 TW_mi)^l0?xYdxKr8=w9IpPlHw delta 992 zcmXxiPe>F|90%~P?#$+)V}%Ea2&EzkcUMD7sOR|7w>vvCyq(QIMD0PULlA_Az{4mC zN++SBB@7BG6eI*C_t2q#bm$}%5mey8B&vggflD6xy?t*M20ri2@ArG}_nUn^-t=s| zX{IUaYDs_<3c^bPrDMivVEVXm2C&k`?LctaxC2<{33M|rm!(`QYfQN}i^h~&x@=6j zcWx+4U!661x8}(AC}He@c|i%Y3&xZ%w`@#@b-p2s9H(5gzSpKyOn%U&R6P7n&JSEt zF@JuLeHL~X2T|Ebz+pjcf8@8aRNH9WjcSX4$rM)WEjWHa?|?R2x#)#dX|BPTPFp)b zE>h35zj@f0_CKYJ=@yG;jH!X?tc7#JV=kwf7nLOsWezhF7J9kIWyDe_-!co9#=iTp zGuV6*yB%Y1V|SqEvxPn;)ZMVXuB|3f-qKc+X#Pj`L++A)*4q#ccO=bjc&~Ob1S}@B;p7TohzngdT-HCxX+i;uokr)C*mTk9*zMT8XCp6IUeK^d zo|5xaoPI~=ZTRPzD@89#3pRp2;Zg$;R+sfcb{x$=(eOEqcieAHGkl?`px z<@S~~O&U9Uk_e<(Pkj^2#bK zg=+!XcXH|yvr=0XJv6MXiZ)(PqQGUZiYY(RRxyhU+A1b^o-$i?&1G;B4zJ zz38X^LHIXz8pGAt88qyYb9}IQ=~d$P$)(b%GONo@R7a<(qjf9Q(fa)Sl-H7=$D+qx K@mi82U;hK=9_Xk5 diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 1f1631625627bfbb98353206f4db78d83ded46c7..7a71144c176ac5129e3dd0f5479d0221193c9f56 100644 GIT binary patch delta 1025 zcmXxiT}TvB6bJBs?#%Y(Lk}$}P7t(I4_5AnVbIrg9NlSVXO`L7T%|BV`T!q_UX~EI zC{W+FkP2DILa?9*!BBgNf(Q|z1fde69yWT2M2Ny5sB`z;Ss3`8JLlYc&zW7WG^|z{ zN?Nfg5(3L+O(zDNt(T4i{hD+F&~{5F0qmD<1|GMB(8?U^B-MU7B2BeJDQT*Wo{^^7 zzDwMm%g<7Vt1h|@6>PsPUr@pQF=;CJFd3k2* zdH0d*GQTy~g}&twbe5^E7d~@)d>L3PR)Y-lVp#Z1b~E%2*!G7z=lHbK>|bd*Ex$#9 zo}->=ecujgTJPN>O}99ml%@tQ9#_zAI?OhJQkL5@e9wY*RY8a07+#UZ&~{A*ERM=> z-~^iP22P@HI&d>ea|%+-l-$C>6ZdiH*}9?SNuWej~dy3hf*@4RwDl#e4rUr`0Pl|wd(Da;ac6T#!^flS__@uG4D9m$C zd==(hj;#sPq%jf>BjdT%sYL69d4B(1VV++)5QfKeBTKH+$$Bwm*k%mtCJ!>ULnB(T zxp`U)b1vD{Eq)0tE6g|DbzYcn+IuC8tl@R=oW>Dho})bw<~g-b!thz1P6Afug?0J{ zcH@c&I_ZCaZ-L{8eh-|0wo0~)uGy(qp~RuBkIFS@H_|;U=TH4SeB;>Wr?fDD3mCZf nc23=SbF?rxTG%i%TBx~R-pG)H4|lLW5~4?;N1dsUgxRP6>Idy= delta 991 zcmXxiPe>F|90%~P?aZ=-hds1pxVNA#V(uS9!u~wR$$ic2%rG;Xs}w;**fH`Tu`r5( z8+5RcPC^!j9Xv#Z8blaKNOZ_kBt@64OJ*J_JP7rB``#=Je130!zxUqnH@n?v-)yu` zXQON;0Tu+@$pQ8ufi_-dAX(~nU2Dx0lBywJT zBD*Z?s|=yKnSjB(=K7Vd!oFC>)~~1;c+AgXmOIQgfm$H!o1t$Zbwk5|>6m`Ra_G9L0+z>z+p!DC z-j7{Gbt!f?YU>(GjElRW{!v;?VzD7DCeipwc0`sw3h~ z=)07Z&gihrX2VDyBXh$F!Vt4PI&3yLWYUCcCu8TadO3Chzb9iCv2ssGnX@vdVUIo} zmuYkQb&UR0g7h>`O8q9%kh98rk*5q_MgoEpj@(NsBJ; z>`2q3F`i7q^WElD(rwZrf8?mN$gg!K;WNVw$eKYmqLOLz92#5%p6$?x)@@;tmct8| z>>8H1L@JOLo3>t+7Mpt4lL$;u?t9TlPz;-@%fuX;rO!? 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; 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_4_3, - AR_16_9, - AR_AUTO, + AR_4_3, + AR_5_4, + AR_16_10, + AR_16_9, + AR_21_9, + + AR_MAX, }; class CDraw diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index b39d9a1b..2507d388 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -14420,6 +14420,9 @@ GAMEPAD TYPE [FET_AGS] GAMEPAD SETTINGS +[FEM_AUT] { aspect ratio related } +AUTO + { end of file } [DUMMY] THIS LABEL NEEDS TO BE HERE !!! diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index f88a9158..d5983e95 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -14709,6 +14709,9 @@ GAMEPAD TYPE [FET_AGS] GAMEPAD SETTINGS +[FEM_AUT] { aspect ratio related } +AUTO + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 9350366d..f5ff5e24 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -14709,6 +14709,9 @@ GAMEPAD TYPE [FET_AGS] GAMEPAD SETTINGS +[FEM_AUT] { aspect ratio related } +AUTO + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 08c30e06..4773cde8 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -14718,6 +14718,9 @@ GAMEPAD TYPE [FET_AGS] GAMEPAD SETTINGS +[FEM_AUT] { aspect ratio related } +AUTO + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index e63721df..82c1958c 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -14404,6 +14404,9 @@ TIPO DE MANDO [FET_AGS] AJUSTES DE MANDO +[FEM_AUT] { aspect ratio related } +AUTO + { end of file } [DUMMY] THIS LABEL NEEDS TO BE HERE !!! From 2c784d979a88035176082edf986a2c02b9073338 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 01:49:09 +0300 Subject: [PATCH 083/113] Remove version text, add toggleable debug info(with commit hash!) --- .gitignore | 4 +- premake5.lua | 836 +++++++++++++++++++++-------------------- printHash.bat | 26 ++ printHash.sh | 14 + src/core/config.h | 4 + src/core/main.cpp | 57 ++- src/core/re3.cpp | 14 +- src/extras/GitSHA1.cpp | 2 + src/extras/GitSHA1.h | 1 + 9 files changed, 538 insertions(+), 420 deletions(-) create mode 100644 printHash.bat create mode 100644 printHash.sh create mode 100644 src/extras/GitSHA1.cpp create mode 100644 src/extras/GitSHA1.h 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/premake5.lua b/premake5.lua index b0a432bb..d6d139dd 100644 --- a/premake5.lua +++ b/premake5.lua @@ -1,416 +1,420 @@ -newoption { - trigger = "glewdir", - value = "PATH", - description = "Directory of GLEW", - default = "vendor/glew-2.1.0" -} - -newoption { - trigger = "glfwdir64", - value = "PATH", - description = "Directory of glfw", - default = "vendor/glfw-3.3.2.bin.WIN64", -} - -newoption { - trigger = "glfwdir32", - value = "PATH", - description = "Directory of glfw", - default = "vendor/glfw-3.3.2.bin.WIN32", -} - -newoption { - trigger = "with-asan", - description = "Build with address sanitizer" -} - -newoption { - trigger = "with-librw", - description = "Build and use librw from this solution" -} - -newoption { - trigger = "with-opus", - description = "Build with opus" -} - -newoption { - trigger = "lto", - description = "Use link time optimization" -} - -if(_OPTIONS["with-librw"]) then - Librw = "vendor/librw" -else - Librw = os.getenv("LIBRW") or "vendor/librw" -end - -function getsys(a) - if a == 'windows' then - return 'win' - end - return a -end - -function getarch(a) - if a == 'x86_64' then - return 'amd64' - elseif a == 'ARM' then - return 'arm' - elseif a == 'ARM64' then - return 'arm64' - end - return a -end - -workspace "reVC" - language "C++" - configurations { "Debug", "Release", "Vanilla" } - startproject "reVC" - location "build" - symbols "Full" - staticruntime "off" - - if _OPTIONS["with-asan"] then - buildoptions { "-fsanitize=address -g3 -fno-omit-frame-pointer" } - linkoptions { "-fsanitize=address" } - end - - filter { "system:windows" } - platforms { - "win-x86-RW34_d3d8-mss", - "win-x86-librw_d3d9-mss", - "win-x86-librw_gl3_glfw-mss", - "win-x86-RW34_d3d8-oal", - "win-x86-librw_d3d9-oal", - "win-x86-librw_gl3_glfw-oal", - "win-amd64-librw_d3d9-oal", - "win-amd64-librw_gl3_glfw-oal", - } - - filter { "system:linux" } - platforms { - "linux-x86-librw_gl3_glfw-oal", - "linux-amd64-librw_gl3_glfw-oal", - "linux-arm-librw_gl3_glfw-oal", - "linux-arm64-librw_gl3_glfw-oal", - } - - filter { "system:bsd" } - platforms { - "bsd-x86-librw_gl3_glfw-oal", - "bsd-amd64-librw_gl3_glfw-oal", - "bsd-arm-librw_gl3_glfw-oal", - "bsd-arm64-librw_gl3_glfw-oal" - } - - filter { "system:macosx" } - platforms { - "macosx-arm64-librw_gl3_glfw-oal", - "macosx-amd64-librw_gl3_glfw-oal", - } - - filter "configurations:Debug" - defines { "DEBUG" } - - 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" - - filter { "platforms:linux*" } - system "linux" - - filter { "platforms:bsd*" } - system "bsd" - - filter { "platforms:macosx*" } - system "macosx" - - filter { "platforms:*x86*" } - architecture "x86" - - filter { "platforms:*amd64*" } - architecture "amd64" - - filter { "platforms:*arm*" } - architecture "ARM" - - filter { "platforms:macosx-arm64-*" } - buildoptions { "-target", "arm64-apple-macos11", "-std=gnu++14" } - - filter { "platforms:macosx-amd64-*" } - buildoptions { "-target", "x86_64-apple-macos10.12", "-std=gnu++14" } - - filter { "platforms:*librw_d3d9*" } - defines { "RW_D3D9" } - if(not _OPTIONS["with-librw"]) then - libdirs { path.join(Librw, "lib/win-%{getarch(cfg.architecture)}-d3d9/%{cfg.buildcfg}") } - end - - 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 - - filter "platforms:*x86-librw_gl3_glfw*" - includedirs { path.join(_OPTIONS["glfwdir32"], "include") } - - 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) - if (gamepath) then - postbuildcommands { - '{COPYFILE} "%{cfg.buildtarget.abspath}" "' .. gamepath .. '%{cfg.buildtarget.name}"' - } - debugdir (gamepath) - if (exepath) then - -- Used VS variable $(TargetFileName) because it doesn't accept premake tokens. Does debugcommand even work outside VS?? - debugcommand (gamepath .. "$(TargetFileName)") - dir, file = exepath:match'(.*/)(.*)' - debugdir (gamepath .. (dir or "")) - end - end - end - -if(_OPTIONS["with-librw"]) then -project "librw" - kind "StaticLib" - targetname "rw" - targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}")) - files { path.join(Librw, "src/*.*") } - files { path.join(Librw, "src/*/*.*") } - - filter { "platforms:*x86*" } - architecture "x86" - - filter { "platforms:*amd64*" } - architecture "amd64" - - filter "platforms:win*" - defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" } - staticruntime "on" - buildoptions { "/Zc:sizedDealloc-" } - - filter "platforms:bsd*" - includedirs { "/usr/local/include" } - libdirs { "/usr/local/lib" } - - filter "platforms:macosx*" - -- Support MacPorts and Homebrew - includedirs { "/opt/local/include" } - includedirs {"/usr/local/include" } - libdirs { "/opt/local/lib" } - libdirs { "/usr/local/lib" } - - filter "platforms:*gl3_glfw*" - staticruntime "off" - - filter "platforms:*RW34*" - flags { "ExcludeFromBuild" } - filter {} -end - -local function addSrcFiles( prefix ) - return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc" -end - -project "reVC" - kind "WindowedApp" - targetname "reVC" - 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") } - files { addSrcFiles("src/audio/eax") } - files { addSrcFiles("src/audio/oal") } - files { addSrcFiles("src/buildings") } - files { addSrcFiles("src/collision") } - files { addSrcFiles("src/control") } - files { addSrcFiles("src/core") } - files { addSrcFiles("src/entities") } - files { addSrcFiles("src/math") } - files { addSrcFiles("src/modelinfo") } - files { addSrcFiles("src/objects") } - files { addSrcFiles("src/peds") } - files { addSrcFiles("src/render") } - files { addSrcFiles("src/rw") } - files { addSrcFiles("src/save") } - files { addSrcFiles("src/skel") } - files { addSrcFiles("src/skel/glfw") } - files { addSrcFiles("src/text") } - files { addSrcFiles("src/vehicles") } - files { addSrcFiles("src/weapons") } - files { addSrcFiles("src/extras") } - - includedirs { "src" } - includedirs { "src/animation" } - includedirs { "src/audio" } - includedirs { "src/audio/eax" } - includedirs { "src/audio/oal" } - includedirs { "src/buildings" } - includedirs { "src/collision" } - includedirs { "src/control" } - includedirs { "src/core" } - includedirs { "src/entities" } - includedirs { "src/math" } - includedirs { "src/modelinfo" } - includedirs { "src/objects" } - includedirs { "src/peds" } - includedirs { "src/render" } - includedirs { "src/rw" } - includedirs { "src/save/" } - includedirs { "src/skel/" } - includedirs { "src/skel/glfw" } - includedirs { "src/text" } - includedirs { "src/vehicles" } - includedirs { "src/weapons" } - includedirs { "src/extras" } - - if _OPTIONS["with-opus"] then - includedirs { "vendor/ogg/include" } - includedirs { "vendor/opus/include" } - includedirs { "vendor/opusfile/include" } - end - - filter "platforms:*mss" - defines { "AUDIO_MSS" } - includedirs { "vendor/milessdk/include" } - libdirs { "vendor/milessdk/lib" } - - if _OPTIONS["with-opus"] then - filter "platforms:win*" - libdirs { "vendor/ogg/win32/VS2015/Win32/%{cfg.buildcfg}" } - libdirs { "vendor/opus/win32/VS2015/Win32/%{cfg.buildcfg}" } - libdirs { "vendor/opusfile/win32/VS2015/Win32/Release-NoHTTP" } - filter {} - defines { "AUDIO_OPUS" } - end - - filter "platforms:*oal" - defines { "AUDIO_OAL" } - - filter {} - if(os.getenv("GTA_VC_RE_DIR")) then - setpaths("$(GTA_VC_RE_DIR)/", "%(cfg.buildtarget.name)") - end - - filter "platforms:win*" - files { addSrcFiles("src/skel/win") } - includedirs { "src/skel/win" } - buildoptions { "/Zc:sizedDealloc-" } - linkoptions "/SAFESEH:NO" - characterset ("MBCS") - targetextension ".exe" - if(_OPTIONS["with-librw"]) then - -- external librw is dynamic - staticruntime "on" - end - - filter "platforms:win*glfw*" - staticruntime "off" - - filter "platforms:win*oal" - includedirs { "vendor/openal-soft/include" } - includedirs { "vendor/libsndfile/include" } - includedirs { "vendor/mpg123/include" } - - filter "platforms:win-x86*oal" - libdirs { "vendor/mpg123/lib/Win32" } - libdirs { "vendor/libsndfile/lib/Win32" } - libdirs { "vendor/openal-soft/libs/Win32" } - - filter "platforms:win-amd64*oal" - libdirs { "vendor/mpg123/lib/Win64" } - libdirs { "vendor/libsndfile/lib/Win64" } - libdirs { "vendor/openal-soft/libs/Win64" } - - filter "platforms:linux*oal" - links { "openal", "mpg123", "sndfile", "pthread" } - - filter "platforms:bsd*oal" - links { "openal", "mpg123", "sndfile", "pthread" } - - filter "platforms:macosx*oal" - links { "openal", "mpg123", "sndfile", "pthread" } - includedirs { "/usr/local/opt/openal-soft/include" } - libdirs { "/usr/local/opt/openal-soft/lib" } - - if _OPTIONS["with-opus"] then - filter {} - links { "libogg" } - links { "opus" } - links { "opusfile" } - end - - filter "platforms:*RW34*" - includedirs { "sdk/rwsdk/include/d3d8" } - libdirs { "sdk/rwsdk/lib/d3d8/release" } - links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtanim", "rtcharse", "rpanisot" } - defines { "RWLIBS" } - linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" - - filter "platforms:*librw*" - defines { "LIBRW" } - files { addSrcFiles("src/fakerw") } - includedirs { "src/fakerw" } - includedirs { Librw } - if(_OPTIONS["with-librw"]) then - libdirs { "vendor/librw/lib/%{cfg.platform}/%{cfg.buildcfg}" } - end - links { "rw" } - - filter "platforms:*d3d9*" - defines { "USE_D3D9" } - links { "d3d9" } - - filter "platforms:*x86*d3d*" - includedirs { "sdk/dx8sdk/include" } - 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" } - - 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" } - - filter "platforms:linux*gl3_glfw*" - links { "GL", "GLEW", "glfw" } - - filter "platforms:bsd*gl3_glfw*" - links { "GL", "GLEW", "glfw", "sysinfo" } - includedirs { "/usr/local/include" } - libdirs { "/usr/local/lib" } - - filter "platforms:macosx*gl3_glfw*" - links { "GLEW", "glfw" } - linkoptions { "-framework OpenGL" } - includedirs { "/opt/local/include" } - includedirs { "/usr/local/include" } - libdirs { "/opt/local/lib" } - libdirs { "/usr/local/lib" } +newoption { + trigger = "glewdir", + value = "PATH", + description = "Directory of GLEW", + default = "vendor/glew-2.1.0" +} + +newoption { + trigger = "glfwdir64", + value = "PATH", + description = "Directory of glfw", + default = "vendor/glfw-3.3.2.bin.WIN64", +} + +newoption { + trigger = "glfwdir32", + value = "PATH", + description = "Directory of glfw", + default = "vendor/glfw-3.3.2.bin.WIN32", +} + +newoption { + trigger = "with-asan", + description = "Build with address sanitizer" +} + +newoption { + trigger = "with-librw", + description = "Build and use librw from this solution" +} + +newoption { + trigger = "with-opus", + description = "Build with opus" +} + +newoption { + trigger = "lto", + description = "Use link time optimization" +} + +if(_OPTIONS["with-librw"]) then + Librw = "vendor/librw" +else + Librw = os.getenv("LIBRW") or "vendor/librw" +end + +function getsys(a) + if a == 'windows' then + return 'win' + end + return a +end + +function getarch(a) + if a == 'x86_64' then + return 'amd64' + elseif a == 'ARM' then + return 'arm' + elseif a == 'ARM64' then + return 'arm64' + end + return a +end + +workspace "reVC" + language "C++" + configurations { "Debug", "Release", "Vanilla" } + startproject "reVC" + location "build" + symbols "Full" + staticruntime "off" + + if _OPTIONS["with-asan"] then + buildoptions { "-fsanitize=address -g3 -fno-omit-frame-pointer" } + linkoptions { "-fsanitize=address" } + end + + filter { "system:windows" } + platforms { + "win-x86-RW34_d3d8-mss", + "win-x86-librw_d3d9-mss", + "win-x86-librw_gl3_glfw-mss", + "win-x86-RW34_d3d8-oal", + "win-x86-librw_d3d9-oal", + "win-x86-librw_gl3_glfw-oal", + "win-amd64-librw_d3d9-oal", + "win-amd64-librw_gl3_glfw-oal", + } + + filter { "system:linux" } + platforms { + "linux-x86-librw_gl3_glfw-oal", + "linux-amd64-librw_gl3_glfw-oal", + "linux-arm-librw_gl3_glfw-oal", + "linux-arm64-librw_gl3_glfw-oal", + } + + filter { "system:bsd" } + platforms { + "bsd-x86-librw_gl3_glfw-oal", + "bsd-amd64-librw_gl3_glfw-oal", + "bsd-arm-librw_gl3_glfw-oal", + "bsd-arm64-librw_gl3_glfw-oal" + } + + filter { "system:macosx" } + platforms { + "macosx-arm64-librw_gl3_glfw-oal", + "macosx-amd64-librw_gl3_glfw-oal", + } + + filter "configurations:Debug" + defines { "DEBUG" } + + 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" + + filter { "platforms:linux*" } + system "linux" + + filter { "platforms:bsd*" } + system "bsd" + + filter { "platforms:macosx*" } + system "macosx" + + filter { "platforms:*x86*" } + architecture "x86" + + filter { "platforms:*amd64*" } + architecture "amd64" + + filter { "platforms:*arm*" } + architecture "ARM" + + filter { "platforms:macosx-arm64-*" } + buildoptions { "-target", "arm64-apple-macos11", "-std=gnu++14" } + + filter { "platforms:macosx-amd64-*" } + buildoptions { "-target", "x86_64-apple-macos10.12", "-std=gnu++14" } + + filter { "platforms:*librw_d3d9*" } + defines { "RW_D3D9" } + if(not _OPTIONS["with-librw"]) then + libdirs { path.join(Librw, "lib/win-%{getarch(cfg.architecture)}-d3d9/%{cfg.buildcfg}") } + end + + 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 + + filter "platforms:*x86-librw_gl3_glfw*" + includedirs { path.join(_OPTIONS["glfwdir32"], "include") } + + 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) + if (gamepath) then + postbuildcommands { + '{COPYFILE} "%{cfg.buildtarget.abspath}" "' .. gamepath .. '%{cfg.buildtarget.name}"' + } + debugdir (gamepath) + if (exepath) then + -- Used VS variable $(TargetFileName) because it doesn't accept premake tokens. Does debugcommand even work outside VS?? + debugcommand (gamepath .. "$(TargetFileName)") + dir, file = exepath:match'(.*/)(.*)' + debugdir (gamepath .. (dir or "")) + end + end + end + +if(_OPTIONS["with-librw"]) then +project "librw" + kind "StaticLib" + targetname "rw" + targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}")) + files { path.join(Librw, "src/*.*") } + files { path.join(Librw, "src/*/*.*") } + + filter { "platforms:*x86*" } + architecture "x86" + + filter { "platforms:*amd64*" } + architecture "amd64" + + filter "platforms:win*" + defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" } + staticruntime "on" + buildoptions { "/Zc:sizedDealloc-" } + + filter "platforms:bsd*" + includedirs { "/usr/local/include" } + libdirs { "/usr/local/lib" } + + filter "platforms:macosx*" + -- Support MacPorts and Homebrew + includedirs { "/opt/local/include" } + includedirs {"/usr/local/include" } + libdirs { "/opt/local/lib" } + libdirs { "/usr/local/lib" } + + filter "platforms:*gl3_glfw*" + staticruntime "off" + + filter "platforms:*RW34*" + flags { "ExcludeFromBuild" } + filter {} +end + +local function addSrcFiles( prefix ) + return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.rc" +end + +project "reVC" + kind "WindowedApp" + targetname "reVC" + 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") } + files { addSrcFiles("src/audio/eax") } + files { addSrcFiles("src/audio/oal") } + files { addSrcFiles("src/buildings") } + files { addSrcFiles("src/collision") } + files { addSrcFiles("src/control") } + files { addSrcFiles("src/core") } + files { addSrcFiles("src/entities") } + files { addSrcFiles("src/math") } + files { addSrcFiles("src/modelinfo") } + files { addSrcFiles("src/objects") } + files { addSrcFiles("src/peds") } + files { addSrcFiles("src/render") } + files { addSrcFiles("src/rw") } + files { addSrcFiles("src/save") } + files { addSrcFiles("src/skel") } + files { addSrcFiles("src/skel/glfw") } + files { addSrcFiles("src/text") } + files { addSrcFiles("src/vehicles") } + files { addSrcFiles("src/weapons") } + files { addSrcFiles("src/extras") } + + includedirs { "src" } + includedirs { "src/animation" } + includedirs { "src/audio" } + includedirs { "src/audio/eax" } + includedirs { "src/audio/oal" } + includedirs { "src/buildings" } + includedirs { "src/collision" } + includedirs { "src/control" } + includedirs { "src/core" } + includedirs { "src/entities" } + includedirs { "src/math" } + includedirs { "src/modelinfo" } + includedirs { "src/objects" } + includedirs { "src/peds" } + includedirs { "src/render" } + includedirs { "src/rw" } + includedirs { "src/save/" } + includedirs { "src/skel/" } + includedirs { "src/skel/glfw" } + includedirs { "src/text" } + includedirs { "src/vehicles" } + includedirs { "src/weapons" } + includedirs { "src/extras" } + + if _OPTIONS["with-opus"] then + includedirs { "vendor/ogg/include" } + includedirs { "vendor/opus/include" } + includedirs { "vendor/opusfile/include" } + end + + filter "platforms:*mss" + defines { "AUDIO_MSS" } + includedirs { "vendor/milessdk/include" } + libdirs { "vendor/milessdk/lib" } + + if _OPTIONS["with-opus"] then + filter "platforms:win*" + libdirs { "vendor/ogg/win32/VS2015/Win32/%{cfg.buildcfg}" } + libdirs { "vendor/opus/win32/VS2015/Win32/%{cfg.buildcfg}" } + libdirs { "vendor/opusfile/win32/VS2015/Win32/Release-NoHTTP" } + filter {} + defines { "AUDIO_OPUS" } + end + + filter "platforms:*oal" + defines { "AUDIO_OAL" } + + filter {} + if(os.getenv("GTA_VC_RE_DIR")) then + setpaths(os.getenv("GTA_VC_RE_DIR") .. "/", "%(cfg.buildtarget.name)") + end + + filter "platforms:win*" + files { addSrcFiles("src/skel/win") } + includedirs { "src/skel/win" } + buildoptions { "/Zc:sizedDealloc-" } + linkoptions "/SAFESEH:NO" + characterset ("MBCS") + targetextension ".exe" + if(_OPTIONS["with-librw"]) then + -- 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" + + filter "platforms:win*oal" + includedirs { "vendor/openal-soft/include" } + includedirs { "vendor/libsndfile/include" } + includedirs { "vendor/mpg123/include" } + + filter "platforms:win-x86*oal" + libdirs { "vendor/mpg123/lib/Win32" } + libdirs { "vendor/libsndfile/lib/Win32" } + libdirs { "vendor/openal-soft/libs/Win32" } + + filter "platforms:win-amd64*oal" + libdirs { "vendor/mpg123/lib/Win64" } + libdirs { "vendor/libsndfile/lib/Win64" } + libdirs { "vendor/openal-soft/libs/Win64" } + + filter "platforms:linux*oal" + links { "openal", "mpg123", "sndfile", "pthread" } + + filter "platforms:bsd*oal" + links { "openal", "mpg123", "sndfile", "pthread" } + + filter "platforms:macosx*oal" + links { "openal", "mpg123", "sndfile", "pthread" } + includedirs { "/usr/local/opt/openal-soft/include" } + libdirs { "/usr/local/opt/openal-soft/lib" } + + if _OPTIONS["with-opus"] then + filter {} + links { "libogg" } + links { "opus" } + links { "opusfile" } + end + + filter "platforms:*RW34*" + includedirs { "sdk/rwsdk/include/d3d8" } + libdirs { "sdk/rwsdk/lib/d3d8/release" } + links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtanim", "rtcharse", "rpanisot" } + defines { "RWLIBS" } + linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" + + filter "platforms:*librw*" + defines { "LIBRW" } + files { addSrcFiles("src/fakerw") } + includedirs { "src/fakerw" } + includedirs { Librw } + if(_OPTIONS["with-librw"]) then + libdirs { "vendor/librw/lib/%{cfg.platform}/%{cfg.buildcfg}" } + end + links { "rw" } + + filter "platforms:*d3d9*" + defines { "USE_D3D9" } + links { "d3d9" } + + filter "platforms:*x86*d3d*" + includedirs { "sdk/dx8sdk/include" } + 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" } + + 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" } + + filter "platforms:linux*gl3_glfw*" + links { "GL", "GLEW", "glfw" } + + filter "platforms:bsd*gl3_glfw*" + links { "GL", "GLEW", "glfw", "sysinfo" } + includedirs { "/usr/local/include" } + libdirs { "/usr/local/lib" } + + filter "platforms:macosx*gl3_glfw*" + links { "GLEW", "glfw" } + linkoptions { "-framework OpenGL" } + includedirs { "/opt/local/include" } + includedirs { "/usr/local/include" } + libdirs { "/opt/local/lib" } + libdirs { "/usr/local/lib" } 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 + + %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 +> %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 100644 index 00000000..7b4453a1 --- /dev/null +++ b/printHash.sh @@ -0,0 +1,14 @@ +#!/usr/bin/bash + +> $1 + +echo -n "#define GIT_SHA1 \"" > $1 + +git --version 2>&1 >/dev/null +GIT_IS_AVAILABLE=$? +if [ $GIT_IS_AVAILABLE -ne 0 ]; 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/core/config.h b/src/core/config.h index 4d2ad3bf..506df4c5 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -194,6 +194,10 @@ enum Config { // those infamous texts #define DRAW_GAME_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT + #define TOGGLEABLE_VERSION_TEXT + #define USE_OUR_VERSIONING // If you disable this then game will fetch version 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 diff --git a/src/core/main.cpp b/src/core/main.cpp index bf0ce5fe..bb9bd296 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -75,6 +75,9 @@ #include "custompipes.h" #include "screendroplets.h" #include "VarConsole.h" +#ifdef USE_OUR_VERSIONING +#include "GitSHA1.h" +#endif GlobalScene Scene; @@ -91,6 +94,9 @@ bool gbModelViewer; #ifdef TIMEBARS bool gbShowTimebars; #endif +#ifdef TOGGLEABLE_VERSION_TEXT +bool gDrawVersionText; +#endif volatile int32 frameCount; @@ -1061,13 +1067,58 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; - + +#ifdef TOGGLEABLE_VERSION_TEXT + if(gDrawVersionText) +#endif + { + +#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,6 +1127,8 @@ DisplayGameDebugText() 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++; #ifdef FIX_HIGH_FPS_BUGS_ON_FRONTEND diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 779a7d13..9773b880 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -457,6 +457,10 @@ bool LoadINISettings() #ifdef FIX_SPRITES ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS bool migrate = cfg.category_size("FrontendOptions") != 0; @@ -550,6 +554,10 @@ void SaveINISettings() #ifdef FIX_SPRITES StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + StoreIni("General", "DrawVersionText", gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS for (int i = 0; i < MENUPAGES; i++) { for (int j = 0; j < NUM_MENUROWS; j++) { @@ -988,7 +996,11 @@ extern bool gbRenderWorld2; #ifdef FIX_SPRITES DebugMenuAddVarBool8("Draw", "Fix Sprites", &CDraw::ms_bFixSprites, nil); #endif - + +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); +#endif #ifndef FINAL DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); #ifdef USE_CUSTOM_ALLOCATOR diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp new file mode 100644 index 00000000..3d1cd73e --- /dev/null +++ b/src/extras/GitSHA1.cpp @@ -0,0 +1,2 @@ +#define 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 From 0c60ceeb33c06c17b35773ca4095c2d4c342a0dc Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Fri, 12 Feb 2021 02:04:31 +0100 Subject: [PATCH 084/113] Cmake version for hash --- CMakeLists.txt | 4 + cmake/GetGitRevisionDescription.cmake | 284 +++++++++++++++++++++++ cmake/GetGitRevisionDescription.cmake.in | 43 ++++ premake5.lua | 1 + src/CMakeLists.txt | 7 +- src/core/config.h | 4 +- src/core/main.cpp | 8 +- src/core/re3.cpp | 6 +- src/extras/GitSHA1.cpp | 2 - src/extras/GitSHA1.cpp.in | 2 + 10 files changed, 348 insertions(+), 13 deletions(-) create mode 100644 cmake/GetGitRevisionDescription.cmake create mode 100644 cmake/GetGitRevisionDescription.cmake.in delete mode 100644 src/extras/GitSHA1.cpp create mode 100644 src/extras/GitSHA1.cpp.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 7282135d..e8689b38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,10 @@ set(PROJECT REVC) 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/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( [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR]) +# +# Returns the refspec and sha hash of the current head revision +# +# 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( [ ...]) +# +# 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( [ ...]) +# +# 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() +# +# 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 +# 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 +# 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/premake5.lua b/premake5.lua index d6d139dd..98c3788f 100644 --- a/premake5.lua +++ b/premake5.lua @@ -263,6 +263,7 @@ project "reVC" 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" } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f3d51b06..6c8ab281 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/core/config.h b/src/core/config.h index 506df4c5..71316439 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -195,8 +195,8 @@ enum Config { // those infamous texts #define DRAW_GAME_VERSION_TEXT #ifdef DRAW_GAME_VERSION_TEXT - #define TOGGLEABLE_VERSION_TEXT - #define USE_OUR_VERSIONING // If you disable this then game will fetch version peds.col, as R* did while in development + // 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 diff --git a/src/core/main.cpp b/src/core/main.cpp index bb9bd296..52988afc 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -94,8 +94,8 @@ bool gbModelViewer; #ifdef TIMEBARS bool gbShowTimebars; #endif -#ifdef TOGGLEABLE_VERSION_TEXT -bool gDrawVersionText; +#ifdef DRAW_GAME_VERSION_TEXT +bool gDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds #endif volatile int32 frameCount; @@ -1068,9 +1068,7 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; -#ifdef TOGGLEABLE_VERSION_TEXT - if(gDrawVersionText) -#endif + if(gDrawVersionText) // This realtime switch is our thing { #ifdef USE_OUR_VERSIONING diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 9773b880..06789e4a 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -457,7 +457,7 @@ bool LoadINISettings() #ifdef FIX_SPRITES ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); #endif @@ -554,7 +554,7 @@ void SaveINISettings() #ifdef FIX_SPRITES StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; StoreIni("General", "DrawVersionText", gDrawVersionText); #endif @@ -997,7 +997,7 @@ extern bool gbRenderWorld2; DebugMenuAddVarBool8("Draw", "Fix Sprites", &CDraw::ms_bFixSprites, nil); #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); #endif diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp deleted file mode 100644 index 3d1cd73e..00000000 --- a/src/extras/GitSHA1.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#define GIT_SHA1 "" -const char* g_GIT_SHA1 = GIT_SHA1; 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; From 80e4b3db55870f4b1947a757843a96909e300206 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 17:23:29 +0300 Subject: [PATCH 085/113] Fix sha1 on premake linux --- premake5.lua | 2 +- printHash.sh | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) mode change 100644 => 100755 printHash.sh diff --git a/premake5.lua b/premake5.lua index 98c3788f..319e689a 100644 --- a/premake5.lua +++ b/premake5.lua @@ -331,7 +331,7 @@ project "reVC" 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"' } + prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' } filter "platforms:win*glfw*" staticruntime "off" diff --git a/printHash.sh b/printHash.sh old mode 100644 new mode 100755 index 7b4453a1..71f54466 --- a/printHash.sh +++ b/printHash.sh @@ -1,12 +1,10 @@ -#!/usr/bin/bash +#!/bin/bash > $1 echo -n "#define GIT_SHA1 \"" > $1 -git --version 2>&1 >/dev/null -GIT_IS_AVAILABLE=$? -if [ $GIT_IS_AVAILABLE -ne 0 ]; then +if (command -v "git" >/dev/null) then git rev-parse --short HEAD | tr -d '\n' >> $1 fi From 0ec16a5b0ecb85808553141c2657c957fc585dc9 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 19:50:26 +0300 Subject: [PATCH 086/113] Fix XInput hotplug --- src/core/MenuScreensCustom.cpp | 7 ++----- src/core/re3.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index a5dbd0d5..cdfb3c85 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -351,11 +351,8 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) { } } if (found != -1 && CPad::XInputJoy1 != found) { - if (CPad::XInputJoy1 != -1 && CPad::XInputJoy1 != found) - CPad::XInputJoy2 = CPad::XInputJoy1; - else - CPad::XInputJoy2 = -1; - + // 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 } diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 06789e4a..bd9a46df 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -279,6 +279,14 @@ void LoadINIControllerSettings() 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); From 035f0010d8d526ae4a5cd2254bd55e1486fca4f2 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 21:26:03 +0300 Subject: [PATCH 087/113] fix --- src/core/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 52988afc..3ab97450 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1124,7 +1124,6 @@ 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 From 0916971584c13c38109428a81d1f0727063a5d55 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 20:12:48 +0100 Subject: [PATCH 088/113] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index 4c77fb57..41ae7b9b 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 4c77fb57546e89da1e6f3bad3c582848de9f5c93 +Subproject commit 41ae7b9b61c6736b34269df0f0350d1b5bcff4df From 9df19cbac34d69295a6d4e3b9d1e911b039eb8fa Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 21:08:55 +0100 Subject: [PATCH 089/113] license information --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 74eb2fa7..f27f0784 100644 --- a/README.md +++ b/README.md @@ -140,5 +140,7 @@ Do not use features from C++11 or later. ## License -We don't feel like we're in a position to give this code a license. -If we were, it would be MIT licensed. +We don't feel like we're in a position to give this code a license.\ +The code should only be used for educational, documentation and modding purposes.\ +We do not encourage piracy or commercial use.\ +Please keep derivate work open source and give proper credit. \ No newline at end of file From 3db0e827e5d5dfa442386e18a4240f5a7f8ff6eb Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 21:52:51 +0100 Subject: [PATCH 090/113] add history section to readme --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index f27f0784..59530f36 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,35 @@ We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_ST Do not use features from C++11 or later. +## History + +re3 was started sometime in the spring of 2018, +initially as a way to test reversed collision and physics code +inside the game. +This was done by replacing single functions of the game +with their reversed counterparts using a dll. + +After a bit of work then project lay dormant for about a year +and was picked up again and pushed to github in May 2019. +At the time I had reversed around 10k lines of code and estimated +the final game to have around 200-250k. +Others quickly joined the effort and we made very quick progress +throughout the summer of 2019 +after which the pace slowed down a bit. + +Due to everyone staying home during the start of the Corona pandemic +everybody had much time to work on re3 again and +we finally got a standalone exe in April 2020 (around 180k lines by then). + +After the initial excitement and fixing and polishing the code more +reVC was started in early May 2020 by starting from re3 code, +not by starting from scratch replacing functions with a dll. +After a few months of mostly steady progress we considered reVC +finished in December. + +Since then we have started LCS, which is currently work in progress. + + ## License We don't feel like we're in a position to give this code a license.\ From 65f9917b651fa8b44a90899a6cc1fa650f053ab1 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 14:22:34 +0100 Subject: [PATCH 091/113] clean up debug menu --- src/core/main.cpp | 2 +- src/core/re3.cpp | 113 ++++++++++++++++++----------------------- src/render/Shadows.cpp | 4 +- 3 files changed, 53 insertions(+), 66 deletions(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 3ab97450..f6d27bd9 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1053,7 +1053,7 @@ DisplayGameDebugText() #ifndef FINAL { - SETTWEAKPATH("GameDebugText"); + SETTWEAKPATH("Debug"); TWEAKBOOL(bDisplayPosn); TWEAKBOOL(bDisplayCheatStr); } diff --git a/src/core/re3.cpp b/src/core/re3.cpp index bd9a46df..94004a84 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -694,18 +694,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) { @@ -928,13 +916,22 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Spawn", "Spawn Skimmer", [](){ SpawnCar(MI_SKIMMER); }); DebugMenuAddVarBool8("Render", "Draw hud", &CHud::m_Wants_To_Draw_Hud, 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; @@ -945,16 +942,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 @@ -983,31 +980,26 @@ extern bool gbRenderWorld2; 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); -#endif -#ifdef FIX_SPRITES - DebugMenuAddVarBool8("Draw", "Fix Sprites", &CDraw::ms_bFixSprites, nil); -#endif #ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); +#endif + DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil); +#ifdef TIMEBARS + DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil); #endif #ifndef FINAL DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); @@ -1020,28 +1012,23 @@ extern bool gbRenderWorld2; #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[] = { @@ -1065,9 +1052,9 @@ extern bool gbRenderWorld2; "PIZZA BOY", "RC Raider Pickup", "RC Bandit Race", "RC Baron Race", "Checkpoint Charlie" }; - 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; diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp index 2b1df555..91f53acf 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]; From 333530e260cddef8c9135446d210090ff70d5b3b Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 14:54:51 +0100 Subject: [PATCH 092/113] new icon --- src/skel/win/gtavc.ico | Bin 3262 -> 81817 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/skel/win/gtavc.ico b/src/skel/win/gtavc.ico index d253ff2c361eb9b280ec88c8c575a1b5b43fbfbd..7bfcc5a5751ad1bedab31b8c5a771a15bdccf065 100644 GIT binary patch literal 81817 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 From ddcc19d7cf4b5a76fadc224966a0fa074b142592 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 13 Feb 2021 15:00:14 +0100 Subject: [PATCH 093/113] readme fixes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 59530f36..7424f740 100644 --- a/README.md +++ b/README.md @@ -146,16 +146,16 @@ inside the game. This was done by replacing single functions of the game with their reversed counterparts using a dll. -After a bit of work then project lay dormant for about a year +After a bit of work the project lay dormant for about a year and was picked up again and pushed to github in May 2019. -At the time I had reversed around 10k lines of code and estimated +At the time I (aap) had reversed around 10k lines of code and estimated the final game to have around 200-250k. Others quickly joined the effort and we made very quick progress throughout the summer of 2019 after which the pace slowed down a bit. Due to everyone staying home during the start of the Corona pandemic -everybody had much time to work on re3 again and +everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then). After the initial excitement and fixing and polishing the code more @@ -172,4 +172,4 @@ Since then we have started LCS, which is currently work in progress. We don't feel like we're in a position to give this code a license.\ The code should only be used for educational, documentation and modding purposes.\ We do not encourage piracy or commercial use.\ -Please keep derivate work open source and give proper credit. \ No newline at end of file +Please keep derivate work open source and give proper credit. From ae8b2198e20d00104f8e989d5ab164f3068ffa53 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Sat, 13 Feb 2021 16:50:28 +0100 Subject: [PATCH 094/113] Redone the entire grouping to follow the textures, added ifdefs, added a small legend for the Pricedown characters in EFIGS font1 --- src/render/Font.cpp | 100 +++++++++++++++++++++++++++++++++----------- 1 file changed, 76 insertions(+), 24 deletions(-) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 86fe4a56..857c75f7 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -65,33 +65,85 @@ int16 CFont::Size[MAX_FONTS][210] = { #endif { //FONT2 EFIGS - //SPC,!, $, %, &, ', [, ], +, , -, ., 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??, A, B, - 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, 12, 16, 19, - //C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, ¡, \, ??, a, b, c, d, e, - 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19, 12, 14, 11, 11, 16, 11, - //f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??, À, Á, Â, Ä, Æ, Ç, È, É, Ê, - 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, 16, 16, 16, 16, 33, 17, 18, 18, 18, - //Ë, Ì, Í, Î, Ï, Ò, Ó, Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, - 18, 11, 11, 11, 11, 19, 19, 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, - //ü, Ñ, ñ, ¿, i, BLANKS - 15, 22, 18, 21, 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - // ??, ?? - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16 + //SPC,!, $, %, &, ', [, ], +, , -, ., + 12, 9, 22, 17, 19, 19, 25, 4, 33, 33, 25, 35, 11, 10, 6, 33, + //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ??, + 18, 10, 17, 17, 17, 17, 17, 15, 12, 16, 5, 30, 30, 30, 30, 30, + // A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, + 12, 16, 19, 16, 19, 18, 18, 17, 22, 11, 17, 18, 18, 30, 22, 19, + #ifdef FIX_BUGS + //P, Q, R, S, T, U, V, W, X, Y, Z, ??, ??, ??, ¡, \, + 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 10, 19, + #else + 22, 19, 19, 20, 18, 19, 19, 29, 19, 18, 19, 19, 33, 33, 19, 19, + #endif + //??,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, + 12, 14, 11, 11, 16, 11, 12, 14, 14, 10, 13, 12, 10, 19, 18, 12, + //p, q, r, s, t, u, v, w, x, y, z, ??, ??, ??, ??, ??, + 16, 13, 13, 11, 12, 15, 12, 15, 13, 12, 12, 37, 33, 37, 35, 37, + //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, + 16, 16, 16, 16, 33, 17, 18, 18, 18, 18, 11, 11, 11, 11, 19, 19, + //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, + 19, 19, 19, 19, 19, 19, 15, 14, 14, 14, 14, 20, 14, 11, 11, 11, + #ifdef FIX_BUGS + //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, + 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 22, 18, 21, + #else + 11, 10, 10, 10, 10, 12, 12, 12, 12, 15, 15, 15, 15, 24, 18, 21, + #endif + //i,BLANKS + 10, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + //??,?? + 19, 16 }, { //FONT1 EFIGS - //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?, TM, A, B, C, D, E, F, G, - 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, 20, 22, 22, 21, 22, 18, 18, 22, - //H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, ¡, °, (C), a, b, c, d, e, f, g, h, i, j, k, l, m, n, - 22, 9, 14, 21, 18, 27, 21, 24, 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19, 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, - //o, p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2, À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, Ô, Ö, Ù, Ú, Û, Ü, - 17, 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, 23, 23, 24, 24, 24, 24, - //ß, à, á, â, ä, æ, ç, è, é, ê, ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, 02, 12, 22, 32, 42, 52, 62, 72, 82, 92, :2, A2, - 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19, 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, - //B2,C2,D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2, V2, W2, X2, Y2, Z2, À2, Á2, Â2, Ä2, Æ2, Ç2, È2, É2, Ê2, Ë2, Ì2, Í2, Î2, Ï2, - 19, 19, 20, 19, 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, 9, 9, 9, - //Ò2,Ó2,Ô2, Ö2, Ù2, Ú2, Û2, Ü2, ß2, Ñ2, ¿2, '2, .2, ??,?? - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9, 10, 20 + //Characters with a '2' refer to the Pricedown font. + //Characters that are referred as '*I' are characters that contain icons for PS2/XBOX, but contain regular characters on PC + //in order to display them properly in the Keyboard controls menu. + //!2,!, *I,(R), $, %, &, ', [, ], *I, +, , -, ., *I, + 15, 7, 31, 25, 20, 23, 21, 7, 11, 10, 26, 14, 6, 12, 6, 26, + //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, *I, *I, *I, *I, ?, + 20, 7, 20, 20, 21, 20, 20, 19, 21, 20, 8, 30, 24, 30, 24, 19, + //TM,A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, + 20, 22, 22, 21, 22, 18, 18, 22, 22, 9, 14, 21, 18, 27, 21, 24, + #ifdef FIX_BUGS + //P, Q, R, S, T, U, V, W, X, Y, Z, *I, \, *I, ¡, °, + 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 7, 19, + #else + 22, 22, 23, 20, 19, 23, 22, 31, 23, 23, 21, 25, 13, 30, 10, 19, + #endif + //(C),a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, + 10, 17, 17, 16, 17, 17, 11, 17, 17, 7, 7, 18, 7, 25, 17, 17, + //p, q, r, s, t, u, v, w, x, y, z, *I, *I, $2, (2, )2, + 17, 17, 11, 17, 11, 17, 18, 25, 19, 18, 17, 28, 26, 20, 15, 15, + //À, Á, Â, Ä, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ò, Ó, + 20, 20, 20, 20, 29, 22, 19, 19, 19, 19, 9, 9, 9, 9, 23, 23, + //Ô, Ö, Ù, Ú, Û, Ü, ß, à, á, â, ä, æ, ç, è, é, ê, + 23, 23, 24, 24, 24, 24, 20, 19, 17, 17, 17, 30, 16, 17, 17, 17, + #ifdef FIX_BUGS + //ë, ì, í, î, ï, ò, ó, ô, ö, ù, ú, û, ü, Ñ, ñ, ¿, + 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 21, 17, 19, + #else + 17, 11, 11, 15, 12, 17, 17, 17, 17, 17, 17, 17, 17, 19, 20, 20, + #endif + //02,12,22, 32, 42, 52, 62, 72, 82, 92, :2, A2, B2, C2, D2, E2, + 20, 18, 19, 19, 21, 19, 19, 19, 19, 19, 16, 19, 19, 19, 20, 19, + //F2,G2,H2, I2, J2, K2, L2, M2, N2, O2, P2, Q2, R2, S2, T2, U2, + 16, 19, 19, 9, 19, 20, 14, 29, 19, 19, 19, 19, 19, 19, 21, 19, + //V2,W2,X2, Y2, Z2, À2, Á2, Â2, Ä2, Æ2, Ç2, È2, É2, Ê2, Ë2, Ì2, + 20, 32, 20, 19, 19, 19, 19, 19, 19, 29, 19, 19, 19, 19, 19, 9, + #ifdef FIX_BUGS + //Í2,Î2,Ï2, Ò2, Ó2, Ô2, Ö2, Ù2, Ú2, Û2, Ü2, ß2, Ñ2, ¿2, '2, .2, + 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 10, 9, + #else + 9, 9, 9, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 10, 9, + #endif + //??,?? + 10, 20 } #ifdef MORE_LANGUAGES From e5d51604922c913ba1077ce2b3bc131f3365cc14 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 13 Feb 2021 17:09:12 +0100 Subject: [PATCH 095/113] glfw window icon --- src/skel/glfw/glfw.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index db9d101a..ce8da817 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -52,6 +52,11 @@ long _dwOperatingSystemVersion; #define MAX_SUBSYSTEMS (16) +#ifdef _WIN32 +#define GLFW_EXPOSE_NATIVE_WIN32 +#include +#endif + rw::EngineOpenParams openParams; static RwBool ForegroundApp = TRUE; @@ -1592,6 +1597,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()); From 44511e28a8cafa16415f918f29ceaed39ad9504b Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 13 Feb 2021 17:16:53 +0100 Subject: [PATCH 096/113] more readme fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7424f740..5e7661ab 100644 --- a/README.md +++ b/README.md @@ -158,13 +158,13 @@ Due to everyone staying home during the start of the Corona pandemic everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then). -After the initial excitement and fixing and polishing the code more +After the initial excitement and fixing and polishing the code further, reVC was started in early May 2020 by starting from re3 code, not by starting from scratch replacing functions with a dll. After a few months of mostly steady progress we considered reVC finished in December. -Since then we have started LCS, which is currently work in progress. +Since then we have started reLCS, which is currently work in progress. ## License From 83fdad7e0d335a7d232fffe8c4d5d533b44787db Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 13 Feb 2021 20:07:42 +0200 Subject: [PATCH 097/113] Update invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e7661ab..8e8b2ea5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami) - + ## Intro From f5fdb91a43e4624c04fe43c7575a5929ac5fae0d Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sun, 14 Feb 2021 01:01:33 +0300 Subject: [PATCH 098/113] reVC logo --- README.md | 2 + logo.png | Bin 0 -> 58630 bytes logo.svg | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 164 insertions(+) create mode 100644 logo.png create mode 100644 logo.svg diff --git a/README.md b/README.md index 8e8b2ea5..48075e73 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +reVC logo + [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmiami&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=miami) diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5a192d06fd279f4d8cb61baea670bbab4e2b00 GIT binary patch literal 58630 zcmeFZWmHw&7caa40fW$omQrcymPRQl5s+?4Noi>?07(hy5)hC&gmi;+OCBld?l|N* z?>apH|Gn>*`{90h$GGpfXAC{E*?X{Q$mhy?w6Z3_%2K=sy^p4tZwaB87{Lwu`!hg^Rn1lR4z>?#}VX-p1L~ z|dH~5wKYjHsWoyPg!N4_DVh>T{&X|ZNpCGx$a8xYK@>})k(;KC1 zTYp@OHbe62Zr*MwEv}Wg=jyIHQ30#XE4hpJfQ^|tJ4BNC-m{zZKaa$n2X`ZxBiVg+ zQfi!yV5=1P&I4!ObLXPd(-)1o^gycr`}zO52KeMuUHt=2ly+lFQ^Ol0HBzz2z0DKN z%@f<@)rglfdD;&OFM~Yfv!Y~+l+IUk))GeY;#Js{(`IWCAKSkM=BTOoEM;=1(uM5H z=-6tKUYV-1b}-1R<{0LXUtCB;vc>GsvxK;i$;fIZCZ7Ce4y|G7Ez`_yit1B|)-9`7 zjSY>?eojhe?&GVv>y@KzC|W-Jp*M}g*U8DR;s*wKexLzHNgg7z=;AyyQDYU-l}cn| ziOyAz8_e$7%6`Y#JtCtc{wI$lGP_Vrtss7+^CWH0WlTp$#N5GQ8%|a2YKaQDWv)8) zjji{VOqp`j>vH-<%I?!g%Q^BLOcbh)`c{EL@@J#FMuVD-IV6cQRhR4s57dmt}<^QI`=h+M~p76Yh0ko$7A)$7|YDgULnWU6S` zNW6(TR7^eAi^TkdIdm)SG>&GxHH=<8W?Cz*rb=^k$DpzhHPGMqcHw>g2aF-A+mJs# zuSmBYOUP8n(nR=jyQ^5bi0_NBZ-H4t4P-knZAJ-ILax*V3=@cnV#0n1li~4((-Y?O zZOimbsV(JjADcIEc&Zp0x^h7RDVUJ4F@MO?PFWYfc~&)}Pdkd`#`s|UY^WQ{g^e5; z3n8Z(jcU$h<%ZHwM30$#v|dPNb&is6#eT}UYr9sYo~A1YG@gnHWz?LjFLjjleK+q> z^b$YL7YQXc2NGp=dNH{>jK-7YcCkhuOw!lAO1*VjK*~^)&(^CLvrv|%(zG$3kA+d< zMhrn8Y-FSFgv##6aHk6)&)qn&dS(miNcl(`3vFYWzIPQY#`;>xAaa=f)c6jvO4G&n zk@;;;BzoG{$ELfJQ^iH)IxbSKy4vH_$gsU7KNP#4NJ&^ zoH^ax?CA)TsJ3fDi`vP__=@0(pH9z#oxI1h=bQYn-LdTu*O0 zS&?=e$rWpUm~1kIh*Q>R$Rin5v&G`CsC<{v4GOW>uiCpc*CQUa6NWUNBRVg89aS`_ zar`C5+_0Ou=Y+%r`>P$e=rE+Zs#Q&S8og`v^T{>#+wEAThdnsB?zO1SBz8{7x{0sp2Lga6F!>t_k^&N5_eDpTG494TlM z)xx)0*v(l?vK$ms&m&*NV#B8M<%h~(7nVwY*OiJy+(mj?)Vi~!Wk-E(+0ViL-iPub z#PHWHDvU?AQK^D6=LnePlzHU-lzD44yBcTG0n9R5R4w~-BgFG6Ir)S}ut_HrDzN}z z;rfcx8t!^2kXSv&(S(8vaZXytySRptcbUgAEk{!RNafv8XPV~!@&Q-sYzO8(F!#E* zNm<96S;p|mm-2LjvIkARTgYjC8{Hkx*Sb3?{Opna&N-rgvbo4^e5wH4T1rkJ`tqmdxM!#L`RPN%Bh54yUms+e zfy47ed3ZA+(kC1_eK|R*e>P-SJLh4}QH}T`T0Ys(l0h;Ss!Nbq z;y(LxcUZ`AP-^^w@rOB2`SbnK(sW_uh0N{TD~K-u0No?H4Qe5K1lck>kx^Xy&gJ{# zTDYd_ilBLvyZz-4t*hEw_fYuwJ<>MSMc79opE8(`kX{)-qt#ehcdmW(j!EzjUm zrB^llUEVz0*6~YR2&LrI|E=e}zQoYqg}`<8VrnW`v$@m?dA(3eBjU5O<-J+id$2vl z*<1fTH0d58`7=iQ3dLEkzxzUG9-M}&a(Hpw(Yige+{dM>uUzAZn%`yvJw8L5wf@3? z@o*MPrE4;3X4CWZN+xR`VJdOBL5U-*1@}S*V~49YnCqm)Wt$pAT=f^uEgQi^BqY*3 z)z5o7B;~LItAU?A&ZRoqsDHE2%ahsof|FK0O3$X^&s66T4Qgs78_S9lgvdjy={#s~?-p2=dJ;J}-p^c43UKYd~A zV^^Ug)W-37vMi#}X*{q{Vs|UlD4oYhk;lz0GEv;!Z2;M{d-|8~QiI5|vJ1}X;cQqn zIKSz#8}sN)$5dw9;5x|?En?u=0O3hXdUK|hj0}+x_1^JU6U!y=@Uqi7$8_=e_|00w zYc2WEp^Df-+>5rk6*bvYKM!E0xtu>BQ8kNWyjjr!d?ZKPkB-Q*=5uUCt@| zBM}Y-vSLG$cWRc9$p@LR28q=f9-(ljq8BjQD4w}gukm)v;{JiblNYm%Yqt7EIo{oW zwj{jfQ|ixh(|e~lPbWl6|H3PTZu}JrFY80>*7M+|AtGzm8aF3SN_H~Yke0LAp@SUi z1a;*)7)fs?8?0(?KvraOJJk-z?NjwKkmPJC{1Q{(hd;D@+%%@he77>$&o|pEa7BSb!z-{Sm=Pt*?3o?D4&2-MWJUATE1K15x6xIXCawIb3h52)EFSYlx89|cy$0UH(M%68uxgepd);N?EQ`%m zmzuvDI+_`G(vIt>j*I*T94sa3a}2zCkjOhdgsBqNv)SDa&kq8|wx^kUQ(W7t4(3@_ zi?*vAA*_WC3dG9yx%1rV!=`I z(pXkPAcjmVTFTlzW+FWghjg*|i|E$Vb9YPYV&eS0S(mHuqCw=wR` zp!n=BX^3*CkhSq^`i%2-k{hMoNj#aS=!0ejw1Vv4%pF`VF2S;!YzrOdSZQk6CF(cx zpFYPfF}ZJ^h`8JpLg#3kKdzAxjg2sTSw{bFFEF4X9CYM+FHT4pZHtG-arWcp7M}d@ zhopK!Wc_B(M+R3Lb7>5&B4i8!26j78rM!Zq;(@CxdmrTQTAokC3#O5u3mW4)SH$>( zKSKi3t;>oB9fuNiE4gX0%S~caA|4kl^4MH_uCJ&w47M6Cb|}O=UB%buT~ml?Ob4~fCY57lDpmoPZ5xI8+hMTOc`4R}A8t9Mnv{t;MQYTB7& z2+K8uS#C{!jVE+>bu}N&Qzc=_GKe)#tZ`mtl#gTAi)#-hW0EK3&`%&?oz6atRQ5XA zuiv&b>Qb58+aC?p@NF7X-{fr4Iyq_lxwdU^$gc{ueZe&T;=QRi*YhxlO3f9|N{>~u zuxms`;%a(u3to;|8YC1udP(EG*V323O&8v==VSD)U8-vNy;pI+4MO~~W{!P#x0fZ} z+qG!t-cXOQh)8)Gfr#0JfqOqk-B$GeVyETh=|0^1us{9ckk)tO*mKO$B%G8@`%7+` z=VKMIkZF(A)SCSc%EK$}RE@AkN7j8yJ<#&{Mc&x=-0=ah(NPbOMpBFA)TO+uYt^ z6ugY49bw%sM7Dqaxk~drUq=h*@ize133Y{7t(>y&?H8Q8oQ7k!b+5wC90}&;&xBkq z8nkLuq7KUMNVpAu%98L}$cKH#B+scQ!aSujFfh2DYf${+vU}IEKj~|-eJzXN>^oEY z+Vz}ipedb7TOAn|!M>Q#mFrm1ij-g=6zAnNszq9A$o+W$?teodwDbinw$SO{59KK2 zg(WbLM(6v7i-eYy=<9=5#caJwslvxK6Xlfl)eoDlwjI>t%sSwVX5|X7RZ_ZsU zhf%;A@@G1ZCqn#`58|GN;c(FtYv7Vwg?e)Ssf9Hq)Z}k>daoW$^DQ>EgvHX=AkQ}q zFrl`th4xVAF%2#AgQf18waic+FE<;Xs8`utG7jfv;ui(9ng>bM-`xJZ$xV6NdP@j- zy6C(VC6`lPUcT{s=pfDepj+SfY&lWX!zo88FxXz$bqKRJpj0B0wD)^ zj_IQN8!bIIxQLk{oX?n0Agr;mQQvF3qGqr4&fy2z%MA14s_mVvo&^%cf{4=b6QI@l zWp;<|&rE3vGj3Bw8&9|j+4ZZr;*ESgd{4^Lm*3yvu!!8g)1*At6WW<1$t{o<|~n8A;Clh$+=Y zt+;w2Pnjg-uvM!xm8z~mx1qT8?D87q0ZSsd{auQ`)tjI_U2NX`atjR z#^r+9Z_JDX4qH_lA~=|MQUJU#_?(uyR>ez@=Mzl>dUNNR?y*LMdJYY)jeDOs%~tvn z2T2~waBscP{SY@aG7>}R{TJ)n_13?~uT(Ea6bS#;O+49JJUhTAEA-7RyL9pBiH-UY zb2Gye49*DmLtP!F?s_vJrkzz@2(Q!A8c(z)aGN@vujg8BjQ$YX{yD9NG2@Ip zTV2gbw(kiwx?IR##FM9!4eP3#yV_Ao7GO`mm|mT3rwy$BKp@QAbh*sw+)kopw(#q- zMyJmA?>@bUKa7yZ_+DRWS-oI8_hTg?5_OO|qOk}?xwMRYTz&UG&}Qf6=59QZ>QI%V z{)$WM&1Hl-pD2f0Bx_LPYU84qF!)Ta5M0O7-E`NaQdy3IC4KSH_Oz@C$4eB-F>Ncy~$vPL!{q^ z&3ndp86z*m-2ftC33&wI(AvIwKCto}=Mvb=vbb)i78ry^Lk)lXssXoOHmpZcbVx+c|;hR=-FQ z{18@9AKg6mK1`nL`;nWb>q>0=Wvl*hpk^h>Ch%3w*)k=k_V$TxmN(*o3`X8Z@Obdr z`g*r{yg?jU!@euS40L&;T;$gD4VKh+gvBZ4gIu z_nvL@L_zTp5%aAFvY6zrfTKM$1IU)hW3F&A>$RJog%_O3d=T#7O^1%cF;)MNFiJrV zbcDOjxK89}0TQs}<*r{^Yaly8$%=FF;d$vx_Fw zMZPISaxKf*ay&XuX~=aWcIqF2`d-5x_O)Vy@HLhH)9-*KzOS6~y|`Rrl8^_c7*ide zvN1eNIyyPgq{bqDs&lcAK;{^wfj2N8!N|lJ~>!<|JQTqgDeKb zB~9)4>)zREr-Y$v*l`)asO99jON)@qJmK41AE|tfhJ_CMcncz;P>qK@V|K-eF=3QN zNg0I4h+ctP2ZiO*UK=4yxI_5I#OB$4q+g1%06ZJ$^Df_;-`P|k?|rqXUidb};|E^= zHvQ!T*bzvRTpzFI_dP(`(U8-z$xU(UDe*~pSTZjxEPSx-;3q;S7g5O8R)!=wJG&AD zq4R<4$Z+Uf@HNIMFIxTfRWokAa^eS3`KEvkKxmSHwz)6O#+ z0u%ScBTR8v?=%|&0{GLPci;)#lzpAu829)ZZ~B>1M;L{=D_#b+_fZyY(UI$RJmFm8 zr{4HN&mf*o0>k_ME#Dx>3L{H4{Qf_J1G=fJV!Iw5BgwO`z%w#o_xT^kFe>NUUM*kw zoGrJx10mz%8yaR=vD!k&`29)uBi!rhrtGQ=#<(?sBIJLJT~=TgHdKL}m&j%E%zV@6 zY-qb+O4QdEbq7IN$Oe6A5dn`4!{LeQFND5tko%2Ai0mXx)UWVsbV9mHz{KLGErgnt zNMJ|TW06=P+qcmW9s#-%^q8od<)=@-xz~tj;H0LeMn5nlGP@t);_j|hcG7pIvf5&4 zQS9WUx-|4O3~R^*=#ca`!0yEekzz1Yre?wNG0e|rjN6}--=Z&}enSHWR+elrUDab} zetVD)JCFp-6Y9}MIs4M}qlDwAs+@VUUF8p9oT1j)(+)w+%9DQH9fSUHr-GV>_$@vw z6DUau@Y&afXFXauXuu>NbX@f_mZJ9BDushMd#vN-Y6;QHpHp5CzWB#~1)%KDgyQ1j z`W;tTfv{|Jc3s_6Kgu6}e0Vr2=7sQ&=n7iTmHj@QGUKmPp|OLMzn(zKAOx(Qc2YSj zjopi;52E#b_pd#T$=|iJ8me~Jn)iT8h^_#h1$qi?fq*7sQ~RFIYsfv1rgBSQGQ+@H z9Fihb2H|10?Uk0&SlfRaGM)tY{>)&nn&zq7DpMTeCWe~*;qMm1%Mr6)K$8sxoRC|} z@nF0IpSBK^1pIg?GatD(1B?bzM9FWw<~_ABxH6)s5n>j&-|)J#r3Z6J39W4nSBw(C zh;r-d>aOq7z}VYM(J7cQ6i~p1xY$5O&>aPQd}@3Xt4&1%#;U@e6c4)CMNVFDW_R*> zKBymb%dAuZ;ZxUx5#mXR>{OdtSG4$f>E`qu)u8Potr-&+v(*YqB79Ar;gQ zYEUZ^4N^#>7$46_g9HLC>5`3b^BGVoxA&6A^}SDt4WT;3YTwE~viml_Ui zxBt7C$;ndFDQg4cQ%YV7C5Fx76Fh&jn3f)lf3-0_Gc%*PiP<(MOKJD2yY?`S!*FJ0 zhsT^7tyLMI)z*B^tU?G%`kp^g0s8lvRW)5K@e$-8O!_mgWou9^Mvq>wacr*RH)mZX zA!hvv6SDF^D`4dx$hi6k`ZsgdgHTu3&Y!NQA(%sa=-+9MQ7!{NQy9k%YyyS1M%m7N z4vgnw_?8gFu7UwI3$xxvv|=Wi<~24Fvsz2>k~a$jmw+Hi%K!WIzpsL|JYfh=E?kz* z9b}^n*c6BpG>Wo>ydIjs39ORMiUN2o;^X7;zam{&_8$lv)g=2(4{mHosl^2O_ti0r@JQ4m1}`BgHhk zYa=C)?=%awRlEN{T+<-NASeU>|FEx#omZj%Jqz%EnCSlz*X0#8AS>syCzVyp0C9`V zwmlmRyKDcoh(CW4V2F$_QnX$1AY-iR8&F^(sL!>iG0+4j1p`tZ0!{-89>1XpYVOz4 z5ke~oPmRdX0}?|+Hvosb=3Lysv}ud~pe<~Lg+7k)zy9(kt@J)S08Ro8Jp#;`-L^ZL zK|>CBh76EbcM?>Q1rZ?LL(!R_1p5x@Ds4 z_wgLN2ky9cjlZwkLoNZSED{E%K(24i+yT(eW>EWcgB%Qc6P-$H&sLJJ=edKXCV4FC zIseXsMz^PmactchS_T?GC6I0~I&&!}@-T#waTZ?>DGg?SKOnMOf4zv;=tWq7%IO6P z7cx#|0gv=CiSK`oHP^X*J`CLpMfVvQVeo z3Bn=WacMwRF2X)FH!+Z2UjrA#PO)W=;|>jpWdQ7Bj_=>lz{pJ zzW}MwlXZdWYWb%hsFPmFjbT9A>*#`xB{wA+gnY#YxD!um0D|%+f4&(x7_VyN52A7k zCPYCHUpOxWJ$716bziw-boy*S0(E(WKxk3p0@eu{Y+S(>gK4R>sMF4~9rvbWkVLaK zo&aUs112FlK0dxKwa_&Ju*cFw6Ves5!p2I0Nv`YSgFfEDr50S;zR@4*&Y&Z+9H(dB zP3=A%#h@7XiW(n+!0NC}&X3m7EeYpAF@zbgO3m@O-r-tSq$c$p;G$rm72maEc(~*j%E zc51F$SC^|2O=yi>Hwqpu`C}1uflgD3x{BDpR=H;9IRyo*t7%^LjljKf(ft+l14JM+ z9&RW*c&c+W9Q_6ztek5zf?)N3xRsX`(X-SY!wVV@*Z#BsG$}P5B}bEpUdoTLdNVAj z1X-Va!wQ2b-P>tE^so<9N&osC`@&ZF;J{N{YQW2Z@5h1_$+)<I}N(N>pHU58g_jgKv|N19XaS= z&DgG-;(!5?`9Ck^O*EcVT!Y9bG>D9{8lClk>hyY)N9eh%fh~J|FSh@k3vH55)bIWV z{J(JLy1>5y9=`sia>|p^jhkRHG+12It^bKH&MT<$04`+!=X9L1Emyw&Jq8+o z1U-+|u8{!~J##T&oYx~kXxITf8!8dFzMhqp_228@;!hBj|Ld=+h(N}*&COo2rqlMP zMpfnIybd0{de`aNh!VK;A2b$&G%mCl#tW!DNXciTx#Aii?Ly5%%jm>R%C7s$6)eyA zCIFxRJvxOZ5fInW3}_so`>|u(R#>2I;tm!Z2+$WQkpTRvr=aG>+asg{7%k ze(Fb!W^cw411bO*00}j~Nfy%LcP%DY6$>AA4_bNP?lL{f>Wnhc#4;iD=9)-3Rbp0@ zK0Qkh*j1{24R*);Vlt~4SRB~mCpgy6ruUumFN|&!Mu5Bo{dt~Pmf$|V6i-~S;IM*- zhsm?+i6b8R&E&c=!a2=rjH3ORg(-Vim1|EAh}%(Y1?)9ehqEzc1ZHl=ZNPH@J&J8; zsK5@tG8Ag!uBl=^XpP-OMET*%(hEH__h{`x7Goa{Hl9k9W$qevB71Gp-*migt_4v6 zwwN^03pr}qV?Vq&EX|&FU9P$M@LEY{<;caQ-eD)ZdzIvPV9;UOYpeW2rSKk^DB9ry zf7DnSR3E-ag3fS^0~5R=liV~UmR25h;I)$KI$TO(4lRJFHVziq$jeeA{($((FqS0Z zZg1akJf3g*v%ajVN&trXw96Ll+!ITwk-CbgR8mz+6kK0`MWjycM=ca|vKI*7{YeQX zrklwN)sL^I-{e*!%CvQK`Cy#Z~^zQWr>`n{zjbqSAGZYsv&0Y-eIVL4&)g zmw}}XOiD#y1fuxsMRGSGR_pkM&mH=PF85HKhA&UztNPPjhUc`XZ~OrbVX&kC4@*Pu zm+(111GOD}*SLyNgPhZq>2eNVm9eK82G?3{M?dn-oL!3nUbw-wna3P*c`;qigt7y7 zP+#Bisb6ffHMN(RjJP{5zq~NlQ+4IyaG-JRs|IesJji5dO!3`a+Luvn;_F_~u!M7& zTk4QX=y0ts&=tJEY)eFoqWcovdNudskT0_t)4_Qb6=qFO23A!sH>P7;jSfV~JGw(7 z?rv(0c^gz%wzgTSz70w`uc&VX(xI*MGeIbZaaS+rNzn#X|I1jR1$d;v=}Erx^^pUB zG-_bKRaNoKNFJ`^8fWo_eznnVp%j;XJx}-!9ut~{Sv|aSPU_3t?W?hBm2>Ynf*a;D zYci+k^eWm>V>MtN&?vBu*H3q`ljCIu3WYn3pS%uQ-FECN#!X3H3YT|#vCs&W1OT`K z)TBqYlPSh&G2a<4@R1C1Uk3JvuA4$$JYgw=J}X}tyQrU^AKZpXdSqCplGU_7(4q^g zgeQzv-A~q4apx(cTer#9|H*b$zLJaDuaP&(TBks7izE(}w+oD{4*2S6itp@A$@?an zxs8wonSjI!M9UbSL!qKGXZ!d=cJ5K^XHt&{IZlmsxWb&8oOF!Ncapy@3o0q13eS{# z)mcO8P3GcPjC_x?hUFt(lo>=9MPEMYF3e%aYl~F`qZtP$gV0=zUP#Dcf62WG;_mF#=r%xNZdLI4tk;`ecQ&B&#tJ}8_ za_aO!S+#FPFU`mslBwMEcLhunq+VNJ)FpxuUPn;ix(CCL#O*nD zf7w4muhb1&GRka%J_vtp;hOmaVvvW3N2$?gC2@N#^&%98g{lQd+2V`IhdgXNa3rH` zW4;RBpc2f$FeXP!BiX)^>aqV+-f%7qer(tI{m^5I&-BRpcrZmIkGG zcPu5#GgdU~k^IyXD`PFh)cRaV=+GO60!?+`Mqxc#3=T6Q3IQ}M* z=+Gxgl2~78Qg(XFYvI0AuDmg&@s`oskB)W6A-Yu*%tu6gp9vSrU zjK?hE6S4Eu6=B}+G-ZkgM%Eo)(dGBwv4juD6A24@cj%&RsijG%jy(wnhZeK=kXx_rvjG0mwZBF9qc-`&f`o0;MJjL zS)LH(`#XVT+H^hli?&TM>&1w`WbZfN#(<3RPeiR?1y1c@$?5|3itLE&S&#tBjz=~{ zU}*;_JU?4C#y5AZz>kQJNlem%`USe53d$Ho{qDrY~pN?F?B6pN%z_RY@Qe|Kxf%WqnBg4 z+7CP{JkG$^p@-xOOB_+V?!GEmK3<@0MNe@m`ERLS;#;ZEv#7punyr1NdN@SU>)f72 z$k1*#n9Ba;oLb0p$}&3J8!;iW8ox{y&FC#<1pB_3(17E+qq~;Q&BW>}QqEG2T3iX8 zKn(G)D*i{iTyJIR;jAnO&mG$UzBCcNzrBRwf38lL(%?lbcbcq%Mg?Z_D6+I*N^yq1 zyFHOpShnDlM$J}$5o~w)~3T?|WVJzixjb;eq8M-7MuL{j0OZZm=zxfgRA%l4YYe2z${IUP%%7i zz`r_?kWW)6GaMxRI1d^Q;P|T=zzlm`XPU@(-Kb)%t(g?K&5(qRujaH+7E8IG$i@8S zUU7kdi;`b7T%KlTPnyg7dN%plgJ0!vFIDH_DB9AwlOJ~6l`Q2GX7FVMqjGKbd>?CL z#Y1-_>cb~_3;M*m`On6u*MUnEwzD}1_H8p+%0r{5DbAv2l6kz8(Yd|xjS9c{2?Js- z)=1oYLNd(hT;h@h9l2KTM=V4W+2aJ)Oa0__l3pKm0do~0W#f*+#zbzEz5JhJP|V@wpsG3aF}4v&RbIL=Tw4!uxLY+&ql@TCv8Bn1-*`ufPzcv?vA z#FsqjZfHVbAVKQ~bU-F^Y0?sl84c(p4wk(bsYygn9J)i;F2=Bw6UE%uTfO&d)A2^D z*X4`l54I%nKmNHU^vt$VGOQw>zgq=l*h4+~ey#Z{Ji6x243;(_fXWxNd@}YDCZkjLK zT;q0GztG-dh0EvPyDx&naC>X=rSKHVV|GqjL2s@}nC zTP<0tT19kJ98A$Do1R?e^dWb)<5$y|atZrNltEGSTgxFe%kXeMwmoQMB3^%gjY!^6 zFJwBV%+X<^hJC`;&&V@$MZXtfzfL8TYg=+OD(*4GQM??wXB2i27OtW*zQ0+<0H!)G&T7 z`qo~EouRIO?DL#0szBU?l=X`bK9|=mV`S@g|4m7K!hlT->^;l`_2H0k63Yj%uWxQY zAg1~#v~`md-)1D2JQEp?4?O~(Oi0Ok^Vft8hhn!tcyOS(Q*^AYU&_>g_k}MX*QgLLpqWon=|ko;4z%|KS*i>Dd3uw$CG2%EX+}Wse+RwH zIl_D;A2cup>&J-wJ9sscB>eY}9wS5Dr4v4~3?=2$+WN@*!RXKVn$boQcdpLBhNI%i&4k~J*=84u`bK!~ zmP9Xo%@!5kzH@oPrmE^c%J#s4;;snWUOlUfL8-2!tAS5NbLQx4=G$_FYE7Lu&^_=` zrPcn_Y-&!n{4x2}WL!ji%yv*!*{z)zrw)o8nD8fr%FZ~GZP!a<1sX2L9B~gZ_hsvV z@UQ*Mg-|lIa_2uHDY%_O7 zC?fKOWJd%JM!>}c?EMg(K0gMe%U*YYjY z^7vNhXWX2A+zzEtCKUoAe>_PusOR|QyiK8PVSQL@$fKLf4_+1B#B2|KN%)BK`^aC< zH+PNyBYC{9FY=#EQ9~AZW&2{rB)eK!-SSCm&3bI?+Kb3LDz-k#>0IU59ENAfhTQL4|HjqDLmFagQ0M zXjcdRvFdlCd4@t1SG^q5&sCW$p*J3XG>74j6-1#0%s+f1V1cucl*=aFc$hh;qKBresi?~IF>C7p1-Booqy-4x|?NyIRd3bvKRcm=&|tk#trCU_=wufCY5 z+Wu!s%wrb%QVdD7u|}~h9`02amipymdOfX7v6ZNgPns8Zd#Z3!y5an8@s!l3^-&;5h8@V9o(Dp_F5p!#^~awnj>j`oa#Up8K`5G?N7%XQQDBhzZeuF>gLl7ZR6jf?! zN7ysM^2u7CD-p7dd#fkUYbx#L$(iSI!paY=-;$=q{W{Z@Rnt9hvl0sh$$okDuhgzCF60K7_wZkCZ*K?c z3;w=8zP$-N?0HS`eIkO*J{J}^vic($3 zn9VntAJM*qIQ1E8C6SW)Uhm?;*2TU-#q*C2-l?f_9%`KiXSUB znR*SeOWuIkV;{um%a7gK33ek(nNrL)n{ek_Tu=2IVd}HMb+UlUNwMO(}z0Z`xk3L3G~!nuW3kd z4^QWvTCd*Pi(}8fRqRHNjZX|OjGBB;$b{&AdkdmIcL%Jha)m*^j_+0@563W_A5WE( zF7SO+yF9bTNFbn-&>1MZzd?!yjZvFvOiAf7@-c{f!Sas(4l#D+`;@N%vng^ z&$mMHHjdfUqfPF=>3bs5*(u|n&5loK|Bi-6IjDS|c&utw0)Q_yE%mV>GQ{|th`ILS+8YpZ0m-M;dvpe zGYodqJqAXb)zz37yrjCBCSQ3zPcO+MH{Q^HaB<(~fLWSZsKRxE-;@b4-s)4Cnd{g* z&(6-i0rnBOYVjW3Hx9FgvT=W4WXQrz`g?EoR5bRv{uTZCN0SB4Nu?hY<0_oWdN=;2 zk`ZJ^Uas)|nJlrtkUv1u{i~3TgUpgls+S=(x_>t&p$CsL#kn`6gzw?&+u7OW{rGX~ z+|{%-@WCINd$Bg~ICH7e8-6LNZ>#60on#f<%Co4O;El5BTm}7ATYlrO=M2Xy>07y>YmT-mk;c!qM)$U7s;5}(wo=u+QRnj2`V|-)HpGL zIM&7|(Rq_1m>@oOE4LCwf=|tU{*i$Zt2_>(8#(T#JNVoYuXSfqjD}eAm3O1AWZTn( zmme>GItOY#rnq)ICR_q4uG$+w9VgpUmR+v75#;QsN4JeRyKsol;?H@CN~w#lR==C2 zJLGpbr+a6sXuqT9@(|#%YZUj8p5a|g*SeDj-SBS>5r*V2w%Uqg<#7LKKO0-a3=U@I zOBMC_r=p@lHvXwJRu>o_zhbd_{NQ0fh%ks?8`<*9D+(ar6Q~kjImZ*N*IYz)UHs!0VVe_u$>v&F7r5*ol z^_PW}RZ8a5i`*{6vuDyjkM8+b)+^;n;gef3-ALIC&6c)#_ILFY=LV4l4_0R;FQ^Fq z{eJ}od-cwL;Sa!y(Ru_b1>ivI*g;&~5g`orRW)@OBk>zZ?=^v91u7+`=HZJWx z)&IGK^YeVZT0EV9Jxav;l0F^C*Gd0&f`_;eg;I;6 zcG8JpR_~Y3Xx-iJvVk>NxZIK^Ua+>YDK%-skt+6CJk@^#&zV;(QBsbIo1>nH_$OF1 zD0XXZ*OO?>PWk*Jz9J@o<7nQaZn}*+p6V3DeS?p-*P$w@2{Xi3rhFT;^pEP@hVzYr zw{@;hL7$l)!0IzcoDK|Y1rY_m%la1s+fouAus4Ye z9Jk-KhsAEm2{weisN%hL86JQ5nPmO66!~Y*zZ2SVJj?_F*Hi=(y*Wz(ve2iz54eO2 zT~TyTn~G)l=R5X2oLZG1Z(+lo%C7b_`CEJz-p6jKaHO;(GgWR9k>0~r8o*-gA7_fp z+a>t+19V3~~_>i2O5(j^>#S%}~JUTqptI?bdHTnKMj6vWzsw3g?15AZPt zsPp`_Wa}OeMnKRVBmZkAnFwzz^@~ysSiN^_fXlbbt{t_=Q~SmEnvY_xxYg}X%^}Cv zc!HUK5tETEf`j4!MuPs(?bCV)%6DtFvX!utvjbX&_~V^y$8YqoAE&_{ULe(@^P$$SH)D>D<|?h& zV&4kEXAZ31lJ=a5OwK#bm-cgR5?Kgb*k3xwpUXo3P*{o`s3Tvy+-vDTN6mWc;{IQ- z2M@gT(d~Q5f({+vd;$5&yr&Cc3CYu2q;$84%uqneRg!?h4(=ky*q`#~RJ_ zl8;f%eKL|s+y(T(;u?hIh!@NuAMtswDA6#KoeXx@2fr-WOB3s+ykJ5fnZNI}%@pTL zWFa#kXYBP*sa{(r$Eu!%3=Am3aLs=^vM~ET4A^SpI4g6;K7DMzpHmeGwVE)mc?2 zTTo7i_NeIJ0dU0t6M3|;616{F{uB%^Ze>P$epE4sVSVtFLlgBgyjl%cKp*w0?AyWH zG1Nz!NyH>gIw$Nx^ZA%l6++jpRn_d1t)_7DIfSyb6PxfD1A?AZ<7ZNSgxY6QTav0Qp{K~4;x_OLq^`}bNASC4%piJX7Y9q)X_hsIFA_(Gp3>YO9$cEDGH`3%r1!*K3u$_r?!#RFEzZRNU;;dT*Pv~!G z@OkdQzzgr=0;Bftit+D#x1ZaP)999{DOA4ZZL54&2$-s9ZvH$=QB3sJaN^aZ(@rpe zQPTjM70gB0Fo*}0Sf&y_57@8<`E^Yi4Fp^m*K=r}Zwm_N_!Nw{vj6UFFME~oT%%8* zJ}UQ6^8vToK#b+)kNvI=vg2F4$pOPL0P+3%i&Yp^cYWR` zBr%0^WJ+A;>+Co7_8n#By)R$AGIL>(HoL1l@)qnj-xqjDZ)f$WQScCl1->!#cG8I# zU0(iir_q(Fi`~+|MMgvi-Z}r+&VV^W22m`c;j6)od4oMce8$e@;S~nj<>)nhe8fmO z4a1~@2q+A0-@{JqU2ZL^nhlvS^y)9UPh;f7bRE-EW&8ec|5CqH`zKZDU!#5C!+~?# z@1)YXlBv5AG5QQK^B8@2K6@%MBOXeeg$`;LpH}w-?0&EFy?L~O(ACp( zTnra{-JirCIL5{6L4{-xQBkO5VZez?iBc=Oa}ykWyyxqOVEYO)8XI0-@kv4DGFYcl8t{R9sM;f?hz*^;pPNPun-6P zwy*jgJM&Akk8Qr&H@bpPoTY9 z-Zzl(yC%EX;S-zf;7F}MaKOxO-&)q3f}g+Vw;4AEXMCSHE`0pvT9{A`jmSnsMcXCD z;;A3J1Z4gRNacpqvWEukgLl${^hQjivobN?nEKb7HxE@e9|n7>NVd#$4d!vzenAFa zXQWy%9jNoU} ze=2OEVq!j2&3g8(f!-A=%AF`WizwS{YQ^kXI6+MG47+mkerd|*$A;hL1Mr3IVgwQc z3U4*1V9p6ZnHlOYzKvY+W)-Z#(8>9cRFOd)DR>901suKk6cIs?)%!5haI)NzFpf>< zJqfF3Mq}gbniB-k1^!xStWVB1V~rBfUNuwbKIwEV!PHd_jos2BAj`~KsTVgXZS!A0 z4Ctc*h~U|YMdJQ9FzQlr7#p2!y55F|hl7JExL?xJBEZ`qw+VvU)}n*+C_5u*J3~lV zzr@D}^(PBb8Vrz$)~>mI)Z0=k+g9w9Doy-u<}UX{?0>YKn5r6zRTA27ho#@{8^G;r zL5bgc`j<>Qx@>NZ=bZPta+u32C}>05+;OpE9-z=uQ`4+rhI_-gAMb*5UPNeJDy4~1 z*i01j*JiUS-A@bfOaJ*?q4Lc;Vo+gxM~9y;X=XnQ!-cyDGB8OXb-?!2cFX8DGkRT? zWE{C~N59ZsQ->yXL&J!RojOABn!zuyiW0{~*_#i;I6|#n=KuK70?voYDWyEQcXoF6 z4#fKT_TZw!?M8f!DBk43O3_ZiDet0*wyg_Z4j}+ez*^jd^aKlnul)|j`I(c$ zSg2P;;LvbPI_rn>sh+XVQasoUbgW5;d2BgXBjk0Xk7EBiMxWezw-k2e~So#6r zMVl|t>y#H{@#OE&QABI(Vf}en<0IxZSD;T3cD+p~amhvFdul?@$e5Xt0ZkbBi4`}T z=t|4V-Z!98?Gka{p%TB`lLF`Pa3?G6^qx;2`E^+HEXFJDd?B(|Gcgi2d{Id|+rwBL z%Bj#jYvg)+mt=RGiH+xef-r6ZpCZWlvoH4u4n{O74P^7KLG#%Q;QN4{g^v|z(TR#u zjpQh|^(FFh+l;gIr3ewddGkg#{`n}ZqN-|f=$q7Jlb^)N?p$Pp7a}t=vvsZPe9Md1 zLDFLDImkBftc(r{u7MYzFQx+hrf3OL=%!e!2GN&9{3Q;oR(RO=jJlh7a{{%& zFI&+R;nPnL4}hCviMVZ@UQYZ&M8xg9qO`QM^njO_NJmGftEcCgn%Y0aJIddmW)~IV zGcYiuqufunbf`q%-IbA%*?T7{8=o6`x@UE1wsV^Wu8@FTd6tFtFL6z5hcR;&xSvQP zJ}zh4FlctnR_*%rNuxdNg``H~Cx&i(S+ai=uK6=YZcYvkt@j>=`03x!AiYnYK0O2i zP*6|=M@Dv*n6%xcrA3|jIXXImpM&!AgFk-;2OWzvrKQRDjw096--*)vtgOU@z}u_y zZ=Vc}j|T<@;*5@tW_!C-PyQdpo2R#j7bzp-Kcfi-^j+b7n0cJYV2)_Oby z3JEd_ZdKEUPXyDV|Cw2LoZn}Mt^Ge#eRWioO&9M0Bm^k|DQPJ|LApUe5s>snx>LG4 zrCYkYlopVNLn94>ba!{xxpRDd@BQu{uH{65x=Rz ze#@rm(=)25ghM?cBb)g6*f(+tR&pr8b%CpMhen39J%`oC8er8T(Cf`)nPue z?QNEj+TPFdgKHV;1TB$EeDNre6)Ew1kUorIGWD>KDJp@vK$@!s8D_=#FFE~UAUWW+ z-z?W4g?(9d~PD?veZT%?rT}te(r3)tyhMZKeql=)k`H87VTfdP`zX7Ec zqfX^cjN}-5nZD{aNlqvc8V|BJ{28L6uKm{T#$C#}21T!y$_GinvnVFg*-S8P>B4Re zVWw!r)R--{Jk1%e;*5OeCPgVjxpoQ?@yNZ2gN3yR^~U?k(X%+`t3#AOI)h}TM<5IrIaCCf zd735crGDmL!v6Y4Tug$_b`Ue;R6Ju3D=j9R0M*yT&Fmq*xfl-ESQ@cUjL-ktEC_Sy z^WL0<52Nd$l4|gqoTqOI*@piVO&}F~Ozfny+Rf;EFr%lBRdteD;=f^D61&?L?K`RR zA7k~D(m46gbaveRl;btBCq}~kcX^Ik-I)vyybB3Qh_*;eK<4Co4>mam0>FBVBcN^= zkzoPz$%dp)hiHcmajO+d62C{o*ZZ_h5f0wtPn8dpk-R9e<-_(V7&WbWa7BA^0wesh z`q-NMC;`-fKrL41kN-zJg-y^${)G17pTFqph!At_6mr(wr zm(>2yOLCTOnt)!y{Mn3>*wj(;*qea}-yIuSG7c<^FMnC@yTMi5q*|9YM8>In+>!G4 zPvN83sIJ5zd&xKjojF1w;Zr+(DE2mZXqzXU>u&L5@(P^wJaYyD!D zQea*6`9-nj5wi~telJBkG*PUen7^b>)pCMIi(CT`FMWu316dw>1fyil`tQ8msdD$P z|5K=fhmd}ZA&z`mFC$wk>Hoqj6&^4)NEdlk|Ik1W-K|X{|1S;14(G!T06$PMut|-A z@$XLkx^UUL>(%)+aY?bl!i88~p9U@j{Up69cnF8?!}R?IC>6GVy>FvA>v^_4PsQ;= z$kHCy_u=19!SYO8d_}^}GCsOQd{QSZ0lrBuqMkdmXn^f;JtD*7{!KiiJkfcf88(6k z2C%L5FZQR|_~(87^S@)zb~acl399gy?x|jj^w+C-*Rvl1XLp>Xq#O%ozAa1&!>OI$ zH5Us{Zx8S=MbSM&J}cOI@_hZnoBG$z&T8aHQ&OW(*81Vkve9ZwRVTAP82|PSUb5^l z_?S4n>j555Zkwz;t&DPANjMI-4FD^APCb&Aafn2-L&t!t9!?VV`(g_P!D}UpCb2B^0ZvcZ{VAVQifKUAW2LjCLzzsm~cAsE&A7Z$a^UhaRuz#LE zi=k~(6om%7t^q~UKOx+5n;e`ksC&83t$vwOASz@)Oh-{TUjfj+N&kqH%_tV5wE+fNV>XrYYrhdKL-ygb`m!`!6qg&)*ja1KmyoB$EU-2jf6XD%8joEUEQ;)*Z9`z4ighQT1 zOSvFQ#{k+58M93cvY>WFB#@lit`c-Vb&}y;ydeAwWn@ky+S`xC{A-;-!6#`)3! zWz;p`Pp@HtT50-*yf@jNkN<^kuGOw~Js@99{Xg;$NCppr&moZ6fxX%p0BhRL!c>_DCB^Wa+a`bRk)Y zD@MMY6R9TJ)ggU4JZF9G{qPZcXp4k#YF*)oHBu%P9-~(n(F!D_&SCS{=xV8a#mw^f zl#FvVr(PoHia_z$HA^OuH4K_L%82_T*QB;=yut@3N-W%NJa2pxUtw53jU&{U_>G{ECX z1uPS=bpJ>jH!JKn->+tM0r=GS{$}TM^a1SYdOieXCmLa~K_Losw7-Q6ekmC(P6_w~ z<5#Nk0U%O4N#j|+Be~faX$0B74=8H=Es2sM^K32TfcO~s&2Y(nJSqf;wfcI58stpk z?KNw(m)u#I@|m}faFX6myapoC!l!{W>pfn2TJ>-&Uruf@P+ygL7!Gf%(yZf0sdGaKQqP9FvTHw83z2gUoj-B~HLrlY4XP#4 zxAt1}Xn*xT1<$+ZR)%=9ZwT`YQWW)cdWip|llakp)5%mdN_ZMy2{Tdpa>ErxQobDd z$Zxb;L}|ryQcV6oBJ>kB5s>Mg)7S)DnP70YiJ-Rf>P7{8{+TC9*RUNuGf^9bIcI2@{CKaLr3OCi-qM zU}N#v6%iYJc!#QkMQD}{s6I6{NgI39RI+|ft%%kC&CaXVZcDQa8-DI8@5|RB;ZB2s zV)FD+Te{Re9@QSaXXy({pB%`l}NU zsvmp{+HWujJX{*nrMOX=Oo#~7!?^EOfiLH)u-IKLW%~5l^Ln@gh1K&pD?bJ6$%>F9 zRp#@Bw&+!q9E_~_r3Ey29iGc%<$y6OQ3y);0Et#MT2=T`+cTz8BU7x%n6G>CM;!n% z6Z;c{9^&g&V&?Xx4$cy?cXqWnJLi;xd#{UUFj8=8&DpZ%P2c8phP|zPi1~zFRy<(I zAd#%idke?+C%Z~?_UKo1bh^Lqtqh2L?=P<|u)!ikk~%!tty-6@J&%{{X&zRLG`{f4 zlv7c8z-se^RX>YrfnE@9ggFi{>bLyV4SsRZ(doVQ6-p>^Lk@MhnaMLptZ;D!KeA-p z6Kd3aJ#hwXV$BC<0B8MqH`1XVQ)j6i@NV7MfxPUm!Mptt6?i`kl7qs7Z*H)~7r*mj zOxTJM2LOAmFNuCF{qb1LR_0xpX9GWXAKkhEv3xNgz-V@Ok-u!IaV~^VqGM$Z*T#e` z1#ys~<1aYcu$POD_;+#t3RL#h_f5q+)&-D0{ssLE_J7-jqSl(^0Do`n52TOYP)8UZ zQswY@lb~*6w`Zs^Ga2?(NMP+C+&&Nk%G?l?p){r=qxa~Zo)N*g&0MjJmz6P6$K_Zd zrzo@eZ;rBGnpQ_C$%iAIU)JNaiNf|5eBOx+n0thZp3m5v=dVX6Vq1B z1d{SaTi{GE7DZtm-)q&DO;`Z~nB}KKrk#Ca?eHIRlVAMr7nz({Sd$fh`B%#jRD!P# zO`v7;@$T%xc3n{827Ulxj1;gw3GsPyT9EuIhvib~vrDx-Lvd%Z4c(*JbuM#Zdz6|; zx%RF}hMc}FZNFo>_`G7k>;FRin;mfe1||zA7b+_#(;8@|Q?2)&$3<(-coGloda7rz zsuQv5qOh9bW)XxR`fn4vt?~*H1@ByYosU9aSlJF6 zwR*ShmuCoftkoSpyc66zh)_Z+=F^NQ27*i)*X*WkSpI7hCmomiR58|{IDeD%f=S!O zsWytzk>DM-cTGL=K8=!MMWk{@`;G+n7T%Lr4-!)`-uL{bFGGDVx;P#1#Qj2#Y@M^_ zY^LeXNB+T~hzn;M2WDghx~F~~3`Z`9(xY-j=}Yt9Zy{vkp@>zI{|2mOSCTPt{c}D3 z2?7Ms!L+@0QfsY3|?WyLiBp`R+yt@gNk(_uH+^}_0}7fad3ej7%rb%ijz0UljK-MMKA>vc^!_CX z;A8{E#5^Df_7p2%8!dtV5(Kl>I@gE`PatVB7JDs`Os0o%0Z+aXHFDp>;QN88(@=%a z@KI`^o;`1cMaQo(VNe~?au8`y}XrXcJ{Dx z%0nM!wDHGF1F0L>bI#d(TK$yQmy{&gGs9;iS0{^^dcVWQG0L6ws3V7Li(TVi z>y_YoiHYCFDlNdEV=5|LkzYXcup4CzlC6o|)wb{;lSwOqQ>?7i1c^V0h|(WBle=@@ zW5;Q?-S%13uVNYqmlU^ZzacIB!0s`_ib8_CAof}@Z^ZD62GXJ2OSo}Rl1hl|hJNKL z^LT4g80n*m86X_sTiYYQ8J&ept>8~e`NYNQVA-O89R9-j@|G6lm9ebyR;tI($@!e| zVG8P7{O&d;sUx&o60OodCd z5{kCA!pU1)+^e-&1;i57K|KALS>~@Jx*#;=J>(JMqoSQ=;t+sW&u#CGbWR@t*QO5k z!EbeT{xs*}-N%;236-`qiLng){W;6JB)FJ{CPert#Mz^mK(ejbW&@Z!_m23^IF!AB z`uF325RVj}`cM%w_AfQ~L0CO65TIQZu@-L$U$_2+^$yZiJd4ws&;L*)eDojS<%e8v z*6(d=o&}{wdlSJB(>`FKBtv=gajPKVw$7;Ng}f8zEA)7qVAe=d ztkIuYni;sSFuWlGhG(F9Mg{QX6DOnm;Q=1uQVst+L`n|Pssxd5+S_FUu{}ChQ~9%) ziK)lzCN)Ft-!Np!i!LWxYd_iTNpPOGlBIG+YCQ4bzvy96Dtl`*L*mg^%ms{2l-vt7 zk6RWJFnk(V##dU8O~u_-Z_|5>NXU^-I-aS}h53<;h7w?->kI}3^3sr}NAvLr@t~A^ z6O#&GNUS0P%nLVK76Jin3;z(3#fz3>0ujB6ShMYZgqT_~CR+{om+JiYOF8toeIwr2 z2iP~|t#~_IPa=K(V2Ls1^y<^a^RaVicC}^!?L}};OMj=xF9xW#tC$#jI&+=(KgOGL zqu<2Zb;yMg;XGP6n!9ilFB1apMZZM%4(g)dLZ+C%b}TMGB71bVp4V?i5wy&8#PWO0 zg|A&ZR>*pI_R#!N{9B^X(U7p0zMuaV?*KXG;5CyzeYiUzb2!I}oHRa$FwqRy>5Y`a zBjFoiusE3!6L~Nag`hJmq%%t$AM%t`#-17T`!a{jA@+4d0SAgdqblqnPRQKnpc&(w zl^=J9vEy6mu(Mzc4@~c&F-=4+D28}9MA{0ajm80*FFUR;*;@&g%zv)S(q2t_-1+0T zU<0NCHmMUXwta6VI{XRf!JqjFi>LKS*oyd+oPAD*+PmdNo|3i7?M+HQE{A%Pzf5mf zkq~3{opPwq(e^Fe>wd(o)+3pQ8KYKpIcnw@(?vEM6SBl3?MxuPYImREV*aRE_RZHd zvB^nPL39KA(N+j1B-=aarLbTkK4+r8`{3UAk{Bv3Zj`cb&fev;F5N&XmTdeRBbXT< z5>nh*vp`iG$5H$$VJOD%QMHr3JKOsZ^aEk9r}!lDj*l;IibUQ&W!256D$=OW{m%&T z#RjZkbU%@V6x0$yp05%C=b#;7MqHeOhu0}%^e%YI*xZHqHT2;F2pR&YNb2Vwc)rC$ z#4grG&XTA#Jx;sKsM!rMT+QK2yF7?~&ip89?LPmMN5we&v*E3^2@c0F!)%Zir~@_`7c%j{eb=24xDUp4wK&PCWrs9CxPVKJZpw zRsH9!R{Gcfar~E$aC%9H-?^+uDOE6A2i6W)M87Eg1+rjCypu`}mC*FDVoZtj;0ASeR_9bZCu2d%y2 zoKkt^Uol>^$jpC7-apoyQy1+&rRPtK#yq8PYzoGBarVdY2b3PhBvAA^=iWYUcFH2B zlZ+uc)sYJKw~(dl*T=)uTwlP;FMgm&3g)E#>SXr}Vk`$~7)NUV;QoQ^5tXNZUXP|d zqe(fS+Zk}slk2Cq2?;Ixqq*VbBm+)FWGF78ieNHPB)bHB^Hj@*`*&A}7%`3J(Rf=WtChCdyGgBVU-;LJ-ltkE9A8Y$_=%LIpO z5p6LzFM$WFo2w}ds|JgE3#dxQEnG|#*wv<&k%iIsS7X`=Ai_Nb(xEO1$aS1e`E;8% zSN%CxS9Y`ytnVLL>oBoenwEDXR*NZEwVrN0#eI_j02BjG_6~}-0uuyozX3v~Utl1q ztp`{Y3d!C%hqj&XzoMO3olu9rQIJW*H&8Mhry; zpx!dDYH~sJ+5%dNlW&~@9O(Q+R8@&>ZEZihYJx#n04HYF?_OS-em-`x!a?aWx89?X zhYKH69`0*H(UY;J=zfP$ynsE~A5wvY=C%{w^yjv***r7H=n@HMH^pv`+nh1k)Qr!C64%^IbHxWY>8Pnm z65&9v#FiZYIUMK#=LZ0K9dDfbNb?M!>Wvr;Od*Ja#Jtb24i>JSk&{Cq@%L4$3%PAz zpkkg?4|KU@$cVUM5OE3Y^vMg+$d6!4ig8-6GYpU9@0^v%j)@+*bE6Sv<8%;!Wx%+z z-wBT-Pz}6dH6dlS=Np+c@FAqC4{dttpAyfsz3K|{0~U2l0b1JWwX?+p^^d5jc5{hI zm!shqB#xHDN*>i?URyk0zay>W!!lf$QtStIc0VDtY(bt&`5d!1zluCYW2hy)B5s92 zq^NvAP=bi31pZU)tS-2@Y|Q9kLTx`yJjv7@LB_sV2vo%okO*qAQWF3ueA~iD1Hd&f zxNT%|_9lg$0Q35i#!8+LbiuNE`RJDaD2-U#=d&jpmmC7~6pgMr+Y?jw+>zh!R=y28 zy$Q-G07un)ZGyz&_gF#%LT{_E4Yj;Q;U+i)d2;pDPoArHQjna|^ZJDm*67{Yy3sE? zk8yjRrIMS3?+ud(-IQURCKi7&$Hm5(@f6l zc8^^|fjoy{l4+{x)FxM`9%p;(6AZhz0`G~BSTQ4y!_{(zTzY|h=l7Zo7s9K^5MP(n zSK-zh`J*_|Sfe+07*ngilp#E zC)Im29$~CooQ5Jr{7Lk%q_;W0f3!J#6_s+dvEcnkF+aR>k%Uix%~DSQ8 zwDhqUAp#sccCr$ini&5qAFR&Wb&kjW$ebnQ5V2&SWzCiHmFk2Ve^;@JMzU5hBXBg zV)qfz{6wNXmYjY~Evp4?F5Z3uil1+ctl?qtV0!{Ce=g(La~=4XTbNugHrTn$(bAz? z^eU;Zl%!;uvLOJdl(X~&JpRO9pS(EofNz2CQPv4six}Zh+t%KiR7|x|X0zG>O3O