Compare commits
10 Commits
1.9.1
...
RetroArch-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
14f2418ce7 | ||
|
|
d29de10ece | ||
|
|
4fdaf52245 | ||
|
|
82cd9f2b49 | ||
|
|
7505bed384 | ||
|
|
d677acd6a1 | ||
|
|
86a6843a3b | ||
|
|
7f0f5c7aa6 | ||
|
|
5ebdad46fc | ||
|
|
3a364561f4 |
@@ -223,6 +223,22 @@ ULUS10070 = true
|
|||||||
ULES00719 = true
|
ULES00719 = true
|
||||||
# No US release, it seems
|
# No US release, it seems
|
||||||
|
|
||||||
|
# Star Wars: Lethal Alliance (#11551)
|
||||||
|
ULES00599 = true
|
||||||
|
ULUS10188 = true
|
||||||
|
|
||||||
|
# Digimon World Re:Digitize
|
||||||
|
ULJS00496 = true
|
||||||
|
NPJH50588 = true
|
||||||
|
ULAS42319 = true
|
||||||
|
|
||||||
|
# NOVA: Near Orbit Vanguard Alliance
|
||||||
|
NPUZ00179 = true
|
||||||
|
NPEZ00222 = true
|
||||||
|
|
||||||
|
# Street Riders (only region found. See #14746)
|
||||||
|
ULES00276 = true
|
||||||
|
|
||||||
[ClearToRAM]
|
[ClearToRAM]
|
||||||
# SOCOM Navy Seals games require this. See issue #8973.
|
# SOCOM Navy Seals games require this. See issue #8973.
|
||||||
# Navy Seals : Tactical Strike
|
# Navy Seals : Tactical Strike
|
||||||
@@ -244,10 +260,16 @@ UCUS98645 = true
|
|||||||
# Fireteam Bravo 2 Demo
|
# Fireteam Bravo 2 Demo
|
||||||
UCUS98677 = true
|
UCUS98677 = true
|
||||||
UCUS98691 = true
|
UCUS98691 = true
|
||||||
# Fireteam Bravo 3
|
|
||||||
NPHG00032 = true
|
# DBZ Tenkaichi Tag Team, see issue #14283
|
||||||
UCUS98716 = true
|
ULJS00311 = true
|
||||||
UCES01242 = true
|
ULAS42247 = true
|
||||||
|
ULUS10537 = true
|
||||||
|
ULUS10737 = true
|
||||||
|
ULJS19067 = true
|
||||||
|
ULAS42318 = true
|
||||||
|
NPUH90087 = true # demo
|
||||||
|
NPEH90042 = true # demo
|
||||||
|
|
||||||
[Force04154000Download]
|
[Force04154000Download]
|
||||||
# This applies a hack to Dangan Ronpa, its demo, and its sequel.
|
# This applies a hack to Dangan Ronpa, its demo, and its sequel.
|
||||||
@@ -356,9 +378,6 @@ ULJM05359 = true
|
|||||||
ULJM05885 = true
|
ULJM05885 = true
|
||||||
NPJH50825 = true
|
NPJH50825 = true
|
||||||
ULKS46157 = true
|
ULKS46157 = true
|
||||||
# GOW : JP/Korean
|
|
||||||
UCJS10114 = true
|
|
||||||
UCKS45084 = true
|
|
||||||
# GOW : Ghost of Sparta
|
# GOW : Ghost of Sparta
|
||||||
UCUS98737 = true
|
UCUS98737 = true
|
||||||
UCAS40323 = true
|
UCAS40323 = true
|
||||||
@@ -526,6 +545,10 @@ ULJM05091 = true
|
|||||||
# GachiTora! Abarenbou Kyoushi in High School need it to render shadows properly (see #14136)
|
# GachiTora! Abarenbou Kyoushi in High School need it to render shadows properly (see #14136)
|
||||||
ULJS00355 = true
|
ULJS00355 = true
|
||||||
NPJH50409 = true
|
NPJH50409 = true
|
||||||
|
# MegaMan Maverick Hunter X (see #10085)
|
||||||
|
ULES00251 = true
|
||||||
|
ULUS10068 = true
|
||||||
|
ULJM05043 = true
|
||||||
|
|
||||||
[DisableAccurateDepth]
|
[DisableAccurateDepth]
|
||||||
# Midnight Club: LA Remix
|
# Midnight Club: LA Remix
|
||||||
@@ -619,12 +642,12 @@ UCES00373 = true
|
|||||||
ULJS00078 = true
|
ULJS00078 = true
|
||||||
UCAS40104 = true
|
UCAS40104 = true
|
||||||
|
|
||||||
# Ys Seven
|
# Ys Seven disabled (caused glitches, see #13529)
|
||||||
ULUS10551 = true
|
# ULUS10551 = true
|
||||||
ULJM05475 = true
|
# ULJM05475 = true
|
||||||
ULJM05475 = true
|
# ULJM05475 = true
|
||||||
NPEH00065 = true
|
# NPEH00065 = true
|
||||||
NPJH50350 = true
|
# NPJH50350 = true
|
||||||
|
|
||||||
# Burnout Legends
|
# Burnout Legends
|
||||||
ULES00125 = true
|
ULES00125 = true
|
||||||
@@ -681,6 +704,11 @@ UCAS40347 = true
|
|||||||
UCJS10038 = true
|
UCJS10038 = true
|
||||||
UCJS18013 = true
|
UCJS18013 = true
|
||||||
|
|
||||||
|
# Megaman Maverick Hunter X (see #10085)
|
||||||
|
ULES00251 = true
|
||||||
|
ULUS10068 = true
|
||||||
|
ULJM05043 = true
|
||||||
|
|
||||||
# Note! This whole flag is disabled temporarily by appending "Disabled" to its name). See 7914
|
# Note! This whole flag is disabled temporarily by appending "Disabled" to its name). See 7914
|
||||||
[YugiohSaveFixDisabled]
|
[YugiohSaveFixDisabled]
|
||||||
# The cause of Yu-gi-oh series 's bad save (cannot save) are load "save status" and use cwcheat,
|
# The cause of Yu-gi-oh series 's bad save (cannot save) are load "save status" and use cwcheat,
|
||||||
@@ -745,8 +773,6 @@ NPJH50017 = true
|
|||||||
# The GOW games are very heavy and render as fast as they can. They benefit greatly from
|
# The GOW games are very heavy and render as fast as they can. They benefit greatly from
|
||||||
# capping the framerate at 60fps.
|
# capping the framerate at 60fps.
|
||||||
|
|
||||||
UCJS10114 = true
|
|
||||||
UCKS45084 = true
|
|
||||||
# GOW : Ghost of Sparta
|
# GOW : Ghost of Sparta
|
||||||
UCUS98737 = true
|
UCUS98737 = true
|
||||||
UCAS40323 = true
|
UCAS40323 = true
|
||||||
@@ -847,6 +873,26 @@ ULES01495 = true
|
|||||||
# Atari Classics Evolved
|
# Atari Classics Evolved
|
||||||
ULUS10325 = true
|
ULUS10325 = true
|
||||||
|
|
||||||
|
# Kurohyou 2: Ryu ga Gotoku Ashura Hen (Japan)
|
||||||
|
NPJH50562 = true
|
||||||
|
NPJH50333 = true
|
||||||
|
|
||||||
|
# Silent Hill Origin
|
||||||
|
ULUS10285 = true
|
||||||
|
ULES00869 = true
|
||||||
|
|
||||||
|
# Resistance Retribution
|
||||||
|
UCES01184 = true
|
||||||
|
UCUS98668 = true
|
||||||
|
|
||||||
|
# Spider-Man 3
|
||||||
|
ULES00938 = true
|
||||||
|
ULUS10317 = true
|
||||||
|
|
||||||
|
# NBA 2K13
|
||||||
|
ULUS10598 = true
|
||||||
|
ULES01578 = true
|
||||||
|
|
||||||
[JitInvalidationHack]
|
[JitInvalidationHack]
|
||||||
# This is an absolutely awful hack that somehow prevents issues when clearing the JIT,
|
# This is an absolutely awful hack that somehow prevents issues when clearing the JIT,
|
||||||
# if the game has copied code with EmuHack opcodes or something. Hopefully will be able
|
# if the game has copied code with EmuHack opcodes or something. Hopefully will be able
|
||||||
@@ -859,6 +905,7 @@ ULES00034 = true
|
|||||||
ULES00035 = true
|
ULES00035 = true
|
||||||
# MTX MotoTrax
|
# MTX MotoTrax
|
||||||
ULUS10138 = true
|
ULUS10138 = true
|
||||||
|
ULES00581 = true
|
||||||
|
|
||||||
[HideISOFiles]
|
[HideISOFiles]
|
||||||
# DJ Max Portable has some crude copy-protection functionality where it looks for ISO/CSO files
|
# DJ Max Portable has some crude copy-protection functionality where it looks for ISO/CSO files
|
||||||
@@ -989,12 +1036,6 @@ ULJM05533 = true
|
|||||||
NPJH50006 = true
|
NPJH50006 = true
|
||||||
ULES01301 = true
|
ULES01301 = true
|
||||||
|
|
||||||
[DoublePrecisionSinCos]
|
|
||||||
# Hitman Reborn Battle Arena 2 (#12900)
|
|
||||||
ULJS00218 = true
|
|
||||||
# Hitman Reborn Battle Arena
|
|
||||||
ULJS00157 = true
|
|
||||||
|
|
||||||
[DisableFirstFrameReadback]
|
[DisableFirstFrameReadback]
|
||||||
# Wipeout Pure: Temporary workaround for lens flare flicker. See #13344
|
# Wipeout Pure: Temporary workaround for lens flare flicker. See #13344
|
||||||
UCUS98612 = true
|
UCUS98612 = true
|
||||||
@@ -1003,6 +1044,15 @@ UCES00001 = true
|
|||||||
UCKS45008 = true
|
UCKS45008 = true
|
||||||
NPJG00059 = true
|
NPJG00059 = true
|
||||||
|
|
||||||
|
#Socom FireTeam Bravo 3 / Navy Seals Portable. See issue #11814
|
||||||
|
UCES01242 = true
|
||||||
|
UCUS98716 = true
|
||||||
|
NPHG00032 = true
|
||||||
|
NPJG00035 = true
|
||||||
|
UCJS10102 = true
|
||||||
|
NPEG90024 = true # demo
|
||||||
|
NPJG90068 = true # demo
|
||||||
|
|
||||||
[MpegAvcWarmUp]
|
[MpegAvcWarmUp]
|
||||||
# God Eater issue #13527 ,It is custom mpeg library that required sceMpegGetAvcAu return ERROR_MPEG_NO_DATA but break FIFA 14 issue #14086
|
# God Eater issue #13527 ,It is custom mpeg library that required sceMpegGetAvcAu return ERROR_MPEG_NO_DATA but break FIFA 14 issue #14086
|
||||||
# God Eater 1
|
# God Eater 1
|
||||||
@@ -1027,3 +1077,8 @@ NPJH50352 = true
|
|||||||
ULUS10563FV = true
|
ULUS10563FV = true
|
||||||
ULJS19081 = true
|
ULJS19081 = true
|
||||||
NPJH50352 = true
|
NPJH50352 = true
|
||||||
|
|
||||||
|
# Field Commander, see issue #10209
|
||||||
|
ULUS10088 = true
|
||||||
|
ULES00335 = true
|
||||||
|
ULKS46070 = true
|
||||||
|
|||||||
Binary file not shown.
@@ -1,200 +1,202 @@
|
|||||||
# Windows - DINPUT
|
# 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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
||||||
|
|
||||||
# OS X
|
# 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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
||||||
|
|
||||||
# Linux
|
# 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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
||||||
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,
|
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,
|
||||||
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,
|
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,
|
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,
|
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,
|
||||||
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
||||||
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,
|
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,
|
||||||
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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
|
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,
|
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
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
||||||
05000000491900000204000000000000,PG-9118,platform:Linux,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,
|
05000000491900000204000000000000,PG-9118,platform:Linux,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,
|
||||||
|
03000000d620000011a7000011010000,PowerA Nintendo Switch Wired Controller,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,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,
|
||||||
|
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,
|
||||||
|
|||||||
@@ -1,337 +1,337 @@
|
|||||||
006b570008068310:184 = strtok_r
|
006b570008068310:184 = strtok_r
|
||||||
019ba2099fb88f3c:48 = vector_normalize_t
|
019ba2099fb88f3c:48 = vector_normalize_t
|
||||||
0266f96d740c7e03:912 = memcpy
|
0266f96d740c7e03:912 = memcpy
|
||||||
02bd2859045d2383:240 = bcmp
|
02bd2859045d2383:240 = bcmp
|
||||||
030507c9a1f0fc85:92 = matrix_rot_x
|
030507c9a1f0fc85:92 = matrix_rot_x
|
||||||
0483fceefa4557ff:1360 = __udivdi3
|
0483fceefa4557ff:1360 = __udivdi3
|
||||||
0558ad5c5be00ca1:76 = vtfm_t
|
0558ad5c5be00ca1:76 = vtfm_t
|
||||||
05aedd0c04b451a1:356 = sqrt
|
05aedd0c04b451a1:356 = sqrt
|
||||||
0654fc8adbe16ef7:28 = vmul_q
|
0654fc8adbe16ef7:28 = vmul_q
|
||||||
06b243c926fa6ab5:24 = vf2in_q
|
06b243c926fa6ab5:24 = vf2in_q
|
||||||
06e2826e02056114:56 = wcslen
|
06e2826e02056114:56 = wcslen
|
||||||
075fa9b234b41e9b:32 = fmodf
|
075fa9b234b41e9b:32 = fmodf
|
||||||
0a051019bdd786c3:184 = strcasecmp
|
0a051019bdd786c3:184 = strcasecmp
|
||||||
0a46dc426054bb9d:24 = vector_add_t
|
0a46dc426054bb9d:24 = vector_add_t
|
||||||
0c0173ed70f84f66:48 = vnormalize_t
|
0c0173ed70f84f66:48 = vnormalize_t
|
||||||
0c65188f5bfb3915:24 = vsgn_q
|
0c65188f5bfb3915:24 = vsgn_q
|
||||||
0d898513a722ea3c:40 = copysignf
|
0d898513a722ea3c:40 = copysignf
|
||||||
0e99b037b852c8ea:68 = isnan
|
0e99b037b852c8ea:68 = isnan
|
||||||
0eb5f2e95f59276a:40 = dl_write_lightmode
|
0eb5f2e95f59276a:40 = dl_write_lightmode
|
||||||
0f1e7533a546f6a1:228 = dl_write_bone_matrix_4
|
0f1e7533a546f6a1:228 = dl_write_bone_matrix_4
|
||||||
0f2a1106ad84fb74:52 = strcmp
|
0f2a1106ad84fb74:52 = strcmp
|
||||||
0ffa5db8396d4274:64 = memcpy_jak
|
0ffa5db8396d4274:64 = memcpy_jak
|
||||||
1252e902d0b49bfb:44 = vector_sub_q_2
|
1252e902d0b49bfb:44 = vector_sub_q_2
|
||||||
12df3d33a58d0298:52 = vmidt_t
|
12df3d33a58d0298:52 = vmidt_t
|
||||||
12feef7b017d3431:700 = memmove
|
12feef7b017d3431:700 = memmove
|
||||||
1322c7e3fe6dff4d:784 = _free_r
|
1322c7e3fe6dff4d:784 = _free_r
|
||||||
1376c115d5f1d90c:36 = strlen
|
1376c115d5f1d90c:36 = strlen
|
||||||
1448134dd3acd1f9:240 = memchr
|
1448134dd3acd1f9:240 = memchr
|
||||||
14800e59c04968d7:100 = wcsstr
|
14800e59c04968d7:100 = wcsstr
|
||||||
14b56e858a27a8a4:24 = vi2f_q
|
14b56e858a27a8a4:24 = vi2f_q
|
||||||
15c4662d5d3c728e:308 = acosf
|
15c4662d5d3c728e:308 = acosf
|
||||||
1616ee7052542059:48 = vtfm_t
|
1616ee7052542059:48 = vtfm_t
|
||||||
16965ca11a4e7dac:104 = vmmul_q_transp
|
16965ca11a4e7dac:104 = vmmul_q_transp
|
||||||
16afe830a5dd2de2:40 = vdiv_q
|
16afe830a5dd2de2:40 = vdiv_q
|
||||||
184e834a63a79016:32 = isnanf
|
184e834a63a79016:32 = isnanf
|
||||||
189212bda9c94df1:736 = atanf
|
189212bda9c94df1:736 = atanf
|
||||||
199821ce500ef9d2:24 = vocp_t
|
199821ce500ef9d2:24 = vocp_t
|
||||||
1a3c8e9d637ed421:104 = __adddf3
|
1a3c8e9d637ed421:104 = __adddf3
|
||||||
1a7564fa3e25c992:844 = memcpy
|
1a7564fa3e25c992:844 = memcpy
|
||||||
1aad94c0723edfc0:124 = vmmul_t_transp
|
1aad94c0723edfc0:124 = vmmul_t_transp
|
||||||
1ab33b12b3cb8cb0:28 = vqmul_q
|
1ab33b12b3cb8cb0:28 = vqmul_q
|
||||||
1ac05627df1f87f4:112 = memcpy16
|
1ac05627df1f87f4:112 = memcpy16
|
||||||
1bdf3600844373fd:112 = strstr
|
1bdf3600844373fd:112 = strstr
|
||||||
1c967be07917ddc9:92 = strcat
|
1c967be07917ddc9:92 = strcat
|
||||||
1d03fa48334ca966:556 = _strtol_r
|
1d03fa48334ca966:556 = _strtol_r
|
||||||
1e1525e3bc2f6703:676 = rint
|
1e1525e3bc2f6703:676 = rint
|
||||||
1ec055f28bb9f4d1:88 = gu_update_stall
|
1ec055f28bb9f4d1:88 = gu_update_stall
|
||||||
1ef9cfe6afd3c035:180 = memset
|
1ef9cfe6afd3c035:180 = memset
|
||||||
1f53eac122f96b37:224 = cosf
|
1f53eac122f96b37:224 = cosf
|
||||||
2097a8b75c8fe651:436 = atan2
|
2097a8b75c8fe651:436 = atan2
|
||||||
21411b3c860822c0:36 = matrix_scale_q_t
|
21411b3c860822c0:36 = matrix_scale_q_t
|
||||||
24d82a8675800808:220 = ceilf
|
24d82a8675800808:220 = ceilf
|
||||||
26cc90cb25af9d27:476 = log10
|
26cc90cb25af9d27:476 = log10
|
||||||
2774614d57d4baa2:28 = vsub_q
|
2774614d57d4baa2:28 = vsub_q
|
||||||
279c6bf9cf99cc85:436 = strncpy
|
279c6bf9cf99cc85:436 = strncpy
|
||||||
2876ed93c5fd1211:328 = dl_write_matrix_4
|
2876ed93c5fd1211:328 = dl_write_matrix_4
|
||||||
2965b1ad3ca15cc1:44 = vtfm_t
|
2965b1ad3ca15cc1:44 = vtfm_t
|
||||||
299a370587df078f:116 = strange_copy_routine
|
299a370587df078f:116 = strange_copy_routine
|
||||||
2abca53599f09ea7:608 = dl_write_matrix_3
|
2abca53599f09ea7:608 = dl_write_matrix_3
|
||||||
2adb92e8855c454e:48 = vtfm_q
|
2adb92e8855c454e:48 = vtfm_q
|
||||||
2adc229bef7bbc75:40 = isnan
|
2adc229bef7bbc75:40 = isnan
|
||||||
2bcf5268dd26345a:340 = acos
|
2bcf5268dd26345a:340 = acos
|
||||||
2c4cb2028a1735bf:600 = floor
|
2c4cb2028a1735bf:600 = floor
|
||||||
2ca5958bb816c72e:44 = vector_i2f_t
|
2ca5958bb816c72e:44 = vector_i2f_t
|
||||||
2e7022d9767c9018:2100 = atan
|
2e7022d9767c9018:2100 = atan
|
||||||
2f10d3faec84b5bb:276 = sinf
|
2f10d3faec84b5bb:276 = sinf
|
||||||
2f639673670caa0e:772 = dl_write_matrix_2
|
2f639673670caa0e:772 = dl_write_matrix_2
|
||||||
2f718936b371fc44:40 = vcos_s
|
2f718936b371fc44:40 = vcos_s
|
||||||
3024e961d1811dea:396 = fmod
|
3024e961d1811dea:396 = fmod
|
||||||
30c9c4f420573eb6:540 = expf
|
30c9c4f420573eb6:540 = expf
|
||||||
317afeb882ff324a:212 = memcpy
|
317afeb882ff324a:212 = memcpy
|
||||||
31ea2e192f5095a1:52 = vector_add_t
|
31ea2e192f5095a1:52 = vector_add_t
|
||||||
31f523ef18898e0e:420 = logf
|
31f523ef18898e0e:420 = logf
|
||||||
32806967fe81568b:40 = vector_sub_t_2
|
32806967fe81568b:40 = vector_sub_t_2
|
||||||
32ceb9a7f72b9385:440 = _strtoul_r
|
32ceb9a7f72b9385:440 = _strtoul_r
|
||||||
32e6bc7c151491ed:68 = memchr
|
32e6bc7c151491ed:68 = memchr
|
||||||
335df69db1073a8d:96 = wcscpy
|
335df69db1073a8d:96 = wcscpy
|
||||||
33dc6b144cb302c1:304 = memmove
|
33dc6b144cb302c1:304 = memmove
|
||||||
35d3527ff8c22ff2:56 = matrix_scale_q
|
35d3527ff8c22ff2:56 = matrix_scale_q
|
||||||
373ce518eee5a2d2:20 = matrix300_store_q
|
373ce518eee5a2d2:20 = matrix300_store_q
|
||||||
388043e96b0e11fd:144 = dl_write_material_2
|
388043e96b0e11fd:144 = dl_write_material_2
|
||||||
38f19bc3be215acc:388 = log10f
|
38f19bc3be215acc:388 = log10f
|
||||||
393047f06eceaba1:96 = strcspn
|
393047f06eceaba1:96 = strcspn
|
||||||
39a651942a0b3861:204 = tan
|
39a651942a0b3861:204 = tan
|
||||||
3a3bc2b20a55bf02:68 = memchr
|
3a3bc2b20a55bf02:68 = memchr
|
||||||
3ab08b5659de1746:40 = vsin_s
|
3ab08b5659de1746:40 = vsin_s
|
||||||
3c421a9265f37ebc:700 = memmove
|
3c421a9265f37ebc:700 = memmove
|
||||||
3cbc2d50a3db59e9:100 = strncmp
|
3cbc2d50a3db59e9:100 = strncmp
|
||||||
3ce1806699a91d9d:148 = dl_write_light
|
3ce1806699a91d9d:148 = dl_write_light
|
||||||
3d5e914011c181d4:444 = scalbnf
|
3d5e914011c181d4:444 = scalbnf
|
||||||
3ea41eafb53fc99a:388 = logf
|
3ea41eafb53fc99a:388 = logf
|
||||||
3fe38bff09ac3da0:436 = _strtoul_r
|
3fe38bff09ac3da0:436 = _strtoul_r
|
||||||
40a25c7e1fd44fe2:24 = fabsf
|
40a25c7e1fd44fe2:24 = fabsf
|
||||||
410d48d9b6580b4a:36 = dl_write_ztest
|
410d48d9b6580b4a:36 = dl_write_ztest
|
||||||
42dc17c8018f30f2:44 = vtan.s
|
42dc17c8018f30f2:44 = vtan.s
|
||||||
436b07caa2aab931:352 = acos
|
436b07caa2aab931:352 = acos
|
||||||
444472537eedf966:32 = vmzero_q
|
444472537eedf966:32 = vmzero_q
|
||||||
449ff96982626338:28 = vmidt_q
|
449ff96982626338:28 = vmidt_q
|
||||||
44f65b1a72c45703:36 = strlen
|
44f65b1a72c45703:36 = strlen
|
||||||
45528de3948615dc:64 = memcpy
|
45528de3948615dc:64 = memcpy
|
||||||
456a0d78ac318d15:164 = gta_dl_write_matrix
|
456a0d78ac318d15:164 = gta_dl_write_matrix
|
||||||
497248c9d12f44fd:68 = strcpy
|
497248c9d12f44fd:68 = strcpy
|
||||||
4a70207212a4c497:24 = strlen
|
4a70207212a4c497:24 = strlen
|
||||||
4b16a5c602c74c6c:24 = vsub_t
|
4b16a5c602c74c6c:24 = vsub_t
|
||||||
4bb677dace6ca526:184 = memset
|
4bb677dace6ca526:184 = memset
|
||||||
4c4bdedcc13ac77c:624 = dl_write_matrix_5
|
4c4bdedcc13ac77c:624 = dl_write_matrix_5
|
||||||
4c91c556d1aa896b:104 = dl_write_material_3
|
4c91c556d1aa896b:104 = dl_write_material_3
|
||||||
4cf38c368078181e:616 = dl_write_matrix
|
4cf38c368078181e:616 = dl_write_matrix
|
||||||
4d72b294501cddfb:80 = copysign
|
4d72b294501cddfb:80 = copysign
|
||||||
4ddd83b7f4ed8d4e:844 = memcpy
|
4ddd83b7f4ed8d4e:844 = memcpy
|
||||||
4e266783291b0220:28 = vsub_t
|
4e266783291b0220:28 = vsub_t
|
||||||
4e5950928c0bb082:44 = vmmul_q_transp4
|
4e5950928c0bb082:44 = vmmul_q_transp4
|
||||||
4f34fc596ecf5b25:40 = vdiv_t
|
4f34fc596ecf5b25:40 = vdiv_t
|
||||||
500a949afb39133f:24 = vf2iu_q
|
500a949afb39133f:24 = vf2iu_q
|
||||||
50d8f01ea8fa713d:48 = send_commandi
|
50d8f01ea8fa713d:48 = send_commandi
|
||||||
50fa6db2fb14814a:544 = rint
|
50fa6db2fb14814a:544 = rint
|
||||||
513ce13cd7ce97ea:332 = scalbnf
|
513ce13cd7ce97ea:332 = scalbnf
|
||||||
514161da54d37416:1416 = __umoddi3
|
514161da54d37416:1416 = __umoddi3
|
||||||
51c52d7dd4d2191c:360 = cos
|
51c52d7dd4d2191c:360 = cos
|
||||||
5287d4b8abd5806b:768 = _strtoll_r
|
5287d4b8abd5806b:768 = _strtoll_r
|
||||||
52d5141545a75eda:60 = dl_write_clutformat
|
52d5141545a75eda:60 = dl_write_clutformat
|
||||||
530cbe1ce9b45d58:108 = dl_write_light_vector
|
530cbe1ce9b45d58:108 = dl_write_light_vector
|
||||||
53c9aa23504a630f:96 = vmmul_q_5
|
53c9aa23504a630f:96 = vmmul_q_5
|
||||||
54015ccbcbc75374:24 = strlen
|
54015ccbcbc75374:24 = strlen
|
||||||
5550d87a851c218c:168 = dl_write_viewport
|
5550d87a851c218c:168 = dl_write_viewport
|
||||||
55c1294280bfade0:88 = dl_write_blend_fixed
|
55c1294280bfade0:88 = dl_write_blend_fixed
|
||||||
56c9929e8c8c5768:24 = fabsf
|
56c9929e8c8c5768:24 = fabsf
|
||||||
572b2d9e57e6e363:788 = memcpy_thingy
|
572b2d9e57e6e363:788 = memcpy_thingy
|
||||||
580200b840b47c58:1856 = _realloc_r
|
580200b840b47c58:1856 = _realloc_r
|
||||||
5961f681bbd69035:28 = vfad_q
|
5961f681bbd69035:28 = vfad_q
|
||||||
598b91c64cf7e036:2388 = qsort
|
598b91c64cf7e036:2388 = qsort
|
||||||
59a0cb08f5ecf8b6:28 = copysignf
|
59a0cb08f5ecf8b6:28 = copysignf
|
||||||
5ae4ec2a5e133de3:28 = vector_cross_t
|
5ae4ec2a5e133de3:28 = vector_cross_t
|
||||||
5b005f8375d7c364:236 = floorf
|
5b005f8375d7c364:236 = floorf
|
||||||
5b103d973fd1dd94:92 = matrix_rot_y
|
5b103d973fd1dd94:92 = matrix_rot_y
|
||||||
5b9d7e9d4c905694:196 = _calloc_r
|
5b9d7e9d4c905694:196 = _calloc_r
|
||||||
5bf7a77b028e9f66:324 = sqrtf
|
5bf7a77b028e9f66:324 = sqrtf
|
||||||
5c0b3edc0e48852c:148 = memmove
|
5c0b3edc0e48852c:148 = memmove
|
||||||
5e898df42c4af6b8:76 = wcsncmp
|
5e898df42c4af6b8:76 = wcsncmp
|
||||||
5f473780835e3458:52 = vclamp_q
|
5f473780835e3458:52 = vclamp_q
|
||||||
5fc58ed2c4d48b79:40 = vtfm_q_transp
|
5fc58ed2c4d48b79:40 = vtfm_q_transp
|
||||||
6145029ef86f0365:76 = __extendsfdf2
|
6145029ef86f0365:76 = __extendsfdf2
|
||||||
62815f41fa86a131:656 = scalbn
|
62815f41fa86a131:656 = scalbn
|
||||||
6301fa5149bd973a:120 = wcscat
|
6301fa5149bd973a:120 = wcscat
|
||||||
658b07240a690dbd:36 = strlen
|
658b07240a690dbd:36 = strlen
|
||||||
66122f0ab50b2ef9:296 = dl_write_dither_matrix_5
|
66122f0ab50b2ef9:296 = dl_write_dither_matrix_5
|
||||||
66f7f1beccbc104a:256 = memcpy_swizzled
|
66f7f1beccbc104a:256 = memcpy_swizzled
|
||||||
679e647e34ecf7f1:132 = roundf
|
679e647e34ecf7f1:132 = roundf
|
||||||
67afe74d9ec72f52:4380 = _strtod_r
|
67afe74d9ec72f52:4380 = _strtod_r
|
||||||
68b22c2aa4b8b915:400 = sqrt
|
68b22c2aa4b8b915:400 = sqrt
|
||||||
6962da85a6dad937:60 = strrchr
|
6962da85a6dad937:60 = strrchr
|
||||||
69a3c4f774859404:64 = vmmul_q_transp2
|
69a3c4f774859404:64 = vmmul_q_transp2
|
||||||
6b022e20ee3fa733:68 = __negdf2
|
6b022e20ee3fa733:68 = __negdf2
|
||||||
6b2a6347c0dfcb57:152 = strcpy
|
6b2a6347c0dfcb57:152 = strcpy
|
||||||
6b4148322c569cb3:240 = wmemchr
|
6b4148322c569cb3:240 = wmemchr
|
||||||
6c4cb6d25851553a:44 = vtfm_t
|
6c4cb6d25851553a:44 = vtfm_t
|
||||||
6c7b2462b9ec7bc7:56 = vmmul_q
|
6c7b2462b9ec7bc7:56 = vmmul_q
|
||||||
6ca9cc8fa485d096:304 = __ieee754_sqrtf
|
6ca9cc8fa485d096:304 = __ieee754_sqrtf
|
||||||
6ccffc753d2c148e:96 = strlwr
|
6ccffc753d2c148e:96 = strlwr
|
||||||
6e40ec681fb5c571:40 = matrix_copy_q
|
6e40ec681fb5c571:40 = matrix_copy_q
|
||||||
6e9884c842a51142:236 = strncasecmp
|
6e9884c842a51142:236 = strncasecmp
|
||||||
6f101c5c4311c144:276 = floorf
|
6f101c5c4311c144:276 = floorf
|
||||||
6f1731f84bbf76c3:116 = strcmp
|
6f1731f84bbf76c3:116 = strcmp
|
||||||
6f4e1a1a84df1da0:68 = dl_write_texmode
|
6f4e1a1a84df1da0:68 = dl_write_texmode
|
||||||
70649c7211f6a8da:16 = fabsf
|
70649c7211f6a8da:16 = fabsf
|
||||||
7245b74db370ae72:64 = vmmul_q_transp3
|
7245b74db370ae72:64 = vmmul_q_transp3
|
||||||
7259d52b21814a5a:40 = vtfm_t_transp
|
7259d52b21814a5a:40 = vtfm_t_transp
|
||||||
736b34ebc702d873:104 = vmmul_q_transp
|
736b34ebc702d873:104 = vmmul_q_transp
|
||||||
7499a2ce8b60d801:12 = abs
|
7499a2ce8b60d801:12 = abs
|
||||||
74ebbe7d341463f3:72 = dl_write_colortest
|
74ebbe7d341463f3:72 = dl_write_colortest
|
||||||
755a41f9183bb89a:60 = vmmul_q
|
755a41f9183bb89a:60 = vmmul_q
|
||||||
759834c69bb12c12:68 = strcpy
|
759834c69bb12c12:68 = strcpy
|
||||||
75c5a88d62c9c99f:276 = sinf
|
75c5a88d62c9c99f:276 = sinf
|
||||||
76c661fecbb39990:364 = sin
|
76c661fecbb39990:364 = sin
|
||||||
770c9c07bf58fd14:16 = fabsf
|
770c9c07bf58fd14:16 = fabsf
|
||||||
774e479eb9634525:464 = _strtol_r
|
774e479eb9634525:464 = _strtol_r
|
||||||
77aeb1c23f9aa2ad:56 = strchr
|
77aeb1c23f9aa2ad:56 = strchr
|
||||||
78e8c65b5a458f33:148 = memcmp
|
78e8c65b5a458f33:148 = memcmp
|
||||||
794d1b073c183c77:24 = fabsf
|
794d1b073c183c77:24 = fabsf
|
||||||
7978a886cf70b1c9:56 = wcschr
|
7978a886cf70b1c9:56 = wcschr
|
||||||
79faa339fff5a80c:28 = finitef
|
79faa339fff5a80c:28 = finitef
|
||||||
7c50728008c288e3:36 = vector_transform_q_4x4
|
7c50728008c288e3:36 = vector_transform_q_4x4
|
||||||
7f1fc0dce6be120a:404 = fmod
|
7f1fc0dce6be120a:404 = fmod
|
||||||
828b98925af9ff8f:40 = vector_distance_t
|
828b98925af9ff8f:40 = vector_distance_t
|
||||||
83ac39971df4b966:336 = sqrtf
|
83ac39971df4b966:336 = sqrtf
|
||||||
84c6cd47834f4c79:1284 = powf
|
84c6cd47834f4c79:1284 = powf
|
||||||
8734dc1d155ea493:24 = vf2iz_q
|
8734dc1d155ea493:24 = vf2iz_q
|
||||||
87fe3f7e621ddebb:212 = memcpy
|
87fe3f7e621ddebb:212 = memcpy
|
||||||
891ca854e1c664e9:2392 = qsort
|
891ca854e1c664e9:2392 = qsort
|
||||||
8965d4b004adad28:420 = log10f
|
8965d4b004adad28:420 = log10f
|
||||||
89e1858ba11b84e4:52 = memset
|
89e1858ba11b84e4:52 = memset
|
||||||
8a00e7207e7dbc81:232 = _exit
|
8a00e7207e7dbc81:232 = _exit
|
||||||
8a1f9daadecbaf7f:104 = vmmul_q_transp
|
8a1f9daadecbaf7f:104 = vmmul_q_transp
|
||||||
8a610f34078ce360:32 = vector_copy_q_t
|
8a610f34078ce360:32 = vector_copy_q_t
|
||||||
8c3fd997a544d0b1:268 = memcpy
|
8c3fd997a544d0b1:268 = memcpy
|
||||||
8df2928848857e97:164 = strcat
|
8df2928848857e97:164 = strcat
|
||||||
8e48cabd529ca6b5:52 = vector_multiply_t
|
8e48cabd529ca6b5:52 = vector_multiply_t
|
||||||
8e97dcb03fbaba5c:104 = vmmul_q_transp
|
8e97dcb03fbaba5c:104 = vmmul_q_transp
|
||||||
8ee81b03d2eef1e7:28 = vmul_t
|
8ee81b03d2eef1e7:28 = vmul_t
|
||||||
8f19c41e8b987e18:100 = matrix_mogrify
|
8f19c41e8b987e18:100 = matrix_mogrify
|
||||||
8ff11e9bed387401:700 = memmove
|
8ff11e9bed387401:700 = memmove
|
||||||
910140c1a07aa59e:256 = rot_matrix_euler_zyx
|
910140c1a07aa59e:256 = rot_matrix_euler_zyx
|
||||||
91606bd72ae90481:44 = wmemcpy
|
91606bd72ae90481:44 = wmemcpy
|
||||||
92c7d2de74068c9c:32 = vcross_t
|
92c7d2de74068c9c:32 = vcross_t
|
||||||
93d8a275ba288b26:32 = vdot_t
|
93d8a275ba288b26:32 = vdot_t
|
||||||
94c7083b64a946b4:2028 = powf
|
94c7083b64a946b4:2028 = powf
|
||||||
95a52ce1bc460108:2036 = _malloc_r
|
95a52ce1bc460108:2036 = _malloc_r
|
||||||
95bd33ac373c019a:24 = fabsf
|
95bd33ac373c019a:24 = fabsf
|
||||||
9705934b0950d68d:280 = dl_write_framebuffer_ptr
|
9705934b0950d68d:280 = dl_write_framebuffer_ptr
|
||||||
9734cf721bc0f3a1:732 = atanf
|
9734cf721bc0f3a1:732 = atanf
|
||||||
9a06b9d5c16c4c20:76 = dl_write_clut_ptrload
|
9a06b9d5c16c4c20:76 = dl_write_clut_ptrload
|
||||||
9b88b739267d189e:88 = strrchr
|
9b88b739267d189e:88 = strrchr
|
||||||
9ce53975bb88c0e7:96 = strncpy
|
9ce53975bb88c0e7:96 = strncpy
|
||||||
9d4f5f56b52f07f2:808 = memmove
|
9d4f5f56b52f07f2:808 = memmove
|
||||||
9e2941c4a5c5e847:792 = memcpy
|
9e2941c4a5c5e847:792 = memcpy
|
||||||
9e6ce11f9d49f954:292 = memcpy
|
9e6ce11f9d49f954:292 = memcpy
|
||||||
9f269daa6f0da803:128 = dl_write_scissor_region
|
9f269daa6f0da803:128 = dl_write_scissor_region
|
||||||
9f7919eeb43982b0:208 = __fixdfsi
|
9f7919eeb43982b0:208 = __fixdfsi
|
||||||
a1ca0640f11182e7:72 = strcspn
|
a1ca0640f11182e7:72 = strcspn
|
||||||
a243486be51ce224:272 = cosf
|
a243486be51ce224:272 = cosf
|
||||||
a2bcef60a550a3ef:92 = matrix_rot_z
|
a2bcef60a550a3ef:92 = matrix_rot_z
|
||||||
a41989db0f9bf97e:1304 = pow
|
a41989db0f9bf97e:1304 = pow
|
||||||
a44f6227fdbc12b1:132 = memcmp
|
a44f6227fdbc12b1:132 = memcmp
|
||||||
a46cc6ea720d5775:44 = dl_write_cull
|
a46cc6ea720d5775:44 = dl_write_cull
|
||||||
a54967288afe8f26:600 = ceil
|
a54967288afe8f26:600 = ceil
|
||||||
a5ddbbc688e89a4d:56 = isinf
|
a5ddbbc688e89a4d:56 = isinf
|
||||||
a662359e30b829e4:148 = memcmp
|
a662359e30b829e4:148 = memcmp
|
||||||
a8390e65fa087c62:140 = vtfm_t_q
|
a8390e65fa087c62:140 = vtfm_t_q
|
||||||
a85fe8abb88b1c6f:52 = vector_sub_t
|
a85fe8abb88b1c6f:52 = vector_sub_t
|
||||||
a9194e55cc586557:268 = memcpy
|
a9194e55cc586557:268 = memcpy
|
||||||
a91b3d60bd75105b:28 = vadd_t
|
a91b3d60bd75105b:28 = vadd_t
|
||||||
ab97ec58c58a7c75:52 = vector_divide_t
|
ab97ec58c58a7c75:52 = vector_divide_t
|
||||||
acc2c11c3ea28320:268 = ceilf
|
acc2c11c3ea28320:268 = ceilf
|
||||||
ad67add5122b8c64:52 = matrix_q_translate_t
|
ad67add5122b8c64:52 = matrix_q_translate_t
|
||||||
ada952a1adcea4f5:60 = vmmul_q_transp5
|
ada952a1adcea4f5:60 = vmmul_q_transp5
|
||||||
adfbf8fb8c933193:56 = fabs
|
adfbf8fb8c933193:56 = fabs
|
||||||
ae50226363135bdd:24 = vector_sub_t
|
ae50226363135bdd:24 = vector_sub_t
|
||||||
ae6cd7dfac82c244:48 = vpow_s
|
ae6cd7dfac82c244:48 = vpow_s
|
||||||
af85d47f95ad2921:1936 = pow
|
af85d47f95ad2921:1936 = pow
|
||||||
afb2c7e56c04c8e9:48 = vtfm_q
|
afb2c7e56c04c8e9:48 = vtfm_q
|
||||||
afc9968e7d246a5e:1588 = atan
|
afc9968e7d246a5e:1588 = atan
|
||||||
afcb7dfbc4d72588:44 = vector_transform_3x4
|
afcb7dfbc4d72588:44 = vector_transform_3x4
|
||||||
b0db731f27d3aa1b:40 = vmax_s
|
b0db731f27d3aa1b:40 = vmax_s
|
||||||
b0ef265e87899f0a:32 = vector_divide_t_s
|
b0ef265e87899f0a:32 = vector_divide_t_s
|
||||||
b183a37baa12607b:32 = vscl_t
|
b183a37baa12607b:32 = vscl_t
|
||||||
b1a3e60a89af9857:20 = fabs
|
b1a3e60a89af9857:20 = fabs
|
||||||
b3fef47fb27d57c9:44 = vector_scale_t
|
b3fef47fb27d57c9:44 = vector_scale_t
|
||||||
b43fd5078ae78029:84 = send_commandi_stall
|
b43fd5078ae78029:84 = send_commandi_stall
|
||||||
b43ffbd4dc446dd2:324 = atan2f
|
b43ffbd4dc446dd2:324 = atan2f
|
||||||
b5fdb3083e6f4b3f:36 = vhtfm_t
|
b5fdb3083e6f4b3f:36 = vhtfm_t
|
||||||
b6a04277fb1e1a1a:104 = vmmul_q_transp
|
b6a04277fb1e1a1a:104 = vmmul_q_transp
|
||||||
b7448c5ffdd3b0fc:356 = atan2f
|
b7448c5ffdd3b0fc:356 = atan2f
|
||||||
b7d88567dc22aab1:820 = memcpy
|
b7d88567dc22aab1:820 = memcpy
|
||||||
b877d3c37a7aaa5d:60 = vmmul_q_2
|
b877d3c37a7aaa5d:60 = vmmul_q_2
|
||||||
b89aa73b6f94ba95:52 = vclamp_t
|
b89aa73b6f94ba95:52 = vclamp_t
|
||||||
b8bd1f0e02e9ad87:156 = dl_write_light_dir
|
b8bd1f0e02e9ad87:156 = dl_write_light_dir
|
||||||
b8cfaeebfeb2de20:7548 = _vfprintf_r
|
b8cfaeebfeb2de20:7548 = _vfprintf_r
|
||||||
b97f352e85661af6:32 = finitef
|
b97f352e85661af6:32 = finitef
|
||||||
bb3c6592ed319ba4:132 = dl_write_fog_params
|
bb3c6592ed319ba4:132 = dl_write_fog_params
|
||||||
bb7d7c93e4c08577:124 = __truncdfsf2
|
bb7d7c93e4c08577:124 = __truncdfsf2
|
||||||
bdf54d66079afb96:200 = dl_write_bone_matrix_3
|
bdf54d66079afb96:200 = dl_write_bone_matrix_3
|
||||||
be773f78afd1a70f:128 = rand
|
be773f78afd1a70f:128 = rand
|
||||||
bf5d02ccb8514881:108 = strcmp
|
bf5d02ccb8514881:108 = strcmp
|
||||||
bf791954ebef4afb:396 = expf
|
bf791954ebef4afb:396 = expf
|
||||||
bfe07e305abc4cd1:808 = memmove
|
bfe07e305abc4cd1:808 = memmove
|
||||||
c0feb88cc04a1dc7:48 = vector_negate_t
|
c0feb88cc04a1dc7:48 = vector_negate_t
|
||||||
c1f34599d0b9146b:116 = __subdf3
|
c1f34599d0b9146b:116 = __subdf3
|
||||||
c319f0d107dd2f45:888 = __muldf3
|
c319f0d107dd2f45:888 = __muldf3
|
||||||
c35c10300b6b6091:620 = floor
|
c35c10300b6b6091:620 = floor
|
||||||
c3dbf3e6c80a0a51:164 = dl_write_bone_matrix
|
c3dbf3e6c80a0a51:164 = dl_write_bone_matrix
|
||||||
c51519f5dab342d4:224 = cosf
|
c51519f5dab342d4:224 = cosf
|
||||||
c52c14b9af8c3008:76 = memcmp
|
c52c14b9af8c3008:76 = memcmp
|
||||||
c54eae62622f1e11:164 = dl_write_bone_matrix_2
|
c54eae62622f1e11:164 = dl_write_bone_matrix_2
|
||||||
c96e3a087ebf49a9:100 = dl_write_light_color
|
c96e3a087ebf49a9:100 = dl_write_light_color
|
||||||
cb7a2edd603ecfef:48 = vtfm_p
|
cb7a2edd603ecfef:48 = vtfm_p
|
||||||
cdf64d21418b2667:24 = vzero_q
|
cdf64d21418b2667:24 = vzero_q
|
||||||
ce1c95ee25b8e2ea:448 = fmod
|
ce1c95ee25b8e2ea:448 = fmod
|
||||||
ce4d18a75b98859f:40 = vector_add_t_2
|
ce4d18a75b98859f:40 = vector_add_t_2
|
||||||
ceb5372d0003d951:52 = dl_write_stenciltest
|
ceb5372d0003d951:52 = dl_write_stenciltest
|
||||||
cee11483b550ce8f:24 = vocp_q
|
cee11483b550ce8f:24 = vocp_q
|
||||||
cfecf208769ed5fd:272 = cosf
|
cfecf208769ed5fd:272 = cosf
|
||||||
d019b067b58cf6c3:700 = memmove
|
d019b067b58cf6c3:700 = memmove
|
||||||
d12a3a91e0040229:524 = dl_write_enable_disable
|
d12a3a91e0040229:524 = dl_write_enable_disable
|
||||||
d1faacfc711d61e8:68 = __negdf2
|
d1faacfc711d61e8:68 = __negdf2
|
||||||
d207b0650a41dd9c:28 = vmin_q
|
d207b0650a41dd9c:28 = vmin_q
|
||||||
d6d6e0bb21654778:24 = vneg_t
|
d6d6e0bb21654778:24 = vneg_t
|
||||||
d7229fee680e7851:40 = vmin_s
|
d7229fee680e7851:40 = vmin_s
|
||||||
d75670860a7f4b05:144 = wcsncpy
|
d75670860a7f4b05:144 = wcsncpy
|
||||||
d76d1a8804c7ec2c:100 = dl_write_material
|
d76d1a8804c7ec2c:100 = dl_write_material
|
||||||
d7d350c0b33a4662:28 = vadd_q
|
d7d350c0b33a4662:28 = vadd_q
|
||||||
d80051931427dca0:116 = __subdf3
|
d80051931427dca0:116 = __subdf3
|
||||||
da51dab503b06979:32 = vmidt_q
|
da51dab503b06979:32 = vmidt_q
|
||||||
dc0cc8b400ecfbf2:36 = strcmp
|
dc0cc8b400ecfbf2:36 = strcmp
|
||||||
dcab869acf2bacab:292 = strncasecmp
|
dcab869acf2bacab:292 = strncasecmp
|
||||||
dcdf7e1c1a3dc260:372 = strncmp
|
dcdf7e1c1a3dc260:372 = strncmp
|
||||||
dcfc28e624a81bf1:5476 = _dtoa_r
|
dcfc28e624a81bf1:5476 = _dtoa_r
|
||||||
ddfa5a85937aa581:32 = vdot_q
|
ddfa5a85937aa581:32 = vdot_q
|
||||||
e0214719d8a0aa4e:104 = strstr
|
e0214719d8a0aa4e:104 = strstr
|
||||||
e029f0699ca3a886:76 = matrix300_transform_by
|
e029f0699ca3a886:76 = matrix300_transform_by
|
||||||
e1107cf3892724a0:460 = _memalign_r
|
e1107cf3892724a0:460 = _memalign_r
|
||||||
e1724e6e29209d97:24 = vector_length_t_2
|
e1724e6e29209d97:24 = vector_length_t_2
|
||||||
e1a5d939cc308195:68 = wcscmp
|
e1a5d939cc308195:68 = wcscmp
|
||||||
e2d9106e5b9e39e6:80 = strnlen
|
e2d9106e5b9e39e6:80 = strnlen
|
||||||
e32cb5c062d1a1c4:700 = _strtoull_r
|
e32cb5c062d1a1c4:700 = _strtoull_r
|
||||||
e3835fb2c9c04e59:44 = vmmul_q
|
e3835fb2c9c04e59:44 = vmmul_q
|
||||||
e527c62d8613f297:136 = strcpy
|
e527c62d8613f297:136 = strcpy
|
||||||
e7b36c2c1348551d:148 = tan
|
e7b36c2c1348551d:148 = tan
|
||||||
e83a7a9d80a21c11:4448 = _strtod_r
|
e83a7a9d80a21c11:4448 = _strtod_r
|
||||||
e894bda909a8a8f9:1064 = expensive_wipeout_pulse
|
e894bda909a8a8f9:1064 = expensive_wipeout_pulse
|
||||||
e8ad7719be44e7c8:276 = strchr
|
e8ad7719be44e7c8:276 = strchr
|
||||||
eabb9c1b4f83d2b4:52 = memset
|
eabb9c1b4f83d2b4:52 = memset
|
||||||
eb0f7bf63d52ece9:88 = strncat
|
eb0f7bf63d52ece9:88 = strncat
|
||||||
eb8c0834d8bbc28c:416 = fmodf
|
eb8c0834d8bbc28c:416 = fmodf
|
||||||
edbbe9bf9fbceca8:172 = dl_write_viewport2
|
edbbe9bf9fbceca8:172 = dl_write_viewport2
|
||||||
edc3f476221f96e6:148 = tanf
|
edc3f476221f96e6:148 = tanf
|
||||||
f1f660fdf349eac2:1588 = _malloc_r
|
f1f660fdf349eac2:1588 = _malloc_r
|
||||||
f38a356a359dbe06:28 = vmax_q
|
f38a356a359dbe06:28 = vmax_q
|
||||||
f3fc2220ed0f2703:32 = send_commandf
|
f3fc2220ed0f2703:32 = send_commandf
|
||||||
f4d797cef4ac88cd:684 = _free_r
|
f4d797cef4ac88cd:684 = _free_r
|
||||||
f4ea7d2ec943fa02:224 = sinf
|
f4ea7d2ec943fa02:224 = sinf
|
||||||
f4f8cdf479dfc4a4:224 = sinf
|
f4f8cdf479dfc4a4:224 = sinf
|
||||||
f52f993e444b6c52:44 = dl_write_shademode
|
f52f993e444b6c52:44 = dl_write_shademode
|
||||||
f56641884b36c638:468 = scalbn
|
f56641884b36c638:468 = scalbn
|
||||||
f5f7826b4a61767c:40 = matrix_copy_q
|
f5f7826b4a61767c:40 = matrix_copy_q
|
||||||
f73c094e492bc163:396 = hypot
|
f73c094e492bc163:396 = hypot
|
||||||
f7fc691db0147e25:96 = strspn
|
f7fc691db0147e25:96 = strspn
|
||||||
f842aea3baa61f29:32 = vector_length_t
|
f842aea3baa61f29:32 = vector_length_t
|
||||||
f8e0902f4099a9d6:2260 = qsort
|
f8e0902f4099a9d6:2260 = qsort
|
||||||
f972543ab7df071a:32 = vsqrt_s
|
f972543ab7df071a:32 = vsqrt_s
|
||||||
f9b00ef163e8b9d4:32 = vscl_q
|
f9b00ef163e8b9d4:32 = vscl_q
|
||||||
f9ea1bf2a897ef24:588 = ceil
|
f9ea1bf2a897ef24:588 = ceil
|
||||||
fa156c48461eeeb9:24 = vf2id_q
|
fa156c48461eeeb9:24 = vf2id_q
|
||||||
fb4253a1d9d9df9f:20 = isnanf
|
fb4253a1d9d9df9f:20 = isnanf
|
||||||
fd34a9ad94fa6241:76 = __extendsfdf2
|
fd34a9ad94fa6241:76 = __extendsfdf2
|
||||||
fe4f0280240008e9:28 = vavg_q
|
fe4f0280240008e9:28 = vavg_q
|
||||||
fe5dd338ab862291:216 = memset
|
fe5dd338ab862291:216 = memset
|
||||||
ffc8f5f8f946152c:192 = dl_write_light_color
|
ffc8f5f8f946152c:192 = dl_write_light_color
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
# lang
|
# lang
|
||||||
|
|
||||||
PPSSPP language ini repository
|
PPSSPP language ini repository
|
||||||
|
|
||||||
# Thanks for your interest in translating PPSSPP!
|
# Thanks for your interest in translating PPSSPP!
|
||||||
|
|
||||||
* Simply copy *en_US.ini* file to a new ini file with your language code, or use it to update an existing file with that name.
|
* Simply copy *en_US.ini* file to a new ini file with your language code, or use it to update an existing file with that name.
|
||||||
* To see a list of codes, view [this](http://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes) page.
|
* To see a list of codes, view [this](http://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes) page.
|
||||||
|
|
||||||
# Please note, while translating:
|
# Please note, while translating:
|
||||||
* Ampersands `&` on the *RIGHT* side of an equals sign denote an underlined keyboard hotkey.
|
* Ampersands `&` on the *RIGHT* side of an equals sign denote an underlined keyboard hotkey.
|
||||||
* The hotkeys are only supported currently in the *DesktopUI* section, however.
|
* The hotkeys are only supported currently in the *DesktopUI* section, however.
|
||||||
* Example: `&File`. This will make it so when you press ALT + F on Windows, it'll open the File menu.
|
* Example: `&File`. This will make it so when you press ALT + F on Windows, it'll open the File menu.
|
||||||
|
|
||||||
# Tools
|
# Tools
|
||||||
|
|
||||||
* To remove a translation, use the following (where KeyWord is the key):
|
* To remove a translation, use the following (where KeyWord is the key):
|
||||||
|
|
||||||
find . -type f -print0 | xargs -0 sed -i /^KeyWord/d
|
find . -type f -print0 | xargs -0 sed -i /^KeyWord/d
|
||||||
|
|
||||||
* To change a translation key, use something like this:
|
* To change a translation key, use something like this:
|
||||||
|
|
||||||
find . -type f -print0 | xargs -0 sed -i /^Key/NewKey
|
find . -type f -print0 | xargs -0 sed -i /^Key/NewKey
|
||||||
|
|
||||||
* Before you commit, use git diff to check that you don't delete too much
|
* Before you commit, use git diff to check that you don't delete too much
|
||||||
or some unrelated key with the same prefix.
|
or some unrelated key with the same prefix.
|
||||||
|
|
||||||
### Happy translating!
|
### Happy translating!
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,61 +1,61 @@
|
|||||||
[LangRegionNames]
|
[LangRegionNames]
|
||||||
ja_JP = "日本語"
|
ja_JP = "日本語"
|
||||||
en_US = "English"
|
en_US = "English"
|
||||||
fi_FI = "Suomi"
|
fi_FI = "Suomi"
|
||||||
fr_FR = "Français"
|
fr_FR = "Français"
|
||||||
es_ES = "Castellano (España)"
|
es_ES = "Castellano (España)"
|
||||||
es_LA = "Español (América Latina)"
|
es_LA = "Español (América Latina)"
|
||||||
de_DE = "Deutsch"
|
de_DE = "Deutsch"
|
||||||
it_IT = "Italiano"
|
it_IT = "Italiano"
|
||||||
nl_NL = "Nederlands"
|
nl_NL = "Nederlands"
|
||||||
pt_PT = "Português"
|
pt_PT = "Português"
|
||||||
pt_BR = "Português Brasileiro"
|
pt_BR = "Português Brasileiro"
|
||||||
ru_RU = "Русский"
|
ru_RU = "Русский"
|
||||||
ko_KR = "한국어"
|
ko_KR = "한국어"
|
||||||
zh_TW = "繁體中文"
|
zh_TW = "繁體中文"
|
||||||
zh_CN = "简体中文"
|
zh_CN = "简体中文"
|
||||||
ar_AE = "العربية"
|
ar_AE = "العربية"
|
||||||
az_AZ = "Azeri"
|
az_AZ = "Azeri"
|
||||||
ca_ES = "Català"
|
ca_ES = "Català"
|
||||||
gl_ES = "Galego"
|
gl_ES = "Galego"
|
||||||
gr_EL = "Ελληνικά"
|
gr_EL = "Ελληνικά"
|
||||||
he_IL = "עברית"
|
he_IL = "עברית"
|
||||||
hu_HU = "Magyar"
|
hu_HU = "Magyar"
|
||||||
id_ID = "Indonesia"
|
id_ID = "Indonesia"
|
||||||
pl_PL = "Polski"
|
pl_PL = "Polski"
|
||||||
ro_RO = "Român"
|
ro_RO = "Român"
|
||||||
sv_SE = "Svenska"
|
sv_SE = "Svenska"
|
||||||
tr_TR = "Türk"
|
tr_TR = "Türk"
|
||||||
uk_UA = "Українська"
|
uk_UA = "Українська"
|
||||||
vi_VN = "Tiếng Việt"
|
vi_VN = "Tiếng Việt"
|
||||||
cz_CZ = "Česky"
|
cz_CZ = "Česky"
|
||||||
tg_PH = "Tagalog"
|
tg_PH = "Tagalog"
|
||||||
th_TH = "ไทย"
|
th_TH = "ไทย"
|
||||||
dr_ID = "Duri"
|
dr_ID = "Duri"
|
||||||
fa_IR = "فارسی"
|
fa_IR = "فارسی"
|
||||||
ms_MY = "Melayu"
|
ms_MY = "Melayu"
|
||||||
da_DK = "Dansk"
|
da_DK = "Dansk"
|
||||||
no_NO = "Norsk"
|
no_NO = "Norsk"
|
||||||
bg_BG = "български език"
|
bg_BG = "български език"
|
||||||
lt-LT = "Lithuanian"
|
lt-LT = "Lithuanian"
|
||||||
jv_ID = "Jawa"
|
jv_ID = "Jawa"
|
||||||
lo_LA = "ລາວ"
|
lo_LA = "ລາວ"
|
||||||
hr_HR = "Hrvatski"
|
hr_HR = "Hrvatski"
|
||||||
|
|
||||||
[SystemLanguage]
|
[SystemLanguage]
|
||||||
ja_JP = "JAPANESE"
|
ja_JP = "JAPANESE"
|
||||||
en_US = "ENGLISH"
|
en_US = "ENGLISH"
|
||||||
fr_FR = "FRENCH"
|
fr_FR = "FRENCH"
|
||||||
es_ES = "SPANISH"
|
es_ES = "SPANISH"
|
||||||
gl_ES = "SPANISH"
|
gl_ES = "SPANISH"
|
||||||
es_LA = "SPANISH"
|
es_LA = "SPANISH"
|
||||||
de_DE = "GERMAN"
|
de_DE = "GERMAN"
|
||||||
it_IT = "ITALIAN"
|
it_IT = "ITALIAN"
|
||||||
nl_NL = "DUTCH"
|
nl_NL = "DUTCH"
|
||||||
pt_PT = "PORTUGUESE"
|
pt_PT = "PORTUGUESE"
|
||||||
pt_BR = "PORTUGUESE"
|
pt_BR = "PORTUGUESE"
|
||||||
ru_RU = "RUSSIAN"
|
ru_RU = "RUSSIAN"
|
||||||
ko_KR = "KOREAN"
|
ko_KR = "KOREAN"
|
||||||
th_TH = "THAI"
|
th_TH = "THAI"
|
||||||
zh_TW = "CHINESE_TRADITIONAL"
|
zh_TW = "CHINESE_TRADITIONAL"
|
||||||
zh_CN = "CHINESE_SIMPLIFIED"
|
zh_CN = "CHINESE_SIMPLIFIED"
|
||||||
|
|||||||
@@ -1,77 +1,77 @@
|
|||||||
// 4xGLSL HqFilter shader, Modified to use in PPSSPP. Grabbed from:
|
// 4xGLSL HqFilter shader, Modified to use in PPSSPP. Grabbed from:
|
||||||
// http://forums.ngemu.com/showthread.php?t=76098
|
// http://forums.ngemu.com/showthread.php?t=76098
|
||||||
|
|
||||||
// by guest(r) (guest.r@gmail.com)
|
// by guest(r) (guest.r@gmail.com)
|
||||||
// License: GNU-GPL
|
// License: GNU-GPL
|
||||||
|
|
||||||
// Shader notes: looks better with sprite games
|
// Shader notes: looks better with sprite games
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
const float mx = 0.325; // start smoothing factor
|
const float mx = 0.325; // start smoothing factor
|
||||||
const float k = -0.250; // smoothing decrease factor
|
const float k = -0.250; // smoothing decrease factor
|
||||||
const float max_w = 0.25; // max. smoothing weigth
|
const float max_w = 0.25; // max. smoothing weigth
|
||||||
const float min_w =-0.05; // min smoothing/sharpening weigth
|
const float min_w =-0.05; // min smoothing/sharpening weigth
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 c = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 c = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
vec3 i1 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
vec3 i1 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
||||||
vec3 i2 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
vec3 i2 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
||||||
vec3 i3 = texture2D(sampler0, v_texcoord3.xy).xyz;
|
vec3 i3 = texture2D(sampler0, v_texcoord3.xy).xyz;
|
||||||
vec3 i4 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
vec3 i4 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
||||||
vec3 o1 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
vec3 o1 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
||||||
vec3 o3 = texture2D(sampler0, v_texcoord6.xy).xyz;
|
vec3 o3 = texture2D(sampler0, v_texcoord6.xy).xyz;
|
||||||
vec3 o2 = texture2D(sampler0, v_texcoord5.zw).xyz;
|
vec3 o2 = texture2D(sampler0, v_texcoord5.zw).xyz;
|
||||||
vec3 o4 = texture2D(sampler0, v_texcoord6.zw).xyz;
|
vec3 o4 = texture2D(sampler0, v_texcoord6.zw).xyz;
|
||||||
|
|
||||||
vec3 dt = vec3(1.0,1.0,1.0);
|
vec3 dt = vec3(1.0,1.0,1.0);
|
||||||
|
|
||||||
float ko1=dot(abs(o1-c),dt);
|
float ko1=dot(abs(o1-c),dt);
|
||||||
float ko2=dot(abs(o2-c),dt);
|
float ko2=dot(abs(o2-c),dt);
|
||||||
float ko3=dot(abs(o3-c),dt);
|
float ko3=dot(abs(o3-c),dt);
|
||||||
float ko4=dot(abs(o4-c),dt);
|
float ko4=dot(abs(o4-c),dt);
|
||||||
|
|
||||||
float sd1 = dot(abs(i1-i3),dt);
|
float sd1 = dot(abs(i1-i3),dt);
|
||||||
float sd2 = dot(abs(i2-i4),dt);
|
float sd2 = dot(abs(i2-i4),dt);
|
||||||
|
|
||||||
float w1 = step(ko1,ko3)*sd2;
|
float w1 = step(ko1,ko3)*sd2;
|
||||||
float w2 = step(ko2,ko4)*sd1;
|
float w2 = step(ko2,ko4)*sd1;
|
||||||
float w3 = step(ko3,ko1)*sd2;
|
float w3 = step(ko3,ko1)*sd2;
|
||||||
float w4 = step(ko4,ko2)*sd1;
|
float w4 = step(ko4,ko2)*sd1;
|
||||||
|
|
||||||
c = (w1*o1+w2*o2+w3*o3+w4*o4+0.1*c)/(w1+w2+w3+w4+0.1);
|
c = (w1*o1+w2*o2+w3*o3+w4*o4+0.1*c)/(w1+w2+w3+w4+0.1);
|
||||||
|
|
||||||
float lc = c.r+c.g+c.b+0.2;
|
float lc = c.r+c.g+c.b+0.2;
|
||||||
|
|
||||||
w1 = (i1.r+i1.g+i1.b+lc)*0.2;
|
w1 = (i1.r+i1.g+i1.b+lc)*0.2;
|
||||||
w1 = clamp(k*dot(abs(c-i1),dt)/w1+mx,min_w,max_w);
|
w1 = clamp(k*dot(abs(c-i1),dt)/w1+mx,min_w,max_w);
|
||||||
|
|
||||||
w2 = (i2.r+i2.g+i2.b+lc)*0.2;
|
w2 = (i2.r+i2.g+i2.b+lc)*0.2;
|
||||||
w2 = clamp(k*dot(abs(c-i2),dt)/w2+mx,min_w,max_w);
|
w2 = clamp(k*dot(abs(c-i2),dt)/w2+mx,min_w,max_w);
|
||||||
|
|
||||||
w3 = (i3.r+i3.g+i3.b+lc)*0.2;
|
w3 = (i3.r+i3.g+i3.b+lc)*0.2;
|
||||||
w3 = clamp(k*dot(abs(c-i3),dt)/w3+mx,min_w,max_w);
|
w3 = clamp(k*dot(abs(c-i3),dt)/w3+mx,min_w,max_w);
|
||||||
|
|
||||||
w4 = (i4.r+i4.g+i4.b+lc)*0.2;
|
w4 = (i4.r+i4.g+i4.b+lc)*0.2;
|
||||||
w4 = clamp(k*dot(abs(c-i4),dt)/w4+mx,min_w,max_w);
|
w4 = clamp(k*dot(abs(c-i4),dt)/w4+mx,min_w,max_w);
|
||||||
|
|
||||||
gl_FragColor.rgb = w1*i1 + w2*i2 + w3*i3 + w4*i4 + (1.0-w1-w2-w3-w4)*c;
|
gl_FragColor.rgb = w1*i1 + w2*i2 + w3*i3 + w4*i4 + (1.0-w1-w2-w3-w4)*c;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,37 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
uniform vec2 u_pixelDelta;
|
uniform vec2 u_pixelDelta;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float x = u_pixelDelta.x*((u_texelDelta.x/u_pixelDelta.x)/2.0);
|
float x = u_pixelDelta.x*((u_texelDelta.x/u_pixelDelta.x)/2.0);
|
||||||
float y = u_pixelDelta.y*((u_texelDelta.y/u_pixelDelta.y)/2.0);
|
float y = u_pixelDelta.y*((u_texelDelta.y/u_pixelDelta.y)/2.0);
|
||||||
vec2 dg1 = vec2( x,y);
|
vec2 dg1 = vec2( x,y);
|
||||||
vec2 dg2 = vec2(-x,y);
|
vec2 dg2 = vec2(-x,y);
|
||||||
vec2 sd1 = dg1*0.5;
|
vec2 sd1 = dg1*0.5;
|
||||||
vec2 sd2 = dg2*0.5;
|
vec2 sd2 = dg2*0.5;
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
v_texcoord0=a_texcoord0.xyxy;
|
v_texcoord0=a_texcoord0.xyxy;
|
||||||
v_texcoord1.xy = v_texcoord0.xy - sd1;
|
v_texcoord1.xy = v_texcoord0.xy - sd1;
|
||||||
v_texcoord2.xy = v_texcoord0.xy - sd2;
|
v_texcoord2.xy = v_texcoord0.xy - sd2;
|
||||||
v_texcoord3.xy = v_texcoord0.xy + sd1;
|
v_texcoord3.xy = v_texcoord0.xy + sd1;
|
||||||
v_texcoord4.xy = v_texcoord0.xy + sd2;
|
v_texcoord4.xy = v_texcoord0.xy + sd2;
|
||||||
v_texcoord5.xy = v_texcoord0.xy - dg1;
|
v_texcoord5.xy = v_texcoord0.xy - dg1;
|
||||||
v_texcoord6.xy = v_texcoord0.xy + dg1;
|
v_texcoord6.xy = v_texcoord0.xy + dg1;
|
||||||
v_texcoord5.zw = v_texcoord0.xy - dg2;
|
v_texcoord5.zw = v_texcoord0.xy - dg2;
|
||||||
v_texcoord6.zw = v_texcoord0.xy + dg2;
|
v_texcoord6.zw = v_texcoord0.xy + dg2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,218 +1,218 @@
|
|||||||
/*
|
/*
|
||||||
Hyllian's xBR-lv2 Shader Accuracy (tweak by guest.r)
|
Hyllian's xBR-lv2 Shader Accuracy (tweak by guest.r)
|
||||||
|
|
||||||
Copyright (C) 2011-2015 Hyllian - sergiogdb@gmail.com
|
Copyright (C) 2011-2015 Hyllian - sergiogdb@gmail.com
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
in the Software without restriction, including without limitation the rights
|
in the Software without restriction, including without limitation the rights
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
The above copyright notice and this permission notice shall be included in
|
||||||
all copies or substantial portions of the Software.
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
Incorporates some of the ideas from SABR shader. Thanks to Joshua Street.
|
Incorporates some of the ideas from SABR shader. Thanks to Joshua Street.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CornerA 0 //ON:1/OFF:0 / A, B, C, D are just different variants of corner rounding
|
#define CornerA 0 //ON:1/OFF:0 / A, B, C, D are just different variants of corner rounding
|
||||||
#define CornerB 0 //ON:1/OFF:0 / activate only one
|
#define CornerB 0 //ON:1/OFF:0 / activate only one
|
||||||
#define CornerD 0 //ON:1/OFF:0
|
#define CornerD 0 //ON:1/OFF:0
|
||||||
// CornerC //used as default if none of the above is defined
|
// CornerC //used as default if none of the above is defined
|
||||||
|
|
||||||
const float XBR_SCALE = 3.0;
|
const float XBR_SCALE = 3.0;
|
||||||
const float lv2_cf = 2.0;
|
const float lv2_cf = 2.0;
|
||||||
|
|
||||||
const float coef = 2.0;
|
const float coef = 2.0;
|
||||||
const vec3 rgbw = vec3(14.352, 28.176, 5.472);
|
const vec3 rgbw = vec3(14.352, 28.176, 5.472);
|
||||||
const vec4 eq_threshold = vec4(15.0, 15.0, 15.0, 15.0);
|
const vec4 eq_threshold = vec4(15.0, 15.0, 15.0, 15.0);
|
||||||
|
|
||||||
const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 );
|
const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 );
|
||||||
const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 );
|
const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 );
|
||||||
const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 );
|
const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 );
|
||||||
const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 );
|
const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 );
|
||||||
const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 );
|
const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 );
|
||||||
const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 );
|
const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 );
|
||||||
const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25);
|
const vec4 Ci = vec4(0.25, 0.25, 0.25, 0.25);
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
uniform vec2 u_pixelDelta;
|
uniform vec2 u_pixelDelta;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
// Difference between vector components.
|
// Difference between vector components.
|
||||||
vec4 df(vec4 A, vec4 B) {
|
vec4 df(vec4 A, vec4 B) {
|
||||||
return vec4(abs(A-B));
|
return vec4(abs(A-B));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compare two vectors and return their components are different.
|
// Compare two vectors and return their components are different.
|
||||||
vec4 diff(vec4 A, vec4 B) {
|
vec4 diff(vec4 A, vec4 B) {
|
||||||
return vec4(notEqual(A, B));
|
return vec4(notEqual(A, B));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine if two vector components are equal based on a threshold.
|
// Determine if two vector components are equal based on a threshold.
|
||||||
vec4 eq(vec4 A, vec4 B) {
|
vec4 eq(vec4 A, vec4 B) {
|
||||||
return (step(df(A, B), eq_threshold));
|
return (step(df(A, B), eq_threshold));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine if two vector components are NOT equal based on a threshold.
|
// Determine if two vector components are NOT equal based on a threshold.
|
||||||
vec4 neq(vec4 A, vec4 B) {
|
vec4 neq(vec4 A, vec4 B) {
|
||||||
return (vec4(1.0, 1.0, 1.0, 1.0) - eq(A, B));
|
return (vec4(1.0, 1.0, 1.0, 1.0) - eq(A, B));
|
||||||
}
|
}
|
||||||
|
|
||||||
float c_df(vec3 c1, vec3 c2) {
|
float c_df(vec3 c1, vec3 c2) {
|
||||||
vec3 df = abs(c1 - c2);
|
vec3 df = abs(c1 - c2);
|
||||||
return df.r + df.g + df.b;
|
return df.r + df.g + df.b;
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
bool upscale = u_texelDelta.x > (1.6 * u_pixelDelta.x);
|
bool upscale = u_texelDelta.x > (1.6 * u_pixelDelta.x);
|
||||||
vec3 res = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 res = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
|
|
||||||
// Let's skip the whole scaling if output size smaller than 1.6x of input size
|
// Let's skip the whole scaling if output size smaller than 1.6x of input size
|
||||||
if (upscale) {
|
if (upscale) {
|
||||||
|
|
||||||
vec4 edri, edr, edr_l, edr_u, px; // px = pixel, edr = edge detection rule
|
vec4 edri, edr, edr_l, edr_u, px; // px = pixel, edr = edge detection rule
|
||||||
vec4 irlv0, irlv1, irlv2l, irlv2u;
|
vec4 irlv0, irlv1, irlv2l, irlv2u;
|
||||||
vec4 fx, fx_l, fx_u; // inequations of straight lines.
|
vec4 fx, fx_l, fx_u; // inequations of straight lines.
|
||||||
|
|
||||||
vec2 pS = 1.0 / u_texelDelta.xy;
|
vec2 pS = 1.0 / u_texelDelta.xy;
|
||||||
vec2 fp = fract(v_texcoord0.xy*pS.xy);
|
vec2 fp = fract(v_texcoord0.xy*pS.xy);
|
||||||
vec2 TexCoord_0 = v_texcoord0.xy-fp*u_pixelDelta.xy;
|
vec2 TexCoord_0 = v_texcoord0.xy-fp*u_pixelDelta.xy;
|
||||||
vec2 dx = vec2(u_texelDelta.x,0.0);
|
vec2 dx = vec2(u_texelDelta.x,0.0);
|
||||||
vec2 dy = vec2(0.0,u_texelDelta.y);
|
vec2 dy = vec2(0.0,u_texelDelta.y);
|
||||||
vec2 y2 = dy + dy; vec2 x2 = dx + dx;
|
vec2 y2 = dy + dy; vec2 x2 = dx + dx;
|
||||||
|
|
||||||
vec4 delta = vec4(1.0/XBR_SCALE, 1.0/XBR_SCALE, 1.0/XBR_SCALE, 1.0/XBR_SCALE);
|
vec4 delta = vec4(1.0/XBR_SCALE, 1.0/XBR_SCALE, 1.0/XBR_SCALE, 1.0/XBR_SCALE);
|
||||||
vec4 delta_l = vec4(0.5/XBR_SCALE, 1.0/XBR_SCALE, 0.5/XBR_SCALE, 1.0/XBR_SCALE);
|
vec4 delta_l = vec4(0.5/XBR_SCALE, 1.0/XBR_SCALE, 0.5/XBR_SCALE, 1.0/XBR_SCALE);
|
||||||
vec4 delta_u = delta_l.yxwz;
|
vec4 delta_u = delta_l.yxwz;
|
||||||
|
|
||||||
vec3 A = texture2D(sampler0, TexCoord_0 -dx -dy ).xyz;
|
vec3 A = texture2D(sampler0, TexCoord_0 -dx -dy ).xyz;
|
||||||
vec3 B = texture2D(sampler0, TexCoord_0 -dy ).xyz;
|
vec3 B = texture2D(sampler0, TexCoord_0 -dy ).xyz;
|
||||||
vec3 C = texture2D(sampler0, TexCoord_0 +dx -dy ).xyz;
|
vec3 C = texture2D(sampler0, TexCoord_0 +dx -dy ).xyz;
|
||||||
vec3 D = texture2D(sampler0, TexCoord_0 -dx ).xyz;
|
vec3 D = texture2D(sampler0, TexCoord_0 -dx ).xyz;
|
||||||
vec3 E = texture2D(sampler0, TexCoord_0 ).xyz;
|
vec3 E = texture2D(sampler0, TexCoord_0 ).xyz;
|
||||||
vec3 F = texture2D(sampler0, TexCoord_0 +dx ).xyz;
|
vec3 F = texture2D(sampler0, TexCoord_0 +dx ).xyz;
|
||||||
vec3 G = texture2D(sampler0, TexCoord_0 -dx +dy ).xyz;
|
vec3 G = texture2D(sampler0, TexCoord_0 -dx +dy ).xyz;
|
||||||
vec3 H = texture2D(sampler0, TexCoord_0 +dy ).xyz;
|
vec3 H = texture2D(sampler0, TexCoord_0 +dy ).xyz;
|
||||||
vec3 I = texture2D(sampler0, TexCoord_0 +dx +dy ).xyz;
|
vec3 I = texture2D(sampler0, TexCoord_0 +dx +dy ).xyz;
|
||||||
vec3 A1 = texture2D(sampler0, TexCoord_0 -dx -y2).xyz;
|
vec3 A1 = texture2D(sampler0, TexCoord_0 -dx -y2).xyz;
|
||||||
vec3 C1 = texture2D(sampler0, TexCoord_0 +dx -y2).xyz;
|
vec3 C1 = texture2D(sampler0, TexCoord_0 +dx -y2).xyz;
|
||||||
vec3 A0 = texture2D(sampler0, TexCoord_0 -x2 -dy).xyz;
|
vec3 A0 = texture2D(sampler0, TexCoord_0 -x2 -dy).xyz;
|
||||||
vec3 G0 = texture2D(sampler0, TexCoord_0 -x2 +dy).xyz;
|
vec3 G0 = texture2D(sampler0, TexCoord_0 -x2 +dy).xyz;
|
||||||
vec3 C4 = texture2D(sampler0, TexCoord_0 +x2 -dy).xyz;
|
vec3 C4 = texture2D(sampler0, TexCoord_0 +x2 -dy).xyz;
|
||||||
vec3 I4 = texture2D(sampler0, TexCoord_0 +x2 +dy).xyz;
|
vec3 I4 = texture2D(sampler0, TexCoord_0 +x2 +dy).xyz;
|
||||||
vec3 G5 = texture2D(sampler0, TexCoord_0 -dx +y2).xyz;
|
vec3 G5 = texture2D(sampler0, TexCoord_0 -dx +y2).xyz;
|
||||||
vec3 I5 = texture2D(sampler0, TexCoord_0 +dx +y2).xyz;
|
vec3 I5 = texture2D(sampler0, TexCoord_0 +dx +y2).xyz;
|
||||||
vec3 B1 = texture2D(sampler0, TexCoord_0 -y2).xyz;
|
vec3 B1 = texture2D(sampler0, TexCoord_0 -y2).xyz;
|
||||||
vec3 D0 = texture2D(sampler0, TexCoord_0 -x2 ).xyz;
|
vec3 D0 = texture2D(sampler0, TexCoord_0 -x2 ).xyz;
|
||||||
vec3 H5 = texture2D(sampler0, TexCoord_0 +y2).xyz;
|
vec3 H5 = texture2D(sampler0, TexCoord_0 +y2).xyz;
|
||||||
vec3 F4 = texture2D(sampler0, TexCoord_0 +x2 ).xyz;
|
vec3 F4 = texture2D(sampler0, TexCoord_0 +x2 ).xyz;
|
||||||
|
|
||||||
vec4 b = vec4(dot(B ,rgbw), dot(D ,rgbw), dot(H ,rgbw), dot(F ,rgbw));
|
vec4 b = vec4(dot(B ,rgbw), dot(D ,rgbw), dot(H ,rgbw), dot(F ,rgbw));
|
||||||
vec4 c = vec4(dot(C ,rgbw), dot(A ,rgbw), dot(G ,rgbw), dot(I ,rgbw));
|
vec4 c = vec4(dot(C ,rgbw), dot(A ,rgbw), dot(G ,rgbw), dot(I ,rgbw));
|
||||||
vec4 d = b.yzwx;
|
vec4 d = b.yzwx;
|
||||||
vec4 e = vec4(dot(E,rgbw));
|
vec4 e = vec4(dot(E,rgbw));
|
||||||
vec4 f = b.wxyz;
|
vec4 f = b.wxyz;
|
||||||
vec4 g = c.zwxy;
|
vec4 g = c.zwxy;
|
||||||
vec4 h = b.zwxy;
|
vec4 h = b.zwxy;
|
||||||
vec4 i = c.wxyz;
|
vec4 i = c.wxyz;
|
||||||
vec4 i4 = vec4(dot(I4,rgbw), dot(C1,rgbw), dot(A0,rgbw), dot(G5,rgbw));
|
vec4 i4 = vec4(dot(I4,rgbw), dot(C1,rgbw), dot(A0,rgbw), dot(G5,rgbw));
|
||||||
vec4 i5 = vec4(dot(I5,rgbw), dot(C4,rgbw), dot(A1,rgbw), dot(G0,rgbw));
|
vec4 i5 = vec4(dot(I5,rgbw), dot(C4,rgbw), dot(A1,rgbw), dot(G0,rgbw));
|
||||||
vec4 h5 = vec4(dot(H5,rgbw), dot(F4,rgbw), dot(B1,rgbw), dot(D0,rgbw));
|
vec4 h5 = vec4(dot(H5,rgbw), dot(F4,rgbw), dot(B1,rgbw), dot(D0,rgbw));
|
||||||
vec4 f4 = h5.yzwx;
|
vec4 f4 = h5.yzwx;
|
||||||
|
|
||||||
// These inequations define the line below which interpolation occurs.
|
// These inequations define the line below which interpolation occurs.
|
||||||
fx = (Ao*fp.y+Bo*fp.x);
|
fx = (Ao*fp.y+Bo*fp.x);
|
||||||
fx_l = (Ax*fp.y+Bx*fp.x);
|
fx_l = (Ax*fp.y+Bx*fp.x);
|
||||||
fx_u = (Ay*fp.y+By*fp.x);
|
fx_u = (Ay*fp.y+By*fp.x);
|
||||||
irlv1 = irlv0 = diff(e,f) * diff(e,h);
|
irlv1 = irlv0 = diff(e,f) * diff(e,h);
|
||||||
#if(CornerA==0) // A takes priority skipping other corners
|
#if(CornerA==0) // A takes priority skipping other corners
|
||||||
#define SMOOTH_TIPS
|
#define SMOOTH_TIPS
|
||||||
// Corner C also default if no other ones used
|
// Corner C also default if no other ones used
|
||||||
irlv1 = (irlv0 * ( neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c)) );
|
irlv1 = (irlv0 * ( neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c)) );
|
||||||
int select1 = 0;
|
int select1 = 0;
|
||||||
#if(CornerB==1) // Corner B
|
#if(CornerB==1) // Corner B
|
||||||
irlv1 = (irlv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) );
|
irlv1 = (irlv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) );
|
||||||
select1 = 1;
|
select1 = 1;
|
||||||
#endif
|
#endif
|
||||||
#if(CornerD==1) // Corner D
|
#if(CornerD==1) // Corner D
|
||||||
if (select1==0) {
|
if (select1==0) {
|
||||||
vec4 c1 = i4.yzwx;
|
vec4 c1 = i4.yzwx;
|
||||||
vec4 g0 = i5.wxyz;
|
vec4 g0 = i5.wxyz;
|
||||||
irlv1 = (irlv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) * (diff(f,f4) * diff(f,i) + diff(h,h5) * diff(h,i) + diff(h,g) + diff(f,c) + eq(b,c1) * eq(d,g0)));
|
irlv1 = (irlv0 * ( neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) * (diff(f,f4) * diff(f,i) + diff(h,h5) * diff(h,i) + diff(h,g) + diff(f,c) + eq(b,c1) * eq(d,g0)));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
irlv2l = diff(e,g) * diff(d,g);
|
irlv2l = diff(e,g) * diff(d,g);
|
||||||
irlv2u = diff(e,c) * diff(b,c);
|
irlv2u = diff(e,c) * diff(b,c);
|
||||||
|
|
||||||
vec4 fx45i = clamp((fx + delta -Co - Ci) / (2.0*delta ), 0.0, 1.0);
|
vec4 fx45i = clamp((fx + delta -Co - Ci) / (2.0*delta ), 0.0, 1.0);
|
||||||
vec4 fx45 = clamp((fx + delta -Co ) / (2.0*delta ), 0.0, 1.0);
|
vec4 fx45 = clamp((fx + delta -Co ) / (2.0*delta ), 0.0, 1.0);
|
||||||
vec4 fx30 = clamp((fx_l + delta_l -Cx ) / (2.0*delta_l), 0.0, 1.0);
|
vec4 fx30 = clamp((fx_l + delta_l -Cx ) / (2.0*delta_l), 0.0, 1.0);
|
||||||
vec4 fx60 = clamp((fx_u + delta_u -Cy ) / (2.0*delta_u), 0.0, 1.0);
|
vec4 fx60 = clamp((fx_u + delta_u -Cy ) / (2.0*delta_u), 0.0, 1.0);
|
||||||
vec4 w1, w2;
|
vec4 w1, w2;
|
||||||
|
|
||||||
w1.x = dot(abs(E-C),rgbw) + dot(abs(E-G),rgbw) + dot(abs(I-H5),rgbw) + dot(abs(I-F4),rgbw) + 4.0*dot(abs(H-F),rgbw);
|
w1.x = dot(abs(E-C),rgbw) + dot(abs(E-G),rgbw) + dot(abs(I-H5),rgbw) + dot(abs(I-F4),rgbw) + 4.0*dot(abs(H-F),rgbw);
|
||||||
w1.y = dot(abs(E-A),rgbw) + dot(abs(E-I),rgbw) + dot(abs(C-F4),rgbw) + dot(abs(C-B1),rgbw) + 4.0*dot(abs(F-B),rgbw);
|
w1.y = dot(abs(E-A),rgbw) + dot(abs(E-I),rgbw) + dot(abs(C-F4),rgbw) + dot(abs(C-B1),rgbw) + 4.0*dot(abs(F-B),rgbw);
|
||||||
w1.z = dot(abs(E-G),rgbw) + dot(abs(E-C),rgbw) + dot(abs(A-B1),rgbw) + dot(abs(A-D0),rgbw) + 4.0*dot(abs(B-D),rgbw);
|
w1.z = dot(abs(E-G),rgbw) + dot(abs(E-C),rgbw) + dot(abs(A-B1),rgbw) + dot(abs(A-D0),rgbw) + 4.0*dot(abs(B-D),rgbw);
|
||||||
w1.w = dot(abs(E-I),rgbw) + dot(abs(E-A),rgbw) + dot(abs(G-D0),rgbw) + dot(abs(G-H5),rgbw) + 4.0*dot(abs(D-H),rgbw);
|
w1.w = dot(abs(E-I),rgbw) + dot(abs(E-A),rgbw) + dot(abs(G-D0),rgbw) + dot(abs(G-H5),rgbw) + 4.0*dot(abs(D-H),rgbw);
|
||||||
w2.x = dot(abs(H-D),rgbw) + dot(abs(H-I5),rgbw) + dot(abs(F-I4),rgbw) + dot(abs(F-B),rgbw) + 4.0*dot(abs(E-I),rgbw);
|
w2.x = dot(abs(H-D),rgbw) + dot(abs(H-I5),rgbw) + dot(abs(F-I4),rgbw) + dot(abs(F-B),rgbw) + 4.0*dot(abs(E-I),rgbw);
|
||||||
w2.y = dot(abs(F-H),rgbw) + dot(abs(F-C4),rgbw) + dot(abs(B-C1),rgbw) + dot(abs(B-D),rgbw) + 4.0*dot(abs(E-C),rgbw);
|
w2.y = dot(abs(F-H),rgbw) + dot(abs(F-C4),rgbw) + dot(abs(B-C1),rgbw) + dot(abs(B-D),rgbw) + 4.0*dot(abs(E-C),rgbw);
|
||||||
w2.z = dot(abs(B-F),rgbw) + dot(abs(B-A1),rgbw) + dot(abs(D-A0),rgbw) + dot(abs(D-H),rgbw) + 4.0*dot(abs(E-A),rgbw);
|
w2.z = dot(abs(B-F),rgbw) + dot(abs(B-A1),rgbw) + dot(abs(D-A0),rgbw) + dot(abs(D-H),rgbw) + 4.0*dot(abs(E-A),rgbw);
|
||||||
w2.w = dot(abs(D-B),rgbw) + dot(abs(D-G0),rgbw) + dot(abs(H-G5),rgbw) + dot(abs(H-F),rgbw) + 4.0*dot(abs(E-G),rgbw);
|
w2.w = dot(abs(D-B),rgbw) + dot(abs(D-G0),rgbw) + dot(abs(H-G5),rgbw) + dot(abs(H-F),rgbw) + 4.0*dot(abs(E-G),rgbw);
|
||||||
|
|
||||||
edri = step(w1, w2) * irlv0;
|
edri = step(w1, w2) * irlv0;
|
||||||
edr = step(w1 + vec4(0.1, 0.1, 0.1, 0.1), w2) * step(vec4(0.5, 0.5, 0.5, 0.5), irlv1);
|
edr = step(w1 + vec4(0.1, 0.1, 0.1, 0.1), w2) * step(vec4(0.5, 0.5, 0.5, 0.5), irlv1);
|
||||||
|
|
||||||
w1.x = dot(abs(F-G),rgbw); w1.y = dot(abs(B-I),rgbw); w1.z = dot(abs(D-C),rgbw); w1.w = dot(abs(H-A),rgbw);
|
w1.x = dot(abs(F-G),rgbw); w1.y = dot(abs(B-I),rgbw); w1.z = dot(abs(D-C),rgbw); w1.w = dot(abs(H-A),rgbw);
|
||||||
w2.x = dot(abs(H-C),rgbw); w2.y = dot(abs(F-A),rgbw); w2.z = dot(abs(B-G),rgbw); w2.w = dot(abs(D-I),rgbw);
|
w2.x = dot(abs(H-C),rgbw); w2.y = dot(abs(F-A),rgbw); w2.z = dot(abs(B-G),rgbw); w2.w = dot(abs(D-I),rgbw);
|
||||||
|
|
||||||
edr_l = step( lv2_cf*w1, w2 ) * irlv2l * edr;
|
edr_l = step( lv2_cf*w1, w2 ) * irlv2l * edr;
|
||||||
edr_u = step( lv2_cf*w2, w1 ) * irlv2u * edr;
|
edr_u = step( lv2_cf*w2, w1 ) * irlv2u * edr;
|
||||||
|
|
||||||
fx45 = edr * fx45;
|
fx45 = edr * fx45;
|
||||||
fx30 = edr_l * fx30;
|
fx30 = edr_l * fx30;
|
||||||
fx60 = edr_u * fx60;
|
fx60 = edr_u * fx60;
|
||||||
fx45i = edri * fx45i;
|
fx45i = edri * fx45i;
|
||||||
|
|
||||||
w1.x = dot(abs(E-F),rgbw); w1.y = dot(abs(E-B),rgbw); w1.z = dot(abs(E-D),rgbw); w1.w = dot(abs(E-H),rgbw);
|
w1.x = dot(abs(E-F),rgbw); w1.y = dot(abs(E-B),rgbw); w1.z = dot(abs(E-D),rgbw); w1.w = dot(abs(E-H),rgbw);
|
||||||
w2.x = dot(abs(E-H),rgbw); w2.y = dot(abs(E-F),rgbw); w2.z = dot(abs(E-B),rgbw); w2.w = dot(abs(E-D),rgbw);
|
w2.x = dot(abs(E-H),rgbw); w2.y = dot(abs(E-F),rgbw); w2.z = dot(abs(E-B),rgbw); w2.w = dot(abs(E-D),rgbw);
|
||||||
|
|
||||||
px = step(w1, w2);
|
px = step(w1, w2);
|
||||||
#ifdef SMOOTH_TIPS
|
#ifdef SMOOTH_TIPS
|
||||||
vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i));
|
vec4 maximos = max(max(fx30, fx60), max(fx45, fx45i));
|
||||||
#else
|
#else
|
||||||
vec4 maximos = max(max(fx30, fx60), fx45);
|
vec4 maximos = max(max(fx30, fx60), fx45);
|
||||||
#endif
|
#endif
|
||||||
vec3 res1 = E;
|
vec3 res1 = E;
|
||||||
res1 = mix(res1, mix(H, F, px.x), maximos.x);
|
res1 = mix(res1, mix(H, F, px.x), maximos.x);
|
||||||
res1 = mix(res1, mix(B, D, px.z), maximos.z);
|
res1 = mix(res1, mix(B, D, px.z), maximos.z);
|
||||||
|
|
||||||
vec3 res2 = E;
|
vec3 res2 = E;
|
||||||
res2 = mix(res2, mix(F, B, px.y), maximos.y);
|
res2 = mix(res2, mix(F, B, px.y), maximos.y);
|
||||||
res2 = mix(res2, mix(D, H, px.w), maximos.w);
|
res2 = mix(res2, mix(D, H, px.w), maximos.w);
|
||||||
|
|
||||||
res = mix(res1, res2, step(c_df(E, res1), c_df(E, res2)));
|
res = mix(res1, res2, step(c_df(E, res1), c_df(E, res2)));
|
||||||
}
|
}
|
||||||
gl_FragColor.xyz = res;
|
gl_FragColor.xyz = res;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,133 +1,133 @@
|
|||||||
/*
|
/*
|
||||||
Hyllian's 5xBR v3.5a Shader
|
Hyllian's 5xBR v3.5a Shader
|
||||||
|
|
||||||
Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com
|
Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
uniform vec2 u_pixelDelta;
|
uniform vec2 u_pixelDelta;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
const float coef = 2.0;
|
const float coef = 2.0;
|
||||||
const vec3 rgbw = vec3(16.163, 23.351, 8.4772);
|
const vec3 rgbw = vec3(16.163, 23.351, 8.4772);
|
||||||
|
|
||||||
const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 );
|
const vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 );
|
||||||
const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 );
|
const vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 );
|
||||||
const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 );
|
const vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 );
|
||||||
const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 );
|
const vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 );
|
||||||
const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 );
|
const vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 );
|
||||||
const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 );
|
const vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 );
|
||||||
const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 );
|
const vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 );
|
||||||
|
|
||||||
|
|
||||||
vec4 df(vec4 A, vec4 B) {
|
vec4 df(vec4 A, vec4 B) {
|
||||||
return abs(A-B);
|
return abs(A-B);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) {
|
vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) {
|
||||||
return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h));
|
return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
|
|
||||||
bool upscale = u_texelDelta.x > (1.6 * u_pixelDelta.x);
|
bool upscale = u_texelDelta.x > (1.6 * u_pixelDelta.x);
|
||||||
vec3 res = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 res = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
|
|
||||||
// Let's skip the whole scaling if output size smaller than 1.6x of input size
|
// Let's skip the whole scaling if output size smaller than 1.6x of input size
|
||||||
if (upscale) {
|
if (upscale) {
|
||||||
|
|
||||||
bvec4 edr, edr_left, edr_up, px; // px = pixel, edr = edge detection rule
|
bvec4 edr, edr_left, edr_up, px; // px = pixel, edr = edge detection rule
|
||||||
bvec4 interp_restriction_lv1, interp_restriction_lv2_left, interp_restriction_lv2_up;
|
bvec4 interp_restriction_lv1, interp_restriction_lv2_left, interp_restriction_lv2_up;
|
||||||
bvec4 nc; // new_color
|
bvec4 nc; // new_color
|
||||||
bvec4 fx, fx_left, fx_up; // inequations of straight lines.
|
bvec4 fx, fx_left, fx_up; // inequations of straight lines.
|
||||||
|
|
||||||
vec2 pS = 1.0 / u_texelDelta.xy;
|
vec2 pS = 1.0 / u_texelDelta.xy;
|
||||||
vec2 fp = fract(v_texcoord0.xy*pS.xy);
|
vec2 fp = fract(v_texcoord0.xy*pS.xy);
|
||||||
vec2 TexCoord_0 = v_texcoord0.xy-fp*u_pixelDelta.xy;
|
vec2 TexCoord_0 = v_texcoord0.xy-fp*u_pixelDelta.xy;
|
||||||
vec2 dx = vec2(u_texelDelta.x,0.0);
|
vec2 dx = vec2(u_texelDelta.x,0.0);
|
||||||
vec2 dy = vec2(0.0,u_texelDelta.y);
|
vec2 dy = vec2(0.0,u_texelDelta.y);
|
||||||
vec2 y2 = dy + dy; vec2 x2 = dx + dx;
|
vec2 y2 = dy + dy; vec2 x2 = dx + dx;
|
||||||
|
|
||||||
vec3 A = texture2D(sampler0, TexCoord_0 -dx -dy ).xyz;
|
vec3 A = texture2D(sampler0, TexCoord_0 -dx -dy ).xyz;
|
||||||
vec3 B = texture2D(sampler0, TexCoord_0 -dy ).xyz;
|
vec3 B = texture2D(sampler0, TexCoord_0 -dy ).xyz;
|
||||||
vec3 C = texture2D(sampler0, TexCoord_0 +dx -dy ).xyz;
|
vec3 C = texture2D(sampler0, TexCoord_0 +dx -dy ).xyz;
|
||||||
vec3 D = texture2D(sampler0, TexCoord_0 -dx ).xyz;
|
vec3 D = texture2D(sampler0, TexCoord_0 -dx ).xyz;
|
||||||
vec3 E = texture2D(sampler0, TexCoord_0 ).xyz;
|
vec3 E = texture2D(sampler0, TexCoord_0 ).xyz;
|
||||||
vec3 F = texture2D(sampler0, TexCoord_0 +dx ).xyz;
|
vec3 F = texture2D(sampler0, TexCoord_0 +dx ).xyz;
|
||||||
vec3 G = texture2D(sampler0, TexCoord_0 -dx +dy ).xyz;
|
vec3 G = texture2D(sampler0, TexCoord_0 -dx +dy ).xyz;
|
||||||
vec3 H = texture2D(sampler0, TexCoord_0 +dy ).xyz;
|
vec3 H = texture2D(sampler0, TexCoord_0 +dy ).xyz;
|
||||||
vec3 I = texture2D(sampler0, TexCoord_0 +dx +dy ).xyz;
|
vec3 I = texture2D(sampler0, TexCoord_0 +dx +dy ).xyz;
|
||||||
vec3 A1 = texture2D(sampler0, TexCoord_0 -dx -y2).xyz;
|
vec3 A1 = texture2D(sampler0, TexCoord_0 -dx -y2).xyz;
|
||||||
vec3 C1 = texture2D(sampler0, TexCoord_0 +dx -y2).xyz;
|
vec3 C1 = texture2D(sampler0, TexCoord_0 +dx -y2).xyz;
|
||||||
vec3 A0 = texture2D(sampler0, TexCoord_0 -x2 -dy).xyz;
|
vec3 A0 = texture2D(sampler0, TexCoord_0 -x2 -dy).xyz;
|
||||||
vec3 G0 = texture2D(sampler0, TexCoord_0 -x2 +dy).xyz;
|
vec3 G0 = texture2D(sampler0, TexCoord_0 -x2 +dy).xyz;
|
||||||
vec3 C4 = texture2D(sampler0, TexCoord_0 +x2 -dy).xyz;
|
vec3 C4 = texture2D(sampler0, TexCoord_0 +x2 -dy).xyz;
|
||||||
vec3 I4 = texture2D(sampler0, TexCoord_0 +x2 +dy).xyz;
|
vec3 I4 = texture2D(sampler0, TexCoord_0 +x2 +dy).xyz;
|
||||||
vec3 G5 = texture2D(sampler0, TexCoord_0 -dx +y2).xyz;
|
vec3 G5 = texture2D(sampler0, TexCoord_0 -dx +y2).xyz;
|
||||||
vec3 I5 = texture2D(sampler0, TexCoord_0 +dx +y2).xyz;
|
vec3 I5 = texture2D(sampler0, TexCoord_0 +dx +y2).xyz;
|
||||||
vec3 B1 = texture2D(sampler0, TexCoord_0 -y2).xyz;
|
vec3 B1 = texture2D(sampler0, TexCoord_0 -y2).xyz;
|
||||||
vec3 D0 = texture2D(sampler0, TexCoord_0 -x2 ).xyz;
|
vec3 D0 = texture2D(sampler0, TexCoord_0 -x2 ).xyz;
|
||||||
vec3 H5 = texture2D(sampler0, TexCoord_0 +y2).xyz;
|
vec3 H5 = texture2D(sampler0, TexCoord_0 +y2).xyz;
|
||||||
vec3 F4 = texture2D(sampler0, TexCoord_0 +x2 ).xyz;
|
vec3 F4 = texture2D(sampler0, TexCoord_0 +x2 ).xyz;
|
||||||
|
|
||||||
vec4 b = vec4(dot(B ,rgbw), dot(D ,rgbw), dot(H ,rgbw), dot(F ,rgbw));
|
vec4 b = vec4(dot(B ,rgbw), dot(D ,rgbw), dot(H ,rgbw), dot(F ,rgbw));
|
||||||
vec4 c = vec4(dot(C ,rgbw), dot(A ,rgbw), dot(G ,rgbw), dot(I ,rgbw));
|
vec4 c = vec4(dot(C ,rgbw), dot(A ,rgbw), dot(G ,rgbw), dot(I ,rgbw));
|
||||||
vec4 d = vec4(b.y, b.z, b.w, b.x);
|
vec4 d = vec4(b.y, b.z, b.w, b.x);
|
||||||
vec4 e = vec4(dot(E,rgbw));
|
vec4 e = vec4(dot(E,rgbw));
|
||||||
vec4 f = vec4(b.w, b.x, b.y, b.z);
|
vec4 f = vec4(b.w, b.x, b.y, b.z);
|
||||||
vec4 g = vec4(c.z, c.w, c.x, c.y);
|
vec4 g = vec4(c.z, c.w, c.x, c.y);
|
||||||
vec4 h = vec4(b.z, b.w, b.x, b.y);
|
vec4 h = vec4(b.z, b.w, b.x, b.y);
|
||||||
vec4 i = vec4(c.w, c.x, c.y, c.z);
|
vec4 i = vec4(c.w, c.x, c.y, c.z);
|
||||||
vec4 i4 = vec4(dot(I4,rgbw), dot(C1,rgbw), dot(A0,rgbw), dot(G5,rgbw));
|
vec4 i4 = vec4(dot(I4,rgbw), dot(C1,rgbw), dot(A0,rgbw), dot(G5,rgbw));
|
||||||
vec4 i5 = vec4(dot(I5,rgbw), dot(C4,rgbw), dot(A1,rgbw), dot(G0,rgbw));
|
vec4 i5 = vec4(dot(I5,rgbw), dot(C4,rgbw), dot(A1,rgbw), dot(G0,rgbw));
|
||||||
vec4 h5 = vec4(dot(H5,rgbw), dot(F4,rgbw), dot(B1,rgbw), dot(D0,rgbw));
|
vec4 h5 = vec4(dot(H5,rgbw), dot(F4,rgbw), dot(B1,rgbw), dot(D0,rgbw));
|
||||||
vec4 f4 = vec4(h5.y, h5.z, h5.w, h5.x);
|
vec4 f4 = vec4(h5.y, h5.z, h5.w, h5.x);
|
||||||
|
|
||||||
// These inequations define the line below which interpolation occurs.
|
// These inequations define the line below which interpolation occurs.
|
||||||
fx = greaterThan(Ao*fp.y+Bo*fp.x,Co);
|
fx = greaterThan(Ao*fp.y+Bo*fp.x,Co);
|
||||||
fx_left = greaterThan(Ax*fp.y+Bx*fp.x,Cx);
|
fx_left = greaterThan(Ax*fp.y+Bx*fp.x,Cx);
|
||||||
fx_up = greaterThan(Ay*fp.y+By*fp.x,Cy);
|
fx_up = greaterThan(Ay*fp.y+By*fp.x,Cy);
|
||||||
|
|
||||||
interp_restriction_lv1 = bvec4(vec4(notEqual(e,f))*vec4(notEqual(e,h)));
|
interp_restriction_lv1 = bvec4(vec4(notEqual(e,f))*vec4(notEqual(e,h)));
|
||||||
interp_restriction_lv2_left = bvec4(vec4(notEqual(e,g))*vec4(notEqual(d,g)));
|
interp_restriction_lv2_left = bvec4(vec4(notEqual(e,g))*vec4(notEqual(d,g)));
|
||||||
interp_restriction_lv2_up = bvec4(vec4(notEqual(e,c))*vec4(notEqual(b,c)));
|
interp_restriction_lv2_up = bvec4(vec4(notEqual(e,c))*vec4(notEqual(b,c)));
|
||||||
|
|
||||||
edr = bvec4(vec4(lessThan(weighted_distance( e, c, g, i, h5, f4, h, f), weighted_distance( h, d, i5, f, i4, b, e, i)))*vec4(interp_restriction_lv1));
|
edr = bvec4(vec4(lessThan(weighted_distance( e, c, g, i, h5, f4, h, f), weighted_distance( h, d, i5, f, i4, b, e, i)))*vec4(interp_restriction_lv1));
|
||||||
edr_left = bvec4(vec4(lessThanEqual(coef*df(f,g),df(h,c)))*vec4(interp_restriction_lv2_left));
|
edr_left = bvec4(vec4(lessThanEqual(coef*df(f,g),df(h,c)))*vec4(interp_restriction_lv2_left));
|
||||||
edr_up = bvec4(vec4(greaterThanEqual(df(f,g),coef*df(h,c)))*vec4(interp_restriction_lv2_up));
|
edr_up = bvec4(vec4(greaterThanEqual(df(f,g),coef*df(h,c)))*vec4(interp_restriction_lv2_up));
|
||||||
|
|
||||||
nc.x = ( edr.x && (fx.x || edr_left.x && fx_left.x || edr_up.x && fx_up.x) );
|
nc.x = ( edr.x && (fx.x || edr_left.x && fx_left.x || edr_up.x && fx_up.x) );
|
||||||
nc.y = ( edr.y && (fx.y || edr_left.y && fx_left.y || edr_up.y && fx_up.y) );
|
nc.y = ( edr.y && (fx.y || edr_left.y && fx_left.y || edr_up.y && fx_up.y) );
|
||||||
nc.z = ( edr.z && (fx.z || edr_left.z && fx_left.z || edr_up.z && fx_up.z) );
|
nc.z = ( edr.z && (fx.z || edr_left.z && fx_left.z || edr_up.z && fx_up.z) );
|
||||||
nc.w = ( edr.w && (fx.w || edr_left.w && fx_left.w || edr_up.w && fx_up.w) );
|
nc.w = ( edr.w && (fx.w || edr_left.w && fx_left.w || edr_up.w && fx_up.w) );
|
||||||
|
|
||||||
px = lessThanEqual(df(e,f),df(e,h));
|
px = lessThanEqual(df(e,f),df(e,h));
|
||||||
|
|
||||||
res = nc.x ? px.x ? F : H : nc.y ? px.y ? B : F : nc.z ? px.z ? D : B : nc.w ? px.w ? H : D : E;
|
res = nc.x ? px.x ? F : H : nc.y ? px.y ? B : F : nc.z ? px.z ? D : B : nc.w ? px.w ? H : D : E;
|
||||||
}
|
}
|
||||||
gl_FragColor.rgb = res;
|
gl_FragColor.rgb = res;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +1,34 @@
|
|||||||
/*
|
/*
|
||||||
Hyllian's 5xBR v3.5a Shader
|
Hyllian's 5xBR v3.5a Shader
|
||||||
|
|
||||||
Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com
|
Copyright (C) 2011 Hyllian/Jararaca - sergiogdb@gmail.com
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
v_texcoord0 = a_texcoord0;
|
v_texcoord0 = a_texcoord0;
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
}
|
}
|
||||||
@@ -1,73 +1,73 @@
|
|||||||
// PPSSPP: Simple Gauss filter
|
// PPSSPP: Simple Gauss filter
|
||||||
// Made by Bigpet
|
// Made by Bigpet
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
|
|
||||||
// The inverse of the texture dimensions along X and Y
|
// The inverse of the texture dimensions along X and Y
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
uniform vec2 u_pixelDelta;
|
uniform vec2 u_pixelDelta;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
// The parameters are hardcoded for now, but could be
|
// The parameters are hardcoded for now, but could be
|
||||||
// made into uniforms to control fromt he program.
|
// made into uniforms to control fromt he program.
|
||||||
float GAUSS_SPAN_MAX = 1.5;
|
float GAUSS_SPAN_MAX = 1.5;
|
||||||
|
|
||||||
//just a variable to describe the maximu
|
//just a variable to describe the maximu
|
||||||
float GAUSS_KERNEL_SIZE = 5.0;
|
float GAUSS_KERNEL_SIZE = 5.0;
|
||||||
//indices
|
//indices
|
||||||
// XX XX 00 XX XX
|
// XX XX 00 XX XX
|
||||||
// XX 01 02 03 XX
|
// XX 01 02 03 XX
|
||||||
// 04 05 06 07 08
|
// 04 05 06 07 08
|
||||||
// XX 09 10 11 XX
|
// XX 09 10 11 XX
|
||||||
// XX XX 12 XX XX
|
// XX XX 12 XX XX
|
||||||
|
|
||||||
//filter strength, rather smooth
|
//filter strength, rather smooth
|
||||||
// XX XX 01 XX XX
|
// XX XX 01 XX XX
|
||||||
// XX 03 08 03 XX
|
// XX 03 08 03 XX
|
||||||
// 01 08 10 08 01
|
// 01 08 10 08 01
|
||||||
// XX 03 08 03 XX
|
// XX 03 08 03 XX
|
||||||
// XX XX 01 XX XX
|
// XX XX 01 XX XX
|
||||||
|
|
||||||
vec2 offset = u_pixelDelta*GAUSS_SPAN_MAX/GAUSS_KERNEL_SIZE;
|
vec2 offset = u_pixelDelta*GAUSS_SPAN_MAX/GAUSS_KERNEL_SIZE;
|
||||||
|
|
||||||
vec3 rgbSimple0 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-2.0)).xyz;
|
vec3 rgbSimple0 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-2.0)).xyz;
|
||||||
vec3 rgbSimple1 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0,-1.0)).xyz;
|
vec3 rgbSimple1 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0,-1.0)).xyz;
|
||||||
vec3 rgbSimple2 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-1.0)).xyz;
|
vec3 rgbSimple2 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-1.0)).xyz;
|
||||||
vec3 rgbSimple3 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0,-1.0)).xyz;
|
vec3 rgbSimple3 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0,-1.0)).xyz;
|
||||||
vec3 rgbSimple4 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-2.0, 0.0)).xyz;
|
vec3 rgbSimple4 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-2.0, 0.0)).xyz;
|
||||||
vec3 rgbSimple5 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 0.0)).xyz;
|
vec3 rgbSimple5 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 0.0)).xyz;
|
||||||
vec3 rgbSimple6 = 10.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 0.0)).xyz;
|
vec3 rgbSimple6 = 10.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 0.0)).xyz;
|
||||||
vec3 rgbSimple7 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 0.0)).xyz;
|
vec3 rgbSimple7 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 0.0)).xyz;
|
||||||
vec3 rgbSimple8 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 2.0, 0.0)).xyz;
|
vec3 rgbSimple8 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 2.0, 0.0)).xyz;
|
||||||
vec3 rgbSimple9 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 1.0)).xyz;
|
vec3 rgbSimple9 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 1.0)).xyz;
|
||||||
vec3 rgbSimple10= 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 1.0)).xyz;
|
vec3 rgbSimple10= 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 1.0)).xyz;
|
||||||
vec3 rgbSimple11= 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 1.0)).xyz;
|
vec3 rgbSimple11= 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 1.0)).xyz;
|
||||||
vec3 rgbSimple12= 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 2.0)).xyz;
|
vec3 rgbSimple12= 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 2.0)).xyz;
|
||||||
//vec3 rgbSimple10= vec3(1.0,0.0,0.0);
|
//vec3 rgbSimple10= vec3(1.0,0.0,0.0);
|
||||||
//vec3 rgbSimple11= vec3(1.0,0.0,0.0);
|
//vec3 rgbSimple11= vec3(1.0,0.0,0.0);
|
||||||
//vec3 rgbSimple12= vec3(1.0,0.0,0.0);
|
//vec3 rgbSimple12= vec3(1.0,0.0,0.0);
|
||||||
|
|
||||||
vec3 rgb = rgbSimple0 +
|
vec3 rgb = rgbSimple0 +
|
||||||
rgbSimple1 +
|
rgbSimple1 +
|
||||||
rgbSimple2 +
|
rgbSimple2 +
|
||||||
rgbSimple3 +
|
rgbSimple3 +
|
||||||
rgbSimple4 +
|
rgbSimple4 +
|
||||||
rgbSimple5 +
|
rgbSimple5 +
|
||||||
rgbSimple6 +
|
rgbSimple6 +
|
||||||
rgbSimple7 +
|
rgbSimple7 +
|
||||||
rgbSimple8 +
|
rgbSimple8 +
|
||||||
rgbSimple9 +
|
rgbSimple9 +
|
||||||
rgbSimple10 +
|
rgbSimple10 +
|
||||||
rgbSimple11 +
|
rgbSimple11 +
|
||||||
rgbSimple12;
|
rgbSimple12;
|
||||||
rgb = rgb / 58.0;
|
rgb = rgb / 58.0;
|
||||||
gl_FragColor.xyz=rgb;
|
gl_FragColor.xyz=rgb;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,69 +1,69 @@
|
|||||||
// AA-Color shader, Modified to use in PPSSPP. Grabbed from:
|
// AA-Color shader, Modified to use in PPSSPP. Grabbed from:
|
||||||
// http://forums.ngemu.com/showthread.php?t=76098
|
// http://forums.ngemu.com/showthread.php?t=76098
|
||||||
|
|
||||||
// by guest(r) (guest.r@gmail.com)
|
// by guest(r) (guest.r@gmail.com)
|
||||||
// license: GNU-GPL
|
// license: GNU-GPL
|
||||||
|
|
||||||
// Color variables
|
// Color variables
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const vec3 c_ch = vec3(1.0,1.0,1.0); // rgb color channel intensity
|
const vec3 c_ch = vec3(1.0,1.0,1.0); // rgb color channel intensity
|
||||||
const float a = 1.20 ; // saturation
|
const float a = 1.20 ; // saturation
|
||||||
const float b = 1.00 ; // brightness
|
const float b = 1.00 ; // brightness
|
||||||
const float c = 1.25 ; // contrast
|
const float c = 1.25 ; // contrast
|
||||||
|
|
||||||
// you can use contrast1,contrast2...contrast4 (or contrast0 for speedup)
|
// you can use contrast1,contrast2...contrast4 (or contrast0 for speedup)
|
||||||
|
|
||||||
float contrast0(float x)
|
float contrast0(float x)
|
||||||
{ return x; }
|
{ return x; }
|
||||||
|
|
||||||
float contrast1(float x)
|
float contrast1(float x)
|
||||||
{ x = x*1.1547-1.0;
|
{ x = x*1.1547-1.0;
|
||||||
return sign(x)*pow(abs(x),1.0/c)*0.86 + 0.86;}
|
return sign(x)*pow(abs(x),1.0/c)*0.86 + 0.86;}
|
||||||
|
|
||||||
float contrast2(float x)
|
float contrast2(float x)
|
||||||
{ return normalize(vec2(pow(x,c),pow(0.86,c))).x*1.72;}
|
{ return normalize(vec2(pow(x,c),pow(0.86,c))).x*1.72;}
|
||||||
|
|
||||||
float contrast3(float x)
|
float contrast3(float x)
|
||||||
{ return 1.73*pow(0.57735*x,c); }
|
{ return 1.73*pow(0.57735*x,c); }
|
||||||
|
|
||||||
float contrast4(float x)
|
float contrast4(float x)
|
||||||
{ return clamp(0.866 + c*(x-0.866),0.05, 1.73); }
|
{ return clamp(0.866 + c*(x-0.866),0.05, 1.73); }
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
||||||
vec3 c01 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
vec3 c01 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
||||||
vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
vec3 c21 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
vec3 c21 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
||||||
vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
||||||
|
|
||||||
vec3 dt = vec3(1.0,1.0,1.0);
|
vec3 dt = vec3(1.0,1.0,1.0);
|
||||||
float k1=dot(abs(c01-c21),dt);
|
float k1=dot(abs(c01-c21),dt);
|
||||||
float k2=dot(abs(c10-c12),dt);
|
float k2=dot(abs(c10-c12),dt);
|
||||||
|
|
||||||
vec3 color = (k1*(c10+c12)+k2*(c01+c21)+0.001*c11)/(2.0*(k1+k2)+0.001);
|
vec3 color = (k1*(c10+c12)+k2*(c01+c21)+0.001*c11)/(2.0*(k1+k2)+0.001);
|
||||||
|
|
||||||
float x = sqrt(dot(color,color));
|
float x = sqrt(dot(color,color));
|
||||||
|
|
||||||
color.r = pow(color.r+0.001,a);
|
color.r = pow(color.r+0.001,a);
|
||||||
color.g = pow(color.g+0.001,a);
|
color.g = pow(color.g+0.001,a);
|
||||||
color.b = pow(color.b+0.001,a);
|
color.b = pow(color.b+0.001,a);
|
||||||
|
|
||||||
gl_FragColor.rgb = contrast4(x)*normalize(color*c_ch)*b;
|
gl_FragColor.rgb = contrast4(x)*normalize(color*c_ch)*b;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,38 +1,38 @@
|
|||||||
// by guest(r) - guest.r@gmail.com
|
// by guest(r) - guest.r@gmail.com
|
||||||
// license: GNU-GPL
|
// license: GNU-GPL
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
float scaleoffset = 0.8;
|
float scaleoffset = 0.8;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
|
|
||||||
{
|
{
|
||||||
float x = u_texelDelta.x*scaleoffset;
|
float x = u_texelDelta.x*scaleoffset;
|
||||||
float y = u_texelDelta.y*scaleoffset;
|
float y = u_texelDelta.y*scaleoffset;
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
v_texcoord0 = a_texcoord0.xyxy;
|
v_texcoord0 = a_texcoord0.xyxy;
|
||||||
v_texcoord1 = v_texcoord0;
|
v_texcoord1 = v_texcoord0;
|
||||||
v_texcoord2 = v_texcoord0;
|
v_texcoord2 = v_texcoord0;
|
||||||
v_texcoord4 = v_texcoord0;
|
v_texcoord4 = v_texcoord0;
|
||||||
v_texcoord5 = v_texcoord0;
|
v_texcoord5 = v_texcoord0;
|
||||||
v_texcoord1.y-=y;
|
v_texcoord1.y-=y;
|
||||||
v_texcoord2.y+=y;
|
v_texcoord2.y+=y;
|
||||||
v_texcoord4.x-=x;
|
v_texcoord4.x-=x;
|
||||||
v_texcoord5.x+=x;
|
v_texcoord5.x+=x;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,47 +1,47 @@
|
|||||||
// Simple Bloom shader; created to use in PPSSPP.
|
// Simple Bloom shader; created to use in PPSSPP.
|
||||||
// Without excessive samples and complex nested loops
|
// Without excessive samples and complex nested loops
|
||||||
// (to make it compatible with low-end GPUs and to ensure ps_2_0 compatibility).
|
// (to make it compatible with low-end GPUs and to ensure ps_2_0 compatibility).
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
uniform vec4 u_setting;
|
uniform vec4 u_setting;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 color = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 color = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
vec4 sum = vec4(0);
|
vec4 sum = vec4(0);
|
||||||
vec3 bloom;
|
vec3 bloom;
|
||||||
|
|
||||||
for(int i= -3 ;i < 3; i++)
|
for(int i= -3 ;i < 3; i++)
|
||||||
{
|
{
|
||||||
sum += texture2D(sampler0, v_texcoord0 + vec2(-1, i)*0.004) * u_setting.x;
|
sum += texture2D(sampler0, v_texcoord0 + vec2(-1, i)*0.004) * u_setting.x;
|
||||||
sum += texture2D(sampler0, v_texcoord0 + vec2(0, i)*0.004) * u_setting.x;
|
sum += texture2D(sampler0, v_texcoord0 + vec2(0, i)*0.004) * u_setting.x;
|
||||||
sum += texture2D(sampler0, v_texcoord0 + vec2(1, i)*0.004) * u_setting.x;
|
sum += texture2D(sampler0, v_texcoord0 + vec2(1, i)*0.004) * u_setting.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (color.r < 0.3 && color.g < 0.3 && color.b < 0.3)
|
if (color.r < 0.3 && color.g < 0.3 && color.b < 0.3)
|
||||||
{
|
{
|
||||||
bloom = sum.xyz*sum.xyz*0.012 + color;
|
bloom = sum.xyz*sum.xyz*0.012 + color;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (color.r < 0.5 && color.g < 0.5 && color.b < 0.5)
|
if (color.r < 0.5 && color.g < 0.5 && color.b < 0.5)
|
||||||
{
|
{
|
||||||
bloom = sum.xyz*sum.xyz*0.009 + color;
|
bloom = sum.xyz*sum.xyz*0.009 + color;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bloom = sum.xyz*sum.xyz*0.0075 + color;
|
bloom = sum.xyz*sum.xyz*0.0075 + color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bloom = mix(color, bloom, u_setting.y);
|
bloom = mix(color, bloom, u_setting.y);
|
||||||
gl_FragColor.rgb = bloom;
|
gl_FragColor.rgb = bloom;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +1,52 @@
|
|||||||
// Modified to use in PPSSPP. Grabbed from:
|
// Modified to use in PPSSPP. Grabbed from:
|
||||||
// http://forums.ngemu.com/showthread.php?t=76098
|
// http://forums.ngemu.com/showthread.php?t=76098
|
||||||
|
|
||||||
// Advanced Cartoon shader I
|
// Advanced Cartoon shader I
|
||||||
// by guest(r) (guest.r@gmail.com)
|
// by guest(r) (guest.r@gmail.com)
|
||||||
// license: GNU-GPL
|
// license: GNU-GPL
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform vec4 u_setting;
|
uniform vec4 u_setting;
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 c00 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
vec3 c00 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
||||||
vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
||||||
vec3 c20 = texture2D(sampler0, v_texcoord2.zw).xyz;
|
vec3 c20 = texture2D(sampler0, v_texcoord2.zw).xyz;
|
||||||
vec3 c01 = texture2D(sampler0, v_texcoord3.xy).xyz;
|
vec3 c01 = texture2D(sampler0, v_texcoord3.xy).xyz;
|
||||||
vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
vec3 c21 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
vec3 c21 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
||||||
vec3 c02 = texture2D(sampler0, v_texcoord1.zw).xyz;
|
vec3 c02 = texture2D(sampler0, v_texcoord1.zw).xyz;
|
||||||
vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
||||||
vec3 c22 = texture2D(sampler0, v_texcoord6.xy).xyz;
|
vec3 c22 = texture2D(sampler0, v_texcoord6.xy).xyz;
|
||||||
vec3 dt = vec3(1.0,1.0,1.0);
|
vec3 dt = vec3(1.0,1.0,1.0);
|
||||||
|
|
||||||
float d1=dot(abs(c00-c22),dt);
|
float d1=dot(abs(c00-c22),dt);
|
||||||
float d2=dot(abs(c20-c02),dt);
|
float d2=dot(abs(c20-c02),dt);
|
||||||
float hl=dot(abs(c01-c21),dt);
|
float hl=dot(abs(c01-c21),dt);
|
||||||
float vl=dot(abs(c10-c12),dt);
|
float vl=dot(abs(c10-c12),dt);
|
||||||
float d = u_setting.x*(d1+d2+hl+vl)/(dot(c11,dt)+0.15);
|
float d = u_setting.x*(d1+d2+hl+vl)/(dot(c11,dt)+0.15);
|
||||||
|
|
||||||
float lc = 4.0*length(c11);
|
float lc = 4.0*length(c11);
|
||||||
float f = fract(lc); f*=f;
|
float f = fract(lc); f*=f;
|
||||||
lc = 0.25*(floor(lc) + f*f)+0.05;
|
lc = 0.25*(floor(lc) + f*f)+0.05;
|
||||||
c11 = 4.0*normalize(c11);
|
c11 = 4.0*normalize(c11);
|
||||||
vec3 frct = fract(c11); frct*=frct;
|
vec3 frct = fract(c11); frct*=frct;
|
||||||
c11 = floor(c11)+ 0.05*dt + frct*frct;
|
c11 = floor(c11)+ 0.05*dt + frct*frct;
|
||||||
gl_FragColor.rgb = 0.25*lc*(1.1-d*sqrt(d))*c11;
|
gl_FragColor.rgb = 0.25*lc*(1.1-d*sqrt(d))*c11;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,39 +1,39 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
varying vec4 v_texcoord4;
|
varying vec4 v_texcoord4;
|
||||||
varying vec4 v_texcoord5;
|
varying vec4 v_texcoord5;
|
||||||
varying vec4 v_texcoord6;
|
varying vec4 v_texcoord6;
|
||||||
|
|
||||||
float scaleoffset = 0.8; //edge detection offset
|
float scaleoffset = 0.8; //edge detection offset
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float x = u_texelDelta.x*scaleoffset;
|
float x = u_texelDelta.x*scaleoffset;
|
||||||
float y = u_texelDelta.y*scaleoffset;
|
float y = u_texelDelta.y*scaleoffset;
|
||||||
vec2 dg1 = vec2( x,y);
|
vec2 dg1 = vec2( x,y);
|
||||||
vec2 dg2 = vec2(-x,y);
|
vec2 dg2 = vec2(-x,y);
|
||||||
vec2 dx = vec2(x,0.0);
|
vec2 dx = vec2(x,0.0);
|
||||||
vec2 dy = vec2(0.0,y);
|
vec2 dy = vec2(0.0,y);
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
v_texcoord0=a_texcoord0.xyxy;
|
v_texcoord0=a_texcoord0.xyxy;
|
||||||
v_texcoord1.xy = v_texcoord0.xy - dy;
|
v_texcoord1.xy = v_texcoord0.xy - dy;
|
||||||
v_texcoord2.xy = v_texcoord0.xy + dy;
|
v_texcoord2.xy = v_texcoord0.xy + dy;
|
||||||
v_texcoord3.xy = v_texcoord0.xy - dx;
|
v_texcoord3.xy = v_texcoord0.xy - dx;
|
||||||
v_texcoord4.xy = v_texcoord0.xy + dx;
|
v_texcoord4.xy = v_texcoord0.xy + dx;
|
||||||
v_texcoord5.xy = v_texcoord0.xy - dg1;
|
v_texcoord5.xy = v_texcoord0.xy - dg1;
|
||||||
v_texcoord6.xy = v_texcoord0.xy + dg1;
|
v_texcoord6.xy = v_texcoord0.xy + dg1;
|
||||||
v_texcoord1.zw = v_texcoord0.xy - dg2;
|
v_texcoord1.zw = v_texcoord0.xy - dg2;
|
||||||
v_texcoord2.zw = v_texcoord0.xy + dg2;
|
v_texcoord2.zw = v_texcoord0.xy + dg2;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
// Color correction
|
// Color correction
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
uniform vec4 u_setting;
|
uniform vec4 u_setting;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 rgb = texture2D( sampler0, v_texcoord0 ).xyz;
|
vec3 rgb = texture2D( sampler0, v_texcoord0 ).xyz;
|
||||||
rgb = vec3(mix(vec3(dot(rgb, vec3(0.299, 0.587, 0.114))), rgb, u_setting.y));
|
rgb = vec3(mix(vec3(dot(rgb, vec3(0.299, 0.587, 0.114))), rgb, u_setting.y));
|
||||||
rgb = (rgb-0.5)*u_setting.z+0.5+u_setting.x-1.0;
|
rgb = (rgb-0.5)*u_setting.z+0.5+u_setting.x-1.0;
|
||||||
gl_FragColor.rgb = pow(rgb, vec3(1.0/u_setting.w));
|
gl_FragColor.rgb = pow(rgb, vec3(1.0/u_setting.w));
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
// Retro (CRT) shader, created to use in PPSSPP.
|
// Retro (CRT) shader, created to use in PPSSPP.
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
uniform vec4 u_time;
|
uniform vec4 u_time;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
// scanlines
|
// scanlines
|
||||||
int vPos = int( ( v_texcoord0.y + u_time.x * 0.5 ) * 272.0 );
|
int vPos = int( ( v_texcoord0.y + u_time.x * 0.5 ) * 272.0 );
|
||||||
float line_intensity = mod( float(vPos), 2.0 );
|
float line_intensity = mod( float(vPos), 2.0 );
|
||||||
|
|
||||||
// color shift
|
// color shift
|
||||||
float off = line_intensity * 0.0005;
|
float off = line_intensity * 0.0005;
|
||||||
vec2 shift = vec2( off, 0 );
|
vec2 shift = vec2( off, 0 );
|
||||||
|
|
||||||
// shift R and G channels to simulate NTSC color bleed
|
// shift R and G channels to simulate NTSC color bleed
|
||||||
vec2 colorShift = vec2( 0.001, 0 );
|
vec2 colorShift = vec2( 0.001, 0 );
|
||||||
float r = texture2D( sampler0, v_texcoord0 + colorShift + shift ).x;
|
float r = texture2D( sampler0, v_texcoord0 + colorShift + shift ).x;
|
||||||
float g = texture2D( sampler0, v_texcoord0 - colorShift + shift ).y;
|
float g = texture2D( sampler0, v_texcoord0 - colorShift + shift ).y;
|
||||||
float b = texture2D( sampler0, v_texcoord0 ).z;
|
float b = texture2D( sampler0, v_texcoord0 ).z;
|
||||||
|
|
||||||
vec4 c = vec4( r, g * 0.99, b, 1.0 ) * clamp( line_intensity, 0.85, 1.0 );
|
vec4 c = vec4( r, g * 0.99, b, 1.0 ) * clamp( line_intensity, 0.85, 1.0 );
|
||||||
|
|
||||||
float rollbar = sin( ( v_texcoord0.y + u_time.x ) * 4.0 );
|
float rollbar = sin( ( v_texcoord0.y + u_time.x ) * 4.0 );
|
||||||
|
|
||||||
gl_FragColor.rgba = c + (rollbar * 0.02);
|
gl_FragColor.rgba = c + (rollbar * 0.02);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,162 +1,163 @@
|
|||||||
# You can have multiple ini files if you want, it doesn't matter.
|
# You can have multiple ini files if you want, it doesn't matter.
|
||||||
[FXAA]
|
[FXAA]
|
||||||
Name=FXAA Antialiasing
|
Name=FXAA Antialiasing
|
||||||
Author=nVidia
|
Author=nVidia
|
||||||
Fragment=fxaa.fsh
|
Fragment=fxaa.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
[CRT]
|
[CRT]
|
||||||
Name=CRT Scanlines
|
Name=CRT Scanlines
|
||||||
Author=KillaMaaki
|
Author=KillaMaaki
|
||||||
Fragment=crt.fsh
|
Fragment=crt.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
60fps=True
|
60fps=True
|
||||||
[Natural]
|
[Natural]
|
||||||
Name=Natural Colors
|
Name=Natural Colors
|
||||||
Fragment=natural.fsh
|
Fragment=natural.fsh
|
||||||
Vertex=natural.vsh
|
Vertex=natural.vsh
|
||||||
[NaturalA]
|
[NaturalA]
|
||||||
Name=Natural Colors (No Blur)
|
Name=Natural Colors (No Blur)
|
||||||
Fragment=naturalA.fsh
|
Fragment=naturalA.fsh
|
||||||
Vertex=naturalA.vsh
|
Vertex=naturalA.vsh
|
||||||
[Vignette]
|
[Vignette]
|
||||||
Name=Vignette
|
Name=Vignette
|
||||||
Author=Henrik
|
Author=Henrik
|
||||||
Fragment=vignette.fsh
|
Fragment=vignette.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
[Grayscale]
|
[Grayscale]
|
||||||
Name=Grayscale
|
Name=Grayscale
|
||||||
Author=Henrik
|
Author=Henrik
|
||||||
Fragment=grayscale.fsh
|
Fragment=grayscale.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
[Bloom]
|
[Bloom]
|
||||||
Name=Bloom
|
Name=Bloom
|
||||||
Fragment=bloom.fsh
|
Fragment=bloom.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
SettingName1=Amount
|
SettingName1=Amount
|
||||||
SettingDefaultValue1=0.6
|
SettingDefaultValue1=0.6
|
||||||
SettingMaxValue1=1.0
|
SettingMaxValue1=1.0
|
||||||
SettingMinValue1=0.0
|
SettingMinValue1=0.0
|
||||||
SettingName2=Power
|
SettingName2=Power
|
||||||
SettingDefaultValue2=0.5
|
SettingDefaultValue2=0.5
|
||||||
SettingMaxValue2=1.0
|
SettingMaxValue2=1.0
|
||||||
SettingMinValue2=0.0
|
SettingMinValue2=0.0
|
||||||
[Sharpen]
|
[Sharpen]
|
||||||
Name=Sharpen
|
Name=Sharpen
|
||||||
Fragment=sharpen.fsh
|
Fragment=sharpen.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
SettingName1=Amount
|
SettingName1=Amount
|
||||||
SettingDefaultValue1=1.5
|
SettingDefaultValue1=1.5
|
||||||
SettingMaxValue1=3.0
|
SettingMaxValue1=3.0
|
||||||
SettingMinValue1=1.0
|
SettingMinValue1=1.0
|
||||||
SettingStep1=0.1
|
SettingStep1=0.1
|
||||||
[InverseColors]
|
[InverseColors]
|
||||||
Name=Inverse Colors
|
Name=Inverse Colors
|
||||||
Author=Henrik
|
Author=Henrik
|
||||||
Fragment=inversecolors.fsh
|
Fragment=inversecolors.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
[Scanlines]
|
[Scanlines]
|
||||||
Name=Scanlines (CRT)
|
Name=Scanlines (CRT)
|
||||||
Fragment=scanlines.fsh
|
Fragment=scanlines.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
SettingName1=Amount
|
SettingName1=Amount
|
||||||
SettingDefaultValue1=1.0
|
SettingDefaultValue1=1.0
|
||||||
SettingMaxValue1=1.0
|
SettingMaxValue1=1.0
|
||||||
SettingMinValue1=0.0
|
SettingMinValue1=0.0
|
||||||
SettingStep1=0.1
|
SettingStep1=0.1
|
||||||
SettingName2=Intensity
|
SettingName2=Intensity
|
||||||
SettingDefaultValue2=0.5
|
SettingDefaultValue2=0.5
|
||||||
SettingMaxValue2=1.0
|
SettingMaxValue2=1.0
|
||||||
SettingMinValue2=0.0
|
SettingMinValue2=0.0
|
||||||
SettingStep2=0.05
|
SettingStep2=0.05
|
||||||
[Cartoon]
|
[Cartoon]
|
||||||
Name=Cartoon
|
Name=Cartoon
|
||||||
Fragment=cartoon.fsh
|
Fragment=cartoon.fsh
|
||||||
Vertex=cartoon.vsh
|
Vertex=cartoon.vsh
|
||||||
SettingName1=Black border
|
SettingName1=Black border
|
||||||
SettingDefaultValue1=0.5
|
SettingDefaultValue1=0.5
|
||||||
SettingMaxValue1=1.0
|
SettingMaxValue1=1.0
|
||||||
SettingMinValue1=0.0
|
SettingMinValue1=0.0
|
||||||
[4xHqGLSL]
|
[4xHqGLSL]
|
||||||
Name=4xHqGLSL Upscaler
|
Name=4xHqGLSL Upscaler
|
||||||
Fragment=4xhqglsl.fsh
|
Fragment=4xhqglsl.fsh
|
||||||
Vertex=4xhqglsl.vsh
|
Vertex=4xhqglsl.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
Upscaling=True
|
Upscaling=True
|
||||||
[AAColor]
|
[AAColor]
|
||||||
Name=AA-Color
|
Name=AA-Color
|
||||||
Fragment=aacolor.fsh
|
Fragment=aacolor.fsh
|
||||||
Vertex=aacolor.vsh
|
Vertex=aacolor.vsh
|
||||||
[UpscaleSpline36]
|
[UpscaleSpline36]
|
||||||
Name=Spline36 Upscaler
|
Name=Spline36 Upscaler
|
||||||
Fragment=upscale_spline36.fsh
|
Fragment=upscale_spline36.fsh
|
||||||
Vertex=upscale_spline36.vsh
|
Vertex=upscale_spline36.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
RequiresIntSupport=True
|
RequiresIntSupport=True
|
||||||
Upscaling=True
|
Upscaling=True
|
||||||
[5xBR]
|
[5xBR]
|
||||||
Name=5xBR Upscaler
|
Name=5xBR Upscaler
|
||||||
Author=Hyllian
|
Author=Hyllian
|
||||||
Fragment=5xBR.fsh
|
Fragment=5xBR.fsh
|
||||||
Vertex=5xBR.vsh
|
Vertex=5xBR.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
Upscaling=True
|
Upscaling=True
|
||||||
[5xBR-lv2]
|
[5xBR-lv2]
|
||||||
Name=5xBR lv2 Upscaler
|
Name=5xBR lv2 Upscaler
|
||||||
Author=Hyllian (tweak by guest.r)
|
Author=Hyllian (tweak by guest.r)
|
||||||
Fragment=5xBR-lv2.fsh
|
Fragment=5xBR-lv2.fsh
|
||||||
Vertex=5xBR.vsh
|
Vertex=5xBR.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
Upscaling=True
|
Upscaling=True
|
||||||
[VideoSmoothingAA]
|
[VideoSmoothingAA]
|
||||||
Name=Video aware guest.r AA 4.o
|
Name=Video aware guest.r AA 4.o
|
||||||
Author=guest.r(tweak by LunaMoo)
|
Author=guest.r(tweak by LunaMoo)
|
||||||
Fragment=videoAA.fsh
|
Fragment=videoAA.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
[SSAA(Gauss)]
|
[SSAA(Gauss)]
|
||||||
Name=Super Sampling AA(Gauss)
|
Name=Super Sampling AA(Gauss)
|
||||||
Fragment=GaussianDownscale.fsh
|
Fragment=GaussianDownscale.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
OutputResolution=True
|
OutputResolution=True
|
||||||
SSAA=2
|
SSAA=2
|
||||||
[ColorCorrection]
|
[ColorCorrection]
|
||||||
Name=Color correction
|
Name=Color correction
|
||||||
Fragment=colorcorrection.fsh
|
Fragment=colorcorrection.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
SettingName1=Brightness
|
SettingName1=Brightness
|
||||||
SettingDefaultValue1=1.0
|
SettingDefaultValue1=1.0
|
||||||
SettingMaxValue1=2.0
|
SettingMaxValue1=2.0
|
||||||
SettingMinValue1=0.1
|
SettingMinValue1=0.1
|
||||||
SettingStep1=0.05
|
SettingStep1=0.05
|
||||||
SettingName2=Saturation
|
SettingName2=Saturation
|
||||||
SettingDefaultValue2=1.0
|
SettingDefaultValue2=1.0
|
||||||
SettingMaxValue2=2.0
|
SettingMaxValue2=2.0
|
||||||
SettingMinValue2=0.0
|
SettingMinValue2=0.0
|
||||||
SettingStep2=0.1
|
SettingStep2=0.1
|
||||||
SettingName3=Contrast
|
SettingName3=Contrast
|
||||||
SettingDefaultValue3=1.0
|
SettingDefaultValue3=1.0
|
||||||
SettingMaxValue3=3.0
|
SettingMaxValue3=3.0
|
||||||
SettingMinValue3=0.1
|
SettingMinValue3=0.1
|
||||||
SettingStep3=0.1
|
SettingStep3=0.1
|
||||||
SettingName4=Gamma
|
SettingName4=Gamma
|
||||||
SettingDefaultValue4=1.0
|
SettingDefaultValue4=1.0
|
||||||
SettingMaxValue4=2.0
|
SettingMaxValue4=2.0
|
||||||
SettingMinValue4=0.1
|
SettingMinValue4=0.1
|
||||||
SettingStep4=0.05
|
SettingStep4=0.05
|
||||||
[PSPColor]
|
[PSPColor]
|
||||||
Name=PSP Color
|
Name=PSP Color
|
||||||
Author=hunterk, Pokefan531 (ported by jdgleaver)
|
Author=hunterk, Pokefan531 (ported by jdgleaver)
|
||||||
Fragment=psp_color.fsh
|
Fragment=psp_color.fsh
|
||||||
Vertex=fxaa.vsh
|
Vertex=fxaa.vsh
|
||||||
[Tex4xBRZ]
|
[Tex4xBRZ]
|
||||||
Type=Texture
|
Type=Texture
|
||||||
Name=4xBRZ
|
Name=4xBRZ
|
||||||
Author=Hyllian
|
Author=Hyllian
|
||||||
Compute=tex_4xbrz.csh
|
Compute=tex_4xbrz.csh
|
||||||
[TexMMPX]
|
VendorBlacklist=ARM
|
||||||
Type=Texture
|
[TexMMPX]
|
||||||
Name=MMPX
|
Type=Texture
|
||||||
Author=Morgan McGuire and Mara Gagiu
|
Name=MMPX
|
||||||
Compute=tex_mmpx.csh
|
Author=Morgan McGuire and Mara Gagiu
|
||||||
MaxScale=2
|
Compute=tex_mmpx.csh
|
||||||
|
MaxScale=2
|
||||||
|
|||||||
@@ -1,68 +1,68 @@
|
|||||||
// PPSSPP: Grabbed from Processing and slightly modified.
|
// PPSSPP: Grabbed from Processing and slightly modified.
|
||||||
|
|
||||||
// FXAA shader, GLSL code adapted from:
|
// FXAA shader, GLSL code adapted from:
|
||||||
// http://horde3d.org/wiki/index.php5?title=Shading_Technique_-_FXAA
|
// http://horde3d.org/wiki/index.php5?title=Shading_Technique_-_FXAA
|
||||||
// Whitepaper describing the technique:
|
// Whitepaper describing the technique:
|
||||||
// http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf
|
// http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
|
|
||||||
// The inverse of the texture dimensions along X and Y
|
// The inverse of the texture dimensions along X and Y
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
// The parameters are hardcoded for now, but could be
|
// The parameters are hardcoded for now, but could be
|
||||||
// made into uniforms to control fromt he program.
|
// made into uniforms to control fromt he program.
|
||||||
float FXAA_SPAN_MAX = 8.0;
|
float FXAA_SPAN_MAX = 8.0;
|
||||||
float FXAA_REDUCE_MUL = 1.0/8.0;
|
float FXAA_REDUCE_MUL = 1.0/8.0;
|
||||||
float FXAA_REDUCE_MIN = (1.0/128.0);
|
float FXAA_REDUCE_MIN = (1.0/128.0);
|
||||||
|
|
||||||
vec3 rgbNW = texture2D(sampler0, v_texcoord0.xy + (vec2(-1.0, -1.0) * u_texelDelta)).xyz;
|
vec3 rgbNW = texture2D(sampler0, v_texcoord0.xy + (vec2(-1.0, -1.0) * u_texelDelta)).xyz;
|
||||||
vec3 rgbNE = texture2D(sampler0, v_texcoord0.xy + (vec2(+1.0, -1.0) * u_texelDelta)).xyz;
|
vec3 rgbNE = texture2D(sampler0, v_texcoord0.xy + (vec2(+1.0, -1.0) * u_texelDelta)).xyz;
|
||||||
vec3 rgbSW = texture2D(sampler0, v_texcoord0.xy + (vec2(-1.0, +1.0) * u_texelDelta)).xyz;
|
vec3 rgbSW = texture2D(sampler0, v_texcoord0.xy + (vec2(-1.0, +1.0) * u_texelDelta)).xyz;
|
||||||
vec3 rgbSE = texture2D(sampler0, v_texcoord0.xy + (vec2(+1.0, +1.0) * u_texelDelta)).xyz;
|
vec3 rgbSE = texture2D(sampler0, v_texcoord0.xy + (vec2(+1.0, +1.0) * u_texelDelta)).xyz;
|
||||||
vec3 rgbM = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 rgbM = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
|
|
||||||
vec3 luma = vec3(0.299, 0.587, 0.114);
|
vec3 luma = vec3(0.299, 0.587, 0.114);
|
||||||
float lumaNW = dot(rgbNW, luma);
|
float lumaNW = dot(rgbNW, luma);
|
||||||
float lumaNE = dot(rgbNE, luma);
|
float lumaNE = dot(rgbNE, luma);
|
||||||
float lumaSW = dot(rgbSW, luma);
|
float lumaSW = dot(rgbSW, luma);
|
||||||
float lumaSE = dot(rgbSE, luma);
|
float lumaSE = dot(rgbSE, luma);
|
||||||
float lumaM = dot( rgbM, luma);
|
float lumaM = dot( rgbM, luma);
|
||||||
|
|
||||||
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
||||||
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
||||||
|
|
||||||
vec2 dir;
|
vec2 dir;
|
||||||
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
||||||
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
||||||
|
|
||||||
float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
|
float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
|
||||||
|
|
||||||
float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);
|
float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);
|
||||||
|
|
||||||
dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
|
dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
|
||||||
max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) * u_texelDelta;
|
max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) * u_texelDelta;
|
||||||
|
|
||||||
vec3 rgbA = (1.0/2.0) * (
|
vec3 rgbA = (1.0/2.0) * (
|
||||||
texture2D(sampler0, v_texcoord0.xy + dir * (1.0/3.0 - 0.5)).xyz +
|
texture2D(sampler0, v_texcoord0.xy + dir * (1.0/3.0 - 0.5)).xyz +
|
||||||
texture2D(sampler0, v_texcoord0.xy + dir * (2.0/3.0 - 0.5)).xyz);
|
texture2D(sampler0, v_texcoord0.xy + dir * (2.0/3.0 - 0.5)).xyz);
|
||||||
vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (
|
vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (
|
||||||
texture2D(sampler0, v_texcoord0.xy + dir * (0.0/3.0 - 0.5)).xyz +
|
texture2D(sampler0, v_texcoord0.xy + dir * (0.0/3.0 - 0.5)).xyz +
|
||||||
texture2D(sampler0, v_texcoord0.xy + dir * (3.0/3.0 - 0.5)).xyz);
|
texture2D(sampler0, v_texcoord0.xy + dir * (3.0/3.0 - 0.5)).xyz);
|
||||||
float lumaB = dot(rgbB, luma);
|
float lumaB = dot(rgbB, luma);
|
||||||
|
|
||||||
if((lumaB < lumaMin) || (lumaB > lumaMax)){
|
if((lumaB < lumaMin) || (lumaB > lumaMax)){
|
||||||
gl_FragColor.xyz=rgbA;
|
gl_FragColor.xyz=rgbA;
|
||||||
} else {
|
} else {
|
||||||
gl_FragColor.xyz=rgbB;
|
gl_FragColor.xyz=rgbB;
|
||||||
}
|
}
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
void main() {
|
void main() {
|
||||||
v_texcoord0 = a_texcoord0;
|
v_texcoord0 = a_texcoord0;
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
// Simple grayscale shader
|
// Simple grayscale shader
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
float luma = dot(rgb, vec3(0.299, 0.587, 0.114));
|
float luma = dot(rgb, vec3(0.299, 0.587, 0.114));
|
||||||
gl_FragColor.rgb = vec3(luma, luma, luma);
|
gl_FragColor.rgb = vec3(luma, luma, luma);
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
// Simple false color shader
|
// Simple false color shader
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
float luma = dot(rgb, vec3(0.299, 0.587, 0.114));
|
float luma = dot(rgb, vec3(0.299, 0.587, 0.114));
|
||||||
vec3 gray = vec3(luma, luma, luma) - 0.5;
|
vec3 gray = vec3(luma, luma, luma) - 0.5;
|
||||||
rgb -= vec3(0.5, 0.5, 0.5);
|
rgb -= vec3(0.5, 0.5, 0.5);
|
||||||
|
|
||||||
gl_FragColor.rgb = mix(rgb, gray, 2.0) + 0.5;
|
gl_FragColor.rgb = mix(rgb, gray, 2.0) + 0.5;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +1,58 @@
|
|||||||
// Natural Vision Shader, modified to use in PPSSPP.
|
// Natural Vision Shader, modified to use in PPSSPP.
|
||||||
|
|
||||||
// by ShadX (Modded by SimoneT)
|
// by ShadX (Modded by SimoneT)
|
||||||
// http://forums.ngemu.com/showthread.php?t=76098
|
// http://forums.ngemu.com/showthread.php?t=76098
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
|
|
||||||
const mat3 RGBtoYIQ = mat3(0.299, 0.596, 0.212,
|
const mat3 RGBtoYIQ = mat3(0.299, 0.596, 0.212,
|
||||||
0.587,-0.275,-0.523,
|
0.587,-0.275,-0.523,
|
||||||
0.114,-0.321, 0.311);
|
0.114,-0.321, 0.311);
|
||||||
|
|
||||||
const mat3 YIQtoRGB = mat3(1.0, 1.0, 1.0,
|
const mat3 YIQtoRGB = mat3(1.0, 1.0, 1.0,
|
||||||
0.95568806036115671171,-0.27158179694405859326,-1.1081773266826619523,
|
0.95568806036115671171,-0.27158179694405859326,-1.1081773266826619523,
|
||||||
0.61985809445637075388,-0.64687381613840131330, 1.7050645599191817149);
|
0.61985809445637075388,-0.64687381613840131330, 1.7050645599191817149);
|
||||||
|
|
||||||
const vec3 val00 = vec3( 1.2, 1.2, 1.2);
|
const vec3 val00 = vec3( 1.2, 1.2, 1.2);
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 c0,c1;
|
vec3 c0,c1;
|
||||||
|
|
||||||
c0 = texture2D(sampler0,v_texcoord0.xy).xyz;
|
c0 = texture2D(sampler0,v_texcoord0.xy).xyz;
|
||||||
c0+=(texture2D(sampler0,v_texcoord0.zy).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord0.zy).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord0.xw).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord0.xw).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord0.zw).xyz)*0.125;
|
c0+=(texture2D(sampler0,v_texcoord0.zw).xyz)*0.125;
|
||||||
|
|
||||||
c0+= texture2D(sampler0,v_texcoord1.xy).xyz;
|
c0+= texture2D(sampler0,v_texcoord1.xy).xyz;
|
||||||
c0+=(texture2D(sampler0,v_texcoord1.zy).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord1.zy).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord1.xw).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord1.xw).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord1.zw).xyz)*0.125;
|
c0+=(texture2D(sampler0,v_texcoord1.zw).xyz)*0.125;
|
||||||
|
|
||||||
c0+= texture2D(sampler0,v_texcoord2.xy).xyz;
|
c0+= texture2D(sampler0,v_texcoord2.xy).xyz;
|
||||||
c0+=(texture2D(sampler0,v_texcoord2.zy).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord2.zy).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord2.xw).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord2.xw).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord2.zw).xyz)*0.125;
|
c0+=(texture2D(sampler0,v_texcoord2.zw).xyz)*0.125;
|
||||||
|
|
||||||
c0+= texture2D(sampler0,v_texcoord3.xy).xyz;
|
c0+= texture2D(sampler0,v_texcoord3.xy).xyz;
|
||||||
c0+=(texture2D(sampler0,v_texcoord3.zy).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord3.zy).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord3.xw).xyz)*0.25;
|
c0+=(texture2D(sampler0,v_texcoord3.xw).xyz)*0.25;
|
||||||
c0+=(texture2D(sampler0,v_texcoord3.zw).xyz)*0.125;
|
c0+=(texture2D(sampler0,v_texcoord3.zw).xyz)*0.125;
|
||||||
c0*=0.153846153846;
|
c0*=0.153846153846;
|
||||||
|
|
||||||
c1=RGBtoYIQ*c0;
|
c1=RGBtoYIQ*c0;
|
||||||
|
|
||||||
c1=vec3(pow(c1.x,val00.x),c1.yz*val00.yz);
|
c1=vec3(pow(c1.x,val00.x),c1.yz*val00.yz);
|
||||||
|
|
||||||
gl_FragColor.rgb=YIQtoRGB*c1;
|
gl_FragColor.rgb=YIQtoRGB*c1;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
|
|
||||||
varying vec4 v_texcoord0;
|
varying vec4 v_texcoord0;
|
||||||
varying vec4 v_texcoord1;
|
varying vec4 v_texcoord1;
|
||||||
varying vec4 v_texcoord2;
|
varying vec4 v_texcoord2;
|
||||||
varying vec4 v_texcoord3;
|
varying vec4 v_texcoord3;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position=a_position;
|
gl_Position=a_position;
|
||||||
|
|
||||||
v_texcoord0=a_texcoord0.xyxy+vec4(-0.5,-0.5,-1.5,-1.5)*u_texelDelta.xyxy;
|
v_texcoord0=a_texcoord0.xyxy+vec4(-0.5,-0.5,-1.5,-1.5)*u_texelDelta.xyxy;
|
||||||
v_texcoord1=a_texcoord0.xyxy+vec4( 0.5,-0.5, 1.5,-1.5)*u_texelDelta.xyxy;
|
v_texcoord1=a_texcoord0.xyxy+vec4( 0.5,-0.5, 1.5,-1.5)*u_texelDelta.xyxy;
|
||||||
v_texcoord2=a_texcoord0.xyxy+vec4(-0.5, 0.5,-1.5, 1.5)*u_texelDelta.xyxy;
|
v_texcoord2=a_texcoord0.xyxy+vec4(-0.5, 0.5,-1.5, 1.5)*u_texelDelta.xyxy;
|
||||||
v_texcoord3=a_texcoord0.xyxy+vec4( 0.5, 0.5, 1.5, 1.5)*u_texelDelta.xyxy;
|
v_texcoord3=a_texcoord0.xyxy+vec4( 0.5, 0.5, 1.5, 1.5)*u_texelDelta.xyxy;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
|
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position=a_position;
|
gl_Position=a_position;
|
||||||
v_texcoord0=a_texcoord0;
|
v_texcoord0=a_texcoord0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +1,58 @@
|
|||||||
/*
|
/*
|
||||||
psp_color vertex shader
|
psp_color vertex shader
|
||||||
|
|
||||||
Original code written by hunterk, modified by Pokefan531 and
|
Original code written by hunterk, modified by Pokefan531 and
|
||||||
released into the public domain
|
released into the public domain
|
||||||
|
|
||||||
'Ported' (i.e. copy/paste) to PPSSPP format by jdgleaver
|
'Ported' (i.e. copy/paste) to PPSSPP format by jdgleaver
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
This program is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by the Free
|
under the terms of the GNU General Public License as published by the Free
|
||||||
Software Foundation; either version 2 of the License, or (at your option)
|
Software Foundation; either version 2 of the License, or (at your option)
|
||||||
any later version.
|
any later version.
|
||||||
|
|
||||||
Notes: This shader replicates the LCD dynamics of the PSP 1000 and PSP 2000
|
Notes: This shader replicates the LCD dynamics of the PSP 1000 and PSP 2000
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//================
|
//================
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
// For android, use this instead...
|
// For android, use this instead...
|
||||||
//precision highp float;
|
//precision highp float;
|
||||||
//precision highp int;
|
//precision highp int;
|
||||||
//
|
//
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//================
|
//================
|
||||||
#define target_gamma 2.21
|
#define target_gamma 2.21
|
||||||
#define display_gamma 2.2
|
#define display_gamma 2.2
|
||||||
#define r 0.98
|
#define r 0.98
|
||||||
#define g 0.795
|
#define g 0.795
|
||||||
#define b 0.98
|
#define b 0.98
|
||||||
#define rg 0.04
|
#define rg 0.04
|
||||||
#define rb 0.01
|
#define rb 0.01
|
||||||
#define gr 0.20
|
#define gr 0.20
|
||||||
#define gb 0.01
|
#define gb 0.01
|
||||||
#define br -0.18
|
#define br -0.18
|
||||||
#define bg 0.165
|
#define bg 0.165
|
||||||
|
|
||||||
//================
|
//================
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
//================
|
//================
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
// Apply colour correction
|
// Apply colour correction
|
||||||
vec3 screen = pow(texture2D(sampler0, v_texcoord0.xy).rgb, vec3(target_gamma));
|
vec3 screen = pow(texture2D(sampler0, v_texcoord0.xy).rgb, vec3(target_gamma));
|
||||||
// screen = clamp(screen, 0.0, 1.0);
|
// screen = clamp(screen, 0.0, 1.0);
|
||||||
screen = pow(
|
screen = pow(
|
||||||
mat3(r, rg, rb,
|
mat3(r, rg, rb,
|
||||||
gr, g, gb,
|
gr, g, gb,
|
||||||
br, bg, b) * screen,
|
br, bg, b) * screen,
|
||||||
vec3(1.0 / display_gamma)
|
vec3(1.0 / display_gamma)
|
||||||
);
|
);
|
||||||
|
|
||||||
gl_FragColor = vec4(screen, 1.0);
|
gl_FragColor = vec4(screen, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
// Advanced Scanlines (CRT) shader, created to use in PPSSPP.
|
// Advanced Scanlines (CRT) shader, created to use in PPSSPP.
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
uniform vec4 u_setting;
|
uniform vec4 u_setting;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float pos0 = ((v_texcoord0.y + 1.0) * 170.0*u_setting.x);
|
float pos0 = ((v_texcoord0.y + 1.0) * 170.0*u_setting.x);
|
||||||
float pos1 = cos((fract( pos0 ) - 0.5)*3.1415926*u_setting.y)*1.5;
|
float pos1 = cos((fract( pos0 ) - 0.5)*3.1415926*u_setting.y)*1.5;
|
||||||
vec4 rgb = texture2D( sampler0, v_texcoord0 );
|
vec4 rgb = texture2D( sampler0, v_texcoord0 );
|
||||||
|
|
||||||
// slight contrast curve
|
// slight contrast curve
|
||||||
vec4 color = rgb*0.5+0.5*rgb*rgb*1.2;
|
vec4 color = rgb*0.5+0.5*rgb*rgb*1.2;
|
||||||
|
|
||||||
// color tint
|
// color tint
|
||||||
color *= vec4(0.9,1.0,0.7, 0.0);
|
color *= vec4(0.9,1.0,0.7, 0.0);
|
||||||
|
|
||||||
// vignette
|
// vignette
|
||||||
color *= 1.1 - 0.6 * (dot(v_texcoord0 - 0.5, v_texcoord0 - 0.5) * 2.0);
|
color *= 1.1 - 0.6 * (dot(v_texcoord0 - 0.5, v_texcoord0 - 0.5) * 2.0);
|
||||||
|
|
||||||
gl_FragColor.rgba = mix(vec4(0,0,0,0), color, pos1);
|
gl_FragColor.rgba = mix(vec4(0,0,0,0), color, pos1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
// Simple sharpen shader; created to use in PPSSPP
|
// Simple sharpen shader; created to use in PPSSPP
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
uniform vec4 u_setting;
|
uniform vec4 u_setting;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 color = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 color = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
color -= texture2D(sampler0, v_texcoord0.xy+0.0001).xyz*7.0*u_setting.x;
|
color -= texture2D(sampler0, v_texcoord0.xy+0.0001).xyz*7.0*u_setting.x;
|
||||||
color += texture2D(sampler0, v_texcoord0.xy-0.0001).xyz*7.0*u_setting.x;
|
color += texture2D(sampler0, v_texcoord0.xy-0.0001).xyz*7.0*u_setting.x;
|
||||||
gl_FragColor.rgb = color;
|
gl_FragColor.rgb = color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,279 +1,279 @@
|
|||||||
// 4xBRZ shader - Copyright (C) 2014-2016 DeSmuME team (GPL2+)
|
// 4xBRZ shader - Copyright (C) 2014-2016 DeSmuME team (GPL2+)
|
||||||
// Hyllian's xBR-vertex code and texel mapping
|
// Hyllian's xBR-vertex code and texel mapping
|
||||||
// Copyright (C) 2011/2016 Hyllian - sergiogdb@gmail.com
|
// Copyright (C) 2011/2016 Hyllian - sergiogdb@gmail.com
|
||||||
#define BLEND_ALPHA 1
|
#define BLEND_ALPHA 1
|
||||||
#define BLEND_NONE 0
|
#define BLEND_NONE 0
|
||||||
#define BLEND_NORMAL 1
|
#define BLEND_NORMAL 1
|
||||||
#define BLEND_DOMINANT 2
|
#define BLEND_DOMINANT 2
|
||||||
#define LUMINANCE_WEIGHT 1.0
|
#define LUMINANCE_WEIGHT 1.0
|
||||||
#define EQUAL_COLOR_TOLERANCE 30.0/255.0
|
#define EQUAL_COLOR_TOLERANCE 30.0/255.0
|
||||||
#define STEEP_DIRECTION_THRESHOLD 2.2
|
#define STEEP_DIRECTION_THRESHOLD 2.2
|
||||||
#define DOMINANT_DIRECTION_THRESHOLD 3.6
|
#define DOMINANT_DIRECTION_THRESHOLD 3.6
|
||||||
|
|
||||||
float reduce(vec4 color) {
|
float reduce(vec4 color) {
|
||||||
return dot(color.rgb, vec3(65536.0, 256.0, 1.0));
|
return dot(color.rgb, vec3(65536.0, 256.0, 1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
float DistYCbCr(vec4 pixA, vec4 pixB) {
|
float DistYCbCr(vec4 pixA, vec4 pixB) {
|
||||||
// https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.2020_conversion
|
// https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.2020_conversion
|
||||||
const vec3 K = vec3(0.2627, 0.6780, 0.0593);
|
const vec3 K = vec3(0.2627, 0.6780, 0.0593);
|
||||||
const mat3 MATRIX = mat3(K,
|
const mat3 MATRIX = mat3(K,
|
||||||
-.5 * K.r / (1.0 - K.b), -.5 * K.g / (1.0 - K.b), .5,
|
-.5 * K.r / (1.0 - K.b), -.5 * K.g / (1.0 - K.b), .5,
|
||||||
.5, -.5 * K.g / (1.0 - K.r), -.5 * K.b / (1.0 - K.r));
|
.5, -.5 * K.g / (1.0 - K.r), -.5 * K.b / (1.0 - K.r));
|
||||||
vec4 diff = pixA - pixB;
|
vec4 diff = pixA - pixB;
|
||||||
vec3 YCbCr = diff.rgb * MATRIX;
|
vec3 YCbCr = diff.rgb * MATRIX;
|
||||||
YCbCr.x *= LUMINANCE_WEIGHT;
|
YCbCr.x *= LUMINANCE_WEIGHT;
|
||||||
float d = length(YCbCr);
|
float d = length(YCbCr);
|
||||||
return sqrt(pixA.a * pixB.a * d * d + diff.a * diff.a);
|
return sqrt(pixA.a * pixB.a * d * d + diff.a * diff.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsPixEqual(const vec4 pixA, const vec4 pixB) {
|
bool IsPixEqual(const vec4 pixA, const vec4 pixB) {
|
||||||
return (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);
|
return (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsBlendingNeeded(const ivec4 blend) {
|
bool IsBlendingNeeded(const ivec4 blend) {
|
||||||
ivec4 diff = blend - ivec4(BLEND_NONE);
|
ivec4 diff = blend - ivec4(BLEND_NONE);
|
||||||
return diff.x != 0 || diff.y != 0 || diff.z != 0 || diff.w != 0;
|
return diff.x != 0 || diff.y != 0 || diff.z != 0 || diff.w != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 applyScalingf(uvec2 origxy, uvec2 xy) {
|
vec4 applyScalingf(uvec2 origxy, uvec2 xy) {
|
||||||
float dx = 1.0 / params.width;
|
float dx = 1.0 / params.width;
|
||||||
float dy = 1.0 / params.height;
|
float dy = 1.0 / params.height;
|
||||||
|
|
||||||
// A1 B1 C1
|
// A1 B1 C1
|
||||||
// A0 A B C C4
|
// A0 A B C C4
|
||||||
// D0 D E F F4
|
// D0 D E F F4
|
||||||
// G0 G H I I4
|
// G0 G H I I4
|
||||||
// G5 H5 I5
|
// G5 H5 I5
|
||||||
|
|
||||||
uvec4 t1 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y - 2); // A1 B1 C1
|
uvec4 t1 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y - 2); // A1 B1 C1
|
||||||
uvec4 t2 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y - 1); // A B C
|
uvec4 t2 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y - 1); // A B C
|
||||||
uvec4 t3 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 0); // D E F
|
uvec4 t3 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 0); // D E F
|
||||||
uvec4 t4 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 1); // G H I
|
uvec4 t4 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 1); // G H I
|
||||||
uvec4 t5 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 2); // G5 H5 I5
|
uvec4 t5 = uvec4(origxy.x - 1, origxy.x, origxy.x + 1, origxy.y + 2); // G5 H5 I5
|
||||||
uvec4 t6 = uvec4(origxy.x - 2, origxy.y - 1, origxy.y, origxy.y + 1); // A0 D0 G0
|
uvec4 t6 = uvec4(origxy.x - 2, origxy.y - 1, origxy.y, origxy.y + 1); // A0 D0 G0
|
||||||
uvec4 t7 = uvec4(origxy.x + 2, origxy.y - 1, origxy.y, origxy.y + 1); // C4 F4 I4
|
uvec4 t7 = uvec4(origxy.x + 2, origxy.y - 1, origxy.y, origxy.y + 1); // C4 F4 I4
|
||||||
|
|
||||||
vec2 f = fract(vec2(float(xy.x) / float(params.scale), float(xy.y) / float(params.scale)));
|
vec2 f = fract(vec2(float(xy.x) / float(params.scale), float(xy.y) / float(params.scale)));
|
||||||
|
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
// Input Pixel Mapping: |21|22|23|
|
// Input Pixel Mapping: |21|22|23|
|
||||||
// 19|06|07|08|09
|
// 19|06|07|08|09
|
||||||
// 18|05|00|01|10
|
// 18|05|00|01|10
|
||||||
// 17|04|03|02|11
|
// 17|04|03|02|11
|
||||||
// |15|14|13|
|
// |15|14|13|
|
||||||
|
|
||||||
vec4 src[25];
|
vec4 src[25];
|
||||||
|
|
||||||
src[21] = readColorf(t1.xw);
|
src[21] = readColorf(t1.xw);
|
||||||
src[22] = readColorf(t1.yw);
|
src[22] = readColorf(t1.yw);
|
||||||
src[23] = readColorf(t1.zw);
|
src[23] = readColorf(t1.zw);
|
||||||
src[ 6] = readColorf(t2.xw);
|
src[ 6] = readColorf(t2.xw);
|
||||||
src[ 7] = readColorf(t2.yw);
|
src[ 7] = readColorf(t2.yw);
|
||||||
src[ 8] = readColorf(t2.zw);
|
src[ 8] = readColorf(t2.zw);
|
||||||
src[ 5] = readColorf(t3.xw);
|
src[ 5] = readColorf(t3.xw);
|
||||||
src[ 0] = readColorf(t3.yw);
|
src[ 0] = readColorf(t3.yw);
|
||||||
src[ 1] = readColorf(t3.zw);
|
src[ 1] = readColorf(t3.zw);
|
||||||
src[ 4] = readColorf(t4.xw);
|
src[ 4] = readColorf(t4.xw);
|
||||||
src[ 3] = readColorf(t4.yw);
|
src[ 3] = readColorf(t4.yw);
|
||||||
src[ 2] = readColorf(t4.zw);
|
src[ 2] = readColorf(t4.zw);
|
||||||
src[15] = readColorf(t5.xw);
|
src[15] = readColorf(t5.xw);
|
||||||
src[14] = readColorf(t5.yw);
|
src[14] = readColorf(t5.yw);
|
||||||
src[13] = readColorf(t5.zw);
|
src[13] = readColorf(t5.zw);
|
||||||
src[19] = readColorf(t6.xy);
|
src[19] = readColorf(t6.xy);
|
||||||
src[18] = readColorf(t6.xz);
|
src[18] = readColorf(t6.xz);
|
||||||
src[17] = readColorf(t6.xw);
|
src[17] = readColorf(t6.xw);
|
||||||
src[ 9] = readColorf(t7.xy);
|
src[ 9] = readColorf(t7.xy);
|
||||||
src[10] = readColorf(t7.xz);
|
src[10] = readColorf(t7.xz);
|
||||||
src[11] = readColorf(t7.xw);
|
src[11] = readColorf(t7.xw);
|
||||||
|
|
||||||
float v[9];
|
float v[9];
|
||||||
v[0] = reduce(src[0]);
|
v[0] = reduce(src[0]);
|
||||||
v[1] = reduce(src[1]);
|
v[1] = reduce(src[1]);
|
||||||
v[2] = reduce(src[2]);
|
v[2] = reduce(src[2]);
|
||||||
v[3] = reduce(src[3]);
|
v[3] = reduce(src[3]);
|
||||||
v[4] = reduce(src[4]);
|
v[4] = reduce(src[4]);
|
||||||
v[5] = reduce(src[5]);
|
v[5] = reduce(src[5]);
|
||||||
v[6] = reduce(src[6]);
|
v[6] = reduce(src[6]);
|
||||||
v[7] = reduce(src[7]);
|
v[7] = reduce(src[7]);
|
||||||
v[8] = reduce(src[8]);
|
v[8] = reduce(src[8]);
|
||||||
|
|
||||||
ivec4 blendResult = ivec4(BLEND_NONE);
|
ivec4 blendResult = ivec4(BLEND_NONE);
|
||||||
|
|
||||||
// Preprocess corners
|
// Preprocess corners
|
||||||
// Pixel Tap Mapping: --|--|--|--|--
|
// Pixel Tap Mapping: --|--|--|--|--
|
||||||
// --|--|07|08|--
|
// --|--|07|08|--
|
||||||
// --|05|00|01|10
|
// --|05|00|01|10
|
||||||
// --|04|03|02|11
|
// --|04|03|02|11
|
||||||
// --|--|14|13|--
|
// --|--|14|13|--
|
||||||
// Corner (1, 1)
|
// Corner (1, 1)
|
||||||
if ( ((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2])) == false) {
|
if ( ((v[0] == v[1] && v[3] == v[2]) || (v[0] == v[3] && v[1] == v[2])) == false) {
|
||||||
float dist_03_01 = DistYCbCr(src[ 4], src[ 0]) + DistYCbCr(src[ 0], src[ 8]) + DistYCbCr(src[14], src[ 2]) + DistYCbCr(src[ 2], src[10]) + (4.0 * DistYCbCr(src[ 3], src[ 1]));
|
float dist_03_01 = DistYCbCr(src[ 4], src[ 0]) + DistYCbCr(src[ 0], src[ 8]) + DistYCbCr(src[14], src[ 2]) + DistYCbCr(src[ 2], src[10]) + (4.0 * DistYCbCr(src[ 3], src[ 1]));
|
||||||
float dist_00_02 = DistYCbCr(src[ 5], src[ 3]) + DistYCbCr(src[ 3], src[13]) + DistYCbCr(src[ 7], src[ 1]) + DistYCbCr(src[ 1], src[11]) + (4.0 * DistYCbCr(src[ 0], src[ 2]));
|
float dist_00_02 = DistYCbCr(src[ 5], src[ 3]) + DistYCbCr(src[ 3], src[13]) + DistYCbCr(src[ 7], src[ 1]) + DistYCbCr(src[ 1], src[11]) + (4.0 * DistYCbCr(src[ 0], src[ 2]));
|
||||||
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;
|
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_03_01) < dist_00_02;
|
||||||
blendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
blendResult[2] = ((dist_03_01 < dist_00_02) && (v[0] != v[1]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pixel Tap Mapping: --|--|--|--|--
|
// Pixel Tap Mapping: --|--|--|--|--
|
||||||
// --|06|07|--|--
|
// --|06|07|--|--
|
||||||
// 18|05|00|01|--
|
// 18|05|00|01|--
|
||||||
// 17|04|03|02|--
|
// 17|04|03|02|--
|
||||||
// --|15|14|--|--
|
// --|15|14|--|--
|
||||||
// Corner (0, 1)
|
// Corner (0, 1)
|
||||||
if ( ((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3])) == false) {
|
if ( ((v[5] == v[0] && v[4] == v[3]) || (v[5] == v[4] && v[0] == v[3])) == false) {
|
||||||
float dist_04_00 = DistYCbCr(src[17], src[ 5]) + DistYCbCr(src[ 5], src[ 7]) + DistYCbCr(src[15], src[ 3]) + DistYCbCr(src[ 3], src[ 1]) + (4.0 * DistYCbCr(src[ 4], src[ 0]));
|
float dist_04_00 = DistYCbCr(src[17], src[ 5]) + DistYCbCr(src[ 5], src[ 7]) + DistYCbCr(src[15], src[ 3]) + DistYCbCr(src[ 3], src[ 1]) + (4.0 * DistYCbCr(src[ 4], src[ 0]));
|
||||||
float dist_05_03 = DistYCbCr(src[18], src[ 4]) + DistYCbCr(src[ 4], src[14]) + DistYCbCr(src[ 6], src[ 0]) + DistYCbCr(src[ 0], src[ 2]) + (4.0 * DistYCbCr(src[ 5], src[ 3]));
|
float dist_05_03 = DistYCbCr(src[18], src[ 4]) + DistYCbCr(src[ 4], src[14]) + DistYCbCr(src[ 6], src[ 0]) + DistYCbCr(src[ 0], src[ 2]) + (4.0 * DistYCbCr(src[ 5], src[ 3]));
|
||||||
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;
|
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_03) < dist_04_00;
|
||||||
blendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
blendResult[3] = ((dist_04_00 > dist_05_03) && (v[0] != v[5]) && (v[0] != v[3])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pixel Tap Mapping: --|--|22|23|--
|
// Pixel Tap Mapping: --|--|22|23|--
|
||||||
// --|06|07|08|09
|
// --|06|07|08|09
|
||||||
// --|05|00|01|10
|
// --|05|00|01|10
|
||||||
// --|--|03|02|--
|
// --|--|03|02|--
|
||||||
// --|--|--|--|--
|
// --|--|--|--|--
|
||||||
// Corner (1, 0)
|
// Corner (1, 0)
|
||||||
if ( ((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1])) == false) {
|
if ( ((v[7] == v[8] && v[0] == v[1]) || (v[7] == v[0] && v[8] == v[1])) == false) {
|
||||||
float dist_00_08 = DistYCbCr(src[ 5], src[ 7]) + DistYCbCr(src[ 7], src[23]) + DistYCbCr(src[ 3], src[ 1]) + DistYCbCr(src[ 1], src[ 9]) + (4.0 * DistYCbCr(src[ 0], src[ 8]));
|
float dist_00_08 = DistYCbCr(src[ 5], src[ 7]) + DistYCbCr(src[ 7], src[23]) + DistYCbCr(src[ 3], src[ 1]) + DistYCbCr(src[ 1], src[ 9]) + (4.0 * DistYCbCr(src[ 0], src[ 8]));
|
||||||
float dist_07_01 = DistYCbCr(src[ 6], src[ 0]) + DistYCbCr(src[ 0], src[ 2]) + DistYCbCr(src[22], src[ 8]) + DistYCbCr(src[ 8], src[10]) + (4.0 * DistYCbCr(src[ 7], src[ 1]));
|
float dist_07_01 = DistYCbCr(src[ 6], src[ 0]) + DistYCbCr(src[ 0], src[ 2]) + DistYCbCr(src[22], src[ 8]) + DistYCbCr(src[ 8], src[10]) + (4.0 * DistYCbCr(src[ 7], src[ 1]));
|
||||||
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;
|
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_07_01) < dist_00_08;
|
||||||
blendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
blendResult[1] = ((dist_00_08 > dist_07_01) && (v[0] != v[7]) && (v[0] != v[1])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pixel Tap Mapping: --|21|22|--|--
|
// Pixel Tap Mapping: --|21|22|--|--
|
||||||
// 19|06|07|08|--
|
// 19|06|07|08|--
|
||||||
// 18|05|00|01|--
|
// 18|05|00|01|--
|
||||||
// --|04|03|--|--
|
// --|04|03|--|--
|
||||||
// --|--|--|--|--
|
// --|--|--|--|--
|
||||||
// Corner (0, 0)
|
// Corner (0, 0)
|
||||||
if ( ((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0])) == false) {
|
if ( ((v[6] == v[7] && v[5] == v[0]) || (v[6] == v[5] && v[7] == v[0])) == false) {
|
||||||
float dist_05_07 = DistYCbCr(src[18], src[ 6]) + DistYCbCr(src[ 6], src[22]) + DistYCbCr(src[ 4], src[ 0]) + DistYCbCr(src[ 0], src[ 8]) + (4.0 * DistYCbCr(src[ 5], src[ 7]));
|
float dist_05_07 = DistYCbCr(src[18], src[ 6]) + DistYCbCr(src[ 6], src[22]) + DistYCbCr(src[ 4], src[ 0]) + DistYCbCr(src[ 0], src[ 8]) + (4.0 * DistYCbCr(src[ 5], src[ 7]));
|
||||||
float dist_06_00 = DistYCbCr(src[19], src[ 5]) + DistYCbCr(src[ 5], src[ 3]) + DistYCbCr(src[21], src[ 7]) + DistYCbCr(src[ 7], src[ 1]) + (4.0 * DistYCbCr(src[ 6], src[ 0]));
|
float dist_06_00 = DistYCbCr(src[19], src[ 5]) + DistYCbCr(src[ 5], src[ 3]) + DistYCbCr(src[21], src[ 7]) + DistYCbCr(src[ 7], src[ 1]) + (4.0 * DistYCbCr(src[ 6], src[ 0]));
|
||||||
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;
|
bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_05_07) < dist_06_00;
|
||||||
blendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
blendResult[0] = ((dist_05_07 < dist_06_00) && (v[0] != v[5]) && (v[0] != v[7])) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 dst[16];
|
vec4 dst[16];
|
||||||
dst[ 0] = src[0];
|
dst[ 0] = src[0];
|
||||||
dst[ 1] = src[0];
|
dst[ 1] = src[0];
|
||||||
dst[ 2] = src[0];
|
dst[ 2] = src[0];
|
||||||
dst[ 3] = src[0];
|
dst[ 3] = src[0];
|
||||||
dst[ 4] = src[0];
|
dst[ 4] = src[0];
|
||||||
dst[ 5] = src[0];
|
dst[ 5] = src[0];
|
||||||
dst[ 6] = src[0];
|
dst[ 6] = src[0];
|
||||||
dst[ 7] = src[0];
|
dst[ 7] = src[0];
|
||||||
dst[ 8] = src[0];
|
dst[ 8] = src[0];
|
||||||
dst[ 9] = src[0];
|
dst[ 9] = src[0];
|
||||||
dst[10] = src[0];
|
dst[10] = src[0];
|
||||||
dst[11] = src[0];
|
dst[11] = src[0];
|
||||||
dst[12] = src[0];
|
dst[12] = src[0];
|
||||||
dst[13] = src[0];
|
dst[13] = src[0];
|
||||||
dst[14] = src[0];
|
dst[14] = src[0];
|
||||||
dst[15] = src[0];
|
dst[15] = src[0];
|
||||||
|
|
||||||
// Scale pixel
|
// Scale pixel
|
||||||
if (IsBlendingNeeded(blendResult) == true) {
|
if (IsBlendingNeeded(blendResult) == true) {
|
||||||
float dist_01_04 = DistYCbCr(src[1], src[4]);
|
float dist_01_04 = DistYCbCr(src[1], src[4]);
|
||||||
float dist_03_08 = DistYCbCr(src[3], src[8]);
|
float dist_03_08 = DistYCbCr(src[3], src[8]);
|
||||||
bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[4]) && (v[5] != v[4]);
|
bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[4]) && (v[5] != v[4]);
|
||||||
bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[8]) && (v[7] != v[8]);
|
bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[8]) && (v[7] != v[8]);
|
||||||
bool needBlend = (blendResult[2] != BLEND_NONE);
|
bool needBlend = (blendResult[2] != BLEND_NONE);
|
||||||
bool doLineBlend = ( blendResult[2] >= BLEND_DOMINANT ||
|
bool doLineBlend = ( blendResult[2] >= BLEND_DOMINANT ||
|
||||||
((blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||
|
((blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||
|
||||||
(blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||
|
(blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||
|
||||||
(IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[0], src[2]) == false) ) == false );
|
(IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[0], src[2]) == false) ) == false );
|
||||||
|
|
||||||
vec4 blendPix = ( DistYCbCr(src[0], src[1]) <= DistYCbCr(src[0], src[3]) ) ? src[1] : src[3];
|
vec4 blendPix = ( DistYCbCr(src[0], src[1]) <= DistYCbCr(src[0], src[3]) ) ? src[1] : src[3];
|
||||||
dst[ 2] = mix(dst[ 2], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
dst[ 2] = mix(dst[ 2], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
||||||
dst[ 9] = mix(dst[ 9], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
dst[ 9] = mix(dst[ 9], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
||||||
dst[10] = mix(dst[10], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
dst[10] = mix(dst[10], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
||||||
dst[11] = mix(dst[11], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[11] = mix(dst[11], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[12] = mix(dst[12], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
dst[12] = mix(dst[12], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
||||||
dst[13] = mix(dst[13], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[13] = mix(dst[13], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[14] = mix(dst[14], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
dst[14] = mix(dst[14], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
||||||
dst[15] = mix(dst[15], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
dst[15] = mix(dst[15], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
||||||
|
|
||||||
dist_01_04 = DistYCbCr(src[7], src[2]);
|
dist_01_04 = DistYCbCr(src[7], src[2]);
|
||||||
dist_03_08 = DistYCbCr(src[1], src[6]);
|
dist_03_08 = DistYCbCr(src[1], src[6]);
|
||||||
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[2]) && (v[3] != v[2]);
|
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[2]) && (v[3] != v[2]);
|
||||||
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[6]) && (v[5] != v[6]);
|
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[6]) && (v[5] != v[6]);
|
||||||
needBlend = (blendResult[1] != BLEND_NONE);
|
needBlend = (blendResult[1] != BLEND_NONE);
|
||||||
doLineBlend = ( blendResult[1] >= BLEND_DOMINANT ||
|
doLineBlend = ( blendResult[1] >= BLEND_DOMINANT ||
|
||||||
!((blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||
|
!((blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||
|
||||||
(blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||
|
(blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||
|
||||||
(IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && !IsPixEqual(src[0], src[8])) ) );
|
(IsPixEqual(src[2], src[1]) && IsPixEqual(src[1], src[8]) && IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && !IsPixEqual(src[0], src[8])) ) );
|
||||||
|
|
||||||
blendPix = ( DistYCbCr(src[0], src[7]) <= DistYCbCr(src[0], src[1]) ) ? src[7] : src[1];
|
blendPix = ( DistYCbCr(src[0], src[7]) <= DistYCbCr(src[0], src[1]) ) ? src[7] : src[1];
|
||||||
dst[ 1] = mix(dst[ 1], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
dst[ 1] = mix(dst[ 1], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
||||||
dst[ 6] = mix(dst[ 6], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
dst[ 6] = mix(dst[ 6], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
||||||
dst[ 7] = mix(dst[ 7], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
dst[ 7] = mix(dst[ 7], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
||||||
dst[ 8] = mix(dst[ 8], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[ 8] = mix(dst[ 8], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[ 9] = mix(dst[ 9], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
dst[ 9] = mix(dst[ 9], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
||||||
dst[10] = mix(dst[10], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[10] = mix(dst[10], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[11] = mix(dst[11], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
dst[11] = mix(dst[11], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
||||||
dst[12] = mix(dst[12], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
dst[12] = mix(dst[12], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
||||||
|
|
||||||
dist_01_04 = DistYCbCr(src[5], src[8]);
|
dist_01_04 = DistYCbCr(src[5], src[8]);
|
||||||
dist_03_08 = DistYCbCr(src[7], src[4]);
|
dist_03_08 = DistYCbCr(src[7], src[4]);
|
||||||
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[8]) && (v[1] != v[8]);
|
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[8]) && (v[1] != v[8]);
|
||||||
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[4]) && (v[3] != v[4]);
|
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[4]) && (v[3] != v[4]);
|
||||||
needBlend = (blendResult[0] != BLEND_NONE);
|
needBlend = (blendResult[0] != BLEND_NONE);
|
||||||
doLineBlend = ( blendResult[0] >= BLEND_DOMINANT ||
|
doLineBlend = ( blendResult[0] >= BLEND_DOMINANT ||
|
||||||
!((blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||
|
!((blendResult[3] != BLEND_NONE && !IsPixEqual(src[0], src[8])) ||
|
||||||
(blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||
|
(blendResult[1] != BLEND_NONE && !IsPixEqual(src[0], src[4])) ||
|
||||||
(IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && !IsPixEqual(src[0], src[6])) ) );
|
(IsPixEqual(src[8], src[7]) && IsPixEqual(src[7], src[6]) && IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && !IsPixEqual(src[0], src[6])) ) );
|
||||||
|
|
||||||
blendPix = ( DistYCbCr(src[0], src[5]) <= DistYCbCr(src[0], src[7]) ) ? src[5] : src[7];
|
blendPix = ( DistYCbCr(src[0], src[5]) <= DistYCbCr(src[0], src[7]) ) ? src[5] : src[7];
|
||||||
dst[ 0] = mix(dst[ 0], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
dst[ 0] = mix(dst[ 0], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
||||||
dst[15] = mix(dst[15], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
dst[15] = mix(dst[15], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
||||||
dst[ 4] = mix(dst[ 4], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
dst[ 4] = mix(dst[ 4], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
||||||
dst[ 5] = mix(dst[ 5], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[ 5] = mix(dst[ 5], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[ 6] = mix(dst[ 6], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
dst[ 6] = mix(dst[ 6], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
||||||
dst[ 7] = mix(dst[ 7], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[ 7] = mix(dst[ 7], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[ 8] = mix(dst[ 8], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
dst[ 8] = mix(dst[ 8], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
||||||
dst[ 9] = mix(dst[ 9], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
dst[ 9] = mix(dst[ 9], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
||||||
|
|
||||||
dist_01_04 = DistYCbCr(src[3], src[6]);
|
dist_01_04 = DistYCbCr(src[3], src[6]);
|
||||||
dist_03_08 = DistYCbCr(src[5], src[2]);
|
dist_03_08 = DistYCbCr(src[5], src[2]);
|
||||||
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[6]) && (v[7] != v[6]);
|
haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_01_04 <= dist_03_08) && (v[0] != v[6]) && (v[7] != v[6]);
|
||||||
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[2]) && (v[1] != v[2]);
|
haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_03_08 <= dist_01_04) && (v[0] != v[2]) && (v[1] != v[2]);
|
||||||
needBlend = (blendResult[3] != BLEND_NONE);
|
needBlend = (blendResult[3] != BLEND_NONE);
|
||||||
doLineBlend = ( blendResult[3] >= BLEND_DOMINANT ||
|
doLineBlend = ( blendResult[3] >= BLEND_DOMINANT ||
|
||||||
!((blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||
|
!((blendResult[2] != BLEND_NONE && !IsPixEqual(src[0], src[6])) ||
|
||||||
(blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||
|
(blendResult[0] != BLEND_NONE && !IsPixEqual(src[0], src[2])) ||
|
||||||
(IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && !IsPixEqual(src[0], src[4])) ) );
|
(IsPixEqual(src[6], src[5]) && IsPixEqual(src[5], src[4]) && IsPixEqual(src[4], src[3]) && IsPixEqual(src[3], src[2]) && !IsPixEqual(src[0], src[4])) ) );
|
||||||
|
|
||||||
blendPix = ( DistYCbCr(src[0], src[3]) <= DistYCbCr(src[0], src[5]) ) ? src[3] : src[5];
|
blendPix = ( DistYCbCr(src[0], src[3]) <= DistYCbCr(src[0], src[5]) ) ? src[3] : src[5];
|
||||||
dst[ 3] = mix(dst[ 3], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
dst[ 3] = mix(dst[ 3], blendPix, (needBlend && doLineBlend) ? ((haveShallowLine) ? ((haveSteepLine) ? 1.0/3.0 : 0.25) : ((haveSteepLine) ? 0.25 : 0.00)) : 0.00);
|
||||||
dst[12] = mix(dst[12], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
dst[12] = mix(dst[12], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.25 : 0.00);
|
||||||
dst[13] = mix(dst[13], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
dst[13] = mix(dst[13], blendPix, (needBlend && doLineBlend && haveSteepLine) ? 0.75 : 0.00);
|
||||||
dst[14] = mix(dst[14], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[14] = mix(dst[14], blendPix, (needBlend) ? ((doLineBlend) ? ((haveSteepLine) ? 1.00 : ((haveShallowLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[15] = mix(dst[15], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
dst[15] = mix(dst[15], blendPix, (needBlend) ? ((doLineBlend) ? 1.00 : 0.6848532563) : 0.00);
|
||||||
dst[ 4] = mix(dst[ 4], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
dst[ 4] = mix(dst[ 4], blendPix, (needBlend) ? ((doLineBlend) ? ((haveShallowLine) ? 1.00 : ((haveSteepLine) ? 0.75 : 0.50)) : 0.08677704501) : 0.00);
|
||||||
dst[ 5] = mix(dst[ 5], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
dst[ 5] = mix(dst[ 5], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.75 : 0.00);
|
||||||
dst[ 6] = mix(dst[ 6], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
dst[ 6] = mix(dst[ 6], blendPix, (needBlend && doLineBlend && haveShallowLine) ? 0.25 : 0.00);
|
||||||
}
|
}
|
||||||
|
|
||||||
// select output pixel
|
// select output pixel
|
||||||
vec4 res = mix(mix(mix(mix(dst[ 6], dst[ 7], step(0.25, f.x)),
|
vec4 res = mix(mix(mix(mix(dst[ 6], dst[ 7], step(0.25, f.x)),
|
||||||
mix(dst[ 8], dst[ 9], step(0.75, f.x)),
|
mix(dst[ 8], dst[ 9], step(0.75, f.x)),
|
||||||
step(0.50, f.x)),
|
step(0.50, f.x)),
|
||||||
mix(mix(dst[ 5], dst[ 0], step(0.25, f.x)),
|
mix(mix(dst[ 5], dst[ 0], step(0.25, f.x)),
|
||||||
mix(dst[ 1], dst[10], step(0.75, f.x)),
|
mix(dst[ 1], dst[10], step(0.75, f.x)),
|
||||||
step(0.50, f.x)),
|
step(0.50, f.x)),
|
||||||
step(0.25, f.y)),
|
step(0.25, f.y)),
|
||||||
mix(mix(mix(dst[ 4], dst[ 3], step(0.25, f.x)),
|
mix(mix(mix(dst[ 4], dst[ 3], step(0.25, f.x)),
|
||||||
mix(dst[ 2], dst[11], step(0.75, f.x)),
|
mix(dst[ 2], dst[11], step(0.75, f.x)),
|
||||||
step(0.50, f.x)),
|
step(0.50, f.x)),
|
||||||
mix(mix(dst[15], dst[14], step(0.25, f.x)),
|
mix(mix(dst[15], dst[14], step(0.25, f.x)),
|
||||||
mix(dst[13], dst[12], step(0.75, f.x)),
|
mix(dst[13], dst[12], step(0.75, f.x)),
|
||||||
step(0.50, f.x)),
|
step(0.50, f.x)),
|
||||||
step(0.75, f.y)),
|
step(0.75, f.y)),
|
||||||
step(0.50, f.y));
|
step(0.50, f.y));
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint applyScalingu(uvec2 origxy, uvec2 xy) {
|
uint applyScalingu(uvec2 origxy, uvec2 xy) {
|
||||||
return packUnorm4x8(applyScalingf(origxy, xy));
|
return packUnorm4x8(applyScalingf(origxy, xy));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,117 +1,117 @@
|
|||||||
/* MMPX.glc
|
/* MMPX.glc
|
||||||
Copyright 2020 Morgan McGuire & Mara Gagiu.
|
Copyright 2020 Morgan McGuire & Mara Gagiu.
|
||||||
Provided under the Open Source MIT license https://opensource.org/licenses/MIT
|
Provided under the Open Source MIT license https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
See js-demo.html for the commented source code.
|
See js-demo.html for the commented source code.
|
||||||
This is an optimized GLSL port of that version
|
This is an optimized GLSL port of that version
|
||||||
by Morgan McGuire and Mara Gagiu.
|
by Morgan McGuire and Mara Gagiu.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ABGR8 uint
|
#define ABGR8 uint
|
||||||
|
|
||||||
ABGR8 src(int x, int y) {
|
ABGR8 src(int x, int y) {
|
||||||
return readColoru(uvec2(clamp(x, 0, params.width - 1), clamp(y, 0, params.height - 1)));
|
return readColoru(uvec2(clamp(x, 0, params.width - 1), clamp(y, 0, params.height - 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint luma(ABGR8 C) {
|
uint luma(ABGR8 C) {
|
||||||
uint alpha = (C & 0xFF000000u) >> 24;
|
uint alpha = (C & 0xFF000000u) >> 24;
|
||||||
return (((C & 0x00FF0000u) >> 16) + ((C & 0x0000FF00u) >> 8) + (C & 0x000000FFu) + 1u) * (256u - alpha);
|
return (((C & 0x00FF0000u) >> 16) + ((C & 0x0000FF00u) >> 8) + (C & 0x000000FFu) + 1u) * (256u - alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool all_eq2(ABGR8 B, ABGR8 A0, ABGR8 A1) {
|
bool all_eq2(ABGR8 B, ABGR8 A0, ABGR8 A1) {
|
||||||
return ((B ^ A0) | (B ^ A1)) == 0u;
|
return ((B ^ A0) | (B ^ A1)) == 0u;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool all_eq3(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2) {
|
bool all_eq3(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2) {
|
||||||
return ((B ^ A0) | (B ^ A1) | (B ^ A2)) == 0u;
|
return ((B ^ A0) | (B ^ A1) | (B ^ A2)) == 0u;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool all_eq4(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2, ABGR8 A3) {
|
bool all_eq4(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2, ABGR8 A3) {
|
||||||
return ((B ^ A0) | (B ^ A1) | (B ^ A2) | (B ^ A3)) == 0u;
|
return ((B ^ A0) | (B ^ A1) | (B ^ A2) | (B ^ A3)) == 0u;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool any_eq3(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2) {
|
bool any_eq3(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2) {
|
||||||
return B == A0 || B == A1 || B == A2;
|
return B == A0 || B == A1 || B == A2;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool none_eq2(ABGR8 B, ABGR8 A0, ABGR8 A1) {
|
bool none_eq2(ABGR8 B, ABGR8 A0, ABGR8 A1) {
|
||||||
return (B != A0) && (B != A1);
|
return (B != A0) && (B != A1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool none_eq4(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2, ABGR8 A3) {
|
bool none_eq4(ABGR8 B, ABGR8 A0, ABGR8 A1, ABGR8 A2, ABGR8 A3) {
|
||||||
return B != A0 && B != A1 && B != A2 && B != A3;
|
return B != A0 && B != A1 && B != A2 && B != A3;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint applyScalingu(uvec2 origxy, uvec2 xy) {
|
uint applyScalingu(uvec2 origxy, uvec2 xy) {
|
||||||
int srcX = int(origxy.x);
|
int srcX = int(origxy.x);
|
||||||
int srcY = int(origxy.y);
|
int srcY = int(origxy.y);
|
||||||
|
|
||||||
ABGR8 A = src(srcX - 1, srcY - 1), B = src(srcX, srcY - 1), C = src(srcX + 1, srcY - 1);
|
ABGR8 A = src(srcX - 1, srcY - 1), B = src(srcX, srcY - 1), C = src(srcX + 1, srcY - 1);
|
||||||
ABGR8 D = src(srcX - 1, srcY + 0), E = src(srcX, srcY + 0), F = src(srcX + 1, srcY + 0);
|
ABGR8 D = src(srcX - 1, srcY + 0), E = src(srcX, srcY + 0), F = src(srcX + 1, srcY + 0);
|
||||||
ABGR8 G = src(srcX - 1, srcY + 1), H = src(srcX, srcY + 1), I = src(srcX + 1, srcY + 1);
|
ABGR8 G = src(srcX - 1, srcY + 1), H = src(srcX, srcY + 1), I = src(srcX + 1, srcY + 1);
|
||||||
|
|
||||||
ABGR8 J = E, K = E, L = E, M = E;
|
ABGR8 J = E, K = E, L = E, M = E;
|
||||||
|
|
||||||
if (((A ^ E) | (B ^ E) | (C ^ E) | (D ^ E) | (F ^ E) | (G ^ E) | (H ^ E) | (I ^ E)) != 0u) {
|
if (((A ^ E) | (B ^ E) | (C ^ E) | (D ^ E) | (F ^ E) | (G ^ E) | (H ^ E) | (I ^ E)) != 0u) {
|
||||||
ABGR8 P = src(srcX, srcY - 2), S = src(srcX, srcY + 2);
|
ABGR8 P = src(srcX, srcY - 2), S = src(srcX, srcY + 2);
|
||||||
ABGR8 Q = src(srcX - 2, srcY), R = src(srcX + 2, srcY);
|
ABGR8 Q = src(srcX - 2, srcY), R = src(srcX + 2, srcY);
|
||||||
ABGR8 Bl = luma(B), Dl = luma(D), El = luma(E), Fl = luma(F), Hl = luma(H);
|
ABGR8 Bl = luma(B), Dl = luma(D), El = luma(E), Fl = luma(F), Hl = luma(H);
|
||||||
|
|
||||||
// 1:1 slope rules
|
// 1:1 slope rules
|
||||||
if ((D == B && D != H && D != F) && (El >= Dl || E == A) && any_eq3(E, A, C, G) && ((El < Dl) || A != D || E != P || E != Q)) J = D;
|
if ((D == B && D != H && D != F) && (El >= Dl || E == A) && any_eq3(E, A, C, G) && ((El < Dl) || A != D || E != P || E != Q)) J = D;
|
||||||
if ((B == F && B != D && B != H) && (El >= Bl || E == C) && any_eq3(E, A, C, I) && ((El < Bl) || C != B || E != P || E != R)) K = B;
|
if ((B == F && B != D && B != H) && (El >= Bl || E == C) && any_eq3(E, A, C, I) && ((El < Bl) || C != B || E != P || E != R)) K = B;
|
||||||
if ((H == D && H != F && H != B) && (El >= Hl || E == G) && any_eq3(E, A, G, I) && ((El < Hl) || G != H || E != S || E != Q)) L = H;
|
if ((H == D && H != F && H != B) && (El >= Hl || E == G) && any_eq3(E, A, G, I) && ((El < Hl) || G != H || E != S || E != Q)) L = H;
|
||||||
if ((F == H && F != B && F != D) && (El >= Fl || E == I) && any_eq3(E, C, G, I) && ((El < Fl) || I != H || E != R || E != S)) M = F;
|
if ((F == H && F != B && F != D) && (El >= Fl || E == I) && any_eq3(E, C, G, I) && ((El < Fl) || I != H || E != R || E != S)) M = F;
|
||||||
|
|
||||||
// Intersection rules
|
// Intersection rules
|
||||||
if ((E != F && all_eq4(E, C, I, D, Q) && all_eq2(F, B, H)) && (F != src(srcX + 3, srcY))) K = M = F;
|
if ((E != F && all_eq4(E, C, I, D, Q) && all_eq2(F, B, H)) && (F != src(srcX + 3, srcY))) K = M = F;
|
||||||
if ((E != D && all_eq4(E, A, G, F, R) && all_eq2(D, B, H)) && (D != src(srcX - 3, srcY))) J = L = D;
|
if ((E != D && all_eq4(E, A, G, F, R) && all_eq2(D, B, H)) && (D != src(srcX - 3, srcY))) J = L = D;
|
||||||
if ((E != H && all_eq4(E, G, I, B, P) && all_eq2(H, D, F)) && (H != src(srcX, srcY + 3))) L = M = H;
|
if ((E != H && all_eq4(E, G, I, B, P) && all_eq2(H, D, F)) && (H != src(srcX, srcY + 3))) L = M = H;
|
||||||
if ((E != B && all_eq4(E, A, C, H, S) && all_eq2(B, D, F)) && (B != src(srcX, srcY - 3))) J = K = B;
|
if ((E != B && all_eq4(E, A, C, H, S) && all_eq2(B, D, F)) && (B != src(srcX, srcY - 3))) J = K = B;
|
||||||
if (Bl < El && all_eq4(E, G, H, I, S) && none_eq4(E, A, D, C, F)) J = K = B;
|
if (Bl < El && all_eq4(E, G, H, I, S) && none_eq4(E, A, D, C, F)) J = K = B;
|
||||||
if (Hl < El && all_eq4(E, A, B, C, P) && none_eq4(E, D, G, I, F)) L = M = H;
|
if (Hl < El && all_eq4(E, A, B, C, P) && none_eq4(E, D, G, I, F)) L = M = H;
|
||||||
if (Fl < El && all_eq4(E, A, D, G, Q) && none_eq4(E, B, C, I, H)) K = M = F;
|
if (Fl < El && all_eq4(E, A, D, G, Q) && none_eq4(E, B, C, I, H)) K = M = F;
|
||||||
if (Dl < El && all_eq4(E, C, F, I, R) && none_eq4(E, B, A, G, H)) J = L = D;
|
if (Dl < El && all_eq4(E, C, F, I, R) && none_eq4(E, B, A, G, H)) J = L = D;
|
||||||
|
|
||||||
// 2:1 slope rules
|
// 2:1 slope rules
|
||||||
if (H != B) {
|
if (H != B) {
|
||||||
if (H != A && H != E && H != C) {
|
if (H != A && H != E && H != C) {
|
||||||
if (all_eq3(H, G, F, R) && none_eq2(H, D, src(srcX + 2, srcY - 1))) L = M;
|
if (all_eq3(H, G, F, R) && none_eq2(H, D, src(srcX + 2, srcY - 1))) L = M;
|
||||||
if (all_eq3(H, I, D, Q) && none_eq2(H, F, src(srcX - 2, srcY - 1))) M = L;
|
if (all_eq3(H, I, D, Q) && none_eq2(H, F, src(srcX - 2, srcY - 1))) M = L;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (B != I && B != G && B != E) {
|
if (B != I && B != G && B != E) {
|
||||||
if (all_eq3(B, A, F, R) && none_eq2(B, D, src(srcX + 2, srcY + 1))) J = K;
|
if (all_eq3(B, A, F, R) && none_eq2(B, D, src(srcX + 2, srcY + 1))) J = K;
|
||||||
if (all_eq3(B, C, D, Q) && none_eq2(B, F, src(srcX - 2, srcY + 1))) K = J;
|
if (all_eq3(B, C, D, Q) && none_eq2(B, F, src(srcX - 2, srcY + 1))) K = J;
|
||||||
}
|
}
|
||||||
} // H !== B
|
} // H !== B
|
||||||
|
|
||||||
if (F != D) {
|
if (F != D) {
|
||||||
if (D != I && D != E && D != C) {
|
if (D != I && D != E && D != C) {
|
||||||
if (all_eq3(D, A, H, S) && none_eq2(D, B, src(srcX + 1, srcY + 2))) J = L;
|
if (all_eq3(D, A, H, S) && none_eq2(D, B, src(srcX + 1, srcY + 2))) J = L;
|
||||||
if (all_eq3(D, G, B, P) && none_eq2(D, H, src(srcX + 1, srcY - 2))) L = J;
|
if (all_eq3(D, G, B, P) && none_eq2(D, H, src(srcX + 1, srcY - 2))) L = J;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (F != E && F != A && F != G) {
|
if (F != E && F != A && F != G) {
|
||||||
if (all_eq3(F, C, H, S) && none_eq2(F, B, src(srcX - 1, srcY + 2))) K = M;
|
if (all_eq3(F, C, H, S) && none_eq2(F, B, src(srcX - 1, srcY + 2))) K = M;
|
||||||
if (all_eq3(F, I, B, P) && none_eq2(F, H, src(srcX - 1, srcY - 2))) M = K;
|
if (all_eq3(F, I, B, P) && none_eq2(F, H, src(srcX - 1, srcY - 2))) M = K;
|
||||||
}
|
}
|
||||||
} // F !== D
|
} // F !== D
|
||||||
} // not constant
|
} // not constant
|
||||||
|
|
||||||
// TODO: Write four pixels at once. For now, 1/4x speed.
|
// TODO: Write four pixels at once. For now, 1/4x speed.
|
||||||
if ((xy.y & 1u) == 0u) {
|
if ((xy.y & 1u) == 0u) {
|
||||||
if ((xy.x & 1u) == 0u) {
|
if ((xy.x & 1u) == 0u) {
|
||||||
return J;
|
return J;
|
||||||
}
|
}
|
||||||
return K;
|
return K;
|
||||||
}
|
}
|
||||||
if ((xy.x & 1u) == 0u) {
|
if ((xy.x & 1u) == 0u) {
|
||||||
return L;
|
return L;
|
||||||
}
|
}
|
||||||
return M;
|
return M;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 applyScalingf(uvec2 origxy, uvec2 xy) {
|
vec4 applyScalingf(uvec2 origxy, uvec2 xy) {
|
||||||
return unpackUnorm4x8(applyScalingu(origxy, xy));
|
return unpackUnorm4x8(applyScalingu(origxy, xy));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,120 +1,120 @@
|
|||||||
// Spline36 upscaling shader.
|
// Spline36 upscaling shader.
|
||||||
// See issue #3921
|
// See issue #3921
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_position;
|
varying vec2 v_position;
|
||||||
|
|
||||||
uniform vec2 u_texelDelta;
|
uniform vec2 u_texelDelta;
|
||||||
uniform vec2 u_pixelDelta;
|
uniform vec2 u_pixelDelta;
|
||||||
|
|
||||||
const vec2 HALF_PIXEL = vec2(0.5, 0.5);
|
const vec2 HALF_PIXEL = vec2(0.5, 0.5);
|
||||||
|
|
||||||
float spline36_0_1(float x) {
|
float spline36_0_1(float x) {
|
||||||
return ((13.0 / 11.0 * x - 453.0 / 209.0) * x - 3.0 / 209.0) * x + 1.0;
|
return ((13.0 / 11.0 * x - 453.0 / 209.0) * x - 3.0 / 209.0) * x + 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float spline36_1_2(float x) {
|
float spline36_1_2(float x) {
|
||||||
return ((-6.0 / 11.0 * x + 612.0 / 209.0) * x - 1038.0 / 209.0) * x + 540.0 / 209.0;
|
return ((-6.0 / 11.0 * x + 612.0 / 209.0) * x - 1038.0 / 209.0) * x + 540.0 / 209.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float spline36_2_3(float x) {
|
float spline36_2_3(float x) {
|
||||||
return ((1.0 / 11.0 * x - 159.0 / 209.0) * x + 434.0 / 209.0) * x - 384.0 / 209.0;
|
return ((1.0 / 11.0 * x - 159.0 / 209.0) * x + 434.0 / 209.0) * x - 384.0 / 209.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 rgb(int inputX, int inputY) {
|
vec4 rgb(int inputX, int inputY) {
|
||||||
return texture2D(sampler0, (vec2(inputX, inputY) + HALF_PIXEL) * u_texelDelta);
|
return texture2D(sampler0, (vec2(inputX, inputY) + HALF_PIXEL) * u_texelDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 interpolateHorizontally(vec2 inputPos, ivec2 inputPosFloor, int dy) {
|
vec4 interpolateHorizontally(vec2 inputPos, ivec2 inputPosFloor, int dy) {
|
||||||
float sumOfWeights = 0.0;
|
float sumOfWeights = 0.0;
|
||||||
vec4 sumOfWeightedPixel = vec4(0.0);
|
vec4 sumOfWeightedPixel = vec4(0.0);
|
||||||
|
|
||||||
float x;
|
float x;
|
||||||
float weight;
|
float weight;
|
||||||
|
|
||||||
x = inputPos.x - float(inputPosFloor.x - 2);
|
x = inputPos.x - float(inputPosFloor.x - 2);
|
||||||
weight = spline36_2_3(x);
|
weight = spline36_2_3(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x - 2, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x - 2, inputPosFloor.y + dy);
|
||||||
|
|
||||||
--x;
|
--x;
|
||||||
weight = spline36_1_2(x);
|
weight = spline36_1_2(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x - 1, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x - 1, inputPosFloor.y + dy);
|
||||||
|
|
||||||
--x;
|
--x;
|
||||||
weight = spline36_0_1(x);
|
weight = spline36_0_1(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 0, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 0, inputPosFloor.y + dy);
|
||||||
|
|
||||||
x = 1.0 - x;
|
x = 1.0 - x;
|
||||||
weight = spline36_0_1(x);
|
weight = spline36_0_1(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 1, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 1, inputPosFloor.y + dy);
|
||||||
|
|
||||||
++x;
|
++x;
|
||||||
weight = spline36_1_2(x);
|
weight = spline36_1_2(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 2, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 2, inputPosFloor.y + dy);
|
||||||
|
|
||||||
++x;
|
++x;
|
||||||
weight = spline36_2_3(x);
|
weight = spline36_2_3(x);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 3, inputPosFloor.y + dy);
|
sumOfWeightedPixel += weight * rgb(inputPosFloor.x + 3, inputPosFloor.y + dy);
|
||||||
|
|
||||||
return sumOfWeightedPixel / sumOfWeights;
|
return sumOfWeightedPixel / sumOfWeights;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 process(vec2 outputPos) {
|
vec4 process(vec2 outputPos) {
|
||||||
vec2 inputPos = outputPos / u_texelDelta;
|
vec2 inputPos = outputPos / u_texelDelta;
|
||||||
ivec2 inputPosFloor = ivec2(inputPos);
|
ivec2 inputPosFloor = ivec2(inputPos);
|
||||||
|
|
||||||
// Vertical interporation
|
// Vertical interporation
|
||||||
float sumOfWeights = 0.0;
|
float sumOfWeights = 0.0;
|
||||||
vec4 sumOfWeightedPixel = vec4(0.0);
|
vec4 sumOfWeightedPixel = vec4(0.0);
|
||||||
|
|
||||||
float weight;
|
float weight;
|
||||||
float y;
|
float y;
|
||||||
|
|
||||||
y = inputPos.y - float(inputPosFloor.y - 2);
|
y = inputPos.y - float(inputPosFloor.y - 2);
|
||||||
weight = spline36_2_3(y);
|
weight = spline36_2_3(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, -2);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, -2);
|
||||||
|
|
||||||
--y;
|
--y;
|
||||||
weight = spline36_1_2(y);
|
weight = spline36_1_2(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, -1);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, -1);
|
||||||
|
|
||||||
--y;
|
--y;
|
||||||
weight = spline36_0_1(y);
|
weight = spline36_0_1(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +0);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +0);
|
||||||
|
|
||||||
y = 1.0 - y;
|
y = 1.0 - y;
|
||||||
weight = spline36_0_1(y);
|
weight = spline36_0_1(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +1);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +1);
|
||||||
|
|
||||||
++y;
|
++y;
|
||||||
weight = spline36_1_2(y);
|
weight = spline36_1_2(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +2);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +2);
|
||||||
|
|
||||||
++y;
|
++y;
|
||||||
weight = spline36_2_3(y);
|
weight = spline36_2_3(y);
|
||||||
sumOfWeights += weight;
|
sumOfWeights += weight;
|
||||||
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +3);
|
sumOfWeightedPixel += weight * interpolateHorizontally(inputPos, inputPosFloor, +3);
|
||||||
|
|
||||||
return vec4((sumOfWeightedPixel / sumOfWeights).xyz, 1.0);
|
return vec4((sumOfWeightedPixel / sumOfWeights).xyz, 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_FragColor.rgba = process(v_position);
|
gl_FragColor.rgba = process(v_position);
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attribute vec4 a_position;
|
attribute vec4 a_position;
|
||||||
attribute vec2 a_texcoord0;
|
attribute vec2 a_texcoord0;
|
||||||
|
|
||||||
varying vec2 v_position;
|
varying vec2 v_position;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
|
|
||||||
v_position = a_texcoord0;
|
v_position = a_texcoord0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,201 +1,201 @@
|
|||||||
/*
|
/*
|
||||||
AA shader 4.o / AA shader 4.o - filtro
|
AA shader 4.o / AA shader 4.o - filtro
|
||||||
|
|
||||||
Copyright (C) 2014 guest(r) - guest.r@gmail.com
|
Copyright (C) 2014 guest(r) - guest.r@gmail.com
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
This program is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU General Public License
|
modify it under the terms of the GNU General Public License
|
||||||
as published by the Free Software Foundation; either version 2
|
as published by the Free Software Foundation; either version 2
|
||||||
of the License, or (at your option) any later version.
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
// Modified as video aware smoothing effect for PPSSPP.
|
// Modified as video aware smoothing effect for PPSSPP.
|
||||||
// Some variable definitions had to be moved inside functions(and so repeated) due to glsl->hlsl auto translation failing.
|
// Some variable definitions had to be moved inside functions(and so repeated) due to glsl->hlsl auto translation failing.
|
||||||
// Also auto translation fails with bool uniform, which is why u_video is defined as float.
|
// Also auto translation fails with bool uniform, which is why u_video is defined as float.
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
uniform float u_video;
|
uniform float u_video;
|
||||||
|
|
||||||
|
|
||||||
//===========
|
//===========
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
const vec3 dt = vec3(1.0,1.0,1.0);
|
const vec3 dt = vec3(1.0,1.0,1.0);
|
||||||
|
|
||||||
vec3 texture2d (vec2 texcoord) {
|
vec3 texture2d (vec2 texcoord) {
|
||||||
|
|
||||||
float scale = 1.0;
|
float scale = 1.0;
|
||||||
if (u_video==1.0){
|
if (u_video==1.0){
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
} else {
|
} else {
|
||||||
scale = 7.0;
|
scale = 7.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 yx = vec4(1.0/480.0,1.0/272.0,-1.0/480.0,-1.0/272.0)/scale;
|
vec4 yx = vec4(1.0/480.0,1.0/272.0,-1.0/480.0,-1.0/272.0)/scale;
|
||||||
vec4 xy = vec4(2.0/480.0,2.0/272.0,-2.0/480.0,-2.0/272.0)/scale;
|
vec4 xy = vec4(2.0/480.0,2.0/272.0,-2.0/480.0,-2.0/272.0)/scale;
|
||||||
|
|
||||||
vec3 s00 = texture2D(sampler0, texcoord + yx.zw).xyz;
|
vec3 s00 = texture2D(sampler0, texcoord + yx.zw).xyz;
|
||||||
vec3 s20 = texture2D(sampler0, texcoord + yx.xw).xyz;
|
vec3 s20 = texture2D(sampler0, texcoord + yx.xw).xyz;
|
||||||
vec3 s22 = texture2D(sampler0, texcoord + yx.xy).xyz;
|
vec3 s22 = texture2D(sampler0, texcoord + yx.xy).xyz;
|
||||||
vec3 s02 = texture2D(sampler0, texcoord + yx.zy).xyz;
|
vec3 s02 = texture2D(sampler0, texcoord + yx.zy).xyz;
|
||||||
|
|
||||||
float m1=dot(abs(s00-s22),dt)+0.001;
|
float m1=dot(abs(s00-s22),dt)+0.001;
|
||||||
float m2=dot(abs(s02-s20),dt)+0.001;
|
float m2=dot(abs(s02-s20),dt)+0.001;
|
||||||
|
|
||||||
return 0.5*(m2*(s00+s22)+m1*(s02+s20))/(m1+m2);
|
return 0.5*(m2*(s00+s22)+m1*(s02+s20))/(m1+m2);
|
||||||
}
|
}
|
||||||
vec3 texture2dd (vec2 texcoord) {
|
vec3 texture2dd (vec2 texcoord) {
|
||||||
|
|
||||||
float scale = 1.0;
|
float scale = 1.0;
|
||||||
if (u_video==1.0){
|
if (u_video==1.0){
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
} else {
|
} else {
|
||||||
scale = 7.0;
|
scale = 7.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 yx = vec4(1.0/480.0,1.0/272.0,-1.0/480.0,-1.0/272.0)/scale;
|
vec4 yx = vec4(1.0/480.0,1.0/272.0,-1.0/480.0,-1.0/272.0)/scale;
|
||||||
vec4 xy = vec4(2.0/480.0,2.0/272.0,-2.0/480.0,-2.0/272.0)/scale;
|
vec4 xy = vec4(2.0/480.0,2.0/272.0,-2.0/480.0,-2.0/272.0)/scale;
|
||||||
|
|
||||||
vec3 c11 = texture2D(sampler0, texcoord ).xyz;
|
vec3 c11 = texture2D(sampler0, texcoord ).xyz;
|
||||||
vec3 c00 = texture2D(sampler0, texcoord + xy.zw).xyz;
|
vec3 c00 = texture2D(sampler0, texcoord + xy.zw).xyz;
|
||||||
vec3 c20 = texture2D(sampler0, texcoord + xy.xw).xyz;
|
vec3 c20 = texture2D(sampler0, texcoord + xy.xw).xyz;
|
||||||
vec3 c22 = texture2D(sampler0, texcoord + xy.xy).xyz;
|
vec3 c22 = texture2D(sampler0, texcoord + xy.xy).xyz;
|
||||||
vec3 c02 = texture2D(sampler0, texcoord + xy.zy).xyz;
|
vec3 c02 = texture2D(sampler0, texcoord + xy.zy).xyz;
|
||||||
vec3 s00 = texture2D(sampler0, texcoord + yx.zw).xyz;
|
vec3 s00 = texture2D(sampler0, texcoord + yx.zw).xyz;
|
||||||
vec3 s20 = texture2D(sampler0, texcoord + yx.xw).xyz;
|
vec3 s20 = texture2D(sampler0, texcoord + yx.xw).xyz;
|
||||||
vec3 s22 = texture2D(sampler0, texcoord + yx.xy).xyz;
|
vec3 s22 = texture2D(sampler0, texcoord + yx.xy).xyz;
|
||||||
vec3 s02 = texture2D(sampler0, texcoord + yx.zy).xyz;
|
vec3 s02 = texture2D(sampler0, texcoord + yx.zy).xyz;
|
||||||
|
|
||||||
float d1=dot(abs(c00-c22),dt)+0.001;
|
float d1=dot(abs(c00-c22),dt)+0.001;
|
||||||
float d2=dot(abs(c20-c02),dt)+0.001;
|
float d2=dot(abs(c20-c02),dt)+0.001;
|
||||||
float m1=dot(abs(s00-s22),dt)+0.001;
|
float m1=dot(abs(s00-s22),dt)+0.001;
|
||||||
float m2=dot(abs(s02-s20),dt)+0.001;
|
float m2=dot(abs(s02-s20),dt)+0.001;
|
||||||
|
|
||||||
vec3 t2=(d1*(c20+c02)+d2*(c00+c22))/(2.0*(d1+d2));
|
vec3 t2=(d1*(c20+c02)+d2*(c00+c22))/(2.0*(d1+d2));
|
||||||
|
|
||||||
return 0.25*(c11+t2+(m2*(s00+s22)+m1*(s02+s20))/(m1+m2));
|
return 0.25*(c11+t2+(m2*(s00+s22)+m1*(s02+s20))/(m1+m2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
float scale = 7.0;
|
float scale = 7.0;
|
||||||
bool filtro = false;
|
bool filtro = false;
|
||||||
|
|
||||||
if (u_video==1.0){
|
if (u_video==1.0){
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
filtro = true;
|
filtro = true;
|
||||||
} else {
|
} else {
|
||||||
scale = 7.0;
|
scale = 7.0;
|
||||||
filtro = false;
|
filtro = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculating texel coordinates
|
// Calculating texel coordinates
|
||||||
|
|
||||||
vec2 size = vec2(480.0,272.0)*scale;
|
vec2 size = vec2(480.0,272.0)*scale;
|
||||||
vec2 inv_size = vec2(1.0/480.0,1.0/272.0)/scale;
|
vec2 inv_size = vec2(1.0/480.0,1.0/272.0)/scale;
|
||||||
|
|
||||||
vec2 OGL2Pos = v_texcoord0 * size;
|
vec2 OGL2Pos = v_texcoord0 * size;
|
||||||
vec2 fp = fract(OGL2Pos);
|
vec2 fp = fract(OGL2Pos);
|
||||||
vec2 dx = vec2(inv_size.x,0.0);
|
vec2 dx = vec2(inv_size.x,0.0);
|
||||||
vec2 dy = vec2(0.0, inv_size.y);
|
vec2 dy = vec2(0.0, inv_size.y);
|
||||||
vec2 g1 = vec2(inv_size.x,inv_size.y);
|
vec2 g1 = vec2(inv_size.x,inv_size.y);
|
||||||
vec2 g2 = vec2(-inv_size.x,inv_size.y);
|
vec2 g2 = vec2(-inv_size.x,inv_size.y);
|
||||||
|
|
||||||
vec2 pC4 = floor(OGL2Pos) * inv_size + 0.5*inv_size;
|
vec2 pC4 = floor(OGL2Pos) * inv_size + 0.5*inv_size;
|
||||||
|
|
||||||
// Reading the texels
|
// Reading the texels
|
||||||
vec3 C0 = texture2d(pC4 - g1);
|
vec3 C0 = texture2d(pC4 - g1);
|
||||||
vec3 C1 = texture2d(pC4 - dy);
|
vec3 C1 = texture2d(pC4 - dy);
|
||||||
vec3 C2 = texture2d(pC4 - g2);
|
vec3 C2 = texture2d(pC4 - g2);
|
||||||
vec3 C3 = texture2d(pC4 - dx);
|
vec3 C3 = texture2d(pC4 - dx);
|
||||||
vec3 C4 = texture2d(pC4 );
|
vec3 C4 = texture2d(pC4 );
|
||||||
vec3 C5 = texture2d(pC4 + dx);
|
vec3 C5 = texture2d(pC4 + dx);
|
||||||
vec3 C6 = texture2d(pC4 + g2);
|
vec3 C6 = texture2d(pC4 + g2);
|
||||||
vec3 C7 = texture2d(pC4 + dy);
|
vec3 C7 = texture2d(pC4 + dy);
|
||||||
vec3 C8 = texture2d(pC4 + g1);
|
vec3 C8 = texture2d(pC4 + g1);
|
||||||
|
|
||||||
vec3 ul, ur, dl, dr;
|
vec3 ul, ur, dl, dr;
|
||||||
float m1, m2;
|
float m1, m2;
|
||||||
|
|
||||||
m1 = dot(abs(C0-C4),dt)+0.001;
|
m1 = dot(abs(C0-C4),dt)+0.001;
|
||||||
m2 = dot(abs(C1-C3),dt)+0.001;
|
m2 = dot(abs(C1-C3),dt)+0.001;
|
||||||
ul = (m2*(C0+C4)+m1*(C1+C3))/(m1+m2);
|
ul = (m2*(C0+C4)+m1*(C1+C3))/(m1+m2);
|
||||||
|
|
||||||
m1 = dot(abs(C1-C5),dt)+0.001;
|
m1 = dot(abs(C1-C5),dt)+0.001;
|
||||||
m2 = dot(abs(C2-C4),dt)+0.001;
|
m2 = dot(abs(C2-C4),dt)+0.001;
|
||||||
ur = (m2*(C1+C5)+m1*(C2+C4))/(m1+m2);
|
ur = (m2*(C1+C5)+m1*(C2+C4))/(m1+m2);
|
||||||
|
|
||||||
m1 = dot(abs(C3-C7),dt)+0.001;
|
m1 = dot(abs(C3-C7),dt)+0.001;
|
||||||
m2 = dot(abs(C6-C4),dt)+0.001;
|
m2 = dot(abs(C6-C4),dt)+0.001;
|
||||||
dl = (m2*(C3+C7)+m1*(C6+C4))/(m1+m2);
|
dl = (m2*(C3+C7)+m1*(C6+C4))/(m1+m2);
|
||||||
|
|
||||||
m1 = dot(abs(C4-C8),dt)+0.001;
|
m1 = dot(abs(C4-C8),dt)+0.001;
|
||||||
m2 = dot(abs(C5-C7),dt)+0.001;
|
m2 = dot(abs(C5-C7),dt)+0.001;
|
||||||
dr = (m2*(C4+C8)+m1*(C5+C7))/(m1+m2);
|
dr = (m2*(C4+C8)+m1*(C5+C7))/(m1+m2);
|
||||||
|
|
||||||
vec3 result = vec3(0.5*((dr*fp.x+dl*(1.0-fp.x))*fp.y+(ur*fp.x+ul*(1.0-fp.x))*(1.0-fp.y)));
|
vec3 result = vec3(0.5*((dr*fp.x+dl*(1.0-fp.x))*fp.y+(ur*fp.x+ul*(1.0-fp.x))*(1.0-fp.y)));
|
||||||
|
|
||||||
if(filtro){
|
if(filtro){
|
||||||
vec3 c11 = 0.5*((dr*fp.x+dl*(1.0-fp.x))*fp.y+(ur*fp.x+ul*(1.0-fp.x))*(1.0-fp.y));
|
vec3 c11 = 0.5*((dr*fp.x+dl*(1.0-fp.x))*fp.y+(ur*fp.x+ul*(1.0-fp.x))*(1.0-fp.y));
|
||||||
|
|
||||||
inv_size = vec2(2.0/480.0,2.0/272.0)/scale;;
|
inv_size = vec2(2.0/480.0,2.0/272.0)/scale;;
|
||||||
|
|
||||||
dx = vec2(inv_size.x,0.0);
|
dx = vec2(inv_size.x,0.0);
|
||||||
dy = vec2(0.0,inv_size.y);
|
dy = vec2(0.0,inv_size.y);
|
||||||
g1 = vec2( inv_size.x,inv_size.y);
|
g1 = vec2( inv_size.x,inv_size.y);
|
||||||
g2 = vec2(-inv_size.x,inv_size.y);
|
g2 = vec2(-inv_size.x,inv_size.y);
|
||||||
pC4 = v_texcoord0;
|
pC4 = v_texcoord0;
|
||||||
|
|
||||||
C0 = texture2dd(pC4-g1);
|
C0 = texture2dd(pC4-g1);
|
||||||
C1 = texture2dd(pC4-dy);
|
C1 = texture2dd(pC4-dy);
|
||||||
C2 = texture2dd(pC4-g2);
|
C2 = texture2dd(pC4-g2);
|
||||||
C3 = texture2dd(pC4-dx);
|
C3 = texture2dd(pC4-dx);
|
||||||
C4 = texture2dd(pC4 );
|
C4 = texture2dd(pC4 );
|
||||||
C5 = texture2dd(pC4+dx);
|
C5 = texture2dd(pC4+dx);
|
||||||
C6 = texture2dd(pC4+g2);
|
C6 = texture2dd(pC4+g2);
|
||||||
C7 = texture2dd(pC4+dy);
|
C7 = texture2dd(pC4+dy);
|
||||||
C8 = texture2dd(pC4+g1);
|
C8 = texture2dd(pC4+g1);
|
||||||
|
|
||||||
vec3 mn1 = min(min(C0,C1),C2);
|
vec3 mn1 = min(min(C0,C1),C2);
|
||||||
vec3 mn2 = min(min(C3,C4),C5);
|
vec3 mn2 = min(min(C3,C4),C5);
|
||||||
vec3 mn3 = min(min(C6,C7),C8);
|
vec3 mn3 = min(min(C6,C7),C8);
|
||||||
vec3 mx1 = max(max(C0,C1),C2);
|
vec3 mx1 = max(max(C0,C1),C2);
|
||||||
vec3 mx2 = max(max(C3,C4),C5);
|
vec3 mx2 = max(max(C3,C4),C5);
|
||||||
vec3 mx3 = max(max(C6,C7),C8);
|
vec3 mx3 = max(max(C6,C7),C8);
|
||||||
|
|
||||||
mn1 = min(min(mn1,mn2),mn3);
|
mn1 = min(min(mn1,mn2),mn3);
|
||||||
mx1 = max(max(mx1,mx2),mx3);
|
mx1 = max(max(mx1,mx2),mx3);
|
||||||
|
|
||||||
vec3 dif1 = abs(c11-mn1) + 0.0001*dt;
|
vec3 dif1 = abs(c11-mn1) + 0.0001*dt;
|
||||||
vec3 dif2 = abs(c11-mx1) + 0.0001*dt;
|
vec3 dif2 = abs(c11-mx1) + 0.0001*dt;
|
||||||
|
|
||||||
float filterparam = 2.0;
|
float filterparam = 2.0;
|
||||||
|
|
||||||
dif1=vec3(pow(dif1.x,filterparam),pow(dif1.y,filterparam),pow(dif1.z,filterparam));
|
dif1=vec3(pow(dif1.x,filterparam),pow(dif1.y,filterparam),pow(dif1.z,filterparam));
|
||||||
dif2=vec3(pow(dif2.x,filterparam),pow(dif2.y,filterparam),pow(dif2.z,filterparam));
|
dif2=vec3(pow(dif2.x,filterparam),pow(dif2.y,filterparam),pow(dif2.z,filterparam));
|
||||||
|
|
||||||
c11.r = (dif1.x*mx1.x + dif2.x*mn1.x)/(dif1.x + dif2.x);
|
c11.r = (dif1.x*mx1.x + dif2.x*mn1.x)/(dif1.x + dif2.x);
|
||||||
c11.g = (dif1.y*mx1.y + dif2.y*mn1.y)/(dif1.y + dif2.y);
|
c11.g = (dif1.y*mx1.y + dif2.y*mn1.y)/(dif1.y + dif2.y);
|
||||||
c11.b = (dif1.z*mx1.z + dif2.z*mn1.z)/(dif1.z + dif2.z);
|
c11.b = (dif1.z*mx1.z + dif2.z*mn1.z)/(dif1.z + dif2.z);
|
||||||
|
|
||||||
result = c11;
|
result = c11;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gl_FragColor.xyz=result.xyz;
|
gl_FragColor.xyz=result.xyz;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
// Simple vignette shader - darker towards the corners like in the unprocessed output of a real camera.
|
// Simple vignette shader - darker towards the corners like in the unprocessed output of a real camera.
|
||||||
|
|
||||||
#ifdef GL_ES
|
#ifdef GL_ES
|
||||||
precision mediump float;
|
precision mediump float;
|
||||||
precision mediump int;
|
precision mediump int;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uniform sampler2D sampler0;
|
uniform sampler2D sampler0;
|
||||||
varying vec2 v_texcoord0;
|
varying vec2 v_texcoord0;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
float vignette = 1.1 - 0.6 * (dot(v_texcoord0 - 0.5, v_texcoord0 - 0.5) * 2.0);
|
float vignette = 1.1 - 0.6 * (dot(v_texcoord0 - 0.5, v_texcoord0 - 0.5) * 2.0);
|
||||||
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
vec3 rgb = texture2D(sampler0, v_texcoord0.xy).xyz;
|
||||||
gl_FragColor.rgb = vignette * rgb;
|
gl_FragColor.rgb = vignette * rgb;
|
||||||
gl_FragColor.a = 1.0;
|
gl_FragColor.a = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,212 +1,212 @@
|
|||||||
The two fonts in this directory (font_western.bin and font_japanese.bin) were
|
The two fonts in this directory (font_western.bin and font_japanese.bin) were
|
||||||
generated using gc-font-tool which can be found in the docs/ directory in the
|
generated using gc-font-tool which can be found in the docs/ directory in the
|
||||||
dolphin source code.
|
dolphin source code.
|
||||||
|
|
||||||
Both fonts are based on Droid Sans
|
Both fonts are based on Droid Sans
|
||||||
|
|
||||||
Copyright 2006-2014, Google Corporation
|
Copyright 2006-2014, Google Corporation
|
||||||
Licensed under the Apache License 2.0
|
Licensed under the Apache License 2.0
|
||||||
|
|
||||||
====
|
====
|
||||||
|
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
http://www.apache.org/licenses/
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
1. Definitions.
|
1. Definitions.
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
the copyright owner that is granting the License.
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
other entities that control, are controlled by, or are under common
|
other entities that control, are controlled by, or are under common
|
||||||
control with that entity. For the purposes of this definition,
|
control with that entity. For the purposes of this definition,
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
direction or management of such entity, whether by contract or
|
direction or management of such entity, whether by contract or
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
exercising permissions granted by this License.
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
including but not limited to software source code, documentation
|
including but not limited to software source code, documentation
|
||||||
source, and configuration files.
|
source, and configuration files.
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
"Object" form shall mean any form resulting from mechanical
|
||||||
transformation or translation of a Source form, including but
|
transformation or translation of a Source form, including but
|
||||||
not limited to compiled object code, generated documentation,
|
not limited to compiled object code, generated documentation,
|
||||||
and conversions to other media types.
|
and conversions to other media types.
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
Object form, made available under the License, as indicated by a
|
Object form, made available under the License, as indicated by a
|
||||||
copyright notice that is included in or attached to the work
|
copyright notice that is included in or attached to the work
|
||||||
(an example is provided in the Appendix below).
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
form, that is based on (or derived from) the Work and for which the
|
form, that is based on (or derived from) the Work and for which the
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
of this License, Derivative Works shall not include works that remain
|
of this License, Derivative Works shall not include works that remain
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
the Work and Derivative Works thereof.
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
"Contribution" shall mean any work of authorship, including
|
||||||
the original version of the Work and any modifications or additions
|
the original version of the Work and any modifications or additions
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
means any form of electronic, verbal, or written communication sent
|
means any form of electronic, verbal, or written communication sent
|
||||||
to the Licensor or its representatives, including but not limited to
|
to the Licensor or its representatives, including but not limited to
|
||||||
communication on electronic mailing lists, source code control systems,
|
communication on electronic mailing lists, source code control systems,
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
excluding communication that is conspicuously marked or otherwise
|
excluding communication that is conspicuously marked or otherwise
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
subsequently incorporated within the Work.
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
Work and such Derivative Works in Source or Object form.
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
(except as stated in this section) patent license to make, have made,
|
(except as stated in this section) patent license to make, have made,
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
where such license applies only to those patent claims licensable
|
where such license applies only to those patent claims licensable
|
||||||
by such Contributor that are necessarily infringed by their
|
by such Contributor that are necessarily infringed by their
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
institute patent litigation against any entity (including a
|
institute patent litigation against any entity (including a
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
or contributory patent infringement, then any patent licenses
|
or contributory patent infringement, then any patent licenses
|
||||||
granted to You under this License for that Work shall terminate
|
granted to You under this License for that Work shall terminate
|
||||||
as of the date such litigation is filed.
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
modifications, and in Source or Object form, provided that You
|
modifications, and in Source or Object form, provided that You
|
||||||
meet the following conditions:
|
meet the following conditions:
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
(a) You must give any other recipients of the Work or
|
||||||
Derivative Works a copy of this License; and
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
(b) You must cause any modified files to carry prominent notices
|
||||||
stating that You changed the files; and
|
stating that You changed the files; and
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
that You distribute, all copyright, patent, trademark, and
|
that You distribute, all copyright, patent, trademark, and
|
||||||
attribution notices from the Source form of the Work,
|
attribution notices from the Source form of the Work,
|
||||||
excluding those notices that do not pertain to any part of
|
excluding those notices that do not pertain to any part of
|
||||||
the Derivative Works; and
|
the Derivative Works; and
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
distribution, then any Derivative Works that You distribute must
|
distribution, then any Derivative Works that You distribute must
|
||||||
include a readable copy of the attribution notices contained
|
include a readable copy of the attribution notices contained
|
||||||
within such NOTICE file, excluding those notices that do not
|
within such NOTICE file, excluding those notices that do not
|
||||||
pertain to any part of the Derivative Works, in at least one
|
pertain to any part of the Derivative Works, in at least one
|
||||||
of the following places: within a NOTICE text file distributed
|
of the following places: within a NOTICE text file distributed
|
||||||
as part of the Derivative Works; within the Source form or
|
as part of the Derivative Works; within the Source form or
|
||||||
documentation, if provided along with the Derivative Works; or,
|
documentation, if provided along with the Derivative Works; or,
|
||||||
within a display generated by the Derivative Works, if and
|
within a display generated by the Derivative Works, if and
|
||||||
wherever such third-party notices normally appear. The contents
|
wherever such third-party notices normally appear. The contents
|
||||||
of the NOTICE file are for informational purposes only and
|
of the NOTICE file are for informational purposes only and
|
||||||
do not modify the License. You may add Your own attribution
|
do not modify the License. You may add Your own attribution
|
||||||
notices within Derivative Works that You distribute, alongside
|
notices within Derivative Works that You distribute, alongside
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
that such additional attribution notices cannot be construed
|
that such additional attribution notices cannot be construed
|
||||||
as modifying the License.
|
as modifying the License.
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
You may add Your own copyright statement to Your modifications and
|
||||||
may provide additional or different license terms and conditions
|
may provide additional or different license terms and conditions
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
the conditions stated in this License.
|
the conditions stated in this License.
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
this License, without any additional terms or conditions.
|
this License, without any additional terms or conditions.
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
the terms of any separate license agreement you may have executed
|
the terms of any separate license agreement you may have executed
|
||||||
with Licensor regarding such Contributions.
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
except as required for reasonable and customary use in describing the
|
except as required for reasonable and customary use in describing the
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
implied, including, without limitation, any warranties or conditions
|
implied, including, without limitation, any warranties or conditions
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
appropriateness of using or redistributing the Work and assume any
|
appropriateness of using or redistributing the Work and assume any
|
||||||
risks associated with Your exercise of permissions under this License.
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
unless required by applicable law (such as deliberate and grossly
|
unless required by applicable law (such as deliberate and grossly
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
liable to You for damages, including any direct, indirect, special,
|
liable to You for damages, including any direct, indirect, special,
|
||||||
incidental, or consequential damages of any character arising as a
|
incidental, or consequential damages of any character arising as a
|
||||||
result of this License or out of the use or inability to use the
|
result of this License or out of the use or inability to use the
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
other commercial damages or losses), even if such Contributor
|
other commercial damages or losses), even if such Contributor
|
||||||
has been advised of the possibility of such damages.
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
or other liability obligations and/or rights consistent with this
|
or other liability obligations and/or rights consistent with this
|
||||||
License. However, in accepting such obligations, You may act only
|
License. However, in accepting such obligations, You may act only
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
defend, and hold each Contributor harmless for any liability
|
defend, and hold each Contributor harmless for any liability
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
To apply the Apache License to your work, attach the following
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
replaced with your own identifying information. (Don't include
|
replaced with your own identifying information. (Don't include
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
comment syntax for the file format. We also recommend that a
|
comment syntax for the file format. We also recommend that a
|
||||||
file or class name and description of purpose be included on the
|
file or class name and description of purpose be included on the
|
||||||
same "printed page" as the copyright notice for easier
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
identification within third-party archives.
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# 1-2 - Wii System Menu
|
# 1-2 - Wii System Menu
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SafeTextureCacheColorSamples = 0
|
SafeTextureCacheColorSamples = 0
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# 1-2 - System Menu (v1, Startup Disc Menu)
|
# 1-2 - System Menu (v1, Startup Disc Menu)
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
DSPHLE = False
|
DSPHLE = False
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# Cxxxxx All Virtual Console Commodore 64 games
|
# Cxxxxx All Virtual Console Commodore 64 games
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[Video]
|
[Video]
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SuggestedAspectRatio = 2
|
SuggestedAspectRatio = 2
|
||||||
SafeTextureCacheColorSamples = 0
|
SafeTextureCacheColorSamples = 0
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# D43E01, D43J01, D43P01, D43U01 - ZELDA OCARINA MULTI PACK
|
# D43E01, D43J01, D43P01, D43U01 - ZELDA OCARINA MULTI PACK
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Hacks]
|
[Video_Hacks]
|
||||||
EFBToTextureEnable = False
|
EFBToTextureEnable = False
|
||||||
|
|||||||
@@ -1,105 +1,105 @@
|
|||||||
# D43E01 - Legend of Zelda, The - Ocarina of Time - Master Quest
|
# D43E01 - Legend of Zelda, The - Ocarina of Time - Master Quest
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
$Max Hearts
|
$Max Hearts
|
||||||
02BE1816 00000140
|
02BE1816 00000140
|
||||||
$Infinite Hearts
|
$Infinite Hearts
|
||||||
02BE1818 00000140
|
02BE1818 00000140
|
||||||
$Infinite Magic
|
$Infinite Magic
|
||||||
08BE1821 00000008
|
08BE1821 00000008
|
||||||
00BE1890 00000007
|
00BE1890 00000007
|
||||||
00BE1822 00000001
|
00BE1822 00000001
|
||||||
00BE1824 00000001
|
00BE1824 00000001
|
||||||
00BE181B 00000060
|
00BE181B 00000060
|
||||||
$Infinite Hover When Moving
|
$Infinite Hover When Moving
|
||||||
12132F1A 00000000
|
12132F1A 00000000
|
||||||
02CA2AB2 0000000F
|
02CA2AB2 0000000F
|
||||||
$Infinite Rupees
|
$Infinite Rupees
|
||||||
02BE181C 000003E7
|
02BE181C 000003E7
|
||||||
$Swords/Shields/boots/tunics
|
$Swords/Shields/boots/tunics
|
||||||
02BE1884 00007777
|
02BE1884 00007777
|
||||||
$Have Quiver (Adult)
|
$Have Quiver (Adult)
|
||||||
00BE1889 00000001
|
00BE1889 00000001
|
||||||
$Golden Gauntlets (Adult)
|
$Golden Gauntlets (Adult)
|
||||||
00BE188B 000000C0
|
00BE188B 000000C0
|
||||||
$All Quest Items
|
$All Quest Items
|
||||||
04BE188C 30FFFFFF
|
04BE188C 30FFFFFF
|
||||||
$Biggoron's Sword
|
$Biggoron's Sword
|
||||||
00BE1826 00000001
|
00BE1826 00000001
|
||||||
$999 Gold Skulltulas
|
$999 Gold Skulltulas
|
||||||
02BE18B8 000003E7
|
02BE18B8 000003E7
|
||||||
$Have Deku Stick
|
$Have Deku Stick
|
||||||
00BE185C 00000000
|
00BE185C 00000000
|
||||||
$Infinite Deku Sticks
|
$Infinite Deku Sticks
|
||||||
00BE1874 00000009
|
00BE1874 00000009
|
||||||
$Flaming Deku Stick
|
$Flaming Deku Stick
|
||||||
02CA2A80 000000C4
|
02CA2A80 000000C4
|
||||||
$Have Deku Nuts
|
$Have Deku Nuts
|
||||||
00BE185D 00000001
|
00BE185D 00000001
|
||||||
$Infinite Deku Nuts
|
$Infinite Deku Nuts
|
||||||
00BE1875 0000000A
|
00BE1875 0000000A
|
||||||
$Have Bombs
|
$Have Bombs
|
||||||
00BE185E 00000002
|
00BE185E 00000002
|
||||||
$Infinite Bombs
|
$Infinite Bombs
|
||||||
00BE1876 00000009
|
00BE1876 00000009
|
||||||
$Have Fairy Slingshot
|
$Have Fairy Slingshot
|
||||||
00BE1862 00000006
|
00BE1862 00000006
|
||||||
$Infinite Slingshot Ammo
|
$Infinite Slingshot Ammo
|
||||||
00BE187A 00000009
|
00BE187A 00000009
|
||||||
$Have Fairy Ocarina (Not Time)
|
$Have Fairy Ocarina (Not Time)
|
||||||
00BE1863 00000007
|
00BE1863 00000007
|
||||||
$Have Ocarina Of Time (Not Fairy)
|
$Have Ocarina Of Time (Not Fairy)
|
||||||
00BE1863 00000008
|
00BE1863 00000008
|
||||||
$Have Bombchu
|
$Have Bombchu
|
||||||
00BE1864 00000009
|
00BE1864 00000009
|
||||||
$Infinite Bombchu's
|
$Infinite Bombchu's
|
||||||
00BE187C 00000009
|
00BE187C 00000009
|
||||||
$Have Boomerang
|
$Have Boomerang
|
||||||
00BE1868 0000000E
|
00BE1868 0000000E
|
||||||
$Have Lens Of Truth
|
$Have Lens Of Truth
|
||||||
00BE1869 0000000F
|
00BE1869 0000000F
|
||||||
$Have Magic Beans
|
$Have Magic Beans
|
||||||
00BE186A 00000010
|
00BE186A 00000010
|
||||||
$Infinite Magic Beans
|
$Infinite Magic Beans
|
||||||
00BE1882 00000009
|
00BE1882 00000009
|
||||||
$Have Fairy Bow
|
$Have Fairy Bow
|
||||||
00BE185F 00000003
|
00BE185F 00000003
|
||||||
$Infinite Arrows
|
$Infinite Arrows
|
||||||
00BE1877 00000009
|
00BE1877 00000009
|
||||||
$Have Fire Arrow (MP2)
|
$Have Fire Arrow (MP2)
|
||||||
00BE1860 00000004
|
00BE1860 00000004
|
||||||
$Have Ice Arrow (MP2)
|
$Have Ice Arrow (MP2)
|
||||||
00BE1866 0000000C
|
00BE1866 0000000C
|
||||||
$Light Arrow (MP4)
|
$Light Arrow (MP4)
|
||||||
00BE186C 00000012
|
00BE186C 00000012
|
||||||
$Have Hookshot (Not Longshot)
|
$Have Hookshot (Not Longshot)
|
||||||
00BE1865 0000000A
|
00BE1865 0000000A
|
||||||
$Have Longshot (Not Hookshot)
|
$Have Longshot (Not Hookshot)
|
||||||
00BE1865 0000000B
|
00BE1865 0000000B
|
||||||
$Have Megaton Hammer
|
$Have Megaton Hammer
|
||||||
00BE186B 00000011
|
00BE186B 00000011
|
||||||
$Have Din's Fire (MP6)
|
$Have Din's Fire (MP6)
|
||||||
00BE1861 00000005
|
00BE1861 00000005
|
||||||
$Have Fairie's Wind (MP6)
|
$Have Fairie's Wind (MP6)
|
||||||
00BE1867 0000000D
|
00BE1867 0000000D
|
||||||
$Have Nayru's Love (MP12)
|
$Have Nayru's Love (MP12)
|
||||||
00BE186D 00000013
|
00BE186D 00000013
|
||||||
$Have Empty Bottle 1
|
$Have Empty Bottle 1
|
||||||
08BE186E 000000FF
|
08BE186E 000000FF
|
||||||
00BE188E 00000014
|
00BE188E 00000014
|
||||||
$Have Empty Bottle 2
|
$Have Empty Bottle 2
|
||||||
08BE186F 000000FF
|
08BE186F 000000FF
|
||||||
00BE186F 00000014
|
00BE186F 00000014
|
||||||
$Have Empty Bottle 3
|
$Have Empty Bottle 3
|
||||||
08BE1870 000000FF
|
08BE1870 000000FF
|
||||||
00BE1870 00000014
|
00BE1870 00000014
|
||||||
$Have Empty Bottle 4
|
$Have Empty Bottle 4
|
||||||
08BE1871 000000FF
|
08BE1871 000000FF
|
||||||
00BE1871 00000014
|
00BE1871 00000014
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
# D43J01 - ZELDA OCARINA MULTI PACK
|
# D43J01 - ZELDA OCARINA MULTI PACK
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
$loophack
|
$loophack
|
||||||
0x806866E4:word:0x60000000
|
0x806866E4:word:0x60000000
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
# D85E01 - Interactive Multi Game Demo Disc v12
|
# D85E01 - Interactive Multi Game Demo Disc v12
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
FPRF = True
|
FPRF = True
|
||||||
MMU = True
|
MMU = True
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
# D86P01 - Interactive Multi Game Demo Disc v12
|
# D86P01 - Interactive Multi Game Demo Disc v12
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
FPRF = True
|
FPRF = True
|
||||||
MMU = True
|
MMU = True
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
# D93U01 - Interactive Multi-Game Demo Disk: November 2003
|
|
||||||
|
|
||||||
[Core]
|
|
||||||
FPRF = True
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
# D95P01 - Interactive Multi Game Demo Disc v5
|
# D95P01 - Interactive Multi Game Demo Disc v5
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
FPRF = True
|
FPRF = True
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
# DAXP01, DAXE01 - The Legend of Zelda Skyward Sword
|
# DAXP01, DAXE01 - The Legend of Zelda Skyward Sword
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Hacks]
|
[Video_Hacks]
|
||||||
EFBAccessEnable = True
|
EFBAccessEnable = True
|
||||||
EFBEmulateFormatChanges = True
|
EFBEmulateFormatChanges = True
|
||||||
|
|
||||||
[Video_Enhancements]
|
[Video_Enhancements]
|
||||||
ArbitraryMipmapDetection = True
|
ArbitraryMipmapDetection = True
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
# DD2P41 - Just Dance 2 (Demo)
|
# DD2P41 - Just Dance 2 (Demo)
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SafeTextureCacheColorSamples = 512
|
SafeTextureCacheColorSamples = 512
|
||||||
|
|
||||||
[Video_Enhancements]
|
[Video_Enhancements]
|
||||||
MaxAnisotropy = 0
|
MaxAnisotropy = 0
|
||||||
ForceFiltering = False
|
ForceFiltering = False
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# DJU - (unknown title - INI file autogenerated from vWii system menu list of titles without 16:9 support)
|
# DJU - (unknown title - INI file autogenerated from vWii system menu list of titles without 16:9 support)
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SuggestedAspectRatio = 2
|
SuggestedAspectRatio = 2
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
# DLSE64, DLSP64 - Star Wars: Rogue Squadron III: Rebel Strike: Limited Edition Bonus Disc (Demo)
|
# DLSE64, DLSP64 - Star Wars: Rogue Squadron III: Rebel Strike: Limited Edition Bonus Disc (Demo)
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
MMU = 1
|
MMU = 1
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video]
|
[Video]
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
|
|
||||||
[Video_Hacks]
|
[Video_Hacks]
|
||||||
EFBToTextureEnable = False
|
EFBToTextureEnable = False
|
||||||
ImmediateXFBEnable = False
|
ImmediateXFBEnable = False
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# DQAJK2 - Aquarius Baseball
|
# DQAJK2 - Aquarius Baseball
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SuggestedAspectRatio = 2
|
SuggestedAspectRatio = 2
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# Exxxxx - All "Virtual Console Arcade" and NeoGeo Virtual Console games
|
# Exxxxx - All "Virtual Console Arcade" and NeoGeo Virtual Console games
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SuggestedAspectRatio = 2
|
SuggestedAspectRatio = 2
|
||||||
SafeTextureCacheColorSamples = 0
|
SafeTextureCacheColorSamples = 0
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
# E52E08 - 1942
|
# E52E08 - 1942
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Hacks]
|
[Video_Hacks]
|
||||||
EFBToTextureEnable = False
|
EFBToTextureEnable = False
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
# E53E08 - BLACK TIGER
|
# E53E08 - BLACK TIGER
|
||||||
|
|
||||||
[Core]
|
[Core]
|
||||||
# Values set here will override the main Dolphin settings.
|
# Values set here will override the main Dolphin settings.
|
||||||
|
|
||||||
[OnLoad]
|
[OnLoad]
|
||||||
# Add memory patches to be loaded once on boot here.
|
# Add memory patches to be loaded once on boot here.
|
||||||
|
|
||||||
[OnFrame]
|
[OnFrame]
|
||||||
# Add memory patches to be applied every frame here.
|
# Add memory patches to be applied every frame here.
|
||||||
|
|
||||||
[ActionReplay]
|
[ActionReplay]
|
||||||
# Add action replay cheats here.
|
# Add action replay cheats here.
|
||||||
|
|
||||||
[Video_Hacks]
|
[Video_Hacks]
|
||||||
EFBToTextureEnable = False
|
EFBToTextureEnable = False
|
||||||
|
|
||||||
[Video_Settings]
|
[Video_Settings]
|
||||||
SafeTextureCacheColorSamples = 0
|
SafeTextureCacheColorSamples = 0
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user