Compare commits

...
14 Commits
14 changed files with 26180 additions and 135 deletions
+19858
View File
File diff suppressed because it is too large Load Diff
+5977
View File
File diff suppressed because it is too large Load Diff
+110 -20
View File
@@ -54,6 +54,8 @@ PAPX-90506:
compat: 5
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
PAPX-90512:
name: "Gran Turismo 4 - Toyota Prius [Trial]"
region: "NTSC-J"
@@ -2376,6 +2378,8 @@ SCES-51190:
compat: 5
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCES-51224:
name: "War of the Monsters"
region: "PAL-E"
@@ -3706,6 +3710,8 @@ SCKA-20014:
compat: 5
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCKA-20015:
name: "Time Crisis 3"
region: "NTSC-K"
@@ -4276,6 +4282,8 @@ SCPS-15033:
region: "NTSC-J"
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCPS-15034:
name: "This is Football 2003"
region: "NTSC-J"
@@ -4764,6 +4772,8 @@ SCPS-19215:
region: "NTSC-J"
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCPS-19251:
name: "Wild ARMs - Alter Code F [PlayStation 2 The Best]"
region: "NTSC-J"
@@ -4825,6 +4835,8 @@ SCPS-19306:
region: "NTSC-J"
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCPS-19307:
name: "Popolocrois - The First Adventure [PlayStation 2 The Best]"
region: "NTSC-J"
@@ -5181,6 +5193,8 @@ SCPS-55048:
region: "NTSC-J"
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCPS-55049:
name: "King of Fighters 2000, The"
region: "NTSC-J"
@@ -5673,6 +5687,8 @@ SCUS-97213:
compat: 5
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCUS-97214:
name: "NCAA GameBreaker 2003"
region: "NTSC-U"
@@ -5726,6 +5742,8 @@ SCUS-97229:
region: "NTSC-U"
clampModes:
eeClampMode: 3 # Fixes textbox.
gameFixes:
- VUKickstartHack # Fixes shadow flickering with synchronized VU1
SCUS-97230:
name: "SOCOM - U.S. Navy SEALs (Online)"
region: "NTSC-U"
@@ -7234,6 +7252,8 @@ SLES-50017:
name: "F1 Championship Season 2000"
region: "PAL-M5"
compat: 5
gameFixes:
- XGKickHack # Fixes graphical issues.
SLES-50018:
name: "Kessen"
region: "PAL-E"
@@ -9402,6 +9422,13 @@ SLES-51101:
name: "Eggo Mania"
region: "PAL-M3"
compat: 5
patches:
30B27954:
content: |-
//SFX/Background Music Fix.
author=kr_ps2
patch=1,EE,0011836C,word,00000000
patch=1,EE,00118374,word,00000000
SLES-51107:
name: "Hitman 2 - Silent Assassin"
region: "PAL-I"
@@ -10454,8 +10481,8 @@ SLES-51690:
SLES-51693:
name: "Suffering, The"
region: "PAL-E-F-G"
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
SLES-51696:
name: "Dragon's Lair 3D - Special Edition"
region: "PAL-M5"
@@ -10908,6 +10935,8 @@ SLES-51914:
name: "Onimusha 3 - Demon Siege"
region: "PAL-M5"
compat: 5
clampModes:
vuClampMode: 3 # Makes sure enemies appear correctly.
memcardFilters:
- "SLES-51913"
- "SLES-51914"
@@ -11828,8 +11857,8 @@ SLES-52439:
name: "Suffering, The"
region: "PAL-E-I-S"
compat: 5
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
SLES-52440:
name: "Harry Potter and the Prisoner of Azkaban"
region: "PAL-M7"
@@ -14115,8 +14144,8 @@ SLES-53525:
SLES-53526:
name: "Suffering, The - Ties that Bind"
region: "PAL-E-F"
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
memcardFilters:
- "SLES-53526"
- "SLES-53527"
@@ -14128,8 +14157,8 @@ SLES-53526:
SLES-53527:
name: "Suffering, The - Ties that Bind"
region: "PAL-E-I-S"
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
memcardFilters:
- "SLES-53526"
- "SLES-53527"
@@ -14141,8 +14170,8 @@ SLES-53527:
SLES-53528:
name: "Suffering, The - Ties that Bind"
region: "PAL-G"
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
memcardFilters:
- "SLES-53526"
- "SLES-53527"
@@ -14422,8 +14451,8 @@ SLES-53624:
SLES-53626:
name: "Suffering, The - Ties that Bind"
region: "PAL-E-G"
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
memcardFilters:
- "SLES-53526"
- "SLES-53527"
@@ -19040,6 +19069,8 @@ SLKA-25092:
SLKA-25093:
name: "Onimusha 3 Demon Siege"
region: "NTSC-K"
clampModes:
vuClampMode: 3 # Makes sure enemies appear correctly.
memcardFilters:
- "SLKA-25092"
- "SLKA-25093"
@@ -22445,6 +22476,42 @@ SLPM-65209:
gameFixes:
- VuAddSubHack
- VUKickstartHack # Fixes Character SPS.
patches:
BEC32D49:
content: |-
author=kr_ps2
//Patch custom CDVDMAN to behave like normal one, properly synced.
//Increase stack so iReferEventFlagStatus does not corrupt $ra.
patch=1,IOP,0002511C,word,27BDFFA0
patch=1,IOP,0002524C,word,27BD0060
//Save a0
patch=1,IOP,00025150,word,AFA40040
patch=1,IOP,0002523C,word,8FA40040
//Patch out PowerOff checks.
patch=1,IOP,000251A0,word,00000000
patch=1,IOP,000251A4,word,00000000
patch=1,IOP,000251A8,word,00000000
patch=1,IOP,000251AC,word,00000000
patch=1,IOP,000251B0,word,00000000
//Execute removed iReferEventFlagStatus
patch=1,IOP,000251B4,word,3C040003 //lui a0,0x0003
patch=1,IOP,000251B8,word,8C84D368 //lw a0,-0x2C98(a0)
patch=1,IOP,000251BC,word,0C00AFD3 //jal pos_0002BF4C iReferEventFlagStatus
patch=1,IOP,000251C0,word,27A50018 //addiu $a1, $sp, 0x18
patch=1,IOP,000251C4,word,8FA20024 //lw $v0, 0x24($sp)
patch=1,IOP,000251C8,word,30420020 //andi $v0, 0x20
patch=1,IOP,000251CC,word,1440001A //bnez v0,pos_00025238
patch=1,IOP,000251D0,word,00000000 //nop
//Check event flags.
//Clear flag if needed.
patch=1,IOP,000251D4,word,8FA40040 //lw $a0, 0x40($sp)
patch=1,IOP,000251D8,word,90820001 //lbu $v0, 1($a0)
patch=1,IOP,000251DC,word,14400016 //bnez $v0, 0x5c
patch=1,IOP,000251E0,word,24020001 //addiu $v0, $zero, 1
patch=1,IOP,000251E4,word,08009480 //j 0x25200
patch=1,IOP,000251E8,word,AC8200BC //nop
//Force jump to execute iReferEventFlagStatus
patch=1,IOP,00025198,word,0800946D
SLPM-65210:
name: "Chou Battle Houshin - Bundle #1"
region: "NTSC-J"
@@ -23065,6 +23132,8 @@ SLPM-65412:
SLPM-65413:
name: "Onimusha 3"
region: "NTSC-J"
clampModes:
vuClampMode: 3 # Makes sure enemies appear correctly.
memcardFilters:
- "SLPM-65411"
- "SLPM-65413"
@@ -23633,12 +23702,6 @@ SLPM-65604:
name: "Animation Battle - Recca no Honou"
region: "NTSC-J"
compat: 5
patches:
9BDBA170:
content: |-
comment=Patch by Shadow Lady
// IPU menu hang fix...
patch=0,EE,00115c00,word,03e00008
SLPM-65607:
name: "3LDK - Shiawase ni Narouyo [Limited Edition]"
region: "NTSC-J"
@@ -28554,6 +28617,8 @@ SLPS-20043:
SLPS-20044:
name: "F1 Championship Season 2000"
region: "NTSC-J"
gameFixes:
- XGKickHack # Fixes graphical issues.
SLPS-20047:
name: "Toudai Shogi"
region: "NTSC-J"
@@ -28834,6 +28899,13 @@ SLPS-20218:
SLPS-20219:
name: "Tsukande! Mawashite! Dossun Pazuru Egg Mania"
region: "NTSC-J"
patches:
2A925A22:
content: |-
//SFX/Background Music Fix.
author=kr_ps2
patch=1,EE,0011836C,word,00000000
patch=1,EE,00118374,word,00000000
SLPS-20221:
name: "Taiko no Tatsujin [with Tatacon Reproduction Controller]"
region: "NTSC-J"
@@ -33341,6 +33413,8 @@ SLUS-20103:
name: "F1 2000 Championship Edition"
region: "NTSC-U"
compat: 5
gameFixes:
- XGKickHack # Fixes graphical issues.
SLUS-20104:
name: "Tiger Woods PGA Tour 2001"
region: "NTSC-U"
@@ -34707,6 +34781,13 @@ SLUS-20452:
name: "Egg Mania - Eggstreme Madness"
region: "NTSC-U"
compat: 5
patches:
Ba056DDD:
content: |-
author=kr_ps2
//SFX/Background Music Fix.
patch=1,EE,00118394,word,00000000
patch=1,EE,0011839C,word,00000000
SLUS-20453:
name: "NCAA College Football 2K3"
region: "NTSC-U"
@@ -35494,8 +35575,8 @@ SLUS-20636:
name: "Suffering, The"
region: "NTSC-U"
compat: 5
speedHacks:
InstantVU1SpeedHack: 1 # Fixes SPS.
gameFixes:
- VUKickstartHack # Fixes SPS.
SLUS-20637:
name: "Chessmaster (Online)"
region: "NTSC-U"
@@ -35726,6 +35807,8 @@ SLUS-20694:
name: "Onimusha 3 - Demon Siege"
region: "NTSC-U"
compat: 5
clampModes:
vuClampMode: 3 # Makes sure enemies appear correctly.
memcardFilters:
- "SLUS-20694"
- "SLUS-20710"
@@ -41348,6 +41431,13 @@ SLUS-29030:
SLUS-29032:
name: "Egg Mania - Eggstreme Madness [Demo]"
region: "NTSC-U"
patches:
0A016AD4:
content: |-
//SFX/Background Music Fix.
author=kr_ps2
patch=1,EE,001183DC,word,00000000
patch=1,EE,001183E4,word,00000000
SLUS-29033:
name: "Dual Hearts [Regular Demo]"
region: "NTSC-U"
+18 -7
View File
@@ -91,6 +91,7 @@
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,
03000000790000000018000000010000,Mayflash Wii U Pro Controller Adapter,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,
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,
030000005e0400002800000002010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,y:b0,platform:Mac OS X,
030000005e0400002700000001010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,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 XP5A 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,
@@ -154,8 +155,8 @@
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,
03000000bd12000015d0000000010000,Tomee Retro 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,
03000000bd12000015d0000000000000,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,
@@ -176,7 +177,7 @@
030000005e040000130b000009050000,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,
030000005e040000200b000011050000,Xbox Wireless 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,
030000005e040000e002000003090000,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,
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,
@@ -187,6 +188,7 @@
03000000021000000090000011010000,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,
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,
03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,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,
@@ -247,6 +249,7 @@
03000000c31100000791000011010000,Be1 GC101 GAMEPAD 1.03,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,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,
05000000bc2000000055000001000000,BETOP AX1 BFM,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:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,
03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,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,
030000006b1400000209000011010000,Bigben,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,
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,
03000000120c0000200e000011010000,Brook Mars 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,
@@ -289,6 +292,7 @@
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,
030000000d0f00005001000009040000,Hori Fighting Commander OCTA,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,
030000000d0f00001000000011010000,Hori 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,
03000000ad1b000003f5000033050000,Hori Fighting Stick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,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,
030000000d0f00003801000011010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,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,
@@ -302,7 +306,7 @@
030000000d0f0000ee00000011010000,Horipad Mini 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: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,
030000000d0f0000c100000011010000,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,
03000000341a000005f7000010010000,HuiJia GameCube Controller Adpater,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,
03000000341a000005f7000010010000,HuiJia GameCube Controller Adapter,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,
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,
050000006964726f69643a636f6e0000,idroidcon 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,
@@ -347,6 +351,7 @@
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,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,
03000000380700008532000010010000,Madcatz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,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,
@@ -358,6 +363,7 @@
03000000242f0000f700000001010000,Mayflash Magic S Pro,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,
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,
030000005e0400002800000000010000,Microsoft Dual Strike,a:b3,b:b2,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,rightshoulder:b7,rightx:a0,righty:a1~,start:b5,x:b1,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,
030000005e0400000700000000010000,Microsoft SideWinder Game Pad USB,a:b0,b:b1,back:b8,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Linux,
030000005e0400002700000000010000,Microsoft SideWinder Plug and Play,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b4,righttrigger:b5,x:b2,y:b3,platform:Linux,
@@ -392,6 +398,7 @@
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:b0,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:b2,y:b3,platform:Linux,
060000007e0500000620000000000000,Nintendo Switch Combined Joy-Cons,a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,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,
050000004c69632050726f20436f6e00,Nintendo Switch 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,
050000007e0500000620000001800000,Nintendo Switch Left Joy-Con,a:b9,b:b8,back:b5,leftshoulder:b2,leftstick:b6,leftx:a1,lefty:a0~,rightshoulder:b4,start:b0,x:b7,y:b10,platform:Linux,
03000000d620000013a7000011010000,Nintendo Switch PowerA 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:Linux,
@@ -480,10 +487,9 @@
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,
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,
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,
05000000321500000a10000001000000,Razer Raiju Tournament Edition,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:a5,start:b9,x:b0,y:b3,platform:Linux,
03000000321500000710000000010000,Razer Raiju Tournament Edition Wired,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:a5,start:b9,x:b0,y:b3,platform:Linux,
03000000321500000010000011010000,Razer Rainu,a: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,
05000000321500000a10000001000000,Razer Raiju Tournament Edition,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,
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,
@@ -521,6 +527,7 @@
03000000341a00000908000010010000,SL6566,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,
030000004c050000e60c000011810000,Sony DualSense,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,
050000004c050000e60c000000810000,Sony DualSense,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,
050000004c050000cc09000001000000,Sony DualShock 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,
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,
@@ -560,6 +567,7 @@
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,
03000000571d00002000000010010000,Tomee SNES USB Adapter,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,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,
@@ -593,6 +601,7 @@
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,
050000005e040000e302000002090000,Xbox One Elite,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,
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,
060000005e040000ea0200000b050000,Xbox One S 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,
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,
@@ -604,6 +613,8 @@
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,
050000005e040000130b000009050000,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,
060000005e040000120b00000b050000,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,
03000000450c00002043000010010000,XEOX Gamepad SL6556 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,
+166 -67
View File
@@ -102,6 +102,7 @@ static void CDVD_INT(int eCycle)
static void cdvdSetIrq(uint id = (1 << Irq_CommandComplete))
{
cdvd.IntrStat |= id;
cdvd.AbortRequested = false;
iopIntcIrq(2);
psxSetNextBranchDelta(20);
}
@@ -644,6 +645,8 @@ s32 cdvdCtrlTrayOpen()
DiscSwapTimerSeconds = cdvd.RTC.second; // remember the PS2 time when this happened
cdvdUpdateStatus(CDVD_STATUS_TRAY_OPEN);
cdvd.Ready = CDVD_DRIVE_DEV9CON;
cdvd.Spinning = false;
cdvdSetIrq(1 << Irq_Eject);
if (cdvd.Type > 0 || CDVDsys_GetSourceType() == CDVD_SourceType::NoDisc)
{
@@ -915,7 +918,8 @@ void cdvdNewDiskCB()
cdvdUpdateStatus(CDVD_STATUS_TRAY_OPEN);
cdvd.Ready = CDVD_DRIVE_BUSY | CDVD_DRIVE_DEV9CON;
cdvd.Tray.trayState = CDVD_DISC_EJECT;
cdvd.Spinning = false;
cdvdSetIrq(1 << Irq_Eject);
// If it really got ejected, the DVD Reader will report Type 0, so no need to simulate ejection
if (cdvd.Type > 0)
cdvd.Tray.cdvdActionSeconds = 3;
@@ -925,6 +929,7 @@ void cdvdNewDiskCB()
DevCon.WriteLn(Color_Green, L"Seeking new media");
cdvd.Ready = CDVD_DRIVE_BUSY | CDVD_DRIVE_DEV9CON;
cdvdUpdateStatus(CDVD_STATUS_SEEK);
cdvd.Spinning = true;
cdvd.Tray.trayState = CDVD_DISC_DETECTING;
cdvd.Tray.cdvdActionSeconds = 3;
}
@@ -1089,19 +1094,6 @@ __fi void cdvdActionInterrupt()
cdvd.Sector = 0;
cdvdUpdateStatus(CDVD_STATUS_STOP);
break;
case cdvdAction_Break:
// Make sure the cdvd action state is pretty well cleared:
DevCon.WriteLn("CDVD Break Call");
if ((cdvd.Ready & 0x80))
cdvd.Error = 1; // Abort
cdvd.Reading = 0;
cdvd.Readed = 0;
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR; // should be CDVD_READY1 or something else?
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
cdvd.RErr = 0;
break;
}
cdvd.Action = cdvdAction_None;
@@ -1145,6 +1137,19 @@ __fi void cdvdReadInterrupt()
CDVD_LOG("Cdvd Seek Complete at iopcycle=%8.8x.", psxRegs.cycle);
}
if (cdvd.AbortRequested)
{
if (!cdvdIsDVD() || !(cdvd.Sector & 0xF))
{
Console.Warning("Read Abort");
cdvd.Error = 0x1; // Abort Error
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
cdvd.WaitingDMA = false;
cdvdSetIrq();
}
}
if (cdvd.Sector > cdvd.MaxSector)
{
DevCon.Warning("Read past end of disc Sector %d Max Sector %d", cdvd.Sector, cdvd.MaxSector);
@@ -1380,6 +1385,7 @@ void cdvdUpdateTrayState()
DevCon.WriteLn(Color_Green, L"Seeking new disc");
cdvd.Tray.trayState = CDVD_DISC_SEEKING;
cdvd.Tray.cdvdActionSeconds = 2;
cdvd.Spinning = true;
break;
case CDVD_DISC_SEEKING:
case CDVD_DISC_ENGAGED:
@@ -1392,6 +1398,7 @@ void cdvdUpdateTrayState()
}
else
{
cdvd.Spinning = false;
cdvdUpdateStatus(CDVD_STATUS_STOP);
}
break;
@@ -1516,9 +1523,25 @@ u8 cdvdRead(u8 key)
return (cdvd.Tray.trayState <= CDVD_DISC_SEEKING) ? cdvdTrayStateDetecting() : 0; // Detecting Disc / No Disc
}
case 0x13: // UNKNOWN
CDVD_LOG("cdvdRead13(Unknown) %x", 4);
return 4;
case 0x13: // SPEED
{
u8 speedCtrl = cdvd.SpindlCtrl & 0x3F;
if (speedCtrl == 0)
speedCtrl = cdvdIsDVD() ? 3 : 5;
if (cdvdIsDVD())
speedCtrl += 0xF;
else
speedCtrl--;
if (cdvd.Tray.trayState != CDVD_DISC_ENGAGED || cdvd.Spinning == false)
speedCtrl = 0;
CDVD_LOG("cdvdRead13(Speed) %x", speedCtrl);
return speedCtrl;
}
case 0x15: // RSV
CDVD_LOG("cdvdRead15(RSV)");
@@ -1667,6 +1690,7 @@ static void cdvdWrite04(u8 rt)
}
cdvd.nCommand = rt;
cdvd.AbortRequested = false;
if (!cdvdCommandErrorHandler())
{
@@ -1737,16 +1761,25 @@ static void cdvdWrite04(u8 rt)
break;
case N_CD_READ: // CdRead
{
// Assign the seek to sector based on cdvd.Param[0]-[3], and the number of sectors based on cdvd.Param[4]-[7].
cdvd.SeekToSector = *(u32*)(cdvd.NCMDParam + 0);
cdvd.nSectors = *(u32*)(cdvd.NCMDParam + 4);
cdvd.RetryCnt = (cdvd.NCMDParam[8] == 0) ? 0x100 : cdvd.NCMDParam[8];
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
u32 oldSpindleCtrl = cdvd.SpindlCtrl;
if (cdvd.NCMDParam[9] & 0x3F)
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
else
cdvd.SpindlCtrl = (cdvd.NCMDParam[9] & 0x80) | (cdvdIsDVD() ? 3 : 5); // Max speed for DVD/CD
if (cdvd.NCMDParam[9] & CDVD_SPINDLE_NOMINAL)
DevCon.Warning("CDVD: CD Read using Nominal switch from CAV to CLV, unhandled");
bool ParamError = false;
switch (cdvd.SpindlCtrl & CDVD_SPINDLE_SPEED)
{
case 0: // Will use current speed
break;
case 1: // x1
cdvd.Speed = 1;
break;
@@ -1760,7 +1793,7 @@ static void cdvdWrite04(u8 rt)
if (cdvdIsDVD())
{
DevCon.Warning("CDVD Read invalid DVD Speed %d", cdvd.SpindlCtrl & CDVD_SPINDLE_SPEED);
cdvd.Speed = 4;
ParamError = true;
}
else
cdvd.Speed = 12;
@@ -1769,35 +1802,51 @@ static void cdvdWrite04(u8 rt)
if (cdvdIsDVD())
{
DevCon.Warning("CDVD Read invalid DVD Speed %d", cdvd.SpindlCtrl & CDVD_SPINDLE_SPEED);
cdvd.Speed = 4;
ParamError = true;
}
else
cdvd.Speed = 24;
break;
default:
Console.Error("Unknown CDVD Read Speed SpindleCtrl=%x", cdvd.SpindlCtrl);
if (cdvdIsDVD())
cdvd.Speed = 4; // Just assume 4x for now (DVD)
else
cdvd.Speed = 24; // Just assume 24x for now (CD)
ParamError = true;
break;
}
switch (cdvd.NCMDParam[10])
if (cdvdIsDVD() && cdvd.NCMDParam[10] != 0)
{
case 2:
cdvd.ReadMode = CDVD_MODE_2340;
cdvd.BlockSize = 2340;
break;
case 1:
cdvd.ReadMode = CDVD_MODE_2328;
cdvd.BlockSize = 2328;
break;
default:
cdvd.ReadMode = CDVD_MODE_2048;
cdvd.BlockSize = 2048;
break;
ParamError = true;
}
else
{
switch (cdvd.NCMDParam[10])
{
case 2:
cdvd.ReadMode = CDVD_MODE_2340;
cdvd.BlockSize = 2340;
break;
case 1:
cdvd.ReadMode = CDVD_MODE_2328;
cdvd.BlockSize = 2328;
break;
case 0:
cdvd.ReadMode = CDVD_MODE_2048;
cdvd.BlockSize = 2048;
break;
default:
ParamError = true;
break;
}
}
if (ParamError)
{
DevCon.Warning("CDVD: CD Read Bad Parameter Error");
cdvd.SpindlCtrl = oldSpindleCtrl;
cdvd.Error = 0x22; // Invalid Parameter
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdSetIrq();
return;
}
if (!cdvdReadErrorHandler())
@@ -1823,19 +1872,37 @@ static void cdvdWrite04(u8 rt)
// this'll skip the seek delay.
cdvd.Reading = 1;
break;
}
case N_CD_READ_CDDA: // CdReadCDDA
case N_CD_READ_XCDDA: // CdReadXCDDA
{
if (cdvdIsDVD())
{
DevCon.Warning("CDVD: DVD Read when CD Error");
cdvd.Error = 0x14; // Invalid for current disc type
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdSetIrq();
return;
}
// Assign the seek to sector based on cdvd.Param[0]-[3], and the number of sectors based on cdvd.Param[4]-[7].
cdvd.SeekToSector = *(u32*)(cdvd.NCMDParam + 0);
cdvd.nSectors = *(u32*)(cdvd.NCMDParam + 4);
cdvd.RetryCnt = (cdvd.NCMDParam[8] == 0) ? 0x100 : cdvd.NCMDParam[8];
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
u32 oldSpindleCtrl = cdvd.SpindlCtrl;
if (cdvd.NCMDParam[9] & 0x3F)
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
else
cdvd.SpindlCtrl = (cdvd.NCMDParam[9] & 0x80) | 5; // Max speed for CD
if (cdvd.NCMDParam[9] & CDVD_SPINDLE_NOMINAL)
DevCon.Warning("CDVD: CDDA Read using Nominal switch from CAV to CLV, unhandled");
bool ParamError = false;
switch (cdvd.SpindlCtrl & CDVD_SPINDLE_SPEED)
{
case 0: // Will use current speed
break;
case 1: // x1
cdvd.Speed = 1;
break;
@@ -1852,8 +1919,8 @@ static void cdvdWrite04(u8 rt)
cdvd.Speed = 24;
break;
default:
Console.Error("Unknown CDDA Read Speed SpindleCtrl=%x", cdvd.SpindlCtrl);
cdvd.Speed = 24; // Just assume 24x for now (CD)
Console.Error("Unknown CDVD Read Speed SpindleCtrl=%x", cdvd.SpindlCtrl);
ParamError = true;
break;
}
@@ -1863,10 +1930,23 @@ static void cdvdWrite04(u8 rt)
cdvd.ReadMode = CDVD_MODE_2368;
cdvd.BlockSize = 2368;
break;
default:
case 0:
cdvd.ReadMode = CDVD_MODE_2352;
cdvd.BlockSize = 2352;
break;
default:
ParamError = true;
break;
}
if (ParamError)
{
DevCon.Warning("CDVD: CDDA Read Bad Parameter Error");
cdvd.SpindlCtrl = oldSpindleCtrl;
cdvd.Error = 0x22; // Invalid Parameter
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdSetIrq();
return;
}
CDVD_LOG("CDRead > startSector=%d, seekTo=%d, nSectors=%d, RetryCnt=%x, Speed=%dx(%s), ReadMode=%x(%x) SpindleCtrl=%x",
@@ -1889,23 +1969,40 @@ static void cdvdWrite04(u8 rt)
// this'll skip the seek delay.
cdvd.Reading = 1;
break;
}
case N_DVD_READ: // DvdRead
{
if (!cdvdIsDVD())
{
DevCon.Warning("CDVD: DVD Read when CD Error");
cdvd.Error = 0x14; // Invalid for current disc type
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdSetIrq();
return;
}
// Assign the seek to sector based on cdvd.Param[0]-[3], and the number of sectors based on cdvd.Param[4]-[7].
cdvd.SeekToSector = *(u32*)(cdvd.NCMDParam + 0);
cdvd.nSectors = *(u32*)(cdvd.NCMDParam + 4);
u32 oldSpindleCtrl = cdvd.SpindlCtrl;
if (cdvd.NCMDParam[8] == 0)
cdvd.RetryCnt = 0x100;
else
cdvd.RetryCnt = cdvd.NCMDParam[8];
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
if (cdvd.NCMDParam[9] & 0x3F)
cdvd.SpindlCtrl = cdvd.NCMDParam[9];
else
cdvd.SpindlCtrl = (cdvd.NCMDParam[9] & 0x80) | 3; // Max speed for DVD
if (cdvd.NCMDParam[9] & CDVD_SPINDLE_NOMINAL)
DevCon.Warning("CDVD: DVD Read using Nominal switch from CAV to CLV, unhandled");
bool ParamError = false;
switch (cdvd.SpindlCtrl & CDVD_SPINDLE_SPEED)
{
case 0: // Will use current speed
break;
case 1: // x1
cdvd.Speed = 1;
break;
@@ -1916,11 +2013,24 @@ static void cdvdWrite04(u8 rt)
cdvd.Speed = 4;
break;
default:
Console.Error("Unknown DVD Speed SpindleCtrl=%x", cdvd.SpindlCtrl);
cdvd.Speed = 4; // Just assume 4x for now
Console.Error("Unknown CDVD Read Speed SpindleCtrl=%x", cdvd.SpindlCtrl);
ParamError = true;
break;
}
if (cdvd.NCMDParam[10] != 0)
ParamError = true;
if (ParamError)
{
DevCon.Warning("CDVD: DVD Read Bad Parameter Error");
cdvd.SpindlCtrl = oldSpindleCtrl;
cdvd.Error = 0x22; // Invalid Parameter
cdvd.Ready = CDVD_DRIVE_READY | CDVD_DRIVE_DEV9CON | CDVD_DRIVE_ERROR;
cdvdSetIrq();
return;
}
cdvd.ReadMode = CDVD_MODE_2048;
cdvd.BlockSize = 2064;
@@ -1947,7 +2057,7 @@ static void cdvdWrite04(u8 rt)
// this'll skip the seek delay.
cdvd.Reading = 1;
break;
}
case N_CD_GET_TOC: // CdGetToc & cdvdman_call19
//Param[0] is 0 for CdGetToc and any value for cdvdman_call19
//the code below handles only CdGetToc!
@@ -2023,23 +2133,12 @@ static __fi void cdvdWrite07(u8 rt) // BREAK
CDVD_LOG("cdvdWrite07(Break) %x", rt);
// If we're already in a Ready state or already Breaking, then do nothing:
if (!(cdvd.Ready & CDVD_DRIVE_BUSY) || (cdvd.Action == cdvdAction_Break))
if (!(cdvd.Ready & CDVD_DRIVE_BUSY) || cdvd.AbortRequested)
return;
DbgCon.WriteLn("*PCSX2*: CDVD BREAK %x", rt);
// Aborts any one of several CD commands:
// Pause, Seek, Read, Status, Standby, and Stop
psxRegs.interrupt &= ~((1 << IopEvt_Cdvd) | (1 << IopEvt_CdvdRead));
cdvd.Action = cdvdAction_Break;
CDVD_INT(64);
// Clear the cdvd status:
cdvd.Readed = 0;
cdvd.Reading = 0;
cdvdUpdateStatus(CDVD_STATUS_PAUSE);
cdvd.AbortRequested = true;
}
static __fi void cdvdWrite08(u8 rt)
+1
View File
@@ -157,6 +157,7 @@ struct cdvdStruct
bool Spinning; // indicates if the Cdvd is spinning or needs a spinup delay
cdvdTrayTimer Tray;
u8 nextSectorsBuffered;
bool AbortRequested;
};
extern cdvdStruct cdvd;
-1
View File
@@ -111,7 +111,6 @@ enum cdvdActions
cdvdAction_Seek,
cdvdAction_Standby,
cdvdAction_Stop,
cdvdAction_Break,
cdvdAction_Read // note: not used yet.
};
+1 -1
View File
@@ -45,7 +45,7 @@ typedef struct _cdvdTN
// SpindleCtrl Masks
#define CDVD_SPINDLE_SPEED 0x7 // Speed ranges from 0-3 (1, 2, 3, 4x for DVD) and 0-5 (1, 2, 4, 12, 24x for CD)
#define CDVD_SPINDLE_DVD16 0x40 // Forces DVD to 1.6x speed (Mentioned in open SDK not really anywhere else
#define CDVD_SPINDLE_NOMINAL 0x40 // Changes the speed to be constant (CLV) based on current speed
#define CDVD_SPINDLE_CAV 0x80 // CAV/CLV selector
// CDVDreadTrack mode values:
+2 -2
View File
@@ -70,6 +70,8 @@ GSRendererSW::GSRendererSW(int threads)
GSRendererSW::~GSRendererSW()
{
// Need to destroy worker queue first to stop any pending thread work
delete m_rl;
delete m_tc;
for (GSTexture* tex : m_texture)
@@ -77,8 +79,6 @@ GSRendererSW::~GSRendererSW()
delete tex;
}
delete m_rl;
_aligned_free(m_output);
}
+8 -9
View File
@@ -431,17 +431,16 @@ static __ri void ipuBDEC(tIPU_CMD_BDEC bdec)
static __fi bool ipuVDEC(u32 val)
{
if (EmuConfig.GS.FMVAspectRatioSwitch != FMVAspectRatioSwitchType::Off) {
static int count = 0;
if (count++ > 5) {
if (!FMVstarted) {
EnableFMV = true;
FMVstarted = true;
}
count = 0;
static int count = 0;
if (count++ > 5) {
if (!FMVstarted) {
EnableFMV = true;
FMVstarted = true;
}
eecount_on_last_vdec = cpuRegs.cycle;
count = 0;
}
eecount_on_last_vdec = cpuRegs.cycle;
switch (ipu_cmd.pos[0])
{
case 0:
+1 -1
View File
@@ -31,7 +31,7 @@ enum class FreezeAction
// the lower 16 bit value. IF the change is breaking of all compatibility with old
// states, increment the upper 16 bit value, and clear the lower 16 bits to 0.
static const u32 g_SaveVersion = (0x9A2B << 16) | 0x0000;
static const u32 g_SaveVersion = (0x9A2C << 16) | 0x0000;
// the freezing data between submodules and core
// an interesting thing to note is that this dates back from before plugin
+4 -8
View File
@@ -333,15 +333,11 @@ bool SysThreadBase::StateCheckInThread()
if (m_ExecMode != ExecMode_Closing)
{
#ifndef PCSX2_CORE
if (g_CDVDReset)
// AppCoreThread deals with Reseting CDVD
// Reinit all but GS, USB, DEV9, CDVD (just like with isSuspend = false previously)
OnResumeInThread(static_cast<SystemsMask>(~(System_GS|System_USB|System_DEV9|System_CDVD)));
else
// Reinit previously torn down systems
OnResumeInThread(systemsToTearDown);
// AppCoreThread deals with Reseting CDVD
OnResumeInThread(g_CDVDReset ? static_cast<SystemsMask>(systemsToTearDown & ~(System_CDVD)) : systemsToTearDown);
g_CDVDReset = false;
#else
OnResumeInThread(systemsToTearDown);
#endif
break;
}
+11 -11
View File
@@ -85,10 +85,10 @@ Dialogs::GSDumpDialog::GSDumpDialog(wxWindow* parent)
m_run->SetDefault();
wxArrayString rdoverrides;
rdoverrides.Add("None");
rdoverrides.Add("OGL SW");
rdoverrides.Add("OGL HW");
rdoverrides.Add(Pcsx2Config::GSOptions::GetRendererName(GSRendererType::SW));
rdoverrides.Add(Pcsx2Config::GSOptions::GetRendererName(GSRendererType::OGL));
#if defined(_WIN32)
rdoverrides.Add("D3D11 HW");
rdoverrides.Add(Pcsx2Config::GSOptions::GetRendererName(GSRendererType::DX11));
#endif
m_renderer_overrides->Create(this, wxID_ANY, "Renderer overrides", wxDefaultPosition, wxDefaultSize, rdoverrides, 1);
@@ -708,20 +708,20 @@ void Dialogs::GSDumpDialog::GSThread::ExecuteTaskInThread()
{
GSDump::isRunning = true;
u32 crc = 0, ss = 0;
s8 renderer_override = 0;
GSRendererType renderer = g_Conf->EmuOptions.GS.Renderer;
switch (m_renderer)
{
// OGL SW
// Software
case 1:
renderer_override = 13;
renderer = GSRendererType::SW;
break;
// OGL HW
// OpenGL
case 2:
renderer_override = 12;
renderer = GSRendererType::OGL;
break;
// D3D11 HW
// D3D11
case 3:
renderer_override = 3;
renderer = GSRendererType::DX11;
break;
default:
break;
@@ -792,7 +792,7 @@ void Dialogs::GSDumpDialog::GSThread::ExecuteTaskInThread()
g_FrameCount = 0;
}
if (!GSopen(g_Conf->EmuOptions.GS, static_cast<GSRendererType>(renderer_override), (u8*)regs))
if (!GSopen(g_Conf->EmuOptions.GS, renderer, (u8*)regs))
{
OnStop();
return;
+23 -8
View File
@@ -782,7 +782,7 @@ void vtlb_Term()
//nothing to do for now
}
constexpr size_t VMAP_SIZE = sizeof(VTLBVirtual) * VTLB_VMAP_ITEMS;
static constexpr size_t VMAP_SIZE = sizeof(VTLBVirtual) * VTLB_VMAP_ITEMS;
// Reserves the vtlb core allocation used by various emulation components!
// [TODO] basemem - request allocating memory at the specified virtual location, which can allow
@@ -807,16 +807,26 @@ void vtlb_Core_Alloc()
}
}
static constexpr size_t PPMAP_SIZE = sizeof(*vtlbdata.ppmap) * VTLB_VMAP_ITEMS;
// The LUT is only used for 1 game so we allocate it only when the gamefix is enabled (save 4MB)
// However automatic gamefix is done after the standard init so a new init function was done.
void vtlb_Alloc_Ppmap()
{
if (vtlbdata.ppmap) return;
if (vtlbdata.ppmap)
return;
vtlbdata.ppmap = (u32*)_aligned_malloc( VTLB_VMAP_ITEMS * sizeof(*vtlbdata.ppmap), 16 );
if (!vtlbdata.ppmap)
throw Exception::OutOfMemory( L"VTLB PS2 Virtual Address Translation LUT" )
.SetDiagMsg(pxsFmt("(%u megs)", VTLB_VMAP_ITEMS * sizeof(*vtlbdata.ppmap) / _1mb));
static u32* ppmap = nullptr;
if (!ppmap)
ppmap = (u32*)GetVmMemory().BumpAllocator().Alloc(PPMAP_SIZE);
bool okay = HostSys::MmapCommitPtr(ppmap, PPMAP_SIZE, PageProtectionMode().Read().Write());
if (okay)
vtlbdata.ppmap = ppmap;
else
throw Exception::OutOfMemory(L"VTLB PS2 Virtual Address Translation LUT")
.SetDiagMsg(pxsFmt("(%u megs)", PPMAP_SIZE / _1mb));
// By default a 1:1 virtual to physical mapping
for (u32 i = 0; i < VTLB_VMAP_ITEMS; i++)
@@ -825,11 +835,16 @@ void vtlb_Alloc_Ppmap()
void vtlb_Core_Free()
{
if (vtlbdata.vmap) {
if (vtlbdata.vmap)
{
HostSys::MmapResetPtr(vtlbdata.vmap, VMAP_SIZE);
vtlbdata.vmap = nullptr;
}
safe_aligned_free( vtlbdata.ppmap );
if (vtlbdata.ppmap)
{
HostSys::MmapResetPtr(vtlbdata.ppmap, PPMAP_SIZE);
vtlbdata.ppmap = nullptr;
}
}
static wxString GetHostVmErrorMsg()