diff --git a/.github/workflows/build-main.yaml b/.github/workflows/build-main.yaml index fabd5606a..6c0ac0322 100644 --- a/.github/workflows/build-main.yaml +++ b/.github/workflows/build-main.yaml @@ -106,6 +106,7 @@ jobs: |**Atari VCS, AOKZOE, Ayaneo, Ayn, GPD, and other x86_64 devices**|[JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/AMD64/)| |**Hardkernel ODROID Go Ultra, Powkiddy RGB10 Max 3 Pro**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_GOU.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_GOU.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| |**Hardkernel ODROID N2/N2+**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.img.gz)-Odroid_N2.img|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| + |**Hardkernel ODROID N2L**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}-Odroid_N2L.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.img.gz)-Odroid_N2L.img|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/S922X/)| |**Orange Pi 5, and Indiedroid Nova**|[JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3588/)| |**Powkiddy x55**|[JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.img.gz](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.img.gz)|[documentation](/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/)| @@ -123,7 +124,7 @@ jobs: |**Anbernic RG353P/M/V/VS, RG503, Powkiddy RK2023, RGB30**|[JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566.aarch64-${{ steps.version.outputs.version }}.tar)| |**Anbernic RG552**|[JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3399.aarch64-${{ steps.version.outputs.version }}.tar)| |****Atari VCS, AOKZOE, Ayaneo, Ayn, GPD, and other x86_64 devices****|[JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-AMD64.x86_64-${{ steps.version.outputs.version }}.tar)| - |**Hardkernel ODROID Go Ultra, N2/N2+, Powkiddy RGB10 Max 3 Pro**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar)| + |**Hardkernel ODROID Go Ultra, N2/N2+/N2L, Powkiddy RGB10 Max 3 Pro**|[JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-S922X.aarch64-${{ steps.version.outputs.version }}.tar)| |**Orange Pi 5, and Indiedroid Nova**|[JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3588.aarch64-${{ steps.version.outputs.version }}.tar)| |**Powkiddy x55**|[JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.tar](https://github.com/JustEnoughLinuxOS/distribution/releases/download/${{ steps.version.outputs.version }}/JELOS-RK3566-X55.aarch64-${{ steps.version.outputs.version }}.tar)| diff --git a/Makefile b/Makefile index ea2c32eb9..259669720 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ BUILD_DIRS=build.* +-include $(HOME)/.JELOS/options all: world @@ -33,6 +34,11 @@ AMD64: PROJECT=PC DEVICE=AMD64 ARCH=i686 ./scripts/build_distro PROJECT=PC DEVICE=AMD64 ARCH=x86_64 ./scripts/build_distro +INTEL64: + unset DEVICE_ROOT + PROJECT=PC DEVICE=INTEL64 ARCH=i686 ./scripts/build_distro + PROJECT=PC DEVICE=INTEL64 ARCH=x86_64 ./scripts/build_distro + RK3588: unset DEVICE_ROOT PROJECT=Rockchip DEVICE=RK3588 ARCH=arm ./scripts/build_distro diff --git a/README.md b/README.md index 566786136..b08b75ff3 100644 --- a/README.md +++ b/README.md @@ -121,9 +121,10 @@ JELOS supports a variety of ARM and Intel/AMD based devices. | Hardkernel | [Odroid Go Advance](http://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | Hardkernel | [Odroid Go Super](http://jelos.org/devices/hardkernel/odroid-go-super) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | Hardkernel | [Odroid Go Ultra](http://jelos.org/devices/hardkernel/odroid-go-ultra) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | -| Hardkernel | [Odroid N2/N2+](http://jelos.org/devices/hardkernel/odroid-n2) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | +| Hardkernel | [Odroid N2/N2+/N2L](http://jelos.org/devices/hardkernel/odroid-n2) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | | Indiedroid | [Nova](http://jelos.org/devices/indiedroid/nova) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | | Orange Pi | [Orange Pi 5](http://jelos.org/devices/orange-pi/orange-pi-5) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station | +| Powkiddy | [RGB10](http://jelos.org/devices/powkiddy/rgb10) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station | | Powkiddy | [RGB10 Max 3 Pro](http://jelos.org/devices/powkiddy/rgb10-max-3-pro) | Amlogic A311D / Mali G52 M4 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station | | Powkiddy | [RGB30](http://jelos.org/devices/powkiddy/rgb30) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | | Powkiddy | [RK2023](http://jelos.org/devices/powkiddy/rk2023) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station | diff --git a/config/arch.x86_64 b/config/arch.x86_64 index 238e640ed..5d5922aed 100644 --- a/config/arch.x86_64 +++ b/config/arch.x86_64 @@ -1,6 +1,6 @@ # determines TARGET_CPU, if not forced by user if [ -z "${TARGET_CPU}" ]; then - TARGET_CPU=core2 + TARGET_CPU="x86-64-v3" fi # 64bit userland @@ -17,8 +17,9 @@ TARGET_KERNEL_ARCH=x86 # setup ARCH specific *FLAGS - TARGET_CFLAGS="-march=${TARGET_CPU}" - TARGET_LDFLAGS="-march=${TARGET_CPU}" + TARGET_CFLAGS="-march=${TARGET_CPU} -mtune=generic" + TARGET_CXXFLAGS="${TARGET_CFLAGS}" + TARGET_LDFLAGS="${TARGET_CFLAGS}" # build with SIMD support ( yes / no ) - TARGET_FEATURES+=" mmx sse sse2" +# TARGET_FEATURES+=" mmx sse sse2" diff --git a/config/emulators/3do.conf b/config/emulators/3do.conf index 875410505..9ca0cb8e9 100644 --- a/config/emulators/3do.conf +++ b/config/emulators/3do.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso .bin .chd .cue" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="3do" SYSTEM_THEME="3do" +SYSTEM_WIKI_PATH="3do" \ No newline at end of file diff --git a/config/emulators/3ds.conf b/config/emulators/3ds.conf index 8e4ac79e1..9ea1a9d3f 100644 --- a/config/emulators/3ds.conf +++ b/config/emulators/3ds.conf @@ -1,10 +1,11 @@ SYSTEM_NAME="3ds" -SYSTEM_FULLNAME="3DS" +SYSTEM_FULLNAME="Nintendo 3DS" SYSTEM_MANUFACTURER="Nintendo" SYSTEM_RELEASE="2010" -SYSTEM_HARDWARE="console" +SYSTEM_HARDWARE="portable" SYSTEM_PATH="/storage/roms/3ds" SYSTEM_EXTENSION=".3ds .3dsx .elf .axf .cci .cxi .app" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="3ds" SYSTEM_THEME="3ds" +SYSTEM_WIKI_PATH="3ds" diff --git a/config/emulators/amiga.conf b/config/emulators/amiga.conf index 66822e9d7..5c5fae336 100644 --- a/config/emulators/amiga.conf +++ b/config/emulators/amiga.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="amiga" SYSTEM_THEME="amiga" +SYSTEM_WIKI_PATH="amiga" diff --git a/config/emulators/amigacd32.conf b/config/emulators/amigacd32.conf index 416d125ac..01d299d65 100644 --- a/config/emulators/amigacd32.conf +++ b/config/emulators/amigacd32.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso .cue .lha .chd" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="amigacd32" SYSTEM_THEME="amigacd32" +SYSTEM_WIKI_PATH="amigacd32" diff --git a/config/emulators/amstradcpc.conf b/config/emulators/amstradcpc.conf index 07c164fc7..9f91f41d5 100644 --- a/config/emulators/amstradcpc.conf +++ b/config/emulators/amstradcpc.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="amstradcpc" -SYSTEM_FULLNAME="CPC" +SYSTEM_FULLNAME="Amstrad CPC" SYSTEM_MANUFACTURER="Amstrad" SYSTEM_RELEASE="1984" SYSTEM_HARDWARE="computer" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="amstradcpc" SYSTEM_THEME="amstradcpc" +SYSTEM_WIKI_PATH="amstradcpc" diff --git a/config/emulators/arcade.conf b/config/emulators/arcade.conf index 9e92fdb32..4d9dd7550 100644 --- a/config/emulators/arcade.conf +++ b/config/emulators/arcade.conf @@ -1,6 +1,7 @@ SYSTEM_NAME="arcade" SYSTEM_FULLNAME="Arcade" SYSTEM_MANUFACTURER="Arcade" +SYSTEM_RELEASE="0000" SYSTEM_HARDWARE="arcade" SYSTEM_PATH="/storage/roms/arcade" SYSTEM_EXTENSION=".zip .7z" diff --git a/config/emulators/arduboy.conf b/config/emulators/arduboy.conf index c05348232..83f0b8874 100644 --- a/config/emulators/arduboy.conf +++ b/config/emulators/arduboy.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".hex" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arduboy" SYSTEM_THEME="arduboy" +SYSTEM_WIKI_PATH="arduboy" diff --git a/config/emulators/atari2600.conf b/config/emulators/atari2600.conf index 017bac307..2583145bd 100644 --- a/config/emulators/atari2600.conf +++ b/config/emulators/atari2600.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="atari2600" -SYSTEM_FULLNAME="2600" +SYSTEM_FULLNAME="Atari 2600" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1977" SYSTEM_HARDWARE="console" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".a26 .bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atari2600" SYSTEM_THEME="atari2600" +SYSTEM_WIKI_PATH="atari2600" diff --git a/config/emulators/atari5200.conf b/config/emulators/atari5200.conf index 65d9ea5aa..45ec094e3 100644 --- a/config/emulators/atari5200.conf +++ b/config/emulators/atari5200.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="atari5200" -SYSTEM_FULLNAME="5200" +SYSTEM_FULLNAME="Atari 5200" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1982" SYSTEM_HARDWARE="console" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atari5200" SYSTEM_THEME="atari5200" +SYSTEM_WIKI_PATH="atari5200" diff --git a/config/emulators/atari7800.conf b/config/emulators/atari7800.conf index 17fe1edf3..5d735a7ef 100644 --- a/config/emulators/atari7800.conf +++ b/config/emulators/atari7800.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="atari7800" -SYSTEM_FULLNAME="7800" +SYSTEM_FULLNAME="Atari 7800" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1986" SYSTEM_HARDWARE="console" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".a78 .bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atari7800" SYSTEM_THEME="atari7800" +SYSTEM_WIKI_PATH="atari7800" diff --git a/config/emulators/atari800.conf b/config/emulators/atari800.conf index 6838c6ca6..e7c0394e9 100644 --- a/config/emulators/atari800.conf +++ b/config/emulators/atari800.conf @@ -2,9 +2,10 @@ SYSTEM_NAME="atari800" SYSTEM_FULLNAME="Atari 800" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1979" -SYSTEM_HARDWARE="console" +SYSTEM_HARDWARE="computer" SYSTEM_PATH="/storage/roms/atari800" SYSTEM_EXTENSION=".rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atari800" SYSTEM_THEME="atari800" +SYSTEM_WIKI_PATH="atari800" diff --git a/config/emulators/atarijaguar.conf b/config/emulators/atarijaguar.conf index e78f712bf..91c1567ce 100644 --- a/config/emulators/atarijaguar.conf +++ b/config/emulators/atarijaguar.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="atarijaguar" -SYSTEM_FULLNAME="Jaguar" +SYSTEM_FULLNAME="Atari Jaguar" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1993" SYSTEM_HARDWARE="console" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".j64 .jag .rom .abs .cof .bin .prg" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atarijaguar" SYSTEM_THEME="atarijaguar" +SYSTEM_WIKI_PATH="atarijaguar" diff --git a/config/emulators/atarilynx.conf b/config/emulators/atarilynx.conf index b4d149326..713636932 100644 --- a/config/emulators/atarilynx.conf +++ b/config/emulators/atarilynx.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="atarilynx" -SYSTEM_FULLNAME="Lynx" +SYSTEM_FULLNAME="Atari Lynx" SYSTEM_MANUFACTURER="Atari" SYSTEM_RELEASE="1989" SYSTEM_HARDWARE="portable" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".lnx .o .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atarilynx" SYSTEM_THEME="atarilynx" +SYSTEM_WIKI_PATH="atarilynx" diff --git a/config/emulators/atarist.conf b/config/emulators/atarist.conf index 1eab54895..2d004681a 100644 --- a/config/emulators/atarist.conf +++ b/config/emulators/atarist.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".st .msa .stx .dim .ipf .m3u .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atarist" SYSTEM_THEME="atarist" +SYSTEM_WIKI_PATH="atarist" diff --git a/config/emulators/atomiswave.conf b/config/emulators/atomiswave.conf index f8ae2cf28..4b72fb219 100644 --- a/config/emulators/atomiswave.conf +++ b/config/emulators/atomiswave.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".lst .bin .dat .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="atomiswave arcade" SYSTEM_THEME="atomiswave" +SYSTEM_WIKI_PATH="atomiswave" diff --git a/config/emulators/c128.conf b/config/emulators/c128.conf index 7c2997e89..110f42a22 100644 --- a/config/emulators/c128.conf +++ b/config/emulators/c128.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="c128" -SYSTEM_FULLNAME="C128" +SYSTEM_FULLNAME="Commodore 128" SYSTEM_MANUFACTURER="Commodore" SYSTEM_RELEASE="1985" SYSTEM_HARDWARE="computer" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .c SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="c128" SYSTEM_THEME="c128" +SYSTEM_WIKI_PATH="c128" diff --git a/config/emulators/c16.conf b/config/emulators/c16.conf index 3535e0a0c..d6eabb72f 100644 --- a/config/emulators/c16.conf +++ b/config/emulators/c16.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="c16" -SYSTEM_FULLNAME="C16" +SYSTEM_FULLNAME="Commodore 16" SYSTEM_MANUFACTURER="Commodore" SYSTEM_RELEASE="1984" SYSTEM_HARDWARE="computer" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .c SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="c16" SYSTEM_THEME="c16" +SYSTEM_WIKI_PATH="c16" diff --git a/config/emulators/c64.conf b/config/emulators/c64.conf index 14eb64a8e..6c56af47e 100644 --- a/config/emulators/c64.conf +++ b/config/emulators/c64.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="c64" -SYSTEM_FULLNAME="C64" +SYSTEM_FULLNAME="Commodore 64" SYSTEM_MANUFACTURER="Commodore" SYSTEM_RELEASE="1982" SYSTEM_HARDWARE="computer" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .c SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="c64" SYSTEM_THEME="c64" +SYSTEM_WIKI_PATH="c64" diff --git a/config/emulators/channelf.conf b/config/emulators/channelf.conf index 735b3c358..f5dcbb9d6 100644 --- a/config/emulators/channelf.conf +++ b/config/emulators/channelf.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="channelf" -SYSTEM_FULLNAME="Channel F" +SYSTEM_FULLNAME="Fairchild Channel F" SYSTEM_MANUFACTURER="Fairchild" SYSTEM_RELEASE="1976" SYSTEM_HARDWARE="console" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .chf .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="channelf" SYSTEM_THEME="channelf" +SYSTEM_WIKI_PATH="channelf" diff --git a/config/emulators/colecovision.conf b/config/emulators/colecovision.conf index d586a3eb6..4f227e39d 100644 --- a/config/emulators/colecovision.conf +++ b/config/emulators/colecovision.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .col .rom .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="colecovision" SYSTEM_THEME="colecovision" +SYSTEM_WIKI_PATH="colecovision" diff --git a/config/emulators/cps1.conf b/config/emulators/cps1.conf index 730a33a66..a4c1155b8 100644 --- a/config/emulators/cps1.conf +++ b/config/emulators/cps1.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="cps1" -SYSTEM_FULLNAME="PlaySystem 1" +SYSTEM_FULLNAME="CPS-I" SYSTEM_MANUFACTURER="Capcom" SYSTEM_RELEASE="1988" SYSTEM_HARDWARE="arcade" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arcade" SYSTEM_THEME="cps1" +SYSTEM_WIKI_PATH="cps1" diff --git a/config/emulators/cps2.conf b/config/emulators/cps2.conf index afe68052a..c4a63a22a 100644 --- a/config/emulators/cps2.conf +++ b/config/emulators/cps2.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="cps2" -SYSTEM_FULLNAME="PlaySystem 2" +SYSTEM_FULLNAME="CPS-II" SYSTEM_MANUFACTURER="Capcom" SYSTEM_RELEASE="1993" SYSTEM_HARDWARE="arcade" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arcade" SYSTEM_THEME="cps2" +SYSTEM_WIKI_PATH="cps2" diff --git a/config/emulators/cps3.conf b/config/emulators/cps3.conf index 8330db0bb..9f969c253 100644 --- a/config/emulators/cps3.conf +++ b/config/emulators/cps3.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="cps3" -SYSTEM_FULLNAME="PlaySystem 3" +SYSTEM_FULLNAME="CPS-III" SYSTEM_MANUFACTURER="Capcom" SYSTEM_RELEASE="1996" SYSTEM_HARDWARE="arcade" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arcade" SYSTEM_THEME="cps3" +SYSTEM_WIKI_PATH="cps3" diff --git a/config/emulators/daphne.conf b/config/emulators/daphne.conf index c454f0a7b..09b9fb2c7 100644 --- a/config/emulators/daphne.conf +++ b/config/emulators/daphne.conf @@ -7,3 +7,4 @@ SYSTEM_EXTENSION=".daphne .singe" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="daphne arcade" SYSTEM_THEME="daphne" +SYSTEM_WIKI_PATH="daphne" diff --git a/config/emulators/doom.conf b/config/emulators/doom.conf index fa665ca82..3be397a48 100644 --- a/config/emulators/doom.conf +++ b/config/emulators/doom.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".doom" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="doom" SYSTEM_THEME="doom" +SYSTEM_WIKI_PATH="doom" diff --git a/config/emulators/dreamcast.conf b/config/emulators/dreamcast.conf index 6d0da75d8..4223c0cb9 100644 --- a/config/emulators/dreamcast.conf +++ b/config/emulators/dreamcast.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".cdi .gdi .chd .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="dreamcast" SYSTEM_THEME="dreamcast" +SYSTEM_WIKI_PATH="dreamcast" diff --git a/config/emulators/easyrpg.conf b/config/emulators/easyrpg.conf index 95d3281c2..cabebb406 100644 --- a/config/emulators/easyrpg.conf +++ b/config/emulators/easyrpg.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".zip .easyrpg .ldb" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="easyrpg" SYSTEM_THEME="easyrpg" +SYSTEM_WIKI_PATH="easyrpg" diff --git a/config/emulators/famicom.conf b/config/emulators/famicom.conf index 949d51d0b..05206b0d3 100644 --- a/config/emulators/famicom.conf +++ b/config/emulators/famicom.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".nes .unif .unf .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="nes" SYSTEM_THEME="famicom" +SYSTEM_WIKI_PATH="nes" diff --git a/config/emulators/fbn.conf b/config/emulators/fbn.conf index 10da0b6ef..b724cc873 100644 --- a/config/emulators/fbn.conf +++ b/config/emulators/fbn.conf @@ -1,9 +1,11 @@ SYSTEM_NAME="fbn" SYSTEM_FULLNAME="Final Burn Neo" SYSTEM_MANUFACTURER="Arcade" +SYSTEM_RELEASE="2002" SYSTEM_HARDWARE="arcade" SYSTEM_PATH="/storage/roms/fbneo" SYSTEM_EXTENSION=".7z .zip" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arcade" -SYSTEM_THEME="fbn" +SYSTEM_THEME="fbneo" +SYSTEM_WIKI_PATH="fbn" diff --git a/config/emulators/fds.conf b/config/emulators/fds.conf index 89df348bd..ebba08cb6 100644 --- a/config/emulators/fds.conf +++ b/config/emulators/fds.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".fds .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="fds" SYSTEM_THEME="fds" +SYSTEM_WIKI_PATH="fds" diff --git a/config/emulators/gameandwatch.conf b/config/emulators/gameandwatch.conf index b6f337bfe..fbc5e1b54 100644 --- a/config/emulators/gameandwatch.conf +++ b/config/emulators/gameandwatch.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".mgw .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gameandwatch" SYSTEM_THEME="gameandwatch" +SYSTEM_WIKI_PATH="gameandwatch" diff --git a/config/emulators/gamecube.conf b/config/emulators/gamecube.conf index a8910bf8f..aff6ae280 100644 --- a/config/emulators/gamecube.conf +++ b/config/emulators/gamecube.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gcm .iso .gcz .ciso .wbfs .rvz .dol" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gc" SYSTEM_THEME="gc" +SYSTEM_WIKI_PATH="gamecube" diff --git a/config/emulators/gamegear.conf b/config/emulators/gamegear.conf index 1459f1d21..9284d6965 100644 --- a/config/emulators/gamegear.conf +++ b/config/emulators/gamegear.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gg .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gamegear" SYSTEM_THEME="gamegear" +SYSTEM_WIKI_PATH="gamegear" diff --git a/config/emulators/gb.conf b/config/emulators/gb.conf index 2261d913d..0fb64e7e3 100644 --- a/config/emulators/gb.conf +++ b/config/emulators/gb.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gb .gbc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gb" SYSTEM_THEME="gb" +SYSTEM_WIKI_PATH="gb" diff --git a/config/emulators/gba.conf b/config/emulators/gba.conf index 83d6612c4..534a1aeeb 100644 --- a/config/emulators/gba.conf +++ b/config/emulators/gba.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gba .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gba" SYSTEM_THEME="gba" +SYSTEM_WIKI_PATH="gba" diff --git a/config/emulators/gbah.conf b/config/emulators/gbah.conf index 3ee31a139..2ca2e0e06 100644 --- a/config/emulators/gbah.conf +++ b/config/emulators/gbah.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gba .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gba" SYSTEM_THEME="gbah" +SYSTEM_WIKI_PATH="gba" diff --git a/config/emulators/gbc.conf b/config/emulators/gbc.conf index 0c480881c..4e8f17082 100644 --- a/config/emulators/gbc.conf +++ b/config/emulators/gbc.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gb .gbc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gbc" SYSTEM_THEME="gbc" +SYSTEM_WIKI_PATH="gbc" diff --git a/config/emulators/gbch.conf b/config/emulators/gbch.conf index 0b09266ce..4ec0b307c 100644 --- a/config/emulators/gbch.conf +++ b/config/emulators/gbch.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gb .gbc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gbc" SYSTEM_THEME="gbch" +SYSTEM_WIKI_PATH="gbc" diff --git a/config/emulators/gbh.conf b/config/emulators/gbh.conf index 01cf64128..fbfee2c47 100644 --- a/config/emulators/gbh.conf +++ b/config/emulators/gbh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gb .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gb" SYSTEM_THEME="gbh" +SYSTEM_WIKI_PATH="gb" diff --git a/config/emulators/genesis.conf b/config/emulators/genesis.conf index bedb8f288..ef831bcbe 100644 --- a/config/emulators/genesis.conf +++ b/config/emulators/genesis.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gen .md .sg .smd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="genesis" SYSTEM_THEME="genesis" +SYSTEM_WIKI_PATH="genesis" diff --git a/config/emulators/genh.conf b/config/emulators/genh.conf index be76f7670..3748a7b0e 100644 --- a/config/emulators/genh.conf +++ b/config/emulators/genh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gen .md .sg .smd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="genesis" SYSTEM_THEME="genh" +SYSTEM_WIKI_PATH="genesis" diff --git a/config/emulators/ggh.conf b/config/emulators/ggh.conf index c7d85164e..f710de0ad 100644 --- a/config/emulators/ggh.conf +++ b/config/emulators/ggh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gg .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="gamegear" SYSTEM_THEME="ggh" +SYSTEM_WIKI_PATH="gamegear" diff --git a/config/emulators/idtech.conf b/config/emulators/idtech.conf index d156a352a..5c572e1f8 100644 --- a/config/emulators/idtech.conf +++ b/config/emulators/idtech.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="idtech" SYSTEM_THEME="idtech" +SYSTEM_WIKI_PATH="idtech" diff --git a/config/emulators/imageviewer.conf b/config/emulators/imageviewer.conf index 5c0dd9516..e1647b249 100644 --- a/config/emulators/imageviewer.conf +++ b/config/emulators/imageviewer.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv . SYSTEM_COMMAND="/usr/bin/true" SYSTEM_PLATFORM="imageviewer" SYSTEM_THEME="imageviewer" +SYSTEM_WIKI_PATH="screenshots" diff --git a/config/emulators/intellivision.conf b/config/emulators/intellivision.conf index 533b10a08..280e05151 100644 --- a/config/emulators/intellivision.conf +++ b/config/emulators/intellivision.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".int .bin .rom .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="intellivision" SYSTEM_THEME="intellivision" +SYSTEM_WIKI_PATH="intellivision" diff --git a/config/emulators/j2me.conf b/config/emulators/j2me.conf index d5bcb3096..b724df0d9 100644 --- a/config/emulators/j2me.conf +++ b/config/emulators/j2me.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".jar" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="j2me" SYSTEM_THEME="j2me" +SYSTEM_WIKI_PATH="j2me" diff --git a/config/emulators/macintosh.conf b/config/emulators/macintosh.conf index c21680f8f..0fdc0dc01 100644 --- a/config/emulators/macintosh.conf +++ b/config/emulators/macintosh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dsk .img .hfv .cmd .zip" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="macintosh" SYSTEM_THEME="macintosh" +SYSTEM_WIKI_PATH="macintosh" diff --git a/config/emulators/mame.conf b/config/emulators/mame.conf index 1eda9692f..d0bc8c6d7 100644 --- a/config/emulators/mame.conf +++ b/config/emulators/mame.conf @@ -1,10 +1,11 @@ SYSTEM_NAME="mame" SYSTEM_FULLNAME="MAME" SYSTEM_MANUFACTURER="Arcade" +SYSTEM_RELEASE="1997" SYSTEM_HARDWARE="arcade" -SYSTEM_RELEASE="1948" SYSTEM_PATH="/storage/roms/mame" SYSTEM_EXTENSION=".7z .zip" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="arcade" SYSTEM_THEME="mame" +SYSTEM_WIKI_PATH="mame" diff --git a/config/emulators/mastersystem.conf b/config/emulators/mastersystem.conf index 105f8c9f2..7d8c76e8a 100644 --- a/config/emulators/mastersystem.conf +++ b/config/emulators/mastersystem.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .sms .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="mastersystem" SYSTEM_THEME="mastersystem" +SYSTEM_WIKI_PATH="mastersystem" diff --git a/config/emulators/megacd.conf b/config/emulators/megacd.conf index 0722b48fe..0b75f2a6a 100644 --- a/config/emulators/megacd.conf +++ b/config/emulators/megacd.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".chd .cue .iso .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="segacd" SYSTEM_THEME="megacd" +SYSTEM_WIKI_PATH="segacd" diff --git a/config/emulators/megadrive-japan.conf b/config/emulators/megadrive-japan.conf index 6e1926ba2..8a9e64b67 100644 --- a/config/emulators/megadrive-japan.conf +++ b/config/emulators/megadrive-japan.conf @@ -7,4 +7,5 @@ SYSTEM_PATH="/storage/roms/megadrive-japan" SYSTEM_EXTENSION=".bin .gen .md .sg .smd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="megadrive" -SYSTEM_THEME="megadrive-japan" +SYSTEM_THEME="megadrivejp" +SYSTEM_WIKI_PATH="genesis" diff --git a/config/emulators/megadrive.conf b/config/emulators/megadrive.conf index 20e623802..1eee05e91 100644 --- a/config/emulators/megadrive.conf +++ b/config/emulators/megadrive.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gen .md .sg .smd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="megadrive" SYSTEM_THEME="megadrive" +SYSTEM_WIKI_PATH="genesis" diff --git a/config/emulators/megaduck.conf b/config/emulators/megaduck.conf index e580538ac..bcdba1e7d 100644 --- a/config/emulators/megaduck.conf +++ b/config/emulators/megaduck.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="megaduck" SYSTEM_THEME="megaduck" +SYSTEM_WIKI_PATH="megaduck" diff --git a/config/emulators/moonlight.conf b/config/emulators/moonlight.conf index 07220d022..d1e8d3b2b 100644 --- a/config/emulators/moonlight.conf +++ b/config/emulators/moonlight.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh" SYSTEM_COMMAND="/bin/sh %ROM%" SYSTEM_PLATFORM="moonlight" SYSTEM_THEME="moonlight" +SYSTEM_WIKI_PATH="moonlight" diff --git a/config/emulators/mplayer.conf b/config/emulators/mplayer.conf index 0dd0637fc..e38dfa339 100644 --- a/config/emulators/mplayer.conf +++ b/config/emulators/mplayer.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".mp4 .mkv .avi .mov .wmv .m3u .mpg .ytb .twi .sh .mp3 .aac .mk SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="mplayer" SYSTEM_THEME="mplayer" +SYSTEM_WIKI_PATH="mplayer" diff --git a/config/emulators/msx.conf b/config/emulators/msx.conf index 6af15d83d..7176bd9ef 100644 --- a/config/emulators/msx.conf +++ b/config/emulators/msx.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dsk .mx1 .mx2 .rom .zip .7z .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="msx" SYSTEM_THEME="msx" +SYSTEM_WIKI_PATH="msx" diff --git a/config/emulators/msx2.conf b/config/emulators/msx2.conf index bbf27b977..4f7166a34 100644 --- a/config/emulators/msx2.conf +++ b/config/emulators/msx2.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dsk .mx1 .mx2 .rom .zip .7z .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="msx" SYSTEM_THEME="msx2" +SYSTEM_WIKI_PATH="msx" diff --git a/config/emulators/music.conf b/config/emulators/music.conf index 7768e4fb2..6629fd953 100644 --- a/config/emulators/music.conf +++ b/config/emulators/music.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".m3u .sh" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="music" SYSTEM_THEME="music" +SYSTEM_WIKI_PATH="music" diff --git a/config/emulators/n64.conf b/config/emulators/n64.conf index 6afd78fd2..c5cff6120 100644 --- a/config/emulators/n64.conf +++ b/config/emulators/n64.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".z64 .n64 .v64 .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="n64" SYSTEM_THEME="n64" +SYSTEM_WIKI_PATH="n64" diff --git a/config/emulators/naomi.conf b/config/emulators/naomi.conf index cddd757e5..4743bb624 100644 --- a/config/emulators/naomi.conf +++ b/config/emulators/naomi.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".lst .bin .dat .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="naomi arcade" SYSTEM_THEME="naomi" +SYSTEM_WIKI_PATH="naomi" diff --git a/config/emulators/nds.conf b/config/emulators/nds.conf index e3b8a8596..df12f40b1 100644 --- a/config/emulators/nds.conf +++ b/config/emulators/nds.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".nds .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="nds" SYSTEM_THEME="nds" +SYSTEM_WIKI_PATH="nds" diff --git a/config/emulators/neocd.conf b/config/emulators/neocd.conf index bddf919ab..29a28240a 100644 --- a/config/emulators/neocd.conf +++ b/config/emulators/neocd.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".cue .iso .chd" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="neogeocd" SYSTEM_THEME="neogeocd" +SYSTEM_WIKI_PATH="neogeocd" diff --git a/config/emulators/neogeo.conf b/config/emulators/neogeo.conf index 4aeaef156..5bad25ae4 100644 --- a/config/emulators/neogeo.conf +++ b/config/emulators/neogeo.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".7z .zip" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="neogeo" SYSTEM_THEME="neogeo" +SYSTEM_WIKI_PATH="neogeo" diff --git a/config/emulators/nes.conf b/config/emulators/nes.conf index f5a5d2843..8196c29de 100644 --- a/config/emulators/nes.conf +++ b/config/emulators/nes.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".nes .unif .unf .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="nes" SYSTEM_THEME="nes" +SYSTEM_WIKI_PATH="nes" diff --git a/config/emulators/nesh.conf b/config/emulators/nesh.conf index 77556dcd7..a2109b706 100644 --- a/config/emulators/nesh.conf +++ b/config/emulators/nesh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".nes .unif .unf .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="nes" SYSTEM_THEME="nesh" +SYSTEM_WIKI_PATH="nes" diff --git a/config/emulators/ngp.conf b/config/emulators/ngp.conf index b98e8a46a..cd1d54614 100644 --- a/config/emulators/ngp.conf +++ b/config/emulators/ngp.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".ngc .ngp .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="ngp" SYSTEM_THEME="ngp" +SYSTEM_WIKI_PATH="ngp" diff --git a/config/emulators/ngpc.conf b/config/emulators/ngpc.conf index 545549f19..06c949561 100644 --- a/config/emulators/ngpc.conf +++ b/config/emulators/ngpc.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".ngc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="ngpc" SYSTEM_THEME="ngpc" +SYSTEM_WIKI_PATH="ngp" diff --git a/config/emulators/odyssey2.conf b/config/emulators/odyssey2.conf index 650b7efbf..1c0843c5d 100644 --- a/config/emulators/odyssey2.conf +++ b/config/emulators/odyssey2.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="odyssey2" SYSTEM_THEME="odyssey2" +SYSTEM_WIKI_PATH="odyssey2" diff --git a/config/emulators/openbor.conf b/config/emulators/openbor.conf index 7b44bf741..7ade02353 100644 --- a/config/emulators/openbor.conf +++ b/config/emulators/openbor.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".pak" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="openbor" SYSTEM_THEME="openbor" +SYSTEM_WIKI_PATH="openbor" diff --git a/config/emulators/pc-8800.conf b/config/emulators/pc-8800.conf index cb3cf6d50..6c5bf277e 100644 --- a/config/emulators/pc-8800.conf +++ b/config/emulators/pc-8800.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".d88 .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pc88" SYSTEM_THEME="pc88" +SYSTEM_WIKI_PATH="pc88" diff --git a/config/emulators/pc-9800.conf b/config/emulators/pc-9800.conf index ff9acb757..e262ce98c 100644 --- a/config/emulators/pc-9800.conf +++ b/config/emulators/pc-9800.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".d98 .zip .fdi .fdd .2hd .tfd .d88d .hdm .xdf .dup .hdi .thd . SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pc98" SYSTEM_THEME="pc98" +SYSTEM_WIKI_PATH="pc98" diff --git a/config/emulators/pc.conf b/config/emulators/pc.conf index d72115cca..a3066b13e 100644 --- a/config/emulators/pc.conf +++ b/config/emulators/pc.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="pc" -SYSTEM_FULLNAME="MS-DOS" +SYSTEM_FULLNAME="DOS" SYSTEM_MANUFACTURER="Microsoft" SYSTEM_RELEASE="1981" SYSTEM_HARDWARE="computer" @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".com .bat .exe .dosz" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pc" SYSTEM_THEME="pc" +SYSTEM_WIKI_PATH="dos" diff --git a/config/emulators/pcengine.conf b/config/emulators/pcengine.conf index 13a676e1c..d433f5cca 100644 --- a/config/emulators/pcengine.conf +++ b/config/emulators/pcengine.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".pce .bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pcengine" SYSTEM_THEME="pcengine" +SYSTEM_WIKI_PATH="pcengine" diff --git a/config/emulators/pcenginecd.conf b/config/emulators/pcenginecd.conf index 5c88c4728..ea1dae12d 100644 --- a/config/emulators/pcenginecd.conf +++ b/config/emulators/pcenginecd.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".cue .ccd .chd .toc .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pcenginecd" SYSTEM_THEME="pce-cd" +SYSTEM_WIKI_PATH="pcengine" diff --git a/config/emulators/pcfx.conf b/config/emulators/pcfx.conf index 5819507da..c19d08806 100644 --- a/config/emulators/pcfx.conf +++ b/config/emulators/pcfx.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".chd .cue .ccd .toc" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pcfx" SYSTEM_THEME="pcfx" +SYSTEM_WIKI_PATH="pcfx" diff --git a/config/emulators/pet.conf b/config/emulators/pet.conf index 7a671db55..a8964bd83 100644 --- a/config/emulators/pet.conf +++ b/config/emulators/pet.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pet" SYSTEM_THEME="pet" +SYSTEM_WIKI_PATH="pet" diff --git a/config/emulators/pico-8.conf b/config/emulators/pico-8.conf index 3303bc231..151d3cc9f 100644 --- a/config/emulators/pico-8.conf +++ b/config/emulators/pico-8.conf @@ -2,9 +2,10 @@ SYSTEM_NAME="pico-8" SYSTEM_FULLNAME="PICO-8" SYSTEM_MANUFACTURER="Lexaloffle" SYSTEM_RELEASE="2015" -SYSTEM_HARDWARE="console" +SYSTEM_HARDWARE="game engine" SYSTEM_PATH="/storage/roms/pico-8" SYSTEM_EXTENSION=".p8 .png" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pico-8" -SYSTEM_THEME="pico-8" +SYSTEM_THEME="pico8" +SYSTEM_WIKI_PATH="pico-8" diff --git a/config/emulators/pokemini.conf b/config/emulators/pokemini.conf index 2283d033f..af702fc82 100644 --- a/config/emulators/pokemini.conf +++ b/config/emulators/pokemini.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".min .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pokemini" SYSTEM_THEME="pokemini" +SYSTEM_WIKI_PATH="pokemini" diff --git a/config/emulators/ports.conf b/config/emulators/ports.conf index bf0cd51e4..9521bbee6 100644 --- a/config/emulators/ports.conf +++ b/config/emulators/ports.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pc" SYSTEM_THEME="ports" +SYSTEM_WIKI_PATH="ports" diff --git a/config/emulators/ps2.conf b/config/emulators/ps2.conf index 727ea0372..9770e7bfc 100644 --- a/config/emulators/ps2.conf +++ b/config/emulators/ps2.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso .mdf .nrg .bin .img .dump .gz .cso .chd" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="ps2" SYSTEM_THEME="ps2" +SYSTEM_WIKI_PATH="ps2" diff --git a/config/emulators/ps3.conf b/config/emulators/ps3.conf index 004e9fbb8..ca3716d09 100644 --- a/config/emulators/ps3.conf +++ b/config/emulators/ps3.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".ps3 .psn" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="ps3" SYSTEM_THEME="ps3" +SYSTEM_WIKI_PATH="ps3" diff --git a/config/emulators/psp.conf b/config/emulators/psp.conf index 0072c2afd..fa2410bc6 100644 --- a/config/emulators/psp.conf +++ b/config/emulators/psp.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso .cso .pbp .chd" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="psp" SYSTEM_THEME="psp" +SYSTEM_WIKI_PATH="psp" diff --git a/config/emulators/pspminis.conf b/config/emulators/pspminis.conf index 710441107..3524652b0 100644 --- a/config/emulators/pspminis.conf +++ b/config/emulators/pspminis.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso .cso .pbp" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="psp" SYSTEM_THEME="pspminis" +SYSTEM_WIKI_PATH="psp" diff --git a/config/emulators/psvita.conf b/config/emulators/psvita.conf index fd33ea23a..601718523 100644 --- a/config/emulators/psvita.conf +++ b/config/emulators/psvita.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="psvita" SYSTEM_THEME="psvita" +SYSTEM_WIKI_PATH="psvita" diff --git a/config/emulators/psx.conf b/config/emulators/psx.conf index dde86192c..aaadd4cb5 100644 --- a/config/emulators/psx.conf +++ b/config/emulators/psx.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="psx" SYSTEM_THEME="psx" +SYSTEM_WIKI_PATH="psx" diff --git a/config/emulators/satellaview.conf b/config/emulators/satellaview.conf index 613f14919..cbc5091c1 100644 --- a/config/emulators/satellaview.conf +++ b/config/emulators/satellaview.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".smc .fig .bs .sfc .bsx .swc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="satellaview" SYSTEM_THEME="satellaview" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/saturn.conf b/config/emulators/saturn.conf index 4227784bb..9fdc0a966 100644 --- a/config/emulators/saturn.conf +++ b/config/emulators/saturn.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".cue .chd .iso" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="saturn" SYSTEM_THEME="saturn" +SYSTEM_WIKI_PATH="saturn" diff --git a/config/emulators/scummvm.conf b/config/emulators/scummvm.conf index 9e9e733f3..d72ee6701 100644 --- a/config/emulators/scummvm.conf +++ b/config/emulators/scummvm.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh .svm .scummvm" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pc" SYSTEM_THEME="scummvm" +SYSTEM_WIKI_PATH="scummvm" diff --git a/config/emulators/sega32x.conf b/config/emulators/sega32x.conf index 0b54dbce1..bc2395fc7 100644 --- a/config/emulators/sega32x.conf +++ b/config/emulators/sega32x.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".32x .smd .bin .md .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="sega32x" SYSTEM_THEME="sega32x" +SYSTEM_WIKI_PATH="sega32x" diff --git a/config/emulators/segacd.conf b/config/emulators/segacd.conf index 2f7924841..6fc4bdf9d 100644 --- a/config/emulators/segacd.conf +++ b/config/emulators/segacd.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".chd .cue .iso .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="segacd" SYSTEM_THEME="segacd" +SYSTEM_WIKI_PATH="segacd" diff --git a/config/emulators/sfc.conf b/config/emulators/sfc.conf index 549bcd344..772cd799b 100644 --- a/config/emulators/sfc.conf +++ b/config/emulators/sfc.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".smc .fig .sfc .swc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="snes" SYSTEM_THEME="sfc" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/sg-1000.conf b/config/emulators/sg-1000.conf index 891995d3e..071cdf61c 100644 --- a/config/emulators/sg-1000.conf +++ b/config/emulators/sg-1000.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .sg .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="sg-1000" SYSTEM_THEME="sg-1000" +SYSTEM_WIKI_PATH="sg-1000" diff --git a/config/emulators/snes.conf b/config/emulators/snes.conf index 84c1b00b8..034dbfdc1 100644 --- a/config/emulators/snes.conf +++ b/config/emulators/snes.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".smc .fig .sfc .swc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="snes" SYSTEM_THEME="snes" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/snesh.conf b/config/emulators/snesh.conf index 59b642eb9..a4eda3b62 100644 --- a/config/emulators/snesh.conf +++ b/config/emulators/snesh.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".smc .fig .sfc .swc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="snes" SYSTEM_THEME="snesh" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/snesmsu1.conf b/config/emulators/snesmsu1.conf index 3f74cf1be..8e1c6b6af 100644 --- a/config/emulators/snesmsu1.conf +++ b/config/emulators/snesmsu1.conf @@ -1,5 +1,5 @@ SYSTEM_NAME="snesmsu1" -SYSTEM_FULLNAME="MSU-1" +SYSTEM_FULLNAME="Super NES MSU-1" SYSTEM_MANUFACTURER="Nintendo" SYSTEM_RELEASE="2012" SYSTEM_HARDWARE="console" @@ -7,4 +7,5 @@ SYSTEM_PATH="/storage/roms/snesmsu1" SYSTEM_EXTENSION=".smc .fig .sfc .swc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="snesmsu1 snes" -SYSTEM_THEME="snesmsu1" +SYSTEM_THEME="snes-msu1" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/st-v.conf b/config/emulators/st-v.conf index c873608de..209a19758 100644 --- a/config/emulators/st-v.conf +++ b/config/emulators/st-v.conf @@ -7,4 +7,5 @@ SYSTEM_PATH="/storage/roms/st-v" SYSTEM_EXTENSION=".zip .ZIP" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="st-v" -SYSTEM_THEME="st-v" +SYSTEM_THEME="stv" +SYSTEM_WIKI_PATH="st-v" diff --git a/config/emulators/sufami.conf b/config/emulators/sufami.conf index 86e4491f7..3f78b5409 100644 --- a/config/emulators/sufami.conf +++ b/config/emulators/sufami.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".st .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="sufami" SYSTEM_THEME="sufami" +SYSTEM_WIKI_PATH="snes" diff --git a/config/emulators/supergrafx.conf b/config/emulators/supergrafx.conf index 31f9774c8..d5919c454 100644 --- a/config/emulators/supergrafx.conf +++ b/config/emulators/supergrafx.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".pce .sgx .cue .ccd .chd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="supergrafx" SYSTEM_THEME="supergrafx" +SYSTEM_WIKI_PATH="supergrafx" diff --git a/config/emulators/supervision.conf b/config/emulators/supervision.conf index 0a73c9e40..7dfd14f2c 100644 --- a/config/emulators/supervision.conf +++ b/config/emulators/supervision.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sv .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="supervision" SYSTEM_THEME="supervision" +SYSTEM_WIKI_PATH="supervision" diff --git a/config/emulators/switch.conf b/config/emulators/switch.conf index 2e16b1a04..d6496ab6a 100644 --- a/config/emulators/switch.conf +++ b/config/emulators/switch.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".xci .nsp .nca .nso .nro" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="switch" SYSTEM_THEME="switch" +SYSTEM_WIKI_PATH="switch" diff --git a/config/emulators/tg16.conf b/config/emulators/tg16.conf index 7c3dffeee..a4def1e47 100644 --- a/config/emulators/tg16.conf +++ b/config/emulators/tg16.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".pce .bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pcengine" SYSTEM_THEME="tg16" +SYSTEM_WIKI_PATH="pcengine" diff --git a/config/emulators/tg16cd.conf b/config/emulators/tg16cd.conf index 69f5b4a0d..37cfc9096 100644 --- a/config/emulators/tg16cd.conf +++ b/config/emulators/tg16cd.conf @@ -7,4 +7,5 @@ SYSTEM_PATH="/storage/roms/tg16cd" SYSTEM_EXTENSION=".cue .ccd .chd .toc .m3u" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="pcenginecd" -SYSTEM_THEME="tg16cd" +SYSTEM_THEME="tg-cd" +SYSTEM_WIKI_PATH="pcengine" diff --git a/config/emulators/tic-80.conf b/config/emulators/tic-80.conf index d47606d34..b6af37bfc 100644 --- a/config/emulators/tic-80.conf +++ b/config/emulators/tic-80.conf @@ -2,9 +2,10 @@ SYSTEM_NAME="tic-80" SYSTEM_FULLNAME="TIC-80" SYSTEM_MANUFACTURER="Nesbox" SYSTEM_RELEASE="2017" -SYSTEM_HARDWARE="computer" +SYSTEM_HARDWARE="game engine" SYSTEM_PATH="/storage/roms/tic-80" SYSTEM_EXTENSION=".tic" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="tic80" -SYSTEM_THEME="tic-80" +SYSTEM_THEME="tic80" +SYSTEM_WIKI_PATH="tic-80" diff --git a/config/emulators/tools.conf b/config/emulators/tools.conf index 08b6c2113..787dc59e2 100644 --- a/config/emulators/tools.conf +++ b/config/emulators/tools.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".sh" SYSTEM_COMMAND="/usr/bin/run %ROM%" SYSTEM_PLATFORM="tools" SYSTEM_THEME="tools" +SYSTEM_WIKI_PATH="tools" diff --git a/config/emulators/uzebox.conf b/config/emulators/uzebox.conf index f52077d4f..00128fc65 100644 --- a/config/emulators/uzebox.conf +++ b/config/emulators/uzebox.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".uze" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="uzebox" SYSTEM_THEME="uzebox" +SYSTEM_WIKI_PATH="uzebox" diff --git a/config/emulators/vectrex.conf b/config/emulators/vectrex.conf index 5e6afa834..cca244202 100644 --- a/config/emulators/vectrex.conf +++ b/config/emulators/vectrex.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .gam .vec .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="vectrex" SYSTEM_THEME="vectrex" +SYSTEM_WIKI_PATH="vectrex" diff --git a/config/emulators/vic20.conf b/config/emulators/vic20.conf index a241b5f2c..24ca114fd 100644 --- a/config/emulators/vic20.conf +++ b/config/emulators/vic20.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="vic20" SYSTEM_THEME="vic20" +SYSTEM_WIKI_PATH="vic20" diff --git a/config/emulators/videopac.conf b/config/emulators/videopac.conf index f0dd37a18..07f0d1ca1 100644 --- a/config/emulators/videopac.conf +++ b/config/emulators/videopac.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".bin .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="videopac" SYSTEM_THEME="videopac" +SYSTEM_WIKI_PATH="videopac" diff --git a/config/emulators/virtualboy.conf b/config/emulators/virtualboy.conf index a531b6f37..21d9e3c37 100644 --- a/config/emulators/virtualboy.conf +++ b/config/emulators/virtualboy.conf @@ -2,9 +2,10 @@ SYSTEM_NAME="virtualboy" SYSTEM_FULLNAME="Virtual Boy" SYSTEM_MANUFACTURER="Nintendo" SYSTEM_RELEASE="1995" -SYSTEM_HARDWARE="console" +SYSTEM_HARDWARE="portable" SYSTEM_PATH="/storage/roms/virtualboy" SYSTEM_EXTENSION=".vb .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="virtualboy" SYSTEM_THEME="virtualboy" +SYSTEM_WIKI_PATH="virtualboy" diff --git a/config/emulators/wii.conf b/config/emulators/wii.conf index e4559d5ff..edd19339d 100644 --- a/config/emulators/wii.conf +++ b/config/emulators/wii.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".gcm .iso .gcz .ciso .wbfs .rvz .dol .wad" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="wii" SYSTEM_THEME="wii" +SYSTEM_WIKI_PATH="wii" diff --git a/config/emulators/wiiu.conf b/config/emulators/wiiu.conf index 881814510..ce5007325 100644 --- a/config/emulators/wiiu.conf +++ b/config/emulators/wiiu.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".wud .wux .wua" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="wiiu" SYSTEM_THEME="wiiu" +SYSTEM_WIKI_PATH="wiiu" diff --git a/config/emulators/wonderswan.conf b/config/emulators/wonderswan.conf index 471888602..e993deb0c 100644 --- a/config/emulators/wonderswan.conf +++ b/config/emulators/wonderswan.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".ws .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="wonderswan" SYSTEM_THEME="wonderswan" +SYSTEM_WIKI_PATH="wonderswan" diff --git a/config/emulators/wonderswancolor.conf b/config/emulators/wonderswancolor.conf index 5e1e83822..35aac00b0 100644 --- a/config/emulators/wonderswancolor.conf +++ b/config/emulators/wonderswancolor.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".wsc .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="wonderswancolor" SYSTEM_THEME="wonderswancolor" +SYSTEM_WIKI_PATH="wonderswancolor" diff --git a/config/emulators/x1.conf b/config/emulators/x1.conf index 3cae90630..1a8be5592 100644 --- a/config/emulators/x1.conf +++ b/config/emulators/x1.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dx1 .2d .2hd .tfd .d88d .hdm .xdf .dup .tap .cmd .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="x1" SYSTEM_THEME="x1" +SYSTEM_WIKI_PATH="x1" diff --git a/config/emulators/x68000.conf b/config/emulators/x68000.conf index 37e1b3ad9..8e73088af 100644 --- a/config/emulators/x68000.conf +++ b/config/emulators/x68000.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dim .img .d88d .hdm .dup .2hd .xdf .hdf .cmd .m3u .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="x68000" SYSTEM_THEME="x68000" +SYSTEM_WIKI_PATH="x68000" diff --git a/config/emulators/xbox.conf b/config/emulators/xbox.conf index 348a6bfca..8045988dd 100644 --- a/config/emulators/xbox.conf +++ b/config/emulators/xbox.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".iso" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="xbox" SYSTEM_THEME="xbox" +SYSTEM_WIKI_PATH="xbox" diff --git a/config/emulators/zmachine.conf b/config/emulators/zmachine.conf index 67ea6cdec..26ef4b57b 100644 --- a/config/emulators/zmachine.conf +++ b/config/emulators/zmachine.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".dat .z1 .z2 .z3 .z4 .z5 .z6 .zip" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="z-machine" SYSTEM_THEME="zmachine" +SYSTEM_WIKI_PATH="zmachine" diff --git a/config/emulators/zx81.conf b/config/emulators/zx81.conf index 9c77e6f13..1b22d438d 100644 --- a/config/emulators/zx81.conf +++ b/config/emulators/zx81.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".tzx .p .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="zx81" SYSTEM_THEME="zx81" +SYSTEM_WIKI_PATH="zx81" diff --git a/config/emulators/zxspectrum.conf b/config/emulators/zxspectrum.conf index 6e5463425..251ca6dc4 100644 --- a/config/emulators/zxspectrum.conf +++ b/config/emulators/zxspectrum.conf @@ -8,3 +8,4 @@ SYSTEM_EXTENSION=".tzx .tap .z80 .rzx .scl .trd .dsk .zip .7z" SYSTEM_COMMAND="/usr/bin/runemu.sh %ROM% -P%SYSTEM% --core=%CORE% --emulator=%EMULATOR% --controllers=\"%CONTROLLERSCONFIG%\"" SYSTEM_PLATFORM="zxspectrum" SYSTEM_THEME="zxspectrum" +SYSTEM_WIKI_PATH="zxspectrum" diff --git a/distributions/JELOS/options b/distributions/JELOS/options index 21e8431a2..f8f9facf1 100644 --- a/distributions/JELOS/options +++ b/distributions/JELOS/options @@ -103,6 +103,9 @@ # Add support for containers CONTAINER_SUPPORT="${CONTAINER_SUPPORT:-no}" +# Support for debug tools such as strace + DEBUG_SUPPORT="${DEBUG_SUPPORT:-yes}" + # Windowmanager to use (fluxbox / none) WINDOWMANAGER="none" diff --git a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md index a43b8ab00..d61f1962b 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/AMD64/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,94 +12,94 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| -|Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| -|Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| +|Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| +|Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae (default)
**retroarch:** puae2021
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae (default)
**retroarch:** puae2021
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|Xbox (xbox)|2001|`xbox`|.iso|**xemu:** xemu-sa (default)
| -|NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| -|NEC|PC Engine CD (pcenginecd)|1988|`pcenginecd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| +|NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|PC Engine CD (pcenginecd)|1988|`pcenginecd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| |NEC|PC-8800 (pc-8800)|1981|`pc88`|.d88 .m3u|**retroarch:** quasi88 (default)
| |NEC|PC-9800 (pc-9800)|1983|`pc98`|.d98 .zip .fdi .fdd .2hd .tfd .d88d .hdm .xdf .dup .hdi .thd .nhd .hdd .hdn|**retroarch:** np2kai (default)
| -|NEC|PC-FX (pcfx)|1994|`pcfx`|.chd .cue .ccd .toc|**retroarch:** beetle_pcfx (default)
| -|NEC|SuperGrafx (supergrafx)|1989|`sgfx`|.pce .sgx .cue .ccd .chd .zip .7z|**retroarch:** beetle_supergrafx
**retroarch:** beetle_pce
| -|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| -|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| +|NEC|PC-FX (pcfx)|1994|`pcfx`|.chd .cue .ccd .toc|**retroarch:** beetle_pcfx (default)
**mednafen:** pcfx
| +|NEC|SuperGrafx (supergrafx)|1989|`sgfx`|.pce .sgx .cue .ccd .chd .zip .7z|**retroarch:** beetle_supergrafx
**retroarch:** beetle_pce
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| |Nesbox|TIC-80 (tic-80)|2017|`tic-80`|.tic|**retroarch:** tic80 (default)
| -|Nintendo|3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**retroarch:** citra (default)
**citra:** citra-sa
| -|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| -|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
| +|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| +|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**mednafen:** nes
| |Nintendo|Game & Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw
| -|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**nanoboyadvance:** nanoboyadvance-sa
| -|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
| -|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| +|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**nanoboyadvance:** nanoboyadvance-sa
**mednafen:** gba
| +|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**mednafen:** gba
| +|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| |Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
**primehack:** primehack
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| -|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| +|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
| +|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**retroarch:** citra (default)
**citra:** citra-sa
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**retroarch:** melonds (default)
**retroarch:** desmume
**melonds:** melonds-sa
| -|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| +|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| -|Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| -|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| -|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
| +|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
| +|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes_faust
**mednafen:** snes
| |Nintendo|Switch (switch)|2017|`switch`|.xci .nsp .nca .nso .nro|**yuzu:** yuzu-sa (default)
**ryujinx:** ryujinx-sa
| -|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| +|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
**mednafen:** vb
| |Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**dolphin:** dolphin-sa-wii (default)
**retroarch:** dolphin
**primehack:** primehack
| |Nintendo|Wii U (wiiu)|2012|`wiiu`|.wud .wux .wua|**cemu:** cemu-sa (default)
| |Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)
| |Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)
| |Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast (default)
**flycast:** flycast-sa
| |Sega|Dreamcast (dreamcast)|1998|`dreamcast`|.cdi .gdi .chd .m3u|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
| -|Sega|Game Gear (gamegear)|1990|`gamegear`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| -|Sega|Game Gear (Hacks) (ggh)|1990|`gamegearh`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| -|Sega|Genesis (genesis)|1989|`genesis`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| +|Sega|Game Gear (gamegear)|1990|`gamegear`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| +|Sega|Game Gear (Hacks) (ggh)|1990|`gamegearh`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| +|Sega|Genesis (genesis)|1989|`genesis`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
| |Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| -|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| +|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast (default)
**flycast:** flycast-sa
| -|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso|**kronos:** kronos-sa (default)
**retroarch:** yabasanshiro (default)
**retroarch:** beetle_saturn
| +|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso|**kronos:** kronos-sa (default)
**retroarch:** yabasanshiro (default)
**retroarch:** beetle_saturn
**mednafen:** ss
| |Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
| |Sega|Sega CD (segacd)|1991|`segacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| |Sega|SG-1000 (sg-1000)|1983|`sg-1000`|.bin .sg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
| @@ -111,9 +111,9 @@ This document describes all available systems emulators and cores available for |Smith Engineering|Vectrex (vectrex)|1982|`vectrex`|.bin .gam .vec .zip .7z|**retroarch:** vecx (default)
| |SNK|Neo Geo (neogeo)|1990|`neogeo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
| |SNK|Neo Geo CD (neocd)|1994|`neocd`|.cue .iso .chd|**retroarch:** neocd (default)
**retroarch:** fbneo
| -|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngc .ngp .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
| -|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
| -|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** beetle_psx (default)
**duckstation:** duckstation-sa
**retroarch:** duckstation
**retroarch:** swanstation
| +|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngc .ngp .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** beetle_psx (default)
**duckstation:** duckstation-sa
**mednafen:** psx
**retroarch:** duckstation
**retroarch:** swanstation
| |Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)
**retroarch:** pcsx2
| |Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .psn|**rpcs3:** rpcs3-sa (default)
| |Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md index fed090a53..06863147f 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3326/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,86 +12,86 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| -|Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| -|Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| +|Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| +|Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| -|NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| -|NEC|PC Engine CD (pcenginecd)|1988|`pcenginecd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| +|NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|PC Engine CD (pcenginecd)|1988|`pcenginecd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| |NEC|PC-8800 (pc-8800)|1981|`pc88`|.d88 .m3u|**retroarch:** quasi88 (default)
| |NEC|PC-9800 (pc-9800)|1983|`pc98`|.d98 .zip .fdi .fdd .2hd .tfd .d88d .hdm .xdf .dup .hdi .thd .nhd .hdd .hdn|**retroarch:** np2kai (default)
| -|NEC|PC-FX (pcfx)|1994|`pcfx`|.chd .cue .ccd .toc|**retroarch:** beetle_pcfx (default)
| -|NEC|SuperGrafx (supergrafx)|1989|`sgfx`|.pce .sgx .cue .ccd .chd .zip .7z|**retroarch:** beetle_supergrafx
**retroarch:** beetle_pce
| -|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| -|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| +|NEC|PC-FX (pcfx)|1994|`pcfx`|.chd .cue .ccd .toc|**retroarch:** beetle_pcfx (default)
**mednafen:** pcfx
| +|NEC|SuperGrafx (supergrafx)|1989|`sgfx`|.pce .sgx .cue .ccd .chd .zip .7z|**retroarch:** beetle_supergrafx
**retroarch:** beetle_pce
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| +|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| |Nesbox|TIC-80 (tic-80)|2017|`tic-80`|.tic|**retroarch:** tic80 (default)
| -|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| -|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
| +|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| +|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**mednafen:** nes
| |Nintendo|Game & Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw
| -|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**retroarch:** gpsp
**nanoboyadvance:** nanoboyadvance-sa
| -|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
| -|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| -|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| +|Nintendo|Game Boy (gb)|1989|`gb`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy (Hacks) (gbh)|1989|`gbh`|.gb .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Advance (gba)|2001|`gba`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**retroarch:** gpsp
**nanoboyadvance:** nanoboyadvance-sa
**mednafen:** gba
| +|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
**mednafen:** gba
| +|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| +|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**retroarch:** desmume
| -|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| +|Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nes
| |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| -|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| -|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| +|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes_faust
**mednafen:** snes_faust
**mednafen:** snes_faust
| +|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
**mednafen:** vb
| |Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)
| |Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)
| |Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast32 (default)
**retroarch:** flycast
**flycast:** flycast-sa
| |Sega|Dreamcast (dreamcast)|1998|`dreamcast`|.cdi .gdi .chd .m3u|**retroarch:** flycast2021
**retroarch:** flycast32 (default)
**retroarch:** flycast
**flycast:** flycast-sa
| -|Sega|Game Gear (gamegear)|1990|`gamegear`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| -|Sega|Game Gear (Hacks) (ggh)|1990|`gamegearh`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| +|Sega|Game Gear (gamegear)|1990|`gamegear`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| +|Sega|Game Gear (Hacks) (ggh)|1990|`gamegearh`|.bin .gg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** gg
| |Sega|Genesis (genesis)|1989|`genesis`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
| +|Sega|Genesis (Hacks) (genh)|1989|`genh`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Master System (mastersystem)|1985|`mastersystem`|.bin .sms .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
**retroarch:** smsplus
**mednafen:** sms
| |Sega|Mega CD (megacd)|1991|`megacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| -|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| -|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
| +|Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| +|Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021
**retroarch:** flycast32 (default)
**retroarch:** flycast
**flycast:** flycast-sa
| |Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
**retroarch:** beetle_saturn
| |Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
| @@ -105,9 +105,9 @@ This document describes all available systems emulators and cores available for |Smith Engineering|Vectrex (vectrex)|1982|`vectrex`|.bin .gam .vec .zip .7z|**retroarch:** vecx (default)
| |SNK|Neo Geo (neogeo)|1990|`neogeo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
| |SNK|Neo Geo CD (neocd)|1994|`neocd`|.cue .iso .chd|**retroarch:** neocd (default)
**retroarch:** fbneo
| -|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngc .ngp .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
| -|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
| -|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** pcsx_rearmed32 (default)
**retroarch:** pcsx_rearmed
**retroarch:** duckstation
**retroarch:** swanstation
| +|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngc .ngp .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngc .zip .7z|**retroarch:** beetle_ngp (default)
**retroarch:** race
**mednafen:** ngp
| +|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** pcsx_rearmed32 (default)
**retroarch:** pcsx_rearmed
**mednafen:** psx
**retroarch:** duckstation
**retroarch:** swanstation
| |Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp .chd|**ppsspp:** ppsspp-sa (default)
| |Sony|PSP Minis (pspminis)|2004|`pspminis`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)
**retroarch:** ppsspp
| |Sun Microsystems|J2ME (j2me)|2002|`j2me`|.jar|**retroarch:** freej2me (default)
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md index c564970a6..9a7b411fe 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3399/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,43 +12,43 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| |Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| |Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
**mednafen:** wswan
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
**mednafen:** pce
**mednafen:** pce_fast
| @@ -70,7 +70,6 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
**mednafen:** gb
| |Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
**mednafen:** nesh
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**melonds:** melonds-sa
**retroarch:** desmume
| @@ -78,6 +77,7 @@ This document describes all available systems emulators and cores available for |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
**mednafen:** snes_faust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes
**mednafen:** snes_faust
| |Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
**mednafen:** snes_faust
**mednafen:** snes
| |Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
**mednafen:** vb
| @@ -95,7 +95,7 @@ This document describes all available systems emulators and cores available for |Sega|Mega Drive (megadrive)|1990|`megadrive`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Mega Drive (megadrive-japan)|1988|`megadrive-japan`|.bin .gen .md .sg .smd .zip .7z|**retroarch:** genesis_plus_gx (default)
**retroarch:** genesis_plus_gx_wide
**retroarch:** picodrive
**mednafen:** md
| |Sega|Naomi (naomi)|1998|`naomi`|.lst .bin .dat .zip .7z|**flycast:** flycast-sa
**retroarch:** flycast (default)
| -|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
**retroarch:** beetle_saturn
**mednafen:** ss
| +|Sega|Saturn (saturn)|1994|`saturn`|.cue .chd .iso|**yabasanshiro:** yabasanshiro-sa (default)
**retroarch:** yabasanshiro
**retroarch:** beetle_saturn
| |Sega|Sega 32X (sega32x)|1994|`sega32x`|.32x .smd .bin .md .zip .7z|**retroarch:** picodrive (default)
| |Sega|Sega CD (segacd)|1991|`segacd`|.chd .cue .iso .m3u|**retroarch:** genesis_plus_gx (default)
**retroarch:** picodrive
| |Sega|SG-1000 (sg-1000)|1983|`sg-1000`|.bin .sg .zip .7z|**retroarch:** gearsystem (default)
**retroarch:** genesis_plus_gx
**retroarch:** picodrive
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md index cf30051e1..84b388059 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3566-X55/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,43 +12,43 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| |Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| |Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| @@ -69,7 +69,6 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
| |Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**retroarch:** desmume
| @@ -77,6 +76,7 @@ This document describes all available systems emulators and cores available for |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md index cf30051e1..84b388059 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3566/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,43 +12,43 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| |Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| |Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| @@ -69,7 +69,6 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)
**retroarch:** gbsp
**retroarch:** vbam
**retroarch:** vba_next
**retroarch:** beetle_gba
| |Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
**retroarch:** desmume
| @@ -77,6 +76,7 @@ This document describes all available systems emulators and cores available for |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md index 30e6526e8..b7e43b21d 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/RK3588/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,43 +12,43 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| |Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| |Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae2021 (default)
**retroarch:** puae
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae2021 (default)
**retroarch:** puae
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| @@ -70,7 +70,6 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa
**retroarch:** melonds (default)
**melonds:** melonds-sa
**retroarch:** desmume
| @@ -78,6 +77,7 @@ This document describes all available systems emulators and cores available for |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| diff --git a/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md index b2b2eaf9c..ffdb7ea51 100644 --- a/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md +++ b/documentation/PER_DEVICE_DOCUMENTATION/S922X/SUPPORTED_EMULATORS_AND_CORES.md @@ -12,43 +12,43 @@ This document describes all available systems emulators and cores available for | System|Ports (ports)|System|`ports`|.sh|| | System|Screenshots (imageviewer)|System|`screenshots`|.jpg .jpeg .png .bmp .psd .tga .gif .hdr .pic .ppm .pgm .mkv .pdf .mp4 .avi|| | System|Tools (tools)|System|`modules`|.sh|| -|Amstrad|CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| +|Amstrad|Amstrad CPC (amstradcpc)|1984|`amstradcpc`|.dsk .sna .tap .cdt .kcr .voc .m3u .zip .7z|**retroarch:** crocods (default)
**retroarch:** cap32
| |Apple|Macintosh (macintosh)|1984|`mac`|.dsk .img .hfv .cmd .zip|**retroarch:** minivmac (default)
| -|Arcade|Arcade (arcade)|1984|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| +|Arcade|Arcade (arcade)|0000|`arcade`|.zip .7z|**retroarch:** mame2003_plus (default)
**retroarch:** mame2000
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
**retroarch:** mame
| |Arcade|Daphne (daphne)|1996|`daphne`|.daphne .singe|**hypseus-singe:** hypseus-singe (default)
**retroarch:** daphne
| -|Arcade|Final Burn Neo (fbn)|1986|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| -|Arcade|MAME (mame)|1948|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|Final Burn Neo (fbn)|2002|`fbneo`|.7z .zip|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| +|Arcade|MAME (mame)|1997|`mame`|.7z .zip|**retroarch:** mame2003_plus (default)
**retroarch:** mame2010
**retroarch:** mame2015
**retroarch:** mame
**retroarch:** fbneo
**retroarch:** fbalpha2012
**retroarch:** fbalpha2019
| |Arduboy|Arduboy (arduboy)|2014|`arduboy`|.hex|**retroarch:** arduous (default)
| -|Atari|2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| -|Atari|5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| -|Atari|7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| +|Atari|Atari 2600 (atari2600)|1977|`atari2600`|.a26 .bin .zip .7z|**retroarch:** stella (default)
| +|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
| +|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
| |Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
| +|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| +|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
| -|Atari|Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
| -|Atari|Lynx (atarilynx)|1989|`atarilynx`|.lnx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
| |Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
| |Bandai|Wonderswan (wonderswan)|1999|`wonderswan`|.ws .zip .7z|**retroarch:** beetle_wswan (default)
| |Bandai|Wonderswan Color (wonderswancolor)|2000|`wonderswancolor`|.wsc .zip .7z|**retroarch:** beetle_wswan (default)
| |belogic|Uzebox (uzebox)|2008|`uzebox`|.uze|**retroarch:** uzem (default)
| -|Capcom|PlaySystem 1 (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 2 (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| -|Capcom|PlaySystem 3 (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-I (cps1)|1988|`cps1`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-II (cps2)|1993|`cps2`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| +|Capcom|CPS-III (cps3)|1996|`cps3`|.zip .7z|**retroarch:** fbneo (default)
**retroarch:** mame2003_plus
**retroarch:** mame2010
**retroarch:** fbalpha2012
**retroarch:** mba_mini
**AdvanceMame:** AdvanceMame
| |Coleco|ColecoVision (colecovision)|1982|`coleco`|.bin .col .rom .zip .7z|**retroarch:** bluemsx (default)
**retroarch:** gearcoleco
**retroarch:** smsplus
| |Commodore|Amiga (amiga)|1985|`amiga`|.zip .adf .uae .ipf .dms .adz .lha .m3u .hdf .hdz|**retroarch:** puae (default)
**retroarch:** puae2021
**amiberry:** amiberry
**retroarch:** uae4arm
| |Commodore|Amiga CD32 (amigacd32)|1994|`amigacd32`|.iso .cue .lha .chd|**retroarch:** puae (default)
**retroarch:** puae2021
**retroarch:** uae4arm
| -|Commodore|C128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| -|Commodore|C16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| -|Commodore|C64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| +|Commodore|Commodore 128 (c128)|1985|`c128`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x128 (default)
**vicesa:** x128
| +|Commodore|Commodore 16 (c16)|1984|`c16`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xplus4 (default)
**vicesa:** xplus4
| +|Commodore|Commodore 64 (c64)|1982|`c64`|.d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_x64 (default)
**vicesa:** x64sc
| |Commodore|Commodore PET (pet)|1977|`pet`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xpet (default)
| |Commodore|VIC-20 (vic20)|1980|`vic20`|.20 .a0 .b0 .d64 .d71 .d80 .d81 .d82 .g64 .g41 .x64 .t64 .tap .prg .p00 .crt .bin .gz .d6z .d7z .d8z .g6z .g4z .x6z .cmd .m3u .vsf .nib .nbz .zip|**retroarch:** vice_xvic (default)
**vicesa:** xvic
| -|Fairchild|Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| +|Fairchild|Fairchild Channel F (channelf)|1976|`channelf`|.bin .chf .zip .7z|**retroarch:** freechaf (default)
| |id Software|Doom (doom)|1993|`doom`|.doom|**gzdoom:** gzdoom-sa (default)
| |id Software|iDtech (idtech)|1991|`idtech`|.sh|**retroarch:** idtech
| |Infocom|Z-machine (zmachine)|1979|`zmachine`|.dat .z1 .z2 .z3 .z4 .z5 .z6 .zip|**retroarch:** mojozork (default)
| |Lexaloffle|PICO-8 (pico-8)|2015|`pico-8`|.p8 .png|**pico-8:** pico8 (default)
**retroarch:** fake08
| |Magnavox|Odyssey 2 (odyssey2)|1979|`odyssey`|.bin .zip .7z|**retroarch:** o2em (default)
| |Mattel|Intellivision (intellivision)|1979|`intellivision`|.int .bin .rom .zip .7z|**retroarch:** freeintv (default)
| -|Microsoft|MS-DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| +|Microsoft|DOS (pc)|1981|`pc`|.com .bat .exe .dosz|**retroarch:** dosbox_pure
**retroarch:** dosbox_svn
| |Microsoft|MSX (msx)|1983|`msx`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |Microsoft|MSX 2 (msx2)|1988|`msx2`|.dsk .mx1 .mx2 .rom .zip .7z .m3u|**retroarch:** bluemsx (default)
**retroarch:** fmsx
| |NEC|PC Engine (pcengine)|1987|`pcengine`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| @@ -60,7 +60,6 @@ This document describes all available systems emulators and cores available for |NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| |NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)
**retroarch:** beetle_pce
**retroarch:** beetle_supergrafx
| |Nesbox|TIC-80 (tic-80)|2017|`tic-80`|.tic|**retroarch:** tic80 (default)
| -|Nintendo|3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**citra:** citra-sa (default)
| |Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| |Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
| |Nintendo|Game & Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw
| @@ -71,14 +70,15 @@ This document describes all available systems emulators and cores available for |Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)
**retroarch:** sameboy
**retroarch:** gearboy
**retroarch:** tgbdual
**retroarch:** mgba
**retroarch:** vbam
| |Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)
**retroarch:** dolphin
| -|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| +|Nintendo|Nintendo 3DS (3ds)|2010|`3ds`|.3ds .3dsx .elf .axf .cci .cxi .app|**citra:** citra-sa (default)
| |Nintendo|Nintendo 64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)
**retroarch:** mupen64plus
**retroarch:** parallel_n64
**mupen64plus:** mupen64plus-sa
| |Nintendo|Nintendo DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)
**retroarch:** melonds
| |Nintendo|Nintendo Entertainment System (nes)|1985|`nes`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)
**retroarch:** fceumm
**retroarch:** quicknes
**retroarch:** mesen
| |Nintendo|Pokémon Mini (pokemini)|2001|`pokemini`|.min .zip .7z|**retroarch:** pokemini (default)
| |Nintendo|Satellaview (satellaview)|1995|`satellaview`|.smc .fig .bs .sfc .bsx .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
| |Nintendo|Super Famicom (sfc)|1990|`sfc`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| +|Nintendo|Super NES MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** beetle_supafaust
| |Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)
**retroarch:** snes9x2010
**retroarch:** snes9x2002
**retroarch:** snes9x2005_plus
**retroarch:** beetle_supafaust
**retroarch:** bsnes
**retroarch:** bsnes_mercury_performance
**retroarch:** bsnes_hd_beta
| |Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)
| diff --git a/packages/apps/moonlight/package.mk b/packages/apps/moonlight/package.mk index 29537caf9..2173a1fd6 100644 --- a/packages/apps/moonlight/package.mk +++ b/packages/apps/moonlight/package.mk @@ -14,7 +14,7 @@ if [ "${TARGET_ARCH}" = "x86_64" ] then PKG_SITE+="qt" PKG_URL="${PKG_SITE}.git" - PKG_VERSION="413993ab6fc97bbd3650d06ccb1a54a915f58fee" + PKG_VERSION="3cb169ea263c3cf9bb1461af291ab1461244b592" PKG_DEPENDS_TARGET+=" qt5" PKG_TOOLCHAIN="manual" make_target() { diff --git a/packages/apps/portmaster/package.mk b/packages/apps/portmaster/package.mk index 32f38e605..e093e8085 100644 --- a/packages/apps/portmaster/package.mk +++ b/packages/apps/portmaster/package.mk @@ -2,8 +2,9 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="portmaster" -PKG_VERSION="f8adbe08805d9fe9171cb2e3078f383631d1331d" -PKG_SITE="https://github.com/christianhaitian/PortMaster" +PKG_VERSION="8.5.2_0811" +PKG_SITE="https://github.com/PortsMaster/PortMaster-GUI" +PKG_URL="${PKG_SITE}/releases/download/${PKG_VERSION}/PortMaster.zip" PKG_LICENSE="MIT" PKG_ARCH="arm aarch64" PKG_DEPENDS_TARGET="toolchain gptokeyb gamecontrollerdb wget oga_controls libegl" @@ -13,12 +14,25 @@ PKG_LONGDESC="Portmaster - a simple tool that allows you to download various gam makeinstall_target() { export STRIP=true mkdir -p ${INSTALL}/usr/config/PortMaster - tar -xvf ${PKG_DIR}/sources/${PKG_NAME}.tar.gz -C ${INSTALL}/usr/config/PortMaster - - cp -rf ${PKG_DIR}/sources/PortMaster.sh ${INSTALL}/usr/config/PortMaster - chmod +x ${INSTALL}/usr/config/PortMaster/PortMaster.sh + cp ${PKG_DIR}/sources/* ${INSTALL}/usr/config/PortMaster/ mkdir -p ${INSTALL}/usr/bin cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin chmod +x ${INSTALL}/usr/bin/start_portmaster.sh + + mkdir -p ${INSTALL}/usr/config/PortMaster/release + curl -Lo ${INSTALL}/usr/config/PortMaster/release/PortMaster.zip ${PKG_URL} +} + +post_install() { + case ${DEVICE} in + S922X) + LIBEGL="export SDL_VIDEO_GL_DRIVER=\/usr\/lib\/egl\/libGL.so.1 SDL_VIDEO_EGL_DRIVER=\/usr\/lib\/egl\/libEGL.so.1" + ;; + *) + LIBEGL="" + ;; + esac + sed -e "s/@LIBEGL@/${LIBEGL}/g" \ + -i ${INSTALL}/usr/bin/start_portmaster.sh } diff --git a/packages/apps/portmaster/scripts/start_portmaster.sh b/packages/apps/portmaster/scripts/start_portmaster.sh index 9a9469bc9..70bcdeaeb 100644 --- a/packages/apps/portmaster/scripts/start_portmaster.sh +++ b/packages/apps/portmaster/scripts/start_portmaster.sh @@ -13,44 +13,35 @@ fi cd /storage/.config/PortMaster -#Grab the latest PortMaster.sh script -cp /usr/config/PortMaster/PortMaster.sh PortMaster.sh +#Grab the latest control.txt cp /usr/config/PortMaster/control.txt control.txt #Use our gamecontrollerdb.txt -rm gamecontrollerdb.txt +rm -r gamecontrollerdb.txt ln -sf /usr/config/SDL-GameControllerDB/gamecontrollerdb.txt gamecontrollerdb.txt -#Use our gptokeyb -rm gptokeyb -ln -sf /usr/bin/gptokeyb gptokeyb -cp /usr/config/PortMaster/portmaster.gptk portmaster.gptk - -#Use our wget -ln -sf /usr/bin/wget wget +#Delete old PortMaster fold first (we can probably remove this later) +if [ ! -f "/storage/roms/ports/PortMaster/pugwash" ]; then + rm -r /storage/roms/ports/PortMaster +fi #Make sure roms/ports/PortMaster folder exists if [ ! -d "/storage/roms/ports/PortMaster" ]; then - mkdir -p "/storage/roms/ports/PortMaster" + unzip /usr/config/PortMaster/release/PortMaster.zip -d /storage/roms/ports/ + chmod +x /storage/roms/ports/PortMaster/PortMaster.sh fi -#Make sure libs the folder exists -if [ ! -d "/storage/roms/ports/PortMaster/libs" ]; then - mkdir -p "/storage/roms/ports/PortMaster/libs" -fi +#Use PortMasters gptokeyb +rm gptokeyb +cp /storage/roms/ports/PortMaster/gptokeyb gptokeyb #Copy over required files for ports cp /storage/.config/PortMaster/control.txt /storage/roms/ports/PortMaster/control.txt -cp /storage/.config/PortMaster/gptokeyb /storage/roms/ports/PortMaster/gptokeyb cp /storage/.config/PortMaster/gamecontrollerdb.txt /storage/roms/ports/PortMaster/gamecontrollerdb.txt - cp /usr/bin/oga_controls* /storage/roms/ports/PortMaster/ -#Delete and refrence to PortMaster.sh, we only want to use ours. -find /storage/roms/ports -type f -name "PortMaster.sh" -delete - #Start PortMaster -run ./PortMaster.sh 2>/dev/null +@LIBEGL@ -#Kill gptokeyb at exit -pkill -9 gptokeyb +cd /storage/roms/ports/PortMaster +run ./PortMaster.sh 2>/dev/null diff --git a/packages/apps/portmaster/sources/PortMaster.sh b/packages/apps/portmaster/sources/PortMaster.sh deleted file mode 100644 index b67cd1083..000000000 --- a/packages/apps/portmaster/sources/PortMaster.sh +++ /dev/null @@ -1,337 +0,0 @@ -#!/bin/bash -# -# PortMaster -# https://github.com/christianhaitian/arkos/wiki/ArkOS-Emulators-and-Ports-information#ports -# Description : A simple tool that allows you to download -# various game ports for Jelos. -# - -if [ -f "/etc/profile" ]; then - source /etc/profile -fi - -toolsfolderloc="/storage/.config" - -isitext=$(df -PTh $toolsfolderloc | awk '{print $2}' | grep ext) - -if [[ "${UI_SERVICE}" =~ weston.service ]]; then - CUR_TTY="/dev/tty" -else - CUR_TTY="/dev/tty0" -fi - -ESUDO="" -export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/storage/.config/PortMaster/libs" -GREP="/storage/.config/PortMaster/grep" -WGET="/usr/bin/wget" -LANG="" -export DIALOGRC=/storage/.config/PortMaster/colorscheme/jelos.dialogrc -app_colorscheme="Default" -mono_version="mono-6.12.0.122-aarch64.squashfs" - -chmod 666 ${CUR_TTY} -export TERM=linux -export XDG_RUNTIME_DIR=/run/user/$UID/ -printf "\033c" > ${CUR_TTY} -# hide cursor -printf "\e[?25h" > ${CUR_TTY} -dialog --clear - -hotkey="Select" -power='(?<=Title_P=\").*?(?=\")' -opengl="None" -jport="None" -device=$(cat /sys/firmware/devicetree/base/model 2>/dev/null) - -# Set device for oga controls profile -case ${device} in - "Anbernic RG552") - param_device="rg552" - height="20" - width="60" - opengl='(?<=Title_F=\").*?(?=\")' - ;; - "Hardkernel ODROID-GO-Ultra"|"Powkiddy RGB10 MAX 3"|"Hardkernel ODROID-N2*") - param_device="s922x" - height="20" - width="60" - opengl="None" - ;; - "Powkiddy x55") - param_device="x55" - height="20" - width="60" - opengl="None" - ;; - "Anbernic RG351*") - param_device="anbernic" - opengl='(?<=Title_F=\").*?(?=\")' - height="15" - width="55" - ;; - "ODROID-GO Advance*") - param_device="oga" - opengl='(?<=Title_F=\").*?(?=\")' - height="15" - width="55" - ;; - "ODROID-GO Super") - param_device="ogs" - opengl='(?<=Title_F=\").*?(?=\")' - height="20" - width="60" - ;; - *) - param_device="rg552" - height="20" - width="60" - opengl="None" - ;; -esac - - -cd $toolsfolderloc/PortMaster - -cp "$toolsfolderloc/PortMaster/gamecontrollerdb.txt" /tmp/gamecontrollerdb.txt -$toolsfolderloc/PortMaster/mapper.txt "/tmp/gamecontrollerdb.txt" > /dev/null 2>&1 -export SDL_GAMECONTROLLERCONFIG_FILE="/tmp/gamecontrollerdb.txt" - -/usr/bin/gptokeyb PortMaster.sh -c "$toolsfolderloc/PortMaster/portmaster.gptk" & - -GW=`ip route | awk '/default/ { print $3 }'` -if [ -z "$GW" ]; then - dialog --clear --backtitle "PortMaster" --title "$1" --clear \ - --msgbox "\n\nYour network connection doesn't seem to be working. \ - \nDid you make sure to configure your wifi connection?" $height $width 2>&1 > ${CUR_TTY} - $ESUDO kill -9 $(pidof gptokeyb) - exit 0 -fi - -website="https://github.com/PortsMaster/PortMaster-Releases/releases/latest/download/" -jwebsite="https://github.com/brooksytech/JelosAddOns/releases/latest/download/" -isgithubrelease="true" #Github releases convert space " " ("%20") to "." - -if [ ! -d "/dev/shm/portmaster" ]; then - mkdir /dev/shm/portmaster -fi - -$WGET -t 3 -T 60 --no-check-certificate "$website"ports.md -O /dev/shm/portmaster/pports.md -$WGET -t 3 -T 60 --no-check-certificate "$jwebsite"jports.md -O /dev/shm/portmaster/jports.md - -#JELOS has moonlight built in, dont use PortMaster's version. -sed -i '/Title="Moonlight ."/d' /dev/shm/portmaster/pports.md - -#Combine PortMaster with JelosAddOns -cat /dev/shm/portmaster/pports.md /dev/shm/portmaster/jports.md > /dev/shm/portmaster/ports.md - -PortInfoInstall() { - -local setwebsiteback="N" -local unzipstatus - -whichsd="storage/roms" - - msgtxt=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=Desc=").*?(?=")') - installloc=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=locat=").*?(?=")') - porter=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=porter=").*?(?=")') - needmono=$(cat /dev/shm/portmaster/ports.md | $GREP "$1" | $GREP -oP '(?<=mono=").*?(?=")') - if [[ -f "/storage/roms/ports/PortMaster/libs/$mono_version" ]]; then - ismonothere="y" - else - ismonothere="n" - fi - - if [[ "$isgithubrelease" == "true" ]]; then - #Github releases convert space " " ("%20") to "." - # Examples: - # - "Bermuda%20Syndrome" -> "Bermuda.Syndrome" - # - "Bermuda Syndrome" -> "Bermuda.Syndrome" - # - "Mr. Boom" -> "Mr.Boom" (note how space is removed) - installloc="$( echo "$installloc" | sed 's/%20/./g' | sed 's/ /./g' | sed 's/\.\././g' )" - fi - - if [[ "${needmono,,}" == "y" ]] && [[ "$ismonothere" == "n" ]]; then - dialog --clear --backtitle "PortMaster" --title "$1" --clear \ - --yesno "\n$msgtxt \n\nPorted By: $porter\n\nThis port also requires the download and install - of the mono library which is over 200MBs in size. This download may take a while. - \n\nWould you like to continue to install this port?" $height $width 2>&1 > ${CUR_TTY} - else - dialog --clear --backtitle "PortMaster" --title "$1" --clear \ - --yesno "\n$msgtxt \n\nPorted By: $porter\n\nWould you like to continue to install this port?" $height $width 2>&1 > ${CUR_TTY} - fi - - case $? in - 0) - if [ ${needmono,,} == "y" ] && [ $ismonothere == "n" ]; then - $WGET -t 3 -T 60 -q --show-progress "$website$mono_version" -O \ - /storage/roms/ports/PortMaster/libs/$mono_version 2>&1 | stdbuf -oL sed -E 's/\.\.+/---/g'| dialog --progressbox \ - "Downloading ${mono_version} package..." $height $width > ${CUR_TTY} - fi - if [ ${needmono,,} == "y" ] && [ $ismonothere == "n" ] && [ $? -ne 0 ]; then - dialog --clear --backtitle "PortMaster" --title "$mono_version" --clear --msgbox "\n\n$mono_version did NOT download. \ - \n\nIt did not download correctly. Please verify that you have at least 500MBs of space left in your roms parition - and your internet connection is stable and try again." $height $width 2>&1 > ${CUR_TTY} - $ESUDO rm -f /storage/roms/ports/PortMaster/libs/$mono_version - else - $WGET -t 3 -T 60 -q --show-progress "$dwebsite$installloc" -O \ - /dev/shm/portmaster/$installloc 2>&1 | stdbuf -oL sed -E 's/\.\.+/---/g'| dialog --progressbox \ - "Downloading ${1} package..." $height $width > ${CUR_TTY} - unzip -o /dev/shm/portmaster/$installloc -d /$whichsd/ports/ > ${CUR_TTY} - unzipstatus=$? - if [ $unzipstatus -eq 0 ] || [ $unzipstatus -eq 1 ]; then - if [ ! -z $isitext ]; then - $ESUDO chmod -R 777 /$whichsd/ports - fi - if [[ -e "/storage/.config/.OS_ARCH" ]] || [ "${OS_NAME}" == "JELOS" ]; then - cd /$whichsd/ports/ - for s in *.sh - do - if [[ -z $(cat "$s" | $GREP "ESUDO") ]] || [[ -z $(cat "$s" | $GREP "controlfolder") ]]; then - sed -i 's/sudo //g' /storage/roms/ports/"$s" - fi - done - fi - cd $toolsfolderloc/PortMaster - dialog --clear --backtitle "PortMaster" --title "$1" --clear --msgbox "\n\n$1 installed successfully. \ - \n\nMake sure to restart EmulationStation in order to see it in the ports menu." $height $width 2>&1 > ${CUR_TTY} - elif [ $unzipstatus -eq 2 ] || [ $unzipstatus -eq 3 ] || [ $unzipstatus -eq 9 ] || [ $unzipstatus -eq 51 ]; then - dialog --clear --backtitle "PortMaster" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \ - \n\nIt did not download correctly. Please check your internet connection and try again." $height $width 2>&1 > ${CUR_TTY} - elif [ $unzipstatus -eq 50 ]; then - dialog --clear --backtitle "PortMaster" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \ - \n\nYour roms partition seems to be full." $height $width 2>&1 > ${CUR_TTY} - else - dialog --clear --backtitle "PortMaster" --title "$1" --clear --msgbox "\n\n$1 did NOT install. \ - \n\nUnzip error code:$unzipstatus " $height $width 2>&1 > ${CUR_TTY} - fi - - $ESUDO rm -f /dev/shm/portmaster/$installloc - fi - ;; - *) - ;; - esac -} - -userExit() { - rm -f /dev/shm/portmaster/*ports.md - dialog --clear - printf "\033c" > ${CUR_TTY} - - case ${device} in - "Hardkernel ODROID-GO-Ultra"|"Powkiddy RGB10 MAX 3") - #Fixing ports on S922X, exclude FNA games - for port in /storage/roms/ports/*.sh; do - if ! grep -q FNA "$port"; then - sed -i '/get_controls/c\get_controls && export SDL_VIDEO_GL_DRIVER=/usr/lib/egl/libGL.so.1 SDL_VIDEO_EGL_DRIVER=/usr/lib/egl/libEGL.so.1' "$port" - echo Fixing: "$port"; - fi - done; - ;; - esac - - exit 0 -} - -JelosPorts() { - dwebsite=$jwebsite - jport='(?<=Title_J=\").*?(?=\")' - local options=( - $(cat /dev/shm/portmaster/ports.md | $GREP 'runtype="jp"' | $GREP -oP "(?<=Title=\").*?(?=\")|$power|$opengl|$jport") - ) - while true; do - selection=(dialog \ - --backtitle "PortMaster" \ - --title "[ JelosAddOns Ports]" \ - --no-collapse \ - --clear \ - --cancel-label "Back" \ - --menu "Available JelosAddOns ports for install" $height $width 15) - - choices=$("${selection[@]}" "${options[@]}" 2>&1 > ${CUR_TTY}) || TopLevel - - for choice in $choices; do - case $choice in - *) PortInfoInstall $choice ;; - esac - done - done -} - -MainMenu() { - dwebsite=$website - jport="None" - local options=( - $(cat /dev/shm/portmaster/ports.md | $GREP -oP "(?<=Title=\").*?(?=\")|$power|$opengl|$jport") - ) - - while true; do - selection=(dialog \ - --backtitle "PortMaster" \ - --title "[ Main Menu of all ports]" \ - --no-collapse \ - --clear \ - --cancel-label "Back" \ - --menu "Available ports for install" $height $width 15) - - choices=$("${selection[@]}" "${options[@]}" 2>&1 > ${CUR_TTY}) || TopLevel - - for choice in $choices; do - case $choice in - *) PortInfoInstall $choice ;; - esac - done - done -} - -MainMenuRTR() { - dwebsite=$website - jport="None" - local options=( - $(cat /dev/shm/portmaster/ports.md | $GREP 'runtype="rtr"' | $GREP -oP "(?<=Title=\").*?(?=\")|$power|$opengl|$jport") - ) - - while true; do - selection=(dialog \ - --backtitle "PortMaster" \ - --title "[ Main Menu for Ready to Run ports ]" \ - --no-collapse \ - --clear \ - --cancel-label "Back" \ - --menu "Available Ready to Run ports for install" $height $width 15) - - choices=$("${selection[@]}" "${options[@]}" 2>&1 > ${CUR_TTY}) || TopLevel - - for choice in $choices; do - case $choice in - *) PortInfoInstall $choice ;; - esac - done - done -} - -TopLevel() { - local topoptions=( 1 "All Available Ports" 2 "Ready to Run Ports" 3 "JelosAddOns Ports" ) - - while true; do - topselection=(dialog \ - --backtitle "PortMaster" \ - --title "[ Top Level Menu ]" \ - --no-collapse \ - --clear \ - --cancel-label "Exit" \ - --menu "Please make your selection" $height $width 15) - - topchoices=$("${topselection[@]}" "${topoptions[@]}" 2>&1 > ${CUR_TTY}) || userExit - - for choice in $topchoices; do - case $choice in - 1) MainMenu ;; - 2) MainMenuRTR ;; - 3) JelosPorts ;; - esac - done - done -} - -TopLevel diff --git a/packages/apps/portmaster/sources/control.txt b/packages/apps/portmaster/sources/control.txt new file mode 100644 index 000000000..c19ec8182 --- /dev/null +++ b/packages/apps/portmaster/sources/control.txt @@ -0,0 +1,72 @@ +# This file can and should be sourced by ports for various parameters to +# minimize script customizations and allow for easier future updates +# like adding additional supported devices. +# Thanks to JohnnyonFlame, dhwz, romadu, and shantigilbert for the +# suggestion and assistance with this. +# Source used for gptokeyb available at +# https://github.com/christianhaitian/gptokeyb +# Source used for oga_controls available at +# https://github.com/christianhaitian/oga_controls + +directory="roms" +controlfolder="/$directory/ports/PortMaster" +ESUDO="" +ESUDOKILL="-1" +raloc="/usr/bin" +raconf="--config /storage/.config/retroarch/retroarch.cfg" +pdevice=$(cat /sys/firmware/devicetree/base/model 2>/dev/null) + +case ${pdevice} in + "Anbernic RG552") + profile="rg552" + ;; + "Hardkernel ODROID-GO-Ultra"|"Powkiddy RGB10 MAX 3") + profile="s922x" + ;; + "Powkiddy x55") + profile="x55" + ;; + "Anbernic RG351*") + profile="anbernic" + ;; + "ODROID-GO Advance*") + profile="oga" + ;; + "ODROID-GO Super") + profile="ogs" + ;; + *) + profile="rg552" + ;; +esac + +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib32 +export SDL_GAMECONTROLLERCONFIG_FILE="$controlfolder/gamecontrollerdb.txt" + +get_controls() { + + ANALOGSTICKS="2" + LOWRES="N" + + DEVICE="${1}" + param_device="${profile}" + + # Set file + export SDL_GAMECONTROLLERCONFIG_FILE="/tmp/gamecontrollerdb.txt" + + # Spit the controller of the device our heuristics found (if it did). + if [[ ! -z ${DEVICE} ]]; then + grep "${SDLDBUSERFILE}" -e "${DEVICE}" > /tmp/gamecontrollerdb.txt + else + echo "" > /tmp/gamecontrollerdb.txt + fi + + # Now find any controller mapped on emulationstation... + /storage/.config/PortMaster/mapper.txt /tmp/gamecontrollerdb.txt > /dev/null 2>&1 + SDLDBUSERFILE="/storage/.config/SDL-GameControllerDB/gamecontrollerdb.txt" + + # Some ports want SDL_GAMECONTROLLERCONFIG, so let's fill it in + sdl_controllerconfig="$(< "${SDL_GAMECONTROLLERCONFIG_FILE}")" +} + +GPTOKEYB="$ESUDO $controlfolder/gptokeyb $ESUDOKILL" diff --git a/packages/apps/portmaster/sources/libegl.tar.gz b/packages/apps/portmaster/sources/libegl.tar.gz deleted file mode 100755 index fc83c9441..000000000 Binary files a/packages/apps/portmaster/sources/libegl.tar.gz and /dev/null differ diff --git a/packages/apps/portmaster/sources/mapper.txt b/packages/apps/portmaster/sources/mapper.txt new file mode 100644 index 000000000..ef54af018 --- /dev/null +++ b/packages/apps/portmaster/sources/mapper.txt @@ -0,0 +1,135 @@ +#!/bin/bash + +# -- Config & Setup -- +# Destination file +if [[ -z "$1" ]]; then + echo "Usage: mapper.txt [gamecontrollerdb.txt]" + exit -1 +fi + +CONTROLLER_DB="$1" +if [[ ! -f "${CONTROLLER_DB}" ]]; then + echo "File ${CONTROLLER_DB} does not exist." + exit -1 +fi + +# Where the emulationstation configuration file is +ES_CONFIG="${HOME}/.config/emulationstation/es_input.cfg" + +# -- Helper function -- +# Map the actual button/hat/axis +function map { + INPUT_NAME=$1 + TYPE=$2 + ID=$3 + VALUE=$4 + + map_x_result="" + case "${INPUT_NAME}" in + "a") TR_NAME="a";; + "b") TR_NAME="b";; + "x") TR_NAME="x";; + "y") TR_NAME="y";; + "hotkeyenable") TR_NAME="guide";; + "up") TR_NAME="dpup";; + "down") TR_NAME="dpdown";; + "left") TR_NAME="dpleft";; + "right") TR_NAME="dpright";; + "leftshoulder") TR_NAME="leftshoulder";; + "leftthumb") TR_NAME="leftstick";; + "lefttrigger") TR_NAME="lefttrigger";; + "rightshoulder") TR_NAME="rightshoulder";; + "rightthumb") TR_NAME="rightstick";; + "righttrigger") TR_NAME="righttrigger";; + "select") TR_NAME="back";; + "start") TR_NAME="start";; + "leftanalogup") TR_NAME="-lefty";; + "leftanalogleft") TR_NAME="-leftx";; + "leftanalogdown") TR_NAME="+lefty";; + "leftanalogright") TR_NAME="+leftx";; + "rightanalogup") TR_NAME="-righty";; + "rightanalogleft") TR_NAME="-rightx";; + "rightanalogdown") TR_NAME="+righty";; + "rightanalogright") TR_NAME="+rightx";; + *) + echo "Invalid mapping ${INPUT_NAME}." + return + ;; + esac + + case "${TYPE}" in + "axis") + if (( $VALUE < 0 )); then + map_x_result="${TR_NAME}:${map_x_result}-a${ID}," + else + # Most (save for a few misbehaved children...) triggers are [0, 1] instead of [-1, 1] + # Shitty workaround for an emulationstation issue + if [[ $INPUT_NAME =~ .*"trigger" ]]; then + map_x_result="${TR_NAME}:${map_x_result}a${ID}," + else + map_x_result="${TR_NAME}:${map_x_result}+a${ID}," + fi + fi + ;; + "button") + map_x_result="${TR_NAME}:${map_x_result}b${ID}," + ;; + "hat") + map_x_result="${TR_NAME}:${map_x_result}h${ID}.${VALUE}," + ;; + *) + echo "Invalid entry ${TYPE}" + ;; + esac +} + +function get_map_suffix { + map_suffix="platform:Linux," +} + +function get_map_prefix { + map_prefix="${GUID},${NAME}," +} + +# query controllers mapped in emulationstation, ignore devices without a GUID +ES_QUERY="$(xmlstarlet sel -T -t -m "inputList/inputConfig[@deviceGUID!='']" -n -v "concat(@deviceName,';',@deviceGUID)" $ES_CONFIG)" +printf "\n# Custom Entries\n" >> "${CONTROLLER_DB}" + +echo "## ES Dev Mapper ##" +while IFS=";" read -r NAME GUID; do + echo "$NAME :: $GUID" + # Ignore keyboards + if [[ "${GUID}" == -1 ]]; then + continue + fi + + # Check if GUID exists in gamecontrollerdb.txt + if [ -z "$(fgrep -- ${GUID} "${CONTROLLER_DB}")" ]; then + # Query this specific GUID on the mappings + MAPPING_CFG=$(xmlstarlet sel -T -t -m "//inputConfig[@deviceGUID = '${GUID}']/input" -n -v "concat(@name,';',@type,';',@id,';',@value)" $ES_CONFIG) + + MAPPING="" + while IFS=";" read -r -e INPUT_NAME TYPE ID VALUE; do + # Map the controller + map "${INPUT_NAME}" "${TYPE}" "${ID}" "${VALUE}" + + # Only concatenate valid mappings + if [[ ! -z ${map_x_result} ]]; then + MAPPING="${MAPPING}${map_x_result}" + fi + done <<< ${MAPPING_CFG:1} + + get_map_prefix + get_map_suffix + if [[ ! -z "${MAPPING}" ]]; then + echo "${map_prefix}${MAPPING}${map_suffix}" >> "${CONTROLLER_DB}" + echo "${map_prefix}${MAPPING}${map_suffix}" + echo "" + else + echo "Failed to map anything." + echo "" + fi + else + echo "Already mapped..." + fi +done <<< ${ES_QUERY:1} diff --git a/packages/apps/portmaster/sources/portmaster.tar.gz b/packages/apps/portmaster/sources/portmaster.tar.gz deleted file mode 100644 index ef07c725f..000000000 Binary files a/packages/apps/portmaster/sources/portmaster.tar.gz and /dev/null differ diff --git a/packages/devel/libcec/package.mk b/packages/devel/libcec/package.mk index 807d7a676..f328614a4 100644 --- a/packages/devel/libcec/package.mk +++ b/packages/devel/libcec/package.mk @@ -16,19 +16,10 @@ PKG_CMAKE_OPTS_TARGET="-DBUILD_SHARED_LIBS=1 \ -DCMAKE_INSTALL_LIBDIR_NOARCH:STRING=lib \ -DSKIP_PYTHON_WRAPPER=1 \ -DHAVE_IMX_API=0 \ + -DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0 \ -DHAVE_GIT_BIN=0 \ -DHAVE_RPI_LIB=0" -if [ "${KODIPLAYER_DRIVER}" = "libamcodec" ]; then - if [ "${TARGET_KERNEL_ARCH}" = "arm64" ]; then - PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_TARGET} -DHAVE_AOCEC_API=1" - else - PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_TARGET} -DHAVE_AMLOGIC_API=1" - fi -else - PKG_CMAKE_OPTS_TARGET="${PKG_CMAKE_OPTS_TARGET} -DHAVE_AOCEC_API=0 -DHAVE_AMLOGIC_API=0" -fi - # libX11 and xrandr to read the sink's EDID, used to determine the PC's HDMI physical address if [ "${DISPLAYSERVER}" = "x11" ]; then PKG_DEPENDS_TARGET+=" libX11 libXrandr" @@ -44,11 +35,7 @@ post_makeinstall_target() { # Remove the Python3 demo - useless for us rm -f ${INSTALL}/usr/bin/pyCecClient - # Remove the sysmlink and redirect to /var/lib so that we can change libcec versions at run time - rm -f ${INSTALL}/usr/lib/libcec.so.6 - ln -sf /var/lib/libcec.so.6 ${INSTALL}/usr/lib/libcec.so.6 - - PYTHON_DIR=${INSTALL}/usr/lib/${PKG_PYTHON_VERSION} + PYTHON_DIR=${INSTALL}/usr/lib/${PKG_PYTHON_VERSION} if [ -d ${PYTHON_DIR}/dist-packages ]; then mv ${PYTHON_DIR}/dist-packages ${PYTHON_DIR}/site-packages fi diff --git a/packages/emulators/libretro/81-lr/package.mk b/packages/emulators/libretro/81-lr/package.mk index 54a758cce..eb5609a84 100644 --- a/packages/emulators/libretro/81-lr/package.mk +++ b/packages/emulators/libretro/81-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="81-lr" -PKG_VERSION="6d1b4d26aa9870133616fcfb5a763ca138ae25d1" +PKG_VERSION="525d5c18f1ff3fc54c37e083a475225d9179d59d" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv3" diff --git a/packages/emulators/libretro/atari800-lr/package.mk b/packages/emulators/libretro/atari800-lr/package.mk index ad32b658f..4d37ddd2c 100644 --- a/packages/emulators/libretro/atari800-lr/package.mk +++ b/packages/emulators/libretro/atari800-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="atari800-lr" -PKG_VERSION="20d59afb3f19065749549732f20845c3be82e68c" +PKG_VERSION="c50fb61580ca461e3aafcd41172184a840d77e77" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/emulators/libretro/beetle-lynx-lr/package.mk b/packages/emulators/libretro/beetle-lynx-lr/package.mk index aa1798975..df0108bd1 100644 --- a/packages/emulators/libretro/beetle-lynx-lr/package.mk +++ b/packages/emulators/libretro/beetle-lynx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-lynx-lr" -PKG_VERSION="fab3ac02d5622eb53a707bd392cc037282e9d8b4" +PKG_VERSION="48909ddd1aba4de034d9c1da70c460b1724daa3b" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/beetle-ngp-lr/package.mk b/packages/emulators/libretro/beetle-ngp-lr/package.mk index a918a5c1d..645d66453 100644 --- a/packages/emulators/libretro/beetle-ngp-lr/package.mk +++ b/packages/emulators/libretro/beetle-ngp-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-ngp-lr" -PKG_VERSION="65460e3a9ad529f6901caf669abbda11f437ab55" +PKG_VERSION="673c3d924ff33d71c6a342b170eff5359244df1f" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/beetle-pce-lr/package.mk b/packages/emulators/libretro/beetle-pce-lr/package.mk index 5e1d110ad..129bb5fd5 100644 --- a/packages/emulators/libretro/beetle-pce-lr/package.mk +++ b/packages/emulators/libretro/beetle-pce-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-pce-lr" -PKG_VERSION="b59e34af5383fdfe626af5900bbb231871ece0ea" +PKG_VERSION="d61e6e5740aeeb56427802d8d52b912c1a6422b6" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/beetle-supergrafx-lr/package.mk b/packages/emulators/libretro/beetle-supergrafx-lr/package.mk index 098754433..dfb19b91c 100644 --- a/packages/emulators/libretro/beetle-supergrafx-lr/package.mk +++ b/packages/emulators/libretro/beetle-supergrafx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-supergrafx-lr" -PKG_VERSION="733b29460bfa254ccea096d29e8cc566e48aa633" +PKG_VERSION="9eb9dcae1f6e37516d20fdc4a8879c8204ad4045" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/beetle-vb-lr/package.mk b/packages/emulators/libretro/beetle-vb-lr/package.mk index 91b9a0dc6..101743254 100644 --- a/packages/emulators/libretro/beetle-vb-lr/package.mk +++ b/packages/emulators/libretro/beetle-vb-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-vb-lr" -PKG_VERSION="732a8f701e671bf032165730fdf8bd96fb5ca7bb" +PKG_VERSION="9d1bd03f21dac7897f65269e1095496331efce8b" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/beetle-wswan-lr/package.mk b/packages/emulators/libretro/beetle-wswan-lr/package.mk index 6740e45dd..d082ba0ba 100644 --- a/packages/emulators/libretro/beetle-wswan-lr/package.mk +++ b/packages/emulators/libretro/beetle-wswan-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="beetle-wswan-lr" -PKG_VERSION="a0ddcd3f084f5b4eb06acb6e03b8c4707a2f6123" +PKG_VERSION="32bf70a3032a138baa969c22445f4b7821632c30" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/bluemsx-lr/package.mk b/packages/emulators/libretro/bluemsx-lr/package.mk index 6cd445dfd..57c556777 100644 --- a/packages/emulators/libretro/bluemsx-lr/package.mk +++ b/packages/emulators/libretro/bluemsx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="bluemsx-lr" -PKG_VERSION="e21bf74bddb79ad1bbe20b4d964e7515269c669b" +PKG_VERSION="ce9b5a8dd1661423226e1099e09cee1a4ae9eb2c" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/bsnes-lr/package.mk b/packages/emulators/libretro/bsnes-lr/package.mk index 49e92198c..0a8539857 100644 --- a/packages/emulators/libretro/bsnes-lr/package.mk +++ b/packages/emulators/libretro/bsnes-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="bsnes-lr" -PKG_VERSION="ef4df4e683e1e6a194fd5ae6c9af2dae62df3998" +PKG_VERSION="0685381e42f1c84b88d67f799bf05ecc69e9bc3a" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/bsnes-libretro" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/bsnes-mercury-performance-lr/package.mk b/packages/emulators/libretro/bsnes-mercury-performance-lr/package.mk index ffc7fa03c..07efb2079 100644 --- a/packages/emulators/libretro/bsnes-mercury-performance-lr/package.mk +++ b/packages/emulators/libretro/bsnes-mercury-performance-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="bsnes-mercury-performance-lr" -PKG_VERSION="fb9a41fe9bc230a07c4506cad3cbf21d3fa635b4" +PKG_VERSION="60c204ca17941704110885a815a65c740572326f" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/libretro/bsnes-mercury" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/cannonball-lr/package.mk b/packages/emulators/libretro/cannonball-lr/package.mk index 445e02171..d94b8f4ee 100644 --- a/packages/emulators/libretro/cannonball-lr/package.mk +++ b/packages/emulators/libretro/cannonball-lr/package.mk @@ -21,7 +21,7 @@ ################################################################################ PKG_NAME="cannonball-lr" -PKG_VERSION="93ca14d7074b400fc3ed9ba8cefe0622f8d76176" +PKG_VERSION="c5487ee342ec2596f733a211b812e338cdba8ad8" PKG_ARCH="any" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/libretro/cannonball" diff --git a/packages/emulators/libretro/core-info/package.mk b/packages/emulators/libretro/core-info/package.mk index 503894f4b..7d131b1f5 100644 --- a/packages/emulators/libretro/core-info/package.mk +++ b/packages/emulators/libretro/core-info/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="core-info" -PKG_VERSION="63fc405d19f64b6559fe6428e719756a7979e596" +PKG_VERSION="2aa595b476569472290c4ff78bbfbd630528ae62" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/libretro-core-info" PKG_URL="https://github.com/libretro/libretro-core-info/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/duckstation-lr/package.mk b/packages/emulators/libretro/duckstation-lr/package.mk index ccdea1fa5..3e121c508 100644 --- a/packages/emulators/libretro/duckstation-lr/package.mk +++ b/packages/emulators/libretro/duckstation-lr/package.mk @@ -13,11 +13,19 @@ PKG_SHORTDESC="DuckStation - PlayStation 1, aka. PSX Emulator" PKG_TOOLCHAIN="cmake" PKG_BUILD_FLAGS="-lto" +pre_configure_target() { + case ${TARGET_ARCH} in + x86_64) + CFLAGS+=" -march=x86-64" + ;; + esac + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_SDL_FRONTEND=OFF \ -DBUILD_QT_FRONTEND=OFF \ -DBUILD_LIBRETRO_CORE=ON \ -DENABLE_DISCORD_PRESENCE=OFF \ -DUSE_X11=OFF" +} makeinstall_target() { mkdir -p ${INSTALL}/usr/lib/libretro diff --git a/packages/emulators/libretro/fbalpha2012-lr/package.mk b/packages/emulators/libretro/fbalpha2012-lr/package.mk index eed2031b7..ccd91858f 100644 --- a/packages/emulators/libretro/fbalpha2012-lr/package.mk +++ b/packages/emulators/libretro/fbalpha2012-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="fbalpha2012-lr" -PKG_VERSION="7f8860543a81ba79c0e1ce1aa219af44568c628a" +PKG_VERSION="b7ac554c53561d41640372f23dab15cd6fc4f0c4" PKG_ARCH="any" PKG_LICENSE="Non-commercial" PKG_SITE="https://github.com/libretro/fbalpha2012" diff --git a/packages/emulators/libretro/fbneo-lr/package.mk b/packages/emulators/libretro/fbneo-lr/package.mk index 9d716f00c..1f47371d0 100644 --- a/packages/emulators/libretro/fbneo-lr/package.mk +++ b/packages/emulators/libretro/fbneo-lr/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="fbneo-lr" -PKG_VERSION="6f65c17648bb98217d8ddcdc750505d4ac0916e5" +PKG_VERSION="091431b455303e5e6cea4ad10152034b89ba2f61" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="Non-commercial" diff --git a/packages/emulators/libretro/libretro-database/package.mk b/packages/emulators/libretro/libretro-database/package.mk index 3951f5918..e94e3fcf4 100644 --- a/packages/emulators/libretro/libretro-database/package.mk +++ b/packages/emulators/libretro/libretro-database/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="libretro-database" -PKG_VERSION="809a24e1b480945778f4bf55f8d24df3e33ca0a1" +PKG_VERSION="ebc9c3f715e78be1d44628468648ff8709aaa743" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" diff --git a/packages/emulators/libretro/mame2000-lr/package.mk b/packages/emulators/libretro/mame2000-lr/package.mk index 7bc8ba30d..073b38251 100644 --- a/packages/emulators/libretro/mame2000-lr/package.mk +++ b/packages/emulators/libretro/mame2000-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="mame2000-lr" -PKG_VERSION="720b8ad4cbd76abd57b9aeced9ba541dc8476f7f" +PKG_VERSION="1472da3a39ab14fff8325b1f51a1dfdb8eabb5c8" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="MAME" diff --git a/packages/emulators/libretro/mame2003-plus-lr/package.mk b/packages/emulators/libretro/mame2003-plus-lr/package.mk index 2340a3cad..130419c64 100644 --- a/packages/emulators/libretro/mame2003-plus-lr/package.mk +++ b/packages/emulators/libretro/mame2003-plus-lr/package.mk @@ -21,7 +21,7 @@ ################################################################################ PKG_NAME="mame2003-plus-lr" -PKG_VERSION="79aee414b6f5ab70a6eb257f9273550423e11356" +PKG_VERSION="156b3873fbf45a582283f376dd1e410c532b7c88" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="MAME" diff --git a/packages/emulators/libretro/mame2015-lr/package.mk b/packages/emulators/libretro/mame2015-lr/package.mk index 79e4a90ba..ffd5c722e 100644 --- a/packages/emulators/libretro/mame2015-lr/package.mk +++ b/packages/emulators/libretro/mame2015-lr/package.mk @@ -18,7 +18,7 @@ ################################################################################ PKG_NAME="mame2015-lr" -PKG_VERSION="2599c8aeaf84f62fe16ea00daa460a19298c121c" +PKG_VERSION="316cd06349f2b34b4719f04f7c0d07569a74c764" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv2" diff --git a/packages/emulators/libretro/neocd_lr/package.mk b/packages/emulators/libretro/neocd_lr/package.mk index b9a44b439..76cd91f59 100644 --- a/packages/emulators/libretro/neocd_lr/package.mk +++ b/packages/emulators/libretro/neocd_lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2019-present Team CoreELEC (https://coreelec.org) PKG_NAME="neocd_lr" -PKG_VERSION="2070f5258c9d3feee15962f9db8c8ef20072ece8" +PKG_VERSION="46d2832747578384ffcd76551c47de17b2f4aaf5" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="LGPLv3.0" diff --git a/packages/emulators/libretro/np2kai-lr/package.mk b/packages/emulators/libretro/np2kai-lr/package.mk index 151c523a2..649907a59 100644 --- a/packages/emulators/libretro/np2kai-lr/package.mk +++ b/packages/emulators/libretro/np2kai-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="np2kai-lr" -PKG_VERSION="9dbeaafa13e666cb7b87ffddb8bc4ad3343eb5cb" +PKG_VERSION="d9501b220ff59279973bdf53e2ae26bbc27ed7fe" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="MIT" diff --git a/packages/emulators/libretro/ppsspp-lr/package.mk b/packages/emulators/libretro/ppsspp-lr/package.mk index 9723a90ca..fc5ef1f0a 100644 --- a/packages/emulators/libretro/ppsspp-lr/package.mk +++ b/packages/emulators/libretro/ppsspp-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="ppsspp-lr" -PKG_VERSION="a9d2ff29ea06c709c3cd077eeb720ce9efdc4f6f" +PKG_VERSION="157fabf91b959305af7bde3b124df3a15524fed4" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/hrydgard/ppsspp" PKG_URL="https://github.com/hrydgard/ppsspp.git" diff --git a/packages/emulators/libretro/quasi88-lr/package.mk b/packages/emulators/libretro/quasi88-lr/package.mk index 8a6b4043a..d31deb87a 100644 --- a/packages/emulators/libretro/quasi88-lr/package.mk +++ b/packages/emulators/libretro/quasi88-lr/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2019-present asakous (https://github.com/asakous) PKG_NAME="quasi88-lr" -PKG_VERSION="7980f2484997055a9665837bb4c325d562acb04e" +PKG_VERSION="e3d06c4f34c3643d3ea9248a47cdc6cf60c1e0b1" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="BSD3" diff --git a/packages/emulators/libretro/reminiscence-lr/package.mk b/packages/emulators/libretro/reminiscence-lr/package.mk index 4b4ab277d..660b45997 100644 --- a/packages/emulators/libretro/reminiscence-lr/package.mk +++ b/packages/emulators/libretro/reminiscence-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="reminiscence-lr" -PKG_VERSION="c2624c7565bbae441835db80f24902fc40f83dd1" +PKG_VERSION="e0d6d47230fdf22d468afd46cfb01f9315aff2bd" PKG_ARCH="any" PKG_SITE="https://github.com/libretro/REminiscence" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/libretro/smsplus-gx-lr/package.mk b/packages/emulators/libretro/smsplus-gx-lr/package.mk index 9bec88ec2..5c4e89bad 100644 --- a/packages/emulators/libretro/smsplus-gx-lr/package.mk +++ b/packages/emulators/libretro/smsplus-gx-lr/package.mk @@ -20,7 +20,7 @@ ################################################################################ PKG_NAME="smsplus-gx-lr" -PKG_VERSION="60af17ddb2231ba98f4ed1203e2a2f58d08ea088" +PKG_VERSION="96fa9bc65aa27a5ab2779f9f2ff0439fec7cf513" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="Non-commercial" diff --git a/packages/emulators/libretro/vitaquake2-lr/patches/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch similarity index 100% rename from packages/emulators/libretro/vitaquake2-lr/patches/001-set-platform.patch rename to packages/emulators/libretro/vitaquake2-lr/patches/aarch64/001-set-platform.patch diff --git a/packages/emulators/libretro/vitaquake2-lr/patches/x86_64/001-set-platform.patch b/packages/emulators/libretro/vitaquake2-lr/patches/x86_64/001-set-platform.patch new file mode 100644 index 000000000..fdb106c44 --- /dev/null +++ b/packages/emulators/libretro/vitaquake2-lr/patches/x86_64/001-set-platform.patch @@ -0,0 +1,18 @@ +diff -rupN vitaquake2.orig/Makefile vitaquake2/Makefile +--- vitaquake2.orig/Makefile 2023-09-15 16:57:45.991890996 +0000 ++++ vitaquake2/Makefile 2023-09-15 20:08:45.856895708 +0000 +@@ -76,6 +76,14 @@ else ifeq ($(platform), linux-portable) + SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T + LIBM := + ++else ifeq ($(platform), @DEVICE@) ++ TARGET := $(TARGET_NAME)_libretro.so ++ fpic := -fPIC ++ SHARED := -shared -Wl,--version-script=$(CORE_DIR)/link.T -Wl,--no-undefined ++ CFLAGS += -D_POSIX_C_SOURCE=199309L ++ GLES := 1 ++ GLES31 := 1 ++ + else ifneq (,$(findstring rockchip,$(platform))) + EXT ?= so + TARGET := $(TARGET_NAME)_libretro.$(EXT) diff --git a/packages/emulators/libretro/xrick-lr/package.mk b/packages/emulators/libretro/xrick-lr/package.mk index d374d64d9..d9aaf0e10 100644 --- a/packages/emulators/libretro/xrick-lr/package.mk +++ b/packages/emulators/libretro/xrick-lr/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xrick-lr" -PKG_VERSION="c433c1080409fefcfb69d66dc6416967ff5f6735" +PKG_VERSION="58e544ee8de08ca8421e97c064d52ef6cdd73bd2" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPLv3" diff --git a/packages/emulators/standalone/citra-sa/package.mk b/packages/emulators/standalone/citra-sa/package.mk index 5ac4f11a7..43dc88e47 100644 --- a/packages/emulators/standalone/citra-sa/package.mk +++ b/packages/emulators/standalone/citra-sa/package.mk @@ -2,9 +2,9 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="citra-sa" -PKG_VERSION="2f4039858a082818b8fff60a7a89794c6259f146" +PKG_VERSION="9b2a592" PKG_LICENSE="MPLv2" -PKG_SITE="https://github.com/JustEnoughLinuxOS/citra-canary" +PKG_SITE="https://github.com/citra-emu/citra" PKG_URL="${PKG_SITE}.git" PKG_DEPENDS_TARGET="toolchain ffmpeg mesa SDL2 boost zlib libusb boost zstd control-gen" PKG_LONGDESC="Citra 3DS emulator" diff --git a/packages/emulators/standalone/duckstation-sa/package.mk b/packages/emulators/standalone/duckstation-sa/package.mk index 5b69568f0..5c939dc1a 100644 --- a/packages/emulators/standalone/duckstation-sa/package.mk +++ b/packages/emulators/standalone/duckstation-sa/package.mk @@ -49,17 +49,22 @@ else PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=OFF" fi pre_configure_target() { - PKG_CMAKE_OPTS_TARGET+=" -DANDROID=OFF \ - -DENABLE_DISCORD_PRESENCE=OFF \ - -DBUILD_QT_FRONTEND=OFF \ - -DBUILD_NOGUI_FRONTEND=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DUSE_SDL2=ON \ - -DENABLE_CHEEVOS=ON \ - -DUSE_FBDEV=OFF \ - -DUSE_EVDEV=ON \ - -DUSE_X11=OFF" + case ${TARGET_ARCH} in + x86_64) + CFLAGS+=" -march=x86-64" + ;; + esac + PKG_CMAKE_OPTS_TARGET+=" -DANDROID=OFF \ + -DENABLE_DISCORD_PRESENCE=OFF \ + -DBUILD_QT_FRONTEND=OFF \ + -DBUILD_NOGUI_FRONTEND=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DUSE_SDL2=ON \ + -DENABLE_CHEEVOS=ON \ + -DUSE_FBDEV=OFF \ + -DUSE_EVDEV=ON \ + -DUSE_X11=OFF" } makeinstall_target() { diff --git a/packages/emulators/standalone/flycast-sa/package.mk b/packages/emulators/standalone/flycast-sa/package.mk index a108b51b1..db8092863 100644 --- a/packages/emulators/standalone/flycast-sa/package.mk +++ b/packages/emulators/standalone/flycast-sa/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) PKG_NAME="flycast-sa" -PKG_VERSION="8fb3def2d5cdd6adea00171ed720afb390cafd78" +PKG_VERSION="3e047a6e0364273fe08f1f7025640fcced0be176" PKG_LICENSE="GPLv2" PKG_SITE="https://github.com/flyinghead/flycast" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/standalone/hatarisa/package.mk b/packages/emulators/standalone/hatarisa/package.mk index 7f0866d49..6bd8d2a2e 100644 --- a/packages/emulators/standalone/hatarisa/package.mk +++ b/packages/emulators/standalone/hatarisa/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2018-present 5schatten (https://github.com/5schatten) PKG_NAME="hatarisa" -PKG_VERSION="5cf9518e7a07a3b35f8fc953725930810f035c4e" +PKG_VERSION="69ce09390824a29c9708ae41290d6df28a5f766e" PKG_LICENSE="GPL" PKG_SITE="https://github.com/hatari/hatari" PKG_URL="https://github.com/hatari/hatari/archive/${PKG_VERSION}.tar.gz" diff --git a/packages/emulators/standalone/kronos-sa/package.mk b/packages/emulators/standalone/kronos-sa/package.mk index 102db817a..f76105774 100644 --- a/packages/emulators/standalone/kronos-sa/package.mk +++ b/packages/emulators/standalone/kronos-sa/package.mk @@ -8,7 +8,7 @@ PKG_ARCH="x86_64" PKG_URL="${PKG_SITE}.git" PKG_VERSION="8e0eade" PKG_GIT_CLONE_BRANCH="extui-align" -PKG_DEPENDS_TARGET="toolchain SDL2 boost openal-soft zlib qt5 egl-wayland" +PKG_DEPENDS_TARGET="toolchain SDL2 boost openal-soft zlib qt5" PKG_LONGDESC="Kronos is a Sega Saturn emulator forked from yabause." PKG_TOOLCHAIN="cmake-make" GET_HANDLER_SUPPORT="git" diff --git a/packages/emulators/standalone/mednafen/config/AMD64/mednafen.cfg b/packages/emulators/standalone/mednafen/config/AMD64/mednafen.cfg deleted file mode 100644 index 6dd8d0f1e..000000000 --- a/packages/emulators/standalone/mednafen/config/AMD64/mednafen.cfg +++ /dev/null @@ -1,22387 +0,0 @@ -;VERSION 1.31.0-UNSTABLE -;Edit this file at your own risk! -;DO NOT EDIT THIS FILE WHILE AN INSTANCE OF MEDNAFEN THAT USES IT IS RUNNING. -;File format: -; -;Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen. Dummy guard line to prevent settings file corruption by accidentally running ancient versions of Mednafen.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;fs ~ - -;CD read threads CPU affinity mask. -affinity.cd 0 - -;Main emulation thread CPU affinity mask. -affinity.emu 0 - -;Video blitting thread CPU affinity mask. -affinity.video 0 - -;Automatically load/save state on game load/close. -autosave 0 - -;Cache entire CD images in memory. -cd.image_memcache 1 - -;M3U total number of disc images limit. -cd.m3u.disc_limit 50 - -;M3U recursion limit. -cd.m3u.recursion_limit 9 - -;Enable (automatic) usage of this module. -cdplay.enable 1 - -;Force monophonic sound output. -cdplay.forcemono 0 - -;cdplay, Built-In, Controller: Next Track -cdplay.input.builtin.controller.next_track keyboard 0x0 79 - -;cdplay, Built-In, Controller: Next Track 10 -cdplay.input.builtin.controller.next_track_10 keyboard 0x0 82 - -;cdplay, Built-In, Controller: Play/Pause -cdplay.input.builtin.controller.play_pause keyboard 0x0 44 - -;cdplay, Built-In, Controller: Previous Track -cdplay.input.builtin.controller.previous_track keyboard 0x0 80 - -;cdplay, Built-In, Controller: Previous Track 10 -cdplay.input.builtin.controller.previous_track_10 keyboard 0x0 81 - -;cdplay, Built-In, Controller: Scan Forward -cdplay.input.builtin.controller.scan_forward keyboard 0x0 75 - -;cdplay, Built-In, Controller: Scan Reverse -cdplay.input.builtin.controller.scan_reverse keyboard 0x0 78 - -;cdplay, Built-In, Controller: Stop -cdplay.input.builtin.controller.stop keyboard 0x0 40 - -;Enable scanlines with specified opacity. -cdplay.scanlines 0 - -;Enable specified OpenGL shader. -cdplay.shader none - -;Force interlaced video to be treated as progressive. -cdplay.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -cdplay.shader.goat.hdiv 0.50 - -;Mask pattern. -cdplay.shader.goat.pat goatron - -;Enable scanlines effect. -cdplay.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -cdplay.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -cdplay.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -cdplay.special none - -;Stretch to fill screen. -cdplay.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -cdplay.tblur 0 - -;Accumulate color data rather than discarding it. -cdplay.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -cdplay.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -cdplay.videoip 0 - -;Enable simple waveform visualization. -cdplay.visualization 1 - -;Full-screen horizontal resolution. -cdplay.xres 0 - -;Scaling factor for the X axis in windowed mode. -cdplay.xscale 5.000000 - -;Scaling factor for the X axis in fullscreen mode. -cdplay.xscalefs 1.000000 - -;Full-screen vertical resolution. -cdplay.yres 0 - -;Scaling factor for the Y axis in windowed mode. -cdplay.yscale 5.000000 - -;Scaling factor for the Y axis in fullscreen mode. -cdplay.yscalefs 1.000000 - -;Enable cheats. -cheats 1 - -;Save state 0 select -command.0 keyboard 0x0 39 - -;Save state 1 select -command.1 keyboard 0x0 30 - -;Save state 2 select -command.2 keyboard 0x0 31 - -;Save state 3 select -command.3 keyboard 0x0 32 - -;Save state 4 select -command.4 keyboard 0x0 33 - -;Save state 5 select -command.5 keyboard 0x0 34 - -;Save state 6 select -command.6 keyboard 0x0 35 - -;Save state 7 select -command.7 keyboard 0x0 36 - -;Save state 8 select -command.8 keyboard 0x0 37 - -;Save state 9 select -command.9 keyboard 0x0 38 - -;Activate barcode(for Famicom) -command.activate_barcode keyboard 0x0 65 - -;Advance frame -command.advance_frame keyboard 0x0 4+alt - -;Select virtual device on virtual input port 1 -command.device_select1 keyboard 0x0 30+ctrl+shift - -;Select virtual device on virtual input port 10 -command.device_select10 keyboard 0x0 39+ctrl+shift - -;Select virtual device on virtual input port 11 -command.device_select11 keyboard 0x0 89+ctrl+shift - -;Select virtual device on virtual input port 12 -command.device_select12 keyboard 0x0 90+ctrl+shift - -;Select virtual device on virtual input port 13 -command.device_select13 keyboard 0x0 91+ctrl+shift - -;Select virtual device on virtual input port 2 -command.device_select2 keyboard 0x0 31+ctrl+shift - -;Select virtual device on virtual input port 3 -command.device_select3 keyboard 0x0 32+ctrl+shift - -;Select virtual device on virtual input port 4 -command.device_select4 keyboard 0x0 33+ctrl+shift - -;Select virtual device on virtual input port 5 -command.device_select5 keyboard 0x0 34+ctrl+shift - -;Select virtual device on virtual input port 6 -command.device_select6 keyboard 0x0 35+ctrl+shift - -;Select virtual device on virtual input port 7 -command.device_select7 keyboard 0x0 36+ctrl+shift - -;Select virtual device on virtual input port 8 -command.device_select8 keyboard 0x0 37+ctrl+shift - -;Select virtual device on virtual input port 9 -command.device_select9 keyboard 0x0 38+ctrl+shift - -;Exit -command.exit joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 button_7 - -;Fast-forward -command.fast_forward joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 abs_5- - -;Configure buttons on virtual port 1 -command.input_config1 keyboard 0x0 30+alt+shift - -;Configure buttons on virtual port 10 -command.input_config10 keyboard 0x0 39+alt+shift - -;Configure buttons on virtual port 11 -command.input_config11 keyboard 0x0 89+alt+shift - -;Configure buttons on virtual port 12 -command.input_config12 keyboard 0x0 90+alt+shift - -;Configure buttons on virtual port 13 -command.input_config13 keyboard 0x0 91+alt+shift - -;Configure buttons on virtual port 2 -command.input_config2 keyboard 0x0 31+alt+shift - -;Configure buttons on virtual port 3 -command.input_config3 keyboard 0x0 32+alt+shift - -;Configure buttons on virtual port 4 -command.input_config4 keyboard 0x0 33+alt+shift - -;Configure buttons on virtual port 5 -command.input_config5 keyboard 0x0 34+alt+shift - -;Configure buttons on virtual port 6 -command.input_config6 keyboard 0x0 35+alt+shift - -;Configure buttons on virtual port 7 -command.input_config7 keyboard 0x0 36+alt+shift - -;Configure buttons on virtual port 8 -command.input_config8 keyboard 0x0 37+alt+shift - -;Configure buttons on virtual port 9 -command.input_config9 keyboard 0x0 38+alt+shift - -;Detect analog buttons on physical joysticks/gamepads(for use with the input configuration process). -command.input_config_abd keyboard 0x0 60 - -;Configure command key -command.input_configc keyboard 0x0 59 - -;Configure command key, for all-pressed-to-trigger mode -command.input_configc_am keyboard 0x0 59+shift - -;Insert coin -command.insert_coin keyboard 0x0 65 - -;Insert/Eject disk/disc -command.insert_eject_disk keyboard 0x0 65 - -;Load movie -command.load_movie keyboard 0x0 64+shift - -;Load state -command.load_state joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 button_4 - -;Movie 0 select -command.m0 keyboard 0x0 39+shift - -;Movie 1 select -command.m1 keyboard 0x0 30+shift - -;Movie 2 select -command.m2 keyboard 0x0 31+shift - -;Movie 3 select -command.m3 keyboard 0x0 32+shift - -;Movie 4 select -command.m4 keyboard 0x0 33+shift - -;Movie 5 select -command.m5 keyboard 0x0 34+shift - -;Movie 6 select -command.m6 keyboard 0x0 35+shift - -;Movie 7 select -command.m7 keyboard 0x0 36+shift - -;Movie 8 select -command.m8 keyboard 0x0 37+shift - -;Movie 9 select -command.m9 keyboard 0x0 38+shift - -;Pause/Unpause -command.pause keyboard 0x0 72 - -;Power toggle -command.power keyboard 0x0 68 - -;Reinitialize physical joysticks/gamepads. -command.reinit_joysticks keyboard 0x0 60+shift - -;Reset -command.reset keyboard 0x0 67 - -;Rotate screen -command.rotate_screen keyboard 0x0 18+alt - -;Return to normal mode after advancing frames -command.run_normal keyboard 0x0 21+alt - -;Save movie -command.save_movie keyboard 0x0 62+shift - -;Save state -command.save_state joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 button_5 - -;Select disk/disc -command.select_disk keyboard 0x0 63 - -;Select drive -command.select_drive keyboard 0x0 63+shift - -;Slow-forward -command.slow_forward keyboard 0x0 49 - -;Rewind -command.state_rewind joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 abs_2- - -;Decrease selected save state slot by 1 -command.state_slot_dec keyboard 0x0 45 - -;Increase selected save state slot by 1 -command.state_slot_inc keyboard 0x0 46 - -;Take scaled(and filtered) screen snapshot -command.take_scaled_snapshot keyboard 0x0 66+shift - -;Take screen snapshot -command.take_snapshot keyboard 0x0 66 - -;Toggle graphics layer 1 -command.tl1 keyboard 0x0 30+ctrl - -;Toggle graphics layer 2 -command.tl2 keyboard 0x0 31+ctrl - -;Toggle graphics layer 3 -command.tl3 keyboard 0x0 32+ctrl - -;Toggle graphics layer 4 -command.tl4 keyboard 0x0 33+ctrl - -;Toggle graphics layer 5 -command.tl5 keyboard 0x0 34+ctrl - -;Toggle graphics layer 6 -command.tl6 keyboard 0x0 35+ctrl - -;Toggle graphics layer 7 -command.tl7 keyboard 0x0 36+ctrl - -;Toggle graphics layer 8 -command.tl8 keyboard 0x0 37+ctrl - -;Toggle graphics layer 9 -command.tl9 keyboard 0x0 38+ctrl - -;Toggle debugger -command.toggle_debugger keyboard 0x0 7+alt - -;Toggle DIP switch view -command.toggle_dipview keyboard 0x0 63 - -;Toggle frames-per-second display -command.toggle_fps_view joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 button_2 - -;Toggle fullscreen mode -command.toggle_fs keyboard 0x0 40+alt - -;Grab input -command.toggle_grab keyboard 0x0 101+ctrl+shift - -;Toggle help screen -command.toggle_help keyboard 0x0 58 - -;Toggle state rewind functionality -command.toggle_state_rewind keyboard 0x0 22+alt - -;Enable/Disable cheats -command.togglecheatactive keyboard 0x0 23+alt - -;Toggle cheat console -command.togglecheatview keyboard 0x0 6+alt - -;Toggle netplay console -command.togglenetview keyboard 0x0 23 - -;Automatically go into the debugger's step mode after a game is loaded. -debugger.autostepmode 0 - -;Enable (automatic) usage of this module. -demo.enable 1 - -;Force monophonic sound output. -demo.forcemono 0 - -;demo, Port 1, Controller: Rumble Control Strong -demo.input.port1.controller.rcstrong - -;demo, Port 1, Controller: Rumble Control Weak -demo.input.port1.controller.rcweak - -;demo, Port 1, Controller: Stick DOWN -demo.input.port1.controller.stick_down - -;demo, Port 1, Controller: Stick LEFT -demo.input.port1.controller.stick_left - -;demo, Port 1, Controller: Stick RIGHT -demo.input.port1.controller.stick_right - -;demo, Port 1, Controller: Stick UP -demo.input.port1.controller.stick_up - -;demo, Port 1, Controller: Select Test Mode -demo.input.port1.controller.stm - -;demo, Port 1, Controller: Switch Meow -demo.input.port1.controller.swt - -;Default position for switch "Switch Meow". -demo.input.port1.controller.swt.defpos waffles - -;demo, Port 1, Controller: Toggle Interlace Mode -demo.input.port1.controller.toggle_ilace - -;demo, Port 2, Controller: Rumble Control Strong -demo.input.port2.controller.rcstrong - -;demo, Port 2, Controller: Rumble Control Weak -demo.input.port2.controller.rcweak - -;demo, Port 2, Controller: Stick DOWN -demo.input.port2.controller.stick_down - -;demo, Port 2, Controller: Stick LEFT -demo.input.port2.controller.stick_left - -;demo, Port 2, Controller: Stick RIGHT -demo.input.port2.controller.stick_right - -;demo, Port 2, Controller: Stick UP -demo.input.port2.controller.stick_up - -;demo, Port 2, Controller: Select Test Mode -demo.input.port2.controller.stm - -;demo, Port 2, Controller: Switch Meow -demo.input.port2.controller.swt - -;Default position for switch "Switch Meow". -demo.input.port2.controller.swt.defpos waffles - -;demo, Port 2, Controller: Toggle Interlace Mode -demo.input.port2.controller.toggle_ilace - -;Multi-enum test. -demo.multi_enum - -;Sound quality. -demo.resamp_quality 3 - -;Sound output rate tolerance. -demo.resamp_rate_error 0.0000009 - -;Enable scanlines with specified opacity. -demo.scanlines 0 - -;Enable specified OpenGL shader. -demo.shader none - -;Force interlaced video to be treated as progressive. -demo.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -demo.shader.goat.hdiv 0.50 - -;Mask pattern. -demo.shader.goat.pat goatron - -;Enable scanlines effect. -demo.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -demo.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -demo.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -demo.special none - -;Stretch to fill screen. -demo.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -demo.tblur 0 - -;Accumulate color data rather than discarding it. -demo.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -demo.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -demo.videoip 1 - -;Full-screen horizontal resolution. -demo.xres 0 - -;Scaling factor for the X axis in windowed mode. -demo.xscale 2.000000 - -;Scaling factor for the X axis in fullscreen mode. -demo.xscalefs 1.000000 - -;Full-screen vertical resolution. -demo.yres 0 - -;Scaling factor for the Y axis in windowed mode. -demo.yscale 2.000000 - -;Scaling factor for the Y axis in fullscreen mode. -demo.yscalefs 1.000000 - -;Silence sound output when fast-forwarding. -ffnosound 0 - -;Fast-forwarding speed multiplier. -ffspeed 4 - -;Treat the fast-forward button as a toggle. -fftoggle 0 - -;Format string for movie filename. -filesys.fname_movie %f.%M%p.%x - -;Format string for save games filename. -filesys.fname_sav %f.%M%x - -;Format string for save game backups filename. -filesys.fname_savbackup %f.%m%z%p.%x - -;Format string for screen snapshot filenames. -filesys.fname_snap %f-%p.%x - -;Format string for state filename. -filesys.fname_state %f.%M%X - -;Enable old handling of .gz file extensions with respect to data file path construction. -filesys.old_gz_naming 0 - -;Path to directory for cheats. -filesys.path_cheat cheats - -;Path to directory for firmware. -filesys.path_firmware /storage/roms/bios/ - -;Path to directory for movies. -filesys.path_movie mcm - -;Path to directory for custom palettes. -filesys.path_palette palettes - -;Path to directory for per-game configuration override files. -filesys.path_pgconfig pgconfig - -;Path to directory for save games and nonvolatile memory. -filesys.path_sav /storage/roms/@PLATFORM@/ - -;Path to directory for backups of save games and nonvolatile memory. -filesys.path_savbackup b - -;Path to directory for screen snapshots. -filesys.path_snap /media/storage/screenshots/ - -;Path to directory for save states. -filesys.path_state /storage/roms/savestates/@PLATFORM@/ - -;Save state file compression level. -filesys.state_comp_level 6 - -;Enable untrusted file-inclusion path security check. -filesys.untrusted_fip_check 1 - -;Automatically enable FPS display on startup. -fps.autoenable 0 - -;FPS display background color. -fps.bgcolor 0x80000000 - -;FPS display font. -fps.font 5x7 - -;FPS display position. -fps.position upper_left - -;FPS display scale factor. -fps.scale 1 - -;FPS display text color. -fps.textcolor 0xFFFFFFFF - -;Enable (automatic) usage of this module. -gb.enable 1 - -;Force monophonic sound output. -gb.forcemono 0 - -;gb, Built-In, Gamepad: A -gb.input.builtin.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;gb, Built-In, Gamepad: B -gb.input.builtin.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;gb, Built-In, Gamepad: DOWN ↓ -gb.input.builtin.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;gb, Built-In, Gamepad: LEFT ← -gb.input.builtin.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;gb, Built-In, Gamepad: Rapid A -gb.input.builtin.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;gb, Built-In, Gamepad: Rapid B -gb.input.builtin.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;gb, Built-In, Gamepad: RIGHT → -gb.input.builtin.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;gb, Built-In, Gamepad: SELECT -gb.input.builtin.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 || mouse 0x0 button_left || joystick 0x0003045e028e01010008000b00000000 button_6 || mouse 0x0 button_left || joystick 0x0003045e028e01010008000b00000000 button_6 || mouse 0x0 button_left || joystick 0x0003045e028e01010008000b00000000 button_6 || mouse 0x0 button_left || joystick 0x0003045e028e01010008000b00000000 button_6 || mouse 0x0 button_left - -;gb, Built-In, Gamepad: START -gb.input.builtin.gamepad.start mouse 0x0 button_left || joystick 0x0003045e028e01010008000b00000000 button_7 - -;gb, Built-In, Gamepad: UP ↑ -gb.input.builtin.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;gb, Tilt, Tilt: DOWN ↓ -gb.input.tilt.tilt.down - -;gb, Tilt, Tilt: LEFT ← -gb.input.tilt.tilt.left - -;gb, Tilt, Tilt: RIGHT → -gb.input.tilt.tilt.right - -;gb, Tilt, Tilt: UP ↑ -gb.input.tilt.tilt.up - -;Enable scanlines with specified opacity. -gb.scanlines 0 - -;Enable specified OpenGL shader. -gb.shader ipsharper - -;Force interlaced video to be treated as progressive. -gb.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -gb.shader.goat.hdiv 0.50 - -;Mask pattern. -gb.shader.goat.pat goatron - -;Enable scanlines effect. -gb.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -gb.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -gb.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -gb.special none - -;Stretch to fill screen. -gb.stretch aspect - -;Emulated GB type. -gb.system_type dmg - -;Enable video temporal blur(50/50 previous/current frame by default). -gb.tblur 0 - -;Accumulate color data rather than discarding it. -gb.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -gb.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -gb.videoip 0 - -;Full-screen horizontal resolution. -gb.xres 0 - -;Scaling factor for the X axis in windowed mode. -gb.xscale 6.000000 - -;Scaling factor for the X axis in fullscreen mode. -gb.xscalefs 1.000000 - -;Full-screen vertical resolution. -gb.yres 0 - -;Scaling factor for the Y axis in windowed mode. -gb.yscale 6.000000 - -;Scaling factor for the Y axis in fullscreen mode. -gb.yscalefs 1.000000 - -;Path to optional GBA BIOS ROM image. -gba.bios - -;Enable (automatic) usage of this module. -gba.enable 1 - -;Force monophonic sound output. -gba.forcemono 0 - -;gba, Built-In, Gamepad: A -gba.input.builtin.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;gba, Built-In, Gamepad: B -gba.input.builtin.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;gba, Built-In, Gamepad: DOWN ↓ -gba.input.builtin.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;gba, Built-In, Gamepad: LEFT ← -gba.input.builtin.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;gba, Built-In, Gamepad: Rapid A -gba.input.builtin.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;gba, Built-In, Gamepad: Rapid B -gba.input.builtin.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;gba, Built-In, Gamepad: RIGHT → -gba.input.builtin.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;gba, Built-In, Gamepad: SELECT -gba.input.builtin.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;gba, Built-In, Gamepad: SHOULDER L -gba.input.builtin.gamepad.shoulder_l joystick 0x0003045e028e01010008000b00000000 button_4 - -;gba, Built-In, Gamepad: SHOULDER R -gba.input.builtin.gamepad.shoulder_r joystick 0x0003045e028e01010008000b00000000 button_5 - -;gba, Built-In, Gamepad: START -gba.input.builtin.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;gba, Built-In, Gamepad: UP ↑ -gba.input.builtin.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;Enable scanlines with specified opacity. -gba.scanlines 0 - -;Enable specified OpenGL shader. -gba.shader sabr - -;Force interlaced video to be treated as progressive. -gba.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -gba.shader.goat.hdiv 0.50 - -;Mask pattern. -gba.shader.goat.pat goatron - -;Enable scanlines effect. -gba.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -gba.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -gba.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -gba.special none - -;Stretch to fill screen. -gba.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -gba.tblur 0 - -;Accumulate color data rather than discarding it. -gba.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -gba.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -gba.videoip 0 - -;Full-screen horizontal resolution. -gba.xres 0 - -;Scaling factor for the X axis in windowed mode. -gba.xscale 4.000000 - -;Scaling factor for the X axis in fullscreen mode. -gba.xscalefs 1.000000 - -;Full-screen vertical resolution. -gba.yres 0 - -;Scaling factor for the Y axis in windowed mode. -gba.yscale 4.000000 - -;Scaling factor for the Y axis in fullscreen mode. -gba.yscalefs 1.000000 - -;Enable (automatic) usage of this module. -gg.enable 1 - -;Force monophonic sound output. -gg.forcemono 0 - -;gg, Built-In, Gamepad: Button 1 -gg.input.builtin.gamepad.button1 joystick 0x0003045e028e01010008000b00000000 button_0 - -;gg, Built-In, Gamepad: Button 2 -gg.input.builtin.gamepad.button2 joystick 0x0003045e028e01010008000b00000000 button_1 - -;gg, Built-In, Gamepad: DOWN ↓ -gg.input.builtin.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;gg, Built-In, Gamepad: LEFT ← -gg.input.builtin.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;gg, Built-In, Gamepad: Rapid Button 1 -gg.input.builtin.gamepad.rapid_button1 joystick 0x0003045e028e01010008000b00000000 button_2 - -;gg, Built-In, Gamepad: Rapid Button 2 -gg.input.builtin.gamepad.rapid_button2 joystick 0x0003045e028e01010008000b00000000 button_3 - -;gg, Built-In, Gamepad: RIGHT → -gg.input.builtin.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;gg, Built-In, Gamepad: Start -gg.input.builtin.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;gg, Built-In, Gamepad: UP ↑ -gg.input.builtin.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;Enable scanlines with specified opacity. -gg.scanlines 0 - -;Enable specified OpenGL shader. -gg.shader sabr - -;Force interlaced video to be treated as progressive. -gg.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -gg.shader.goat.hdiv 0.50 - -;Mask pattern. -gg.shader.goat.pat goatron - -;Enable scanlines effect. -gg.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -gg.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -gg.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -gg.special none - -;Stretch to fill screen. -gg.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -gg.tblur 0 - -;Accumulate color data rather than discarding it. -gg.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -gg.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -gg.videoip 0 - -;Full-screen horizontal resolution. -gg.xres 0 - -;Scaling factor for the X axis in windowed mode. -gg.xscale 6.000000 - -;Scaling factor for the X axis in fullscreen mode. -gg.xscalefs 1.000000 - -;Full-screen vertical resolution. -gg.yres 0 - -;Scaling factor for the Y axis in windowed mode. -gg.yscale 6.000000 - -;Scaling factor for the Y axis in fullscreen mode. -gg.yscalefs 1.000000 - -;Auto-fire frequency. -input.autofirefreq 3 - -;Dangerous key action delay. -input.ckdelay 2000 - -;Analog axis binary press detection threshold. -input.joystick.axis_threshold 75 - -;Update physical joystick(s) internal state in Mednafen even when Mednafen lacks OS focus. -input.joystick.global_focus 1 - -;Enable (automatic) usage of this module. -lynx.enable 1 - -;Force monophonic sound output. -lynx.forcemono 0 - -;lynx, Built-In, Gamepad: A (outer) -lynx.input.builtin.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;lynx, Built-In, Gamepad: B (inner) -lynx.input.builtin.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;lynx, Built-In, Gamepad: DOWN ↓ -lynx.input.builtin.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;lynx, Built-In, Gamepad: LEFT ← -lynx.input.builtin.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;lynx, Built-In, Gamepad: Option 1 (upper) -lynx.input.builtin.gamepad.option_1 joystick 0x0003045e028e01010008000b00000000 button_4 - -;lynx, Built-In, Gamepad: Option 2 (lower) -lynx.input.builtin.gamepad.option_2 joystick 0x0003045e028e01010008000b00000000 button_5 - -;lynx, Built-In, Gamepad: PAUSE -lynx.input.builtin.gamepad.pause joystick 0x0003045e028e01010008000b00000000 button_7 - -;lynx, Built-In, Gamepad: Rapid A (outer) -lynx.input.builtin.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;lynx, Built-In, Gamepad: Rapid B (inner) -lynx.input.builtin.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;lynx, Built-In, Gamepad: Rapid Option 1 (upper) -lynx.input.builtin.gamepad.rapid_option_1 keyboard 0x0 17 - -;lynx, Built-In, Gamepad: Rapid Option 2 (lower) -lynx.input.builtin.gamepad.rapid_option_2 keyboard 0x0 17 - -;lynx, Built-In, Gamepad: RIGHT → -lynx.input.builtin.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;lynx, Built-In, Gamepad: UP ↑ -lynx.input.builtin.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;Enable sound output lowpass filter. -lynx.lowpass 1 - -;Virtually rotate the D-pad when the screen is rotated. -lynx.rotateinput 1 - -;Enable scanlines with specified opacity. -lynx.scanlines 0 - -;Enable specified OpenGL shader. -lynx.shader sabr - -;Force interlaced video to be treated as progressive. -lynx.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -lynx.shader.goat.hdiv 0.50 - -;Mask pattern. -lynx.shader.goat.pat goatron - -;Enable scanlines effect. -lynx.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -lynx.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -lynx.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -lynx.special none - -;Stretch to fill screen. -lynx.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -lynx.tblur 0 - -;Accumulate color data rather than discarding it. -lynx.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -lynx.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -lynx.videoip 0 - -;Full-screen horizontal resolution. -lynx.xres 0 - -;Scaling factor for the X axis in windowed mode. -lynx.xscale 6.000000 - -;Scaling factor for the X axis in fullscreen mode. -lynx.xscalefs 1.000000 - -;Full-screen vertical resolution. -lynx.yres 0 - -;Scaling factor for the Y axis in windowed mode. -lynx.yscale 6.000000 - -;Scaling factor for the Y axis in fullscreen mode. -lynx.yscalefs 1.000000 - -;Path to the CD BIOS -md.cdbios us_scd1_9210.bin - -;Correct the aspect ratio. -md.correct_aspect 1 - -;Disassembly font size. -md.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -md.debugger.memcharenc shift_jis - -;Enable (automatic) usage of this module. -md.enable 1 - -;Force monophonic sound output. -md.forcemono 0 - -;Automatically select appropriate input devices. -md.input.auto 1 - -;Emulated mouse sensitivity. -md.input.mouse_sensitivity 1.00 - -;Enable multitap(s). -md.input.multitap none - -;Input device for Virtual Port 1 -md.input.port1 gamepad - -;md, Virtual Port 1, 3-Button Gamepad: A -md.input.port1.gamepad.a keyboard 0x0 89 - -;md, Virtual Port 1, 3-Button Gamepad: B -md.input.port1.gamepad.b keyboard 0x0 90 - -;md, Virtual Port 1, 3-Button Gamepad: C -md.input.port1.gamepad.c keyboard 0x0 91 - -;md, Virtual Port 1, 3-Button Gamepad: DOWN ↓ -md.input.port1.gamepad.down keyboard 0x0 22 - -;md, Virtual Port 1, 3-Button Gamepad: LEFT ← -md.input.port1.gamepad.left keyboard 0x0 4 - -;md, Virtual Port 1, 3-Button Gamepad: Rapid A -md.input.port1.gamepad.rapid_a - -;md, Virtual Port 1, 3-Button Gamepad: Rapid B -md.input.port1.gamepad.rapid_b - -;md, Virtual Port 1, 3-Button Gamepad: Rapid C -md.input.port1.gamepad.rapid_c - -;md, Virtual Port 1, 3-Button Gamepad: RIGHT → -md.input.port1.gamepad.right keyboard 0x0 7 - -;md, Virtual Port 1, 3-Button Gamepad: Start -md.input.port1.gamepad.start keyboard 0x0 40 - -;md, Virtual Port 1, 3-Button Gamepad: UP ↑ -md.input.port1.gamepad.up keyboard 0x0 26 - -;md, Virtual Port 1, 2-Button Gamepad: A -md.input.port1.gamepad2.a - -;md, Virtual Port 1, 2-Button Gamepad: B -md.input.port1.gamepad2.b - -;md, Virtual Port 1, 2-Button Gamepad: DOWN ↓ -md.input.port1.gamepad2.down - -;md, Virtual Port 1, 2-Button Gamepad: LEFT ← -md.input.port1.gamepad2.left - -;md, Virtual Port 1, 2-Button Gamepad: Rapid A -md.input.port1.gamepad2.rapid_a - -;md, Virtual Port 1, 2-Button Gamepad: Rapid B -md.input.port1.gamepad2.rapid_b - -;md, Virtual Port 1, 2-Button Gamepad: RIGHT → -md.input.port1.gamepad2.right - -;md, Virtual Port 1, 2-Button Gamepad: Start -md.input.port1.gamepad2.start - -;md, Virtual Port 1, 2-Button Gamepad: UP ↑ -md.input.port1.gamepad2.up - -;md, Virtual Port 1, 6-Button Gamepad: A -md.input.port1.gamepad6.a keyboard 0x0 89 - -;md, Virtual Port 1, 6-Button Gamepad: B -md.input.port1.gamepad6.b keyboard 0x0 90 - -;md, Virtual Port 1, 6-Button Gamepad: C -md.input.port1.gamepad6.c keyboard 0x0 91 - -;md, Virtual Port 1, 6-Button Gamepad: DOWN ↓ -md.input.port1.gamepad6.down keyboard 0x0 22 - -;md, Virtual Port 1, 6-Button Gamepad: LEFT ← -md.input.port1.gamepad6.left keyboard 0x0 4 - -;md, Virtual Port 1, 6-Button Gamepad: Mode -md.input.port1.gamepad6.mode keyboard 0x0 16 - -;md, Virtual Port 1, 6-Button Gamepad: Rapid A -md.input.port1.gamepad6.rapid_a - -;md, Virtual Port 1, 6-Button Gamepad: Rapid B -md.input.port1.gamepad6.rapid_b - -;md, Virtual Port 1, 6-Button Gamepad: Rapid C -md.input.port1.gamepad6.rapid_c - -;md, Virtual Port 1, 6-Button Gamepad: Rapid X -md.input.port1.gamepad6.rapid_x - -;md, Virtual Port 1, 6-Button Gamepad: Rapid Y -md.input.port1.gamepad6.rapid_y - -;md, Virtual Port 1, 6-Button Gamepad: Rapid Z -md.input.port1.gamepad6.rapid_z - -;md, Virtual Port 1, 6-Button Gamepad: RIGHT → -md.input.port1.gamepad6.right keyboard 0x0 7 - -;md, Virtual Port 1, 6-Button Gamepad: Start -md.input.port1.gamepad6.start keyboard 0x0 40 - -;md, Virtual Port 1, 6-Button Gamepad: UP ↑ -md.input.port1.gamepad6.up keyboard 0x0 26 - -;md, Virtual Port 1, 6-Button Gamepad: X -md.input.port1.gamepad6.x keyboard 0x0 92 - -;md, Virtual Port 1, 6-Button Gamepad: Y -md.input.port1.gamepad6.y keyboard 0x0 93 - -;md, Virtual Port 1, 6-Button Gamepad: Z -md.input.port1.gamepad6.z keyboard 0x0 94 - -;md, Virtual Port 1, Sega Mega Mouse: Left Button -md.input.port1.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 1, Sega Mega Mouse: Middle Button -md.input.port1.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 1, Sega Mega Mouse: Motion Down -md.input.port1.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 1, Sega Mega Mouse: Motion Left -md.input.port1.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 1, Sega Mega Mouse: Motion Right -md.input.port1.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 1, Sega Mega Mouse: Motion Up -md.input.port1.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 1, Sega Mega Mouse: Right Button -md.input.port1.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 1, Sega Mega Mouse: Start Button -md.input.port1.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 2 -md.input.port2 gamepad - -;md, Virtual Port 2, 3-Button Gamepad: A -md.input.port2.gamepad.a - -;md, Virtual Port 2, 3-Button Gamepad: B -md.input.port2.gamepad.b - -;md, Virtual Port 2, 3-Button Gamepad: C -md.input.port2.gamepad.c - -;md, Virtual Port 2, 3-Button Gamepad: DOWN ↓ -md.input.port2.gamepad.down - -;md, Virtual Port 2, 3-Button Gamepad: LEFT ← -md.input.port2.gamepad.left - -;md, Virtual Port 2, 3-Button Gamepad: Rapid A -md.input.port2.gamepad.rapid_a - -;md, Virtual Port 2, 3-Button Gamepad: Rapid B -md.input.port2.gamepad.rapid_b - -;md, Virtual Port 2, 3-Button Gamepad: Rapid C -md.input.port2.gamepad.rapid_c - -;md, Virtual Port 2, 3-Button Gamepad: RIGHT → -md.input.port2.gamepad.right - -;md, Virtual Port 2, 3-Button Gamepad: Start -md.input.port2.gamepad.start - -;md, Virtual Port 2, 3-Button Gamepad: UP ↑ -md.input.port2.gamepad.up - -;md, Virtual Port 2, 2-Button Gamepad: A -md.input.port2.gamepad2.a - -;md, Virtual Port 2, 2-Button Gamepad: B -md.input.port2.gamepad2.b - -;md, Virtual Port 2, 2-Button Gamepad: DOWN ↓ -md.input.port2.gamepad2.down - -;md, Virtual Port 2, 2-Button Gamepad: LEFT ← -md.input.port2.gamepad2.left - -;md, Virtual Port 2, 2-Button Gamepad: Rapid A -md.input.port2.gamepad2.rapid_a - -;md, Virtual Port 2, 2-Button Gamepad: Rapid B -md.input.port2.gamepad2.rapid_b - -;md, Virtual Port 2, 2-Button Gamepad: RIGHT → -md.input.port2.gamepad2.right - -;md, Virtual Port 2, 2-Button Gamepad: Start -md.input.port2.gamepad2.start - -;md, Virtual Port 2, 2-Button Gamepad: UP ↑ -md.input.port2.gamepad2.up - -;md, Virtual Port 2, 6-Button Gamepad: A -md.input.port2.gamepad6.a - -;md, Virtual Port 2, 6-Button Gamepad: B -md.input.port2.gamepad6.b - -;md, Virtual Port 2, 6-Button Gamepad: C -md.input.port2.gamepad6.c - -;md, Virtual Port 2, 6-Button Gamepad: DOWN ↓ -md.input.port2.gamepad6.down - -;md, Virtual Port 2, 6-Button Gamepad: LEFT ← -md.input.port2.gamepad6.left - -;md, Virtual Port 2, 6-Button Gamepad: Mode -md.input.port2.gamepad6.mode - -;md, Virtual Port 2, 6-Button Gamepad: Rapid A -md.input.port2.gamepad6.rapid_a - -;md, Virtual Port 2, 6-Button Gamepad: Rapid B -md.input.port2.gamepad6.rapid_b - -;md, Virtual Port 2, 6-Button Gamepad: Rapid C -md.input.port2.gamepad6.rapid_c - -;md, Virtual Port 2, 6-Button Gamepad: Rapid X -md.input.port2.gamepad6.rapid_x - -;md, Virtual Port 2, 6-Button Gamepad: Rapid Y -md.input.port2.gamepad6.rapid_y - -;md, Virtual Port 2, 6-Button Gamepad: Rapid Z -md.input.port2.gamepad6.rapid_z - -;md, Virtual Port 2, 6-Button Gamepad: RIGHT → -md.input.port2.gamepad6.right - -;md, Virtual Port 2, 6-Button Gamepad: Start -md.input.port2.gamepad6.start - -;md, Virtual Port 2, 6-Button Gamepad: UP ↑ -md.input.port2.gamepad6.up - -;md, Virtual Port 2, 6-Button Gamepad: X -md.input.port2.gamepad6.x - -;md, Virtual Port 2, 6-Button Gamepad: Y -md.input.port2.gamepad6.y - -;md, Virtual Port 2, 6-Button Gamepad: Z -md.input.port2.gamepad6.z - -;md, Virtual Port 2, Sega Mega Mouse: Left Button -md.input.port2.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 2, Sega Mega Mouse: Middle Button -md.input.port2.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 2, Sega Mega Mouse: Motion Down -md.input.port2.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 2, Sega Mega Mouse: Motion Left -md.input.port2.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 2, Sega Mega Mouse: Motion Right -md.input.port2.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 2, Sega Mega Mouse: Motion Up -md.input.port2.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 2, Sega Mega Mouse: Right Button -md.input.port2.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 2, Sega Mega Mouse: Start Button -md.input.port2.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 3 -md.input.port3 gamepad - -;md, Virtual Port 3, 3-Button Gamepad: A -md.input.port3.gamepad.a - -;md, Virtual Port 3, 3-Button Gamepad: B -md.input.port3.gamepad.b - -;md, Virtual Port 3, 3-Button Gamepad: C -md.input.port3.gamepad.c - -;md, Virtual Port 3, 3-Button Gamepad: DOWN ↓ -md.input.port3.gamepad.down - -;md, Virtual Port 3, 3-Button Gamepad: LEFT ← -md.input.port3.gamepad.left - -;md, Virtual Port 3, 3-Button Gamepad: Rapid A -md.input.port3.gamepad.rapid_a - -;md, Virtual Port 3, 3-Button Gamepad: Rapid B -md.input.port3.gamepad.rapid_b - -;md, Virtual Port 3, 3-Button Gamepad: Rapid C -md.input.port3.gamepad.rapid_c - -;md, Virtual Port 3, 3-Button Gamepad: RIGHT → -md.input.port3.gamepad.right - -;md, Virtual Port 3, 3-Button Gamepad: Start -md.input.port3.gamepad.start - -;md, Virtual Port 3, 3-Button Gamepad: UP ↑ -md.input.port3.gamepad.up - -;md, Virtual Port 3, 2-Button Gamepad: A -md.input.port3.gamepad2.a - -;md, Virtual Port 3, 2-Button Gamepad: B -md.input.port3.gamepad2.b - -;md, Virtual Port 3, 2-Button Gamepad: DOWN ↓ -md.input.port3.gamepad2.down - -;md, Virtual Port 3, 2-Button Gamepad: LEFT ← -md.input.port3.gamepad2.left - -;md, Virtual Port 3, 2-Button Gamepad: Rapid A -md.input.port3.gamepad2.rapid_a - -;md, Virtual Port 3, 2-Button Gamepad: Rapid B -md.input.port3.gamepad2.rapid_b - -;md, Virtual Port 3, 2-Button Gamepad: RIGHT → -md.input.port3.gamepad2.right - -;md, Virtual Port 3, 2-Button Gamepad: Start -md.input.port3.gamepad2.start - -;md, Virtual Port 3, 2-Button Gamepad: UP ↑ -md.input.port3.gamepad2.up - -;md, Virtual Port 3, 6-Button Gamepad: A -md.input.port3.gamepad6.a - -;md, Virtual Port 3, 6-Button Gamepad: B -md.input.port3.gamepad6.b - -;md, Virtual Port 3, 6-Button Gamepad: C -md.input.port3.gamepad6.c - -;md, Virtual Port 3, 6-Button Gamepad: DOWN ↓ -md.input.port3.gamepad6.down - -;md, Virtual Port 3, 6-Button Gamepad: LEFT ← -md.input.port3.gamepad6.left - -;md, Virtual Port 3, 6-Button Gamepad: Mode -md.input.port3.gamepad6.mode - -;md, Virtual Port 3, 6-Button Gamepad: Rapid A -md.input.port3.gamepad6.rapid_a - -;md, Virtual Port 3, 6-Button Gamepad: Rapid B -md.input.port3.gamepad6.rapid_b - -;md, Virtual Port 3, 6-Button Gamepad: Rapid C -md.input.port3.gamepad6.rapid_c - -;md, Virtual Port 3, 6-Button Gamepad: Rapid X -md.input.port3.gamepad6.rapid_x - -;md, Virtual Port 3, 6-Button Gamepad: Rapid Y -md.input.port3.gamepad6.rapid_y - -;md, Virtual Port 3, 6-Button Gamepad: Rapid Z -md.input.port3.gamepad6.rapid_z - -;md, Virtual Port 3, 6-Button Gamepad: RIGHT → -md.input.port3.gamepad6.right - -;md, Virtual Port 3, 6-Button Gamepad: Start -md.input.port3.gamepad6.start - -;md, Virtual Port 3, 6-Button Gamepad: UP ↑ -md.input.port3.gamepad6.up - -;md, Virtual Port 3, 6-Button Gamepad: X -md.input.port3.gamepad6.x - -;md, Virtual Port 3, 6-Button Gamepad: Y -md.input.port3.gamepad6.y - -;md, Virtual Port 3, 6-Button Gamepad: Z -md.input.port3.gamepad6.z - -;md, Virtual Port 3, Sega Mega Mouse: Left Button -md.input.port3.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 3, Sega Mega Mouse: Middle Button -md.input.port3.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 3, Sega Mega Mouse: Motion Down -md.input.port3.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 3, Sega Mega Mouse: Motion Left -md.input.port3.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 3, Sega Mega Mouse: Motion Right -md.input.port3.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 3, Sega Mega Mouse: Motion Up -md.input.port3.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 3, Sega Mega Mouse: Right Button -md.input.port3.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 3, Sega Mega Mouse: Start Button -md.input.port3.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 4 -md.input.port4 gamepad - -;md, Virtual Port 4, 3-Button Gamepad: A -md.input.port4.gamepad.a - -;md, Virtual Port 4, 3-Button Gamepad: B -md.input.port4.gamepad.b - -;md, Virtual Port 4, 3-Button Gamepad: C -md.input.port4.gamepad.c - -;md, Virtual Port 4, 3-Button Gamepad: DOWN ↓ -md.input.port4.gamepad.down - -;md, Virtual Port 4, 3-Button Gamepad: LEFT ← -md.input.port4.gamepad.left - -;md, Virtual Port 4, 3-Button Gamepad: Rapid A -md.input.port4.gamepad.rapid_a - -;md, Virtual Port 4, 3-Button Gamepad: Rapid B -md.input.port4.gamepad.rapid_b - -;md, Virtual Port 4, 3-Button Gamepad: Rapid C -md.input.port4.gamepad.rapid_c - -;md, Virtual Port 4, 3-Button Gamepad: RIGHT → -md.input.port4.gamepad.right - -;md, Virtual Port 4, 3-Button Gamepad: Start -md.input.port4.gamepad.start - -;md, Virtual Port 4, 3-Button Gamepad: UP ↑ -md.input.port4.gamepad.up - -;md, Virtual Port 4, 2-Button Gamepad: A -md.input.port4.gamepad2.a - -;md, Virtual Port 4, 2-Button Gamepad: B -md.input.port4.gamepad2.b - -;md, Virtual Port 4, 2-Button Gamepad: DOWN ↓ -md.input.port4.gamepad2.down - -;md, Virtual Port 4, 2-Button Gamepad: LEFT ← -md.input.port4.gamepad2.left - -;md, Virtual Port 4, 2-Button Gamepad: Rapid A -md.input.port4.gamepad2.rapid_a - -;md, Virtual Port 4, 2-Button Gamepad: Rapid B -md.input.port4.gamepad2.rapid_b - -;md, Virtual Port 4, 2-Button Gamepad: RIGHT → -md.input.port4.gamepad2.right - -;md, Virtual Port 4, 2-Button Gamepad: Start -md.input.port4.gamepad2.start - -;md, Virtual Port 4, 2-Button Gamepad: UP ↑ -md.input.port4.gamepad2.up - -;md, Virtual Port 4, 6-Button Gamepad: A -md.input.port4.gamepad6.a - -;md, Virtual Port 4, 6-Button Gamepad: B -md.input.port4.gamepad6.b - -;md, Virtual Port 4, 6-Button Gamepad: C -md.input.port4.gamepad6.c - -;md, Virtual Port 4, 6-Button Gamepad: DOWN ↓ -md.input.port4.gamepad6.down - -;md, Virtual Port 4, 6-Button Gamepad: LEFT ← -md.input.port4.gamepad6.left - -;md, Virtual Port 4, 6-Button Gamepad: Mode -md.input.port4.gamepad6.mode - -;md, Virtual Port 4, 6-Button Gamepad: Rapid A -md.input.port4.gamepad6.rapid_a - -;md, Virtual Port 4, 6-Button Gamepad: Rapid B -md.input.port4.gamepad6.rapid_b - -;md, Virtual Port 4, 6-Button Gamepad: Rapid C -md.input.port4.gamepad6.rapid_c - -;md, Virtual Port 4, 6-Button Gamepad: Rapid X -md.input.port4.gamepad6.rapid_x - -;md, Virtual Port 4, 6-Button Gamepad: Rapid Y -md.input.port4.gamepad6.rapid_y - -;md, Virtual Port 4, 6-Button Gamepad: Rapid Z -md.input.port4.gamepad6.rapid_z - -;md, Virtual Port 4, 6-Button Gamepad: RIGHT → -md.input.port4.gamepad6.right - -;md, Virtual Port 4, 6-Button Gamepad: Start -md.input.port4.gamepad6.start - -;md, Virtual Port 4, 6-Button Gamepad: UP ↑ -md.input.port4.gamepad6.up - -;md, Virtual Port 4, 6-Button Gamepad: X -md.input.port4.gamepad6.x - -;md, Virtual Port 4, 6-Button Gamepad: Y -md.input.port4.gamepad6.y - -;md, Virtual Port 4, 6-Button Gamepad: Z -md.input.port4.gamepad6.z - -;md, Virtual Port 4, Sega Mega Mouse: Left Button -md.input.port4.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 4, Sega Mega Mouse: Middle Button -md.input.port4.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 4, Sega Mega Mouse: Motion Down -md.input.port4.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 4, Sega Mega Mouse: Motion Left -md.input.port4.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 4, Sega Mega Mouse: Motion Right -md.input.port4.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 4, Sega Mega Mouse: Motion Up -md.input.port4.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 4, Sega Mega Mouse: Right Button -md.input.port4.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 4, Sega Mega Mouse: Start Button -md.input.port4.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 5 -md.input.port5 gamepad - -;md, Virtual Port 5, 3-Button Gamepad: A -md.input.port5.gamepad.a - -;md, Virtual Port 5, 3-Button Gamepad: B -md.input.port5.gamepad.b - -;md, Virtual Port 5, 3-Button Gamepad: C -md.input.port5.gamepad.c - -;md, Virtual Port 5, 3-Button Gamepad: DOWN ↓ -md.input.port5.gamepad.down - -;md, Virtual Port 5, 3-Button Gamepad: LEFT ← -md.input.port5.gamepad.left - -;md, Virtual Port 5, 3-Button Gamepad: Rapid A -md.input.port5.gamepad.rapid_a - -;md, Virtual Port 5, 3-Button Gamepad: Rapid B -md.input.port5.gamepad.rapid_b - -;md, Virtual Port 5, 3-Button Gamepad: Rapid C -md.input.port5.gamepad.rapid_c - -;md, Virtual Port 5, 3-Button Gamepad: RIGHT → -md.input.port5.gamepad.right - -;md, Virtual Port 5, 3-Button Gamepad: Start -md.input.port5.gamepad.start - -;md, Virtual Port 5, 3-Button Gamepad: UP ↑ -md.input.port5.gamepad.up - -;md, Virtual Port 5, 2-Button Gamepad: A -md.input.port5.gamepad2.a - -;md, Virtual Port 5, 2-Button Gamepad: B -md.input.port5.gamepad2.b - -;md, Virtual Port 5, 2-Button Gamepad: DOWN ↓ -md.input.port5.gamepad2.down - -;md, Virtual Port 5, 2-Button Gamepad: LEFT ← -md.input.port5.gamepad2.left - -;md, Virtual Port 5, 2-Button Gamepad: Rapid A -md.input.port5.gamepad2.rapid_a - -;md, Virtual Port 5, 2-Button Gamepad: Rapid B -md.input.port5.gamepad2.rapid_b - -;md, Virtual Port 5, 2-Button Gamepad: RIGHT → -md.input.port5.gamepad2.right - -;md, Virtual Port 5, 2-Button Gamepad: Start -md.input.port5.gamepad2.start - -;md, Virtual Port 5, 2-Button Gamepad: UP ↑ -md.input.port5.gamepad2.up - -;md, Virtual Port 5, 6-Button Gamepad: A -md.input.port5.gamepad6.a - -;md, Virtual Port 5, 6-Button Gamepad: B -md.input.port5.gamepad6.b - -;md, Virtual Port 5, 6-Button Gamepad: C -md.input.port5.gamepad6.c - -;md, Virtual Port 5, 6-Button Gamepad: DOWN ↓ -md.input.port5.gamepad6.down - -;md, Virtual Port 5, 6-Button Gamepad: LEFT ← -md.input.port5.gamepad6.left - -;md, Virtual Port 5, 6-Button Gamepad: Mode -md.input.port5.gamepad6.mode - -;md, Virtual Port 5, 6-Button Gamepad: Rapid A -md.input.port5.gamepad6.rapid_a - -;md, Virtual Port 5, 6-Button Gamepad: Rapid B -md.input.port5.gamepad6.rapid_b - -;md, Virtual Port 5, 6-Button Gamepad: Rapid C -md.input.port5.gamepad6.rapid_c - -;md, Virtual Port 5, 6-Button Gamepad: Rapid X -md.input.port5.gamepad6.rapid_x - -;md, Virtual Port 5, 6-Button Gamepad: Rapid Y -md.input.port5.gamepad6.rapid_y - -;md, Virtual Port 5, 6-Button Gamepad: Rapid Z -md.input.port5.gamepad6.rapid_z - -;md, Virtual Port 5, 6-Button Gamepad: RIGHT → -md.input.port5.gamepad6.right - -;md, Virtual Port 5, 6-Button Gamepad: Start -md.input.port5.gamepad6.start - -;md, Virtual Port 5, 6-Button Gamepad: UP ↑ -md.input.port5.gamepad6.up - -;md, Virtual Port 5, 6-Button Gamepad: X -md.input.port5.gamepad6.x - -;md, Virtual Port 5, 6-Button Gamepad: Y -md.input.port5.gamepad6.y - -;md, Virtual Port 5, 6-Button Gamepad: Z -md.input.port5.gamepad6.z - -;md, Virtual Port 5, Sega Mega Mouse: Left Button -md.input.port5.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 5, Sega Mega Mouse: Middle Button -md.input.port5.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 5, Sega Mega Mouse: Motion Down -md.input.port5.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 5, Sega Mega Mouse: Motion Left -md.input.port5.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 5, Sega Mega Mouse: Motion Right -md.input.port5.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 5, Sega Mega Mouse: Motion Up -md.input.port5.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 5, Sega Mega Mouse: Right Button -md.input.port5.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 5, Sega Mega Mouse: Start Button -md.input.port5.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 6 -md.input.port6 gamepad - -;md, Virtual Port 6, 3-Button Gamepad: A -md.input.port6.gamepad.a - -;md, Virtual Port 6, 3-Button Gamepad: B -md.input.port6.gamepad.b - -;md, Virtual Port 6, 3-Button Gamepad: C -md.input.port6.gamepad.c - -;md, Virtual Port 6, 3-Button Gamepad: DOWN ↓ -md.input.port6.gamepad.down - -;md, Virtual Port 6, 3-Button Gamepad: LEFT ← -md.input.port6.gamepad.left - -;md, Virtual Port 6, 3-Button Gamepad: Rapid A -md.input.port6.gamepad.rapid_a - -;md, Virtual Port 6, 3-Button Gamepad: Rapid B -md.input.port6.gamepad.rapid_b - -;md, Virtual Port 6, 3-Button Gamepad: Rapid C -md.input.port6.gamepad.rapid_c - -;md, Virtual Port 6, 3-Button Gamepad: RIGHT → -md.input.port6.gamepad.right - -;md, Virtual Port 6, 3-Button Gamepad: Start -md.input.port6.gamepad.start - -;md, Virtual Port 6, 3-Button Gamepad: UP ↑ -md.input.port6.gamepad.up - -;md, Virtual Port 6, 2-Button Gamepad: A -md.input.port6.gamepad2.a - -;md, Virtual Port 6, 2-Button Gamepad: B -md.input.port6.gamepad2.b - -;md, Virtual Port 6, 2-Button Gamepad: DOWN ↓ -md.input.port6.gamepad2.down - -;md, Virtual Port 6, 2-Button Gamepad: LEFT ← -md.input.port6.gamepad2.left - -;md, Virtual Port 6, 2-Button Gamepad: Rapid A -md.input.port6.gamepad2.rapid_a - -;md, Virtual Port 6, 2-Button Gamepad: Rapid B -md.input.port6.gamepad2.rapid_b - -;md, Virtual Port 6, 2-Button Gamepad: RIGHT → -md.input.port6.gamepad2.right - -;md, Virtual Port 6, 2-Button Gamepad: Start -md.input.port6.gamepad2.start - -;md, Virtual Port 6, 2-Button Gamepad: UP ↑ -md.input.port6.gamepad2.up - -;md, Virtual Port 6, 6-Button Gamepad: A -md.input.port6.gamepad6.a - -;md, Virtual Port 6, 6-Button Gamepad: B -md.input.port6.gamepad6.b - -;md, Virtual Port 6, 6-Button Gamepad: C -md.input.port6.gamepad6.c - -;md, Virtual Port 6, 6-Button Gamepad: DOWN ↓ -md.input.port6.gamepad6.down - -;md, Virtual Port 6, 6-Button Gamepad: LEFT ← -md.input.port6.gamepad6.left - -;md, Virtual Port 6, 6-Button Gamepad: Mode -md.input.port6.gamepad6.mode - -;md, Virtual Port 6, 6-Button Gamepad: Rapid A -md.input.port6.gamepad6.rapid_a - -;md, Virtual Port 6, 6-Button Gamepad: Rapid B -md.input.port6.gamepad6.rapid_b - -;md, Virtual Port 6, 6-Button Gamepad: Rapid C -md.input.port6.gamepad6.rapid_c - -;md, Virtual Port 6, 6-Button Gamepad: Rapid X -md.input.port6.gamepad6.rapid_x - -;md, Virtual Port 6, 6-Button Gamepad: Rapid Y -md.input.port6.gamepad6.rapid_y - -;md, Virtual Port 6, 6-Button Gamepad: Rapid Z -md.input.port6.gamepad6.rapid_z - -;md, Virtual Port 6, 6-Button Gamepad: RIGHT → -md.input.port6.gamepad6.right - -;md, Virtual Port 6, 6-Button Gamepad: Start -md.input.port6.gamepad6.start - -;md, Virtual Port 6, 6-Button Gamepad: UP ↑ -md.input.port6.gamepad6.up - -;md, Virtual Port 6, 6-Button Gamepad: X -md.input.port6.gamepad6.x - -;md, Virtual Port 6, 6-Button Gamepad: Y -md.input.port6.gamepad6.y - -;md, Virtual Port 6, 6-Button Gamepad: Z -md.input.port6.gamepad6.z - -;md, Virtual Port 6, Sega Mega Mouse: Left Button -md.input.port6.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 6, Sega Mega Mouse: Middle Button -md.input.port6.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 6, Sega Mega Mouse: Motion Down -md.input.port6.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 6, Sega Mega Mouse: Motion Left -md.input.port6.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 6, Sega Mega Mouse: Motion Right -md.input.port6.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 6, Sega Mega Mouse: Motion Up -md.input.port6.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 6, Sega Mega Mouse: Right Button -md.input.port6.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 6, Sega Mega Mouse: Start Button -md.input.port6.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 7 -md.input.port7 gamepad - -;md, Virtual Port 7, 3-Button Gamepad: A -md.input.port7.gamepad.a - -;md, Virtual Port 7, 3-Button Gamepad: B -md.input.port7.gamepad.b - -;md, Virtual Port 7, 3-Button Gamepad: C -md.input.port7.gamepad.c - -;md, Virtual Port 7, 3-Button Gamepad: DOWN ↓ -md.input.port7.gamepad.down - -;md, Virtual Port 7, 3-Button Gamepad: LEFT ← -md.input.port7.gamepad.left - -;md, Virtual Port 7, 3-Button Gamepad: Rapid A -md.input.port7.gamepad.rapid_a - -;md, Virtual Port 7, 3-Button Gamepad: Rapid B -md.input.port7.gamepad.rapid_b - -;md, Virtual Port 7, 3-Button Gamepad: Rapid C -md.input.port7.gamepad.rapid_c - -;md, Virtual Port 7, 3-Button Gamepad: RIGHT → -md.input.port7.gamepad.right - -;md, Virtual Port 7, 3-Button Gamepad: Start -md.input.port7.gamepad.start - -;md, Virtual Port 7, 3-Button Gamepad: UP ↑ -md.input.port7.gamepad.up - -;md, Virtual Port 7, 2-Button Gamepad: A -md.input.port7.gamepad2.a - -;md, Virtual Port 7, 2-Button Gamepad: B -md.input.port7.gamepad2.b - -;md, Virtual Port 7, 2-Button Gamepad: DOWN ↓ -md.input.port7.gamepad2.down - -;md, Virtual Port 7, 2-Button Gamepad: LEFT ← -md.input.port7.gamepad2.left - -;md, Virtual Port 7, 2-Button Gamepad: Rapid A -md.input.port7.gamepad2.rapid_a - -;md, Virtual Port 7, 2-Button Gamepad: Rapid B -md.input.port7.gamepad2.rapid_b - -;md, Virtual Port 7, 2-Button Gamepad: RIGHT → -md.input.port7.gamepad2.right - -;md, Virtual Port 7, 2-Button Gamepad: Start -md.input.port7.gamepad2.start - -;md, Virtual Port 7, 2-Button Gamepad: UP ↑ -md.input.port7.gamepad2.up - -;md, Virtual Port 7, 6-Button Gamepad: A -md.input.port7.gamepad6.a - -;md, Virtual Port 7, 6-Button Gamepad: B -md.input.port7.gamepad6.b - -;md, Virtual Port 7, 6-Button Gamepad: C -md.input.port7.gamepad6.c - -;md, Virtual Port 7, 6-Button Gamepad: DOWN ↓ -md.input.port7.gamepad6.down - -;md, Virtual Port 7, 6-Button Gamepad: LEFT ← -md.input.port7.gamepad6.left - -;md, Virtual Port 7, 6-Button Gamepad: Mode -md.input.port7.gamepad6.mode - -;md, Virtual Port 7, 6-Button Gamepad: Rapid A -md.input.port7.gamepad6.rapid_a - -;md, Virtual Port 7, 6-Button Gamepad: Rapid B -md.input.port7.gamepad6.rapid_b - -;md, Virtual Port 7, 6-Button Gamepad: Rapid C -md.input.port7.gamepad6.rapid_c - -;md, Virtual Port 7, 6-Button Gamepad: Rapid X -md.input.port7.gamepad6.rapid_x - -;md, Virtual Port 7, 6-Button Gamepad: Rapid Y -md.input.port7.gamepad6.rapid_y - -;md, Virtual Port 7, 6-Button Gamepad: Rapid Z -md.input.port7.gamepad6.rapid_z - -;md, Virtual Port 7, 6-Button Gamepad: RIGHT → -md.input.port7.gamepad6.right - -;md, Virtual Port 7, 6-Button Gamepad: Start -md.input.port7.gamepad6.start - -;md, Virtual Port 7, 6-Button Gamepad: UP ↑ -md.input.port7.gamepad6.up - -;md, Virtual Port 7, 6-Button Gamepad: X -md.input.port7.gamepad6.x - -;md, Virtual Port 7, 6-Button Gamepad: Y -md.input.port7.gamepad6.y - -;md, Virtual Port 7, 6-Button Gamepad: Z -md.input.port7.gamepad6.z - -;md, Virtual Port 7, Sega Mega Mouse: Left Button -md.input.port7.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 7, Sega Mega Mouse: Middle Button -md.input.port7.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 7, Sega Mega Mouse: Motion Down -md.input.port7.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 7, Sega Mega Mouse: Motion Left -md.input.port7.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 7, Sega Mega Mouse: Motion Right -md.input.port7.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 7, Sega Mega Mouse: Motion Up -md.input.port7.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 7, Sega Mega Mouse: Right Button -md.input.port7.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 7, Sega Mega Mouse: Start Button -md.input.port7.megamouse.start keyboard 0x0 40 - -;Input device for Virtual Port 8 -md.input.port8 gamepad - -;md, Virtual Port 8, 3-Button Gamepad: A -md.input.port8.gamepad.a - -;md, Virtual Port 8, 3-Button Gamepad: B -md.input.port8.gamepad.b - -;md, Virtual Port 8, 3-Button Gamepad: C -md.input.port8.gamepad.c - -;md, Virtual Port 8, 3-Button Gamepad: DOWN ↓ -md.input.port8.gamepad.down - -;md, Virtual Port 8, 3-Button Gamepad: LEFT ← -md.input.port8.gamepad.left - -;md, Virtual Port 8, 3-Button Gamepad: Rapid A -md.input.port8.gamepad.rapid_a - -;md, Virtual Port 8, 3-Button Gamepad: Rapid B -md.input.port8.gamepad.rapid_b - -;md, Virtual Port 8, 3-Button Gamepad: Rapid C -md.input.port8.gamepad.rapid_c - -;md, Virtual Port 8, 3-Button Gamepad: RIGHT → -md.input.port8.gamepad.right - -;md, Virtual Port 8, 3-Button Gamepad: Start -md.input.port8.gamepad.start - -;md, Virtual Port 8, 3-Button Gamepad: UP ↑ -md.input.port8.gamepad.up - -;md, Virtual Port 8, 2-Button Gamepad: A -md.input.port8.gamepad2.a - -;md, Virtual Port 8, 2-Button Gamepad: B -md.input.port8.gamepad2.b - -;md, Virtual Port 8, 2-Button Gamepad: DOWN ↓ -md.input.port8.gamepad2.down - -;md, Virtual Port 8, 2-Button Gamepad: LEFT ← -md.input.port8.gamepad2.left - -;md, Virtual Port 8, 2-Button Gamepad: Rapid A -md.input.port8.gamepad2.rapid_a - -;md, Virtual Port 8, 2-Button Gamepad: Rapid B -md.input.port8.gamepad2.rapid_b - -;md, Virtual Port 8, 2-Button Gamepad: RIGHT → -md.input.port8.gamepad2.right - -;md, Virtual Port 8, 2-Button Gamepad: Start -md.input.port8.gamepad2.start - -;md, Virtual Port 8, 2-Button Gamepad: UP ↑ -md.input.port8.gamepad2.up - -;md, Virtual Port 8, 6-Button Gamepad: A -md.input.port8.gamepad6.a - -;md, Virtual Port 8, 6-Button Gamepad: B -md.input.port8.gamepad6.b - -;md, Virtual Port 8, 6-Button Gamepad: C -md.input.port8.gamepad6.c - -;md, Virtual Port 8, 6-Button Gamepad: DOWN ↓ -md.input.port8.gamepad6.down - -;md, Virtual Port 8, 6-Button Gamepad: LEFT ← -md.input.port8.gamepad6.left - -;md, Virtual Port 8, 6-Button Gamepad: Mode -md.input.port8.gamepad6.mode - -;md, Virtual Port 8, 6-Button Gamepad: Rapid A -md.input.port8.gamepad6.rapid_a - -;md, Virtual Port 8, 6-Button Gamepad: Rapid B -md.input.port8.gamepad6.rapid_b - -;md, Virtual Port 8, 6-Button Gamepad: Rapid C -md.input.port8.gamepad6.rapid_c - -;md, Virtual Port 8, 6-Button Gamepad: Rapid X -md.input.port8.gamepad6.rapid_x - -;md, Virtual Port 8, 6-Button Gamepad: Rapid Y -md.input.port8.gamepad6.rapid_y - -;md, Virtual Port 8, 6-Button Gamepad: Rapid Z -md.input.port8.gamepad6.rapid_z - -;md, Virtual Port 8, 6-Button Gamepad: RIGHT → -md.input.port8.gamepad6.right - -;md, Virtual Port 8, 6-Button Gamepad: Start -md.input.port8.gamepad6.start - -;md, Virtual Port 8, 6-Button Gamepad: UP ↑ -md.input.port8.gamepad6.up - -;md, Virtual Port 8, 6-Button Gamepad: X -md.input.port8.gamepad6.x - -;md, Virtual Port 8, 6-Button Gamepad: Y -md.input.port8.gamepad6.y - -;md, Virtual Port 8, 6-Button Gamepad: Z -md.input.port8.gamepad6.z - -;md, Virtual Port 8, Sega Mega Mouse: Left Button -md.input.port8.megamouse.left mouse 0x0 button_left - -;md, Virtual Port 8, Sega Mega Mouse: Middle Button -md.input.port8.megamouse.middle mouse 0x0 button_middle - -;md, Virtual Port 8, Sega Mega Mouse: Motion Down -md.input.port8.megamouse.motion_down mouse 0x0 rel_y+ - -;md, Virtual Port 8, Sega Mega Mouse: Motion Left -md.input.port8.megamouse.motion_left mouse 0x0 rel_x- - -;md, Virtual Port 8, Sega Mega Mouse: Motion Right -md.input.port8.megamouse.motion_right mouse 0x0 rel_x+ - -;md, Virtual Port 8, Sega Mega Mouse: Motion Up -md.input.port8.megamouse.motion_up mouse 0x0 rel_y- - -;md, Virtual Port 8, Sega Mega Mouse: Right Button -md.input.port8.megamouse.right mouse 0x0 button_right - -;md, Virtual Port 8, Sega Mega Mouse: Start Button -md.input.port8.megamouse.start keyboard 0x0 40 - -;Emulate the specified region's Genesis/MegaDrive -md.region game - -;Region reported to the game. -md.reported_region same - -;Enable scanlines with specified opacity. -md.scanlines 0 - -;Enable specified OpenGL shader. -md.shader none - -;Force interlaced video to be treated as progressive. -md.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -md.shader.goat.hdiv 0.50 - -;Mask pattern. -md.shader.goat.pat goatron - -;Enable scanlines effect. -md.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -md.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -md.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -md.special none - -;Stretch to fill screen. -md.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -md.tblur 0 - -;Accumulate color data rather than discarding it. -md.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -md.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -md.videoip 1 - -;Full-screen horizontal resolution. -md.xres 0 - -;Scaling factor for the X axis in windowed mode. -md.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -md.xscalefs 1.000000 - -;Full-screen vertical resolution. -md.yres 0 - -;Scaling factor for the Y axis in windowed mode. -md.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -md.yscalefs 1.000000 - -;Clip left+right 8 pixel columns. -nes.clipsides 0 - -;Correct the aspect ratio. -nes.correct_aspect 0 - -;Disassembly font size. -nes.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -nes.debugger.memcharenc cp437 - -;Enable (automatic) usage of this module. -nes.enable 1 - -;Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation. -nes.fnscan 1 - -;Enable Game Genie emulation. -nes.gg 0 - -;Path to Game Genie ROM image. -nes.ggrom gg.rom - -;Input device for Famicom Expansion Port -nes.input.fcexp none - -;nes, Famicom Expansion Port, Arkanoid Paddle: Button -nes.input.fcexp.arkanoid.button mouse 0x0 button_left - -;nes, Famicom Expansion Port, Arkanoid Paddle: X Axis -nes.input.fcexp.arkanoid.x_axis mouse 0x0 cursor_x-+ - -;nes, Famicom Expansion Port, Family Keyboard: 0 -nes.input.fcexp.fkb.0 keyboard 0x0 39 - -;nes, Famicom Expansion Port, Family Keyboard: 1 -nes.input.fcexp.fkb.1 keyboard 0x0 30 - -;nes, Famicom Expansion Port, Family Keyboard: 2 -nes.input.fcexp.fkb.2 keyboard 0x0 31 - -;nes, Famicom Expansion Port, Family Keyboard: 3 -nes.input.fcexp.fkb.3 keyboard 0x0 32 - -;nes, Famicom Expansion Port, Family Keyboard: 4 -nes.input.fcexp.fkb.4 keyboard 0x0 33 - -;nes, Famicom Expansion Port, Family Keyboard: 5 -nes.input.fcexp.fkb.5 keyboard 0x0 34 - -;nes, Famicom Expansion Port, Family Keyboard: 6 -nes.input.fcexp.fkb.6 keyboard 0x0 35 - -;nes, Famicom Expansion Port, Family Keyboard: 7 -nes.input.fcexp.fkb.7 keyboard 0x0 36 - -;nes, Famicom Expansion Port, Family Keyboard: 8 -nes.input.fcexp.fkb.8 keyboard 0x0 37 - -;nes, Famicom Expansion Port, Family Keyboard: 9 -nes.input.fcexp.fkb.9 keyboard 0x0 38 - -;nes, Famicom Expansion Port, Family Keyboard: A -nes.input.fcexp.fkb.a keyboard 0x0 4 - -;nes, Famicom Expansion Port, Family Keyboard: @ -nes.input.fcexp.fkb.at keyboard 0x0 53 - -;nes, Famicom Expansion Port, Family Keyboard: B -nes.input.fcexp.fkb.b keyboard 0x0 5 - -;nes, Famicom Expansion Port, Family Keyboard: \ -nes.input.fcexp.fkb.backslash keyboard 0x0 49 - -;nes, Famicom Expansion Port, Family Keyboard: C -nes.input.fcexp.fkb.c keyboard 0x0 6 - -;nes, Famicom Expansion Port, Family Keyboard: ^ -nes.input.fcexp.fkb.caret keyboard 0x0 46 - -;nes, Famicom Expansion Port, Family Keyboard: CLR -nes.input.fcexp.fkb.clear keyboard 0x0 76 - -;nes, Famicom Expansion Port, Family Keyboard: : -nes.input.fcexp.fkb.colon keyboard 0x0 52 - -;nes, Famicom Expansion Port, Family Keyboard: , -nes.input.fcexp.fkb.comma keyboard 0x0 54 - -;nes, Famicom Expansion Port, Family Keyboard: CTR -nes.input.fcexp.fkb.ctrl keyboard 0x0 224 - -;nes, Famicom Expansion Port, Family Keyboard: D -nes.input.fcexp.fkb.d keyboard 0x0 7 - -;nes, Famicom Expansion Port, Family Keyboard: DEL -nes.input.fcexp.fkb.delete keyboard 0x0 78 - -;nes, Famicom Expansion Port, Family Keyboard: DOWN -nes.input.fcexp.fkb.down keyboard 0x0 81 - -;nes, Famicom Expansion Port, Family Keyboard: E -nes.input.fcexp.fkb.e keyboard 0x0 8 - -;nes, Famicom Expansion Port, Family Keyboard: Empty -nes.input.fcexp.fkb.empty keyboard 0x0 230 - -;nes, Famicom Expansion Port, Family Keyboard: ESC -nes.input.fcexp.fkb.escape keyboard 0x0 41 - -;nes, Famicom Expansion Port, Family Keyboard: F -nes.input.fcexp.fkb.f keyboard 0x0 9 - -;nes, Famicom Expansion Port, Family Keyboard: F1 -nes.input.fcexp.fkb.f1 keyboard 0x0 58 - -;nes, Famicom Expansion Port, Family Keyboard: F2 -nes.input.fcexp.fkb.f2 keyboard 0x0 59 - -;nes, Famicom Expansion Port, Family Keyboard: F3 -nes.input.fcexp.fkb.f3 keyboard 0x0 60 - -;nes, Famicom Expansion Port, Family Keyboard: F4 -nes.input.fcexp.fkb.f4 keyboard 0x0 61 - -;nes, Famicom Expansion Port, Family Keyboard: F5 -nes.input.fcexp.fkb.f5 keyboard 0x0 62 - -;nes, Famicom Expansion Port, Family Keyboard: F6 -nes.input.fcexp.fkb.f6 keyboard 0x0 63 - -;nes, Famicom Expansion Port, Family Keyboard: F7 -nes.input.fcexp.fkb.f7 keyboard 0x0 64 - -;nes, Famicom Expansion Port, Family Keyboard: F8 -nes.input.fcexp.fkb.f8 keyboard 0x0 65 - -;nes, Famicom Expansion Port, Family Keyboard: G -nes.input.fcexp.fkb.g keyboard 0x0 10 - -;nes, Famicom Expansion Port, Family Keyboard: GRPH -nes.input.fcexp.fkb.graph keyboard 0x0 226 - -;nes, Famicom Expansion Port, Family Keyboard: H -nes.input.fcexp.fkb.h keyboard 0x0 11 - -;nes, Famicom Expansion Port, Family Keyboard: I -nes.input.fcexp.fkb.i keyboard 0x0 12 - -;nes, Famicom Expansion Port, Family Keyboard: INS -nes.input.fcexp.fkb.insert keyboard 0x0 77 - -;nes, Famicom Expansion Port, Family Keyboard: J -nes.input.fcexp.fkb.j keyboard 0x0 13 - -;nes, Famicom Expansion Port, Family Keyboard: K -nes.input.fcexp.fkb.k keyboard 0x0 14 - -;nes, Famicom Expansion Port, Family Keyboard: カナ -nes.input.fcexp.fkb.kana keyboard 0x0 73 - -;nes, Famicom Expansion Port, Family Keyboard: L -nes.input.fcexp.fkb.l keyboard 0x0 15 - -;nes, Famicom Expansion Port, Family Keyboard: LEFT -nes.input.fcexp.fkb.left keyboard 0x0 80 - -;nes, Famicom Expansion Port, Family Keyboard: [ -nes.input.fcexp.fkb.left_bracket keyboard 0x0 47 - -;nes, Famicom Expansion Port, Family Keyboard: Left SHIFT -nes.input.fcexp.fkb.left_shift keyboard 0x0 225 - -;nes, Famicom Expansion Port, Family Keyboard: M -nes.input.fcexp.fkb.m keyboard 0x0 16 - -;nes, Famicom Expansion Port, Family Keyboard: - -nes.input.fcexp.fkb.minus keyboard 0x0 45 - -;nes, Famicom Expansion Port, Family Keyboard: N -nes.input.fcexp.fkb.n keyboard 0x0 17 - -;nes, Famicom Expansion Port, Family Keyboard: O -nes.input.fcexp.fkb.o keyboard 0x0 18 - -;nes, Famicom Expansion Port, Family Keyboard: P -nes.input.fcexp.fkb.p keyboard 0x0 19 - -;nes, Famicom Expansion Port, Family Keyboard: . -nes.input.fcexp.fkb.period keyboard 0x0 55 - -;nes, Famicom Expansion Port, Family Keyboard: Q -nes.input.fcexp.fkb.q keyboard 0x0 20 - -;nes, Famicom Expansion Port, Family Keyboard: R -nes.input.fcexp.fkb.r keyboard 0x0 21 - -;nes, Famicom Expansion Port, Family Keyboard: RETURN -nes.input.fcexp.fkb.return keyboard 0x0 40 - -;nes, Famicom Expansion Port, Family Keyboard: RIGHT -nes.input.fcexp.fkb.right keyboard 0x0 79 - -;nes, Famicom Expansion Port, Family Keyboard: ] -nes.input.fcexp.fkb.right_bracket keyboard 0x0 48 - -;nes, Famicom Expansion Port, Family Keyboard: Right SHIFT -nes.input.fcexp.fkb.right_shift keyboard 0x0 229 - -;nes, Famicom Expansion Port, Family Keyboard: S -nes.input.fcexp.fkb.s keyboard 0x0 22 - -;nes, Famicom Expansion Port, Family Keyboard: ; -nes.input.fcexp.fkb.semicolon keyboard 0x0 51 - -;nes, Famicom Expansion Port, Family Keyboard: / -nes.input.fcexp.fkb.slash keyboard 0x0 56 - -;nes, Famicom Expansion Port, Family Keyboard: SPACE -nes.input.fcexp.fkb.space keyboard 0x0 44 - -;nes, Famicom Expansion Port, Family Keyboard: STOP -nes.input.fcexp.fkb.stop keyboard 0x0 42 - -;nes, Famicom Expansion Port, Family Keyboard: T -nes.input.fcexp.fkb.t keyboard 0x0 23 - -;nes, Famicom Expansion Port, Family Keyboard: U -nes.input.fcexp.fkb.u keyboard 0x0 24 - -;nes, Famicom Expansion Port, Family Keyboard: UP -nes.input.fcexp.fkb.up keyboard 0x0 82 - -;nes, Famicom Expansion Port, Family Keyboard: V -nes.input.fcexp.fkb.v keyboard 0x0 25 - -;nes, Famicom Expansion Port, Family Keyboard: W -nes.input.fcexp.fkb.w keyboard 0x0 26 - -;nes, Famicom Expansion Port, Family Keyboard: X -nes.input.fcexp.fkb.x keyboard 0x0 27 - -;nes, Famicom Expansion Port, Family Keyboard: Y -nes.input.fcexp.fkb.y keyboard 0x0 28 - -;nes, Famicom Expansion Port, Family Keyboard: Z -nes.input.fcexp.fkb.z keyboard 0x0 29 - -;nes, Famicom Expansion Port, Family Trainer Side A: 1 -nes.input.fcexp.ftrainera.1 keyboard 0x0 18 - -;nes, Famicom Expansion Port, Family Trainer Side A: 10 -nes.input.fcexp.ftrainera.10 keyboard 0x0 54 - -;nes, Famicom Expansion Port, Family Trainer Side A: 11 -nes.input.fcexp.ftrainera.11 keyboard 0x0 55 - -;nes, Famicom Expansion Port, Family Trainer Side A: 12 -nes.input.fcexp.ftrainera.12 keyboard 0x0 56 - -;nes, Famicom Expansion Port, Family Trainer Side A: 2 -nes.input.fcexp.ftrainera.2 keyboard 0x0 19 - -;nes, Famicom Expansion Port, Family Trainer Side A: 3 -nes.input.fcexp.ftrainera.3 keyboard 0x0 47 - -;nes, Famicom Expansion Port, Family Trainer Side A: 4 -nes.input.fcexp.ftrainera.4 keyboard 0x0 48 - -;nes, Famicom Expansion Port, Family Trainer Side A: 5 -nes.input.fcexp.ftrainera.5 keyboard 0x0 14 - -;nes, Famicom Expansion Port, Family Trainer Side A: 6 -nes.input.fcexp.ftrainera.6 keyboard 0x0 15 - -;nes, Famicom Expansion Port, Family Trainer Side A: 7 -nes.input.fcexp.ftrainera.7 keyboard 0x0 51 - -;nes, Famicom Expansion Port, Family Trainer Side A: 8 -nes.input.fcexp.ftrainera.8 keyboard 0x0 52 - -;nes, Famicom Expansion Port, Family Trainer Side A: 9 -nes.input.fcexp.ftrainera.9 keyboard 0x0 16 - -;nes, Famicom Expansion Port, Family Trainer Side B: 1 -nes.input.fcexp.ftrainerb.1 keyboard 0x0 18 - -;nes, Famicom Expansion Port, Family Trainer Side B: 10 -nes.input.fcexp.ftrainerb.10 keyboard 0x0 54 - -;nes, Famicom Expansion Port, Family Trainer Side B: 11 -nes.input.fcexp.ftrainerb.11 keyboard 0x0 55 - -;nes, Famicom Expansion Port, Family Trainer Side B: 12 -nes.input.fcexp.ftrainerb.12 keyboard 0x0 56 - -;nes, Famicom Expansion Port, Family Trainer Side B: 2 -nes.input.fcexp.ftrainerb.2 keyboard 0x0 19 - -;nes, Famicom Expansion Port, Family Trainer Side B: 3 -nes.input.fcexp.ftrainerb.3 keyboard 0x0 47 - -;nes, Famicom Expansion Port, Family Trainer Side B: 4 -nes.input.fcexp.ftrainerb.4 keyboard 0x0 48 - -;nes, Famicom Expansion Port, Family Trainer Side B: 5 -nes.input.fcexp.ftrainerb.5 keyboard 0x0 14 - -;nes, Famicom Expansion Port, Family Trainer Side B: 6 -nes.input.fcexp.ftrainerb.6 keyboard 0x0 15 - -;nes, Famicom Expansion Port, Family Trainer Side B: 7 -nes.input.fcexp.ftrainerb.7 keyboard 0x0 51 - -;nes, Famicom Expansion Port, Family Trainer Side B: 8 -nes.input.fcexp.ftrainerb.8 keyboard 0x0 52 - -;nes, Famicom Expansion Port, Family Trainer Side B: 9 -nes.input.fcexp.ftrainerb.9 keyboard 0x0 16 - -;nes, Famicom Expansion Port, Hypershot Paddles: I, JUMP -nes.input.fcexp.hypershot.i_jump keyboard 0x0 26 - -;nes, Famicom Expansion Port, Hypershot Paddles: I, RUN -nes.input.fcexp.hypershot.i_run keyboard 0x0 20 - -;nes, Famicom Expansion Port, Hypershot Paddles: II, JUMP -nes.input.fcexp.hypershot.ii_jump keyboard 0x0 21 - -;nes, Famicom Expansion Port, Hypershot Paddles: II, RUN -nes.input.fcexp.hypershot.ii_run keyboard 0x0 8 - -;nes, Famicom Expansion Port, Hypershot Paddles: Rapid I, JUMP -nes.input.fcexp.hypershot.rapid_i_jump - -;nes, Famicom Expansion Port, Hypershot Paddles: Rapid I, RUN -nes.input.fcexp.hypershot.rapid_i_run - -;nes, Famicom Expansion Port, Hypershot Paddles: Rapid II, JUMP -nes.input.fcexp.hypershot.rapid_ii_jump - -;nes, Famicom Expansion Port, Hypershot Paddles: Rapid II, RUN -nes.input.fcexp.hypershot.rapid_ii_run - -;nes, Famicom Expansion Port, Mahjong Controller: 1 -nes.input.fcexp.mahjong.1 keyboard 0x0 20 - -;nes, Famicom Expansion Port, Mahjong Controller: 10 -nes.input.fcexp.mahjong.10 keyboard 0x0 10 - -;nes, Famicom Expansion Port, Mahjong Controller: 11 -nes.input.fcexp.mahjong.11 keyboard 0x0 11 - -;nes, Famicom Expansion Port, Mahjong Controller: 12 -nes.input.fcexp.mahjong.12 keyboard 0x0 13 - -;nes, Famicom Expansion Port, Mahjong Controller: 13 -nes.input.fcexp.mahjong.13 keyboard 0x0 14 - -;nes, Famicom Expansion Port, Mahjong Controller: 14 -nes.input.fcexp.mahjong.14 keyboard 0x0 15 - -;nes, Famicom Expansion Port, Mahjong Controller: 15 -nes.input.fcexp.mahjong.15 keyboard 0x0 29 - -;nes, Famicom Expansion Port, Mahjong Controller: 16 -nes.input.fcexp.mahjong.16 keyboard 0x0 27 - -;nes, Famicom Expansion Port, Mahjong Controller: 17 -nes.input.fcexp.mahjong.17 keyboard 0x0 6 - -;nes, Famicom Expansion Port, Mahjong Controller: 18 -nes.input.fcexp.mahjong.18 keyboard 0x0 25 - -;nes, Famicom Expansion Port, Mahjong Controller: 19 -nes.input.fcexp.mahjong.19 keyboard 0x0 5 - -;nes, Famicom Expansion Port, Mahjong Controller: 2 -nes.input.fcexp.mahjong.2 keyboard 0x0 26 - -;nes, Famicom Expansion Port, Mahjong Controller: 20 -nes.input.fcexp.mahjong.20 keyboard 0x0 17 - -;nes, Famicom Expansion Port, Mahjong Controller: 21 -nes.input.fcexp.mahjong.21 keyboard 0x0 16 - -;nes, Famicom Expansion Port, Mahjong Controller: 3 -nes.input.fcexp.mahjong.3 keyboard 0x0 8 - -;nes, Famicom Expansion Port, Mahjong Controller: 4 -nes.input.fcexp.mahjong.4 keyboard 0x0 21 - -;nes, Famicom Expansion Port, Mahjong Controller: 5 -nes.input.fcexp.mahjong.5 keyboard 0x0 23 - -;nes, Famicom Expansion Port, Mahjong Controller: 6 -nes.input.fcexp.mahjong.6 keyboard 0x0 4 - -;nes, Famicom Expansion Port, Mahjong Controller: 7 -nes.input.fcexp.mahjong.7 keyboard 0x0 22 - -;nes, Famicom Expansion Port, Mahjong Controller: 8 -nes.input.fcexp.mahjong.8 keyboard 0x0 7 - -;nes, Famicom Expansion Port, Mahjong Controller: 9 -nes.input.fcexp.mahjong.9 keyboard 0x0 9 - -;nes, Famicom Expansion Port, Oeka Kids Tablet: Button -nes.input.fcexp.oekakids.button mouse 0x0 button_left - -;nes, Famicom Expansion Port, Oeka Kids Tablet: X Axis -nes.input.fcexp.oekakids.x_axis mouse 0x0 cursor_x-+ - -;nes, Famicom Expansion Port, Oeka Kids Tablet: Y Axis -nes.input.fcexp.oekakids.y_axis mouse 0x0 cursor_y-+ - -;nes, Famicom Expansion Port, Party Tap: Buzzer 1 -nes.input.fcexp.partytap.buzzer_1 keyboard 0x0 20 - -;nes, Famicom Expansion Port, Party Tap: Buzzer 2 -nes.input.fcexp.partytap.buzzer_2 keyboard 0x0 26 - -;nes, Famicom Expansion Port, Party Tap: Buzzer 3 -nes.input.fcexp.partytap.buzzer_3 keyboard 0x0 8 - -;nes, Famicom Expansion Port, Party Tap: Buzzer 4 -nes.input.fcexp.partytap.buzzer_4 keyboard 0x0 21 - -;nes, Famicom Expansion Port, Party Tap: Buzzer 5 -nes.input.fcexp.partytap.buzzer_5 keyboard 0x0 23 - -;nes, Famicom Expansion Port, Party Tap: Buzzer 6 -nes.input.fcexp.partytap.buzzer_6 keyboard 0x0 28 - -;nes, Famicom Expansion Port, Space Shadow Gun: Away Trigger -nes.input.fcexp.shadow.away_trigger mouse 0x0 button_right - -;nes, Famicom Expansion Port, Space Shadow Gun: Trigger -nes.input.fcexp.shadow.trigger mouse 0x0 button_left - -;nes, Famicom Expansion Port, Space Shadow Gun: X Axis -nes.input.fcexp.shadow.x_axis mouse 0x0 cursor_x-+ - -;nes, Famicom Expansion Port, Space Shadow Gun: Y Axis -nes.input.fcexp.shadow.y_axis mouse 0x0 cursor_y-+ - -;Input device for Port 1 -nes.input.port1 gamepad - -;nes, Port 1, Arkanoid Paddle: Button -nes.input.port1.arkanoid.button mouse 0x0 button_left - -;nes, Port 1, Arkanoid Paddle: X Axis -nes.input.port1.arkanoid.x_axis mouse 0x0 cursor_x-+ - -;nes, Port 1, Gamepad: A -nes.input.port1.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;nes, Port 1, Gamepad: B -nes.input.port1.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;nes, Port 1, Gamepad: DOWN ↓ -nes.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;nes, Port 1, Gamepad: LEFT ← -nes.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;nes, Port 1, Gamepad: Rapid A -nes.input.port1.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;nes, Port 1, Gamepad: Rapid B -nes.input.port1.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;nes, Port 1, Gamepad: RIGHT → -nes.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;nes, Port 1, Gamepad: SELECT -nes.input.port1.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;nes, Port 1, Gamepad: START -nes.input.port1.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;nes, Port 1, Gamepad: UP ↑ -nes.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;nes, Port 1, Power Pad Side A: 1 -nes.input.port1.powerpada.1 keyboard 0x0 18 - -;nes, Port 1, Power Pad Side A: 10 -nes.input.port1.powerpada.10 keyboard 0x0 54 - -;nes, Port 1, Power Pad Side A: 11 -nes.input.port1.powerpada.11 keyboard 0x0 55 - -;nes, Port 1, Power Pad Side A: 12 -nes.input.port1.powerpada.12 keyboard 0x0 56 - -;nes, Port 1, Power Pad Side A: 2 -nes.input.port1.powerpada.2 keyboard 0x0 19 - -;nes, Port 1, Power Pad Side A: 3 -nes.input.port1.powerpada.3 keyboard 0x0 47 - -;nes, Port 1, Power Pad Side A: 4 -nes.input.port1.powerpada.4 keyboard 0x0 48 - -;nes, Port 1, Power Pad Side A: 5 -nes.input.port1.powerpada.5 keyboard 0x0 14 - -;nes, Port 1, Power Pad Side A: 6 -nes.input.port1.powerpada.6 keyboard 0x0 15 - -;nes, Port 1, Power Pad Side A: 7 -nes.input.port1.powerpada.7 keyboard 0x0 51 - -;nes, Port 1, Power Pad Side A: 8 -nes.input.port1.powerpada.8 keyboard 0x0 52 - -;nes, Port 1, Power Pad Side A: 9 -nes.input.port1.powerpada.9 keyboard 0x0 16 - -;nes, Port 1, Power Pad Side B: 1 -nes.input.port1.powerpadb.1 keyboard 0x0 18 - -;nes, Port 1, Power Pad Side B: 10 -nes.input.port1.powerpadb.10 keyboard 0x0 54 - -;nes, Port 1, Power Pad Side B: 11 -nes.input.port1.powerpadb.11 keyboard 0x0 55 - -;nes, Port 1, Power Pad Side B: 12 -nes.input.port1.powerpadb.12 keyboard 0x0 56 - -;nes, Port 1, Power Pad Side B: 2 -nes.input.port1.powerpadb.2 keyboard 0x0 19 - -;nes, Port 1, Power Pad Side B: 3 -nes.input.port1.powerpadb.3 keyboard 0x0 47 - -;nes, Port 1, Power Pad Side B: 4 -nes.input.port1.powerpadb.4 keyboard 0x0 48 - -;nes, Port 1, Power Pad Side B: 5 -nes.input.port1.powerpadb.5 keyboard 0x0 14 - -;nes, Port 1, Power Pad Side B: 6 -nes.input.port1.powerpadb.6 keyboard 0x0 15 - -;nes, Port 1, Power Pad Side B: 7 -nes.input.port1.powerpadb.7 keyboard 0x0 51 - -;nes, Port 1, Power Pad Side B: 8 -nes.input.port1.powerpadb.8 keyboard 0x0 52 - -;nes, Port 1, Power Pad Side B: 9 -nes.input.port1.powerpadb.9 keyboard 0x0 16 - -;nes, Port 1, Zapper: Away Trigger -nes.input.port1.zapper.away_trigger mouse 0x0 button_right - -;nes, Port 1, Zapper: Trigger -nes.input.port1.zapper.trigger mouse 0x0 button_left - -;nes, Port 1, Zapper: X Axis -nes.input.port1.zapper.x_axis mouse 0x0 cursor_x-+ - -;nes, Port 1, Zapper: Y Axis -nes.input.port1.zapper.y_axis mouse 0x0 cursor_y-+ - -;Input device for Port 2 -nes.input.port2 gamepad - -;nes, Port 2, Arkanoid Paddle: Button -nes.input.port2.arkanoid.button mouse 0x0 button_left - -;nes, Port 2, Arkanoid Paddle: X Axis -nes.input.port2.arkanoid.x_axis mouse 0x0 cursor_x-+ - -;nes, Port 2, Gamepad: A -nes.input.port2.gamepad.a - -;nes, Port 2, Gamepad: B -nes.input.port2.gamepad.b - -;nes, Port 2, Gamepad: DOWN ↓ -nes.input.port2.gamepad.down - -;nes, Port 2, Gamepad: LEFT ← -nes.input.port2.gamepad.left - -;nes, Port 2, Gamepad: Rapid A -nes.input.port2.gamepad.rapid_a - -;nes, Port 2, Gamepad: Rapid B -nes.input.port2.gamepad.rapid_b - -;nes, Port 2, Gamepad: RIGHT → -nes.input.port2.gamepad.right - -;nes, Port 2, Gamepad: SELECT -nes.input.port2.gamepad.select - -;nes, Port 2, Gamepad: START -nes.input.port2.gamepad.start - -;nes, Port 2, Gamepad: UP ↑ -nes.input.port2.gamepad.up - -;nes, Port 2, Power Pad Side A: 1 -nes.input.port2.powerpada.1 keyboard 0x0 18 - -;nes, Port 2, Power Pad Side A: 10 -nes.input.port2.powerpada.10 keyboard 0x0 54 - -;nes, Port 2, Power Pad Side A: 11 -nes.input.port2.powerpada.11 keyboard 0x0 55 - -;nes, Port 2, Power Pad Side A: 12 -nes.input.port2.powerpada.12 keyboard 0x0 56 - -;nes, Port 2, Power Pad Side A: 2 -nes.input.port2.powerpada.2 keyboard 0x0 19 - -;nes, Port 2, Power Pad Side A: 3 -nes.input.port2.powerpada.3 keyboard 0x0 47 - -;nes, Port 2, Power Pad Side A: 4 -nes.input.port2.powerpada.4 keyboard 0x0 48 - -;nes, Port 2, Power Pad Side A: 5 -nes.input.port2.powerpada.5 keyboard 0x0 14 - -;nes, Port 2, Power Pad Side A: 6 -nes.input.port2.powerpada.6 keyboard 0x0 15 - -;nes, Port 2, Power Pad Side A: 7 -nes.input.port2.powerpada.7 keyboard 0x0 51 - -;nes, Port 2, Power Pad Side A: 8 -nes.input.port2.powerpada.8 keyboard 0x0 52 - -;nes, Port 2, Power Pad Side A: 9 -nes.input.port2.powerpada.9 keyboard 0x0 16 - -;nes, Port 2, Power Pad Side B: 1 -nes.input.port2.powerpadb.1 keyboard 0x0 18 - -;nes, Port 2, Power Pad Side B: 10 -nes.input.port2.powerpadb.10 keyboard 0x0 54 - -;nes, Port 2, Power Pad Side B: 11 -nes.input.port2.powerpadb.11 keyboard 0x0 55 - -;nes, Port 2, Power Pad Side B: 12 -nes.input.port2.powerpadb.12 keyboard 0x0 56 - -;nes, Port 2, Power Pad Side B: 2 -nes.input.port2.powerpadb.2 keyboard 0x0 19 - -;nes, Port 2, Power Pad Side B: 3 -nes.input.port2.powerpadb.3 keyboard 0x0 47 - -;nes, Port 2, Power Pad Side B: 4 -nes.input.port2.powerpadb.4 keyboard 0x0 48 - -;nes, Port 2, Power Pad Side B: 5 -nes.input.port2.powerpadb.5 keyboard 0x0 14 - -;nes, Port 2, Power Pad Side B: 6 -nes.input.port2.powerpadb.6 keyboard 0x0 15 - -;nes, Port 2, Power Pad Side B: 7 -nes.input.port2.powerpadb.7 keyboard 0x0 51 - -;nes, Port 2, Power Pad Side B: 8 -nes.input.port2.powerpadb.8 keyboard 0x0 52 - -;nes, Port 2, Power Pad Side B: 9 -nes.input.port2.powerpadb.9 keyboard 0x0 16 - -;nes, Port 2, Zapper: Away Trigger -nes.input.port2.zapper.away_trigger mouse 0x0 button_right - -;nes, Port 2, Zapper: Trigger -nes.input.port2.zapper.trigger mouse 0x0 button_left - -;nes, Port 2, Zapper: X Axis -nes.input.port2.zapper.x_axis mouse 0x0 cursor_x-+ - -;nes, Port 2, Zapper: Y Axis -nes.input.port2.zapper.y_axis mouse 0x0 cursor_y-+ - -;Input device for Port 3 -nes.input.port3 gamepad - -;nes, Port 3, Gamepad: A -nes.input.port3.gamepad.a - -;nes, Port 3, Gamepad: B -nes.input.port3.gamepad.b - -;nes, Port 3, Gamepad: DOWN ↓ -nes.input.port3.gamepad.down - -;nes, Port 3, Gamepad: LEFT ← -nes.input.port3.gamepad.left - -;nes, Port 3, Gamepad: Rapid A -nes.input.port3.gamepad.rapid_a - -;nes, Port 3, Gamepad: Rapid B -nes.input.port3.gamepad.rapid_b - -;nes, Port 3, Gamepad: RIGHT → -nes.input.port3.gamepad.right - -;nes, Port 3, Gamepad: SELECT -nes.input.port3.gamepad.select - -;nes, Port 3, Gamepad: START -nes.input.port3.gamepad.start - -;nes, Port 3, Gamepad: UP ↑ -nes.input.port3.gamepad.up - -;Input device for Port 4 -nes.input.port4 gamepad - -;nes, Port 4, Gamepad: A -nes.input.port4.gamepad.a - -;nes, Port 4, Gamepad: B -nes.input.port4.gamepad.b - -;nes, Port 4, Gamepad: DOWN ↓ -nes.input.port4.gamepad.down - -;nes, Port 4, Gamepad: LEFT ← -nes.input.port4.gamepad.left - -;nes, Port 4, Gamepad: Rapid A -nes.input.port4.gamepad.rapid_a - -;nes, Port 4, Gamepad: Rapid B -nes.input.port4.gamepad.rapid_b - -;nes, Port 4, Gamepad: RIGHT → -nes.input.port4.gamepad.right - -;nes, Port 4, Gamepad: SELECT -nes.input.port4.gamepad.select - -;nes, Port 4, Gamepad: START -nes.input.port4.gamepad.start - -;nes, Port 4, Gamepad: UP ↑ -nes.input.port4.gamepad.up - -;Enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation. -nes.n106bs 0 - -;Remove 8-sprites-per-scanline hardware limit. -nes.no8lim 1 - -;Disable four-score emulation. -nes.nofs 0 - -;NTSC composite blitter brightness. -nes.ntsc.brightness 0 - -;NTSC composite blitter contrast. -nes.ntsc.contrast 0 - -;NTSC composite blitter hue. -nes.ntsc.hue 0 - -;Enable NTSC custom decoder matrix. -nes.ntsc.matrix 0 - -;NTSC custom decoder matrix element 0(red, value * V). -nes.ntsc.matrix.0 1.539 - -;NTSC custom decoder matrix element 1(red, value * U). -nes.ntsc.matrix.1 -0.622 - -;NTSC custom decoder matrix element 2(green, value * V). -nes.ntsc.matrix.2 -0.571 - -;NTSC custom decoder matrix element 3(green, value * U). -nes.ntsc.matrix.3 -0.185 - -;NTSC custom decoder matrix element 4(blue, value * V). -nes.ntsc.matrix.4 0.000 - -;NTSC custom decoder matrix element 5(blue, value * U. -nes.ntsc.matrix.5 2.000 - -;Merge fields to partially work around !=60.1Hz refresh rates. -nes.ntsc.mergefields 0 - -;Video quality/type preset. -nes.ntsc.preset none - -;NTSC composite blitter saturation. -nes.ntsc.saturation 0 - -;NTSC composite blitter sharpness. -nes.ntsc.sharpness 0 - -;Enable NTSC color generation and blitter. -nes.ntscblitter 0 - -;Enable PAL(50Hz) NES emulation. -nes.pal 0 - -;Enable scanlines with specified opacity. -nes.scanlines 0 - -;Enable specified OpenGL shader. -nes.shader sabr - -;Force interlaced video to be treated as progressive. -nes.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -nes.shader.goat.hdiv 0.50 - -;Mask pattern. -nes.shader.goat.pat goatron - -;Enable scanlines effect. -nes.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -nes.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -nes.shader.goat.vdiv 0.50 - -;Last displayed scanline in NTSC mode. -nes.slend 231 - -;Last displayed scanline in PAL mode. -nes.slendp 239 - -;First displayed scanline in NTSC mode. -nes.slstart 8 - -;First displayed scanline in PAL mode. -nes.slstartp 0 - -;Output rate tolerance. -nes.sound_rate_error 0.00004 - -;Sound quality. -nes.soundq 0 - -;Enable specified special video scaler. -nes.special none - -;Stretch to fill screen. -nes.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -nes.tblur 0 - -;Accumulate color data rather than discarding it. -nes.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -nes.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -nes.videoip 0 - -;Full-screen horizontal resolution. -nes.xres 0 - -;Scaling factor for the X axis in windowed mode. -nes.xscale 4.000000 - -;Scaling factor for the X axis in fullscreen mode. -nes.xscalefs 1.000000 - -;Full-screen vertical resolution. -nes.yres 0 - -;Scaling factor for the Y axis in windowed mode. -nes.yscale 4.000000 - -;Scaling factor for the Y axis in fullscreen mode. -nes.yscalefs 1.000000 - -;Font for netplay chat console. -netplay.console.font 9x18 - -;Height of chat console, in lines. -netplay.console.lines 5 - -;Netplay chat console text scale factor. -netplay.console.scale 1 - -;Key to hash with the MD5 hash of the game. -netplay.gamekey - -;Server hostname. -netplay.host netplay.fobby.net - -;Local player count. -netplay.localplayers 1 - -;Nickname. -netplay.nick - -;Server password. -netplay.password - -;Server port. -netplay.port 4046 - -;Enable (automatic) usage of this module. -ngp.enable 1 - -;Force monophonic sound output. -ngp.forcemono 0 - -;ngp, Built-In, Gamepad: A -ngp.input.builtin.gamepad.a keyboard 0x0 90 - -;ngp, Built-In, Gamepad: B -ngp.input.builtin.gamepad.b keyboard 0x0 91 - -;ngp, Built-In, Gamepad: DOWN ↓ -ngp.input.builtin.gamepad.down keyboard 0x0 22 - -;ngp, Built-In, Gamepad: LEFT ← -ngp.input.builtin.gamepad.left keyboard 0x0 4 - -;ngp, Built-In, Gamepad: OPTION -ngp.input.builtin.gamepad.option keyboard 0x0 40 - -;ngp, Built-In, Gamepad: Rapid A -ngp.input.builtin.gamepad.rapid_a - -;ngp, Built-In, Gamepad: Rapid B -ngp.input.builtin.gamepad.rapid_b - -;ngp, Built-In, Gamepad: RIGHT → -ngp.input.builtin.gamepad.right keyboard 0x0 7 - -;ngp, Built-In, Gamepad: UP ↑ -ngp.input.builtin.gamepad.up keyboard 0x0 26 - -;Language games should display text in. -ngp.language english - -;Enable scanlines with specified opacity. -ngp.scanlines 0 - -;Enable specified OpenGL shader. -ngp.shader none - -;Force interlaced video to be treated as progressive. -ngp.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -ngp.shader.goat.hdiv 0.50 - -;Mask pattern. -ngp.shader.goat.pat goatron - -;Enable scanlines effect. -ngp.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -ngp.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -ngp.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -ngp.special none - -;Stretch to fill screen. -ngp.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -ngp.tblur 0 - -;Accumulate color data rather than discarding it. -ngp.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -ngp.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -ngp.videoip 0 - -;Full-screen horizontal resolution. -ngp.xres 0 - -;Scaling factor for the X axis in windowed mode. -ngp.xscale 6.000000 - -;Scaling factor for the X axis in fullscreen mode. -ngp.xscalefs 1.000000 - -;Full-screen vertical resolution. -ngp.yres 0 - -;Scaling factor for the Y axis in windowed mode. -ngp.yscale 6.000000 - -;Scaling factor for the Y axis in fullscreen mode. -ngp.yscalefs 1.000000 - -;Disable speed throttling when sound is disabled. -nothrottle 0 - -;Enable alpha blending for OSD elements. -osd.alpha_blend 1 - -;Length of time, in milliseconds, to display internal status and error messages -osd.message_display_time 2500 - -;Length of time, in milliseconds, to display the save state or the movie selector after selecting a state or movie. -osd.state_display_time 2000 - -;Output the full 12-bit ADPCM predictor. -pce.adpcmextraprec 0 - -;ADPCM volume. -pce.adpcmvolume 100 - -;Enable Arcade Card emulation. -pce.arcadecard 1 - -;Path to the CD BIOS -pce.cdbios syscard3.pce - -;CD-DA volume. -pce.cddavolume 100 - -;PSG volume when playing a CD game. -pce.cdpsgvolume 100 - -;Disassembly font size. -pce.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -pce.debugger.memcharenc shift_jis - -;Disable BRAM(saved game memory) for CD games. -pce.disable_bram_cd 0 - -;Disable BRAM(saved game memory) for HuCard games. -pce.disable_bram_hucard 0 - -;If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily. -pce.disable_softreset 0 - -;Enable (automatic) usage of this module. -pce.enable 1 - -;Force monophonic sound output. -pce.forcemono 0 - -;Force SuperGrafx emulation. -pce.forcesgx 0 - -;Path to the GE CD BIOS -pce.gecdbios gecard.pce - -;Show horizontal overscan area. -pce.h_overscan 0 - -;Enable multitap(TurboTap) emulation. -pce.input.multitap 1 - -;Input device for Port 1 -pce.input.port1 gamepad - -;pce, Port 1, Gamepad: DOWN ↓ -pce.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;pce, Port 1, Gamepad: I -pce.input.port1.gamepad.i joystick 0x0003045e028e01010008000b00000000 button_1 - -;pce, Port 1, Gamepad: II -pce.input.port1.gamepad.ii joystick 0x0003045e028e01010008000b00000000 button_0 - -;pce, Port 1, Gamepad: III -pce.input.port1.gamepad.iii joystick 0x0003045e028e01010008000b00000000 button_2 - -;pce, Port 1, Gamepad: IV -pce.input.port1.gamepad.iv joystick 0x0003045e028e01010008000b00000000 button_3 - -;pce, Port 1, Gamepad: LEFT ← -pce.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;pce, Port 1, Gamepad: Mode -pce.input.port1.gamepad.mode_select joystick 0x0003045e028e01010008000b00000000 button_6 && joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;Default position for switch "Mode". -pce.input.port1.gamepad.mode_select.defpos 2 - -;pce, Port 1, Gamepad: Rapid I -pce.input.port1.gamepad.rapid_i keyboard 0x0 17 - -;pce, Port 1, Gamepad: Rapid II -pce.input.port1.gamepad.rapid_ii keyboard 0x0 17 - -;pce, Port 1, Gamepad: RIGHT → -pce.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;pce, Port 1, Gamepad: RUN -pce.input.port1.gamepad.run joystick 0x0003045e028e01010008000b00000000 button_7 - -;pce, Port 1, Gamepad: SELECT -pce.input.port1.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;pce, Port 1, Gamepad: UP ↑ -pce.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;pce, Port 1, Gamepad: V -pce.input.port1.gamepad.v joystick 0x0003045e028e01010008000b00000000 button_4 - -;pce, Port 1, Gamepad: VI -pce.input.port1.gamepad.vi joystick 0x0003045e028e01010008000b00000000 button_5 - -;pce, Port 1, Mouse: Left Button -pce.input.port1.mouse.left mouse 0x0 button_left - -;pce, Port 1, Mouse: Motion Down -pce.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;pce, Port 1, Mouse: Motion Left -pce.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;pce, Port 1, Mouse: Motion Right -pce.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;pce, Port 1, Mouse: Motion Up -pce.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;pce, Port 1, Mouse: Right Button -pce.input.port1.mouse.right mouse 0x0 button_right - -;pce, Port 1, Mouse: RUN -pce.input.port1.mouse.run keyboard 0x0 40 - -;pce, Port 1, Mouse: SELECT -pce.input.port1.mouse.select keyboard 0x0 43 - -;pce, Port 1, Tsushin Keyboard: 0 -pce.input.port1.tsushinkb.0 keyboard 0x0 39 - -;pce, Port 1, Tsushin Keyboard: 1 -pce.input.port1.tsushinkb.1 keyboard 0x0 30 - -;pce, Port 1, Tsushin Keyboard: 2 -pce.input.port1.tsushinkb.2 keyboard 0x0 31 - -;pce, Port 1, Tsushin Keyboard: 3 -pce.input.port1.tsushinkb.3 keyboard 0x0 32 - -;pce, Port 1, Tsushin Keyboard: 4 -pce.input.port1.tsushinkb.4 keyboard 0x0 33 - -;pce, Port 1, Tsushin Keyboard: 5 -pce.input.port1.tsushinkb.5 keyboard 0x0 34 - -;pce, Port 1, Tsushin Keyboard: 6 -pce.input.port1.tsushinkb.6 keyboard 0x0 35 - -;pce, Port 1, Tsushin Keyboard: 7 -pce.input.port1.tsushinkb.7 keyboard 0x0 36 - -;pce, Port 1, Tsushin Keyboard: 8 -pce.input.port1.tsushinkb.8 keyboard 0x0 37 - -;pce, Port 1, Tsushin Keyboard: 9 -pce.input.port1.tsushinkb.9 keyboard 0x0 38 - -;pce, Port 1, Tsushin Keyboard: a -pce.input.port1.tsushinkb.a keyboard 0x0 4 - -;pce, Port 1, Tsushin Keyboard: @ -pce.input.port1.tsushinkb.at keyboard 0x0 53 - -;pce, Port 1, Tsushin Keyboard: b -pce.input.port1.tsushinkb.b keyboard 0x0 5 - -;pce, Port 1, Tsushin Keyboard: backspace -pce.input.port1.tsushinkb.backspace keyboard 0x0 42 - -;pce, Port 1, Tsushin Keyboard: c -pce.input.port1.tsushinkb.c keyboard 0x0 6 - -;pce, Port 1, Tsushin Keyboard: Caps Lock -pce.input.port1.tsushinkb.caps_lock keyboard 0x0 57 - -;pce, Port 1, Tsushin Keyboard: ^ -pce.input.port1.tsushinkb.caret keyboard 0x0 46 - -;pce, Port 1, Tsushin Keyboard: clear -pce.input.port1.tsushinkb.clear keyboard 0x0 74 - -;pce, Port 1, Tsushin Keyboard: : -pce.input.port1.tsushinkb.colon keyboard 0x0 52 - -;pce, Port 1, Tsushin Keyboard: , -pce.input.port1.tsushinkb.comma keyboard 0x0 54 - -;pce, Port 1, Tsushin Keyboard: 変換 -pce.input.port1.tsushinkb.convert keyboard 0x0 230 - -;pce, Port 1, Tsushin Keyboard: Copy -pce.input.port1.tsushinkb.copy keyboard 0x0 70 - -;pce, Port 1, Tsushin Keyboard: CTRL/Control -pce.input.port1.tsushinkb.ctrl keyboard 0x0 224 - -;pce, Port 1, Tsushin Keyboard: d -pce.input.port1.tsushinkb.d keyboard 0x0 7 - -;pce, Port 1, Tsushin Keyboard: Delete -pce.input.port1.tsushinkb.delete keyboard 0x0 76 - -;pce, Port 1, Tsushin Keyboard: down -pce.input.port1.tsushinkb.down keyboard 0x0 81 - -;pce, Port 1, Tsushin Keyboard: e -pce.input.port1.tsushinkb.e keyboard 0x0 8 - -;pce, Port 1, Tsushin Keyboard: Escape -pce.input.port1.tsushinkb.escape keyboard 0x0 41 - -;pce, Port 1, Tsushin Keyboard: f -pce.input.port1.tsushinkb.f keyboard 0x0 9 - -;pce, Port 1, Tsushin Keyboard: F1 -pce.input.port1.tsushinkb.f1 keyboard 0x0 58 - -;pce, Port 1, Tsushin Keyboard: F10 -pce.input.port1.tsushinkb.f10 keyboard 0x0 67 - -;pce, Port 1, Tsushin Keyboard: F2 -pce.input.port1.tsushinkb.f2 keyboard 0x0 59 - -;pce, Port 1, Tsushin Keyboard: F3 -pce.input.port1.tsushinkb.f3 keyboard 0x0 60 - -;pce, Port 1, Tsushin Keyboard: F4 -pce.input.port1.tsushinkb.f4 keyboard 0x0 61 - -;pce, Port 1, Tsushin Keyboard: F5 -pce.input.port1.tsushinkb.f5 keyboard 0x0 62 - -;pce, Port 1, Tsushin Keyboard: f6 -pce.input.port1.tsushinkb.f6 keyboard 0x0 63 - -;pce, Port 1, Tsushin Keyboard: f7 -pce.input.port1.tsushinkb.f7 keyboard 0x0 64 - -;pce, Port 1, Tsushin Keyboard: f8 -pce.input.port1.tsushinkb.f8 keyboard 0x0 65 - -;pce, Port 1, Tsushin Keyboard: f9 -pce.input.port1.tsushinkb.f9 keyboard 0x0 66 - -;pce, Port 1, Tsushin Keyboard: g -pce.input.port1.tsushinkb.g keyboard 0x0 10 - -;pce, Port 1, Tsushin Keyboard: GRPH -pce.input.port1.tsushinkb.grph keyboard 0x0 0 - -;pce, Port 1, Tsushin Keyboard: h -pce.input.port1.tsushinkb.h keyboard 0x0 11 - -;pce, Port 1, Tsushin Keyboard: Help -pce.input.port1.tsushinkb.help keyboard 0x0 77 - -;pce, Port 1, Tsushin Keyboard: i -pce.input.port1.tsushinkb.i keyboard 0x0 12 - -;pce, Port 1, Tsushin Keyboard: insert -pce.input.port1.tsushinkb.insert keyboard 0x0 73 - -;pce, Port 1, Tsushin Keyboard: j -pce.input.port1.tsushinkb.j keyboard 0x0 13 - -;pce, Port 1, Tsushin Keyboard: k -pce.input.port1.tsushinkb.k keyboard 0x0 14 - -;pce, Port 1, Tsushin Keyboard: カナ -pce.input.port1.tsushinkb.kana keyboard 0x0 227 - -;pce, Port 1, Tsushin Keyboard: Keypad 0 -pce.input.port1.tsushinkb.kp_0 keyboard 0x0 98 - -;pce, Port 1, Tsushin Keyboard: Keypad 1 -pce.input.port1.tsushinkb.kp_1 keyboard 0x0 89 - -;pce, Port 1, Tsushin Keyboard: Keypad 2 -pce.input.port1.tsushinkb.kp_2 keyboard 0x0 90 - -;pce, Port 1, Tsushin Keyboard: Keypad 3 -pce.input.port1.tsushinkb.kp_3 keyboard 0x0 91 - -;pce, Port 1, Tsushin Keyboard: Keypad 4 -pce.input.port1.tsushinkb.kp_4 keyboard 0x0 92 - -;pce, Port 1, Tsushin Keyboard: Keypad 5 -pce.input.port1.tsushinkb.kp_5 keyboard 0x0 93 - -;pce, Port 1, Tsushin Keyboard: Keypad 6 -pce.input.port1.tsushinkb.kp_6 keyboard 0x0 94 - -;pce, Port 1, Tsushin Keyboard: Keypad 7 -pce.input.port1.tsushinkb.kp_7 keyboard 0x0 95 - -;pce, Port 1, Tsushin Keyboard: Keypad 8 -pce.input.port1.tsushinkb.kp_8 keyboard 0x0 96 - -;pce, Port 1, Tsushin Keyboard: Keypad 9 -pce.input.port1.tsushinkb.kp_9 keyboard 0x0 97 - -;pce, Port 1, Tsushin Keyboard: Keypad , -pce.input.port1.tsushinkb.kp_comma keyboard 0x0 0 - -;pce, Port 1, Tsushin Keyboard: Keypad Divide -pce.input.port1.tsushinkb.kp_divide keyboard 0x0 84 - -;pce, Port 1, Tsushin Keyboard: Keypad Enter -pce.input.port1.tsushinkb.kp_enter keyboard 0x0 88 - -;pce, Port 1, Tsushin Keyboard: Keypad = -pce.input.port1.tsushinkb.kp_equals keyboard 0x0 103 - -;pce, Port 1, Tsushin Keyboard: Keypad Minus -pce.input.port1.tsushinkb.kp_minus keyboard 0x0 86 - -;pce, Port 1, Tsushin Keyboard: Keypad * -pce.input.port1.tsushinkb.kp_multiply keyboard 0x0 85 - -;pce, Port 1, Tsushin Keyboard: Keypad . -pce.input.port1.tsushinkb.kp_period keyboard 0x0 99 - -;pce, Port 1, Tsushin Keyboard: Keypad + -pce.input.port1.tsushinkb.kp_plus keyboard 0x0 87 - -;pce, Port 1, Tsushin Keyboard: l -pce.input.port1.tsushinkb.l keyboard 0x0 15 - -;pce, Port 1, Tsushin Keyboard: left -pce.input.port1.tsushinkb.left keyboard 0x0 80 - -;pce, Port 1, Tsushin Keyboard: [ -pce.input.port1.tsushinkb.left_bracket keyboard 0x0 47 - -;pce, Port 1, Tsushin Keyboard: Left Shift -pce.input.port1.tsushinkb.left_shift keyboard 0x0 225 - -;pce, Port 1, Tsushin Keyboard: m -pce.input.port1.tsushinkb.m keyboard 0x0 16 - -;pce, Port 1, Tsushin Keyboard: Minus -pce.input.port1.tsushinkb.minus keyboard 0x0 45 - -;pce, Port 1, Tsushin Keyboard: n -pce.input.port1.tsushinkb.n keyboard 0x0 17 - -;pce, Port 1, Tsushin Keyboard: 決定 -pce.input.port1.tsushinkb.nonconvert keyboard 0x0 226 - -;pce, Port 1, Tsushin Keyboard: o -pce.input.port1.tsushinkb.o keyboard 0x0 18 - -;pce, Port 1, Tsushin Keyboard: p -pce.input.port1.tsushinkb.p keyboard 0x0 19 - -;pce, Port 1, Tsushin Keyboard: PC -pce.input.port1.tsushinkb.pc keyboard 0x0 231 - -;pce, Port 1, Tsushin Keyboard: . -pce.input.port1.tsushinkb.period keyboard 0x0 55 - -;pce, Port 1, Tsushin Keyboard: q -pce.input.port1.tsushinkb.q keyboard 0x0 20 - -;pce, Port 1, Tsushin Keyboard: r -pce.input.port1.tsushinkb.r keyboard 0x0 21 - -;pce, Port 1, Tsushin Keyboard: return -pce.input.port1.tsushinkb.return keyboard 0x0 40 - -;pce, Port 1, Tsushin Keyboard: right -pce.input.port1.tsushinkb.right keyboard 0x0 79 - -;pce, Port 1, Tsushin Keyboard: ] -pce.input.port1.tsushinkb.right_bracket keyboard 0x0 48 - -;pce, Port 1, Tsushin Keyboard: Right Shift -pce.input.port1.tsushinkb.right_shift keyboard 0x0 229 - -;pce, Port 1, Tsushin Keyboard: ROLL DOWN -pce.input.port1.tsushinkb.roll_down keyboard 0x0 78 - -;pce, Port 1, Tsushin Keyboard: ROLL UP -pce.input.port1.tsushinkb.roll_up keyboard 0x0 75 - -;pce, Port 1, Tsushin Keyboard: s -pce.input.port1.tsushinkb.s keyboard 0x0 22 - -;pce, Port 1, Tsushin Keyboard: ; -pce.input.port1.tsushinkb.semicolon keyboard 0x0 51 - -;pce, Port 1, Tsushin Keyboard: / -pce.input.port1.tsushinkb.slash keyboard 0x0 56 - -;pce, Port 1, Tsushin Keyboard: space -pce.input.port1.tsushinkb.space keyboard 0x0 44 - -;pce, Port 1, Tsushin Keyboard: STOP -pce.input.port1.tsushinkb.stop keyboard 0x0 72 - -;pce, Port 1, Tsushin Keyboard: t -pce.input.port1.tsushinkb.t keyboard 0x0 23 - -;pce, Port 1, Tsushin Keyboard: Tab -pce.input.port1.tsushinkb.tab keyboard 0x0 43 - -;pce, Port 1, Tsushin Keyboard: u -pce.input.port1.tsushinkb.u keyboard 0x0 24 - -;pce, Port 1, Tsushin Keyboard: Underscore -pce.input.port1.tsushinkb.underscore keyboard 0x0 0 - -;pce, Port 1, Tsushin Keyboard: up -pce.input.port1.tsushinkb.up keyboard 0x0 82 - -;pce, Port 1, Tsushin Keyboard: v -pce.input.port1.tsushinkb.v keyboard 0x0 25 - -;pce, Port 1, Tsushin Keyboard: w -pce.input.port1.tsushinkb.w keyboard 0x0 26 - -;pce, Port 1, Tsushin Keyboard: 変換 -pce.input.port1.tsushinkb.width keyboard 0x0 228 - -;pce, Port 1, Tsushin Keyboard: x -pce.input.port1.tsushinkb.x keyboard 0x0 27 - -;pce, Port 1, Tsushin Keyboard: y -pce.input.port1.tsushinkb.y keyboard 0x0 28 - -;pce, Port 1, Tsushin Keyboard: Yen -pce.input.port1.tsushinkb.yen keyboard 0x0 46 - -;pce, Port 1, Tsushin Keyboard: z -pce.input.port1.tsushinkb.z keyboard 0x0 29 - -;Input device for Port 2 -pce.input.port2 gamepad - -;pce, Port 2, Gamepad: DOWN ↓ -pce.input.port2.gamepad.down - -;pce, Port 2, Gamepad: I -pce.input.port2.gamepad.i - -;pce, Port 2, Gamepad: II -pce.input.port2.gamepad.ii - -;pce, Port 2, Gamepad: III -pce.input.port2.gamepad.iii - -;pce, Port 2, Gamepad: IV -pce.input.port2.gamepad.iv - -;pce, Port 2, Gamepad: LEFT ← -pce.input.port2.gamepad.left - -;pce, Port 2, Gamepad: Mode -pce.input.port2.gamepad.mode_select - -;Default position for switch "Mode". -pce.input.port2.gamepad.mode_select.defpos 2 - -;pce, Port 2, Gamepad: Rapid I -pce.input.port2.gamepad.rapid_i - -;pce, Port 2, Gamepad: Rapid II -pce.input.port2.gamepad.rapid_ii - -;pce, Port 2, Gamepad: RIGHT → -pce.input.port2.gamepad.right - -;pce, Port 2, Gamepad: RUN -pce.input.port2.gamepad.run - -;pce, Port 2, Gamepad: SELECT -pce.input.port2.gamepad.select - -;pce, Port 2, Gamepad: UP ↑ -pce.input.port2.gamepad.up - -;pce, Port 2, Gamepad: V -pce.input.port2.gamepad.v - -;pce, Port 2, Gamepad: VI -pce.input.port2.gamepad.vi - -;pce, Port 2, Mouse: Left Button -pce.input.port2.mouse.left mouse 0x0 button_left - -;pce, Port 2, Mouse: Motion Down -pce.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;pce, Port 2, Mouse: Motion Left -pce.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;pce, Port 2, Mouse: Motion Right -pce.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;pce, Port 2, Mouse: Motion Up -pce.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;pce, Port 2, Mouse: Right Button -pce.input.port2.mouse.right mouse 0x0 button_right - -;pce, Port 2, Mouse: RUN -pce.input.port2.mouse.run keyboard 0x0 40 - -;pce, Port 2, Mouse: SELECT -pce.input.port2.mouse.select keyboard 0x0 43 - -;Input device for Port 3 -pce.input.port3 gamepad - -;pce, Port 3, Gamepad: DOWN ↓ -pce.input.port3.gamepad.down - -;pce, Port 3, Gamepad: I -pce.input.port3.gamepad.i - -;pce, Port 3, Gamepad: II -pce.input.port3.gamepad.ii - -;pce, Port 3, Gamepad: III -pce.input.port3.gamepad.iii - -;pce, Port 3, Gamepad: IV -pce.input.port3.gamepad.iv - -;pce, Port 3, Gamepad: LEFT ← -pce.input.port3.gamepad.left - -;pce, Port 3, Gamepad: Mode -pce.input.port3.gamepad.mode_select - -;Default position for switch "Mode". -pce.input.port3.gamepad.mode_select.defpos 2 - -;pce, Port 3, Gamepad: Rapid I -pce.input.port3.gamepad.rapid_i - -;pce, Port 3, Gamepad: Rapid II -pce.input.port3.gamepad.rapid_ii - -;pce, Port 3, Gamepad: RIGHT → -pce.input.port3.gamepad.right - -;pce, Port 3, Gamepad: RUN -pce.input.port3.gamepad.run - -;pce, Port 3, Gamepad: SELECT -pce.input.port3.gamepad.select - -;pce, Port 3, Gamepad: UP ↑ -pce.input.port3.gamepad.up - -;pce, Port 3, Gamepad: V -pce.input.port3.gamepad.v - -;pce, Port 3, Gamepad: VI -pce.input.port3.gamepad.vi - -;pce, Port 3, Mouse: Left Button -pce.input.port3.mouse.left mouse 0x0 button_left - -;pce, Port 3, Mouse: Motion Down -pce.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;pce, Port 3, Mouse: Motion Left -pce.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;pce, Port 3, Mouse: Motion Right -pce.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;pce, Port 3, Mouse: Motion Up -pce.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;pce, Port 3, Mouse: Right Button -pce.input.port3.mouse.right mouse 0x0 button_right - -;pce, Port 3, Mouse: RUN -pce.input.port3.mouse.run keyboard 0x0 40 - -;pce, Port 3, Mouse: SELECT -pce.input.port3.mouse.select keyboard 0x0 43 - -;Input device for Port 4 -pce.input.port4 gamepad - -;pce, Port 4, Gamepad: DOWN ↓ -pce.input.port4.gamepad.down - -;pce, Port 4, Gamepad: I -pce.input.port4.gamepad.i - -;pce, Port 4, Gamepad: II -pce.input.port4.gamepad.ii - -;pce, Port 4, Gamepad: III -pce.input.port4.gamepad.iii - -;pce, Port 4, Gamepad: IV -pce.input.port4.gamepad.iv - -;pce, Port 4, Gamepad: LEFT ← -pce.input.port4.gamepad.left - -;pce, Port 4, Gamepad: Mode -pce.input.port4.gamepad.mode_select - -;Default position for switch "Mode". -pce.input.port4.gamepad.mode_select.defpos 2 - -;pce, Port 4, Gamepad: Rapid I -pce.input.port4.gamepad.rapid_i - -;pce, Port 4, Gamepad: Rapid II -pce.input.port4.gamepad.rapid_ii - -;pce, Port 4, Gamepad: RIGHT → -pce.input.port4.gamepad.right - -;pce, Port 4, Gamepad: RUN -pce.input.port4.gamepad.run - -;pce, Port 4, Gamepad: SELECT -pce.input.port4.gamepad.select - -;pce, Port 4, Gamepad: UP ↑ -pce.input.port4.gamepad.up - -;pce, Port 4, Gamepad: V -pce.input.port4.gamepad.v - -;pce, Port 4, Gamepad: VI -pce.input.port4.gamepad.vi - -;pce, Port 4, Mouse: Left Button -pce.input.port4.mouse.left mouse 0x0 button_left - -;pce, Port 4, Mouse: Motion Down -pce.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;pce, Port 4, Mouse: Motion Left -pce.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;pce, Port 4, Mouse: Motion Right -pce.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;pce, Port 4, Mouse: Motion Up -pce.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;pce, Port 4, Mouse: Right Button -pce.input.port4.mouse.right mouse 0x0 button_right - -;pce, Port 4, Mouse: RUN -pce.input.port4.mouse.run keyboard 0x0 40 - -;pce, Port 4, Mouse: SELECT -pce.input.port4.mouse.select keyboard 0x0 43 - -;Input device for Port 5 -pce.input.port5 gamepad - -;pce, Port 5, Gamepad: DOWN ↓ -pce.input.port5.gamepad.down - -;pce, Port 5, Gamepad: I -pce.input.port5.gamepad.i - -;pce, Port 5, Gamepad: II -pce.input.port5.gamepad.ii - -;pce, Port 5, Gamepad: III -pce.input.port5.gamepad.iii - -;pce, Port 5, Gamepad: IV -pce.input.port5.gamepad.iv - -;pce, Port 5, Gamepad: LEFT ← -pce.input.port5.gamepad.left - -;pce, Port 5, Gamepad: Mode -pce.input.port5.gamepad.mode_select - -;Default position for switch "Mode". -pce.input.port5.gamepad.mode_select.defpos 2 - -;pce, Port 5, Gamepad: Rapid I -pce.input.port5.gamepad.rapid_i - -;pce, Port 5, Gamepad: Rapid II -pce.input.port5.gamepad.rapid_ii - -;pce, Port 5, Gamepad: RIGHT → -pce.input.port5.gamepad.right - -;pce, Port 5, Gamepad: RUN -pce.input.port5.gamepad.run - -;pce, Port 5, Gamepad: SELECT -pce.input.port5.gamepad.select - -;pce, Port 5, Gamepad: UP ↑ -pce.input.port5.gamepad.up - -;pce, Port 5, Gamepad: V -pce.input.port5.gamepad.v - -;pce, Port 5, Gamepad: VI -pce.input.port5.gamepad.vi - -;pce, Port 5, Mouse: Left Button -pce.input.port5.mouse.left mouse 0x0 button_left - -;pce, Port 5, Mouse: Motion Down -pce.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;pce, Port 5, Mouse: Motion Left -pce.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;pce, Port 5, Mouse: Motion Right -pce.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;pce, Port 5, Mouse: Motion Up -pce.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;pce, Port 5, Mouse: Right Button -pce.input.port5.mouse.right mouse 0x0 button_right - -;pce, Port 5, Mouse: RUN -pce.input.port5.mouse.run keyboard 0x0 40 - -;pce, Port 5, Mouse: SELECT -pce.input.port5.mouse.select keyboard 0x0 43 - -;Emulated mouse sensitivity. -pce.mouse_sensitivity 0.50 - -;Remove 16-sprites-per-scanline hardware limit. -pce.nospritelimit 1 - -;Select PSG revision. -pce.psgrevision match - -;Sound quality. -pce.resamp_quality 3 - -;Sound output rate tolerance. -pce.resamp_rate_error 0.0000009 - -;Enable scanlines with specified opacity. -pce.scanlines 0 - -;Enable specified OpenGL shader. -pce.shader ipsharper - -;Force interlaced video to be treated as progressive. -pce.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -pce.shader.goat.hdiv 0.50 - -;Mask pattern. -pce.shader.goat.pat goatron - -;Enable scanlines effect. -pce.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -pce.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -pce.shader.goat.vdiv 0.50 - -;Last rendered scanline. -pce.slend 235 - -;First rendered scanline. -pce.slstart 4 - -;Enable specified special video scaler. -pce.special none - -;Stretch to fill screen. -pce.stretch full - -;Enable video temporal blur(50/50 previous/current frame by default). -pce.tblur 0 - -;Accumulate color data rather than discarding it. -pce.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -pce.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -pce.videoip 1 - -;Size of emulated VRAM per VDC in 16-bit words. DO NOT CHANGE THIS UNLESS YOU KNOW WTF YOU ARE DOING. -pce.vramsize 32768 - -;Full-screen horizontal resolution. -pce.xres 0 - -;Scaling factor for the X axis in windowed mode. -pce.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -pce.xscalefs 1.000000 - -;Full-screen vertical resolution. -pce.yres 0 - -;Scaling factor for the Y axis in windowed mode. -pce.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -pce.yscalefs 1.000000 - -;Enable dynamic ADPCM lowpass filter. -pce_fast.adpcmlp 0 - -;ADPCM volume. -pce_fast.adpcmvolume 100 - -;Enable Arcade Card emulation. -pce_fast.arcadecard 1 - -;Path to the CD BIOS -pce_fast.cdbios syscard3.pce - -;CD-DA volume. -pce_fast.cddavolume 100 - -;PSG volume when playing a CD game. -pce_fast.cdpsgvolume 100 - -;CD-ROM data transfer speed multiplier. -pce_fast.cdspeed 1 - -;Correct the aspect ratio. -pce_fast.correct_aspect 1 - -;If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily. -pce_fast.disable_softreset 0 - -;Enable (automatic) usage of this module. -pce_fast.enable 1 - -;Force monophonic sound output. -pce_fast.forcemono 0 - -;Force SuperGrafx emulation. -pce_fast.forcesgx 1 - -;Input device for Port 1 -pce_fast.input.port1 gamepad - -;pce_fast, Port 1, Gamepad: DOWN ↓ -pce_fast.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;pce_fast, Port 1, Gamepad: I -pce_fast.input.port1.gamepad.i joystick 0x0003045e028e01010008000b00000000 button_1 - -;pce_fast, Port 1, Gamepad: II -pce_fast.input.port1.gamepad.ii joystick 0x0003045e028e01010008000b00000000 button_0 - -;pce_fast, Port 1, Gamepad: III -pce_fast.input.port1.gamepad.iii joystick 0x0003045e028e01010008000b00000000 button_2 - -;pce_fast, Port 1, Gamepad: IV -pce_fast.input.port1.gamepad.iv joystick 0x0003045e028e01010008000b00000000 button_3 - -;pce_fast, Port 1, Gamepad: LEFT ← -pce_fast.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;pce_fast, Port 1, Gamepad: Mode -pce_fast.input.port1.gamepad.mode_select keyboard 0x0 38 || joystick 0x0003045e028e01010008000b00000000 abs_2- - -;Default position for switch "Mode". -pce_fast.input.port1.gamepad.mode_select.defpos 2 - -;pce_fast, Port 1, Gamepad: Rapid I -pce_fast.input.port1.gamepad.rapid_i keyboard 0x0 17 - -;pce_fast, Port 1, Gamepad: Rapid II -pce_fast.input.port1.gamepad.rapid_ii keyboard 0x0 17 - -;pce_fast, Port 1, Gamepad: RIGHT → -pce_fast.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;pce_fast, Port 1, Gamepad: RUN -pce_fast.input.port1.gamepad.run joystick 0x0003045e028e01010008000b00000000 button_7 - -;pce_fast, Port 1, Gamepad: SELECT -pce_fast.input.port1.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;pce_fast, Port 1, Gamepad: UP ↑ -pce_fast.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;pce_fast, Port 1, Gamepad: V -pce_fast.input.port1.gamepad.v joystick 0x0003045e028e01010008000b00000000 button_4 - -;pce_fast, Port 1, Gamepad: VI -pce_fast.input.port1.gamepad.vi joystick 0x0003045e028e01010008000b00000000 button_5 - -;pce_fast, Port 1, Mouse: Left Button -pce_fast.input.port1.mouse.left mouse 0x0 button_left - -;pce_fast, Port 1, Mouse: Motion Down -pce_fast.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;pce_fast, Port 1, Mouse: Motion Left -pce_fast.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;pce_fast, Port 1, Mouse: Motion Right -pce_fast.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;pce_fast, Port 1, Mouse: Motion Up -pce_fast.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;pce_fast, Port 1, Mouse: Right Button -pce_fast.input.port1.mouse.right mouse 0x0 button_right - -;pce_fast, Port 1, Mouse: RUN -pce_fast.input.port1.mouse.run keyboard 0x0 40 - -;pce_fast, Port 1, Mouse: SELECT -pce_fast.input.port1.mouse.select keyboard 0x0 43 - -;Input device for Port 2 -pce_fast.input.port2 gamepad - -;pce_fast, Port 2, Gamepad: DOWN ↓ -pce_fast.input.port2.gamepad.down - -;pce_fast, Port 2, Gamepad: I -pce_fast.input.port2.gamepad.i - -;pce_fast, Port 2, Gamepad: II -pce_fast.input.port2.gamepad.ii - -;pce_fast, Port 2, Gamepad: III -pce_fast.input.port2.gamepad.iii - -;pce_fast, Port 2, Gamepad: IV -pce_fast.input.port2.gamepad.iv - -;pce_fast, Port 2, Gamepad: LEFT ← -pce_fast.input.port2.gamepad.left - -;pce_fast, Port 2, Gamepad: Mode -pce_fast.input.port2.gamepad.mode_select - -;Default position for switch "Mode". -pce_fast.input.port2.gamepad.mode_select.defpos 2 - -;pce_fast, Port 2, Gamepad: Rapid I -pce_fast.input.port2.gamepad.rapid_i - -;pce_fast, Port 2, Gamepad: Rapid II -pce_fast.input.port2.gamepad.rapid_ii - -;pce_fast, Port 2, Gamepad: RIGHT → -pce_fast.input.port2.gamepad.right - -;pce_fast, Port 2, Gamepad: RUN -pce_fast.input.port2.gamepad.run - -;pce_fast, Port 2, Gamepad: SELECT -pce_fast.input.port2.gamepad.select - -;pce_fast, Port 2, Gamepad: UP ↑ -pce_fast.input.port2.gamepad.up - -;pce_fast, Port 2, Gamepad: V -pce_fast.input.port2.gamepad.v - -;pce_fast, Port 2, Gamepad: VI -pce_fast.input.port2.gamepad.vi - -;pce_fast, Port 2, Mouse: Left Button -pce_fast.input.port2.mouse.left mouse 0x0 button_left - -;pce_fast, Port 2, Mouse: Motion Down -pce_fast.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;pce_fast, Port 2, Mouse: Motion Left -pce_fast.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;pce_fast, Port 2, Mouse: Motion Right -pce_fast.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;pce_fast, Port 2, Mouse: Motion Up -pce_fast.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;pce_fast, Port 2, Mouse: Right Button -pce_fast.input.port2.mouse.right mouse 0x0 button_right - -;pce_fast, Port 2, Mouse: RUN -pce_fast.input.port2.mouse.run keyboard 0x0 40 - -;pce_fast, Port 2, Mouse: SELECT -pce_fast.input.port2.mouse.select keyboard 0x0 43 - -;Input device for Port 3 -pce_fast.input.port3 gamepad - -;pce_fast, Port 3, Gamepad: DOWN ↓ -pce_fast.input.port3.gamepad.down - -;pce_fast, Port 3, Gamepad: I -pce_fast.input.port3.gamepad.i - -;pce_fast, Port 3, Gamepad: II -pce_fast.input.port3.gamepad.ii - -;pce_fast, Port 3, Gamepad: III -pce_fast.input.port3.gamepad.iii - -;pce_fast, Port 3, Gamepad: IV -pce_fast.input.port3.gamepad.iv - -;pce_fast, Port 3, Gamepad: LEFT ← -pce_fast.input.port3.gamepad.left - -;pce_fast, Port 3, Gamepad: Mode -pce_fast.input.port3.gamepad.mode_select - -;Default position for switch "Mode". -pce_fast.input.port3.gamepad.mode_select.defpos 2 - -;pce_fast, Port 3, Gamepad: Rapid I -pce_fast.input.port3.gamepad.rapid_i - -;pce_fast, Port 3, Gamepad: Rapid II -pce_fast.input.port3.gamepad.rapid_ii - -;pce_fast, Port 3, Gamepad: RIGHT → -pce_fast.input.port3.gamepad.right - -;pce_fast, Port 3, Gamepad: RUN -pce_fast.input.port3.gamepad.run - -;pce_fast, Port 3, Gamepad: SELECT -pce_fast.input.port3.gamepad.select - -;pce_fast, Port 3, Gamepad: UP ↑ -pce_fast.input.port3.gamepad.up - -;pce_fast, Port 3, Gamepad: V -pce_fast.input.port3.gamepad.v - -;pce_fast, Port 3, Gamepad: VI -pce_fast.input.port3.gamepad.vi - -;pce_fast, Port 3, Mouse: Left Button -pce_fast.input.port3.mouse.left mouse 0x0 button_left - -;pce_fast, Port 3, Mouse: Motion Down -pce_fast.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;pce_fast, Port 3, Mouse: Motion Left -pce_fast.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;pce_fast, Port 3, Mouse: Motion Right -pce_fast.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;pce_fast, Port 3, Mouse: Motion Up -pce_fast.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;pce_fast, Port 3, Mouse: Right Button -pce_fast.input.port3.mouse.right mouse 0x0 button_right - -;pce_fast, Port 3, Mouse: RUN -pce_fast.input.port3.mouse.run keyboard 0x0 40 - -;pce_fast, Port 3, Mouse: SELECT -pce_fast.input.port3.mouse.select keyboard 0x0 43 - -;Input device for Port 4 -pce_fast.input.port4 gamepad - -;pce_fast, Port 4, Gamepad: DOWN ↓ -pce_fast.input.port4.gamepad.down - -;pce_fast, Port 4, Gamepad: I -pce_fast.input.port4.gamepad.i - -;pce_fast, Port 4, Gamepad: II -pce_fast.input.port4.gamepad.ii - -;pce_fast, Port 4, Gamepad: III -pce_fast.input.port4.gamepad.iii - -;pce_fast, Port 4, Gamepad: IV -pce_fast.input.port4.gamepad.iv - -;pce_fast, Port 4, Gamepad: LEFT ← -pce_fast.input.port4.gamepad.left - -;pce_fast, Port 4, Gamepad: Mode -pce_fast.input.port4.gamepad.mode_select - -;Default position for switch "Mode". -pce_fast.input.port4.gamepad.mode_select.defpos 2 - -;pce_fast, Port 4, Gamepad: Rapid I -pce_fast.input.port4.gamepad.rapid_i - -;pce_fast, Port 4, Gamepad: Rapid II -pce_fast.input.port4.gamepad.rapid_ii - -;pce_fast, Port 4, Gamepad: RIGHT → -pce_fast.input.port4.gamepad.right - -;pce_fast, Port 4, Gamepad: RUN -pce_fast.input.port4.gamepad.run - -;pce_fast, Port 4, Gamepad: SELECT -pce_fast.input.port4.gamepad.select - -;pce_fast, Port 4, Gamepad: UP ↑ -pce_fast.input.port4.gamepad.up - -;pce_fast, Port 4, Gamepad: V -pce_fast.input.port4.gamepad.v - -;pce_fast, Port 4, Gamepad: VI -pce_fast.input.port4.gamepad.vi - -;pce_fast, Port 4, Mouse: Left Button -pce_fast.input.port4.mouse.left mouse 0x0 button_left - -;pce_fast, Port 4, Mouse: Motion Down -pce_fast.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;pce_fast, Port 4, Mouse: Motion Left -pce_fast.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;pce_fast, Port 4, Mouse: Motion Right -pce_fast.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;pce_fast, Port 4, Mouse: Motion Up -pce_fast.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;pce_fast, Port 4, Mouse: Right Button -pce_fast.input.port4.mouse.right mouse 0x0 button_right - -;pce_fast, Port 4, Mouse: RUN -pce_fast.input.port4.mouse.run keyboard 0x0 40 - -;pce_fast, Port 4, Mouse: SELECT -pce_fast.input.port4.mouse.select keyboard 0x0 43 - -;Input device for Port 5 -pce_fast.input.port5 gamepad - -;pce_fast, Port 5, Gamepad: DOWN ↓ -pce_fast.input.port5.gamepad.down - -;pce_fast, Port 5, Gamepad: I -pce_fast.input.port5.gamepad.i - -;pce_fast, Port 5, Gamepad: II -pce_fast.input.port5.gamepad.ii - -;pce_fast, Port 5, Gamepad: III -pce_fast.input.port5.gamepad.iii - -;pce_fast, Port 5, Gamepad: IV -pce_fast.input.port5.gamepad.iv - -;pce_fast, Port 5, Gamepad: LEFT ← -pce_fast.input.port5.gamepad.left - -;pce_fast, Port 5, Gamepad: Mode -pce_fast.input.port5.gamepad.mode_select - -;Default position for switch "Mode". -pce_fast.input.port5.gamepad.mode_select.defpos 2 - -;pce_fast, Port 5, Gamepad: Rapid I -pce_fast.input.port5.gamepad.rapid_i - -;pce_fast, Port 5, Gamepad: Rapid II -pce_fast.input.port5.gamepad.rapid_ii - -;pce_fast, Port 5, Gamepad: RIGHT → -pce_fast.input.port5.gamepad.right - -;pce_fast, Port 5, Gamepad: RUN -pce_fast.input.port5.gamepad.run - -;pce_fast, Port 5, Gamepad: SELECT -pce_fast.input.port5.gamepad.select - -;pce_fast, Port 5, Gamepad: UP ↑ -pce_fast.input.port5.gamepad.up - -;pce_fast, Port 5, Gamepad: V -pce_fast.input.port5.gamepad.v - -;pce_fast, Port 5, Gamepad: VI -pce_fast.input.port5.gamepad.vi - -;pce_fast, Port 5, Mouse: Left Button -pce_fast.input.port5.mouse.left mouse 0x0 button_left - -;pce_fast, Port 5, Mouse: Motion Down -pce_fast.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;pce_fast, Port 5, Mouse: Motion Left -pce_fast.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;pce_fast, Port 5, Mouse: Motion Right -pce_fast.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;pce_fast, Port 5, Mouse: Motion Up -pce_fast.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;pce_fast, Port 5, Mouse: Right Button -pce_fast.input.port5.mouse.right mouse 0x0 button_right - -;pce_fast, Port 5, Mouse: RUN -pce_fast.input.port5.mouse.run keyboard 0x0 40 - -;pce_fast, Port 5, Mouse: SELECT -pce_fast.input.port5.mouse.select keyboard 0x0 43 - -;Mouse sensitivity. -pce_fast.mouse_sensitivity 0.50 - -;Remove 16-sprites-per-scanline hardware limit. -pce_fast.nospritelimit 1 - -;CPU overclock multiplier. -pce_fast.ocmultiplier 1 - -;Enable scanlines with specified opacity. -pce_fast.scanlines 0 - -;Enable specified OpenGL shader. -pce_fast.shader sabr - -;Force interlaced video to be treated as progressive. -pce_fast.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -pce_fast.shader.goat.hdiv 0.50 - -;Mask pattern. -pce_fast.shader.goat.pat goatron - -;Enable scanlines effect. -pce_fast.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -pce_fast.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -pce_fast.shader.goat.vdiv 0.50 - -;Last rendered scanline. -pce_fast.slend 235 - -;First rendered scanline. -pce_fast.slstart 4 - -;Enable specified special video scaler. -pce_fast.special none - -;Stretch to fill screen. -pce_fast.stretch full - -;Enable video temporal blur(50/50 previous/current frame by default). -pce_fast.tblur 0 - -;Accumulate color data rather than discarding it. -pce_fast.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -pce_fast.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -pce_fast.videoip 1 - -;Full-screen horizontal resolution. -pce_fast.xres 0 - -;Scaling factor for the X axis in windowed mode. -pce_fast.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -pce_fast.xscalefs 1.000000 - -;Full-screen vertical resolution. -pce_fast.yres 0 - -;Scaling factor for the Y axis in windowed mode. -pce_fast.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -pce_fast.yscalefs 1.000000 - -;Hack that emulates the codec a buggy ADPCM encoder used for some games' ADPCM. -pcfx.adpcm.emulate_buggy_codec 0 - -;Hack to suppress clicks caused by forced channel resets. -pcfx.adpcm.suppress_channel_reset_clicks 1 - -;Path to the ROM BIOS -pcfx.bios /storage/roms/bios/pcfx.rom - -;Emulated CD-ROM speed. -pcfx.cdspeed 2 - -;CPU emulation mode. -pcfx.cpu_emulation accurate - -;Disassembly font size. -pcfx.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -pcfx.debugger.memcharenc shift_jis - -;Disable internal and external BRAM. -pcfx.disable_bram 0 - -;When RUN+SEL are pressed simultaneously, disable both buttons temporarily. -pcfx.disable_softreset 0 - -;Enable (automatic) usage of this module. -pcfx.enable 1 - -;Force monophonic sound output. -pcfx.forcemono 0 - -;Path to the FX-SCSI ROM -pcfx.fxscsi 0 - -;Emulated width for 7.16MHz dot-clock mode. -pcfx.high_dotclock_width 1024 - -;Input device for Port 1 -pcfx.input.port1 gamepad - -;pcfx, Port 1, Gamepad: DOWN ↓ -pcfx.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;pcfx, Port 1, Gamepad: I -pcfx.input.port1.gamepad.i joystick 0x0003045e028e01010008000b00000000 button_1 - -;pcfx, Port 1, Gamepad: II -pcfx.input.port1.gamepad.ii joystick 0x0003045e028e01010008000b00000000 button_0 - -;pcfx, Port 1, Gamepad: III -pcfx.input.port1.gamepad.iii joystick 0x0003045e028e01010008000b00000000 button_3 - -;pcfx, Port 1, Gamepad: IV -pcfx.input.port1.gamepad.iv joystick 0x0003045e028e01010008000b00000000 button_2 - -;pcfx, Port 1, Gamepad: LEFT ← -pcfx.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;pcfx, Port 1, Gamepad: MODE 1 -pcfx.input.port1.gamepad.mode1 joystick 0x0003045e028e01010008000b00000000 abs_2- - -;Default position for switch "MODE 1". -pcfx.input.port1.gamepad.mode1.defpos a - -;pcfx, Port 1, Gamepad: MODE 2 -pcfx.input.port1.gamepad.mode2 joystick 0x0003045e028e01010008000b00000000 abs_5- - -;Default position for switch "MODE 2". -pcfx.input.port1.gamepad.mode2.defpos a - -;pcfx, Port 1, Gamepad: RIGHT → -pcfx.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;pcfx, Port 1, Gamepad: RUN -pcfx.input.port1.gamepad.run joystick 0x0003045e028e01010008000b00000000 button_7 - -;pcfx, Port 1, Gamepad: SELECT -pcfx.input.port1.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;pcfx, Port 1, Gamepad: UP ↑ -pcfx.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;pcfx, Port 1, Gamepad: V -pcfx.input.port1.gamepad.v joystick 0x0003045e028e01010008000b00000000 button_4 - -;pcfx, Port 1, Gamepad: VI -pcfx.input.port1.gamepad.vi joystick 0x0003045e028e01010008000b00000000 button_5 - -;pcfx, Port 1, Mouse: Left Button -pcfx.input.port1.mouse.left mouse 0x0 button_left - -;pcfx, Port 1, Mouse: Motion Down -pcfx.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 1, Mouse: Motion Left -pcfx.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 1, Mouse: Motion Right -pcfx.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 1, Mouse: Motion Up -pcfx.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 1, Mouse: Right Button -pcfx.input.port1.mouse.right mouse 0x0 button_right - -;Enable multitap on PC-FX port 1. -pcfx.input.port1.multitap 0 - -;Input device for Port 2 -pcfx.input.port2 gamepad - -;pcfx, Port 2, Gamepad: DOWN ↓ -pcfx.input.port2.gamepad.down - -;pcfx, Port 2, Gamepad: I -pcfx.input.port2.gamepad.i - -;pcfx, Port 2, Gamepad: II -pcfx.input.port2.gamepad.ii - -;pcfx, Port 2, Gamepad: III -pcfx.input.port2.gamepad.iii - -;pcfx, Port 2, Gamepad: IV -pcfx.input.port2.gamepad.iv - -;pcfx, Port 2, Gamepad: LEFT ← -pcfx.input.port2.gamepad.left - -;pcfx, Port 2, Gamepad: MODE 1 -pcfx.input.port2.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port2.gamepad.mode1.defpos a - -;pcfx, Port 2, Gamepad: MODE 2 -pcfx.input.port2.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port2.gamepad.mode2.defpos a - -;pcfx, Port 2, Gamepad: RIGHT → -pcfx.input.port2.gamepad.right - -;pcfx, Port 2, Gamepad: RUN -pcfx.input.port2.gamepad.run - -;pcfx, Port 2, Gamepad: SELECT -pcfx.input.port2.gamepad.select - -;pcfx, Port 2, Gamepad: UP ↑ -pcfx.input.port2.gamepad.up - -;pcfx, Port 2, Gamepad: V -pcfx.input.port2.gamepad.v - -;pcfx, Port 2, Gamepad: VI -pcfx.input.port2.gamepad.vi - -;pcfx, Port 2, Mouse: Left Button -pcfx.input.port2.mouse.left mouse 0x0 button_left - -;pcfx, Port 2, Mouse: Motion Down -pcfx.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 2, Mouse: Motion Left -pcfx.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 2, Mouse: Motion Right -pcfx.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 2, Mouse: Motion Up -pcfx.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 2, Mouse: Right Button -pcfx.input.port2.mouse.right mouse 0x0 button_right - -;Enable multitap on PC-FX port 2. -pcfx.input.port2.multitap 0 - -;Input device for Port 3 -pcfx.input.port3 gamepad - -;pcfx, Port 3, Gamepad: DOWN ↓ -pcfx.input.port3.gamepad.down - -;pcfx, Port 3, Gamepad: I -pcfx.input.port3.gamepad.i - -;pcfx, Port 3, Gamepad: II -pcfx.input.port3.gamepad.ii - -;pcfx, Port 3, Gamepad: III -pcfx.input.port3.gamepad.iii - -;pcfx, Port 3, Gamepad: IV -pcfx.input.port3.gamepad.iv - -;pcfx, Port 3, Gamepad: LEFT ← -pcfx.input.port3.gamepad.left - -;pcfx, Port 3, Gamepad: MODE 1 -pcfx.input.port3.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port3.gamepad.mode1.defpos a - -;pcfx, Port 3, Gamepad: MODE 2 -pcfx.input.port3.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port3.gamepad.mode2.defpos a - -;pcfx, Port 3, Gamepad: RIGHT → -pcfx.input.port3.gamepad.right - -;pcfx, Port 3, Gamepad: RUN -pcfx.input.port3.gamepad.run - -;pcfx, Port 3, Gamepad: SELECT -pcfx.input.port3.gamepad.select - -;pcfx, Port 3, Gamepad: UP ↑ -pcfx.input.port3.gamepad.up - -;pcfx, Port 3, Gamepad: V -pcfx.input.port3.gamepad.v - -;pcfx, Port 3, Gamepad: VI -pcfx.input.port3.gamepad.vi - -;pcfx, Port 3, Mouse: Left Button -pcfx.input.port3.mouse.left mouse 0x0 button_left - -;pcfx, Port 3, Mouse: Motion Down -pcfx.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 3, Mouse: Motion Left -pcfx.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 3, Mouse: Motion Right -pcfx.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 3, Mouse: Motion Up -pcfx.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 3, Mouse: Right Button -pcfx.input.port3.mouse.right mouse 0x0 button_right - -;Input device for Port 4 -pcfx.input.port4 gamepad - -;pcfx, Port 4, Gamepad: DOWN ↓ -pcfx.input.port4.gamepad.down - -;pcfx, Port 4, Gamepad: I -pcfx.input.port4.gamepad.i - -;pcfx, Port 4, Gamepad: II -pcfx.input.port4.gamepad.ii - -;pcfx, Port 4, Gamepad: III -pcfx.input.port4.gamepad.iii - -;pcfx, Port 4, Gamepad: IV -pcfx.input.port4.gamepad.iv - -;pcfx, Port 4, Gamepad: LEFT ← -pcfx.input.port4.gamepad.left - -;pcfx, Port 4, Gamepad: MODE 1 -pcfx.input.port4.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port4.gamepad.mode1.defpos a - -;pcfx, Port 4, Gamepad: MODE 2 -pcfx.input.port4.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port4.gamepad.mode2.defpos a - -;pcfx, Port 4, Gamepad: RIGHT → -pcfx.input.port4.gamepad.right - -;pcfx, Port 4, Gamepad: RUN -pcfx.input.port4.gamepad.run - -;pcfx, Port 4, Gamepad: SELECT -pcfx.input.port4.gamepad.select - -;pcfx, Port 4, Gamepad: UP ↑ -pcfx.input.port4.gamepad.up - -;pcfx, Port 4, Gamepad: V -pcfx.input.port4.gamepad.v - -;pcfx, Port 4, Gamepad: VI -pcfx.input.port4.gamepad.vi - -;pcfx, Port 4, Mouse: Left Button -pcfx.input.port4.mouse.left mouse 0x0 button_left - -;pcfx, Port 4, Mouse: Motion Down -pcfx.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 4, Mouse: Motion Left -pcfx.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 4, Mouse: Motion Right -pcfx.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 4, Mouse: Motion Up -pcfx.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 4, Mouse: Right Button -pcfx.input.port4.mouse.right mouse 0x0 button_right - -;Input device for Port 5 -pcfx.input.port5 gamepad - -;pcfx, Port 5, Gamepad: DOWN ↓ -pcfx.input.port5.gamepad.down - -;pcfx, Port 5, Gamepad: I -pcfx.input.port5.gamepad.i - -;pcfx, Port 5, Gamepad: II -pcfx.input.port5.gamepad.ii - -;pcfx, Port 5, Gamepad: III -pcfx.input.port5.gamepad.iii - -;pcfx, Port 5, Gamepad: IV -pcfx.input.port5.gamepad.iv - -;pcfx, Port 5, Gamepad: LEFT ← -pcfx.input.port5.gamepad.left - -;pcfx, Port 5, Gamepad: MODE 1 -pcfx.input.port5.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port5.gamepad.mode1.defpos a - -;pcfx, Port 5, Gamepad: MODE 2 -pcfx.input.port5.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port5.gamepad.mode2.defpos a - -;pcfx, Port 5, Gamepad: RIGHT → -pcfx.input.port5.gamepad.right - -;pcfx, Port 5, Gamepad: RUN -pcfx.input.port5.gamepad.run - -;pcfx, Port 5, Gamepad: SELECT -pcfx.input.port5.gamepad.select - -;pcfx, Port 5, Gamepad: UP ↑ -pcfx.input.port5.gamepad.up - -;pcfx, Port 5, Gamepad: V -pcfx.input.port5.gamepad.v - -;pcfx, Port 5, Gamepad: VI -pcfx.input.port5.gamepad.vi - -;pcfx, Port 5, Mouse: Left Button -pcfx.input.port5.mouse.left mouse 0x0 button_left - -;pcfx, Port 5, Mouse: Motion Down -pcfx.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 5, Mouse: Motion Left -pcfx.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 5, Mouse: Motion Right -pcfx.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 5, Mouse: Motion Up -pcfx.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 5, Mouse: Right Button -pcfx.input.port5.mouse.right mouse 0x0 button_right - -;Input device for Port 6 -pcfx.input.port6 gamepad - -;pcfx, Port 6, Gamepad: DOWN ↓ -pcfx.input.port6.gamepad.down - -;pcfx, Port 6, Gamepad: I -pcfx.input.port6.gamepad.i - -;pcfx, Port 6, Gamepad: II -pcfx.input.port6.gamepad.ii - -;pcfx, Port 6, Gamepad: III -pcfx.input.port6.gamepad.iii - -;pcfx, Port 6, Gamepad: IV -pcfx.input.port6.gamepad.iv - -;pcfx, Port 6, Gamepad: LEFT ← -pcfx.input.port6.gamepad.left - -;pcfx, Port 6, Gamepad: MODE 1 -pcfx.input.port6.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port6.gamepad.mode1.defpos a - -;pcfx, Port 6, Gamepad: MODE 2 -pcfx.input.port6.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port6.gamepad.mode2.defpos a - -;pcfx, Port 6, Gamepad: RIGHT → -pcfx.input.port6.gamepad.right - -;pcfx, Port 6, Gamepad: RUN -pcfx.input.port6.gamepad.run - -;pcfx, Port 6, Gamepad: SELECT -pcfx.input.port6.gamepad.select - -;pcfx, Port 6, Gamepad: UP ↑ -pcfx.input.port6.gamepad.up - -;pcfx, Port 6, Gamepad: V -pcfx.input.port6.gamepad.v - -;pcfx, Port 6, Gamepad: VI -pcfx.input.port6.gamepad.vi - -;pcfx, Port 6, Mouse: Left Button -pcfx.input.port6.mouse.left mouse 0x0 button_left - -;pcfx, Port 6, Mouse: Motion Down -pcfx.input.port6.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 6, Mouse: Motion Left -pcfx.input.port6.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 6, Mouse: Motion Right -pcfx.input.port6.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 6, Mouse: Motion Up -pcfx.input.port6.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 6, Mouse: Right Button -pcfx.input.port6.mouse.right mouse 0x0 button_right - -;Input device for Port 7 -pcfx.input.port7 gamepad - -;pcfx, Port 7, Gamepad: DOWN ↓ -pcfx.input.port7.gamepad.down - -;pcfx, Port 7, Gamepad: I -pcfx.input.port7.gamepad.i - -;pcfx, Port 7, Gamepad: II -pcfx.input.port7.gamepad.ii - -;pcfx, Port 7, Gamepad: III -pcfx.input.port7.gamepad.iii - -;pcfx, Port 7, Gamepad: IV -pcfx.input.port7.gamepad.iv - -;pcfx, Port 7, Gamepad: LEFT ← -pcfx.input.port7.gamepad.left - -;pcfx, Port 7, Gamepad: MODE 1 -pcfx.input.port7.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port7.gamepad.mode1.defpos a - -;pcfx, Port 7, Gamepad: MODE 2 -pcfx.input.port7.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port7.gamepad.mode2.defpos a - -;pcfx, Port 7, Gamepad: RIGHT → -pcfx.input.port7.gamepad.right - -;pcfx, Port 7, Gamepad: RUN -pcfx.input.port7.gamepad.run - -;pcfx, Port 7, Gamepad: SELECT -pcfx.input.port7.gamepad.select - -;pcfx, Port 7, Gamepad: UP ↑ -pcfx.input.port7.gamepad.up - -;pcfx, Port 7, Gamepad: V -pcfx.input.port7.gamepad.v - -;pcfx, Port 7, Gamepad: VI -pcfx.input.port7.gamepad.vi - -;pcfx, Port 7, Mouse: Left Button -pcfx.input.port7.mouse.left mouse 0x0 button_left - -;pcfx, Port 7, Mouse: Motion Down -pcfx.input.port7.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 7, Mouse: Motion Left -pcfx.input.port7.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 7, Mouse: Motion Right -pcfx.input.port7.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 7, Mouse: Motion Up -pcfx.input.port7.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 7, Mouse: Right Button -pcfx.input.port7.mouse.right mouse 0x0 button_right - -;Input device for Port 8 -pcfx.input.port8 gamepad - -;pcfx, Port 8, Gamepad: DOWN ↓ -pcfx.input.port8.gamepad.down - -;pcfx, Port 8, Gamepad: I -pcfx.input.port8.gamepad.i - -;pcfx, Port 8, Gamepad: II -pcfx.input.port8.gamepad.ii - -;pcfx, Port 8, Gamepad: III -pcfx.input.port8.gamepad.iii - -;pcfx, Port 8, Gamepad: IV -pcfx.input.port8.gamepad.iv - -;pcfx, Port 8, Gamepad: LEFT ← -pcfx.input.port8.gamepad.left - -;pcfx, Port 8, Gamepad: MODE 1 -pcfx.input.port8.gamepad.mode1 - -;Default position for switch "MODE 1". -pcfx.input.port8.gamepad.mode1.defpos a - -;pcfx, Port 8, Gamepad: MODE 2 -pcfx.input.port8.gamepad.mode2 - -;Default position for switch "MODE 2". -pcfx.input.port8.gamepad.mode2.defpos a - -;pcfx, Port 8, Gamepad: RIGHT → -pcfx.input.port8.gamepad.right - -;pcfx, Port 8, Gamepad: RUN -pcfx.input.port8.gamepad.run - -;pcfx, Port 8, Gamepad: SELECT -pcfx.input.port8.gamepad.select - -;pcfx, Port 8, Gamepad: UP ↑ -pcfx.input.port8.gamepad.up - -;pcfx, Port 8, Gamepad: V -pcfx.input.port8.gamepad.v - -;pcfx, Port 8, Gamepad: VI -pcfx.input.port8.gamepad.vi - -;pcfx, Port 8, Mouse: Left Button -pcfx.input.port8.mouse.left mouse 0x0 button_left - -;pcfx, Port 8, Mouse: Motion Down -pcfx.input.port8.mouse.motion_down mouse 0x0 rel_y+ - -;pcfx, Port 8, Mouse: Motion Left -pcfx.input.port8.mouse.motion_left mouse 0x0 rel_x- - -;pcfx, Port 8, Mouse: Motion Right -pcfx.input.port8.mouse.motion_right mouse 0x0 rel_x+ - -;pcfx, Port 8, Mouse: Motion Up -pcfx.input.port8.mouse.motion_up mouse 0x0 rel_y- - -;pcfx, Port 8, Mouse: Right Button -pcfx.input.port8.mouse.right mouse 0x0 button_right - -;Mouse sensitivity. -pcfx.mouse_sensitivity 1.25 - -;Remove 16-sprites-per-scanline hardware limit. -pcfx.nospritelimit 0 - -;Enable bilinear interpolation on the chroma channel of RAINBOW YUV output. -pcfx.rainbow.chromaip 0 - -;Sound quality. -pcfx.resamp_quality 3 - -;Output rate tolerance. -pcfx.resamp_rate_error 0.0000009 - -;Enable scanlines with specified opacity. -pcfx.scanlines 0 - -;Enable specified OpenGL shader. -pcfx.shader sabr - -;Force interlaced video to be treated as progressive. -pcfx.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -pcfx.shader.goat.hdiv 0.50 - -;Mask pattern. -pcfx.shader.goat.pat goatron - -;Enable scanlines effect. -pcfx.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -pcfx.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -pcfx.shader.goat.vdiv 0.50 - -;Last rendered scanline. -pcfx.slend 235 - -;First rendered scanline. -pcfx.slstart 4 - -;Enable specified special video scaler. -pcfx.special none - -;Stretch to fill screen. -pcfx.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -pcfx.tblur 0 - -;Accumulate color data rather than discarding it. -pcfx.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -pcfx.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -pcfx.videoip 1 - -;Full-screen horizontal resolution. -pcfx.xres 0 - -;Scaling factor for the X axis in windowed mode. -pcfx.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -pcfx.xscalefs 1.000000 - -;Full-screen vertical resolution. -pcfx.yres 0 - -;Scaling factor for the Y axis in windowed mode. -pcfx.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -pcfx.yscalefs 1.000000 - -;Enable scanlines with specified opacity. -player.scanlines 0 - -;Enable specified OpenGL shader. -player.shader none - -;Force interlaced video to be treated as progressive. -player.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -player.shader.goat.hdiv 0.50 - -;Mask pattern. -player.shader.goat.pat goatron - -;Enable scanlines effect. -player.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -player.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -player.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -player.special none - -;Stretch to fill screen. -player.stretch aspect_mult2 - -;Enable (bi)linear interpolation. -player.videoip 0 - -;Full-screen horizontal resolution. -player.xres 0 - -;Scaling factor for the X axis in windowed mode. -player.xscale 2.000000 - -;Scaling factor for the X axis in fullscreen mode. -player.xscalefs 1.000000 - -;Full-screen vertical resolution. -player.yres 0 - -;Scaling factor for the Y axis in windowed mode. -player.yscale 2.000000 - -;Scaling factor for the Y axis in fullscreen mode. -player.yscalefs 1.000000 - -;Path to the Europe SCPH-5502/v3.0E ROM BIOS -psx.bios_eu scph5502.bin - -;Path to the Japan SCPH-5500/v3.0J ROM BIOS -psx.bios_jp scph5500.bin - -;Path to the North America SCPH-5501/v3.0A ROM BIOS -psx.bios_na scph5501.bin - -;Enable BIOS ROM image sanity checks. -psx.bios_sanity 1 - -;Enable CD (image) sanity checks. -psx.cd_sanity 1 - -;Correct aspect ratio. -psx.correct_aspect 1 - -;CD image to use with .PSX/.EXE loading. -psx.dbg_exe_cdpath - -;Debug printf verbosity level. -psx.dbg_level 0 - -;Disassembly font size. -psx.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -psx.debugger.memcharenc shift_jis - -;Enable (automatic) usage of this module. -psx.enable 1 - -;Force monophonic sound output. -psx.forcemono 0 - -;Show horizontal overscan area. -psx.h_overscan 1 - -;Enable analog mode combo-button alternate toggle. -psx.input.analog_mode_ct 0 - -;Compare value for analog mode combo-button alternate toggle. -psx.input.analog_mode_ct.compare 0x0F09 - -;Emulated mouse sensitivity. -psx.input.mouse_sensitivity 1.00 - -;Input device for Virtual Port 1 -psx.input.port1 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 1. -psx.input.port1.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 1, Analog Joystick: Right stick, R-thumb -psx.input.port1.analogjoy.circle - -;psx, Virtual Port 1, Analog Joystick: Right stick, L-thumb -psx.input.port1.analogjoy.cross - -;psx, Virtual Port 1, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port1.analogjoy.down - -;psx, Virtual Port 1, Analog Joystick: Left stick, L-thumb -psx.input.port1.analogjoy.l1 - -;psx, Virtual Port 1, Analog Joystick: Left stick, Trigger -psx.input.port1.analogjoy.l2 - -;psx, Virtual Port 1, Analog Joystick: Thumbstick LEFT ← -psx.input.port1.analogjoy.left - -;psx, Virtual Port 1, Analog Joystick: Left Stick, BACK ↓ -psx.input.port1.analogjoy.lstick_down - -;psx, Virtual Port 1, Analog Joystick: Left Stick, LEFT ← -psx.input.port1.analogjoy.lstick_left - -;psx, Virtual Port 1, Analog Joystick: Left Stick, RIGHT → -psx.input.port1.analogjoy.lstick_right - -;psx, Virtual Port 1, Analog Joystick: Left Stick, FORE ↑ -psx.input.port1.analogjoy.lstick_up - -;psx, Virtual Port 1, Analog Joystick: Left stick, R-thumb -psx.input.port1.analogjoy.r1 - -;psx, Virtual Port 1, Analog Joystick: Left stick, Pinky -psx.input.port1.analogjoy.r2 - -;psx, Virtual Port 1, Analog Joystick: Thumbstick RIGHT → -psx.input.port1.analogjoy.right - -;psx, Virtual Port 1, Analog Joystick: Right Stick, BACK ↓ -psx.input.port1.analogjoy.rstick_down - -;psx, Virtual Port 1, Analog Joystick: Right Stick, LEFT ← -psx.input.port1.analogjoy.rstick_left - -;psx, Virtual Port 1, Analog Joystick: Right Stick, RIGHT → -psx.input.port1.analogjoy.rstick_right - -;psx, Virtual Port 1, Analog Joystick: Right Stick, FORE ↑ -psx.input.port1.analogjoy.rstick_up - -;psx, Virtual Port 1, Analog Joystick: SELECT -psx.input.port1.analogjoy.select - -;psx, Virtual Port 1, Analog Joystick: Right stick, Trigger -psx.input.port1.analogjoy.square - -;psx, Virtual Port 1, Analog Joystick: START -psx.input.port1.analogjoy.start - -;psx, Virtual Port 1, Analog Joystick: Right stick, Pinky -psx.input.port1.analogjoy.triangle - -;psx, Virtual Port 1, Analog Joystick: Thumbstick UP ↑ -psx.input.port1.analogjoy.up - -;psx, Virtual Port 1, Dance Pad: ○ (upper right) -psx.input.port1.dancepad.circle keyboard 0x0 97 - -;psx, Virtual Port 1, Dance Pad: x (upper left) -psx.input.port1.dancepad.cross keyboard 0x0 95 - -;psx, Virtual Port 1, Dance Pad: DOWN ↓ -psx.input.port1.dancepad.down keyboard 0x0 90 - -;psx, Virtual Port 1, Dance Pad: LEFT ← -psx.input.port1.dancepad.left keyboard 0x0 92 - -;psx, Virtual Port 1, Dance Pad: RIGHT → -psx.input.port1.dancepad.right keyboard 0x0 94 - -;psx, Virtual Port 1, Dance Pad: SELECT -psx.input.port1.dancepad.select keyboard 0x0 84 - -;psx, Virtual Port 1, Dance Pad: □ (lower right) -psx.input.port1.dancepad.square keyboard 0x0 91 - -;psx, Virtual Port 1, Dance Pad: START -psx.input.port1.dancepad.start keyboard 0x0 85 - -;psx, Virtual Port 1, Dance Pad: △ (lower left) -psx.input.port1.dancepad.triangle keyboard 0x0 89 - -;psx, Virtual Port 1, Dance Pad: UP ↑ -psx.input.port1.dancepad.up keyboard 0x0 96 - -;Analog axis scale coefficient for Dual Analog on Virtual Port 1. -psx.input.port1.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 1, Dual Analog: ○ (right) -psx.input.port1.dualanalog.circle - -;psx, Virtual Port 1, Dual Analog: x (lower) -psx.input.port1.dualanalog.cross - -;psx, Virtual Port 1, Dual Analog: D-Pad DOWN ↓ -psx.input.port1.dualanalog.down - -;psx, Virtual Port 1, Dual Analog: L1 (front left shoulder) -psx.input.port1.dualanalog.l1 - -;psx, Virtual Port 1, Dual Analog: L2 (rear left shoulder) -psx.input.port1.dualanalog.l2 - -;psx, Virtual Port 1, Dual Analog: Left Stick, Button(L3) -psx.input.port1.dualanalog.l3 - -;psx, Virtual Port 1, Dual Analog: D-Pad LEFT ← -psx.input.port1.dualanalog.left - -;psx, Virtual Port 1, Dual Analog: Left Stick DOWN ↓ -psx.input.port1.dualanalog.lstick_down - -;psx, Virtual Port 1, Dual Analog: Left Stick LEFT ← -psx.input.port1.dualanalog.lstick_left - -;psx, Virtual Port 1, Dual Analog: Left Stick RIGHT → -psx.input.port1.dualanalog.lstick_right - -;psx, Virtual Port 1, Dual Analog: Left Stick UP ↑ -psx.input.port1.dualanalog.lstick_up - -;psx, Virtual Port 1, Dual Analog: R1 (front right shoulder) -psx.input.port1.dualanalog.r1 - -;psx, Virtual Port 1, Dual Analog: R2 (rear right shoulder) -psx.input.port1.dualanalog.r2 - -;psx, Virtual Port 1, Dual Analog: Right stick, Button(R3) -psx.input.port1.dualanalog.r3 - -;psx, Virtual Port 1, Dual Analog: Rapid ○ (right) -psx.input.port1.dualanalog.rapid_circle - -;psx, Virtual Port 1, Dual Analog: Rapid x (lower) -psx.input.port1.dualanalog.rapid_cross - -;psx, Virtual Port 1, Dual Analog: Rapid □ (left) -psx.input.port1.dualanalog.rapid_square - -;psx, Virtual Port 1, Dual Analog: Rapid △ (upper) -psx.input.port1.dualanalog.rapid_triangle - -;psx, Virtual Port 1, Dual Analog: D-Pad RIGHT → -psx.input.port1.dualanalog.right - -;psx, Virtual Port 1, Dual Analog: Right Stick DOWN ↓ -psx.input.port1.dualanalog.rstick_down - -;psx, Virtual Port 1, Dual Analog: Right Stick LEFT ← -psx.input.port1.dualanalog.rstick_left - -;psx, Virtual Port 1, Dual Analog: Right Stick RIGHT → -psx.input.port1.dualanalog.rstick_right - -;psx, Virtual Port 1, Dual Analog: Right Stick UP ↑ -psx.input.port1.dualanalog.rstick_up - -;psx, Virtual Port 1, Dual Analog: SELECT -psx.input.port1.dualanalog.select - -;psx, Virtual Port 1, Dual Analog: □ (left) -psx.input.port1.dualanalog.square - -;psx, Virtual Port 1, Dual Analog: START -psx.input.port1.dualanalog.start - -;psx, Virtual Port 1, Dual Analog: △ (upper) -psx.input.port1.dualanalog.triangle - -;psx, Virtual Port 1, Dual Analog: D-Pad UP ↑ -psx.input.port1.dualanalog.up - -;psx, Virtual Port 1, DualShock: Analog(mode toggle) -psx.input.port1.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 1. -psx.input.port1.dualshock.axis_scale 1.00 - -;psx, Virtual Port 1, DualShock: ○ (right) -psx.input.port1.dualshock.circle - -;psx, Virtual Port 1, DualShock: x (lower) -psx.input.port1.dualshock.cross - -;psx, Virtual Port 1, DualShock: D-Pad DOWN ↓ -psx.input.port1.dualshock.down - -;psx, Virtual Port 1, DualShock: L1 (front left shoulder) -psx.input.port1.dualshock.l1 - -;psx, Virtual Port 1, DualShock: L2 (rear left shoulder) -psx.input.port1.dualshock.l2 - -;psx, Virtual Port 1, DualShock: Left Stick, Button(L3) -psx.input.port1.dualshock.l3 - -;psx, Virtual Port 1, DualShock: D-Pad LEFT ← -psx.input.port1.dualshock.left - -;psx, Virtual Port 1, DualShock: Left Stick DOWN ↓ -psx.input.port1.dualshock.lstick_down - -;psx, Virtual Port 1, DualShock: Left Stick LEFT ← -psx.input.port1.dualshock.lstick_left - -;psx, Virtual Port 1, DualShock: Left Stick RIGHT → -psx.input.port1.dualshock.lstick_right - -;psx, Virtual Port 1, DualShock: Left Stick UP ↑ -psx.input.port1.dualshock.lstick_up - -;psx, Virtual Port 1, DualShock: R1 (front right shoulder) -psx.input.port1.dualshock.r1 - -;psx, Virtual Port 1, DualShock: R2 (rear right shoulder) -psx.input.port1.dualshock.r2 - -;psx, Virtual Port 1, DualShock: Right stick, Button(R3) -psx.input.port1.dualshock.r3 - -;psx, Virtual Port 1, DualShock: Rapid ○ (right) -psx.input.port1.dualshock.rapid_circle - -;psx, Virtual Port 1, DualShock: Rapid x (lower) -psx.input.port1.dualshock.rapid_cross - -;psx, Virtual Port 1, DualShock: Rapid □ (left) -psx.input.port1.dualshock.rapid_square - -;psx, Virtual Port 1, DualShock: Rapid △ (upper) -psx.input.port1.dualshock.rapid_triangle - -;psx, Virtual Port 1, DualShock: D-Pad RIGHT → -psx.input.port1.dualshock.right - -;psx, Virtual Port 1, DualShock: Right Stick DOWN ↓ -psx.input.port1.dualshock.rstick_down - -;psx, Virtual Port 1, DualShock: Right Stick LEFT ← -psx.input.port1.dualshock.rstick_left - -;psx, Virtual Port 1, DualShock: Right Stick RIGHT → -psx.input.port1.dualshock.rstick_right - -;psx, Virtual Port 1, DualShock: Right Stick UP ↑ -psx.input.port1.dualshock.rstick_up - -;psx, Virtual Port 1, DualShock: SELECT -psx.input.port1.dualshock.select - -;psx, Virtual Port 1, DualShock: □ (left) -psx.input.port1.dualshock.square - -;psx, Virtual Port 1, DualShock: START -psx.input.port1.dualshock.start - -;psx, Virtual Port 1, DualShock: △ (upper) -psx.input.port1.dualshock.triangle - -;psx, Virtual Port 1, DualShock: D-Pad UP ↑ -psx.input.port1.dualshock.up - -;psx, Virtual Port 1, Digital Gamepad: ○ (right) -psx.input.port1.gamepad.circle keyboard 0x0 94 - -;psx, Virtual Port 1, Digital Gamepad: x (lower) -psx.input.port1.gamepad.cross keyboard 0x0 90 - -;psx, Virtual Port 1, Digital Gamepad: DOWN ↓ -psx.input.port1.gamepad.down keyboard 0x0 22 - -;psx, Virtual Port 1, Digital Gamepad: L1 (front left shoulder) -psx.input.port1.gamepad.l1 keyboard 0x0 89 - -;psx, Virtual Port 1, Digital Gamepad: L2 (rear left shoulder) -psx.input.port1.gamepad.l2 keyboard 0x0 95 - -;psx, Virtual Port 1, Digital Gamepad: LEFT ← -psx.input.port1.gamepad.left keyboard 0x0 4 - -;psx, Virtual Port 1, Digital Gamepad: R1 (front right shoulder) -psx.input.port1.gamepad.r1 keyboard 0x0 91 - -;psx, Virtual Port 1, Digital Gamepad: R2 (rear right shoulder) -psx.input.port1.gamepad.r2 keyboard 0x0 97 - -;psx, Virtual Port 1, Digital Gamepad: Rapid ○ (right) -psx.input.port1.gamepad.rapid_circle - -;psx, Virtual Port 1, Digital Gamepad: Rapid x (lower) -psx.input.port1.gamepad.rapid_cross - -;psx, Virtual Port 1, Digital Gamepad: Rapid □ (left) -psx.input.port1.gamepad.rapid_square - -;psx, Virtual Port 1, Digital Gamepad: Rapid △ (upper) -psx.input.port1.gamepad.rapid_triangle - -;psx, Virtual Port 1, Digital Gamepad: RIGHT → -psx.input.port1.gamepad.right keyboard 0x0 7 - -;psx, Virtual Port 1, Digital Gamepad: SELECT -psx.input.port1.gamepad.select keyboard 0x0 43 - -;psx, Virtual Port 1, Digital Gamepad: □ (left) -psx.input.port1.gamepad.square keyboard 0x0 92 - -;psx, Virtual Port 1, Digital Gamepad: START -psx.input.port1.gamepad.start keyboard 0x0 40 - -;psx, Virtual Port 1, Digital Gamepad: △ (upper) -psx.input.port1.gamepad.triangle keyboard 0x0 96 - -;psx, Virtual Port 1, Digital Gamepad: UP ↑ -psx.input.port1.gamepad.up keyboard 0x0 26 - -;Crosshairs color for lightgun on virtual port 1. -psx.input.port1.gun_chairs 0xFF0000 - -;psx, Virtual Port 1, GunCon: A -psx.input.port1.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 1, GunCon: B -psx.input.port1.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 1, GunCon: Offscreen Shot(Simulated) -psx.input.port1.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 1, GunCon: Trigger -psx.input.port1.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 1, GunCon: X Axis -psx.input.port1.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 1, GunCon: Y Axis -psx.input.port1.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 1, Konami Justifier: O -psx.input.port1.justifier.o mouse 0x0 button_right - -;psx, Virtual Port 1, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port1.justifier.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 1, Konami Justifier: Start -psx.input.port1.justifier.start mouse 0x0 button_middle - -;psx, Virtual Port 1, Konami Justifier: Trigger -psx.input.port1.justifier.trigger mouse 0x0 button_left - -;psx, Virtual Port 1, Konami Justifier: X Axis -psx.input.port1.justifier.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 1, Konami Justifier: Y Axis -psx.input.port1.justifier.y_axis mouse 0x0 cursor_y-+ - -;Emulate memory card on virtual port 1. -psx.input.port1.memcard 1 - -;psx, Virtual Port 1, Mouse: Left Button -psx.input.port1.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 1, Mouse: Motion Down -psx.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 1, Mouse: Motion Left -psx.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 1, Mouse: Motion Right -psx.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 1, Mouse: Motion Up -psx.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 1, Mouse: Right Button -psx.input.port1.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 1, neGcon: A -psx.input.port1.negcon.a - -;psx, Virtual Port 1, neGcon: B -psx.input.port1.negcon.b - -;psx, Virtual Port 1, neGcon: D-Pad DOWN ↓ -psx.input.port1.negcon.down - -;psx, Virtual Port 1, neGcon: I (Analog) -psx.input.port1.negcon.i - -;psx, Virtual Port 1, neGcon: II (Analog) -psx.input.port1.negcon.ii - -;psx, Virtual Port 1, neGcon: Left Shoulder (Analog) -psx.input.port1.negcon.l - -;psx, Virtual Port 1, neGcon: D-Pad LEFT ← -psx.input.port1.negcon.left - -;psx, Virtual Port 1, neGcon: Right Shoulder -psx.input.port1.negcon.r - -;psx, Virtual Port 1, neGcon: D-Pad RIGHT → -psx.input.port1.negcon.right - -;psx, Virtual Port 1, neGcon: START -psx.input.port1.negcon.start - -;psx, Virtual Port 1, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port1.negcon.twist_ccwise - -;psx, Virtual Port 1, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port1.negcon.twist_cwise - -;psx, Virtual Port 1, neGcon: D-Pad UP ↑ -psx.input.port1.negcon.up - -;Input device for Virtual Port 2 -psx.input.port2 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 2. -psx.input.port2.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 2, Analog Joystick: Right stick, R-thumb -psx.input.port2.analogjoy.circle - -;psx, Virtual Port 2, Analog Joystick: Right stick, L-thumb -psx.input.port2.analogjoy.cross - -;psx, Virtual Port 2, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port2.analogjoy.down - -;psx, Virtual Port 2, Analog Joystick: Left stick, L-thumb -psx.input.port2.analogjoy.l1 - -;psx, Virtual Port 2, Analog Joystick: Left stick, Trigger -psx.input.port2.analogjoy.l2 - -;psx, Virtual Port 2, Analog Joystick: Thumbstick LEFT ← -psx.input.port2.analogjoy.left - -;psx, Virtual Port 2, Analog Joystick: Left Stick, BACK ↓ -psx.input.port2.analogjoy.lstick_down - -;psx, Virtual Port 2, Analog Joystick: Left Stick, LEFT ← -psx.input.port2.analogjoy.lstick_left - -;psx, Virtual Port 2, Analog Joystick: Left Stick, RIGHT → -psx.input.port2.analogjoy.lstick_right - -;psx, Virtual Port 2, Analog Joystick: Left Stick, FORE ↑ -psx.input.port2.analogjoy.lstick_up - -;psx, Virtual Port 2, Analog Joystick: Left stick, R-thumb -psx.input.port2.analogjoy.r1 - -;psx, Virtual Port 2, Analog Joystick: Left stick, Pinky -psx.input.port2.analogjoy.r2 - -;psx, Virtual Port 2, Analog Joystick: Thumbstick RIGHT → -psx.input.port2.analogjoy.right - -;psx, Virtual Port 2, Analog Joystick: Right Stick, BACK ↓ -psx.input.port2.analogjoy.rstick_down - -;psx, Virtual Port 2, Analog Joystick: Right Stick, LEFT ← -psx.input.port2.analogjoy.rstick_left - -;psx, Virtual Port 2, Analog Joystick: Right Stick, RIGHT → -psx.input.port2.analogjoy.rstick_right - -;psx, Virtual Port 2, Analog Joystick: Right Stick, FORE ↑ -psx.input.port2.analogjoy.rstick_up - -;psx, Virtual Port 2, Analog Joystick: SELECT -psx.input.port2.analogjoy.select - -;psx, Virtual Port 2, Analog Joystick: Right stick, Trigger -psx.input.port2.analogjoy.square - -;psx, Virtual Port 2, Analog Joystick: START -psx.input.port2.analogjoy.start - -;psx, Virtual Port 2, Analog Joystick: Right stick, Pinky -psx.input.port2.analogjoy.triangle - -;psx, Virtual Port 2, Analog Joystick: Thumbstick UP ↑ -psx.input.port2.analogjoy.up - -;psx, Virtual Port 2, Dance Pad: ○ (upper right) -psx.input.port2.dancepad.circle - -;psx, Virtual Port 2, Dance Pad: x (upper left) -psx.input.port2.dancepad.cross - -;psx, Virtual Port 2, Dance Pad: DOWN ↓ -psx.input.port2.dancepad.down - -;psx, Virtual Port 2, Dance Pad: LEFT ← -psx.input.port2.dancepad.left - -;psx, Virtual Port 2, Dance Pad: RIGHT → -psx.input.port2.dancepad.right - -;psx, Virtual Port 2, Dance Pad: SELECT -psx.input.port2.dancepad.select - -;psx, Virtual Port 2, Dance Pad: □ (lower right) -psx.input.port2.dancepad.square - -;psx, Virtual Port 2, Dance Pad: START -psx.input.port2.dancepad.start - -;psx, Virtual Port 2, Dance Pad: △ (lower left) -psx.input.port2.dancepad.triangle - -;psx, Virtual Port 2, Dance Pad: UP ↑ -psx.input.port2.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 2. -psx.input.port2.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 2, Dual Analog: ○ (right) -psx.input.port2.dualanalog.circle - -;psx, Virtual Port 2, Dual Analog: x (lower) -psx.input.port2.dualanalog.cross - -;psx, Virtual Port 2, Dual Analog: D-Pad DOWN ↓ -psx.input.port2.dualanalog.down - -;psx, Virtual Port 2, Dual Analog: L1 (front left shoulder) -psx.input.port2.dualanalog.l1 - -;psx, Virtual Port 2, Dual Analog: L2 (rear left shoulder) -psx.input.port2.dualanalog.l2 - -;psx, Virtual Port 2, Dual Analog: Left Stick, Button(L3) -psx.input.port2.dualanalog.l3 - -;psx, Virtual Port 2, Dual Analog: D-Pad LEFT ← -psx.input.port2.dualanalog.left - -;psx, Virtual Port 2, Dual Analog: Left Stick DOWN ↓ -psx.input.port2.dualanalog.lstick_down - -;psx, Virtual Port 2, Dual Analog: Left Stick LEFT ← -psx.input.port2.dualanalog.lstick_left - -;psx, Virtual Port 2, Dual Analog: Left Stick RIGHT → -psx.input.port2.dualanalog.lstick_right - -;psx, Virtual Port 2, Dual Analog: Left Stick UP ↑ -psx.input.port2.dualanalog.lstick_up - -;psx, Virtual Port 2, Dual Analog: R1 (front right shoulder) -psx.input.port2.dualanalog.r1 - -;psx, Virtual Port 2, Dual Analog: R2 (rear right shoulder) -psx.input.port2.dualanalog.r2 - -;psx, Virtual Port 2, Dual Analog: Right stick, Button(R3) -psx.input.port2.dualanalog.r3 - -;psx, Virtual Port 2, Dual Analog: Rapid ○ (right) -psx.input.port2.dualanalog.rapid_circle - -;psx, Virtual Port 2, Dual Analog: Rapid x (lower) -psx.input.port2.dualanalog.rapid_cross - -;psx, Virtual Port 2, Dual Analog: Rapid □ (left) -psx.input.port2.dualanalog.rapid_square - -;psx, Virtual Port 2, Dual Analog: Rapid △ (upper) -psx.input.port2.dualanalog.rapid_triangle - -;psx, Virtual Port 2, Dual Analog: D-Pad RIGHT → -psx.input.port2.dualanalog.right - -;psx, Virtual Port 2, Dual Analog: Right Stick DOWN ↓ -psx.input.port2.dualanalog.rstick_down - -;psx, Virtual Port 2, Dual Analog: Right Stick LEFT ← -psx.input.port2.dualanalog.rstick_left - -;psx, Virtual Port 2, Dual Analog: Right Stick RIGHT → -psx.input.port2.dualanalog.rstick_right - -;psx, Virtual Port 2, Dual Analog: Right Stick UP ↑ -psx.input.port2.dualanalog.rstick_up - -;psx, Virtual Port 2, Dual Analog: SELECT -psx.input.port2.dualanalog.select - -;psx, Virtual Port 2, Dual Analog: □ (left) -psx.input.port2.dualanalog.square - -;psx, Virtual Port 2, Dual Analog: START -psx.input.port2.dualanalog.start - -;psx, Virtual Port 2, Dual Analog: △ (upper) -psx.input.port2.dualanalog.triangle - -;psx, Virtual Port 2, Dual Analog: D-Pad UP ↑ -psx.input.port2.dualanalog.up - -;psx, Virtual Port 2, DualShock: Analog(mode toggle) -psx.input.port2.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 2. -psx.input.port2.dualshock.axis_scale 1.00 - -;psx, Virtual Port 2, DualShock: ○ (right) -psx.input.port2.dualshock.circle - -;psx, Virtual Port 2, DualShock: x (lower) -psx.input.port2.dualshock.cross - -;psx, Virtual Port 2, DualShock: D-Pad DOWN ↓ -psx.input.port2.dualshock.down - -;psx, Virtual Port 2, DualShock: L1 (front left shoulder) -psx.input.port2.dualshock.l1 - -;psx, Virtual Port 2, DualShock: L2 (rear left shoulder) -psx.input.port2.dualshock.l2 - -;psx, Virtual Port 2, DualShock: Left Stick, Button(L3) -psx.input.port2.dualshock.l3 - -;psx, Virtual Port 2, DualShock: D-Pad LEFT ← -psx.input.port2.dualshock.left - -;psx, Virtual Port 2, DualShock: Left Stick DOWN ↓ -psx.input.port2.dualshock.lstick_down - -;psx, Virtual Port 2, DualShock: Left Stick LEFT ← -psx.input.port2.dualshock.lstick_left - -;psx, Virtual Port 2, DualShock: Left Stick RIGHT → -psx.input.port2.dualshock.lstick_right - -;psx, Virtual Port 2, DualShock: Left Stick UP ↑ -psx.input.port2.dualshock.lstick_up - -;psx, Virtual Port 2, DualShock: R1 (front right shoulder) -psx.input.port2.dualshock.r1 - -;psx, Virtual Port 2, DualShock: R2 (rear right shoulder) -psx.input.port2.dualshock.r2 - -;psx, Virtual Port 2, DualShock: Right stick, Button(R3) -psx.input.port2.dualshock.r3 - -;psx, Virtual Port 2, DualShock: Rapid ○ (right) -psx.input.port2.dualshock.rapid_circle - -;psx, Virtual Port 2, DualShock: Rapid x (lower) -psx.input.port2.dualshock.rapid_cross - -;psx, Virtual Port 2, DualShock: Rapid □ (left) -psx.input.port2.dualshock.rapid_square - -;psx, Virtual Port 2, DualShock: Rapid △ (upper) -psx.input.port2.dualshock.rapid_triangle - -;psx, Virtual Port 2, DualShock: D-Pad RIGHT → -psx.input.port2.dualshock.right - -;psx, Virtual Port 2, DualShock: Right Stick DOWN ↓ -psx.input.port2.dualshock.rstick_down - -;psx, Virtual Port 2, DualShock: Right Stick LEFT ← -psx.input.port2.dualshock.rstick_left - -;psx, Virtual Port 2, DualShock: Right Stick RIGHT → -psx.input.port2.dualshock.rstick_right - -;psx, Virtual Port 2, DualShock: Right Stick UP ↑ -psx.input.port2.dualshock.rstick_up - -;psx, Virtual Port 2, DualShock: SELECT -psx.input.port2.dualshock.select - -;psx, Virtual Port 2, DualShock: □ (left) -psx.input.port2.dualshock.square - -;psx, Virtual Port 2, DualShock: START -psx.input.port2.dualshock.start - -;psx, Virtual Port 2, DualShock: △ (upper) -psx.input.port2.dualshock.triangle - -;psx, Virtual Port 2, DualShock: D-Pad UP ↑ -psx.input.port2.dualshock.up - -;psx, Virtual Port 2, Digital Gamepad: ○ (right) -psx.input.port2.gamepad.circle - -;psx, Virtual Port 2, Digital Gamepad: x (lower) -psx.input.port2.gamepad.cross - -;psx, Virtual Port 2, Digital Gamepad: DOWN ↓ -psx.input.port2.gamepad.down - -;psx, Virtual Port 2, Digital Gamepad: L1 (front left shoulder) -psx.input.port2.gamepad.l1 - -;psx, Virtual Port 2, Digital Gamepad: L2 (rear left shoulder) -psx.input.port2.gamepad.l2 - -;psx, Virtual Port 2, Digital Gamepad: LEFT ← -psx.input.port2.gamepad.left - -;psx, Virtual Port 2, Digital Gamepad: R1 (front right shoulder) -psx.input.port2.gamepad.r1 - -;psx, Virtual Port 2, Digital Gamepad: R2 (rear right shoulder) -psx.input.port2.gamepad.r2 - -;psx, Virtual Port 2, Digital Gamepad: Rapid ○ (right) -psx.input.port2.gamepad.rapid_circle - -;psx, Virtual Port 2, Digital Gamepad: Rapid x (lower) -psx.input.port2.gamepad.rapid_cross - -;psx, Virtual Port 2, Digital Gamepad: Rapid □ (left) -psx.input.port2.gamepad.rapid_square - -;psx, Virtual Port 2, Digital Gamepad: Rapid △ (upper) -psx.input.port2.gamepad.rapid_triangle - -;psx, Virtual Port 2, Digital Gamepad: RIGHT → -psx.input.port2.gamepad.right - -;psx, Virtual Port 2, Digital Gamepad: SELECT -psx.input.port2.gamepad.select - -;psx, Virtual Port 2, Digital Gamepad: □ (left) -psx.input.port2.gamepad.square - -;psx, Virtual Port 2, Digital Gamepad: START -psx.input.port2.gamepad.start - -;psx, Virtual Port 2, Digital Gamepad: △ (upper) -psx.input.port2.gamepad.triangle - -;psx, Virtual Port 2, Digital Gamepad: UP ↑ -psx.input.port2.gamepad.up - -;Crosshairs color for lightgun on virtual port 2. -psx.input.port2.gun_chairs 0x00FF00 - -;psx, Virtual Port 2, GunCon: A -psx.input.port2.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 2, GunCon: B -psx.input.port2.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 2, GunCon: Offscreen Shot(Simulated) -psx.input.port2.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 2, GunCon: Trigger -psx.input.port2.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 2, GunCon: X Axis -psx.input.port2.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 2, GunCon: Y Axis -psx.input.port2.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 2, Konami Justifier: O -psx.input.port2.justifier.o mouse 0x0 button_right - -;psx, Virtual Port 2, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port2.justifier.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 2, Konami Justifier: Start -psx.input.port2.justifier.start mouse 0x0 button_middle - -;psx, Virtual Port 2, Konami Justifier: Trigger -psx.input.port2.justifier.trigger mouse 0x0 button_left - -;psx, Virtual Port 2, Konami Justifier: X Axis -psx.input.port2.justifier.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 2, Konami Justifier: Y Axis -psx.input.port2.justifier.y_axis mouse 0x0 cursor_y-+ - -;Emulate memory card on virtual port 2. -psx.input.port2.memcard 1 - -;psx, Virtual Port 2, Mouse: Left Button -psx.input.port2.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 2, Mouse: Motion Down -psx.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 2, Mouse: Motion Left -psx.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 2, Mouse: Motion Right -psx.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 2, Mouse: Motion Up -psx.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 2, Mouse: Right Button -psx.input.port2.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 2, neGcon: A -psx.input.port2.negcon.a - -;psx, Virtual Port 2, neGcon: B -psx.input.port2.negcon.b - -;psx, Virtual Port 2, neGcon: D-Pad DOWN ↓ -psx.input.port2.negcon.down - -;psx, Virtual Port 2, neGcon: I (Analog) -psx.input.port2.negcon.i - -;psx, Virtual Port 2, neGcon: II (Analog) -psx.input.port2.negcon.ii - -;psx, Virtual Port 2, neGcon: Left Shoulder (Analog) -psx.input.port2.negcon.l - -;psx, Virtual Port 2, neGcon: D-Pad LEFT ← -psx.input.port2.negcon.left - -;psx, Virtual Port 2, neGcon: Right Shoulder -psx.input.port2.negcon.r - -;psx, Virtual Port 2, neGcon: D-Pad RIGHT → -psx.input.port2.negcon.right - -;psx, Virtual Port 2, neGcon: START -psx.input.port2.negcon.start - -;psx, Virtual Port 2, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port2.negcon.twist_ccwise - -;psx, Virtual Port 2, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port2.negcon.twist_cwise - -;psx, Virtual Port 2, neGcon: D-Pad UP ↑ -psx.input.port2.negcon.up - -;Input device for Virtual Port 3 -psx.input.port3 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 3. -psx.input.port3.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 3, Analog Joystick: Right stick, R-thumb -psx.input.port3.analogjoy.circle - -;psx, Virtual Port 3, Analog Joystick: Right stick, L-thumb -psx.input.port3.analogjoy.cross - -;psx, Virtual Port 3, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port3.analogjoy.down - -;psx, Virtual Port 3, Analog Joystick: Left stick, L-thumb -psx.input.port3.analogjoy.l1 - -;psx, Virtual Port 3, Analog Joystick: Left stick, Trigger -psx.input.port3.analogjoy.l2 - -;psx, Virtual Port 3, Analog Joystick: Thumbstick LEFT ← -psx.input.port3.analogjoy.left - -;psx, Virtual Port 3, Analog Joystick: Left Stick, BACK ↓ -psx.input.port3.analogjoy.lstick_down - -;psx, Virtual Port 3, Analog Joystick: Left Stick, LEFT ← -psx.input.port3.analogjoy.lstick_left - -;psx, Virtual Port 3, Analog Joystick: Left Stick, RIGHT → -psx.input.port3.analogjoy.lstick_right - -;psx, Virtual Port 3, Analog Joystick: Left Stick, FORE ↑ -psx.input.port3.analogjoy.lstick_up - -;psx, Virtual Port 3, Analog Joystick: Left stick, R-thumb -psx.input.port3.analogjoy.r1 - -;psx, Virtual Port 3, Analog Joystick: Left stick, Pinky -psx.input.port3.analogjoy.r2 - -;psx, Virtual Port 3, Analog Joystick: Thumbstick RIGHT → -psx.input.port3.analogjoy.right - -;psx, Virtual Port 3, Analog Joystick: Right Stick, BACK ↓ -psx.input.port3.analogjoy.rstick_down - -;psx, Virtual Port 3, Analog Joystick: Right Stick, LEFT ← -psx.input.port3.analogjoy.rstick_left - -;psx, Virtual Port 3, Analog Joystick: Right Stick, RIGHT → -psx.input.port3.analogjoy.rstick_right - -;psx, Virtual Port 3, Analog Joystick: Right Stick, FORE ↑ -psx.input.port3.analogjoy.rstick_up - -;psx, Virtual Port 3, Analog Joystick: SELECT -psx.input.port3.analogjoy.select - -;psx, Virtual Port 3, Analog Joystick: Right stick, Trigger -psx.input.port3.analogjoy.square - -;psx, Virtual Port 3, Analog Joystick: START -psx.input.port3.analogjoy.start - -;psx, Virtual Port 3, Analog Joystick: Right stick, Pinky -psx.input.port3.analogjoy.triangle - -;psx, Virtual Port 3, Analog Joystick: Thumbstick UP ↑ -psx.input.port3.analogjoy.up - -;psx, Virtual Port 3, Dance Pad: ○ (upper right) -psx.input.port3.dancepad.circle - -;psx, Virtual Port 3, Dance Pad: x (upper left) -psx.input.port3.dancepad.cross - -;psx, Virtual Port 3, Dance Pad: DOWN ↓ -psx.input.port3.dancepad.down - -;psx, Virtual Port 3, Dance Pad: LEFT ← -psx.input.port3.dancepad.left - -;psx, Virtual Port 3, Dance Pad: RIGHT → -psx.input.port3.dancepad.right - -;psx, Virtual Port 3, Dance Pad: SELECT -psx.input.port3.dancepad.select - -;psx, Virtual Port 3, Dance Pad: □ (lower right) -psx.input.port3.dancepad.square - -;psx, Virtual Port 3, Dance Pad: START -psx.input.port3.dancepad.start - -;psx, Virtual Port 3, Dance Pad: △ (lower left) -psx.input.port3.dancepad.triangle - -;psx, Virtual Port 3, Dance Pad: UP ↑ -psx.input.port3.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 3. -psx.input.port3.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 3, Dual Analog: ○ (right) -psx.input.port3.dualanalog.circle - -;psx, Virtual Port 3, Dual Analog: x (lower) -psx.input.port3.dualanalog.cross - -;psx, Virtual Port 3, Dual Analog: D-Pad DOWN ↓ -psx.input.port3.dualanalog.down - -;psx, Virtual Port 3, Dual Analog: L1 (front left shoulder) -psx.input.port3.dualanalog.l1 - -;psx, Virtual Port 3, Dual Analog: L2 (rear left shoulder) -psx.input.port3.dualanalog.l2 - -;psx, Virtual Port 3, Dual Analog: Left Stick, Button(L3) -psx.input.port3.dualanalog.l3 - -;psx, Virtual Port 3, Dual Analog: D-Pad LEFT ← -psx.input.port3.dualanalog.left - -;psx, Virtual Port 3, Dual Analog: Left Stick DOWN ↓ -psx.input.port3.dualanalog.lstick_down - -;psx, Virtual Port 3, Dual Analog: Left Stick LEFT ← -psx.input.port3.dualanalog.lstick_left - -;psx, Virtual Port 3, Dual Analog: Left Stick RIGHT → -psx.input.port3.dualanalog.lstick_right - -;psx, Virtual Port 3, Dual Analog: Left Stick UP ↑ -psx.input.port3.dualanalog.lstick_up - -;psx, Virtual Port 3, Dual Analog: R1 (front right shoulder) -psx.input.port3.dualanalog.r1 - -;psx, Virtual Port 3, Dual Analog: R2 (rear right shoulder) -psx.input.port3.dualanalog.r2 - -;psx, Virtual Port 3, Dual Analog: Right stick, Button(R3) -psx.input.port3.dualanalog.r3 - -;psx, Virtual Port 3, Dual Analog: Rapid ○ (right) -psx.input.port3.dualanalog.rapid_circle - -;psx, Virtual Port 3, Dual Analog: Rapid x (lower) -psx.input.port3.dualanalog.rapid_cross - -;psx, Virtual Port 3, Dual Analog: Rapid □ (left) -psx.input.port3.dualanalog.rapid_square - -;psx, Virtual Port 3, Dual Analog: Rapid △ (upper) -psx.input.port3.dualanalog.rapid_triangle - -;psx, Virtual Port 3, Dual Analog: D-Pad RIGHT → -psx.input.port3.dualanalog.right - -;psx, Virtual Port 3, Dual Analog: Right Stick DOWN ↓ -psx.input.port3.dualanalog.rstick_down - -;psx, Virtual Port 3, Dual Analog: Right Stick LEFT ← -psx.input.port3.dualanalog.rstick_left - -;psx, Virtual Port 3, Dual Analog: Right Stick RIGHT → -psx.input.port3.dualanalog.rstick_right - -;psx, Virtual Port 3, Dual Analog: Right Stick UP ↑ -psx.input.port3.dualanalog.rstick_up - -;psx, Virtual Port 3, Dual Analog: SELECT -psx.input.port3.dualanalog.select - -;psx, Virtual Port 3, Dual Analog: □ (left) -psx.input.port3.dualanalog.square - -;psx, Virtual Port 3, Dual Analog: START -psx.input.port3.dualanalog.start - -;psx, Virtual Port 3, Dual Analog: △ (upper) -psx.input.port3.dualanalog.triangle - -;psx, Virtual Port 3, Dual Analog: D-Pad UP ↑ -psx.input.port3.dualanalog.up - -;psx, Virtual Port 3, DualShock: Analog(mode toggle) -psx.input.port3.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 3. -psx.input.port3.dualshock.axis_scale 1.00 - -;psx, Virtual Port 3, DualShock: ○ (right) -psx.input.port3.dualshock.circle - -;psx, Virtual Port 3, DualShock: x (lower) -psx.input.port3.dualshock.cross - -;psx, Virtual Port 3, DualShock: D-Pad DOWN ↓ -psx.input.port3.dualshock.down - -;psx, Virtual Port 3, DualShock: L1 (front left shoulder) -psx.input.port3.dualshock.l1 - -;psx, Virtual Port 3, DualShock: L2 (rear left shoulder) -psx.input.port3.dualshock.l2 - -;psx, Virtual Port 3, DualShock: Left Stick, Button(L3) -psx.input.port3.dualshock.l3 - -;psx, Virtual Port 3, DualShock: D-Pad LEFT ← -psx.input.port3.dualshock.left - -;psx, Virtual Port 3, DualShock: Left Stick DOWN ↓ -psx.input.port3.dualshock.lstick_down - -;psx, Virtual Port 3, DualShock: Left Stick LEFT ← -psx.input.port3.dualshock.lstick_left - -;psx, Virtual Port 3, DualShock: Left Stick RIGHT → -psx.input.port3.dualshock.lstick_right - -;psx, Virtual Port 3, DualShock: Left Stick UP ↑ -psx.input.port3.dualshock.lstick_up - -;psx, Virtual Port 3, DualShock: R1 (front right shoulder) -psx.input.port3.dualshock.r1 - -;psx, Virtual Port 3, DualShock: R2 (rear right shoulder) -psx.input.port3.dualshock.r2 - -;psx, Virtual Port 3, DualShock: Right stick, Button(R3) -psx.input.port3.dualshock.r3 - -;psx, Virtual Port 3, DualShock: Rapid ○ (right) -psx.input.port3.dualshock.rapid_circle - -;psx, Virtual Port 3, DualShock: Rapid x (lower) -psx.input.port3.dualshock.rapid_cross - -;psx, Virtual Port 3, DualShock: Rapid □ (left) -psx.input.port3.dualshock.rapid_square - -;psx, Virtual Port 3, DualShock: Rapid △ (upper) -psx.input.port3.dualshock.rapid_triangle - -;psx, Virtual Port 3, DualShock: D-Pad RIGHT → -psx.input.port3.dualshock.right - -;psx, Virtual Port 3, DualShock: Right Stick DOWN ↓ -psx.input.port3.dualshock.rstick_down - -;psx, Virtual Port 3, DualShock: Right Stick LEFT ← -psx.input.port3.dualshock.rstick_left - -;psx, Virtual Port 3, DualShock: Right Stick RIGHT → -psx.input.port3.dualshock.rstick_right - -;psx, Virtual Port 3, DualShock: Right Stick UP ↑ -psx.input.port3.dualshock.rstick_up - -;psx, Virtual Port 3, DualShock: SELECT -psx.input.port3.dualshock.select - -;psx, Virtual Port 3, DualShock: □ (left) -psx.input.port3.dualshock.square - -;psx, Virtual Port 3, DualShock: START -psx.input.port3.dualshock.start - -;psx, Virtual Port 3, DualShock: △ (upper) -psx.input.port3.dualshock.triangle - -;psx, Virtual Port 3, DualShock: D-Pad UP ↑ -psx.input.port3.dualshock.up - -;psx, Virtual Port 3, Digital Gamepad: ○ (right) -psx.input.port3.gamepad.circle - -;psx, Virtual Port 3, Digital Gamepad: x (lower) -psx.input.port3.gamepad.cross - -;psx, Virtual Port 3, Digital Gamepad: DOWN ↓ -psx.input.port3.gamepad.down - -;psx, Virtual Port 3, Digital Gamepad: L1 (front left shoulder) -psx.input.port3.gamepad.l1 - -;psx, Virtual Port 3, Digital Gamepad: L2 (rear left shoulder) -psx.input.port3.gamepad.l2 - -;psx, Virtual Port 3, Digital Gamepad: LEFT ← -psx.input.port3.gamepad.left - -;psx, Virtual Port 3, Digital Gamepad: R1 (front right shoulder) -psx.input.port3.gamepad.r1 - -;psx, Virtual Port 3, Digital Gamepad: R2 (rear right shoulder) -psx.input.port3.gamepad.r2 - -;psx, Virtual Port 3, Digital Gamepad: Rapid ○ (right) -psx.input.port3.gamepad.rapid_circle - -;psx, Virtual Port 3, Digital Gamepad: Rapid x (lower) -psx.input.port3.gamepad.rapid_cross - -;psx, Virtual Port 3, Digital Gamepad: Rapid □ (left) -psx.input.port3.gamepad.rapid_square - -;psx, Virtual Port 3, Digital Gamepad: Rapid △ (upper) -psx.input.port3.gamepad.rapid_triangle - -;psx, Virtual Port 3, Digital Gamepad: RIGHT → -psx.input.port3.gamepad.right - -;psx, Virtual Port 3, Digital Gamepad: SELECT -psx.input.port3.gamepad.select - -;psx, Virtual Port 3, Digital Gamepad: □ (left) -psx.input.port3.gamepad.square - -;psx, Virtual Port 3, Digital Gamepad: START -psx.input.port3.gamepad.start - -;psx, Virtual Port 3, Digital Gamepad: △ (upper) -psx.input.port3.gamepad.triangle - -;psx, Virtual Port 3, Digital Gamepad: UP ↑ -psx.input.port3.gamepad.up - -;Crosshairs color for lightgun on virtual port 3. -psx.input.port3.gun_chairs 0xFF00FF - -;psx, Virtual Port 3, GunCon: A -psx.input.port3.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 3, GunCon: B -psx.input.port3.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 3, GunCon: Offscreen Shot(Simulated) -psx.input.port3.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 3, GunCon: Trigger -psx.input.port3.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 3, GunCon: X Axis -psx.input.port3.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 3, GunCon: Y Axis -psx.input.port3.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 3, Konami Justifier: O -psx.input.port3.justifier.o - -;psx, Virtual Port 3, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port3.justifier.offscreen_shot - -;psx, Virtual Port 3, Konami Justifier: Start -psx.input.port3.justifier.start - -;psx, Virtual Port 3, Konami Justifier: Trigger -psx.input.port3.justifier.trigger - -;psx, Virtual Port 3, Konami Justifier: X Axis -psx.input.port3.justifier.x_axis - -;psx, Virtual Port 3, Konami Justifier: Y Axis -psx.input.port3.justifier.y_axis - -;Emulate memory card on virtual port 3. -psx.input.port3.memcard 1 - -;psx, Virtual Port 3, Mouse: Left Button -psx.input.port3.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 3, Mouse: Motion Down -psx.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 3, Mouse: Motion Left -psx.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 3, Mouse: Motion Right -psx.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 3, Mouse: Motion Up -psx.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 3, Mouse: Right Button -psx.input.port3.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 3, neGcon: A -psx.input.port3.negcon.a - -;psx, Virtual Port 3, neGcon: B -psx.input.port3.negcon.b - -;psx, Virtual Port 3, neGcon: D-Pad DOWN ↓ -psx.input.port3.negcon.down - -;psx, Virtual Port 3, neGcon: I (Analog) -psx.input.port3.negcon.i - -;psx, Virtual Port 3, neGcon: II (Analog) -psx.input.port3.negcon.ii - -;psx, Virtual Port 3, neGcon: Left Shoulder (Analog) -psx.input.port3.negcon.l - -;psx, Virtual Port 3, neGcon: D-Pad LEFT ← -psx.input.port3.negcon.left - -;psx, Virtual Port 3, neGcon: Right Shoulder -psx.input.port3.negcon.r - -;psx, Virtual Port 3, neGcon: D-Pad RIGHT → -psx.input.port3.negcon.right - -;psx, Virtual Port 3, neGcon: START -psx.input.port3.negcon.start - -;psx, Virtual Port 3, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port3.negcon.twist_ccwise - -;psx, Virtual Port 3, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port3.negcon.twist_cwise - -;psx, Virtual Port 3, neGcon: D-Pad UP ↑ -psx.input.port3.negcon.up - -;Input device for Virtual Port 4 -psx.input.port4 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 4. -psx.input.port4.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 4, Analog Joystick: Right stick, R-thumb -psx.input.port4.analogjoy.circle - -;psx, Virtual Port 4, Analog Joystick: Right stick, L-thumb -psx.input.port4.analogjoy.cross - -;psx, Virtual Port 4, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port4.analogjoy.down - -;psx, Virtual Port 4, Analog Joystick: Left stick, L-thumb -psx.input.port4.analogjoy.l1 - -;psx, Virtual Port 4, Analog Joystick: Left stick, Trigger -psx.input.port4.analogjoy.l2 - -;psx, Virtual Port 4, Analog Joystick: Thumbstick LEFT ← -psx.input.port4.analogjoy.left - -;psx, Virtual Port 4, Analog Joystick: Left Stick, BACK ↓ -psx.input.port4.analogjoy.lstick_down - -;psx, Virtual Port 4, Analog Joystick: Left Stick, LEFT ← -psx.input.port4.analogjoy.lstick_left - -;psx, Virtual Port 4, Analog Joystick: Left Stick, RIGHT → -psx.input.port4.analogjoy.lstick_right - -;psx, Virtual Port 4, Analog Joystick: Left Stick, FORE ↑ -psx.input.port4.analogjoy.lstick_up - -;psx, Virtual Port 4, Analog Joystick: Left stick, R-thumb -psx.input.port4.analogjoy.r1 - -;psx, Virtual Port 4, Analog Joystick: Left stick, Pinky -psx.input.port4.analogjoy.r2 - -;psx, Virtual Port 4, Analog Joystick: Thumbstick RIGHT → -psx.input.port4.analogjoy.right - -;psx, Virtual Port 4, Analog Joystick: Right Stick, BACK ↓ -psx.input.port4.analogjoy.rstick_down - -;psx, Virtual Port 4, Analog Joystick: Right Stick, LEFT ← -psx.input.port4.analogjoy.rstick_left - -;psx, Virtual Port 4, Analog Joystick: Right Stick, RIGHT → -psx.input.port4.analogjoy.rstick_right - -;psx, Virtual Port 4, Analog Joystick: Right Stick, FORE ↑ -psx.input.port4.analogjoy.rstick_up - -;psx, Virtual Port 4, Analog Joystick: SELECT -psx.input.port4.analogjoy.select - -;psx, Virtual Port 4, Analog Joystick: Right stick, Trigger -psx.input.port4.analogjoy.square - -;psx, Virtual Port 4, Analog Joystick: START -psx.input.port4.analogjoy.start - -;psx, Virtual Port 4, Analog Joystick: Right stick, Pinky -psx.input.port4.analogjoy.triangle - -;psx, Virtual Port 4, Analog Joystick: Thumbstick UP ↑ -psx.input.port4.analogjoy.up - -;psx, Virtual Port 4, Dance Pad: ○ (upper right) -psx.input.port4.dancepad.circle - -;psx, Virtual Port 4, Dance Pad: x (upper left) -psx.input.port4.dancepad.cross - -;psx, Virtual Port 4, Dance Pad: DOWN ↓ -psx.input.port4.dancepad.down - -;psx, Virtual Port 4, Dance Pad: LEFT ← -psx.input.port4.dancepad.left - -;psx, Virtual Port 4, Dance Pad: RIGHT → -psx.input.port4.dancepad.right - -;psx, Virtual Port 4, Dance Pad: SELECT -psx.input.port4.dancepad.select - -;psx, Virtual Port 4, Dance Pad: □ (lower right) -psx.input.port4.dancepad.square - -;psx, Virtual Port 4, Dance Pad: START -psx.input.port4.dancepad.start - -;psx, Virtual Port 4, Dance Pad: △ (lower left) -psx.input.port4.dancepad.triangle - -;psx, Virtual Port 4, Dance Pad: UP ↑ -psx.input.port4.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 4. -psx.input.port4.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 4, Dual Analog: ○ (right) -psx.input.port4.dualanalog.circle - -;psx, Virtual Port 4, Dual Analog: x (lower) -psx.input.port4.dualanalog.cross - -;psx, Virtual Port 4, Dual Analog: D-Pad DOWN ↓ -psx.input.port4.dualanalog.down - -;psx, Virtual Port 4, Dual Analog: L1 (front left shoulder) -psx.input.port4.dualanalog.l1 - -;psx, Virtual Port 4, Dual Analog: L2 (rear left shoulder) -psx.input.port4.dualanalog.l2 - -;psx, Virtual Port 4, Dual Analog: Left Stick, Button(L3) -psx.input.port4.dualanalog.l3 - -;psx, Virtual Port 4, Dual Analog: D-Pad LEFT ← -psx.input.port4.dualanalog.left - -;psx, Virtual Port 4, Dual Analog: Left Stick DOWN ↓ -psx.input.port4.dualanalog.lstick_down - -;psx, Virtual Port 4, Dual Analog: Left Stick LEFT ← -psx.input.port4.dualanalog.lstick_left - -;psx, Virtual Port 4, Dual Analog: Left Stick RIGHT → -psx.input.port4.dualanalog.lstick_right - -;psx, Virtual Port 4, Dual Analog: Left Stick UP ↑ -psx.input.port4.dualanalog.lstick_up - -;psx, Virtual Port 4, Dual Analog: R1 (front right shoulder) -psx.input.port4.dualanalog.r1 - -;psx, Virtual Port 4, Dual Analog: R2 (rear right shoulder) -psx.input.port4.dualanalog.r2 - -;psx, Virtual Port 4, Dual Analog: Right stick, Button(R3) -psx.input.port4.dualanalog.r3 - -;psx, Virtual Port 4, Dual Analog: Rapid ○ (right) -psx.input.port4.dualanalog.rapid_circle - -;psx, Virtual Port 4, Dual Analog: Rapid x (lower) -psx.input.port4.dualanalog.rapid_cross - -;psx, Virtual Port 4, Dual Analog: Rapid □ (left) -psx.input.port4.dualanalog.rapid_square - -;psx, Virtual Port 4, Dual Analog: Rapid △ (upper) -psx.input.port4.dualanalog.rapid_triangle - -;psx, Virtual Port 4, Dual Analog: D-Pad RIGHT → -psx.input.port4.dualanalog.right - -;psx, Virtual Port 4, Dual Analog: Right Stick DOWN ↓ -psx.input.port4.dualanalog.rstick_down - -;psx, Virtual Port 4, Dual Analog: Right Stick LEFT ← -psx.input.port4.dualanalog.rstick_left - -;psx, Virtual Port 4, Dual Analog: Right Stick RIGHT → -psx.input.port4.dualanalog.rstick_right - -;psx, Virtual Port 4, Dual Analog: Right Stick UP ↑ -psx.input.port4.dualanalog.rstick_up - -;psx, Virtual Port 4, Dual Analog: SELECT -psx.input.port4.dualanalog.select - -;psx, Virtual Port 4, Dual Analog: □ (left) -psx.input.port4.dualanalog.square - -;psx, Virtual Port 4, Dual Analog: START -psx.input.port4.dualanalog.start - -;psx, Virtual Port 4, Dual Analog: △ (upper) -psx.input.port4.dualanalog.triangle - -;psx, Virtual Port 4, Dual Analog: D-Pad UP ↑ -psx.input.port4.dualanalog.up - -;psx, Virtual Port 4, DualShock: Analog(mode toggle) -psx.input.port4.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 4. -psx.input.port4.dualshock.axis_scale 1.00 - -;psx, Virtual Port 4, DualShock: ○ (right) -psx.input.port4.dualshock.circle - -;psx, Virtual Port 4, DualShock: x (lower) -psx.input.port4.dualshock.cross - -;psx, Virtual Port 4, DualShock: D-Pad DOWN ↓ -psx.input.port4.dualshock.down - -;psx, Virtual Port 4, DualShock: L1 (front left shoulder) -psx.input.port4.dualshock.l1 - -;psx, Virtual Port 4, DualShock: L2 (rear left shoulder) -psx.input.port4.dualshock.l2 - -;psx, Virtual Port 4, DualShock: Left Stick, Button(L3) -psx.input.port4.dualshock.l3 - -;psx, Virtual Port 4, DualShock: D-Pad LEFT ← -psx.input.port4.dualshock.left - -;psx, Virtual Port 4, DualShock: Left Stick DOWN ↓ -psx.input.port4.dualshock.lstick_down - -;psx, Virtual Port 4, DualShock: Left Stick LEFT ← -psx.input.port4.dualshock.lstick_left - -;psx, Virtual Port 4, DualShock: Left Stick RIGHT → -psx.input.port4.dualshock.lstick_right - -;psx, Virtual Port 4, DualShock: Left Stick UP ↑ -psx.input.port4.dualshock.lstick_up - -;psx, Virtual Port 4, DualShock: R1 (front right shoulder) -psx.input.port4.dualshock.r1 - -;psx, Virtual Port 4, DualShock: R2 (rear right shoulder) -psx.input.port4.dualshock.r2 - -;psx, Virtual Port 4, DualShock: Right stick, Button(R3) -psx.input.port4.dualshock.r3 - -;psx, Virtual Port 4, DualShock: Rapid ○ (right) -psx.input.port4.dualshock.rapid_circle - -;psx, Virtual Port 4, DualShock: Rapid x (lower) -psx.input.port4.dualshock.rapid_cross - -;psx, Virtual Port 4, DualShock: Rapid □ (left) -psx.input.port4.dualshock.rapid_square - -;psx, Virtual Port 4, DualShock: Rapid △ (upper) -psx.input.port4.dualshock.rapid_triangle - -;psx, Virtual Port 4, DualShock: D-Pad RIGHT → -psx.input.port4.dualshock.right - -;psx, Virtual Port 4, DualShock: Right Stick DOWN ↓ -psx.input.port4.dualshock.rstick_down - -;psx, Virtual Port 4, DualShock: Right Stick LEFT ← -psx.input.port4.dualshock.rstick_left - -;psx, Virtual Port 4, DualShock: Right Stick RIGHT → -psx.input.port4.dualshock.rstick_right - -;psx, Virtual Port 4, DualShock: Right Stick UP ↑ -psx.input.port4.dualshock.rstick_up - -;psx, Virtual Port 4, DualShock: SELECT -psx.input.port4.dualshock.select - -;psx, Virtual Port 4, DualShock: □ (left) -psx.input.port4.dualshock.square - -;psx, Virtual Port 4, DualShock: START -psx.input.port4.dualshock.start - -;psx, Virtual Port 4, DualShock: △ (upper) -psx.input.port4.dualshock.triangle - -;psx, Virtual Port 4, DualShock: D-Pad UP ↑ -psx.input.port4.dualshock.up - -;psx, Virtual Port 4, Digital Gamepad: ○ (right) -psx.input.port4.gamepad.circle - -;psx, Virtual Port 4, Digital Gamepad: x (lower) -psx.input.port4.gamepad.cross - -;psx, Virtual Port 4, Digital Gamepad: DOWN ↓ -psx.input.port4.gamepad.down - -;psx, Virtual Port 4, Digital Gamepad: L1 (front left shoulder) -psx.input.port4.gamepad.l1 - -;psx, Virtual Port 4, Digital Gamepad: L2 (rear left shoulder) -psx.input.port4.gamepad.l2 - -;psx, Virtual Port 4, Digital Gamepad: LEFT ← -psx.input.port4.gamepad.left - -;psx, Virtual Port 4, Digital Gamepad: R1 (front right shoulder) -psx.input.port4.gamepad.r1 - -;psx, Virtual Port 4, Digital Gamepad: R2 (rear right shoulder) -psx.input.port4.gamepad.r2 - -;psx, Virtual Port 4, Digital Gamepad: Rapid ○ (right) -psx.input.port4.gamepad.rapid_circle - -;psx, Virtual Port 4, Digital Gamepad: Rapid x (lower) -psx.input.port4.gamepad.rapid_cross - -;psx, Virtual Port 4, Digital Gamepad: Rapid □ (left) -psx.input.port4.gamepad.rapid_square - -;psx, Virtual Port 4, Digital Gamepad: Rapid △ (upper) -psx.input.port4.gamepad.rapid_triangle - -;psx, Virtual Port 4, Digital Gamepad: RIGHT → -psx.input.port4.gamepad.right - -;psx, Virtual Port 4, Digital Gamepad: SELECT -psx.input.port4.gamepad.select - -;psx, Virtual Port 4, Digital Gamepad: □ (left) -psx.input.port4.gamepad.square - -;psx, Virtual Port 4, Digital Gamepad: START -psx.input.port4.gamepad.start - -;psx, Virtual Port 4, Digital Gamepad: △ (upper) -psx.input.port4.gamepad.triangle - -;psx, Virtual Port 4, Digital Gamepad: UP ↑ -psx.input.port4.gamepad.up - -;Crosshairs color for lightgun on virtual port 4. -psx.input.port4.gun_chairs 0xFF8000 - -;psx, Virtual Port 4, GunCon: A -psx.input.port4.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 4, GunCon: B -psx.input.port4.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 4, GunCon: Offscreen Shot(Simulated) -psx.input.port4.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 4, GunCon: Trigger -psx.input.port4.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 4, GunCon: X Axis -psx.input.port4.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 4, GunCon: Y Axis -psx.input.port4.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 4, Konami Justifier: O -psx.input.port4.justifier.o - -;psx, Virtual Port 4, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port4.justifier.offscreen_shot - -;psx, Virtual Port 4, Konami Justifier: Start -psx.input.port4.justifier.start - -;psx, Virtual Port 4, Konami Justifier: Trigger -psx.input.port4.justifier.trigger - -;psx, Virtual Port 4, Konami Justifier: X Axis -psx.input.port4.justifier.x_axis - -;psx, Virtual Port 4, Konami Justifier: Y Axis -psx.input.port4.justifier.y_axis - -;Emulate memory card on virtual port 4. -psx.input.port4.memcard 1 - -;psx, Virtual Port 4, Mouse: Left Button -psx.input.port4.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 4, Mouse: Motion Down -psx.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 4, Mouse: Motion Left -psx.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 4, Mouse: Motion Right -psx.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 4, Mouse: Motion Up -psx.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 4, Mouse: Right Button -psx.input.port4.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 4, neGcon: A -psx.input.port4.negcon.a - -;psx, Virtual Port 4, neGcon: B -psx.input.port4.negcon.b - -;psx, Virtual Port 4, neGcon: D-Pad DOWN ↓ -psx.input.port4.negcon.down - -;psx, Virtual Port 4, neGcon: I (Analog) -psx.input.port4.negcon.i - -;psx, Virtual Port 4, neGcon: II (Analog) -psx.input.port4.negcon.ii - -;psx, Virtual Port 4, neGcon: Left Shoulder (Analog) -psx.input.port4.negcon.l - -;psx, Virtual Port 4, neGcon: D-Pad LEFT ← -psx.input.port4.negcon.left - -;psx, Virtual Port 4, neGcon: Right Shoulder -psx.input.port4.negcon.r - -;psx, Virtual Port 4, neGcon: D-Pad RIGHT → -psx.input.port4.negcon.right - -;psx, Virtual Port 4, neGcon: START -psx.input.port4.negcon.start - -;psx, Virtual Port 4, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port4.negcon.twist_ccwise - -;psx, Virtual Port 4, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port4.negcon.twist_cwise - -;psx, Virtual Port 4, neGcon: D-Pad UP ↑ -psx.input.port4.negcon.up - -;Input device for Virtual Port 5 -psx.input.port5 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 5. -psx.input.port5.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 5, Analog Joystick: Right stick, R-thumb -psx.input.port5.analogjoy.circle - -;psx, Virtual Port 5, Analog Joystick: Right stick, L-thumb -psx.input.port5.analogjoy.cross - -;psx, Virtual Port 5, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port5.analogjoy.down - -;psx, Virtual Port 5, Analog Joystick: Left stick, L-thumb -psx.input.port5.analogjoy.l1 - -;psx, Virtual Port 5, Analog Joystick: Left stick, Trigger -psx.input.port5.analogjoy.l2 - -;psx, Virtual Port 5, Analog Joystick: Thumbstick LEFT ← -psx.input.port5.analogjoy.left - -;psx, Virtual Port 5, Analog Joystick: Left Stick, BACK ↓ -psx.input.port5.analogjoy.lstick_down - -;psx, Virtual Port 5, Analog Joystick: Left Stick, LEFT ← -psx.input.port5.analogjoy.lstick_left - -;psx, Virtual Port 5, Analog Joystick: Left Stick, RIGHT → -psx.input.port5.analogjoy.lstick_right - -;psx, Virtual Port 5, Analog Joystick: Left Stick, FORE ↑ -psx.input.port5.analogjoy.lstick_up - -;psx, Virtual Port 5, Analog Joystick: Left stick, R-thumb -psx.input.port5.analogjoy.r1 - -;psx, Virtual Port 5, Analog Joystick: Left stick, Pinky -psx.input.port5.analogjoy.r2 - -;psx, Virtual Port 5, Analog Joystick: Thumbstick RIGHT → -psx.input.port5.analogjoy.right - -;psx, Virtual Port 5, Analog Joystick: Right Stick, BACK ↓ -psx.input.port5.analogjoy.rstick_down - -;psx, Virtual Port 5, Analog Joystick: Right Stick, LEFT ← -psx.input.port5.analogjoy.rstick_left - -;psx, Virtual Port 5, Analog Joystick: Right Stick, RIGHT → -psx.input.port5.analogjoy.rstick_right - -;psx, Virtual Port 5, Analog Joystick: Right Stick, FORE ↑ -psx.input.port5.analogjoy.rstick_up - -;psx, Virtual Port 5, Analog Joystick: SELECT -psx.input.port5.analogjoy.select - -;psx, Virtual Port 5, Analog Joystick: Right stick, Trigger -psx.input.port5.analogjoy.square - -;psx, Virtual Port 5, Analog Joystick: START -psx.input.port5.analogjoy.start - -;psx, Virtual Port 5, Analog Joystick: Right stick, Pinky -psx.input.port5.analogjoy.triangle - -;psx, Virtual Port 5, Analog Joystick: Thumbstick UP ↑ -psx.input.port5.analogjoy.up - -;psx, Virtual Port 5, Dance Pad: ○ (upper right) -psx.input.port5.dancepad.circle - -;psx, Virtual Port 5, Dance Pad: x (upper left) -psx.input.port5.dancepad.cross - -;psx, Virtual Port 5, Dance Pad: DOWN ↓ -psx.input.port5.dancepad.down - -;psx, Virtual Port 5, Dance Pad: LEFT ← -psx.input.port5.dancepad.left - -;psx, Virtual Port 5, Dance Pad: RIGHT → -psx.input.port5.dancepad.right - -;psx, Virtual Port 5, Dance Pad: SELECT -psx.input.port5.dancepad.select - -;psx, Virtual Port 5, Dance Pad: □ (lower right) -psx.input.port5.dancepad.square - -;psx, Virtual Port 5, Dance Pad: START -psx.input.port5.dancepad.start - -;psx, Virtual Port 5, Dance Pad: △ (lower left) -psx.input.port5.dancepad.triangle - -;psx, Virtual Port 5, Dance Pad: UP ↑ -psx.input.port5.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 5. -psx.input.port5.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 5, Dual Analog: ○ (right) -psx.input.port5.dualanalog.circle - -;psx, Virtual Port 5, Dual Analog: x (lower) -psx.input.port5.dualanalog.cross - -;psx, Virtual Port 5, Dual Analog: D-Pad DOWN ↓ -psx.input.port5.dualanalog.down - -;psx, Virtual Port 5, Dual Analog: L1 (front left shoulder) -psx.input.port5.dualanalog.l1 - -;psx, Virtual Port 5, Dual Analog: L2 (rear left shoulder) -psx.input.port5.dualanalog.l2 - -;psx, Virtual Port 5, Dual Analog: Left Stick, Button(L3) -psx.input.port5.dualanalog.l3 - -;psx, Virtual Port 5, Dual Analog: D-Pad LEFT ← -psx.input.port5.dualanalog.left - -;psx, Virtual Port 5, Dual Analog: Left Stick DOWN ↓ -psx.input.port5.dualanalog.lstick_down - -;psx, Virtual Port 5, Dual Analog: Left Stick LEFT ← -psx.input.port5.dualanalog.lstick_left - -;psx, Virtual Port 5, Dual Analog: Left Stick RIGHT → -psx.input.port5.dualanalog.lstick_right - -;psx, Virtual Port 5, Dual Analog: Left Stick UP ↑ -psx.input.port5.dualanalog.lstick_up - -;psx, Virtual Port 5, Dual Analog: R1 (front right shoulder) -psx.input.port5.dualanalog.r1 - -;psx, Virtual Port 5, Dual Analog: R2 (rear right shoulder) -psx.input.port5.dualanalog.r2 - -;psx, Virtual Port 5, Dual Analog: Right stick, Button(R3) -psx.input.port5.dualanalog.r3 - -;psx, Virtual Port 5, Dual Analog: Rapid ○ (right) -psx.input.port5.dualanalog.rapid_circle - -;psx, Virtual Port 5, Dual Analog: Rapid x (lower) -psx.input.port5.dualanalog.rapid_cross - -;psx, Virtual Port 5, Dual Analog: Rapid □ (left) -psx.input.port5.dualanalog.rapid_square - -;psx, Virtual Port 5, Dual Analog: Rapid △ (upper) -psx.input.port5.dualanalog.rapid_triangle - -;psx, Virtual Port 5, Dual Analog: D-Pad RIGHT → -psx.input.port5.dualanalog.right - -;psx, Virtual Port 5, Dual Analog: Right Stick DOWN ↓ -psx.input.port5.dualanalog.rstick_down - -;psx, Virtual Port 5, Dual Analog: Right Stick LEFT ← -psx.input.port5.dualanalog.rstick_left - -;psx, Virtual Port 5, Dual Analog: Right Stick RIGHT → -psx.input.port5.dualanalog.rstick_right - -;psx, Virtual Port 5, Dual Analog: Right Stick UP ↑ -psx.input.port5.dualanalog.rstick_up - -;psx, Virtual Port 5, Dual Analog: SELECT -psx.input.port5.dualanalog.select - -;psx, Virtual Port 5, Dual Analog: □ (left) -psx.input.port5.dualanalog.square - -;psx, Virtual Port 5, Dual Analog: START -psx.input.port5.dualanalog.start - -;psx, Virtual Port 5, Dual Analog: △ (upper) -psx.input.port5.dualanalog.triangle - -;psx, Virtual Port 5, Dual Analog: D-Pad UP ↑ -psx.input.port5.dualanalog.up - -;psx, Virtual Port 5, DualShock: Analog(mode toggle) -psx.input.port5.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 5. -psx.input.port5.dualshock.axis_scale 1.00 - -;psx, Virtual Port 5, DualShock: ○ (right) -psx.input.port5.dualshock.circle - -;psx, Virtual Port 5, DualShock: x (lower) -psx.input.port5.dualshock.cross - -;psx, Virtual Port 5, DualShock: D-Pad DOWN ↓ -psx.input.port5.dualshock.down - -;psx, Virtual Port 5, DualShock: L1 (front left shoulder) -psx.input.port5.dualshock.l1 - -;psx, Virtual Port 5, DualShock: L2 (rear left shoulder) -psx.input.port5.dualshock.l2 - -;psx, Virtual Port 5, DualShock: Left Stick, Button(L3) -psx.input.port5.dualshock.l3 - -;psx, Virtual Port 5, DualShock: D-Pad LEFT ← -psx.input.port5.dualshock.left - -;psx, Virtual Port 5, DualShock: Left Stick DOWN ↓ -psx.input.port5.dualshock.lstick_down - -;psx, Virtual Port 5, DualShock: Left Stick LEFT ← -psx.input.port5.dualshock.lstick_left - -;psx, Virtual Port 5, DualShock: Left Stick RIGHT → -psx.input.port5.dualshock.lstick_right - -;psx, Virtual Port 5, DualShock: Left Stick UP ↑ -psx.input.port5.dualshock.lstick_up - -;psx, Virtual Port 5, DualShock: R1 (front right shoulder) -psx.input.port5.dualshock.r1 - -;psx, Virtual Port 5, DualShock: R2 (rear right shoulder) -psx.input.port5.dualshock.r2 - -;psx, Virtual Port 5, DualShock: Right stick, Button(R3) -psx.input.port5.dualshock.r3 - -;psx, Virtual Port 5, DualShock: Rapid ○ (right) -psx.input.port5.dualshock.rapid_circle - -;psx, Virtual Port 5, DualShock: Rapid x (lower) -psx.input.port5.dualshock.rapid_cross - -;psx, Virtual Port 5, DualShock: Rapid □ (left) -psx.input.port5.dualshock.rapid_square - -;psx, Virtual Port 5, DualShock: Rapid △ (upper) -psx.input.port5.dualshock.rapid_triangle - -;psx, Virtual Port 5, DualShock: D-Pad RIGHT → -psx.input.port5.dualshock.right - -;psx, Virtual Port 5, DualShock: Right Stick DOWN ↓ -psx.input.port5.dualshock.rstick_down - -;psx, Virtual Port 5, DualShock: Right Stick LEFT ← -psx.input.port5.dualshock.rstick_left - -;psx, Virtual Port 5, DualShock: Right Stick RIGHT → -psx.input.port5.dualshock.rstick_right - -;psx, Virtual Port 5, DualShock: Right Stick UP ↑ -psx.input.port5.dualshock.rstick_up - -;psx, Virtual Port 5, DualShock: SELECT -psx.input.port5.dualshock.select - -;psx, Virtual Port 5, DualShock: □ (left) -psx.input.port5.dualshock.square - -;psx, Virtual Port 5, DualShock: START -psx.input.port5.dualshock.start - -;psx, Virtual Port 5, DualShock: △ (upper) -psx.input.port5.dualshock.triangle - -;psx, Virtual Port 5, DualShock: D-Pad UP ↑ -psx.input.port5.dualshock.up - -;psx, Virtual Port 5, Digital Gamepad: ○ (right) -psx.input.port5.gamepad.circle - -;psx, Virtual Port 5, Digital Gamepad: x (lower) -psx.input.port5.gamepad.cross - -;psx, Virtual Port 5, Digital Gamepad: DOWN ↓ -psx.input.port5.gamepad.down - -;psx, Virtual Port 5, Digital Gamepad: L1 (front left shoulder) -psx.input.port5.gamepad.l1 - -;psx, Virtual Port 5, Digital Gamepad: L2 (rear left shoulder) -psx.input.port5.gamepad.l2 - -;psx, Virtual Port 5, Digital Gamepad: LEFT ← -psx.input.port5.gamepad.left - -;psx, Virtual Port 5, Digital Gamepad: R1 (front right shoulder) -psx.input.port5.gamepad.r1 - -;psx, Virtual Port 5, Digital Gamepad: R2 (rear right shoulder) -psx.input.port5.gamepad.r2 - -;psx, Virtual Port 5, Digital Gamepad: Rapid ○ (right) -psx.input.port5.gamepad.rapid_circle - -;psx, Virtual Port 5, Digital Gamepad: Rapid x (lower) -psx.input.port5.gamepad.rapid_cross - -;psx, Virtual Port 5, Digital Gamepad: Rapid □ (left) -psx.input.port5.gamepad.rapid_square - -;psx, Virtual Port 5, Digital Gamepad: Rapid △ (upper) -psx.input.port5.gamepad.rapid_triangle - -;psx, Virtual Port 5, Digital Gamepad: RIGHT → -psx.input.port5.gamepad.right - -;psx, Virtual Port 5, Digital Gamepad: SELECT -psx.input.port5.gamepad.select - -;psx, Virtual Port 5, Digital Gamepad: □ (left) -psx.input.port5.gamepad.square - -;psx, Virtual Port 5, Digital Gamepad: START -psx.input.port5.gamepad.start - -;psx, Virtual Port 5, Digital Gamepad: △ (upper) -psx.input.port5.gamepad.triangle - -;psx, Virtual Port 5, Digital Gamepad: UP ↑ -psx.input.port5.gamepad.up - -;Crosshairs color for lightgun on virtual port 5. -psx.input.port5.gun_chairs 0xFFFF00 - -;psx, Virtual Port 5, GunCon: A -psx.input.port5.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 5, GunCon: B -psx.input.port5.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 5, GunCon: Offscreen Shot(Simulated) -psx.input.port5.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 5, GunCon: Trigger -psx.input.port5.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 5, GunCon: X Axis -psx.input.port5.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 5, GunCon: Y Axis -psx.input.port5.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 5, Konami Justifier: O -psx.input.port5.justifier.o - -;psx, Virtual Port 5, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port5.justifier.offscreen_shot - -;psx, Virtual Port 5, Konami Justifier: Start -psx.input.port5.justifier.start - -;psx, Virtual Port 5, Konami Justifier: Trigger -psx.input.port5.justifier.trigger - -;psx, Virtual Port 5, Konami Justifier: X Axis -psx.input.port5.justifier.x_axis - -;psx, Virtual Port 5, Konami Justifier: Y Axis -psx.input.port5.justifier.y_axis - -;Emulate memory card on virtual port 5. -psx.input.port5.memcard 1 - -;psx, Virtual Port 5, Mouse: Left Button -psx.input.port5.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 5, Mouse: Motion Down -psx.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 5, Mouse: Motion Left -psx.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 5, Mouse: Motion Right -psx.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 5, Mouse: Motion Up -psx.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 5, Mouse: Right Button -psx.input.port5.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 5, neGcon: A -psx.input.port5.negcon.a - -;psx, Virtual Port 5, neGcon: B -psx.input.port5.negcon.b - -;psx, Virtual Port 5, neGcon: D-Pad DOWN ↓ -psx.input.port5.negcon.down - -;psx, Virtual Port 5, neGcon: I (Analog) -psx.input.port5.negcon.i - -;psx, Virtual Port 5, neGcon: II (Analog) -psx.input.port5.negcon.ii - -;psx, Virtual Port 5, neGcon: Left Shoulder (Analog) -psx.input.port5.negcon.l - -;psx, Virtual Port 5, neGcon: D-Pad LEFT ← -psx.input.port5.negcon.left - -;psx, Virtual Port 5, neGcon: Right Shoulder -psx.input.port5.negcon.r - -;psx, Virtual Port 5, neGcon: D-Pad RIGHT → -psx.input.port5.negcon.right - -;psx, Virtual Port 5, neGcon: START -psx.input.port5.negcon.start - -;psx, Virtual Port 5, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port5.negcon.twist_ccwise - -;psx, Virtual Port 5, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port5.negcon.twist_cwise - -;psx, Virtual Port 5, neGcon: D-Pad UP ↑ -psx.input.port5.negcon.up - -;Input device for Virtual Port 6 -psx.input.port6 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 6. -psx.input.port6.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 6, Analog Joystick: Right stick, R-thumb -psx.input.port6.analogjoy.circle - -;psx, Virtual Port 6, Analog Joystick: Right stick, L-thumb -psx.input.port6.analogjoy.cross - -;psx, Virtual Port 6, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port6.analogjoy.down - -;psx, Virtual Port 6, Analog Joystick: Left stick, L-thumb -psx.input.port6.analogjoy.l1 - -;psx, Virtual Port 6, Analog Joystick: Left stick, Trigger -psx.input.port6.analogjoy.l2 - -;psx, Virtual Port 6, Analog Joystick: Thumbstick LEFT ← -psx.input.port6.analogjoy.left - -;psx, Virtual Port 6, Analog Joystick: Left Stick, BACK ↓ -psx.input.port6.analogjoy.lstick_down - -;psx, Virtual Port 6, Analog Joystick: Left Stick, LEFT ← -psx.input.port6.analogjoy.lstick_left - -;psx, Virtual Port 6, Analog Joystick: Left Stick, RIGHT → -psx.input.port6.analogjoy.lstick_right - -;psx, Virtual Port 6, Analog Joystick: Left Stick, FORE ↑ -psx.input.port6.analogjoy.lstick_up - -;psx, Virtual Port 6, Analog Joystick: Left stick, R-thumb -psx.input.port6.analogjoy.r1 - -;psx, Virtual Port 6, Analog Joystick: Left stick, Pinky -psx.input.port6.analogjoy.r2 - -;psx, Virtual Port 6, Analog Joystick: Thumbstick RIGHT → -psx.input.port6.analogjoy.right - -;psx, Virtual Port 6, Analog Joystick: Right Stick, BACK ↓ -psx.input.port6.analogjoy.rstick_down - -;psx, Virtual Port 6, Analog Joystick: Right Stick, LEFT ← -psx.input.port6.analogjoy.rstick_left - -;psx, Virtual Port 6, Analog Joystick: Right Stick, RIGHT → -psx.input.port6.analogjoy.rstick_right - -;psx, Virtual Port 6, Analog Joystick: Right Stick, FORE ↑ -psx.input.port6.analogjoy.rstick_up - -;psx, Virtual Port 6, Analog Joystick: SELECT -psx.input.port6.analogjoy.select - -;psx, Virtual Port 6, Analog Joystick: Right stick, Trigger -psx.input.port6.analogjoy.square - -;psx, Virtual Port 6, Analog Joystick: START -psx.input.port6.analogjoy.start - -;psx, Virtual Port 6, Analog Joystick: Right stick, Pinky -psx.input.port6.analogjoy.triangle - -;psx, Virtual Port 6, Analog Joystick: Thumbstick UP ↑ -psx.input.port6.analogjoy.up - -;psx, Virtual Port 6, Dance Pad: ○ (upper right) -psx.input.port6.dancepad.circle - -;psx, Virtual Port 6, Dance Pad: x (upper left) -psx.input.port6.dancepad.cross - -;psx, Virtual Port 6, Dance Pad: DOWN ↓ -psx.input.port6.dancepad.down - -;psx, Virtual Port 6, Dance Pad: LEFT ← -psx.input.port6.dancepad.left - -;psx, Virtual Port 6, Dance Pad: RIGHT → -psx.input.port6.dancepad.right - -;psx, Virtual Port 6, Dance Pad: SELECT -psx.input.port6.dancepad.select - -;psx, Virtual Port 6, Dance Pad: □ (lower right) -psx.input.port6.dancepad.square - -;psx, Virtual Port 6, Dance Pad: START -psx.input.port6.dancepad.start - -;psx, Virtual Port 6, Dance Pad: △ (lower left) -psx.input.port6.dancepad.triangle - -;psx, Virtual Port 6, Dance Pad: UP ↑ -psx.input.port6.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 6. -psx.input.port6.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 6, Dual Analog: ○ (right) -psx.input.port6.dualanalog.circle - -;psx, Virtual Port 6, Dual Analog: x (lower) -psx.input.port6.dualanalog.cross - -;psx, Virtual Port 6, Dual Analog: D-Pad DOWN ↓ -psx.input.port6.dualanalog.down - -;psx, Virtual Port 6, Dual Analog: L1 (front left shoulder) -psx.input.port6.dualanalog.l1 - -;psx, Virtual Port 6, Dual Analog: L2 (rear left shoulder) -psx.input.port6.dualanalog.l2 - -;psx, Virtual Port 6, Dual Analog: Left Stick, Button(L3) -psx.input.port6.dualanalog.l3 - -;psx, Virtual Port 6, Dual Analog: D-Pad LEFT ← -psx.input.port6.dualanalog.left - -;psx, Virtual Port 6, Dual Analog: Left Stick DOWN ↓ -psx.input.port6.dualanalog.lstick_down - -;psx, Virtual Port 6, Dual Analog: Left Stick LEFT ← -psx.input.port6.dualanalog.lstick_left - -;psx, Virtual Port 6, Dual Analog: Left Stick RIGHT → -psx.input.port6.dualanalog.lstick_right - -;psx, Virtual Port 6, Dual Analog: Left Stick UP ↑ -psx.input.port6.dualanalog.lstick_up - -;psx, Virtual Port 6, Dual Analog: R1 (front right shoulder) -psx.input.port6.dualanalog.r1 - -;psx, Virtual Port 6, Dual Analog: R2 (rear right shoulder) -psx.input.port6.dualanalog.r2 - -;psx, Virtual Port 6, Dual Analog: Right stick, Button(R3) -psx.input.port6.dualanalog.r3 - -;psx, Virtual Port 6, Dual Analog: Rapid ○ (right) -psx.input.port6.dualanalog.rapid_circle - -;psx, Virtual Port 6, Dual Analog: Rapid x (lower) -psx.input.port6.dualanalog.rapid_cross - -;psx, Virtual Port 6, Dual Analog: Rapid □ (left) -psx.input.port6.dualanalog.rapid_square - -;psx, Virtual Port 6, Dual Analog: Rapid △ (upper) -psx.input.port6.dualanalog.rapid_triangle - -;psx, Virtual Port 6, Dual Analog: D-Pad RIGHT → -psx.input.port6.dualanalog.right - -;psx, Virtual Port 6, Dual Analog: Right Stick DOWN ↓ -psx.input.port6.dualanalog.rstick_down - -;psx, Virtual Port 6, Dual Analog: Right Stick LEFT ← -psx.input.port6.dualanalog.rstick_left - -;psx, Virtual Port 6, Dual Analog: Right Stick RIGHT → -psx.input.port6.dualanalog.rstick_right - -;psx, Virtual Port 6, Dual Analog: Right Stick UP ↑ -psx.input.port6.dualanalog.rstick_up - -;psx, Virtual Port 6, Dual Analog: SELECT -psx.input.port6.dualanalog.select - -;psx, Virtual Port 6, Dual Analog: □ (left) -psx.input.port6.dualanalog.square - -;psx, Virtual Port 6, Dual Analog: START -psx.input.port6.dualanalog.start - -;psx, Virtual Port 6, Dual Analog: △ (upper) -psx.input.port6.dualanalog.triangle - -;psx, Virtual Port 6, Dual Analog: D-Pad UP ↑ -psx.input.port6.dualanalog.up - -;psx, Virtual Port 6, DualShock: Analog(mode toggle) -psx.input.port6.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 6. -psx.input.port6.dualshock.axis_scale 1.00 - -;psx, Virtual Port 6, DualShock: ○ (right) -psx.input.port6.dualshock.circle - -;psx, Virtual Port 6, DualShock: x (lower) -psx.input.port6.dualshock.cross - -;psx, Virtual Port 6, DualShock: D-Pad DOWN ↓ -psx.input.port6.dualshock.down - -;psx, Virtual Port 6, DualShock: L1 (front left shoulder) -psx.input.port6.dualshock.l1 - -;psx, Virtual Port 6, DualShock: L2 (rear left shoulder) -psx.input.port6.dualshock.l2 - -;psx, Virtual Port 6, DualShock: Left Stick, Button(L3) -psx.input.port6.dualshock.l3 - -;psx, Virtual Port 6, DualShock: D-Pad LEFT ← -psx.input.port6.dualshock.left - -;psx, Virtual Port 6, DualShock: Left Stick DOWN ↓ -psx.input.port6.dualshock.lstick_down - -;psx, Virtual Port 6, DualShock: Left Stick LEFT ← -psx.input.port6.dualshock.lstick_left - -;psx, Virtual Port 6, DualShock: Left Stick RIGHT → -psx.input.port6.dualshock.lstick_right - -;psx, Virtual Port 6, DualShock: Left Stick UP ↑ -psx.input.port6.dualshock.lstick_up - -;psx, Virtual Port 6, DualShock: R1 (front right shoulder) -psx.input.port6.dualshock.r1 - -;psx, Virtual Port 6, DualShock: R2 (rear right shoulder) -psx.input.port6.dualshock.r2 - -;psx, Virtual Port 6, DualShock: Right stick, Button(R3) -psx.input.port6.dualshock.r3 - -;psx, Virtual Port 6, DualShock: Rapid ○ (right) -psx.input.port6.dualshock.rapid_circle - -;psx, Virtual Port 6, DualShock: Rapid x (lower) -psx.input.port6.dualshock.rapid_cross - -;psx, Virtual Port 6, DualShock: Rapid □ (left) -psx.input.port6.dualshock.rapid_square - -;psx, Virtual Port 6, DualShock: Rapid △ (upper) -psx.input.port6.dualshock.rapid_triangle - -;psx, Virtual Port 6, DualShock: D-Pad RIGHT → -psx.input.port6.dualshock.right - -;psx, Virtual Port 6, DualShock: Right Stick DOWN ↓ -psx.input.port6.dualshock.rstick_down - -;psx, Virtual Port 6, DualShock: Right Stick LEFT ← -psx.input.port6.dualshock.rstick_left - -;psx, Virtual Port 6, DualShock: Right Stick RIGHT → -psx.input.port6.dualshock.rstick_right - -;psx, Virtual Port 6, DualShock: Right Stick UP ↑ -psx.input.port6.dualshock.rstick_up - -;psx, Virtual Port 6, DualShock: SELECT -psx.input.port6.dualshock.select - -;psx, Virtual Port 6, DualShock: □ (left) -psx.input.port6.dualshock.square - -;psx, Virtual Port 6, DualShock: START -psx.input.port6.dualshock.start - -;psx, Virtual Port 6, DualShock: △ (upper) -psx.input.port6.dualshock.triangle - -;psx, Virtual Port 6, DualShock: D-Pad UP ↑ -psx.input.port6.dualshock.up - -;psx, Virtual Port 6, Digital Gamepad: ○ (right) -psx.input.port6.gamepad.circle - -;psx, Virtual Port 6, Digital Gamepad: x (lower) -psx.input.port6.gamepad.cross - -;psx, Virtual Port 6, Digital Gamepad: DOWN ↓ -psx.input.port6.gamepad.down - -;psx, Virtual Port 6, Digital Gamepad: L1 (front left shoulder) -psx.input.port6.gamepad.l1 - -;psx, Virtual Port 6, Digital Gamepad: L2 (rear left shoulder) -psx.input.port6.gamepad.l2 - -;psx, Virtual Port 6, Digital Gamepad: LEFT ← -psx.input.port6.gamepad.left - -;psx, Virtual Port 6, Digital Gamepad: R1 (front right shoulder) -psx.input.port6.gamepad.r1 - -;psx, Virtual Port 6, Digital Gamepad: R2 (rear right shoulder) -psx.input.port6.gamepad.r2 - -;psx, Virtual Port 6, Digital Gamepad: Rapid ○ (right) -psx.input.port6.gamepad.rapid_circle - -;psx, Virtual Port 6, Digital Gamepad: Rapid x (lower) -psx.input.port6.gamepad.rapid_cross - -;psx, Virtual Port 6, Digital Gamepad: Rapid □ (left) -psx.input.port6.gamepad.rapid_square - -;psx, Virtual Port 6, Digital Gamepad: Rapid △ (upper) -psx.input.port6.gamepad.rapid_triangle - -;psx, Virtual Port 6, Digital Gamepad: RIGHT → -psx.input.port6.gamepad.right - -;psx, Virtual Port 6, Digital Gamepad: SELECT -psx.input.port6.gamepad.select - -;psx, Virtual Port 6, Digital Gamepad: □ (left) -psx.input.port6.gamepad.square - -;psx, Virtual Port 6, Digital Gamepad: START -psx.input.port6.gamepad.start - -;psx, Virtual Port 6, Digital Gamepad: △ (upper) -psx.input.port6.gamepad.triangle - -;psx, Virtual Port 6, Digital Gamepad: UP ↑ -psx.input.port6.gamepad.up - -;Crosshairs color for lightgun on virtual port 6. -psx.input.port6.gun_chairs 0x00FFFF - -;psx, Virtual Port 6, GunCon: A -psx.input.port6.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 6, GunCon: B -psx.input.port6.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 6, GunCon: Offscreen Shot(Simulated) -psx.input.port6.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 6, GunCon: Trigger -psx.input.port6.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 6, GunCon: X Axis -psx.input.port6.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 6, GunCon: Y Axis -psx.input.port6.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 6, Konami Justifier: O -psx.input.port6.justifier.o - -;psx, Virtual Port 6, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port6.justifier.offscreen_shot - -;psx, Virtual Port 6, Konami Justifier: Start -psx.input.port6.justifier.start - -;psx, Virtual Port 6, Konami Justifier: Trigger -psx.input.port6.justifier.trigger - -;psx, Virtual Port 6, Konami Justifier: X Axis -psx.input.port6.justifier.x_axis - -;psx, Virtual Port 6, Konami Justifier: Y Axis -psx.input.port6.justifier.y_axis - -;Emulate memory card on virtual port 6. -psx.input.port6.memcard 1 - -;psx, Virtual Port 6, Mouse: Left Button -psx.input.port6.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 6, Mouse: Motion Down -psx.input.port6.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 6, Mouse: Motion Left -psx.input.port6.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 6, Mouse: Motion Right -psx.input.port6.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 6, Mouse: Motion Up -psx.input.port6.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 6, Mouse: Right Button -psx.input.port6.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 6, neGcon: A -psx.input.port6.negcon.a - -;psx, Virtual Port 6, neGcon: B -psx.input.port6.negcon.b - -;psx, Virtual Port 6, neGcon: D-Pad DOWN ↓ -psx.input.port6.negcon.down - -;psx, Virtual Port 6, neGcon: I (Analog) -psx.input.port6.negcon.i - -;psx, Virtual Port 6, neGcon: II (Analog) -psx.input.port6.negcon.ii - -;psx, Virtual Port 6, neGcon: Left Shoulder (Analog) -psx.input.port6.negcon.l - -;psx, Virtual Port 6, neGcon: D-Pad LEFT ← -psx.input.port6.negcon.left - -;psx, Virtual Port 6, neGcon: Right Shoulder -psx.input.port6.negcon.r - -;psx, Virtual Port 6, neGcon: D-Pad RIGHT → -psx.input.port6.negcon.right - -;psx, Virtual Port 6, neGcon: START -psx.input.port6.negcon.start - -;psx, Virtual Port 6, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port6.negcon.twist_ccwise - -;psx, Virtual Port 6, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port6.negcon.twist_cwise - -;psx, Virtual Port 6, neGcon: D-Pad UP ↑ -psx.input.port6.negcon.up - -;Input device for Virtual Port 7 -psx.input.port7 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 7. -psx.input.port7.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 7, Analog Joystick: Right stick, R-thumb -psx.input.port7.analogjoy.circle - -;psx, Virtual Port 7, Analog Joystick: Right stick, L-thumb -psx.input.port7.analogjoy.cross - -;psx, Virtual Port 7, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port7.analogjoy.down - -;psx, Virtual Port 7, Analog Joystick: Left stick, L-thumb -psx.input.port7.analogjoy.l1 - -;psx, Virtual Port 7, Analog Joystick: Left stick, Trigger -psx.input.port7.analogjoy.l2 - -;psx, Virtual Port 7, Analog Joystick: Thumbstick LEFT ← -psx.input.port7.analogjoy.left - -;psx, Virtual Port 7, Analog Joystick: Left Stick, BACK ↓ -psx.input.port7.analogjoy.lstick_down - -;psx, Virtual Port 7, Analog Joystick: Left Stick, LEFT ← -psx.input.port7.analogjoy.lstick_left - -;psx, Virtual Port 7, Analog Joystick: Left Stick, RIGHT → -psx.input.port7.analogjoy.lstick_right - -;psx, Virtual Port 7, Analog Joystick: Left Stick, FORE ↑ -psx.input.port7.analogjoy.lstick_up - -;psx, Virtual Port 7, Analog Joystick: Left stick, R-thumb -psx.input.port7.analogjoy.r1 - -;psx, Virtual Port 7, Analog Joystick: Left stick, Pinky -psx.input.port7.analogjoy.r2 - -;psx, Virtual Port 7, Analog Joystick: Thumbstick RIGHT → -psx.input.port7.analogjoy.right - -;psx, Virtual Port 7, Analog Joystick: Right Stick, BACK ↓ -psx.input.port7.analogjoy.rstick_down - -;psx, Virtual Port 7, Analog Joystick: Right Stick, LEFT ← -psx.input.port7.analogjoy.rstick_left - -;psx, Virtual Port 7, Analog Joystick: Right Stick, RIGHT → -psx.input.port7.analogjoy.rstick_right - -;psx, Virtual Port 7, Analog Joystick: Right Stick, FORE ↑ -psx.input.port7.analogjoy.rstick_up - -;psx, Virtual Port 7, Analog Joystick: SELECT -psx.input.port7.analogjoy.select - -;psx, Virtual Port 7, Analog Joystick: Right stick, Trigger -psx.input.port7.analogjoy.square - -;psx, Virtual Port 7, Analog Joystick: START -psx.input.port7.analogjoy.start - -;psx, Virtual Port 7, Analog Joystick: Right stick, Pinky -psx.input.port7.analogjoy.triangle - -;psx, Virtual Port 7, Analog Joystick: Thumbstick UP ↑ -psx.input.port7.analogjoy.up - -;psx, Virtual Port 7, Dance Pad: ○ (upper right) -psx.input.port7.dancepad.circle - -;psx, Virtual Port 7, Dance Pad: x (upper left) -psx.input.port7.dancepad.cross - -;psx, Virtual Port 7, Dance Pad: DOWN ↓ -psx.input.port7.dancepad.down - -;psx, Virtual Port 7, Dance Pad: LEFT ← -psx.input.port7.dancepad.left - -;psx, Virtual Port 7, Dance Pad: RIGHT → -psx.input.port7.dancepad.right - -;psx, Virtual Port 7, Dance Pad: SELECT -psx.input.port7.dancepad.select - -;psx, Virtual Port 7, Dance Pad: □ (lower right) -psx.input.port7.dancepad.square - -;psx, Virtual Port 7, Dance Pad: START -psx.input.port7.dancepad.start - -;psx, Virtual Port 7, Dance Pad: △ (lower left) -psx.input.port7.dancepad.triangle - -;psx, Virtual Port 7, Dance Pad: UP ↑ -psx.input.port7.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 7. -psx.input.port7.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 7, Dual Analog: ○ (right) -psx.input.port7.dualanalog.circle - -;psx, Virtual Port 7, Dual Analog: x (lower) -psx.input.port7.dualanalog.cross - -;psx, Virtual Port 7, Dual Analog: D-Pad DOWN ↓ -psx.input.port7.dualanalog.down - -;psx, Virtual Port 7, Dual Analog: L1 (front left shoulder) -psx.input.port7.dualanalog.l1 - -;psx, Virtual Port 7, Dual Analog: L2 (rear left shoulder) -psx.input.port7.dualanalog.l2 - -;psx, Virtual Port 7, Dual Analog: Left Stick, Button(L3) -psx.input.port7.dualanalog.l3 - -;psx, Virtual Port 7, Dual Analog: D-Pad LEFT ← -psx.input.port7.dualanalog.left - -;psx, Virtual Port 7, Dual Analog: Left Stick DOWN ↓ -psx.input.port7.dualanalog.lstick_down - -;psx, Virtual Port 7, Dual Analog: Left Stick LEFT ← -psx.input.port7.dualanalog.lstick_left - -;psx, Virtual Port 7, Dual Analog: Left Stick RIGHT → -psx.input.port7.dualanalog.lstick_right - -;psx, Virtual Port 7, Dual Analog: Left Stick UP ↑ -psx.input.port7.dualanalog.lstick_up - -;psx, Virtual Port 7, Dual Analog: R1 (front right shoulder) -psx.input.port7.dualanalog.r1 - -;psx, Virtual Port 7, Dual Analog: R2 (rear right shoulder) -psx.input.port7.dualanalog.r2 - -;psx, Virtual Port 7, Dual Analog: Right stick, Button(R3) -psx.input.port7.dualanalog.r3 - -;psx, Virtual Port 7, Dual Analog: Rapid ○ (right) -psx.input.port7.dualanalog.rapid_circle - -;psx, Virtual Port 7, Dual Analog: Rapid x (lower) -psx.input.port7.dualanalog.rapid_cross - -;psx, Virtual Port 7, Dual Analog: Rapid □ (left) -psx.input.port7.dualanalog.rapid_square - -;psx, Virtual Port 7, Dual Analog: Rapid △ (upper) -psx.input.port7.dualanalog.rapid_triangle - -;psx, Virtual Port 7, Dual Analog: D-Pad RIGHT → -psx.input.port7.dualanalog.right - -;psx, Virtual Port 7, Dual Analog: Right Stick DOWN ↓ -psx.input.port7.dualanalog.rstick_down - -;psx, Virtual Port 7, Dual Analog: Right Stick LEFT ← -psx.input.port7.dualanalog.rstick_left - -;psx, Virtual Port 7, Dual Analog: Right Stick RIGHT → -psx.input.port7.dualanalog.rstick_right - -;psx, Virtual Port 7, Dual Analog: Right Stick UP ↑ -psx.input.port7.dualanalog.rstick_up - -;psx, Virtual Port 7, Dual Analog: SELECT -psx.input.port7.dualanalog.select - -;psx, Virtual Port 7, Dual Analog: □ (left) -psx.input.port7.dualanalog.square - -;psx, Virtual Port 7, Dual Analog: START -psx.input.port7.dualanalog.start - -;psx, Virtual Port 7, Dual Analog: △ (upper) -psx.input.port7.dualanalog.triangle - -;psx, Virtual Port 7, Dual Analog: D-Pad UP ↑ -psx.input.port7.dualanalog.up - -;psx, Virtual Port 7, DualShock: Analog(mode toggle) -psx.input.port7.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 7. -psx.input.port7.dualshock.axis_scale 1.00 - -;psx, Virtual Port 7, DualShock: ○ (right) -psx.input.port7.dualshock.circle - -;psx, Virtual Port 7, DualShock: x (lower) -psx.input.port7.dualshock.cross - -;psx, Virtual Port 7, DualShock: D-Pad DOWN ↓ -psx.input.port7.dualshock.down - -;psx, Virtual Port 7, DualShock: L1 (front left shoulder) -psx.input.port7.dualshock.l1 - -;psx, Virtual Port 7, DualShock: L2 (rear left shoulder) -psx.input.port7.dualshock.l2 - -;psx, Virtual Port 7, DualShock: Left Stick, Button(L3) -psx.input.port7.dualshock.l3 - -;psx, Virtual Port 7, DualShock: D-Pad LEFT ← -psx.input.port7.dualshock.left - -;psx, Virtual Port 7, DualShock: Left Stick DOWN ↓ -psx.input.port7.dualshock.lstick_down - -;psx, Virtual Port 7, DualShock: Left Stick LEFT ← -psx.input.port7.dualshock.lstick_left - -;psx, Virtual Port 7, DualShock: Left Stick RIGHT → -psx.input.port7.dualshock.lstick_right - -;psx, Virtual Port 7, DualShock: Left Stick UP ↑ -psx.input.port7.dualshock.lstick_up - -;psx, Virtual Port 7, DualShock: R1 (front right shoulder) -psx.input.port7.dualshock.r1 - -;psx, Virtual Port 7, DualShock: R2 (rear right shoulder) -psx.input.port7.dualshock.r2 - -;psx, Virtual Port 7, DualShock: Right stick, Button(R3) -psx.input.port7.dualshock.r3 - -;psx, Virtual Port 7, DualShock: Rapid ○ (right) -psx.input.port7.dualshock.rapid_circle - -;psx, Virtual Port 7, DualShock: Rapid x (lower) -psx.input.port7.dualshock.rapid_cross - -;psx, Virtual Port 7, DualShock: Rapid □ (left) -psx.input.port7.dualshock.rapid_square - -;psx, Virtual Port 7, DualShock: Rapid △ (upper) -psx.input.port7.dualshock.rapid_triangle - -;psx, Virtual Port 7, DualShock: D-Pad RIGHT → -psx.input.port7.dualshock.right - -;psx, Virtual Port 7, DualShock: Right Stick DOWN ↓ -psx.input.port7.dualshock.rstick_down - -;psx, Virtual Port 7, DualShock: Right Stick LEFT ← -psx.input.port7.dualshock.rstick_left - -;psx, Virtual Port 7, DualShock: Right Stick RIGHT → -psx.input.port7.dualshock.rstick_right - -;psx, Virtual Port 7, DualShock: Right Stick UP ↑ -psx.input.port7.dualshock.rstick_up - -;psx, Virtual Port 7, DualShock: SELECT -psx.input.port7.dualshock.select - -;psx, Virtual Port 7, DualShock: □ (left) -psx.input.port7.dualshock.square - -;psx, Virtual Port 7, DualShock: START -psx.input.port7.dualshock.start - -;psx, Virtual Port 7, DualShock: △ (upper) -psx.input.port7.dualshock.triangle - -;psx, Virtual Port 7, DualShock: D-Pad UP ↑ -psx.input.port7.dualshock.up - -;psx, Virtual Port 7, Digital Gamepad: ○ (right) -psx.input.port7.gamepad.circle - -;psx, Virtual Port 7, Digital Gamepad: x (lower) -psx.input.port7.gamepad.cross - -;psx, Virtual Port 7, Digital Gamepad: DOWN ↓ -psx.input.port7.gamepad.down - -;psx, Virtual Port 7, Digital Gamepad: L1 (front left shoulder) -psx.input.port7.gamepad.l1 - -;psx, Virtual Port 7, Digital Gamepad: L2 (rear left shoulder) -psx.input.port7.gamepad.l2 - -;psx, Virtual Port 7, Digital Gamepad: LEFT ← -psx.input.port7.gamepad.left - -;psx, Virtual Port 7, Digital Gamepad: R1 (front right shoulder) -psx.input.port7.gamepad.r1 - -;psx, Virtual Port 7, Digital Gamepad: R2 (rear right shoulder) -psx.input.port7.gamepad.r2 - -;psx, Virtual Port 7, Digital Gamepad: Rapid ○ (right) -psx.input.port7.gamepad.rapid_circle - -;psx, Virtual Port 7, Digital Gamepad: Rapid x (lower) -psx.input.port7.gamepad.rapid_cross - -;psx, Virtual Port 7, Digital Gamepad: Rapid □ (left) -psx.input.port7.gamepad.rapid_square - -;psx, Virtual Port 7, Digital Gamepad: Rapid △ (upper) -psx.input.port7.gamepad.rapid_triangle - -;psx, Virtual Port 7, Digital Gamepad: RIGHT → -psx.input.port7.gamepad.right - -;psx, Virtual Port 7, Digital Gamepad: SELECT -psx.input.port7.gamepad.select - -;psx, Virtual Port 7, Digital Gamepad: □ (left) -psx.input.port7.gamepad.square - -;psx, Virtual Port 7, Digital Gamepad: START -psx.input.port7.gamepad.start - -;psx, Virtual Port 7, Digital Gamepad: △ (upper) -psx.input.port7.gamepad.triangle - -;psx, Virtual Port 7, Digital Gamepad: UP ↑ -psx.input.port7.gamepad.up - -;Crosshairs color for lightgun on virtual port 7. -psx.input.port7.gun_chairs 0x0080FF - -;psx, Virtual Port 7, GunCon: A -psx.input.port7.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 7, GunCon: B -psx.input.port7.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 7, GunCon: Offscreen Shot(Simulated) -psx.input.port7.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 7, GunCon: Trigger -psx.input.port7.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 7, GunCon: X Axis -psx.input.port7.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 7, GunCon: Y Axis -psx.input.port7.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 7, Konami Justifier: O -psx.input.port7.justifier.o - -;psx, Virtual Port 7, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port7.justifier.offscreen_shot - -;psx, Virtual Port 7, Konami Justifier: Start -psx.input.port7.justifier.start - -;psx, Virtual Port 7, Konami Justifier: Trigger -psx.input.port7.justifier.trigger - -;psx, Virtual Port 7, Konami Justifier: X Axis -psx.input.port7.justifier.x_axis - -;psx, Virtual Port 7, Konami Justifier: Y Axis -psx.input.port7.justifier.y_axis - -;Emulate memory card on virtual port 7. -psx.input.port7.memcard 1 - -;psx, Virtual Port 7, Mouse: Left Button -psx.input.port7.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 7, Mouse: Motion Down -psx.input.port7.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 7, Mouse: Motion Left -psx.input.port7.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 7, Mouse: Motion Right -psx.input.port7.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 7, Mouse: Motion Up -psx.input.port7.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 7, Mouse: Right Button -psx.input.port7.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 7, neGcon: A -psx.input.port7.negcon.a - -;psx, Virtual Port 7, neGcon: B -psx.input.port7.negcon.b - -;psx, Virtual Port 7, neGcon: D-Pad DOWN ↓ -psx.input.port7.negcon.down - -;psx, Virtual Port 7, neGcon: I (Analog) -psx.input.port7.negcon.i - -;psx, Virtual Port 7, neGcon: II (Analog) -psx.input.port7.negcon.ii - -;psx, Virtual Port 7, neGcon: Left Shoulder (Analog) -psx.input.port7.negcon.l - -;psx, Virtual Port 7, neGcon: D-Pad LEFT ← -psx.input.port7.negcon.left - -;psx, Virtual Port 7, neGcon: Right Shoulder -psx.input.port7.negcon.r - -;psx, Virtual Port 7, neGcon: D-Pad RIGHT → -psx.input.port7.negcon.right - -;psx, Virtual Port 7, neGcon: START -psx.input.port7.negcon.start - -;psx, Virtual Port 7, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port7.negcon.twist_ccwise - -;psx, Virtual Port 7, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port7.negcon.twist_cwise - -;psx, Virtual Port 7, neGcon: D-Pad UP ↑ -psx.input.port7.negcon.up - -;Input device for Virtual Port 8 -psx.input.port8 gamepad - -;Analog axis scale coefficient for Analog Joystick on Virtual Port 8. -psx.input.port8.analogjoy.axis_scale 1.00 - -;psx, Virtual Port 8, Analog Joystick: Right stick, R-thumb -psx.input.port8.analogjoy.circle - -;psx, Virtual Port 8, Analog Joystick: Right stick, L-thumb -psx.input.port8.analogjoy.cross - -;psx, Virtual Port 8, Analog Joystick: Thumbstick DOWN ↓ -psx.input.port8.analogjoy.down - -;psx, Virtual Port 8, Analog Joystick: Left stick, L-thumb -psx.input.port8.analogjoy.l1 - -;psx, Virtual Port 8, Analog Joystick: Left stick, Trigger -psx.input.port8.analogjoy.l2 - -;psx, Virtual Port 8, Analog Joystick: Thumbstick LEFT ← -psx.input.port8.analogjoy.left - -;psx, Virtual Port 8, Analog Joystick: Left Stick, BACK ↓ -psx.input.port8.analogjoy.lstick_down - -;psx, Virtual Port 8, Analog Joystick: Left Stick, LEFT ← -psx.input.port8.analogjoy.lstick_left - -;psx, Virtual Port 8, Analog Joystick: Left Stick, RIGHT → -psx.input.port8.analogjoy.lstick_right - -;psx, Virtual Port 8, Analog Joystick: Left Stick, FORE ↑ -psx.input.port8.analogjoy.lstick_up - -;psx, Virtual Port 8, Analog Joystick: Left stick, R-thumb -psx.input.port8.analogjoy.r1 - -;psx, Virtual Port 8, Analog Joystick: Left stick, Pinky -psx.input.port8.analogjoy.r2 - -;psx, Virtual Port 8, Analog Joystick: Thumbstick RIGHT → -psx.input.port8.analogjoy.right - -;psx, Virtual Port 8, Analog Joystick: Right Stick, BACK ↓ -psx.input.port8.analogjoy.rstick_down - -;psx, Virtual Port 8, Analog Joystick: Right Stick, LEFT ← -psx.input.port8.analogjoy.rstick_left - -;psx, Virtual Port 8, Analog Joystick: Right Stick, RIGHT → -psx.input.port8.analogjoy.rstick_right - -;psx, Virtual Port 8, Analog Joystick: Right Stick, FORE ↑ -psx.input.port8.analogjoy.rstick_up - -;psx, Virtual Port 8, Analog Joystick: SELECT -psx.input.port8.analogjoy.select - -;psx, Virtual Port 8, Analog Joystick: Right stick, Trigger -psx.input.port8.analogjoy.square - -;psx, Virtual Port 8, Analog Joystick: START -psx.input.port8.analogjoy.start - -;psx, Virtual Port 8, Analog Joystick: Right stick, Pinky -psx.input.port8.analogjoy.triangle - -;psx, Virtual Port 8, Analog Joystick: Thumbstick UP ↑ -psx.input.port8.analogjoy.up - -;psx, Virtual Port 8, Dance Pad: ○ (upper right) -psx.input.port8.dancepad.circle - -;psx, Virtual Port 8, Dance Pad: x (upper left) -psx.input.port8.dancepad.cross - -;psx, Virtual Port 8, Dance Pad: DOWN ↓ -psx.input.port8.dancepad.down - -;psx, Virtual Port 8, Dance Pad: LEFT ← -psx.input.port8.dancepad.left - -;psx, Virtual Port 8, Dance Pad: RIGHT → -psx.input.port8.dancepad.right - -;psx, Virtual Port 8, Dance Pad: SELECT -psx.input.port8.dancepad.select - -;psx, Virtual Port 8, Dance Pad: □ (lower right) -psx.input.port8.dancepad.square - -;psx, Virtual Port 8, Dance Pad: START -psx.input.port8.dancepad.start - -;psx, Virtual Port 8, Dance Pad: △ (lower left) -psx.input.port8.dancepad.triangle - -;psx, Virtual Port 8, Dance Pad: UP ↑ -psx.input.port8.dancepad.up - -;Analog axis scale coefficient for Dual Analog on Virtual Port 8. -psx.input.port8.dualanalog.axis_scale 1.00 - -;psx, Virtual Port 8, Dual Analog: ○ (right) -psx.input.port8.dualanalog.circle - -;psx, Virtual Port 8, Dual Analog: x (lower) -psx.input.port8.dualanalog.cross - -;psx, Virtual Port 8, Dual Analog: D-Pad DOWN ↓ -psx.input.port8.dualanalog.down - -;psx, Virtual Port 8, Dual Analog: L1 (front left shoulder) -psx.input.port8.dualanalog.l1 - -;psx, Virtual Port 8, Dual Analog: L2 (rear left shoulder) -psx.input.port8.dualanalog.l2 - -;psx, Virtual Port 8, Dual Analog: Left Stick, Button(L3) -psx.input.port8.dualanalog.l3 - -;psx, Virtual Port 8, Dual Analog: D-Pad LEFT ← -psx.input.port8.dualanalog.left - -;psx, Virtual Port 8, Dual Analog: Left Stick DOWN ↓ -psx.input.port8.dualanalog.lstick_down - -;psx, Virtual Port 8, Dual Analog: Left Stick LEFT ← -psx.input.port8.dualanalog.lstick_left - -;psx, Virtual Port 8, Dual Analog: Left Stick RIGHT → -psx.input.port8.dualanalog.lstick_right - -;psx, Virtual Port 8, Dual Analog: Left Stick UP ↑ -psx.input.port8.dualanalog.lstick_up - -;psx, Virtual Port 8, Dual Analog: R1 (front right shoulder) -psx.input.port8.dualanalog.r1 - -;psx, Virtual Port 8, Dual Analog: R2 (rear right shoulder) -psx.input.port8.dualanalog.r2 - -;psx, Virtual Port 8, Dual Analog: Right stick, Button(R3) -psx.input.port8.dualanalog.r3 - -;psx, Virtual Port 8, Dual Analog: Rapid ○ (right) -psx.input.port8.dualanalog.rapid_circle - -;psx, Virtual Port 8, Dual Analog: Rapid x (lower) -psx.input.port8.dualanalog.rapid_cross - -;psx, Virtual Port 8, Dual Analog: Rapid □ (left) -psx.input.port8.dualanalog.rapid_square - -;psx, Virtual Port 8, Dual Analog: Rapid △ (upper) -psx.input.port8.dualanalog.rapid_triangle - -;psx, Virtual Port 8, Dual Analog: D-Pad RIGHT → -psx.input.port8.dualanalog.right - -;psx, Virtual Port 8, Dual Analog: Right Stick DOWN ↓ -psx.input.port8.dualanalog.rstick_down - -;psx, Virtual Port 8, Dual Analog: Right Stick LEFT ← -psx.input.port8.dualanalog.rstick_left - -;psx, Virtual Port 8, Dual Analog: Right Stick RIGHT → -psx.input.port8.dualanalog.rstick_right - -;psx, Virtual Port 8, Dual Analog: Right Stick UP ↑ -psx.input.port8.dualanalog.rstick_up - -;psx, Virtual Port 8, Dual Analog: SELECT -psx.input.port8.dualanalog.select - -;psx, Virtual Port 8, Dual Analog: □ (left) -psx.input.port8.dualanalog.square - -;psx, Virtual Port 8, Dual Analog: START -psx.input.port8.dualanalog.start - -;psx, Virtual Port 8, Dual Analog: △ (upper) -psx.input.port8.dualanalog.triangle - -;psx, Virtual Port 8, Dual Analog: D-Pad UP ↑ -psx.input.port8.dualanalog.up - -;psx, Virtual Port 8, DualShock: Analog(mode toggle) -psx.input.port8.dualshock.analog - -;Analog axis scale coefficient for DualShock on Virtual Port 8. -psx.input.port8.dualshock.axis_scale 1.00 - -;psx, Virtual Port 8, DualShock: ○ (right) -psx.input.port8.dualshock.circle - -;psx, Virtual Port 8, DualShock: x (lower) -psx.input.port8.dualshock.cross - -;psx, Virtual Port 8, DualShock: D-Pad DOWN ↓ -psx.input.port8.dualshock.down - -;psx, Virtual Port 8, DualShock: L1 (front left shoulder) -psx.input.port8.dualshock.l1 - -;psx, Virtual Port 8, DualShock: L2 (rear left shoulder) -psx.input.port8.dualshock.l2 - -;psx, Virtual Port 8, DualShock: Left Stick, Button(L3) -psx.input.port8.dualshock.l3 - -;psx, Virtual Port 8, DualShock: D-Pad LEFT ← -psx.input.port8.dualshock.left - -;psx, Virtual Port 8, DualShock: Left Stick DOWN ↓ -psx.input.port8.dualshock.lstick_down - -;psx, Virtual Port 8, DualShock: Left Stick LEFT ← -psx.input.port8.dualshock.lstick_left - -;psx, Virtual Port 8, DualShock: Left Stick RIGHT → -psx.input.port8.dualshock.lstick_right - -;psx, Virtual Port 8, DualShock: Left Stick UP ↑ -psx.input.port8.dualshock.lstick_up - -;psx, Virtual Port 8, DualShock: R1 (front right shoulder) -psx.input.port8.dualshock.r1 - -;psx, Virtual Port 8, DualShock: R2 (rear right shoulder) -psx.input.port8.dualshock.r2 - -;psx, Virtual Port 8, DualShock: Right stick, Button(R3) -psx.input.port8.dualshock.r3 - -;psx, Virtual Port 8, DualShock: Rapid ○ (right) -psx.input.port8.dualshock.rapid_circle - -;psx, Virtual Port 8, DualShock: Rapid x (lower) -psx.input.port8.dualshock.rapid_cross - -;psx, Virtual Port 8, DualShock: Rapid □ (left) -psx.input.port8.dualshock.rapid_square - -;psx, Virtual Port 8, DualShock: Rapid △ (upper) -psx.input.port8.dualshock.rapid_triangle - -;psx, Virtual Port 8, DualShock: D-Pad RIGHT → -psx.input.port8.dualshock.right - -;psx, Virtual Port 8, DualShock: Right Stick DOWN ↓ -psx.input.port8.dualshock.rstick_down - -;psx, Virtual Port 8, DualShock: Right Stick LEFT ← -psx.input.port8.dualshock.rstick_left - -;psx, Virtual Port 8, DualShock: Right Stick RIGHT → -psx.input.port8.dualshock.rstick_right - -;psx, Virtual Port 8, DualShock: Right Stick UP ↑ -psx.input.port8.dualshock.rstick_up - -;psx, Virtual Port 8, DualShock: SELECT -psx.input.port8.dualshock.select - -;psx, Virtual Port 8, DualShock: □ (left) -psx.input.port8.dualshock.square - -;psx, Virtual Port 8, DualShock: START -psx.input.port8.dualshock.start - -;psx, Virtual Port 8, DualShock: △ (upper) -psx.input.port8.dualshock.triangle - -;psx, Virtual Port 8, DualShock: D-Pad UP ↑ -psx.input.port8.dualshock.up - -;psx, Virtual Port 8, Digital Gamepad: ○ (right) -psx.input.port8.gamepad.circle - -;psx, Virtual Port 8, Digital Gamepad: x (lower) -psx.input.port8.gamepad.cross - -;psx, Virtual Port 8, Digital Gamepad: DOWN ↓ -psx.input.port8.gamepad.down - -;psx, Virtual Port 8, Digital Gamepad: L1 (front left shoulder) -psx.input.port8.gamepad.l1 - -;psx, Virtual Port 8, Digital Gamepad: L2 (rear left shoulder) -psx.input.port8.gamepad.l2 - -;psx, Virtual Port 8, Digital Gamepad: LEFT ← -psx.input.port8.gamepad.left - -;psx, Virtual Port 8, Digital Gamepad: R1 (front right shoulder) -psx.input.port8.gamepad.r1 - -;psx, Virtual Port 8, Digital Gamepad: R2 (rear right shoulder) -psx.input.port8.gamepad.r2 - -;psx, Virtual Port 8, Digital Gamepad: Rapid ○ (right) -psx.input.port8.gamepad.rapid_circle - -;psx, Virtual Port 8, Digital Gamepad: Rapid x (lower) -psx.input.port8.gamepad.rapid_cross - -;psx, Virtual Port 8, Digital Gamepad: Rapid □ (left) -psx.input.port8.gamepad.rapid_square - -;psx, Virtual Port 8, Digital Gamepad: Rapid △ (upper) -psx.input.port8.gamepad.rapid_triangle - -;psx, Virtual Port 8, Digital Gamepad: RIGHT → -psx.input.port8.gamepad.right - -;psx, Virtual Port 8, Digital Gamepad: SELECT -psx.input.port8.gamepad.select - -;psx, Virtual Port 8, Digital Gamepad: □ (left) -psx.input.port8.gamepad.square - -;psx, Virtual Port 8, Digital Gamepad: START -psx.input.port8.gamepad.start - -;psx, Virtual Port 8, Digital Gamepad: △ (upper) -psx.input.port8.gamepad.triangle - -;psx, Virtual Port 8, Digital Gamepad: UP ↑ -psx.input.port8.gamepad.up - -;Crosshairs color for lightgun on virtual port 8. -psx.input.port8.gun_chairs 0x8000FF - -;psx, Virtual Port 8, GunCon: A -psx.input.port8.guncon.a mouse 0x0 button_right - -;psx, Virtual Port 8, GunCon: B -psx.input.port8.guncon.b mouse 0x0 button_middle - -;psx, Virtual Port 8, GunCon: Offscreen Shot(Simulated) -psx.input.port8.guncon.offscreen_shot keyboard 0x0 44 - -;psx, Virtual Port 8, GunCon: Trigger -psx.input.port8.guncon.trigger mouse 0x0 button_left - -;psx, Virtual Port 8, GunCon: X Axis -psx.input.port8.guncon.x_axis mouse 0x0 cursor_x-+ - -;psx, Virtual Port 8, GunCon: Y Axis -psx.input.port8.guncon.y_axis mouse 0x0 cursor_y-+ - -;psx, Virtual Port 8, Konami Justifier: O -psx.input.port8.justifier.o - -;psx, Virtual Port 8, Konami Justifier: Offscreen Shot(Simulated) -psx.input.port8.justifier.offscreen_shot - -;psx, Virtual Port 8, Konami Justifier: Start -psx.input.port8.justifier.start - -;psx, Virtual Port 8, Konami Justifier: Trigger -psx.input.port8.justifier.trigger - -;psx, Virtual Port 8, Konami Justifier: X Axis -psx.input.port8.justifier.x_axis - -;psx, Virtual Port 8, Konami Justifier: Y Axis -psx.input.port8.justifier.y_axis - -;Emulate memory card on virtual port 8. -psx.input.port8.memcard 1 - -;psx, Virtual Port 8, Mouse: Left Button -psx.input.port8.mouse.left mouse 0x0 button_left - -;psx, Virtual Port 8, Mouse: Motion Down -psx.input.port8.mouse.motion_down mouse 0x0 rel_y+ - -;psx, Virtual Port 8, Mouse: Motion Left -psx.input.port8.mouse.motion_left mouse 0x0 rel_x- - -;psx, Virtual Port 8, Mouse: Motion Right -psx.input.port8.mouse.motion_right mouse 0x0 rel_x+ - -;psx, Virtual Port 8, Mouse: Motion Up -psx.input.port8.mouse.motion_up mouse 0x0 rel_y- - -;psx, Virtual Port 8, Mouse: Right Button -psx.input.port8.mouse.right mouse 0x0 button_right - -;psx, Virtual Port 8, neGcon: A -psx.input.port8.negcon.a - -;psx, Virtual Port 8, neGcon: B -psx.input.port8.negcon.b - -;psx, Virtual Port 8, neGcon: D-Pad DOWN ↓ -psx.input.port8.negcon.down - -;psx, Virtual Port 8, neGcon: I (Analog) -psx.input.port8.negcon.i - -;psx, Virtual Port 8, neGcon: II (Analog) -psx.input.port8.negcon.ii - -;psx, Virtual Port 8, neGcon: Left Shoulder (Analog) -psx.input.port8.negcon.l - -;psx, Virtual Port 8, neGcon: D-Pad LEFT ← -psx.input.port8.negcon.left - -;psx, Virtual Port 8, neGcon: Right Shoulder -psx.input.port8.negcon.r - -;psx, Virtual Port 8, neGcon: D-Pad RIGHT → -psx.input.port8.negcon.right - -;psx, Virtual Port 8, neGcon: START -psx.input.port8.negcon.start - -;psx, Virtual Port 8, neGcon: Twist ↑|↓ (Analog, Turn Left) -psx.input.port8.negcon.twist_ccwise - -;psx, Virtual Port 8, neGcon: Twist ↓|↑ (Analog, Turn Right) -psx.input.port8.negcon.twist_cwise - -;psx, Virtual Port 8, neGcon: D-Pad UP ↑ -psx.input.port8.negcon.up - -;Enable multitap on PSX port 1. -psx.input.pport1.multitap 0 - -;Enable multitap on PSX port 2. -psx.input.pport2.multitap 0 - -;Attempt to auto-detect region of game. -psx.region_autodetect 1 - -;Default region to use. -psx.region_default jp - -;Enable scanlines with specified opacity. -psx.scanlines 0 - -;Enable specified OpenGL shader. -psx.shader none - -;Force interlaced video to be treated as progressive. -psx.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -psx.shader.goat.hdiv 0.50 - -;Mask pattern. -psx.shader.goat.pat goatron - -;Enable scanlines effect. -psx.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -psx.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -psx.shader.goat.vdiv 0.50 - -;Last displayed scanline in NTSC mode. -psx.slend 239 - -;Last displayed scanline in PAL mode. -psx.slendp 287 - -;First displayed scanline in NTSC mode. -psx.slstart 0 - -;First displayed scanline in PAL mode. -psx.slstartp 0 - -;Enable specified special video scaler. -psx.special none - -;SPU output resampler quality. -psx.spu.resamp_quality 5 - -;Stretch to fill screen. -psx.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -psx.tblur 0 - -;Accumulate color data rather than discarding it. -psx.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -psx.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -psx.videoip 1 - -;Full-screen horizontal resolution. -psx.xres 0 - -;Scaling factor for the X axis in windowed mode. -psx.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -psx.xscalefs 1.000000 - -;Full-screen vertical resolution. -psx.yres 0 - -;Scaling factor for the Y axis in windowed mode. -psx.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -psx.yscalefs 1.000000 - -;Double the raw image's height if it's below this threshold. -qtrecord.h_double_threshold 256 - -;Video codec to use. -qtrecord.vcodec cscd - -;Double the raw image's width if it's below this threshold. -qtrecord.w_double_threshold 384 - -;SLOW-forwarding speed multiplier. -sfspeed 0.75 - -;Treat the SLOW-forward button as a toggle. -sftoggle 0 - -;Enable (automatic) usage of this module. -sms.enable 1 - -;Enable FM sound emulation when playing domestic/Japan-region games. -sms.fm 1 - -;Force monophonic sound output. -sms.forcemono 0 - -;sms, Port 1, Gamepad: DOWN ↓ -sms.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;sms, Port 1, Gamepad: Fire 1/Start -sms.input.port1.gamepad.fire1 joystick 0x0003045e028e01010008000b00000000 button_0 - -;sms, Port 1, Gamepad: Fire 2 -sms.input.port1.gamepad.fire2 joystick 0x0003045e028e01010008000b00000000 button_1 - -;sms, Port 1, Gamepad: LEFT ← -sms.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;sms, Port 1, Gamepad: Pause -sms.input.port1.gamepad.pause joystick 0x0003045e028e01010008000b00000000 button_7 - -;sms, Port 1, Gamepad: Rapid Fire 1/Start -sms.input.port1.gamepad.rapid_fire1 joystick 0x0003045e028e01010008000b00000000 button_2 - -;sms, Port 1, Gamepad: Rapid Fire 2 -sms.input.port1.gamepad.rapid_fire2 joystick 0x0003045e028e01010008000b00000000 button_3 - -;sms, Port 1, Gamepad: RIGHT → -sms.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;sms, Port 1, Gamepad: UP ↑ -sms.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;sms, Port 2, Gamepad: DOWN ↓ -sms.input.port2.gamepad.down - -;sms, Port 2, Gamepad: Fire 1/Start -sms.input.port2.gamepad.fire1 - -;sms, Port 2, Gamepad: Fire 2 -sms.input.port2.gamepad.fire2 - -;sms, Port 2, Gamepad: LEFT ← -sms.input.port2.gamepad.left - -;sms, Port 2, Gamepad: Pause -sms.input.port2.gamepad.pause - -;sms, Port 2, Gamepad: Rapid Fire 1/Start -sms.input.port2.gamepad.rapid_fire1 - -;sms, Port 2, Gamepad: Rapid Fire 2 -sms.input.port2.gamepad.rapid_fire2 - -;sms, Port 2, Gamepad: RIGHT → -sms.input.port2.gamepad.right - -;sms, Port 2, Gamepad: UP ↑ -sms.input.port2.gamepad.up - -;Enable scanlines with specified opacity. -sms.scanlines 0 - -;Enable specified OpenGL shader. -sms.shader sabr - -;Force interlaced video to be treated as progressive. -sms.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -sms.shader.goat.hdiv 0.50 - -;Mask pattern. -sms.shader.goat.pat goatron - -;Enable scanlines effect. -sms.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -sms.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -sms.shader.goat.vdiv 0.50 - -;Last displayed scanline in NTSC mode. -sms.slend 239 - -;Last displayed scanline in PAL mode. -sms.slendp 239 - -;First displayed scanline in NTSC mode. -sms.slstart 0 - -;First displayed scanline in PAL mode. -sms.slstartp 0 - -;Enable specified special video scaler. -sms.special none - -;Stretch to fill screen. -sms.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -sms.tblur 0 - -;Accumulate color data rather than discarding it. -sms.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -sms.tblur.accum.amount 50 - -;System territory/region. -sms.territory export - -;Enable (bi)linear interpolation. -sms.videoip 0 - -;Full-screen horizontal resolution. -sms.xres 0 - -;Scaling factor for the X axis in windowed mode. -sms.xscale 4.000000 - -;Scaling factor for the X axis in fullscreen mode. -sms.xscalefs 1.000000 - -;Full-screen vertical resolution. -sms.yres 0 - -;Scaling factor for the Y axis in windowed mode. -sms.yscale 4.000000 - -;Scaling factor for the Y axis in fullscreen mode. -sms.yscalefs 1.000000 - -;APU output resampler quality. -snes.apu.resamp_quality 5 - -;Correct the aspect ratio. -snes.correct_aspect 0 - -;Enable (automatic) usage of this module. -snes.enable 1 - -;Force monophonic sound output. -snes.forcemono 0 - -;Enable horizontal blend(blur) filter. -snes.h_blend 0 - -;Input device for Port 1/1A -snes.input.port1 gamepad - -;snes, Port 1/1A, Gamepad: A (right) -snes.input.port1.gamepad.a keyboard 0x0 94 - -;snes, Port 1/1A, Gamepad: B (center, lower) -snes.input.port1.gamepad.b keyboard 0x0 90 - -;snes, Port 1/1A, Gamepad: DOWN ↓ -snes.input.port1.gamepad.down keyboard 0x0 22 - -;snes, Port 1/1A, Gamepad: Left Shoulder -snes.input.port1.gamepad.l keyboard 0x0 95 - -;snes, Port 1/1A, Gamepad: LEFT ← -snes.input.port1.gamepad.left keyboard 0x0 4 - -;snes, Port 1/1A, Gamepad: Right Shoulder -snes.input.port1.gamepad.r keyboard 0x0 97 - -;snes, Port 1/1A, Gamepad: Rapid A (right) -snes.input.port1.gamepad.rapid_a - -;snes, Port 1/1A, Gamepad: Rapid B (center, lower) -snes.input.port1.gamepad.rapid_b - -;snes, Port 1/1A, Gamepad: Rapid X (center, upper) -snes.input.port1.gamepad.rapid_x - -;snes, Port 1/1A, Gamepad: Rapid Y (left) -snes.input.port1.gamepad.rapid_y - -;snes, Port 1/1A, Gamepad: RIGHT → -snes.input.port1.gamepad.right keyboard 0x0 7 - -;snes, Port 1/1A, Gamepad: SELECT -snes.input.port1.gamepad.select keyboard 0x0 43 - -;snes, Port 1/1A, Gamepad: START -snes.input.port1.gamepad.start keyboard 0x0 40 - -;snes, Port 1/1A, Gamepad: UP ↑ -snes.input.port1.gamepad.up keyboard 0x0 26 - -;snes, Port 1/1A, Gamepad: X (center, upper) -snes.input.port1.gamepad.x keyboard 0x0 96 - -;snes, Port 1/1A, Gamepad: Y (left) -snes.input.port1.gamepad.y keyboard 0x0 92 - -;snes, Port 1/1A, Mouse: Left Button -snes.input.port1.mouse.left mouse 0x0 button_left - -;snes, Port 1/1A, Mouse: Motion Down -snes.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;snes, Port 1/1A, Mouse: Motion Left -snes.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;snes, Port 1/1A, Mouse: Motion Right -snes.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;snes, Port 1/1A, Mouse: Motion Up -snes.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;snes, Port 1/1A, Mouse: Right Button -snes.input.port1.mouse.right mouse 0x0 button_right - -;Enable multitap on SNES port 1. -snes.input.port1.multitap 0 - -;Input device for Port 2/2A -snes.input.port2 gamepad - -;snes, Port 2/2A, Gamepad: A (right) -snes.input.port2.gamepad.a - -;snes, Port 2/2A, Gamepad: B (center, lower) -snes.input.port2.gamepad.b - -;snes, Port 2/2A, Gamepad: DOWN ↓ -snes.input.port2.gamepad.down - -;snes, Port 2/2A, Gamepad: Left Shoulder -snes.input.port2.gamepad.l - -;snes, Port 2/2A, Gamepad: LEFT ← -snes.input.port2.gamepad.left - -;snes, Port 2/2A, Gamepad: Right Shoulder -snes.input.port2.gamepad.r - -;snes, Port 2/2A, Gamepad: Rapid A (right) -snes.input.port2.gamepad.rapid_a - -;snes, Port 2/2A, Gamepad: Rapid B (center, lower) -snes.input.port2.gamepad.rapid_b - -;snes, Port 2/2A, Gamepad: Rapid X (center, upper) -snes.input.port2.gamepad.rapid_x - -;snes, Port 2/2A, Gamepad: Rapid Y (left) -snes.input.port2.gamepad.rapid_y - -;snes, Port 2/2A, Gamepad: RIGHT → -snes.input.port2.gamepad.right - -;snes, Port 2/2A, Gamepad: SELECT -snes.input.port2.gamepad.select - -;snes, Port 2/2A, Gamepad: START -snes.input.port2.gamepad.start - -;snes, Port 2/2A, Gamepad: UP ↑ -snes.input.port2.gamepad.up - -;snes, Port 2/2A, Gamepad: X (center, upper) -snes.input.port2.gamepad.x - -;snes, Port 2/2A, Gamepad: Y (left) -snes.input.port2.gamepad.y - -;snes, Port 2/2A, Mouse: Left Button -snes.input.port2.mouse.left mouse 0x0 button_left - -;snes, Port 2/2A, Mouse: Motion Down -snes.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;snes, Port 2/2A, Mouse: Motion Left -snes.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;snes, Port 2/2A, Mouse: Motion Right -snes.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;snes, Port 2/2A, Mouse: Motion Up -snes.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;snes, Port 2/2A, Mouse: Right Button -snes.input.port2.mouse.right mouse 0x0 button_right - -;Enable multitap on SNES port 2. -snes.input.port2.multitap 0 - -;snes, Port 2/2A, Super Scope: Cursor -snes.input.port2.superscope.cursor mouse 0x0 button_right - -;snes, Port 2/2A, Super Scope: Offscreen Shot(Simulated) -snes.input.port2.superscope.offscreen_shot keyboard 0x0 44 - -;snes, Port 2/2A, Super Scope: Pause -snes.input.port2.superscope.pause mouse 0x0 button_middle - -;snes, Port 2/2A, Super Scope: Trigger -snes.input.port2.superscope.trigger mouse 0x0 button_left - -;snes, Port 2/2A, Super Scope: Turbo -snes.input.port2.superscope.turbo keyboard 0x0 77 - -;snes, Port 2/2A, Super Scope: X Axis -snes.input.port2.superscope.x_axis mouse 0x0 cursor_x-+ - -;snes, Port 2/2A, Super Scope: Y Axis -snes.input.port2.superscope.y_axis mouse 0x0 cursor_y-+ - -;snes, Port 2B, Gamepad: A (right) -snes.input.port3.gamepad.a - -;snes, Port 2B, Gamepad: B (center, lower) -snes.input.port3.gamepad.b - -;snes, Port 2B, Gamepad: DOWN ↓ -snes.input.port3.gamepad.down - -;snes, Port 2B, Gamepad: Left Shoulder -snes.input.port3.gamepad.l - -;snes, Port 2B, Gamepad: LEFT ← -snes.input.port3.gamepad.left - -;snes, Port 2B, Gamepad: Right Shoulder -snes.input.port3.gamepad.r - -;snes, Port 2B, Gamepad: Rapid A (right) -snes.input.port3.gamepad.rapid_a - -;snes, Port 2B, Gamepad: Rapid B (center, lower) -snes.input.port3.gamepad.rapid_b - -;snes, Port 2B, Gamepad: Rapid X (center, upper) -snes.input.port3.gamepad.rapid_x - -;snes, Port 2B, Gamepad: Rapid Y (left) -snes.input.port3.gamepad.rapid_y - -;snes, Port 2B, Gamepad: RIGHT → -snes.input.port3.gamepad.right - -;snes, Port 2B, Gamepad: SELECT -snes.input.port3.gamepad.select - -;snes, Port 2B, Gamepad: START -snes.input.port3.gamepad.start - -;snes, Port 2B, Gamepad: UP ↑ -snes.input.port3.gamepad.up - -;snes, Port 2B, Gamepad: X (center, upper) -snes.input.port3.gamepad.x - -;snes, Port 2B, Gamepad: Y (left) -snes.input.port3.gamepad.y - -;snes, Port 2C, Gamepad: A (right) -snes.input.port4.gamepad.a - -;snes, Port 2C, Gamepad: B (center, lower) -snes.input.port4.gamepad.b - -;snes, Port 2C, Gamepad: DOWN ↓ -snes.input.port4.gamepad.down - -;snes, Port 2C, Gamepad: Left Shoulder -snes.input.port4.gamepad.l - -;snes, Port 2C, Gamepad: LEFT ← -snes.input.port4.gamepad.left - -;snes, Port 2C, Gamepad: Right Shoulder -snes.input.port4.gamepad.r - -;snes, Port 2C, Gamepad: Rapid A (right) -snes.input.port4.gamepad.rapid_a - -;snes, Port 2C, Gamepad: Rapid B (center, lower) -snes.input.port4.gamepad.rapid_b - -;snes, Port 2C, Gamepad: Rapid X (center, upper) -snes.input.port4.gamepad.rapid_x - -;snes, Port 2C, Gamepad: Rapid Y (left) -snes.input.port4.gamepad.rapid_y - -;snes, Port 2C, Gamepad: RIGHT → -snes.input.port4.gamepad.right - -;snes, Port 2C, Gamepad: SELECT -snes.input.port4.gamepad.select - -;snes, Port 2C, Gamepad: START -snes.input.port4.gamepad.start - -;snes, Port 2C, Gamepad: UP ↑ -snes.input.port4.gamepad.up - -;snes, Port 2C, Gamepad: X (center, upper) -snes.input.port4.gamepad.x - -;snes, Port 2C, Gamepad: Y (left) -snes.input.port4.gamepad.y - -;snes, Port 2D, Gamepad: A (right) -snes.input.port5.gamepad.a - -;snes, Port 2D, Gamepad: B (center, lower) -snes.input.port5.gamepad.b - -;snes, Port 2D, Gamepad: DOWN ↓ -snes.input.port5.gamepad.down - -;snes, Port 2D, Gamepad: Left Shoulder -snes.input.port5.gamepad.l - -;snes, Port 2D, Gamepad: LEFT ← -snes.input.port5.gamepad.left - -;snes, Port 2D, Gamepad: Right Shoulder -snes.input.port5.gamepad.r - -;snes, Port 2D, Gamepad: Rapid A (right) -snes.input.port5.gamepad.rapid_a - -;snes, Port 2D, Gamepad: Rapid B (center, lower) -snes.input.port5.gamepad.rapid_b - -;snes, Port 2D, Gamepad: Rapid X (center, upper) -snes.input.port5.gamepad.rapid_x - -;snes, Port 2D, Gamepad: Rapid Y (left) -snes.input.port5.gamepad.rapid_y - -;snes, Port 2D, Gamepad: RIGHT → -snes.input.port5.gamepad.right - -;snes, Port 2D, Gamepad: SELECT -snes.input.port5.gamepad.select - -;snes, Port 2D, Gamepad: START -snes.input.port5.gamepad.start - -;snes, Port 2D, Gamepad: UP ↑ -snes.input.port5.gamepad.up - -;snes, Port 2D, Gamepad: X (center, upper) -snes.input.port5.gamepad.x - -;snes, Port 2D, Gamepad: Y (left) -snes.input.port5.gamepad.y - -;snes, Port 1B, Gamepad: A (right) -snes.input.port6.gamepad.a - -;snes, Port 1B, Gamepad: B (center, lower) -snes.input.port6.gamepad.b - -;snes, Port 1B, Gamepad: DOWN ↓ -snes.input.port6.gamepad.down - -;snes, Port 1B, Gamepad: Left Shoulder -snes.input.port6.gamepad.l - -;snes, Port 1B, Gamepad: LEFT ← -snes.input.port6.gamepad.left - -;snes, Port 1B, Gamepad: Right Shoulder -snes.input.port6.gamepad.r - -;snes, Port 1B, Gamepad: Rapid A (right) -snes.input.port6.gamepad.rapid_a - -;snes, Port 1B, Gamepad: Rapid B (center, lower) -snes.input.port6.gamepad.rapid_b - -;snes, Port 1B, Gamepad: Rapid X (center, upper) -snes.input.port6.gamepad.rapid_x - -;snes, Port 1B, Gamepad: Rapid Y (left) -snes.input.port6.gamepad.rapid_y - -;snes, Port 1B, Gamepad: RIGHT → -snes.input.port6.gamepad.right - -;snes, Port 1B, Gamepad: SELECT -snes.input.port6.gamepad.select - -;snes, Port 1B, Gamepad: START -snes.input.port6.gamepad.start - -;snes, Port 1B, Gamepad: UP ↑ -snes.input.port6.gamepad.up - -;snes, Port 1B, Gamepad: X (center, upper) -snes.input.port6.gamepad.x - -;snes, Port 1B, Gamepad: Y (left) -snes.input.port6.gamepad.y - -;snes, Port 1C, Gamepad: A (right) -snes.input.port7.gamepad.a - -;snes, Port 1C, Gamepad: B (center, lower) -snes.input.port7.gamepad.b - -;snes, Port 1C, Gamepad: DOWN ↓ -snes.input.port7.gamepad.down - -;snes, Port 1C, Gamepad: Left Shoulder -snes.input.port7.gamepad.l - -;snes, Port 1C, Gamepad: LEFT ← -snes.input.port7.gamepad.left - -;snes, Port 1C, Gamepad: Right Shoulder -snes.input.port7.gamepad.r - -;snes, Port 1C, Gamepad: Rapid A (right) -snes.input.port7.gamepad.rapid_a - -;snes, Port 1C, Gamepad: Rapid B (center, lower) -snes.input.port7.gamepad.rapid_b - -;snes, Port 1C, Gamepad: Rapid X (center, upper) -snes.input.port7.gamepad.rapid_x - -;snes, Port 1C, Gamepad: Rapid Y (left) -snes.input.port7.gamepad.rapid_y - -;snes, Port 1C, Gamepad: RIGHT → -snes.input.port7.gamepad.right - -;snes, Port 1C, Gamepad: SELECT -snes.input.port7.gamepad.select - -;snes, Port 1C, Gamepad: START -snes.input.port7.gamepad.start - -;snes, Port 1C, Gamepad: UP ↑ -snes.input.port7.gamepad.up - -;snes, Port 1C, Gamepad: X (center, upper) -snes.input.port7.gamepad.x - -;snes, Port 1C, Gamepad: Y (left) -snes.input.port7.gamepad.y - -;snes, Port 1D, Gamepad: A (right) -snes.input.port8.gamepad.a - -;snes, Port 1D, Gamepad: B (center, lower) -snes.input.port8.gamepad.b - -;snes, Port 1D, Gamepad: DOWN ↓ -snes.input.port8.gamepad.down - -;snes, Port 1D, Gamepad: Left Shoulder -snes.input.port8.gamepad.l - -;snes, Port 1D, Gamepad: LEFT ← -snes.input.port8.gamepad.left - -;snes, Port 1D, Gamepad: Right Shoulder -snes.input.port8.gamepad.r - -;snes, Port 1D, Gamepad: Rapid A (right) -snes.input.port8.gamepad.rapid_a - -;snes, Port 1D, Gamepad: Rapid B (center, lower) -snes.input.port8.gamepad.rapid_b - -;snes, Port 1D, Gamepad: Rapid X (center, upper) -snes.input.port8.gamepad.rapid_x - -;snes, Port 1D, Gamepad: Rapid Y (left) -snes.input.port8.gamepad.rapid_y - -;snes, Port 1D, Gamepad: RIGHT → -snes.input.port8.gamepad.right - -;snes, Port 1D, Gamepad: SELECT -snes.input.port8.gamepad.select - -;snes, Port 1D, Gamepad: START -snes.input.port8.gamepad.start - -;snes, Port 1D, Gamepad: UP ↑ -snes.input.port8.gamepad.up - -;snes, Port 1D, Gamepad: X (center, upper) -snes.input.port8.gamepad.x - -;snes, Port 1D, Gamepad: Y (left) -snes.input.port8.gamepad.y - -;Emulated mouse sensitivity. -snes.mouse_sensitivity 0.50 - -;Enable scanlines with specified opacity. -snes.scanlines 0 - -;Enable specified OpenGL shader. -snes.shader none - -;Force interlaced video to be treated as progressive. -snes.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -snes.shader.goat.hdiv 0.50 - -;Mask pattern. -snes.shader.goat.pat goatron - -;Enable scanlines effect. -snes.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -snes.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -snes.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -snes.special none - -;Stretch to fill screen. -snes.stretch aspect_mult2 - -;Enable video temporal blur(50/50 previous/current frame by default). -snes.tblur 0 - -;Accumulate color data rather than discarding it. -snes.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -snes.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -snes.videoip 0 - -;Full-screen horizontal resolution. -snes.xres 0 - -;Scaling factor for the X axis in windowed mode. -snes.xscale 4.000000 - -;Scaling factor for the X axis in fullscreen mode. -snes.xscalefs 1.000000 - -;Full-screen vertical resolution. -snes.yres 0 - -;Scaling factor for the Y axis in windowed mode. -snes.yscale 4.000000 - -;Scaling factor for the Y axis in fullscreen mode. -snes.yscalefs 1.000000 - -;MSU1 audio read thread CPU affinity mask. -snes_faust.affinity.msu1.audio 0 - -;MSU1 data read thread CPU affinity mask. -snes_faust.affinity.msu1.data 0 - -;PPU rendering thread CPU affinity mask. -snes_faust.affinity.ppu 0 - -;Correct aspect ratio. -snes_faust.correct_aspect 1 - -;CX4 clock rate, specified in percentage of normal. -snes_faust.cx4.clock_rate 100 - -;Enable (automatic) usage of this module. -snes_faust.enable 1 - -;Force monophonic sound output. -snes_faust.forcemono 0 - -;Horizontal blending/doubling filter. -snes_faust.h_filter none - -;Emulated mouse sensitivity. -snes_faust.input.mouse_sensitivity 0.50 - -;Input device for Virtual Port 1 -snes_faust.input.port1 gamepad - -;snes_faust, Virtual Port 1, Gamepad: A (right) -snes_faust.input.port1.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;snes_faust, Virtual Port 1, Gamepad: B (center, lower) -snes_faust.input.port1.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;snes_faust, Virtual Port 1, Gamepad: DOWN ↓ -snes_faust.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;snes_faust, Virtual Port 1, Gamepad: Left Shoulder -snes_faust.input.port1.gamepad.l joystick 0x0003045e028e01010008000b00000000 button_4 - -;snes_faust, Virtual Port 1, Gamepad: LEFT ← -snes_faust.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;snes_faust, Virtual Port 1, Gamepad: Right Shoulder -snes_faust.input.port1.gamepad.r joystick 0x0003045e028e01010008000b00000000 button_5 - -;snes_faust, Virtual Port 1, Gamepad: Rapid A (right) -snes_faust.input.port1.gamepad.rapid_a keyboard 0x0 17 - -;snes_faust, Virtual Port 1, Gamepad: Rapid B (center, lower) -snes_faust.input.port1.gamepad.rapid_b keyboard 0x0 17 - -;snes_faust, Virtual Port 1, Gamepad: Rapid X (center, upper) -snes_faust.input.port1.gamepad.rapid_x keyboard 0x0 17 - -;snes_faust, Virtual Port 1, Gamepad: Rapid Y (left) -snes_faust.input.port1.gamepad.rapid_y keyboard 0x0 17 - -;snes_faust, Virtual Port 1, Gamepad: RIGHT → -snes_faust.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;snes_faust, Virtual Port 1, Gamepad: SELECT -snes_faust.input.port1.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;snes_faust, Virtual Port 1, Gamepad: START -snes_faust.input.port1.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;snes_faust, Virtual Port 1, Gamepad: UP ↑ -snes_faust.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;snes_faust, Virtual Port 1, Gamepad: X (center, upper) -snes_faust.input.port1.gamepad.x joystick 0x0003045e028e01010008000b00000000 button_3 - -;snes_faust, Virtual Port 1, Gamepad: Y (left) -snes_faust.input.port1.gamepad.y joystick 0x0003045e028e01010008000b00000000 button_2 - -;snes_faust, Virtual Port 1, Mouse: Left Button -snes_faust.input.port1.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 1, Mouse: Motion Down -snes_faust.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 1, Mouse: Motion Left -snes_faust.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 1, Mouse: Motion Right -snes_faust.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 1, Mouse: Motion Up -snes_faust.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 1, Mouse: Right Button -snes_faust.input.port1.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 2 -snes_faust.input.port2 gamepad - -;snes_faust, Virtual Port 2, Gamepad: A (right) -snes_faust.input.port2.gamepad.a - -;snes_faust, Virtual Port 2, Gamepad: B (center, lower) -snes_faust.input.port2.gamepad.b - -;snes_faust, Virtual Port 2, Gamepad: DOWN ↓ -snes_faust.input.port2.gamepad.down - -;snes_faust, Virtual Port 2, Gamepad: Left Shoulder -snes_faust.input.port2.gamepad.l - -;snes_faust, Virtual Port 2, Gamepad: LEFT ← -snes_faust.input.port2.gamepad.left - -;snes_faust, Virtual Port 2, Gamepad: Right Shoulder -snes_faust.input.port2.gamepad.r - -;snes_faust, Virtual Port 2, Gamepad: Rapid A (right) -snes_faust.input.port2.gamepad.rapid_a - -;snes_faust, Virtual Port 2, Gamepad: Rapid B (center, lower) -snes_faust.input.port2.gamepad.rapid_b - -;snes_faust, Virtual Port 2, Gamepad: Rapid X (center, upper) -snes_faust.input.port2.gamepad.rapid_x - -;snes_faust, Virtual Port 2, Gamepad: Rapid Y (left) -snes_faust.input.port2.gamepad.rapid_y - -;snes_faust, Virtual Port 2, Gamepad: RIGHT → -snes_faust.input.port2.gamepad.right - -;snes_faust, Virtual Port 2, Gamepad: SELECT -snes_faust.input.port2.gamepad.select - -;snes_faust, Virtual Port 2, Gamepad: START -snes_faust.input.port2.gamepad.start - -;snes_faust, Virtual Port 2, Gamepad: UP ↑ -snes_faust.input.port2.gamepad.up - -;snes_faust, Virtual Port 2, Gamepad: X (center, upper) -snes_faust.input.port2.gamepad.x - -;snes_faust, Virtual Port 2, Gamepad: Y (left) -snes_faust.input.port2.gamepad.y - -;snes_faust, Virtual Port 2, Mouse: Left Button -snes_faust.input.port2.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 2, Mouse: Motion Down -snes_faust.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 2, Mouse: Motion Left -snes_faust.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 2, Mouse: Motion Right -snes_faust.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 2, Mouse: Motion Up -snes_faust.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 2, Mouse: Right Button -snes_faust.input.port2.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 3 -snes_faust.input.port3 gamepad - -;snes_faust, Virtual Port 3, Gamepad: A (right) -snes_faust.input.port3.gamepad.a - -;snes_faust, Virtual Port 3, Gamepad: B (center, lower) -snes_faust.input.port3.gamepad.b - -;snes_faust, Virtual Port 3, Gamepad: DOWN ↓ -snes_faust.input.port3.gamepad.down - -;snes_faust, Virtual Port 3, Gamepad: Left Shoulder -snes_faust.input.port3.gamepad.l - -;snes_faust, Virtual Port 3, Gamepad: LEFT ← -snes_faust.input.port3.gamepad.left - -;snes_faust, Virtual Port 3, Gamepad: Right Shoulder -snes_faust.input.port3.gamepad.r - -;snes_faust, Virtual Port 3, Gamepad: Rapid A (right) -snes_faust.input.port3.gamepad.rapid_a - -;snes_faust, Virtual Port 3, Gamepad: Rapid B (center, lower) -snes_faust.input.port3.gamepad.rapid_b - -;snes_faust, Virtual Port 3, Gamepad: Rapid X (center, upper) -snes_faust.input.port3.gamepad.rapid_x - -;snes_faust, Virtual Port 3, Gamepad: Rapid Y (left) -snes_faust.input.port3.gamepad.rapid_y - -;snes_faust, Virtual Port 3, Gamepad: RIGHT → -snes_faust.input.port3.gamepad.right - -;snes_faust, Virtual Port 3, Gamepad: SELECT -snes_faust.input.port3.gamepad.select - -;snes_faust, Virtual Port 3, Gamepad: START -snes_faust.input.port3.gamepad.start - -;snes_faust, Virtual Port 3, Gamepad: UP ↑ -snes_faust.input.port3.gamepad.up - -;snes_faust, Virtual Port 3, Gamepad: X (center, upper) -snes_faust.input.port3.gamepad.x - -;snes_faust, Virtual Port 3, Gamepad: Y (left) -snes_faust.input.port3.gamepad.y - -;snes_faust, Virtual Port 3, Mouse: Left Button -snes_faust.input.port3.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 3, Mouse: Motion Down -snes_faust.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 3, Mouse: Motion Left -snes_faust.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 3, Mouse: Motion Right -snes_faust.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 3, Mouse: Motion Up -snes_faust.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 3, Mouse: Right Button -snes_faust.input.port3.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 4 -snes_faust.input.port4 gamepad - -;snes_faust, Virtual Port 4, Gamepad: A (right) -snes_faust.input.port4.gamepad.a - -;snes_faust, Virtual Port 4, Gamepad: B (center, lower) -snes_faust.input.port4.gamepad.b - -;snes_faust, Virtual Port 4, Gamepad: DOWN ↓ -snes_faust.input.port4.gamepad.down - -;snes_faust, Virtual Port 4, Gamepad: Left Shoulder -snes_faust.input.port4.gamepad.l - -;snes_faust, Virtual Port 4, Gamepad: LEFT ← -snes_faust.input.port4.gamepad.left - -;snes_faust, Virtual Port 4, Gamepad: Right Shoulder -snes_faust.input.port4.gamepad.r - -;snes_faust, Virtual Port 4, Gamepad: Rapid A (right) -snes_faust.input.port4.gamepad.rapid_a - -;snes_faust, Virtual Port 4, Gamepad: Rapid B (center, lower) -snes_faust.input.port4.gamepad.rapid_b - -;snes_faust, Virtual Port 4, Gamepad: Rapid X (center, upper) -snes_faust.input.port4.gamepad.rapid_x - -;snes_faust, Virtual Port 4, Gamepad: Rapid Y (left) -snes_faust.input.port4.gamepad.rapid_y - -;snes_faust, Virtual Port 4, Gamepad: RIGHT → -snes_faust.input.port4.gamepad.right - -;snes_faust, Virtual Port 4, Gamepad: SELECT -snes_faust.input.port4.gamepad.select - -;snes_faust, Virtual Port 4, Gamepad: START -snes_faust.input.port4.gamepad.start - -;snes_faust, Virtual Port 4, Gamepad: UP ↑ -snes_faust.input.port4.gamepad.up - -;snes_faust, Virtual Port 4, Gamepad: X (center, upper) -snes_faust.input.port4.gamepad.x - -;snes_faust, Virtual Port 4, Gamepad: Y (left) -snes_faust.input.port4.gamepad.y - -;snes_faust, Virtual Port 4, Mouse: Left Button -snes_faust.input.port4.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 4, Mouse: Motion Down -snes_faust.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 4, Mouse: Motion Left -snes_faust.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 4, Mouse: Motion Right -snes_faust.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 4, Mouse: Motion Up -snes_faust.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 4, Mouse: Right Button -snes_faust.input.port4.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 5 -snes_faust.input.port5 gamepad - -;snes_faust, Virtual Port 5, Gamepad: A (right) -snes_faust.input.port5.gamepad.a - -;snes_faust, Virtual Port 5, Gamepad: B (center, lower) -snes_faust.input.port5.gamepad.b - -;snes_faust, Virtual Port 5, Gamepad: DOWN ↓ -snes_faust.input.port5.gamepad.down - -;snes_faust, Virtual Port 5, Gamepad: Left Shoulder -snes_faust.input.port5.gamepad.l - -;snes_faust, Virtual Port 5, Gamepad: LEFT ← -snes_faust.input.port5.gamepad.left - -;snes_faust, Virtual Port 5, Gamepad: Right Shoulder -snes_faust.input.port5.gamepad.r - -;snes_faust, Virtual Port 5, Gamepad: Rapid A (right) -snes_faust.input.port5.gamepad.rapid_a - -;snes_faust, Virtual Port 5, Gamepad: Rapid B (center, lower) -snes_faust.input.port5.gamepad.rapid_b - -;snes_faust, Virtual Port 5, Gamepad: Rapid X (center, upper) -snes_faust.input.port5.gamepad.rapid_x - -;snes_faust, Virtual Port 5, Gamepad: Rapid Y (left) -snes_faust.input.port5.gamepad.rapid_y - -;snes_faust, Virtual Port 5, Gamepad: RIGHT → -snes_faust.input.port5.gamepad.right - -;snes_faust, Virtual Port 5, Gamepad: SELECT -snes_faust.input.port5.gamepad.select - -;snes_faust, Virtual Port 5, Gamepad: START -snes_faust.input.port5.gamepad.start - -;snes_faust, Virtual Port 5, Gamepad: UP ↑ -snes_faust.input.port5.gamepad.up - -;snes_faust, Virtual Port 5, Gamepad: X (center, upper) -snes_faust.input.port5.gamepad.x - -;snes_faust, Virtual Port 5, Gamepad: Y (left) -snes_faust.input.port5.gamepad.y - -;snes_faust, Virtual Port 5, Mouse: Left Button -snes_faust.input.port5.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 5, Mouse: Motion Down -snes_faust.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 5, Mouse: Motion Left -snes_faust.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 5, Mouse: Motion Right -snes_faust.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 5, Mouse: Motion Up -snes_faust.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 5, Mouse: Right Button -snes_faust.input.port5.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 6 -snes_faust.input.port6 gamepad - -;snes_faust, Virtual Port 6, Gamepad: A (right) -snes_faust.input.port6.gamepad.a - -;snes_faust, Virtual Port 6, Gamepad: B (center, lower) -snes_faust.input.port6.gamepad.b - -;snes_faust, Virtual Port 6, Gamepad: DOWN ↓ -snes_faust.input.port6.gamepad.down - -;snes_faust, Virtual Port 6, Gamepad: Left Shoulder -snes_faust.input.port6.gamepad.l - -;snes_faust, Virtual Port 6, Gamepad: LEFT ← -snes_faust.input.port6.gamepad.left - -;snes_faust, Virtual Port 6, Gamepad: Right Shoulder -snes_faust.input.port6.gamepad.r - -;snes_faust, Virtual Port 6, Gamepad: Rapid A (right) -snes_faust.input.port6.gamepad.rapid_a - -;snes_faust, Virtual Port 6, Gamepad: Rapid B (center, lower) -snes_faust.input.port6.gamepad.rapid_b - -;snes_faust, Virtual Port 6, Gamepad: Rapid X (center, upper) -snes_faust.input.port6.gamepad.rapid_x - -;snes_faust, Virtual Port 6, Gamepad: Rapid Y (left) -snes_faust.input.port6.gamepad.rapid_y - -;snes_faust, Virtual Port 6, Gamepad: RIGHT → -snes_faust.input.port6.gamepad.right - -;snes_faust, Virtual Port 6, Gamepad: SELECT -snes_faust.input.port6.gamepad.select - -;snes_faust, Virtual Port 6, Gamepad: START -snes_faust.input.port6.gamepad.start - -;snes_faust, Virtual Port 6, Gamepad: UP ↑ -snes_faust.input.port6.gamepad.up - -;snes_faust, Virtual Port 6, Gamepad: X (center, upper) -snes_faust.input.port6.gamepad.x - -;snes_faust, Virtual Port 6, Gamepad: Y (left) -snes_faust.input.port6.gamepad.y - -;snes_faust, Virtual Port 6, Mouse: Left Button -snes_faust.input.port6.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 6, Mouse: Motion Down -snes_faust.input.port6.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 6, Mouse: Motion Left -snes_faust.input.port6.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 6, Mouse: Motion Right -snes_faust.input.port6.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 6, Mouse: Motion Up -snes_faust.input.port6.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 6, Mouse: Right Button -snes_faust.input.port6.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 7 -snes_faust.input.port7 gamepad - -;snes_faust, Virtual Port 7, Gamepad: A (right) -snes_faust.input.port7.gamepad.a - -;snes_faust, Virtual Port 7, Gamepad: B (center, lower) -snes_faust.input.port7.gamepad.b - -;snes_faust, Virtual Port 7, Gamepad: DOWN ↓ -snes_faust.input.port7.gamepad.down - -;snes_faust, Virtual Port 7, Gamepad: Left Shoulder -snes_faust.input.port7.gamepad.l - -;snes_faust, Virtual Port 7, Gamepad: LEFT ← -snes_faust.input.port7.gamepad.left - -;snes_faust, Virtual Port 7, Gamepad: Right Shoulder -snes_faust.input.port7.gamepad.r - -;snes_faust, Virtual Port 7, Gamepad: Rapid A (right) -snes_faust.input.port7.gamepad.rapid_a - -;snes_faust, Virtual Port 7, Gamepad: Rapid B (center, lower) -snes_faust.input.port7.gamepad.rapid_b - -;snes_faust, Virtual Port 7, Gamepad: Rapid X (center, upper) -snes_faust.input.port7.gamepad.rapid_x - -;snes_faust, Virtual Port 7, Gamepad: Rapid Y (left) -snes_faust.input.port7.gamepad.rapid_y - -;snes_faust, Virtual Port 7, Gamepad: RIGHT → -snes_faust.input.port7.gamepad.right - -;snes_faust, Virtual Port 7, Gamepad: SELECT -snes_faust.input.port7.gamepad.select - -;snes_faust, Virtual Port 7, Gamepad: START -snes_faust.input.port7.gamepad.start - -;snes_faust, Virtual Port 7, Gamepad: UP ↑ -snes_faust.input.port7.gamepad.up - -;snes_faust, Virtual Port 7, Gamepad: X (center, upper) -snes_faust.input.port7.gamepad.x - -;snes_faust, Virtual Port 7, Gamepad: Y (left) -snes_faust.input.port7.gamepad.y - -;snes_faust, Virtual Port 7, Mouse: Left Button -snes_faust.input.port7.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 7, Mouse: Motion Down -snes_faust.input.port7.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 7, Mouse: Motion Left -snes_faust.input.port7.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 7, Mouse: Motion Right -snes_faust.input.port7.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 7, Mouse: Motion Up -snes_faust.input.port7.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 7, Mouse: Right Button -snes_faust.input.port7.mouse.right mouse 0x0 button_right - -;Input device for Virtual Port 8 -snes_faust.input.port8 gamepad - -;snes_faust, Virtual Port 8, Gamepad: A (right) -snes_faust.input.port8.gamepad.a - -;snes_faust, Virtual Port 8, Gamepad: B (center, lower) -snes_faust.input.port8.gamepad.b - -;snes_faust, Virtual Port 8, Gamepad: DOWN ↓ -snes_faust.input.port8.gamepad.down - -;snes_faust, Virtual Port 8, Gamepad: Left Shoulder -snes_faust.input.port8.gamepad.l - -;snes_faust, Virtual Port 8, Gamepad: LEFT ← -snes_faust.input.port8.gamepad.left - -;snes_faust, Virtual Port 8, Gamepad: Right Shoulder -snes_faust.input.port8.gamepad.r - -;snes_faust, Virtual Port 8, Gamepad: Rapid A (right) -snes_faust.input.port8.gamepad.rapid_a - -;snes_faust, Virtual Port 8, Gamepad: Rapid B (center, lower) -snes_faust.input.port8.gamepad.rapid_b - -;snes_faust, Virtual Port 8, Gamepad: Rapid X (center, upper) -snes_faust.input.port8.gamepad.rapid_x - -;snes_faust, Virtual Port 8, Gamepad: Rapid Y (left) -snes_faust.input.port8.gamepad.rapid_y - -;snes_faust, Virtual Port 8, Gamepad: RIGHT → -snes_faust.input.port8.gamepad.right - -;snes_faust, Virtual Port 8, Gamepad: SELECT -snes_faust.input.port8.gamepad.select - -;snes_faust, Virtual Port 8, Gamepad: START -snes_faust.input.port8.gamepad.start - -;snes_faust, Virtual Port 8, Gamepad: UP ↑ -snes_faust.input.port8.gamepad.up - -;snes_faust, Virtual Port 8, Gamepad: X (center, upper) -snes_faust.input.port8.gamepad.x - -;snes_faust, Virtual Port 8, Gamepad: Y (left) -snes_faust.input.port8.gamepad.y - -;snes_faust, Virtual Port 8, Mouse: Left Button -snes_faust.input.port8.mouse.left mouse 0x0 button_left - -;snes_faust, Virtual Port 8, Mouse: Motion Down -snes_faust.input.port8.mouse.motion_down mouse 0x0 rel_y+ - -;snes_faust, Virtual Port 8, Mouse: Motion Left -snes_faust.input.port8.mouse.motion_left mouse 0x0 rel_x- - -;snes_faust, Virtual Port 8, Mouse: Motion Right -snes_faust.input.port8.mouse.motion_right mouse 0x0 rel_x+ - -;snes_faust, Virtual Port 8, Mouse: Motion Up -snes_faust.input.port8.mouse.motion_up mouse 0x0 rel_y- - -;snes_faust, Virtual Port 8, Mouse: Right Button -snes_faust.input.port8.mouse.right mouse 0x0 button_right - -;Enable multitap on SNES port 1. -snes_faust.input.sport1.multitap 0 - -;Enable multitap on SNES port 2. -snes_faust.input.sport2.multitap 0 - -;MSU1 sound quality. -snes_faust.msu1.resamp_quality 4 - -;Region of SNES to emulate. -snes_faust.region auto - -;PPU renderer. -snes_faust.renderer st - -;Sound quality. -snes_faust.resamp_quality 3 - -;Sound output rate tolerance. -snes_faust.resamp_rate_error 0.000035 - -;Enable scanlines with specified opacity. -snes_faust.scanlines 0 - -;Enable specified OpenGL shader. -snes_faust.shader sabr - -;Force interlaced video to be treated as progressive. -snes_faust.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -snes_faust.shader.goat.hdiv 0.50 - -;Mask pattern. -snes_faust.shader.goat.pat goatron - -;Enable scanlines effect. -snes_faust.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -snes_faust.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -snes_faust.shader.goat.vdiv 0.50 - -;Last displayed scanline in NTSC mode. -snes_faust.slend 223 - -;Last displayed scanline in PAL mode. -snes_faust.slendp 238 - -;First displayed scanline in NTSC mode. -snes_faust.slstart 0 - -;First displayed scanline in PAL mode. -snes_faust.slstartp 0 - -;Enable specified special video scaler. -snes_faust.special none - -;Enable 1-frame speculative execution for video output. -snes_faust.spex 0 - -;Enable speculative execution for sound output too. -snes_faust.spex.sound 1 - -;Stretch to fill screen. -snes_faust.stretch aspect - -;Super FX clock rate, specified in percentage of normal. -snes_faust.superfx.clock_rate 100 - -;Enable SuperFX instruction cache emulation. -snes_faust.superfx.icache 0 - -;Enable video temporal blur(50/50 previous/current frame by default). -snes_faust.tblur 0 - -;Accumulate color data rather than discarding it. -snes_faust.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -snes_faust.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -snes_faust.videoip 1 - -;Full-screen horizontal resolution. -snes_faust.xres 0 - -;Scaling factor for the X axis in windowed mode. -snes_faust.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -snes_faust.xscalefs 1.000000 - -;Full-screen vertical resolution. -snes_faust.yres 0 - -;Scaling factor for the Y axis in windowed mode. -snes_faust.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -snes_faust.yscalefs 1.000000 - -;Enable sound output. -sound 1 - -;Desired buffer size in milliseconds(ms). -sound.buffer_time 0 - -;Select sound output device. -sound.device sexyal-literal-default - -;Select sound driver. -sound.driver default - -;Desired period size in microseconds(μs). -sound.period_time 0 - -;Specifies the sound playback rate, in sound frames per second("Hz"). -sound.rate 48000 - -;Sound volume level, in percent. -sound.volume 100 - -;DO NOT USE UNLESS YOU'RE A SPACE GOAT -srwautoenable 0 - -;Number of frames to keep states for when state rewinding is enabled. -srwframes 600 - -;VDP2 rendering thread CPU affinity mask. -ss.affinity.vdp2 0 - -;Path to the Japan ROM BIOS -ss.bios_jp /storage/roms/bios/sega_101.bin - -;Path to the North America and Europe ROM BIOS -ss.bios_na_eu /storage/roms/bios/mpr-17933.bin - -;Enable BIOS ROM image sanity checks. -ss.bios_sanity 1 - -;Path to the Europe ST-V ROM BIOS -ss.bios_stv_eu /storage/roms/bios/epr-17954a.ic8 - -;Path to the Japan ST-V ROM BIOS -ss.bios_stv_jp /storage/roms/bios/epr-20091.ic8 - -;Path to the North America ST-V ROM BIOS -ss.bios_stv_na /storage/roms/bios/epr-17952a.ic8 - -;Expansion cart. -ss.cart none - -;Default expansion cart when autodetection fails. -ss.cart.auto_default backup - -;Path to KoF 95 ROM image. -ss.cart.kof95_path mpr-18811-mx.ic1 - -;Path to Ultraman ROM image. -ss.cart.ultraman_path mpr-19367-mx.ic1 - -;Enable CD (image) sanity checks. -ss.cd_sanity 1 - -;Correct aspect ratio. -ss.correct_aspect 1 - -;CD image to use with bootable cart ROM image loading. -ss.dbg_exe_cdpath - -;Disassembly font size. -ss.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -ss.debugger.memcharenc SJIS - -;Enable (automatic) usage of this module. -ss.enable 1 - -;Force monophonic sound output. -ss.forcemono 0 - -;Enable horizontal blend(blur) filter. -ss.h_blend 0 - -;Show horizontal overscan area. -ss.h_overscan 1 - -;ss, Builtin, builtin: SMPC Reset -ss.input.builtin.builtin.smpc_reset - -;ss, Builtin, builtin: ST-V Pause -ss.input.builtin.builtin.stv_pause keyboard 0x0 86 && keyboard 0x0 88 - -;ss, Builtin, builtin: ST-V Service -ss.input.builtin.builtin.stv_service keyboard 0x0 86 && keyboard 0x0 87 - -;ss, Builtin, builtin: ST-V Test -ss.input.builtin.builtin.stv_test keyboard 0x0 86 && keyboard 0x0 84 - -;Emulated mouse sensitivity. -ss.input.mouse_sensitivity 0.50 - -;Input device for Virtual Port 1 -ss.input.port1 gamepad - -;ss, Virtual Port 1, 3D Control Pad: A -ss.input.port1.3dpad.a joystick 0x0003045e028e01010008000b00000000 button_0 - -;ss, Virtual Port 1, 3D Control Pad: Analog DOWN ↓ -ss.input.port1.3dpad.analog_down joystick 0x0003045e028e01010008000b00000000 abs_1+ - -;ss, Virtual Port 1, 3D Control Pad: Analog LEFT ← -ss.input.port1.3dpad.analog_left joystick 0x0003045e028e01010008000b00000000 abs_0- - -;ss, Virtual Port 1, 3D Control Pad: Analog RIGHT → -ss.input.port1.3dpad.analog_right joystick 0x0003045e028e01010008000b00000000 abs_0+ - -;ss, Virtual Port 1, 3D Control Pad: Analog UP ↑ -ss.input.port1.3dpad.analog_up joystick 0x0003045e028e01010008000b00000000 abs_1- - -;ss, Virtual Port 1, 3D Control Pad: B -ss.input.port1.3dpad.b joystick 0x0003045e028e01010008000b00000000 button_1 - -;ss, Virtual Port 1, 3D Control Pad: C -ss.input.port1.3dpad.c joystick 0x0003045e028e01010008000b00000000 button_5 - -;ss, Virtual Port 1, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port1.3dpad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;ss, Virtual Port 1, 3D Control Pad: D-Pad LEFT ← -ss.input.port1.3dpad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;ss, Virtual Port 1, 3D Control Pad: Left Shoulder (Analog) -ss.input.port1.3dpad.ls keyboard 0x0 39 || joystick 0x0003045e028e01010008000b00000000 abs_2+ || joystick 0x0003045e028e01010008000b00000000 abs_2- - -;ss, Virtual Port 1, 3D Control Pad: Mode -ss.input.port1.3dpad.mode joystick 0x0003045e028e01010008000b00000000 button_8 - -;Default position for switch "Mode". -ss.input.port1.3dpad.mode.defpos analog - -;ss, Virtual Port 1, 3D Control Pad: D-Pad RIGHT → -ss.input.port1.3dpad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;ss, Virtual Port 1, 3D Control Pad: Right Shoulder (Analog) -ss.input.port1.3dpad.rs joystick 0x0003045e028e01010008000b00000000 abs_5+ || joystick 0x0003045e028e01010008000b00000000 abs_5- - -;ss, Virtual Port 1, 3D Control Pad: START -ss.input.port1.3dpad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;ss, Virtual Port 1, 3D Control Pad: D-Pad UP ↑ -ss.input.port1.3dpad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;ss, Virtual Port 1, 3D Control Pad: X -ss.input.port1.3dpad.x joystick 0x0003045e028e01010008000b00000000 button_2 - -;ss, Virtual Port 1, 3D Control Pad: Y -ss.input.port1.3dpad.y joystick 0x0003045e028e01010008000b00000000 button_3 - -;ss, Virtual Port 1, 3D Control Pad: Z -ss.input.port1.3dpad.z joystick 0x0003045e028e01010008000b00000000 button_4 - -;ss, Virtual Port 1, Dual Mission: A (R Stick Trigger) -ss.input.port1.dmission.a - -;ss, Virtual Port 1, Dual Mission: A AF -ss.input.port1.dmission.afa - -;Default position for switch "A AF". -ss.input.port1.dmission.afa.defpos off - -;ss, Virtual Port 1, Dual Mission: B AF -ss.input.port1.dmission.afb - -;Default position for switch "B AF". -ss.input.port1.dmission.afb.defpos off - -;ss, Virtual Port 1, Dual Mission: C AF -ss.input.port1.dmission.afc - -;Default position for switch "C AF". -ss.input.port1.dmission.afc.defpos off - -;ss, Virtual Port 1, Dual Mission: L AF -ss.input.port1.dmission.afl - -;Default position for switch "L AF". -ss.input.port1.dmission.afl.defpos off - -;ss, Virtual Port 1, Dual Mission: R AF -ss.input.port1.dmission.afr - -;Default position for switch "R AF". -ss.input.port1.dmission.afr.defpos off - -;ss, Virtual Port 1, Dual Mission: Autofire Speed -ss.input.port1.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port1.dmission.afspeed.defpos 1 - -;ss, Virtual Port 1, Dual Mission: X AF -ss.input.port1.dmission.afx - -;Default position for switch "X AF". -ss.input.port1.dmission.afx.defpos off - -;ss, Virtual Port 1, Dual Mission: Y AF -ss.input.port1.dmission.afy - -;Default position for switch "Y AF". -ss.input.port1.dmission.afy.defpos off - -;ss, Virtual Port 1, Dual Mission: Z AF -ss.input.port1.dmission.afz - -;Default position for switch "Z AF". -ss.input.port1.dmission.afz.defpos off - -;ss, Virtual Port 1, Dual Mission: B (R Stick Left Button) -ss.input.port1.dmission.b - -;ss, Virtual Port 1, Dual Mission: C (R Stick Right Button) -ss.input.port1.dmission.c - -;ss, Virtual Port 1, Dual Mission: L -ss.input.port1.dmission.l - -;ss, Virtual Port 1, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port1.dmission.lstick_back - -;ss, Virtual Port 1, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port1.dmission.lstick_fore - -;ss, Virtual Port 1, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port1.dmission.lstick_left - -;ss, Virtual Port 1, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port1.dmission.lstick_right - -;ss, Virtual Port 1, Dual Mission: L Throttle Down (Analog) -ss.input.port1.dmission.lthrottle_down - -;ss, Virtual Port 1, Dual Mission: L Throttle Up (Analog) -ss.input.port1.dmission.lthrottle_up - -;ss, Virtual Port 1, Dual Mission: R -ss.input.port1.dmission.r - -;ss, Virtual Port 1, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port1.dmission.rstick_back - -;ss, Virtual Port 1, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port1.dmission.rstick_fore - -;ss, Virtual Port 1, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port1.dmission.rstick_left - -;ss, Virtual Port 1, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port1.dmission.rstick_right - -;ss, Virtual Port 1, Dual Mission: R Throttle Down (Analog) -ss.input.port1.dmission.rthrottle_down - -;ss, Virtual Port 1, Dual Mission: R Throttle Up (Analog) -ss.input.port1.dmission.rthrottle_up - -;ss, Virtual Port 1, Dual Mission: START -ss.input.port1.dmission.start - -;ss, Virtual Port 1, Dual Mission: X (L Stick Trigger) -ss.input.port1.dmission.x - -;ss, Virtual Port 1, Dual Mission: Y (L Stick Left Button) -ss.input.port1.dmission.y - -;ss, Virtual Port 1, Dual Mission: Z (L Stick Right Button) -ss.input.port1.dmission.z - -;ss, Virtual Port 1, Digital Gamepad: A -ss.input.port1.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;ss, Virtual Port 1, Digital Gamepad: B -ss.input.port1.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;ss, Virtual Port 1, Digital Gamepad: C -ss.input.port1.gamepad.c joystick 0x0003045e028e01010008000b00000000 button_2 - -;ss, Virtual Port 1, Digital Gamepad: DOWN ↓ -ss.input.port1.gamepad.down joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;ss, Virtual Port 1, Digital Gamepad: LEFT ← -ss.input.port1.gamepad.left joystick 0x0003045e028e01010008000b00000000 abs_6- - -;ss, Virtual Port 1, Digital Gamepad: Left Shoulder -ss.input.port1.gamepad.ls keyboard 0x0 9 - -;ss, Virtual Port 1, Digital Gamepad: RIGHT → -ss.input.port1.gamepad.right joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;ss, Virtual Port 1, Digital Gamepad: Right Shoulder -ss.input.port1.gamepad.rs keyboard 0x0 10 - -;ss, Virtual Port 1, Digital Gamepad: START -ss.input.port1.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;ss, Virtual Port 1, Digital Gamepad: UP ↑ -ss.input.port1.gamepad.up joystick 0x0003045e028e01010008000b00000000 abs_7- - -;ss, Virtual Port 1, Digital Gamepad: X -ss.input.port1.gamepad.x joystick 0x0003045e028e01010008000b00000000 button_3 - -;ss, Virtual Port 1, Digital Gamepad: Y -ss.input.port1.gamepad.y joystick 0x0003045e028e01010008000b00000000 button_4 - -;ss, Virtual Port 1, Digital Gamepad: Z -ss.input.port1.gamepad.z joystick 0x0003045e028e01010008000b00000000 button_5 - -;ss, Virtual Port 1, Light Gun: Offscreen Shot(Simulated) -ss.input.port1.gun.offscreen_shot joystick 0x0003045e028e01010008000b00000000 button_3 - -;ss, Virtual Port 1, Light Gun: START -ss.input.port1.gun.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;ss, Virtual Port 1, Light Gun: Trigger -ss.input.port1.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 1, Light Gun: X Axis -ss.input.port1.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 1, Light Gun: Y Axis -ss.input.port1.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 1. -ss.input.port1.gun_chairs 0xFF0000 - -;ss, Virtual Port 1, Keyboard (JP): 0(Zero) -ss.input.port1.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 1, Keyboard (JP): 1(One) -ss.input.port1.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 1, Keyboard (JP): 2 -ss.input.port1.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 1, Keyboard (JP): 3 -ss.input.port1.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 1, Keyboard (JP): 4 -ss.input.port1.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 1, Keyboard (JP): 5 -ss.input.port1.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 1, Keyboard (JP): 6 -ss.input.port1.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 1, Keyboard (JP): 7 -ss.input.port1.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 1, Keyboard (JP): 8 -ss.input.port1.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 1, Keyboard (JP): 9 -ss.input.port1.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 1, Keyboard (JP): A -ss.input.port1.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 1, Keyboard (JP): At @ -ss.input.port1.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 1, Keyboard (JP): B -ss.input.port1.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 1, Keyboard (JP): Backslash \ -ss.input.port1.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 1, Keyboard (JP): Backspace -ss.input.port1.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 1, Keyboard (JP): C -ss.input.port1.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 1, Keyboard (JP): Caps Lock/英数 -ss.input.port1.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 1, Keyboard (JP): Circumflex ^ -ss.input.port1.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 1, Keyboard (JP): Colon : -ss.input.port1.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 1, Keyboard (JP): Comma , -ss.input.port1.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 1, Keyboard (JP): 変換 -ss.input.port1.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 1, Keyboard (JP): D -ss.input.port1.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 1, Keyboard (JP): Delete -ss.input.port1.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 1, Keyboard (JP): Down -ss.input.port1.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 1, Keyboard (JP): E -ss.input.port1.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 1, Keyboard (JP): End -ss.input.port1.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 1, Keyboard (JP): Enter -ss.input.port1.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 1, Keyboard (JP): Escape -ss.input.port1.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 1, Keyboard (JP): F -ss.input.port1.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 1, Keyboard (JP): F1 -ss.input.port1.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 1, Keyboard (JP): F10 -ss.input.port1.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 1, Keyboard (JP): F11 -ss.input.port1.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 1, Keyboard (JP): F12 -ss.input.port1.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 1, Keyboard (JP): F2 -ss.input.port1.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 1, Keyboard (JP): F3 -ss.input.port1.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 1, Keyboard (JP): F4 -ss.input.port1.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 1, Keyboard (JP): F5 -ss.input.port1.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 1, Keyboard (JP): F6 -ss.input.port1.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 1, Keyboard (JP): F7 -ss.input.port1.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 1, Keyboard (JP): F8 -ss.input.port1.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 1, Keyboard (JP): F9 -ss.input.port1.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 1, Keyboard (JP): G -ss.input.port1.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 1, Keyboard (JP): H -ss.input.port1.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 1, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port1.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 1, Keyboard (JP): Home -ss.input.port1.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 1, Keyboard (JP): 半角/全角/漢字 -ss.input.port1.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 1, Keyboard (JP): I -ss.input.port1.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 1, Keyboard (JP): Insert -ss.input.port1.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 1, Keyboard (JP): J -ss.input.port1.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 1, Keyboard (JP): K -ss.input.port1.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 1, Keyboard (JP): L -ss.input.port1.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 1, Keyboard (JP): Left Alt -ss.input.port1.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 1, Keyboard (JP): Left Ctrl -ss.input.port1.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 1, Keyboard (JP): Cursor Left -ss.input.port1.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 1, Keyboard (JP): Left Bracket [ -ss.input.port1.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 1, Keyboard (JP): Left Shift -ss.input.port1.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 1, Keyboard (JP): M -ss.input.port1.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 1, Keyboard (JP): Minus - -ss.input.port1.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 1, Keyboard (JP): N -ss.input.port1.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 1, Keyboard (JP): 無変換 -ss.input.port1.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 1, Keyboard (JP): O -ss.input.port1.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 1, Keyboard (JP): P -ss.input.port1.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 1, Keyboard (JP): Page Down -ss.input.port1.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 1, Keyboard (JP): Page Up -ss.input.port1.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 1, Keyboard (JP): Pause -ss.input.port1.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 1, Keyboard (JP): Period . -ss.input.port1.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 1, Keyboard (JP): Print Screen -ss.input.port1.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 1, Keyboard (JP): Q -ss.input.port1.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 1, Keyboard (JP): R -ss.input.port1.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 1, Keyboard (JP): Right Alt -ss.input.port1.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 1, Keyboard (JP): Right Ctrl -ss.input.port1.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 1, Keyboard (JP): Right -ss.input.port1.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 1, Keyboard (JP): Right Bracket ] -ss.input.port1.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 1, Keyboard (JP): Right Shift -ss.input.port1.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 1, Keyboard (JP): S -ss.input.port1.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 1, Keyboard (JP): Scroll Lock -ss.input.port1.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 1, Keyboard (JP): Semicolon ; -ss.input.port1.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 1, Keyboard (JP): Slash / -ss.input.port1.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 1, Keyboard (JP): Space -ss.input.port1.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 1, Keyboard (JP): T -ss.input.port1.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 1, Keyboard (JP): Tab -ss.input.port1.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 1, Keyboard (JP): U -ss.input.port1.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 1, Keyboard (JP): Up -ss.input.port1.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 1, Keyboard (JP): V -ss.input.port1.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 1, Keyboard (JP): W -ss.input.port1.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 1, Keyboard (JP): X -ss.input.port1.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 1, Keyboard (JP): Y -ss.input.port1.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 1, Keyboard (JP): Yen ¥ -ss.input.port1.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 1, Keyboard (JP): Z -ss.input.port1.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 1, Keyboard (US): 0(Zero) -ss.input.port1.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 1, Keyboard (US): 1(One) -ss.input.port1.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 1, Keyboard (US): 2 -ss.input.port1.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 1, Keyboard (US): 3 -ss.input.port1.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 1, Keyboard (US): 4 -ss.input.port1.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 1, Keyboard (US): 5 -ss.input.port1.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 1, Keyboard (US): 6 -ss.input.port1.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 1, Keyboard (US): 7 -ss.input.port1.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 1, Keyboard (US): 8 -ss.input.port1.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 1, Keyboard (US): 9 -ss.input.port1.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 1, Keyboard (US): A -ss.input.port1.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 1, Keyboard (US): B -ss.input.port1.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 1, Keyboard (US): Backslash \ -ss.input.port1.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 1, Keyboard (US): Backspace -ss.input.port1.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 1, Keyboard (US): C -ss.input.port1.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 1, Keyboard (US): Caps Lock -ss.input.port1.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 1, Keyboard (US): Comma , -ss.input.port1.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 1, Keyboard (US): D -ss.input.port1.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 1, Keyboard (US): Delete -ss.input.port1.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 1, Keyboard (US): Down -ss.input.port1.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 1, Keyboard (US): E -ss.input.port1.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 1, Keyboard (US): End -ss.input.port1.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 1, Keyboard (US): Enter -ss.input.port1.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 1, Keyboard (US): Equals = -ss.input.port1.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 1, Keyboard (US): Escape -ss.input.port1.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 1, Keyboard (US): F -ss.input.port1.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 1, Keyboard (US): F1 -ss.input.port1.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 1, Keyboard (US): F10 -ss.input.port1.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 1, Keyboard (US): F11 -ss.input.port1.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 1, Keyboard (US): F12 -ss.input.port1.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 1, Keyboard (US): F2 -ss.input.port1.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 1, Keyboard (US): F3 -ss.input.port1.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 1, Keyboard (US): F4 -ss.input.port1.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 1, Keyboard (US): F5 -ss.input.port1.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 1, Keyboard (US): F6 -ss.input.port1.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 1, Keyboard (US): F7 -ss.input.port1.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 1, Keyboard (US): F8 -ss.input.port1.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 1, Keyboard (US): F9 -ss.input.port1.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 1, Keyboard (US): G -ss.input.port1.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 1, Keyboard (US): Grave ` -ss.input.port1.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 1, Keyboard (US): H -ss.input.port1.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 1, Keyboard (US): Home -ss.input.port1.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 1, Keyboard (US): I -ss.input.port1.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 1, Keyboard (US): Insert -ss.input.port1.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 1, Keyboard (US): J -ss.input.port1.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 1, Keyboard (US): K -ss.input.port1.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 1, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port1.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 1, Keyboard (US): Keypad Center/5 -ss.input.port1.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 1, Keyboard (US): Keypad Delete -ss.input.port1.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 1, Keyboard (US): Keypad Down/2 -ss.input.port1.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 1, Keyboard (US): Keypad End/1 -ss.input.port1.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 1, Keyboard (US): Keypad Enter -ss.input.port1.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 1, Keyboard (US): Keypad Home/7 -ss.input.port1.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 1, Keyboard (US): Keypad Insert/0 -ss.input.port1.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 1, Keyboard (US): Keypad Left/4 -ss.input.port1.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 1, Keyboard (US): Keypad Minus -ss.input.port1.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 1, Keyboard (US): Keypad Pagedown/3 -ss.input.port1.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 1, Keyboard (US): Keypad Pageup/9 -ss.input.port1.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 1, Keyboard (US): Keypad Plus -ss.input.port1.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 1, Keyboard (US): Keypad Right/6 -ss.input.port1.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 1, Keyboard (US): Keypad Slash(Divide) -ss.input.port1.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 1, Keyboard (US): Keypad Up/8 -ss.input.port1.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 1, Keyboard (US): L -ss.input.port1.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 1, Keyboard (US): Left Alt -ss.input.port1.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 1, Keyboard (US): Left Ctrl -ss.input.port1.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 1, Keyboard (US): Cursor Left -ss.input.port1.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 1, Keyboard (US): Left Bracket [ -ss.input.port1.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 1, Keyboard (US): Left Shift -ss.input.port1.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 1, Keyboard (US): M -ss.input.port1.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 1, Keyboard (US): Minus - -ss.input.port1.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 1, Keyboard (US): N -ss.input.port1.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 1, Keyboard (US): Num Lock -ss.input.port1.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 1, Keyboard (US): O -ss.input.port1.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 1, Keyboard (US): P -ss.input.port1.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 1, Keyboard (US): Page Down -ss.input.port1.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 1, Keyboard (US): Page Up -ss.input.port1.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 1, Keyboard (US): Pause -ss.input.port1.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 1, Keyboard (US): Period . -ss.input.port1.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 1, Keyboard (US): Print Screen -ss.input.port1.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 1, Keyboard (US): Q -ss.input.port1.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 1, Keyboard (US): Quote ' -ss.input.port1.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 1, Keyboard (US): R -ss.input.port1.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 1, Keyboard (US): Right Alt -ss.input.port1.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 1, Keyboard (US): Right Ctrl -ss.input.port1.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 1, Keyboard (US): Right -ss.input.port1.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 1, Keyboard (US): Right Bracket ] -ss.input.port1.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 1, Keyboard (US): Right Shift -ss.input.port1.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 1, Keyboard (US): S -ss.input.port1.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 1, Keyboard (US): Scroll Lock -ss.input.port1.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 1, Keyboard (US): Semicolon ; -ss.input.port1.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 1, Keyboard (US): Slash / -ss.input.port1.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 1, Keyboard (US): Space -ss.input.port1.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 1, Keyboard (US): T -ss.input.port1.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 1, Keyboard (US): Tab -ss.input.port1.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 1, Keyboard (US): U -ss.input.port1.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 1, Keyboard (US): Up -ss.input.port1.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 1, Keyboard (US): V -ss.input.port1.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 1, Keyboard (US): W -ss.input.port1.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 1, Keyboard (US): X -ss.input.port1.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 1, Keyboard (US): Y -ss.input.port1.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 1, Keyboard (US): Z -ss.input.port1.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 1, Mission Stick: A (Stick Trigger) -ss.input.port1.mission.a - -;ss, Virtual Port 1, Mission Stick: A AF -ss.input.port1.mission.afa - -;Default position for switch "A AF". -ss.input.port1.mission.afa.defpos off - -;ss, Virtual Port 1, Mission Stick: B AF -ss.input.port1.mission.afb - -;Default position for switch "B AF". -ss.input.port1.mission.afb.defpos off - -;ss, Virtual Port 1, Mission Stick: C AF -ss.input.port1.mission.afc - -;Default position for switch "C AF". -ss.input.port1.mission.afc.defpos off - -;ss, Virtual Port 1, Mission Stick: L AF -ss.input.port1.mission.afl - -;Default position for switch "L AF". -ss.input.port1.mission.afl.defpos off - -;ss, Virtual Port 1, Mission Stick: R AF -ss.input.port1.mission.afr - -;Default position for switch "R AF". -ss.input.port1.mission.afr.defpos off - -;ss, Virtual Port 1, Mission Stick: AF Speed -ss.input.port1.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port1.mission.afspeed.defpos 1 - -;ss, Virtual Port 1, Mission Stick: X AF -ss.input.port1.mission.afx - -;Default position for switch "X AF". -ss.input.port1.mission.afx.defpos off - -;ss, Virtual Port 1, Mission Stick: Y AF -ss.input.port1.mission.afy - -;Default position for switch "Y AF". -ss.input.port1.mission.afy.defpos off - -;ss, Virtual Port 1, Mission Stick: Z AF -ss.input.port1.mission.afz - -;Default position for switch "Z AF". -ss.input.port1.mission.afz.defpos off - -;ss, Virtual Port 1, Mission Stick: B (Stick Left Button) -ss.input.port1.mission.b - -;ss, Virtual Port 1, Mission Stick: C (Stick Right Button) -ss.input.port1.mission.c - -;ss, Virtual Port 1, Mission Stick: L -ss.input.port1.mission.l - -;ss, Virtual Port 1, Mission Stick: R -ss.input.port1.mission.r - -;ss, Virtual Port 1, Mission Stick: START -ss.input.port1.mission.start - -;ss, Virtual Port 1, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port1.mission.stick_back - -;ss, Virtual Port 1, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port1.mission.stick_fore - -;ss, Virtual Port 1, Mission Stick: Stick LEFT ← (Analog) -ss.input.port1.mission.stick_left - -;ss, Virtual Port 1, Mission Stick: Stick RIGHT → (Analog) -ss.input.port1.mission.stick_right - -;ss, Virtual Port 1, Mission Stick: Throttle Down (Analog) -ss.input.port1.mission.throttle_down - -;ss, Virtual Port 1, Mission Stick: Throttle Up (Analog) -ss.input.port1.mission.throttle_up - -;ss, Virtual Port 1, Mission Stick: X -ss.input.port1.mission.x - -;ss, Virtual Port 1, Mission Stick: Y -ss.input.port1.mission.y - -;ss, Virtual Port 1, Mission Stick: Z -ss.input.port1.mission.z - -;ss, Virtual Port 1, Mouse: Left Button -ss.input.port1.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 1, Mouse: Middle Button -ss.input.port1.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 1, Mouse: Motion Down -ss.input.port1.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 1, Mouse: Motion Left -ss.input.port1.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 1, Mouse: Motion Right -ss.input.port1.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 1, Mouse: Motion Up -ss.input.port1.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 1, Mouse: Right Button -ss.input.port1.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 1, Mouse: Start -ss.input.port1.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 1, Steering Wheel: A (R Group) -ss.input.port1.wheel.a - -;ss, Virtual Port 1, Steering Wheel: Analog LEFT ← -ss.input.port1.wheel.analog_left - -;ss, Virtual Port 1, Steering Wheel: Analog RIGHT → -ss.input.port1.wheel.analog_right - -;ss, Virtual Port 1, Steering Wheel: B (R Group) -ss.input.port1.wheel.b - -;ss, Virtual Port 1, Steering Wheel: C (R Group) -ss.input.port1.wheel.c - -;ss, Virtual Port 1, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port1.wheel.down - -;ss, Virtual Port 1, Steering Wheel: START -ss.input.port1.wheel.start - -;ss, Virtual Port 1, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port1.wheel.up - -;ss, Virtual Port 1, Steering Wheel: X (L Group) -ss.input.port1.wheel.x - -;ss, Virtual Port 1, Steering Wheel: Y (L Group) -ss.input.port1.wheel.y - -;ss, Virtual Port 1, Steering Wheel: Z (L Group) -ss.input.port1.wheel.z - -;Input device for Virtual Port 10 -ss.input.port10 gamepad - -;ss, Virtual Port 10, 3D Control Pad: A -ss.input.port10.3dpad.a - -;ss, Virtual Port 10, 3D Control Pad: Analog DOWN ↓ -ss.input.port10.3dpad.analog_down - -;ss, Virtual Port 10, 3D Control Pad: Analog LEFT ← -ss.input.port10.3dpad.analog_left - -;ss, Virtual Port 10, 3D Control Pad: Analog RIGHT → -ss.input.port10.3dpad.analog_right - -;ss, Virtual Port 10, 3D Control Pad: Analog UP ↑ -ss.input.port10.3dpad.analog_up - -;ss, Virtual Port 10, 3D Control Pad: B -ss.input.port10.3dpad.b - -;ss, Virtual Port 10, 3D Control Pad: C -ss.input.port10.3dpad.c - -;ss, Virtual Port 10, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port10.3dpad.down - -;ss, Virtual Port 10, 3D Control Pad: D-Pad LEFT ← -ss.input.port10.3dpad.left - -;ss, Virtual Port 10, 3D Control Pad: Left Shoulder (Analog) -ss.input.port10.3dpad.ls - -;ss, Virtual Port 10, 3D Control Pad: Mode -ss.input.port10.3dpad.mode - -;Default position for switch "Mode". -ss.input.port10.3dpad.mode.defpos digital - -;ss, Virtual Port 10, 3D Control Pad: D-Pad RIGHT → -ss.input.port10.3dpad.right - -;ss, Virtual Port 10, 3D Control Pad: Right Shoulder (Analog) -ss.input.port10.3dpad.rs - -;ss, Virtual Port 10, 3D Control Pad: START -ss.input.port10.3dpad.start - -;ss, Virtual Port 10, 3D Control Pad: D-Pad UP ↑ -ss.input.port10.3dpad.up - -;ss, Virtual Port 10, 3D Control Pad: X -ss.input.port10.3dpad.x - -;ss, Virtual Port 10, 3D Control Pad: Y -ss.input.port10.3dpad.y - -;ss, Virtual Port 10, 3D Control Pad: Z -ss.input.port10.3dpad.z - -;ss, Virtual Port 10, Dual Mission: A (R Stick Trigger) -ss.input.port10.dmission.a - -;ss, Virtual Port 10, Dual Mission: A AF -ss.input.port10.dmission.afa - -;Default position for switch "A AF". -ss.input.port10.dmission.afa.defpos off - -;ss, Virtual Port 10, Dual Mission: B AF -ss.input.port10.dmission.afb - -;Default position for switch "B AF". -ss.input.port10.dmission.afb.defpos off - -;ss, Virtual Port 10, Dual Mission: C AF -ss.input.port10.dmission.afc - -;Default position for switch "C AF". -ss.input.port10.dmission.afc.defpos off - -;ss, Virtual Port 10, Dual Mission: L AF -ss.input.port10.dmission.afl - -;Default position for switch "L AF". -ss.input.port10.dmission.afl.defpos off - -;ss, Virtual Port 10, Dual Mission: R AF -ss.input.port10.dmission.afr - -;Default position for switch "R AF". -ss.input.port10.dmission.afr.defpos off - -;ss, Virtual Port 10, Dual Mission: Autofire Speed -ss.input.port10.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port10.dmission.afspeed.defpos 1 - -;ss, Virtual Port 10, Dual Mission: X AF -ss.input.port10.dmission.afx - -;Default position for switch "X AF". -ss.input.port10.dmission.afx.defpos off - -;ss, Virtual Port 10, Dual Mission: Y AF -ss.input.port10.dmission.afy - -;Default position for switch "Y AF". -ss.input.port10.dmission.afy.defpos off - -;ss, Virtual Port 10, Dual Mission: Z AF -ss.input.port10.dmission.afz - -;Default position for switch "Z AF". -ss.input.port10.dmission.afz.defpos off - -;ss, Virtual Port 10, Dual Mission: B (R Stick Left Button) -ss.input.port10.dmission.b - -;ss, Virtual Port 10, Dual Mission: C (R Stick Right Button) -ss.input.port10.dmission.c - -;ss, Virtual Port 10, Dual Mission: L -ss.input.port10.dmission.l - -;ss, Virtual Port 10, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port10.dmission.lstick_back - -;ss, Virtual Port 10, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port10.dmission.lstick_fore - -;ss, Virtual Port 10, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port10.dmission.lstick_left - -;ss, Virtual Port 10, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port10.dmission.lstick_right - -;ss, Virtual Port 10, Dual Mission: L Throttle Down (Analog) -ss.input.port10.dmission.lthrottle_down - -;ss, Virtual Port 10, Dual Mission: L Throttle Up (Analog) -ss.input.port10.dmission.lthrottle_up - -;ss, Virtual Port 10, Dual Mission: R -ss.input.port10.dmission.r - -;ss, Virtual Port 10, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port10.dmission.rstick_back - -;ss, Virtual Port 10, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port10.dmission.rstick_fore - -;ss, Virtual Port 10, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port10.dmission.rstick_left - -;ss, Virtual Port 10, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port10.dmission.rstick_right - -;ss, Virtual Port 10, Dual Mission: R Throttle Down (Analog) -ss.input.port10.dmission.rthrottle_down - -;ss, Virtual Port 10, Dual Mission: R Throttle Up (Analog) -ss.input.port10.dmission.rthrottle_up - -;ss, Virtual Port 10, Dual Mission: START -ss.input.port10.dmission.start - -;ss, Virtual Port 10, Dual Mission: X (L Stick Trigger) -ss.input.port10.dmission.x - -;ss, Virtual Port 10, Dual Mission: Y (L Stick Left Button) -ss.input.port10.dmission.y - -;ss, Virtual Port 10, Dual Mission: Z (L Stick Right Button) -ss.input.port10.dmission.z - -;ss, Virtual Port 10, Digital Gamepad: A -ss.input.port10.gamepad.a - -;ss, Virtual Port 10, Digital Gamepad: B -ss.input.port10.gamepad.b - -;ss, Virtual Port 10, Digital Gamepad: C -ss.input.port10.gamepad.c - -;ss, Virtual Port 10, Digital Gamepad: DOWN ↓ -ss.input.port10.gamepad.down - -;ss, Virtual Port 10, Digital Gamepad: LEFT ← -ss.input.port10.gamepad.left - -;ss, Virtual Port 10, Digital Gamepad: Left Shoulder -ss.input.port10.gamepad.ls - -;ss, Virtual Port 10, Digital Gamepad: RIGHT → -ss.input.port10.gamepad.right - -;ss, Virtual Port 10, Digital Gamepad: Right Shoulder -ss.input.port10.gamepad.rs - -;ss, Virtual Port 10, Digital Gamepad: START -ss.input.port10.gamepad.start - -;ss, Virtual Port 10, Digital Gamepad: UP ↑ -ss.input.port10.gamepad.up - -;ss, Virtual Port 10, Digital Gamepad: X -ss.input.port10.gamepad.x - -;ss, Virtual Port 10, Digital Gamepad: Y -ss.input.port10.gamepad.y - -;ss, Virtual Port 10, Digital Gamepad: Z -ss.input.port10.gamepad.z - -;ss, Virtual Port 10, Light Gun: Offscreen Shot(Simulated) -ss.input.port10.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 10, Light Gun: START -ss.input.port10.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 10, Light Gun: Trigger -ss.input.port10.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 10, Light Gun: X Axis -ss.input.port10.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 10, Light Gun: Y Axis -ss.input.port10.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 10. -ss.input.port10.gun_chairs 0x00FF80 - -;ss, Virtual Port 10, Keyboard (JP): 0(Zero) -ss.input.port10.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 10, Keyboard (JP): 1(One) -ss.input.port10.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 10, Keyboard (JP): 2 -ss.input.port10.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 10, Keyboard (JP): 3 -ss.input.port10.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 10, Keyboard (JP): 4 -ss.input.port10.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 10, Keyboard (JP): 5 -ss.input.port10.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 10, Keyboard (JP): 6 -ss.input.port10.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 10, Keyboard (JP): 7 -ss.input.port10.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 10, Keyboard (JP): 8 -ss.input.port10.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 10, Keyboard (JP): 9 -ss.input.port10.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 10, Keyboard (JP): A -ss.input.port10.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 10, Keyboard (JP): At @ -ss.input.port10.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 10, Keyboard (JP): B -ss.input.port10.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 10, Keyboard (JP): Backslash \ -ss.input.port10.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 10, Keyboard (JP): Backspace -ss.input.port10.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 10, Keyboard (JP): C -ss.input.port10.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 10, Keyboard (JP): Caps Lock/英数 -ss.input.port10.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 10, Keyboard (JP): Circumflex ^ -ss.input.port10.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 10, Keyboard (JP): Colon : -ss.input.port10.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 10, Keyboard (JP): Comma , -ss.input.port10.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 10, Keyboard (JP): 変換 -ss.input.port10.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 10, Keyboard (JP): D -ss.input.port10.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 10, Keyboard (JP): Delete -ss.input.port10.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 10, Keyboard (JP): Down -ss.input.port10.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 10, Keyboard (JP): E -ss.input.port10.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 10, Keyboard (JP): End -ss.input.port10.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 10, Keyboard (JP): Enter -ss.input.port10.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 10, Keyboard (JP): Escape -ss.input.port10.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 10, Keyboard (JP): F -ss.input.port10.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 10, Keyboard (JP): F1 -ss.input.port10.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 10, Keyboard (JP): F10 -ss.input.port10.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 10, Keyboard (JP): F11 -ss.input.port10.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 10, Keyboard (JP): F12 -ss.input.port10.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 10, Keyboard (JP): F2 -ss.input.port10.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 10, Keyboard (JP): F3 -ss.input.port10.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 10, Keyboard (JP): F4 -ss.input.port10.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 10, Keyboard (JP): F5 -ss.input.port10.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 10, Keyboard (JP): F6 -ss.input.port10.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 10, Keyboard (JP): F7 -ss.input.port10.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 10, Keyboard (JP): F8 -ss.input.port10.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 10, Keyboard (JP): F9 -ss.input.port10.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 10, Keyboard (JP): G -ss.input.port10.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 10, Keyboard (JP): H -ss.input.port10.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 10, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port10.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 10, Keyboard (JP): Home -ss.input.port10.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 10, Keyboard (JP): 半角/全角/漢字 -ss.input.port10.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 10, Keyboard (JP): I -ss.input.port10.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 10, Keyboard (JP): Insert -ss.input.port10.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 10, Keyboard (JP): J -ss.input.port10.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 10, Keyboard (JP): K -ss.input.port10.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 10, Keyboard (JP): L -ss.input.port10.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 10, Keyboard (JP): Left Alt -ss.input.port10.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 10, Keyboard (JP): Left Ctrl -ss.input.port10.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 10, Keyboard (JP): Cursor Left -ss.input.port10.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 10, Keyboard (JP): Left Bracket [ -ss.input.port10.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 10, Keyboard (JP): Left Shift -ss.input.port10.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 10, Keyboard (JP): M -ss.input.port10.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 10, Keyboard (JP): Minus - -ss.input.port10.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 10, Keyboard (JP): N -ss.input.port10.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 10, Keyboard (JP): 無変換 -ss.input.port10.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 10, Keyboard (JP): O -ss.input.port10.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 10, Keyboard (JP): P -ss.input.port10.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 10, Keyboard (JP): Page Down -ss.input.port10.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 10, Keyboard (JP): Page Up -ss.input.port10.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 10, Keyboard (JP): Pause -ss.input.port10.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 10, Keyboard (JP): Period . -ss.input.port10.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 10, Keyboard (JP): Print Screen -ss.input.port10.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 10, Keyboard (JP): Q -ss.input.port10.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 10, Keyboard (JP): R -ss.input.port10.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 10, Keyboard (JP): Right Alt -ss.input.port10.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 10, Keyboard (JP): Right Ctrl -ss.input.port10.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 10, Keyboard (JP): Right -ss.input.port10.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 10, Keyboard (JP): Right Bracket ] -ss.input.port10.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 10, Keyboard (JP): Right Shift -ss.input.port10.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 10, Keyboard (JP): S -ss.input.port10.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 10, Keyboard (JP): Scroll Lock -ss.input.port10.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 10, Keyboard (JP): Semicolon ; -ss.input.port10.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 10, Keyboard (JP): Slash / -ss.input.port10.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 10, Keyboard (JP): Space -ss.input.port10.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 10, Keyboard (JP): T -ss.input.port10.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 10, Keyboard (JP): Tab -ss.input.port10.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 10, Keyboard (JP): U -ss.input.port10.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 10, Keyboard (JP): Up -ss.input.port10.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 10, Keyboard (JP): V -ss.input.port10.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 10, Keyboard (JP): W -ss.input.port10.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 10, Keyboard (JP): X -ss.input.port10.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 10, Keyboard (JP): Y -ss.input.port10.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 10, Keyboard (JP): Yen ¥ -ss.input.port10.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 10, Keyboard (JP): Z -ss.input.port10.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 10, Keyboard (US): 0(Zero) -ss.input.port10.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 10, Keyboard (US): 1(One) -ss.input.port10.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 10, Keyboard (US): 2 -ss.input.port10.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 10, Keyboard (US): 3 -ss.input.port10.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 10, Keyboard (US): 4 -ss.input.port10.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 10, Keyboard (US): 5 -ss.input.port10.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 10, Keyboard (US): 6 -ss.input.port10.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 10, Keyboard (US): 7 -ss.input.port10.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 10, Keyboard (US): 8 -ss.input.port10.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 10, Keyboard (US): 9 -ss.input.port10.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 10, Keyboard (US): A -ss.input.port10.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 10, Keyboard (US): B -ss.input.port10.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 10, Keyboard (US): Backslash \ -ss.input.port10.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 10, Keyboard (US): Backspace -ss.input.port10.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 10, Keyboard (US): C -ss.input.port10.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 10, Keyboard (US): Caps Lock -ss.input.port10.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 10, Keyboard (US): Comma , -ss.input.port10.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 10, Keyboard (US): D -ss.input.port10.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 10, Keyboard (US): Delete -ss.input.port10.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 10, Keyboard (US): Down -ss.input.port10.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 10, Keyboard (US): E -ss.input.port10.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 10, Keyboard (US): End -ss.input.port10.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 10, Keyboard (US): Enter -ss.input.port10.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 10, Keyboard (US): Equals = -ss.input.port10.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 10, Keyboard (US): Escape -ss.input.port10.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 10, Keyboard (US): F -ss.input.port10.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 10, Keyboard (US): F1 -ss.input.port10.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 10, Keyboard (US): F10 -ss.input.port10.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 10, Keyboard (US): F11 -ss.input.port10.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 10, Keyboard (US): F12 -ss.input.port10.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 10, Keyboard (US): F2 -ss.input.port10.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 10, Keyboard (US): F3 -ss.input.port10.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 10, Keyboard (US): F4 -ss.input.port10.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 10, Keyboard (US): F5 -ss.input.port10.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 10, Keyboard (US): F6 -ss.input.port10.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 10, Keyboard (US): F7 -ss.input.port10.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 10, Keyboard (US): F8 -ss.input.port10.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 10, Keyboard (US): F9 -ss.input.port10.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 10, Keyboard (US): G -ss.input.port10.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 10, Keyboard (US): Grave ` -ss.input.port10.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 10, Keyboard (US): H -ss.input.port10.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 10, Keyboard (US): Home -ss.input.port10.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 10, Keyboard (US): I -ss.input.port10.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 10, Keyboard (US): Insert -ss.input.port10.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 10, Keyboard (US): J -ss.input.port10.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 10, Keyboard (US): K -ss.input.port10.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 10, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port10.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 10, Keyboard (US): Keypad Center/5 -ss.input.port10.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 10, Keyboard (US): Keypad Delete -ss.input.port10.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 10, Keyboard (US): Keypad Down/2 -ss.input.port10.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 10, Keyboard (US): Keypad End/1 -ss.input.port10.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 10, Keyboard (US): Keypad Enter -ss.input.port10.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 10, Keyboard (US): Keypad Home/7 -ss.input.port10.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 10, Keyboard (US): Keypad Insert/0 -ss.input.port10.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 10, Keyboard (US): Keypad Left/4 -ss.input.port10.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 10, Keyboard (US): Keypad Minus -ss.input.port10.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 10, Keyboard (US): Keypad Pagedown/3 -ss.input.port10.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 10, Keyboard (US): Keypad Pageup/9 -ss.input.port10.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 10, Keyboard (US): Keypad Plus -ss.input.port10.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 10, Keyboard (US): Keypad Right/6 -ss.input.port10.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 10, Keyboard (US): Keypad Slash(Divide) -ss.input.port10.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 10, Keyboard (US): Keypad Up/8 -ss.input.port10.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 10, Keyboard (US): L -ss.input.port10.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 10, Keyboard (US): Left Alt -ss.input.port10.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 10, Keyboard (US): Left Ctrl -ss.input.port10.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 10, Keyboard (US): Cursor Left -ss.input.port10.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 10, Keyboard (US): Left Bracket [ -ss.input.port10.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 10, Keyboard (US): Left Shift -ss.input.port10.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 10, Keyboard (US): M -ss.input.port10.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 10, Keyboard (US): Minus - -ss.input.port10.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 10, Keyboard (US): N -ss.input.port10.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 10, Keyboard (US): Num Lock -ss.input.port10.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 10, Keyboard (US): O -ss.input.port10.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 10, Keyboard (US): P -ss.input.port10.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 10, Keyboard (US): Page Down -ss.input.port10.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 10, Keyboard (US): Page Up -ss.input.port10.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 10, Keyboard (US): Pause -ss.input.port10.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 10, Keyboard (US): Period . -ss.input.port10.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 10, Keyboard (US): Print Screen -ss.input.port10.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 10, Keyboard (US): Q -ss.input.port10.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 10, Keyboard (US): Quote ' -ss.input.port10.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 10, Keyboard (US): R -ss.input.port10.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 10, Keyboard (US): Right Alt -ss.input.port10.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 10, Keyboard (US): Right Ctrl -ss.input.port10.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 10, Keyboard (US): Right -ss.input.port10.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 10, Keyboard (US): Right Bracket ] -ss.input.port10.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 10, Keyboard (US): Right Shift -ss.input.port10.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 10, Keyboard (US): S -ss.input.port10.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 10, Keyboard (US): Scroll Lock -ss.input.port10.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 10, Keyboard (US): Semicolon ; -ss.input.port10.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 10, Keyboard (US): Slash / -ss.input.port10.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 10, Keyboard (US): Space -ss.input.port10.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 10, Keyboard (US): T -ss.input.port10.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 10, Keyboard (US): Tab -ss.input.port10.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 10, Keyboard (US): U -ss.input.port10.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 10, Keyboard (US): Up -ss.input.port10.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 10, Keyboard (US): V -ss.input.port10.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 10, Keyboard (US): W -ss.input.port10.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 10, Keyboard (US): X -ss.input.port10.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 10, Keyboard (US): Y -ss.input.port10.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 10, Keyboard (US): Z -ss.input.port10.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 10, Mission Stick: A (Stick Trigger) -ss.input.port10.mission.a - -;ss, Virtual Port 10, Mission Stick: A AF -ss.input.port10.mission.afa - -;Default position for switch "A AF". -ss.input.port10.mission.afa.defpos off - -;ss, Virtual Port 10, Mission Stick: B AF -ss.input.port10.mission.afb - -;Default position for switch "B AF". -ss.input.port10.mission.afb.defpos off - -;ss, Virtual Port 10, Mission Stick: C AF -ss.input.port10.mission.afc - -;Default position for switch "C AF". -ss.input.port10.mission.afc.defpos off - -;ss, Virtual Port 10, Mission Stick: L AF -ss.input.port10.mission.afl - -;Default position for switch "L AF". -ss.input.port10.mission.afl.defpos off - -;ss, Virtual Port 10, Mission Stick: R AF -ss.input.port10.mission.afr - -;Default position for switch "R AF". -ss.input.port10.mission.afr.defpos off - -;ss, Virtual Port 10, Mission Stick: AF Speed -ss.input.port10.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port10.mission.afspeed.defpos 1 - -;ss, Virtual Port 10, Mission Stick: X AF -ss.input.port10.mission.afx - -;Default position for switch "X AF". -ss.input.port10.mission.afx.defpos off - -;ss, Virtual Port 10, Mission Stick: Y AF -ss.input.port10.mission.afy - -;Default position for switch "Y AF". -ss.input.port10.mission.afy.defpos off - -;ss, Virtual Port 10, Mission Stick: Z AF -ss.input.port10.mission.afz - -;Default position for switch "Z AF". -ss.input.port10.mission.afz.defpos off - -;ss, Virtual Port 10, Mission Stick: B (Stick Left Button) -ss.input.port10.mission.b - -;ss, Virtual Port 10, Mission Stick: C (Stick Right Button) -ss.input.port10.mission.c - -;ss, Virtual Port 10, Mission Stick: L -ss.input.port10.mission.l - -;ss, Virtual Port 10, Mission Stick: R -ss.input.port10.mission.r - -;ss, Virtual Port 10, Mission Stick: START -ss.input.port10.mission.start - -;ss, Virtual Port 10, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port10.mission.stick_back - -;ss, Virtual Port 10, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port10.mission.stick_fore - -;ss, Virtual Port 10, Mission Stick: Stick LEFT ← (Analog) -ss.input.port10.mission.stick_left - -;ss, Virtual Port 10, Mission Stick: Stick RIGHT → (Analog) -ss.input.port10.mission.stick_right - -;ss, Virtual Port 10, Mission Stick: Throttle Down (Analog) -ss.input.port10.mission.throttle_down - -;ss, Virtual Port 10, Mission Stick: Throttle Up (Analog) -ss.input.port10.mission.throttle_up - -;ss, Virtual Port 10, Mission Stick: X -ss.input.port10.mission.x - -;ss, Virtual Port 10, Mission Stick: Y -ss.input.port10.mission.y - -;ss, Virtual Port 10, Mission Stick: Z -ss.input.port10.mission.z - -;ss, Virtual Port 10, Mouse: Left Button -ss.input.port10.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 10, Mouse: Middle Button -ss.input.port10.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 10, Mouse: Motion Down -ss.input.port10.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 10, Mouse: Motion Left -ss.input.port10.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 10, Mouse: Motion Right -ss.input.port10.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 10, Mouse: Motion Up -ss.input.port10.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 10, Mouse: Right Button -ss.input.port10.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 10, Mouse: Start -ss.input.port10.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 10, Steering Wheel: A (R Group) -ss.input.port10.wheel.a - -;ss, Virtual Port 10, Steering Wheel: Analog LEFT ← -ss.input.port10.wheel.analog_left - -;ss, Virtual Port 10, Steering Wheel: Analog RIGHT → -ss.input.port10.wheel.analog_right - -;ss, Virtual Port 10, Steering Wheel: B (R Group) -ss.input.port10.wheel.b - -;ss, Virtual Port 10, Steering Wheel: C (R Group) -ss.input.port10.wheel.c - -;ss, Virtual Port 10, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port10.wheel.down - -;ss, Virtual Port 10, Steering Wheel: START -ss.input.port10.wheel.start - -;ss, Virtual Port 10, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port10.wheel.up - -;ss, Virtual Port 10, Steering Wheel: X (L Group) -ss.input.port10.wheel.x - -;ss, Virtual Port 10, Steering Wheel: Y (L Group) -ss.input.port10.wheel.y - -;ss, Virtual Port 10, Steering Wheel: Z (L Group) -ss.input.port10.wheel.z - -;Input device for Virtual Port 11 -ss.input.port11 gamepad - -;ss, Virtual Port 11, 3D Control Pad: A -ss.input.port11.3dpad.a - -;ss, Virtual Port 11, 3D Control Pad: Analog DOWN ↓ -ss.input.port11.3dpad.analog_down - -;ss, Virtual Port 11, 3D Control Pad: Analog LEFT ← -ss.input.port11.3dpad.analog_left - -;ss, Virtual Port 11, 3D Control Pad: Analog RIGHT → -ss.input.port11.3dpad.analog_right - -;ss, Virtual Port 11, 3D Control Pad: Analog UP ↑ -ss.input.port11.3dpad.analog_up - -;ss, Virtual Port 11, 3D Control Pad: B -ss.input.port11.3dpad.b - -;ss, Virtual Port 11, 3D Control Pad: C -ss.input.port11.3dpad.c - -;ss, Virtual Port 11, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port11.3dpad.down - -;ss, Virtual Port 11, 3D Control Pad: D-Pad LEFT ← -ss.input.port11.3dpad.left - -;ss, Virtual Port 11, 3D Control Pad: Left Shoulder (Analog) -ss.input.port11.3dpad.ls - -;ss, Virtual Port 11, 3D Control Pad: Mode -ss.input.port11.3dpad.mode - -;Default position for switch "Mode". -ss.input.port11.3dpad.mode.defpos digital - -;ss, Virtual Port 11, 3D Control Pad: D-Pad RIGHT → -ss.input.port11.3dpad.right - -;ss, Virtual Port 11, 3D Control Pad: Right Shoulder (Analog) -ss.input.port11.3dpad.rs - -;ss, Virtual Port 11, 3D Control Pad: START -ss.input.port11.3dpad.start - -;ss, Virtual Port 11, 3D Control Pad: D-Pad UP ↑ -ss.input.port11.3dpad.up - -;ss, Virtual Port 11, 3D Control Pad: X -ss.input.port11.3dpad.x - -;ss, Virtual Port 11, 3D Control Pad: Y -ss.input.port11.3dpad.y - -;ss, Virtual Port 11, 3D Control Pad: Z -ss.input.port11.3dpad.z - -;ss, Virtual Port 11, Dual Mission: A (R Stick Trigger) -ss.input.port11.dmission.a - -;ss, Virtual Port 11, Dual Mission: A AF -ss.input.port11.dmission.afa - -;Default position for switch "A AF". -ss.input.port11.dmission.afa.defpos off - -;ss, Virtual Port 11, Dual Mission: B AF -ss.input.port11.dmission.afb - -;Default position for switch "B AF". -ss.input.port11.dmission.afb.defpos off - -;ss, Virtual Port 11, Dual Mission: C AF -ss.input.port11.dmission.afc - -;Default position for switch "C AF". -ss.input.port11.dmission.afc.defpos off - -;ss, Virtual Port 11, Dual Mission: L AF -ss.input.port11.dmission.afl - -;Default position for switch "L AF". -ss.input.port11.dmission.afl.defpos off - -;ss, Virtual Port 11, Dual Mission: R AF -ss.input.port11.dmission.afr - -;Default position for switch "R AF". -ss.input.port11.dmission.afr.defpos off - -;ss, Virtual Port 11, Dual Mission: Autofire Speed -ss.input.port11.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port11.dmission.afspeed.defpos 1 - -;ss, Virtual Port 11, Dual Mission: X AF -ss.input.port11.dmission.afx - -;Default position for switch "X AF". -ss.input.port11.dmission.afx.defpos off - -;ss, Virtual Port 11, Dual Mission: Y AF -ss.input.port11.dmission.afy - -;Default position for switch "Y AF". -ss.input.port11.dmission.afy.defpos off - -;ss, Virtual Port 11, Dual Mission: Z AF -ss.input.port11.dmission.afz - -;Default position for switch "Z AF". -ss.input.port11.dmission.afz.defpos off - -;ss, Virtual Port 11, Dual Mission: B (R Stick Left Button) -ss.input.port11.dmission.b - -;ss, Virtual Port 11, Dual Mission: C (R Stick Right Button) -ss.input.port11.dmission.c - -;ss, Virtual Port 11, Dual Mission: L -ss.input.port11.dmission.l - -;ss, Virtual Port 11, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port11.dmission.lstick_back - -;ss, Virtual Port 11, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port11.dmission.lstick_fore - -;ss, Virtual Port 11, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port11.dmission.lstick_left - -;ss, Virtual Port 11, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port11.dmission.lstick_right - -;ss, Virtual Port 11, Dual Mission: L Throttle Down (Analog) -ss.input.port11.dmission.lthrottle_down - -;ss, Virtual Port 11, Dual Mission: L Throttle Up (Analog) -ss.input.port11.dmission.lthrottle_up - -;ss, Virtual Port 11, Dual Mission: R -ss.input.port11.dmission.r - -;ss, Virtual Port 11, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port11.dmission.rstick_back - -;ss, Virtual Port 11, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port11.dmission.rstick_fore - -;ss, Virtual Port 11, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port11.dmission.rstick_left - -;ss, Virtual Port 11, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port11.dmission.rstick_right - -;ss, Virtual Port 11, Dual Mission: R Throttle Down (Analog) -ss.input.port11.dmission.rthrottle_down - -;ss, Virtual Port 11, Dual Mission: R Throttle Up (Analog) -ss.input.port11.dmission.rthrottle_up - -;ss, Virtual Port 11, Dual Mission: START -ss.input.port11.dmission.start - -;ss, Virtual Port 11, Dual Mission: X (L Stick Trigger) -ss.input.port11.dmission.x - -;ss, Virtual Port 11, Dual Mission: Y (L Stick Left Button) -ss.input.port11.dmission.y - -;ss, Virtual Port 11, Dual Mission: Z (L Stick Right Button) -ss.input.port11.dmission.z - -;ss, Virtual Port 11, Digital Gamepad: A -ss.input.port11.gamepad.a - -;ss, Virtual Port 11, Digital Gamepad: B -ss.input.port11.gamepad.b - -;ss, Virtual Port 11, Digital Gamepad: C -ss.input.port11.gamepad.c - -;ss, Virtual Port 11, Digital Gamepad: DOWN ↓ -ss.input.port11.gamepad.down - -;ss, Virtual Port 11, Digital Gamepad: LEFT ← -ss.input.port11.gamepad.left - -;ss, Virtual Port 11, Digital Gamepad: Left Shoulder -ss.input.port11.gamepad.ls - -;ss, Virtual Port 11, Digital Gamepad: RIGHT → -ss.input.port11.gamepad.right - -;ss, Virtual Port 11, Digital Gamepad: Right Shoulder -ss.input.port11.gamepad.rs - -;ss, Virtual Port 11, Digital Gamepad: START -ss.input.port11.gamepad.start - -;ss, Virtual Port 11, Digital Gamepad: UP ↑ -ss.input.port11.gamepad.up - -;ss, Virtual Port 11, Digital Gamepad: X -ss.input.port11.gamepad.x - -;ss, Virtual Port 11, Digital Gamepad: Y -ss.input.port11.gamepad.y - -;ss, Virtual Port 11, Digital Gamepad: Z -ss.input.port11.gamepad.z - -;ss, Virtual Port 11, Light Gun: Offscreen Shot(Simulated) -ss.input.port11.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 11, Light Gun: START -ss.input.port11.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 11, Light Gun: Trigger -ss.input.port11.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 11, Light Gun: X Axis -ss.input.port11.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 11, Light Gun: Y Axis -ss.input.port11.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 11. -ss.input.port11.gun_chairs 0x8080FF - -;ss, Virtual Port 11, Keyboard (JP): 0(Zero) -ss.input.port11.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 11, Keyboard (JP): 1(One) -ss.input.port11.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 11, Keyboard (JP): 2 -ss.input.port11.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 11, Keyboard (JP): 3 -ss.input.port11.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 11, Keyboard (JP): 4 -ss.input.port11.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 11, Keyboard (JP): 5 -ss.input.port11.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 11, Keyboard (JP): 6 -ss.input.port11.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 11, Keyboard (JP): 7 -ss.input.port11.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 11, Keyboard (JP): 8 -ss.input.port11.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 11, Keyboard (JP): 9 -ss.input.port11.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 11, Keyboard (JP): A -ss.input.port11.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 11, Keyboard (JP): At @ -ss.input.port11.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 11, Keyboard (JP): B -ss.input.port11.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 11, Keyboard (JP): Backslash \ -ss.input.port11.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 11, Keyboard (JP): Backspace -ss.input.port11.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 11, Keyboard (JP): C -ss.input.port11.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 11, Keyboard (JP): Caps Lock/英数 -ss.input.port11.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 11, Keyboard (JP): Circumflex ^ -ss.input.port11.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 11, Keyboard (JP): Colon : -ss.input.port11.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 11, Keyboard (JP): Comma , -ss.input.port11.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 11, Keyboard (JP): 変換 -ss.input.port11.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 11, Keyboard (JP): D -ss.input.port11.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 11, Keyboard (JP): Delete -ss.input.port11.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 11, Keyboard (JP): Down -ss.input.port11.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 11, Keyboard (JP): E -ss.input.port11.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 11, Keyboard (JP): End -ss.input.port11.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 11, Keyboard (JP): Enter -ss.input.port11.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 11, Keyboard (JP): Escape -ss.input.port11.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 11, Keyboard (JP): F -ss.input.port11.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 11, Keyboard (JP): F1 -ss.input.port11.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 11, Keyboard (JP): F10 -ss.input.port11.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 11, Keyboard (JP): F11 -ss.input.port11.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 11, Keyboard (JP): F12 -ss.input.port11.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 11, Keyboard (JP): F2 -ss.input.port11.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 11, Keyboard (JP): F3 -ss.input.port11.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 11, Keyboard (JP): F4 -ss.input.port11.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 11, Keyboard (JP): F5 -ss.input.port11.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 11, Keyboard (JP): F6 -ss.input.port11.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 11, Keyboard (JP): F7 -ss.input.port11.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 11, Keyboard (JP): F8 -ss.input.port11.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 11, Keyboard (JP): F9 -ss.input.port11.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 11, Keyboard (JP): G -ss.input.port11.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 11, Keyboard (JP): H -ss.input.port11.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 11, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port11.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 11, Keyboard (JP): Home -ss.input.port11.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 11, Keyboard (JP): 半角/全角/漢字 -ss.input.port11.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 11, Keyboard (JP): I -ss.input.port11.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 11, Keyboard (JP): Insert -ss.input.port11.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 11, Keyboard (JP): J -ss.input.port11.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 11, Keyboard (JP): K -ss.input.port11.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 11, Keyboard (JP): L -ss.input.port11.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 11, Keyboard (JP): Left Alt -ss.input.port11.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 11, Keyboard (JP): Left Ctrl -ss.input.port11.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 11, Keyboard (JP): Cursor Left -ss.input.port11.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 11, Keyboard (JP): Left Bracket [ -ss.input.port11.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 11, Keyboard (JP): Left Shift -ss.input.port11.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 11, Keyboard (JP): M -ss.input.port11.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 11, Keyboard (JP): Minus - -ss.input.port11.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 11, Keyboard (JP): N -ss.input.port11.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 11, Keyboard (JP): 無変換 -ss.input.port11.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 11, Keyboard (JP): O -ss.input.port11.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 11, Keyboard (JP): P -ss.input.port11.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 11, Keyboard (JP): Page Down -ss.input.port11.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 11, Keyboard (JP): Page Up -ss.input.port11.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 11, Keyboard (JP): Pause -ss.input.port11.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 11, Keyboard (JP): Period . -ss.input.port11.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 11, Keyboard (JP): Print Screen -ss.input.port11.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 11, Keyboard (JP): Q -ss.input.port11.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 11, Keyboard (JP): R -ss.input.port11.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 11, Keyboard (JP): Right Alt -ss.input.port11.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 11, Keyboard (JP): Right Ctrl -ss.input.port11.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 11, Keyboard (JP): Right -ss.input.port11.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 11, Keyboard (JP): Right Bracket ] -ss.input.port11.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 11, Keyboard (JP): Right Shift -ss.input.port11.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 11, Keyboard (JP): S -ss.input.port11.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 11, Keyboard (JP): Scroll Lock -ss.input.port11.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 11, Keyboard (JP): Semicolon ; -ss.input.port11.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 11, Keyboard (JP): Slash / -ss.input.port11.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 11, Keyboard (JP): Space -ss.input.port11.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 11, Keyboard (JP): T -ss.input.port11.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 11, Keyboard (JP): Tab -ss.input.port11.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 11, Keyboard (JP): U -ss.input.port11.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 11, Keyboard (JP): Up -ss.input.port11.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 11, Keyboard (JP): V -ss.input.port11.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 11, Keyboard (JP): W -ss.input.port11.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 11, Keyboard (JP): X -ss.input.port11.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 11, Keyboard (JP): Y -ss.input.port11.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 11, Keyboard (JP): Yen ¥ -ss.input.port11.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 11, Keyboard (JP): Z -ss.input.port11.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 11, Keyboard (US): 0(Zero) -ss.input.port11.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 11, Keyboard (US): 1(One) -ss.input.port11.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 11, Keyboard (US): 2 -ss.input.port11.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 11, Keyboard (US): 3 -ss.input.port11.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 11, Keyboard (US): 4 -ss.input.port11.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 11, Keyboard (US): 5 -ss.input.port11.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 11, Keyboard (US): 6 -ss.input.port11.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 11, Keyboard (US): 7 -ss.input.port11.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 11, Keyboard (US): 8 -ss.input.port11.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 11, Keyboard (US): 9 -ss.input.port11.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 11, Keyboard (US): A -ss.input.port11.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 11, Keyboard (US): B -ss.input.port11.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 11, Keyboard (US): Backslash \ -ss.input.port11.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 11, Keyboard (US): Backspace -ss.input.port11.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 11, Keyboard (US): C -ss.input.port11.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 11, Keyboard (US): Caps Lock -ss.input.port11.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 11, Keyboard (US): Comma , -ss.input.port11.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 11, Keyboard (US): D -ss.input.port11.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 11, Keyboard (US): Delete -ss.input.port11.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 11, Keyboard (US): Down -ss.input.port11.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 11, Keyboard (US): E -ss.input.port11.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 11, Keyboard (US): End -ss.input.port11.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 11, Keyboard (US): Enter -ss.input.port11.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 11, Keyboard (US): Equals = -ss.input.port11.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 11, Keyboard (US): Escape -ss.input.port11.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 11, Keyboard (US): F -ss.input.port11.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 11, Keyboard (US): F1 -ss.input.port11.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 11, Keyboard (US): F10 -ss.input.port11.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 11, Keyboard (US): F11 -ss.input.port11.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 11, Keyboard (US): F12 -ss.input.port11.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 11, Keyboard (US): F2 -ss.input.port11.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 11, Keyboard (US): F3 -ss.input.port11.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 11, Keyboard (US): F4 -ss.input.port11.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 11, Keyboard (US): F5 -ss.input.port11.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 11, Keyboard (US): F6 -ss.input.port11.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 11, Keyboard (US): F7 -ss.input.port11.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 11, Keyboard (US): F8 -ss.input.port11.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 11, Keyboard (US): F9 -ss.input.port11.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 11, Keyboard (US): G -ss.input.port11.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 11, Keyboard (US): Grave ` -ss.input.port11.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 11, Keyboard (US): H -ss.input.port11.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 11, Keyboard (US): Home -ss.input.port11.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 11, Keyboard (US): I -ss.input.port11.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 11, Keyboard (US): Insert -ss.input.port11.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 11, Keyboard (US): J -ss.input.port11.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 11, Keyboard (US): K -ss.input.port11.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 11, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port11.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 11, Keyboard (US): Keypad Center/5 -ss.input.port11.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 11, Keyboard (US): Keypad Delete -ss.input.port11.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 11, Keyboard (US): Keypad Down/2 -ss.input.port11.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 11, Keyboard (US): Keypad End/1 -ss.input.port11.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 11, Keyboard (US): Keypad Enter -ss.input.port11.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 11, Keyboard (US): Keypad Home/7 -ss.input.port11.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 11, Keyboard (US): Keypad Insert/0 -ss.input.port11.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 11, Keyboard (US): Keypad Left/4 -ss.input.port11.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 11, Keyboard (US): Keypad Minus -ss.input.port11.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 11, Keyboard (US): Keypad Pagedown/3 -ss.input.port11.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 11, Keyboard (US): Keypad Pageup/9 -ss.input.port11.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 11, Keyboard (US): Keypad Plus -ss.input.port11.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 11, Keyboard (US): Keypad Right/6 -ss.input.port11.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 11, Keyboard (US): Keypad Slash(Divide) -ss.input.port11.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 11, Keyboard (US): Keypad Up/8 -ss.input.port11.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 11, Keyboard (US): L -ss.input.port11.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 11, Keyboard (US): Left Alt -ss.input.port11.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 11, Keyboard (US): Left Ctrl -ss.input.port11.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 11, Keyboard (US): Cursor Left -ss.input.port11.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 11, Keyboard (US): Left Bracket [ -ss.input.port11.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 11, Keyboard (US): Left Shift -ss.input.port11.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 11, Keyboard (US): M -ss.input.port11.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 11, Keyboard (US): Minus - -ss.input.port11.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 11, Keyboard (US): N -ss.input.port11.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 11, Keyboard (US): Num Lock -ss.input.port11.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 11, Keyboard (US): O -ss.input.port11.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 11, Keyboard (US): P -ss.input.port11.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 11, Keyboard (US): Page Down -ss.input.port11.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 11, Keyboard (US): Page Up -ss.input.port11.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 11, Keyboard (US): Pause -ss.input.port11.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 11, Keyboard (US): Period . -ss.input.port11.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 11, Keyboard (US): Print Screen -ss.input.port11.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 11, Keyboard (US): Q -ss.input.port11.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 11, Keyboard (US): Quote ' -ss.input.port11.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 11, Keyboard (US): R -ss.input.port11.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 11, Keyboard (US): Right Alt -ss.input.port11.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 11, Keyboard (US): Right Ctrl -ss.input.port11.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 11, Keyboard (US): Right -ss.input.port11.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 11, Keyboard (US): Right Bracket ] -ss.input.port11.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 11, Keyboard (US): Right Shift -ss.input.port11.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 11, Keyboard (US): S -ss.input.port11.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 11, Keyboard (US): Scroll Lock -ss.input.port11.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 11, Keyboard (US): Semicolon ; -ss.input.port11.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 11, Keyboard (US): Slash / -ss.input.port11.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 11, Keyboard (US): Space -ss.input.port11.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 11, Keyboard (US): T -ss.input.port11.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 11, Keyboard (US): Tab -ss.input.port11.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 11, Keyboard (US): U -ss.input.port11.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 11, Keyboard (US): Up -ss.input.port11.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 11, Keyboard (US): V -ss.input.port11.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 11, Keyboard (US): W -ss.input.port11.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 11, Keyboard (US): X -ss.input.port11.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 11, Keyboard (US): Y -ss.input.port11.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 11, Keyboard (US): Z -ss.input.port11.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 11, Mission Stick: A (Stick Trigger) -ss.input.port11.mission.a - -;ss, Virtual Port 11, Mission Stick: A AF -ss.input.port11.mission.afa - -;Default position for switch "A AF". -ss.input.port11.mission.afa.defpos off - -;ss, Virtual Port 11, Mission Stick: B AF -ss.input.port11.mission.afb - -;Default position for switch "B AF". -ss.input.port11.mission.afb.defpos off - -;ss, Virtual Port 11, Mission Stick: C AF -ss.input.port11.mission.afc - -;Default position for switch "C AF". -ss.input.port11.mission.afc.defpos off - -;ss, Virtual Port 11, Mission Stick: L AF -ss.input.port11.mission.afl - -;Default position for switch "L AF". -ss.input.port11.mission.afl.defpos off - -;ss, Virtual Port 11, Mission Stick: R AF -ss.input.port11.mission.afr - -;Default position for switch "R AF". -ss.input.port11.mission.afr.defpos off - -;ss, Virtual Port 11, Mission Stick: AF Speed -ss.input.port11.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port11.mission.afspeed.defpos 1 - -;ss, Virtual Port 11, Mission Stick: X AF -ss.input.port11.mission.afx - -;Default position for switch "X AF". -ss.input.port11.mission.afx.defpos off - -;ss, Virtual Port 11, Mission Stick: Y AF -ss.input.port11.mission.afy - -;Default position for switch "Y AF". -ss.input.port11.mission.afy.defpos off - -;ss, Virtual Port 11, Mission Stick: Z AF -ss.input.port11.mission.afz - -;Default position for switch "Z AF". -ss.input.port11.mission.afz.defpos off - -;ss, Virtual Port 11, Mission Stick: B (Stick Left Button) -ss.input.port11.mission.b - -;ss, Virtual Port 11, Mission Stick: C (Stick Right Button) -ss.input.port11.mission.c - -;ss, Virtual Port 11, Mission Stick: L -ss.input.port11.mission.l - -;ss, Virtual Port 11, Mission Stick: R -ss.input.port11.mission.r - -;ss, Virtual Port 11, Mission Stick: START -ss.input.port11.mission.start - -;ss, Virtual Port 11, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port11.mission.stick_back - -;ss, Virtual Port 11, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port11.mission.stick_fore - -;ss, Virtual Port 11, Mission Stick: Stick LEFT ← (Analog) -ss.input.port11.mission.stick_left - -;ss, Virtual Port 11, Mission Stick: Stick RIGHT → (Analog) -ss.input.port11.mission.stick_right - -;ss, Virtual Port 11, Mission Stick: Throttle Down (Analog) -ss.input.port11.mission.throttle_down - -;ss, Virtual Port 11, Mission Stick: Throttle Up (Analog) -ss.input.port11.mission.throttle_up - -;ss, Virtual Port 11, Mission Stick: X -ss.input.port11.mission.x - -;ss, Virtual Port 11, Mission Stick: Y -ss.input.port11.mission.y - -;ss, Virtual Port 11, Mission Stick: Z -ss.input.port11.mission.z - -;ss, Virtual Port 11, Mouse: Left Button -ss.input.port11.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 11, Mouse: Middle Button -ss.input.port11.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 11, Mouse: Motion Down -ss.input.port11.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 11, Mouse: Motion Left -ss.input.port11.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 11, Mouse: Motion Right -ss.input.port11.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 11, Mouse: Motion Up -ss.input.port11.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 11, Mouse: Right Button -ss.input.port11.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 11, Mouse: Start -ss.input.port11.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 11, Steering Wheel: A (R Group) -ss.input.port11.wheel.a - -;ss, Virtual Port 11, Steering Wheel: Analog LEFT ← -ss.input.port11.wheel.analog_left - -;ss, Virtual Port 11, Steering Wheel: Analog RIGHT → -ss.input.port11.wheel.analog_right - -;ss, Virtual Port 11, Steering Wheel: B (R Group) -ss.input.port11.wheel.b - -;ss, Virtual Port 11, Steering Wheel: C (R Group) -ss.input.port11.wheel.c - -;ss, Virtual Port 11, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port11.wheel.down - -;ss, Virtual Port 11, Steering Wheel: START -ss.input.port11.wheel.start - -;ss, Virtual Port 11, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port11.wheel.up - -;ss, Virtual Port 11, Steering Wheel: X (L Group) -ss.input.port11.wheel.x - -;ss, Virtual Port 11, Steering Wheel: Y (L Group) -ss.input.port11.wheel.y - -;ss, Virtual Port 11, Steering Wheel: Z (L Group) -ss.input.port11.wheel.z - -;Input device for Virtual Port 12 -ss.input.port12 gamepad - -;ss, Virtual Port 12, 3D Control Pad: A -ss.input.port12.3dpad.a - -;ss, Virtual Port 12, 3D Control Pad: Analog DOWN ↓ -ss.input.port12.3dpad.analog_down - -;ss, Virtual Port 12, 3D Control Pad: Analog LEFT ← -ss.input.port12.3dpad.analog_left - -;ss, Virtual Port 12, 3D Control Pad: Analog RIGHT → -ss.input.port12.3dpad.analog_right - -;ss, Virtual Port 12, 3D Control Pad: Analog UP ↑ -ss.input.port12.3dpad.analog_up - -;ss, Virtual Port 12, 3D Control Pad: B -ss.input.port12.3dpad.b - -;ss, Virtual Port 12, 3D Control Pad: C -ss.input.port12.3dpad.c - -;ss, Virtual Port 12, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port12.3dpad.down - -;ss, Virtual Port 12, 3D Control Pad: D-Pad LEFT ← -ss.input.port12.3dpad.left - -;ss, Virtual Port 12, 3D Control Pad: Left Shoulder (Analog) -ss.input.port12.3dpad.ls - -;ss, Virtual Port 12, 3D Control Pad: Mode -ss.input.port12.3dpad.mode - -;Default position for switch "Mode". -ss.input.port12.3dpad.mode.defpos digital - -;ss, Virtual Port 12, 3D Control Pad: D-Pad RIGHT → -ss.input.port12.3dpad.right - -;ss, Virtual Port 12, 3D Control Pad: Right Shoulder (Analog) -ss.input.port12.3dpad.rs - -;ss, Virtual Port 12, 3D Control Pad: START -ss.input.port12.3dpad.start - -;ss, Virtual Port 12, 3D Control Pad: D-Pad UP ↑ -ss.input.port12.3dpad.up - -;ss, Virtual Port 12, 3D Control Pad: X -ss.input.port12.3dpad.x - -;ss, Virtual Port 12, 3D Control Pad: Y -ss.input.port12.3dpad.y - -;ss, Virtual Port 12, 3D Control Pad: Z -ss.input.port12.3dpad.z - -;ss, Virtual Port 12, Dual Mission: A (R Stick Trigger) -ss.input.port12.dmission.a - -;ss, Virtual Port 12, Dual Mission: A AF -ss.input.port12.dmission.afa - -;Default position for switch "A AF". -ss.input.port12.dmission.afa.defpos off - -;ss, Virtual Port 12, Dual Mission: B AF -ss.input.port12.dmission.afb - -;Default position for switch "B AF". -ss.input.port12.dmission.afb.defpos off - -;ss, Virtual Port 12, Dual Mission: C AF -ss.input.port12.dmission.afc - -;Default position for switch "C AF". -ss.input.port12.dmission.afc.defpos off - -;ss, Virtual Port 12, Dual Mission: L AF -ss.input.port12.dmission.afl - -;Default position for switch "L AF". -ss.input.port12.dmission.afl.defpos off - -;ss, Virtual Port 12, Dual Mission: R AF -ss.input.port12.dmission.afr - -;Default position for switch "R AF". -ss.input.port12.dmission.afr.defpos off - -;ss, Virtual Port 12, Dual Mission: Autofire Speed -ss.input.port12.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port12.dmission.afspeed.defpos 1 - -;ss, Virtual Port 12, Dual Mission: X AF -ss.input.port12.dmission.afx - -;Default position for switch "X AF". -ss.input.port12.dmission.afx.defpos off - -;ss, Virtual Port 12, Dual Mission: Y AF -ss.input.port12.dmission.afy - -;Default position for switch "Y AF". -ss.input.port12.dmission.afy.defpos off - -;ss, Virtual Port 12, Dual Mission: Z AF -ss.input.port12.dmission.afz - -;Default position for switch "Z AF". -ss.input.port12.dmission.afz.defpos off - -;ss, Virtual Port 12, Dual Mission: B (R Stick Left Button) -ss.input.port12.dmission.b - -;ss, Virtual Port 12, Dual Mission: C (R Stick Right Button) -ss.input.port12.dmission.c - -;ss, Virtual Port 12, Dual Mission: L -ss.input.port12.dmission.l - -;ss, Virtual Port 12, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port12.dmission.lstick_back - -;ss, Virtual Port 12, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port12.dmission.lstick_fore - -;ss, Virtual Port 12, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port12.dmission.lstick_left - -;ss, Virtual Port 12, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port12.dmission.lstick_right - -;ss, Virtual Port 12, Dual Mission: L Throttle Down (Analog) -ss.input.port12.dmission.lthrottle_down - -;ss, Virtual Port 12, Dual Mission: L Throttle Up (Analog) -ss.input.port12.dmission.lthrottle_up - -;ss, Virtual Port 12, Dual Mission: R -ss.input.port12.dmission.r - -;ss, Virtual Port 12, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port12.dmission.rstick_back - -;ss, Virtual Port 12, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port12.dmission.rstick_fore - -;ss, Virtual Port 12, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port12.dmission.rstick_left - -;ss, Virtual Port 12, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port12.dmission.rstick_right - -;ss, Virtual Port 12, Dual Mission: R Throttle Down (Analog) -ss.input.port12.dmission.rthrottle_down - -;ss, Virtual Port 12, Dual Mission: R Throttle Up (Analog) -ss.input.port12.dmission.rthrottle_up - -;ss, Virtual Port 12, Dual Mission: START -ss.input.port12.dmission.start - -;ss, Virtual Port 12, Dual Mission: X (L Stick Trigger) -ss.input.port12.dmission.x - -;ss, Virtual Port 12, Dual Mission: Y (L Stick Left Button) -ss.input.port12.dmission.y - -;ss, Virtual Port 12, Dual Mission: Z (L Stick Right Button) -ss.input.port12.dmission.z - -;ss, Virtual Port 12, Digital Gamepad: A -ss.input.port12.gamepad.a - -;ss, Virtual Port 12, Digital Gamepad: B -ss.input.port12.gamepad.b - -;ss, Virtual Port 12, Digital Gamepad: C -ss.input.port12.gamepad.c - -;ss, Virtual Port 12, Digital Gamepad: DOWN ↓ -ss.input.port12.gamepad.down - -;ss, Virtual Port 12, Digital Gamepad: LEFT ← -ss.input.port12.gamepad.left - -;ss, Virtual Port 12, Digital Gamepad: Left Shoulder -ss.input.port12.gamepad.ls - -;ss, Virtual Port 12, Digital Gamepad: RIGHT → -ss.input.port12.gamepad.right - -;ss, Virtual Port 12, Digital Gamepad: Right Shoulder -ss.input.port12.gamepad.rs - -;ss, Virtual Port 12, Digital Gamepad: START -ss.input.port12.gamepad.start - -;ss, Virtual Port 12, Digital Gamepad: UP ↑ -ss.input.port12.gamepad.up - -;ss, Virtual Port 12, Digital Gamepad: X -ss.input.port12.gamepad.x - -;ss, Virtual Port 12, Digital Gamepad: Y -ss.input.port12.gamepad.y - -;ss, Virtual Port 12, Digital Gamepad: Z -ss.input.port12.gamepad.z - -;ss, Virtual Port 12, Light Gun: Offscreen Shot(Simulated) -ss.input.port12.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 12, Light Gun: START -ss.input.port12.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 12, Light Gun: Trigger -ss.input.port12.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 12, Light Gun: X Axis -ss.input.port12.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 12, Light Gun: Y Axis -ss.input.port12.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 12. -ss.input.port12.gun_chairs 0xFF8080 - -;ss, Virtual Port 12, Keyboard (JP): 0(Zero) -ss.input.port12.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 12, Keyboard (JP): 1(One) -ss.input.port12.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 12, Keyboard (JP): 2 -ss.input.port12.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 12, Keyboard (JP): 3 -ss.input.port12.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 12, Keyboard (JP): 4 -ss.input.port12.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 12, Keyboard (JP): 5 -ss.input.port12.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 12, Keyboard (JP): 6 -ss.input.port12.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 12, Keyboard (JP): 7 -ss.input.port12.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 12, Keyboard (JP): 8 -ss.input.port12.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 12, Keyboard (JP): 9 -ss.input.port12.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 12, Keyboard (JP): A -ss.input.port12.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 12, Keyboard (JP): At @ -ss.input.port12.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 12, Keyboard (JP): B -ss.input.port12.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 12, Keyboard (JP): Backslash \ -ss.input.port12.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 12, Keyboard (JP): Backspace -ss.input.port12.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 12, Keyboard (JP): C -ss.input.port12.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 12, Keyboard (JP): Caps Lock/英数 -ss.input.port12.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 12, Keyboard (JP): Circumflex ^ -ss.input.port12.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 12, Keyboard (JP): Colon : -ss.input.port12.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 12, Keyboard (JP): Comma , -ss.input.port12.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 12, Keyboard (JP): 変換 -ss.input.port12.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 12, Keyboard (JP): D -ss.input.port12.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 12, Keyboard (JP): Delete -ss.input.port12.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 12, Keyboard (JP): Down -ss.input.port12.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 12, Keyboard (JP): E -ss.input.port12.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 12, Keyboard (JP): End -ss.input.port12.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 12, Keyboard (JP): Enter -ss.input.port12.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 12, Keyboard (JP): Escape -ss.input.port12.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 12, Keyboard (JP): F -ss.input.port12.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 12, Keyboard (JP): F1 -ss.input.port12.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 12, Keyboard (JP): F10 -ss.input.port12.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 12, Keyboard (JP): F11 -ss.input.port12.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 12, Keyboard (JP): F12 -ss.input.port12.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 12, Keyboard (JP): F2 -ss.input.port12.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 12, Keyboard (JP): F3 -ss.input.port12.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 12, Keyboard (JP): F4 -ss.input.port12.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 12, Keyboard (JP): F5 -ss.input.port12.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 12, Keyboard (JP): F6 -ss.input.port12.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 12, Keyboard (JP): F7 -ss.input.port12.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 12, Keyboard (JP): F8 -ss.input.port12.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 12, Keyboard (JP): F9 -ss.input.port12.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 12, Keyboard (JP): G -ss.input.port12.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 12, Keyboard (JP): H -ss.input.port12.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 12, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port12.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 12, Keyboard (JP): Home -ss.input.port12.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 12, Keyboard (JP): 半角/全角/漢字 -ss.input.port12.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 12, Keyboard (JP): I -ss.input.port12.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 12, Keyboard (JP): Insert -ss.input.port12.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 12, Keyboard (JP): J -ss.input.port12.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 12, Keyboard (JP): K -ss.input.port12.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 12, Keyboard (JP): L -ss.input.port12.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 12, Keyboard (JP): Left Alt -ss.input.port12.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 12, Keyboard (JP): Left Ctrl -ss.input.port12.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 12, Keyboard (JP): Cursor Left -ss.input.port12.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 12, Keyboard (JP): Left Bracket [ -ss.input.port12.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 12, Keyboard (JP): Left Shift -ss.input.port12.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 12, Keyboard (JP): M -ss.input.port12.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 12, Keyboard (JP): Minus - -ss.input.port12.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 12, Keyboard (JP): N -ss.input.port12.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 12, Keyboard (JP): 無変換 -ss.input.port12.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 12, Keyboard (JP): O -ss.input.port12.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 12, Keyboard (JP): P -ss.input.port12.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 12, Keyboard (JP): Page Down -ss.input.port12.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 12, Keyboard (JP): Page Up -ss.input.port12.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 12, Keyboard (JP): Pause -ss.input.port12.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 12, Keyboard (JP): Period . -ss.input.port12.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 12, Keyboard (JP): Print Screen -ss.input.port12.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 12, Keyboard (JP): Q -ss.input.port12.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 12, Keyboard (JP): R -ss.input.port12.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 12, Keyboard (JP): Right Alt -ss.input.port12.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 12, Keyboard (JP): Right Ctrl -ss.input.port12.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 12, Keyboard (JP): Right -ss.input.port12.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 12, Keyboard (JP): Right Bracket ] -ss.input.port12.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 12, Keyboard (JP): Right Shift -ss.input.port12.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 12, Keyboard (JP): S -ss.input.port12.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 12, Keyboard (JP): Scroll Lock -ss.input.port12.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 12, Keyboard (JP): Semicolon ; -ss.input.port12.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 12, Keyboard (JP): Slash / -ss.input.port12.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 12, Keyboard (JP): Space -ss.input.port12.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 12, Keyboard (JP): T -ss.input.port12.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 12, Keyboard (JP): Tab -ss.input.port12.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 12, Keyboard (JP): U -ss.input.port12.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 12, Keyboard (JP): Up -ss.input.port12.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 12, Keyboard (JP): V -ss.input.port12.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 12, Keyboard (JP): W -ss.input.port12.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 12, Keyboard (JP): X -ss.input.port12.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 12, Keyboard (JP): Y -ss.input.port12.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 12, Keyboard (JP): Yen ¥ -ss.input.port12.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 12, Keyboard (JP): Z -ss.input.port12.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 12, Keyboard (US): 0(Zero) -ss.input.port12.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 12, Keyboard (US): 1(One) -ss.input.port12.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 12, Keyboard (US): 2 -ss.input.port12.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 12, Keyboard (US): 3 -ss.input.port12.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 12, Keyboard (US): 4 -ss.input.port12.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 12, Keyboard (US): 5 -ss.input.port12.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 12, Keyboard (US): 6 -ss.input.port12.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 12, Keyboard (US): 7 -ss.input.port12.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 12, Keyboard (US): 8 -ss.input.port12.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 12, Keyboard (US): 9 -ss.input.port12.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 12, Keyboard (US): A -ss.input.port12.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 12, Keyboard (US): B -ss.input.port12.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 12, Keyboard (US): Backslash \ -ss.input.port12.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 12, Keyboard (US): Backspace -ss.input.port12.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 12, Keyboard (US): C -ss.input.port12.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 12, Keyboard (US): Caps Lock -ss.input.port12.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 12, Keyboard (US): Comma , -ss.input.port12.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 12, Keyboard (US): D -ss.input.port12.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 12, Keyboard (US): Delete -ss.input.port12.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 12, Keyboard (US): Down -ss.input.port12.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 12, Keyboard (US): E -ss.input.port12.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 12, Keyboard (US): End -ss.input.port12.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 12, Keyboard (US): Enter -ss.input.port12.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 12, Keyboard (US): Equals = -ss.input.port12.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 12, Keyboard (US): Escape -ss.input.port12.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 12, Keyboard (US): F -ss.input.port12.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 12, Keyboard (US): F1 -ss.input.port12.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 12, Keyboard (US): F10 -ss.input.port12.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 12, Keyboard (US): F11 -ss.input.port12.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 12, Keyboard (US): F12 -ss.input.port12.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 12, Keyboard (US): F2 -ss.input.port12.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 12, Keyboard (US): F3 -ss.input.port12.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 12, Keyboard (US): F4 -ss.input.port12.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 12, Keyboard (US): F5 -ss.input.port12.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 12, Keyboard (US): F6 -ss.input.port12.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 12, Keyboard (US): F7 -ss.input.port12.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 12, Keyboard (US): F8 -ss.input.port12.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 12, Keyboard (US): F9 -ss.input.port12.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 12, Keyboard (US): G -ss.input.port12.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 12, Keyboard (US): Grave ` -ss.input.port12.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 12, Keyboard (US): H -ss.input.port12.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 12, Keyboard (US): Home -ss.input.port12.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 12, Keyboard (US): I -ss.input.port12.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 12, Keyboard (US): Insert -ss.input.port12.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 12, Keyboard (US): J -ss.input.port12.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 12, Keyboard (US): K -ss.input.port12.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 12, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port12.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 12, Keyboard (US): Keypad Center/5 -ss.input.port12.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 12, Keyboard (US): Keypad Delete -ss.input.port12.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 12, Keyboard (US): Keypad Down/2 -ss.input.port12.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 12, Keyboard (US): Keypad End/1 -ss.input.port12.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 12, Keyboard (US): Keypad Enter -ss.input.port12.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 12, Keyboard (US): Keypad Home/7 -ss.input.port12.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 12, Keyboard (US): Keypad Insert/0 -ss.input.port12.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 12, Keyboard (US): Keypad Left/4 -ss.input.port12.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 12, Keyboard (US): Keypad Minus -ss.input.port12.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 12, Keyboard (US): Keypad Pagedown/3 -ss.input.port12.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 12, Keyboard (US): Keypad Pageup/9 -ss.input.port12.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 12, Keyboard (US): Keypad Plus -ss.input.port12.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 12, Keyboard (US): Keypad Right/6 -ss.input.port12.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 12, Keyboard (US): Keypad Slash(Divide) -ss.input.port12.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 12, Keyboard (US): Keypad Up/8 -ss.input.port12.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 12, Keyboard (US): L -ss.input.port12.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 12, Keyboard (US): Left Alt -ss.input.port12.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 12, Keyboard (US): Left Ctrl -ss.input.port12.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 12, Keyboard (US): Cursor Left -ss.input.port12.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 12, Keyboard (US): Left Bracket [ -ss.input.port12.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 12, Keyboard (US): Left Shift -ss.input.port12.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 12, Keyboard (US): M -ss.input.port12.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 12, Keyboard (US): Minus - -ss.input.port12.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 12, Keyboard (US): N -ss.input.port12.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 12, Keyboard (US): Num Lock -ss.input.port12.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 12, Keyboard (US): O -ss.input.port12.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 12, Keyboard (US): P -ss.input.port12.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 12, Keyboard (US): Page Down -ss.input.port12.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 12, Keyboard (US): Page Up -ss.input.port12.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 12, Keyboard (US): Pause -ss.input.port12.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 12, Keyboard (US): Period . -ss.input.port12.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 12, Keyboard (US): Print Screen -ss.input.port12.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 12, Keyboard (US): Q -ss.input.port12.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 12, Keyboard (US): Quote ' -ss.input.port12.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 12, Keyboard (US): R -ss.input.port12.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 12, Keyboard (US): Right Alt -ss.input.port12.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 12, Keyboard (US): Right Ctrl -ss.input.port12.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 12, Keyboard (US): Right -ss.input.port12.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 12, Keyboard (US): Right Bracket ] -ss.input.port12.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 12, Keyboard (US): Right Shift -ss.input.port12.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 12, Keyboard (US): S -ss.input.port12.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 12, Keyboard (US): Scroll Lock -ss.input.port12.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 12, Keyboard (US): Semicolon ; -ss.input.port12.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 12, Keyboard (US): Slash / -ss.input.port12.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 12, Keyboard (US): Space -ss.input.port12.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 12, Keyboard (US): T -ss.input.port12.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 12, Keyboard (US): Tab -ss.input.port12.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 12, Keyboard (US): U -ss.input.port12.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 12, Keyboard (US): Up -ss.input.port12.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 12, Keyboard (US): V -ss.input.port12.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 12, Keyboard (US): W -ss.input.port12.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 12, Keyboard (US): X -ss.input.port12.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 12, Keyboard (US): Y -ss.input.port12.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 12, Keyboard (US): Z -ss.input.port12.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 12, Mission Stick: A (Stick Trigger) -ss.input.port12.mission.a - -;ss, Virtual Port 12, Mission Stick: A AF -ss.input.port12.mission.afa - -;Default position for switch "A AF". -ss.input.port12.mission.afa.defpos off - -;ss, Virtual Port 12, Mission Stick: B AF -ss.input.port12.mission.afb - -;Default position for switch "B AF". -ss.input.port12.mission.afb.defpos off - -;ss, Virtual Port 12, Mission Stick: C AF -ss.input.port12.mission.afc - -;Default position for switch "C AF". -ss.input.port12.mission.afc.defpos off - -;ss, Virtual Port 12, Mission Stick: L AF -ss.input.port12.mission.afl - -;Default position for switch "L AF". -ss.input.port12.mission.afl.defpos off - -;ss, Virtual Port 12, Mission Stick: R AF -ss.input.port12.mission.afr - -;Default position for switch "R AF". -ss.input.port12.mission.afr.defpos off - -;ss, Virtual Port 12, Mission Stick: AF Speed -ss.input.port12.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port12.mission.afspeed.defpos 1 - -;ss, Virtual Port 12, Mission Stick: X AF -ss.input.port12.mission.afx - -;Default position for switch "X AF". -ss.input.port12.mission.afx.defpos off - -;ss, Virtual Port 12, Mission Stick: Y AF -ss.input.port12.mission.afy - -;Default position for switch "Y AF". -ss.input.port12.mission.afy.defpos off - -;ss, Virtual Port 12, Mission Stick: Z AF -ss.input.port12.mission.afz - -;Default position for switch "Z AF". -ss.input.port12.mission.afz.defpos off - -;ss, Virtual Port 12, Mission Stick: B (Stick Left Button) -ss.input.port12.mission.b - -;ss, Virtual Port 12, Mission Stick: C (Stick Right Button) -ss.input.port12.mission.c - -;ss, Virtual Port 12, Mission Stick: L -ss.input.port12.mission.l - -;ss, Virtual Port 12, Mission Stick: R -ss.input.port12.mission.r - -;ss, Virtual Port 12, Mission Stick: START -ss.input.port12.mission.start - -;ss, Virtual Port 12, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port12.mission.stick_back - -;ss, Virtual Port 12, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port12.mission.stick_fore - -;ss, Virtual Port 12, Mission Stick: Stick LEFT ← (Analog) -ss.input.port12.mission.stick_left - -;ss, Virtual Port 12, Mission Stick: Stick RIGHT → (Analog) -ss.input.port12.mission.stick_right - -;ss, Virtual Port 12, Mission Stick: Throttle Down (Analog) -ss.input.port12.mission.throttle_down - -;ss, Virtual Port 12, Mission Stick: Throttle Up (Analog) -ss.input.port12.mission.throttle_up - -;ss, Virtual Port 12, Mission Stick: X -ss.input.port12.mission.x - -;ss, Virtual Port 12, Mission Stick: Y -ss.input.port12.mission.y - -;ss, Virtual Port 12, Mission Stick: Z -ss.input.port12.mission.z - -;ss, Virtual Port 12, Mouse: Left Button -ss.input.port12.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 12, Mouse: Middle Button -ss.input.port12.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 12, Mouse: Motion Down -ss.input.port12.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 12, Mouse: Motion Left -ss.input.port12.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 12, Mouse: Motion Right -ss.input.port12.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 12, Mouse: Motion Up -ss.input.port12.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 12, Mouse: Right Button -ss.input.port12.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 12, Mouse: Start -ss.input.port12.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 12, Steering Wheel: A (R Group) -ss.input.port12.wheel.a - -;ss, Virtual Port 12, Steering Wheel: Analog LEFT ← -ss.input.port12.wheel.analog_left - -;ss, Virtual Port 12, Steering Wheel: Analog RIGHT → -ss.input.port12.wheel.analog_right - -;ss, Virtual Port 12, Steering Wheel: B (R Group) -ss.input.port12.wheel.b - -;ss, Virtual Port 12, Steering Wheel: C (R Group) -ss.input.port12.wheel.c - -;ss, Virtual Port 12, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port12.wheel.down - -;ss, Virtual Port 12, Steering Wheel: START -ss.input.port12.wheel.start - -;ss, Virtual Port 12, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port12.wheel.up - -;ss, Virtual Port 12, Steering Wheel: X (L Group) -ss.input.port12.wheel.x - -;ss, Virtual Port 12, Steering Wheel: Y (L Group) -ss.input.port12.wheel.y - -;ss, Virtual Port 12, Steering Wheel: Z (L Group) -ss.input.port12.wheel.z - -;Input device for Virtual Port 2 -ss.input.port2 gamepad - -;ss, Virtual Port 2, 3D Control Pad: A -ss.input.port2.3dpad.a - -;ss, Virtual Port 2, 3D Control Pad: Analog DOWN ↓ -ss.input.port2.3dpad.analog_down - -;ss, Virtual Port 2, 3D Control Pad: Analog LEFT ← -ss.input.port2.3dpad.analog_left - -;ss, Virtual Port 2, 3D Control Pad: Analog RIGHT → -ss.input.port2.3dpad.analog_right - -;ss, Virtual Port 2, 3D Control Pad: Analog UP ↑ -ss.input.port2.3dpad.analog_up - -;ss, Virtual Port 2, 3D Control Pad: B -ss.input.port2.3dpad.b - -;ss, Virtual Port 2, 3D Control Pad: C -ss.input.port2.3dpad.c - -;ss, Virtual Port 2, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port2.3dpad.down - -;ss, Virtual Port 2, 3D Control Pad: D-Pad LEFT ← -ss.input.port2.3dpad.left - -;ss, Virtual Port 2, 3D Control Pad: Left Shoulder (Analog) -ss.input.port2.3dpad.ls - -;ss, Virtual Port 2, 3D Control Pad: Mode -ss.input.port2.3dpad.mode - -;Default position for switch "Mode". -ss.input.port2.3dpad.mode.defpos digital - -;ss, Virtual Port 2, 3D Control Pad: D-Pad RIGHT → -ss.input.port2.3dpad.right - -;ss, Virtual Port 2, 3D Control Pad: Right Shoulder (Analog) -ss.input.port2.3dpad.rs - -;ss, Virtual Port 2, 3D Control Pad: START -ss.input.port2.3dpad.start - -;ss, Virtual Port 2, 3D Control Pad: D-Pad UP ↑ -ss.input.port2.3dpad.up - -;ss, Virtual Port 2, 3D Control Pad: X -ss.input.port2.3dpad.x - -;ss, Virtual Port 2, 3D Control Pad: Y -ss.input.port2.3dpad.y - -;ss, Virtual Port 2, 3D Control Pad: Z -ss.input.port2.3dpad.z - -;ss, Virtual Port 2, Dual Mission: A (R Stick Trigger) -ss.input.port2.dmission.a - -;ss, Virtual Port 2, Dual Mission: A AF -ss.input.port2.dmission.afa - -;Default position for switch "A AF". -ss.input.port2.dmission.afa.defpos off - -;ss, Virtual Port 2, Dual Mission: B AF -ss.input.port2.dmission.afb - -;Default position for switch "B AF". -ss.input.port2.dmission.afb.defpos off - -;ss, Virtual Port 2, Dual Mission: C AF -ss.input.port2.dmission.afc - -;Default position for switch "C AF". -ss.input.port2.dmission.afc.defpos off - -;ss, Virtual Port 2, Dual Mission: L AF -ss.input.port2.dmission.afl - -;Default position for switch "L AF". -ss.input.port2.dmission.afl.defpos off - -;ss, Virtual Port 2, Dual Mission: R AF -ss.input.port2.dmission.afr - -;Default position for switch "R AF". -ss.input.port2.dmission.afr.defpos off - -;ss, Virtual Port 2, Dual Mission: Autofire Speed -ss.input.port2.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port2.dmission.afspeed.defpos 1 - -;ss, Virtual Port 2, Dual Mission: X AF -ss.input.port2.dmission.afx - -;Default position for switch "X AF". -ss.input.port2.dmission.afx.defpos off - -;ss, Virtual Port 2, Dual Mission: Y AF -ss.input.port2.dmission.afy - -;Default position for switch "Y AF". -ss.input.port2.dmission.afy.defpos off - -;ss, Virtual Port 2, Dual Mission: Z AF -ss.input.port2.dmission.afz - -;Default position for switch "Z AF". -ss.input.port2.dmission.afz.defpos off - -;ss, Virtual Port 2, Dual Mission: B (R Stick Left Button) -ss.input.port2.dmission.b - -;ss, Virtual Port 2, Dual Mission: C (R Stick Right Button) -ss.input.port2.dmission.c - -;ss, Virtual Port 2, Dual Mission: L -ss.input.port2.dmission.l - -;ss, Virtual Port 2, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port2.dmission.lstick_back - -;ss, Virtual Port 2, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port2.dmission.lstick_fore - -;ss, Virtual Port 2, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port2.dmission.lstick_left - -;ss, Virtual Port 2, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port2.dmission.lstick_right - -;ss, Virtual Port 2, Dual Mission: L Throttle Down (Analog) -ss.input.port2.dmission.lthrottle_down - -;ss, Virtual Port 2, Dual Mission: L Throttle Up (Analog) -ss.input.port2.dmission.lthrottle_up - -;ss, Virtual Port 2, Dual Mission: R -ss.input.port2.dmission.r - -;ss, Virtual Port 2, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port2.dmission.rstick_back - -;ss, Virtual Port 2, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port2.dmission.rstick_fore - -;ss, Virtual Port 2, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port2.dmission.rstick_left - -;ss, Virtual Port 2, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port2.dmission.rstick_right - -;ss, Virtual Port 2, Dual Mission: R Throttle Down (Analog) -ss.input.port2.dmission.rthrottle_down - -;ss, Virtual Port 2, Dual Mission: R Throttle Up (Analog) -ss.input.port2.dmission.rthrottle_up - -;ss, Virtual Port 2, Dual Mission: START -ss.input.port2.dmission.start - -;ss, Virtual Port 2, Dual Mission: X (L Stick Trigger) -ss.input.port2.dmission.x - -;ss, Virtual Port 2, Dual Mission: Y (L Stick Left Button) -ss.input.port2.dmission.y - -;ss, Virtual Port 2, Dual Mission: Z (L Stick Right Button) -ss.input.port2.dmission.z - -;ss, Virtual Port 2, Digital Gamepad: A -ss.input.port2.gamepad.a - -;ss, Virtual Port 2, Digital Gamepad: B -ss.input.port2.gamepad.b - -;ss, Virtual Port 2, Digital Gamepad: C -ss.input.port2.gamepad.c - -;ss, Virtual Port 2, Digital Gamepad: DOWN ↓ -ss.input.port2.gamepad.down - -;ss, Virtual Port 2, Digital Gamepad: LEFT ← -ss.input.port2.gamepad.left - -;ss, Virtual Port 2, Digital Gamepad: Left Shoulder -ss.input.port2.gamepad.ls - -;ss, Virtual Port 2, Digital Gamepad: RIGHT → -ss.input.port2.gamepad.right - -;ss, Virtual Port 2, Digital Gamepad: Right Shoulder -ss.input.port2.gamepad.rs - -;ss, Virtual Port 2, Digital Gamepad: START -ss.input.port2.gamepad.start - -;ss, Virtual Port 2, Digital Gamepad: UP ↑ -ss.input.port2.gamepad.up - -;ss, Virtual Port 2, Digital Gamepad: X -ss.input.port2.gamepad.x - -;ss, Virtual Port 2, Digital Gamepad: Y -ss.input.port2.gamepad.y - -;ss, Virtual Port 2, Digital Gamepad: Z -ss.input.port2.gamepad.z - -;ss, Virtual Port 2, Light Gun: Offscreen Shot(Simulated) -ss.input.port2.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 2, Light Gun: START -ss.input.port2.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 2, Light Gun: Trigger -ss.input.port2.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 2, Light Gun: X Axis -ss.input.port2.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 2, Light Gun: Y Axis -ss.input.port2.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 2. -ss.input.port2.gun_chairs 0x00FF00 - -;ss, Virtual Port 2, Keyboard (JP): 0(Zero) -ss.input.port2.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 2, Keyboard (JP): 1(One) -ss.input.port2.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 2, Keyboard (JP): 2 -ss.input.port2.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 2, Keyboard (JP): 3 -ss.input.port2.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 2, Keyboard (JP): 4 -ss.input.port2.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 2, Keyboard (JP): 5 -ss.input.port2.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 2, Keyboard (JP): 6 -ss.input.port2.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 2, Keyboard (JP): 7 -ss.input.port2.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 2, Keyboard (JP): 8 -ss.input.port2.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 2, Keyboard (JP): 9 -ss.input.port2.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 2, Keyboard (JP): A -ss.input.port2.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 2, Keyboard (JP): At @ -ss.input.port2.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 2, Keyboard (JP): B -ss.input.port2.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 2, Keyboard (JP): Backslash \ -ss.input.port2.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 2, Keyboard (JP): Backspace -ss.input.port2.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 2, Keyboard (JP): C -ss.input.port2.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 2, Keyboard (JP): Caps Lock/英数 -ss.input.port2.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 2, Keyboard (JP): Circumflex ^ -ss.input.port2.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 2, Keyboard (JP): Colon : -ss.input.port2.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 2, Keyboard (JP): Comma , -ss.input.port2.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 2, Keyboard (JP): 変換 -ss.input.port2.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 2, Keyboard (JP): D -ss.input.port2.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 2, Keyboard (JP): Delete -ss.input.port2.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 2, Keyboard (JP): Down -ss.input.port2.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 2, Keyboard (JP): E -ss.input.port2.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 2, Keyboard (JP): End -ss.input.port2.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 2, Keyboard (JP): Enter -ss.input.port2.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 2, Keyboard (JP): Escape -ss.input.port2.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 2, Keyboard (JP): F -ss.input.port2.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 2, Keyboard (JP): F1 -ss.input.port2.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 2, Keyboard (JP): F10 -ss.input.port2.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 2, Keyboard (JP): F11 -ss.input.port2.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 2, Keyboard (JP): F12 -ss.input.port2.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 2, Keyboard (JP): F2 -ss.input.port2.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 2, Keyboard (JP): F3 -ss.input.port2.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 2, Keyboard (JP): F4 -ss.input.port2.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 2, Keyboard (JP): F5 -ss.input.port2.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 2, Keyboard (JP): F6 -ss.input.port2.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 2, Keyboard (JP): F7 -ss.input.port2.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 2, Keyboard (JP): F8 -ss.input.port2.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 2, Keyboard (JP): F9 -ss.input.port2.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 2, Keyboard (JP): G -ss.input.port2.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 2, Keyboard (JP): H -ss.input.port2.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 2, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port2.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 2, Keyboard (JP): Home -ss.input.port2.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 2, Keyboard (JP): 半角/全角/漢字 -ss.input.port2.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 2, Keyboard (JP): I -ss.input.port2.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 2, Keyboard (JP): Insert -ss.input.port2.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 2, Keyboard (JP): J -ss.input.port2.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 2, Keyboard (JP): K -ss.input.port2.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 2, Keyboard (JP): L -ss.input.port2.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 2, Keyboard (JP): Left Alt -ss.input.port2.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 2, Keyboard (JP): Left Ctrl -ss.input.port2.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 2, Keyboard (JP): Cursor Left -ss.input.port2.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 2, Keyboard (JP): Left Bracket [ -ss.input.port2.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 2, Keyboard (JP): Left Shift -ss.input.port2.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 2, Keyboard (JP): M -ss.input.port2.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 2, Keyboard (JP): Minus - -ss.input.port2.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 2, Keyboard (JP): N -ss.input.port2.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 2, Keyboard (JP): 無変換 -ss.input.port2.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 2, Keyboard (JP): O -ss.input.port2.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 2, Keyboard (JP): P -ss.input.port2.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 2, Keyboard (JP): Page Down -ss.input.port2.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 2, Keyboard (JP): Page Up -ss.input.port2.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 2, Keyboard (JP): Pause -ss.input.port2.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 2, Keyboard (JP): Period . -ss.input.port2.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 2, Keyboard (JP): Print Screen -ss.input.port2.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 2, Keyboard (JP): Q -ss.input.port2.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 2, Keyboard (JP): R -ss.input.port2.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 2, Keyboard (JP): Right Alt -ss.input.port2.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 2, Keyboard (JP): Right Ctrl -ss.input.port2.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 2, Keyboard (JP): Right -ss.input.port2.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 2, Keyboard (JP): Right Bracket ] -ss.input.port2.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 2, Keyboard (JP): Right Shift -ss.input.port2.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 2, Keyboard (JP): S -ss.input.port2.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 2, Keyboard (JP): Scroll Lock -ss.input.port2.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 2, Keyboard (JP): Semicolon ; -ss.input.port2.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 2, Keyboard (JP): Slash / -ss.input.port2.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 2, Keyboard (JP): Space -ss.input.port2.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 2, Keyboard (JP): T -ss.input.port2.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 2, Keyboard (JP): Tab -ss.input.port2.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 2, Keyboard (JP): U -ss.input.port2.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 2, Keyboard (JP): Up -ss.input.port2.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 2, Keyboard (JP): V -ss.input.port2.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 2, Keyboard (JP): W -ss.input.port2.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 2, Keyboard (JP): X -ss.input.port2.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 2, Keyboard (JP): Y -ss.input.port2.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 2, Keyboard (JP): Yen ¥ -ss.input.port2.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 2, Keyboard (JP): Z -ss.input.port2.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 2, Keyboard (US): 0(Zero) -ss.input.port2.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 2, Keyboard (US): 1(One) -ss.input.port2.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 2, Keyboard (US): 2 -ss.input.port2.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 2, Keyboard (US): 3 -ss.input.port2.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 2, Keyboard (US): 4 -ss.input.port2.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 2, Keyboard (US): 5 -ss.input.port2.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 2, Keyboard (US): 6 -ss.input.port2.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 2, Keyboard (US): 7 -ss.input.port2.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 2, Keyboard (US): 8 -ss.input.port2.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 2, Keyboard (US): 9 -ss.input.port2.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 2, Keyboard (US): A -ss.input.port2.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 2, Keyboard (US): B -ss.input.port2.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 2, Keyboard (US): Backslash \ -ss.input.port2.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 2, Keyboard (US): Backspace -ss.input.port2.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 2, Keyboard (US): C -ss.input.port2.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 2, Keyboard (US): Caps Lock -ss.input.port2.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 2, Keyboard (US): Comma , -ss.input.port2.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 2, Keyboard (US): D -ss.input.port2.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 2, Keyboard (US): Delete -ss.input.port2.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 2, Keyboard (US): Down -ss.input.port2.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 2, Keyboard (US): E -ss.input.port2.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 2, Keyboard (US): End -ss.input.port2.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 2, Keyboard (US): Enter -ss.input.port2.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 2, Keyboard (US): Equals = -ss.input.port2.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 2, Keyboard (US): Escape -ss.input.port2.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 2, Keyboard (US): F -ss.input.port2.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 2, Keyboard (US): F1 -ss.input.port2.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 2, Keyboard (US): F10 -ss.input.port2.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 2, Keyboard (US): F11 -ss.input.port2.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 2, Keyboard (US): F12 -ss.input.port2.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 2, Keyboard (US): F2 -ss.input.port2.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 2, Keyboard (US): F3 -ss.input.port2.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 2, Keyboard (US): F4 -ss.input.port2.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 2, Keyboard (US): F5 -ss.input.port2.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 2, Keyboard (US): F6 -ss.input.port2.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 2, Keyboard (US): F7 -ss.input.port2.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 2, Keyboard (US): F8 -ss.input.port2.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 2, Keyboard (US): F9 -ss.input.port2.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 2, Keyboard (US): G -ss.input.port2.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 2, Keyboard (US): Grave ` -ss.input.port2.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 2, Keyboard (US): H -ss.input.port2.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 2, Keyboard (US): Home -ss.input.port2.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 2, Keyboard (US): I -ss.input.port2.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 2, Keyboard (US): Insert -ss.input.port2.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 2, Keyboard (US): J -ss.input.port2.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 2, Keyboard (US): K -ss.input.port2.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 2, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port2.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 2, Keyboard (US): Keypad Center/5 -ss.input.port2.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 2, Keyboard (US): Keypad Delete -ss.input.port2.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 2, Keyboard (US): Keypad Down/2 -ss.input.port2.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 2, Keyboard (US): Keypad End/1 -ss.input.port2.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 2, Keyboard (US): Keypad Enter -ss.input.port2.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 2, Keyboard (US): Keypad Home/7 -ss.input.port2.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 2, Keyboard (US): Keypad Insert/0 -ss.input.port2.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 2, Keyboard (US): Keypad Left/4 -ss.input.port2.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 2, Keyboard (US): Keypad Minus -ss.input.port2.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 2, Keyboard (US): Keypad Pagedown/3 -ss.input.port2.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 2, Keyboard (US): Keypad Pageup/9 -ss.input.port2.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 2, Keyboard (US): Keypad Plus -ss.input.port2.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 2, Keyboard (US): Keypad Right/6 -ss.input.port2.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 2, Keyboard (US): Keypad Slash(Divide) -ss.input.port2.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 2, Keyboard (US): Keypad Up/8 -ss.input.port2.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 2, Keyboard (US): L -ss.input.port2.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 2, Keyboard (US): Left Alt -ss.input.port2.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 2, Keyboard (US): Left Ctrl -ss.input.port2.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 2, Keyboard (US): Cursor Left -ss.input.port2.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 2, Keyboard (US): Left Bracket [ -ss.input.port2.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 2, Keyboard (US): Left Shift -ss.input.port2.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 2, Keyboard (US): M -ss.input.port2.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 2, Keyboard (US): Minus - -ss.input.port2.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 2, Keyboard (US): N -ss.input.port2.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 2, Keyboard (US): Num Lock -ss.input.port2.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 2, Keyboard (US): O -ss.input.port2.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 2, Keyboard (US): P -ss.input.port2.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 2, Keyboard (US): Page Down -ss.input.port2.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 2, Keyboard (US): Page Up -ss.input.port2.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 2, Keyboard (US): Pause -ss.input.port2.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 2, Keyboard (US): Period . -ss.input.port2.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 2, Keyboard (US): Print Screen -ss.input.port2.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 2, Keyboard (US): Q -ss.input.port2.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 2, Keyboard (US): Quote ' -ss.input.port2.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 2, Keyboard (US): R -ss.input.port2.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 2, Keyboard (US): Right Alt -ss.input.port2.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 2, Keyboard (US): Right Ctrl -ss.input.port2.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 2, Keyboard (US): Right -ss.input.port2.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 2, Keyboard (US): Right Bracket ] -ss.input.port2.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 2, Keyboard (US): Right Shift -ss.input.port2.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 2, Keyboard (US): S -ss.input.port2.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 2, Keyboard (US): Scroll Lock -ss.input.port2.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 2, Keyboard (US): Semicolon ; -ss.input.port2.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 2, Keyboard (US): Slash / -ss.input.port2.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 2, Keyboard (US): Space -ss.input.port2.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 2, Keyboard (US): T -ss.input.port2.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 2, Keyboard (US): Tab -ss.input.port2.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 2, Keyboard (US): U -ss.input.port2.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 2, Keyboard (US): Up -ss.input.port2.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 2, Keyboard (US): V -ss.input.port2.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 2, Keyboard (US): W -ss.input.port2.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 2, Keyboard (US): X -ss.input.port2.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 2, Keyboard (US): Y -ss.input.port2.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 2, Keyboard (US): Z -ss.input.port2.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 2, Mission Stick: A (Stick Trigger) -ss.input.port2.mission.a - -;ss, Virtual Port 2, Mission Stick: A AF -ss.input.port2.mission.afa - -;Default position for switch "A AF". -ss.input.port2.mission.afa.defpos off - -;ss, Virtual Port 2, Mission Stick: B AF -ss.input.port2.mission.afb - -;Default position for switch "B AF". -ss.input.port2.mission.afb.defpos off - -;ss, Virtual Port 2, Mission Stick: C AF -ss.input.port2.mission.afc - -;Default position for switch "C AF". -ss.input.port2.mission.afc.defpos off - -;ss, Virtual Port 2, Mission Stick: L AF -ss.input.port2.mission.afl - -;Default position for switch "L AF". -ss.input.port2.mission.afl.defpos off - -;ss, Virtual Port 2, Mission Stick: R AF -ss.input.port2.mission.afr - -;Default position for switch "R AF". -ss.input.port2.mission.afr.defpos off - -;ss, Virtual Port 2, Mission Stick: AF Speed -ss.input.port2.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port2.mission.afspeed.defpos 1 - -;ss, Virtual Port 2, Mission Stick: X AF -ss.input.port2.mission.afx - -;Default position for switch "X AF". -ss.input.port2.mission.afx.defpos off - -;ss, Virtual Port 2, Mission Stick: Y AF -ss.input.port2.mission.afy - -;Default position for switch "Y AF". -ss.input.port2.mission.afy.defpos off - -;ss, Virtual Port 2, Mission Stick: Z AF -ss.input.port2.mission.afz - -;Default position for switch "Z AF". -ss.input.port2.mission.afz.defpos off - -;ss, Virtual Port 2, Mission Stick: B (Stick Left Button) -ss.input.port2.mission.b - -;ss, Virtual Port 2, Mission Stick: C (Stick Right Button) -ss.input.port2.mission.c - -;ss, Virtual Port 2, Mission Stick: L -ss.input.port2.mission.l - -;ss, Virtual Port 2, Mission Stick: R -ss.input.port2.mission.r - -;ss, Virtual Port 2, Mission Stick: START -ss.input.port2.mission.start - -;ss, Virtual Port 2, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port2.mission.stick_back - -;ss, Virtual Port 2, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port2.mission.stick_fore - -;ss, Virtual Port 2, Mission Stick: Stick LEFT ← (Analog) -ss.input.port2.mission.stick_left - -;ss, Virtual Port 2, Mission Stick: Stick RIGHT → (Analog) -ss.input.port2.mission.stick_right - -;ss, Virtual Port 2, Mission Stick: Throttle Down (Analog) -ss.input.port2.mission.throttle_down - -;ss, Virtual Port 2, Mission Stick: Throttle Up (Analog) -ss.input.port2.mission.throttle_up - -;ss, Virtual Port 2, Mission Stick: X -ss.input.port2.mission.x - -;ss, Virtual Port 2, Mission Stick: Y -ss.input.port2.mission.y - -;ss, Virtual Port 2, Mission Stick: Z -ss.input.port2.mission.z - -;ss, Virtual Port 2, Mouse: Left Button -ss.input.port2.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 2, Mouse: Middle Button -ss.input.port2.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 2, Mouse: Motion Down -ss.input.port2.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 2, Mouse: Motion Left -ss.input.port2.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 2, Mouse: Motion Right -ss.input.port2.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 2, Mouse: Motion Up -ss.input.port2.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 2, Mouse: Right Button -ss.input.port2.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 2, Mouse: Start -ss.input.port2.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 2, Steering Wheel: A (R Group) -ss.input.port2.wheel.a - -;ss, Virtual Port 2, Steering Wheel: Analog LEFT ← -ss.input.port2.wheel.analog_left - -;ss, Virtual Port 2, Steering Wheel: Analog RIGHT → -ss.input.port2.wheel.analog_right - -;ss, Virtual Port 2, Steering Wheel: B (R Group) -ss.input.port2.wheel.b - -;ss, Virtual Port 2, Steering Wheel: C (R Group) -ss.input.port2.wheel.c - -;ss, Virtual Port 2, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port2.wheel.down - -;ss, Virtual Port 2, Steering Wheel: START -ss.input.port2.wheel.start - -;ss, Virtual Port 2, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port2.wheel.up - -;ss, Virtual Port 2, Steering Wheel: X (L Group) -ss.input.port2.wheel.x - -;ss, Virtual Port 2, Steering Wheel: Y (L Group) -ss.input.port2.wheel.y - -;ss, Virtual Port 2, Steering Wheel: Z (L Group) -ss.input.port2.wheel.z - -;Input device for Virtual Port 3 -ss.input.port3 gamepad - -;ss, Virtual Port 3, 3D Control Pad: A -ss.input.port3.3dpad.a - -;ss, Virtual Port 3, 3D Control Pad: Analog DOWN ↓ -ss.input.port3.3dpad.analog_down - -;ss, Virtual Port 3, 3D Control Pad: Analog LEFT ← -ss.input.port3.3dpad.analog_left - -;ss, Virtual Port 3, 3D Control Pad: Analog RIGHT → -ss.input.port3.3dpad.analog_right - -;ss, Virtual Port 3, 3D Control Pad: Analog UP ↑ -ss.input.port3.3dpad.analog_up - -;ss, Virtual Port 3, 3D Control Pad: B -ss.input.port3.3dpad.b - -;ss, Virtual Port 3, 3D Control Pad: C -ss.input.port3.3dpad.c - -;ss, Virtual Port 3, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port3.3dpad.down - -;ss, Virtual Port 3, 3D Control Pad: D-Pad LEFT ← -ss.input.port3.3dpad.left - -;ss, Virtual Port 3, 3D Control Pad: Left Shoulder (Analog) -ss.input.port3.3dpad.ls - -;ss, Virtual Port 3, 3D Control Pad: Mode -ss.input.port3.3dpad.mode - -;Default position for switch "Mode". -ss.input.port3.3dpad.mode.defpos digital - -;ss, Virtual Port 3, 3D Control Pad: D-Pad RIGHT → -ss.input.port3.3dpad.right - -;ss, Virtual Port 3, 3D Control Pad: Right Shoulder (Analog) -ss.input.port3.3dpad.rs - -;ss, Virtual Port 3, 3D Control Pad: START -ss.input.port3.3dpad.start - -;ss, Virtual Port 3, 3D Control Pad: D-Pad UP ↑ -ss.input.port3.3dpad.up - -;ss, Virtual Port 3, 3D Control Pad: X -ss.input.port3.3dpad.x - -;ss, Virtual Port 3, 3D Control Pad: Y -ss.input.port3.3dpad.y - -;ss, Virtual Port 3, 3D Control Pad: Z -ss.input.port3.3dpad.z - -;ss, Virtual Port 3, Dual Mission: A (R Stick Trigger) -ss.input.port3.dmission.a - -;ss, Virtual Port 3, Dual Mission: A AF -ss.input.port3.dmission.afa - -;Default position for switch "A AF". -ss.input.port3.dmission.afa.defpos off - -;ss, Virtual Port 3, Dual Mission: B AF -ss.input.port3.dmission.afb - -;Default position for switch "B AF". -ss.input.port3.dmission.afb.defpos off - -;ss, Virtual Port 3, Dual Mission: C AF -ss.input.port3.dmission.afc - -;Default position for switch "C AF". -ss.input.port3.dmission.afc.defpos off - -;ss, Virtual Port 3, Dual Mission: L AF -ss.input.port3.dmission.afl - -;Default position for switch "L AF". -ss.input.port3.dmission.afl.defpos off - -;ss, Virtual Port 3, Dual Mission: R AF -ss.input.port3.dmission.afr - -;Default position for switch "R AF". -ss.input.port3.dmission.afr.defpos off - -;ss, Virtual Port 3, Dual Mission: Autofire Speed -ss.input.port3.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port3.dmission.afspeed.defpos 1 - -;ss, Virtual Port 3, Dual Mission: X AF -ss.input.port3.dmission.afx - -;Default position for switch "X AF". -ss.input.port3.dmission.afx.defpos off - -;ss, Virtual Port 3, Dual Mission: Y AF -ss.input.port3.dmission.afy - -;Default position for switch "Y AF". -ss.input.port3.dmission.afy.defpos off - -;ss, Virtual Port 3, Dual Mission: Z AF -ss.input.port3.dmission.afz - -;Default position for switch "Z AF". -ss.input.port3.dmission.afz.defpos off - -;ss, Virtual Port 3, Dual Mission: B (R Stick Left Button) -ss.input.port3.dmission.b - -;ss, Virtual Port 3, Dual Mission: C (R Stick Right Button) -ss.input.port3.dmission.c - -;ss, Virtual Port 3, Dual Mission: L -ss.input.port3.dmission.l - -;ss, Virtual Port 3, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port3.dmission.lstick_back - -;ss, Virtual Port 3, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port3.dmission.lstick_fore - -;ss, Virtual Port 3, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port3.dmission.lstick_left - -;ss, Virtual Port 3, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port3.dmission.lstick_right - -;ss, Virtual Port 3, Dual Mission: L Throttle Down (Analog) -ss.input.port3.dmission.lthrottle_down - -;ss, Virtual Port 3, Dual Mission: L Throttle Up (Analog) -ss.input.port3.dmission.lthrottle_up - -;ss, Virtual Port 3, Dual Mission: R -ss.input.port3.dmission.r - -;ss, Virtual Port 3, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port3.dmission.rstick_back - -;ss, Virtual Port 3, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port3.dmission.rstick_fore - -;ss, Virtual Port 3, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port3.dmission.rstick_left - -;ss, Virtual Port 3, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port3.dmission.rstick_right - -;ss, Virtual Port 3, Dual Mission: R Throttle Down (Analog) -ss.input.port3.dmission.rthrottle_down - -;ss, Virtual Port 3, Dual Mission: R Throttle Up (Analog) -ss.input.port3.dmission.rthrottle_up - -;ss, Virtual Port 3, Dual Mission: START -ss.input.port3.dmission.start - -;ss, Virtual Port 3, Dual Mission: X (L Stick Trigger) -ss.input.port3.dmission.x - -;ss, Virtual Port 3, Dual Mission: Y (L Stick Left Button) -ss.input.port3.dmission.y - -;ss, Virtual Port 3, Dual Mission: Z (L Stick Right Button) -ss.input.port3.dmission.z - -;ss, Virtual Port 3, Digital Gamepad: A -ss.input.port3.gamepad.a - -;ss, Virtual Port 3, Digital Gamepad: B -ss.input.port3.gamepad.b - -;ss, Virtual Port 3, Digital Gamepad: C -ss.input.port3.gamepad.c - -;ss, Virtual Port 3, Digital Gamepad: DOWN ↓ -ss.input.port3.gamepad.down - -;ss, Virtual Port 3, Digital Gamepad: LEFT ← -ss.input.port3.gamepad.left - -;ss, Virtual Port 3, Digital Gamepad: Left Shoulder -ss.input.port3.gamepad.ls - -;ss, Virtual Port 3, Digital Gamepad: RIGHT → -ss.input.port3.gamepad.right - -;ss, Virtual Port 3, Digital Gamepad: Right Shoulder -ss.input.port3.gamepad.rs - -;ss, Virtual Port 3, Digital Gamepad: START -ss.input.port3.gamepad.start - -;ss, Virtual Port 3, Digital Gamepad: UP ↑ -ss.input.port3.gamepad.up - -;ss, Virtual Port 3, Digital Gamepad: X -ss.input.port3.gamepad.x - -;ss, Virtual Port 3, Digital Gamepad: Y -ss.input.port3.gamepad.y - -;ss, Virtual Port 3, Digital Gamepad: Z -ss.input.port3.gamepad.z - -;ss, Virtual Port 3, Light Gun: Offscreen Shot(Simulated) -ss.input.port3.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 3, Light Gun: START -ss.input.port3.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 3, Light Gun: Trigger -ss.input.port3.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 3, Light Gun: X Axis -ss.input.port3.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 3, Light Gun: Y Axis -ss.input.port3.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 3. -ss.input.port3.gun_chairs 0xFF00FF - -;ss, Virtual Port 3, Keyboard (JP): 0(Zero) -ss.input.port3.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 3, Keyboard (JP): 1(One) -ss.input.port3.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 3, Keyboard (JP): 2 -ss.input.port3.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 3, Keyboard (JP): 3 -ss.input.port3.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 3, Keyboard (JP): 4 -ss.input.port3.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 3, Keyboard (JP): 5 -ss.input.port3.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 3, Keyboard (JP): 6 -ss.input.port3.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 3, Keyboard (JP): 7 -ss.input.port3.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 3, Keyboard (JP): 8 -ss.input.port3.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 3, Keyboard (JP): 9 -ss.input.port3.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 3, Keyboard (JP): A -ss.input.port3.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 3, Keyboard (JP): At @ -ss.input.port3.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 3, Keyboard (JP): B -ss.input.port3.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 3, Keyboard (JP): Backslash \ -ss.input.port3.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 3, Keyboard (JP): Backspace -ss.input.port3.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 3, Keyboard (JP): C -ss.input.port3.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 3, Keyboard (JP): Caps Lock/英数 -ss.input.port3.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 3, Keyboard (JP): Circumflex ^ -ss.input.port3.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 3, Keyboard (JP): Colon : -ss.input.port3.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 3, Keyboard (JP): Comma , -ss.input.port3.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 3, Keyboard (JP): 変換 -ss.input.port3.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 3, Keyboard (JP): D -ss.input.port3.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 3, Keyboard (JP): Delete -ss.input.port3.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 3, Keyboard (JP): Down -ss.input.port3.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 3, Keyboard (JP): E -ss.input.port3.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 3, Keyboard (JP): End -ss.input.port3.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 3, Keyboard (JP): Enter -ss.input.port3.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 3, Keyboard (JP): Escape -ss.input.port3.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 3, Keyboard (JP): F -ss.input.port3.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 3, Keyboard (JP): F1 -ss.input.port3.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 3, Keyboard (JP): F10 -ss.input.port3.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 3, Keyboard (JP): F11 -ss.input.port3.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 3, Keyboard (JP): F12 -ss.input.port3.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 3, Keyboard (JP): F2 -ss.input.port3.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 3, Keyboard (JP): F3 -ss.input.port3.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 3, Keyboard (JP): F4 -ss.input.port3.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 3, Keyboard (JP): F5 -ss.input.port3.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 3, Keyboard (JP): F6 -ss.input.port3.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 3, Keyboard (JP): F7 -ss.input.port3.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 3, Keyboard (JP): F8 -ss.input.port3.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 3, Keyboard (JP): F9 -ss.input.port3.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 3, Keyboard (JP): G -ss.input.port3.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 3, Keyboard (JP): H -ss.input.port3.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 3, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port3.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 3, Keyboard (JP): Home -ss.input.port3.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 3, Keyboard (JP): 半角/全角/漢字 -ss.input.port3.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 3, Keyboard (JP): I -ss.input.port3.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 3, Keyboard (JP): Insert -ss.input.port3.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 3, Keyboard (JP): J -ss.input.port3.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 3, Keyboard (JP): K -ss.input.port3.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 3, Keyboard (JP): L -ss.input.port3.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 3, Keyboard (JP): Left Alt -ss.input.port3.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 3, Keyboard (JP): Left Ctrl -ss.input.port3.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 3, Keyboard (JP): Cursor Left -ss.input.port3.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 3, Keyboard (JP): Left Bracket [ -ss.input.port3.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 3, Keyboard (JP): Left Shift -ss.input.port3.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 3, Keyboard (JP): M -ss.input.port3.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 3, Keyboard (JP): Minus - -ss.input.port3.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 3, Keyboard (JP): N -ss.input.port3.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 3, Keyboard (JP): 無変換 -ss.input.port3.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 3, Keyboard (JP): O -ss.input.port3.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 3, Keyboard (JP): P -ss.input.port3.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 3, Keyboard (JP): Page Down -ss.input.port3.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 3, Keyboard (JP): Page Up -ss.input.port3.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 3, Keyboard (JP): Pause -ss.input.port3.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 3, Keyboard (JP): Period . -ss.input.port3.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 3, Keyboard (JP): Print Screen -ss.input.port3.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 3, Keyboard (JP): Q -ss.input.port3.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 3, Keyboard (JP): R -ss.input.port3.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 3, Keyboard (JP): Right Alt -ss.input.port3.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 3, Keyboard (JP): Right Ctrl -ss.input.port3.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 3, Keyboard (JP): Right -ss.input.port3.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 3, Keyboard (JP): Right Bracket ] -ss.input.port3.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 3, Keyboard (JP): Right Shift -ss.input.port3.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 3, Keyboard (JP): S -ss.input.port3.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 3, Keyboard (JP): Scroll Lock -ss.input.port3.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 3, Keyboard (JP): Semicolon ; -ss.input.port3.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 3, Keyboard (JP): Slash / -ss.input.port3.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 3, Keyboard (JP): Space -ss.input.port3.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 3, Keyboard (JP): T -ss.input.port3.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 3, Keyboard (JP): Tab -ss.input.port3.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 3, Keyboard (JP): U -ss.input.port3.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 3, Keyboard (JP): Up -ss.input.port3.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 3, Keyboard (JP): V -ss.input.port3.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 3, Keyboard (JP): W -ss.input.port3.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 3, Keyboard (JP): X -ss.input.port3.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 3, Keyboard (JP): Y -ss.input.port3.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 3, Keyboard (JP): Yen ¥ -ss.input.port3.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 3, Keyboard (JP): Z -ss.input.port3.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 3, Keyboard (US): 0(Zero) -ss.input.port3.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 3, Keyboard (US): 1(One) -ss.input.port3.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 3, Keyboard (US): 2 -ss.input.port3.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 3, Keyboard (US): 3 -ss.input.port3.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 3, Keyboard (US): 4 -ss.input.port3.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 3, Keyboard (US): 5 -ss.input.port3.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 3, Keyboard (US): 6 -ss.input.port3.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 3, Keyboard (US): 7 -ss.input.port3.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 3, Keyboard (US): 8 -ss.input.port3.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 3, Keyboard (US): 9 -ss.input.port3.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 3, Keyboard (US): A -ss.input.port3.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 3, Keyboard (US): B -ss.input.port3.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 3, Keyboard (US): Backslash \ -ss.input.port3.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 3, Keyboard (US): Backspace -ss.input.port3.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 3, Keyboard (US): C -ss.input.port3.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 3, Keyboard (US): Caps Lock -ss.input.port3.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 3, Keyboard (US): Comma , -ss.input.port3.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 3, Keyboard (US): D -ss.input.port3.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 3, Keyboard (US): Delete -ss.input.port3.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 3, Keyboard (US): Down -ss.input.port3.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 3, Keyboard (US): E -ss.input.port3.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 3, Keyboard (US): End -ss.input.port3.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 3, Keyboard (US): Enter -ss.input.port3.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 3, Keyboard (US): Equals = -ss.input.port3.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 3, Keyboard (US): Escape -ss.input.port3.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 3, Keyboard (US): F -ss.input.port3.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 3, Keyboard (US): F1 -ss.input.port3.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 3, Keyboard (US): F10 -ss.input.port3.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 3, Keyboard (US): F11 -ss.input.port3.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 3, Keyboard (US): F12 -ss.input.port3.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 3, Keyboard (US): F2 -ss.input.port3.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 3, Keyboard (US): F3 -ss.input.port3.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 3, Keyboard (US): F4 -ss.input.port3.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 3, Keyboard (US): F5 -ss.input.port3.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 3, Keyboard (US): F6 -ss.input.port3.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 3, Keyboard (US): F7 -ss.input.port3.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 3, Keyboard (US): F8 -ss.input.port3.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 3, Keyboard (US): F9 -ss.input.port3.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 3, Keyboard (US): G -ss.input.port3.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 3, Keyboard (US): Grave ` -ss.input.port3.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 3, Keyboard (US): H -ss.input.port3.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 3, Keyboard (US): Home -ss.input.port3.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 3, Keyboard (US): I -ss.input.port3.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 3, Keyboard (US): Insert -ss.input.port3.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 3, Keyboard (US): J -ss.input.port3.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 3, Keyboard (US): K -ss.input.port3.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 3, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port3.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 3, Keyboard (US): Keypad Center/5 -ss.input.port3.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 3, Keyboard (US): Keypad Delete -ss.input.port3.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 3, Keyboard (US): Keypad Down/2 -ss.input.port3.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 3, Keyboard (US): Keypad End/1 -ss.input.port3.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 3, Keyboard (US): Keypad Enter -ss.input.port3.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 3, Keyboard (US): Keypad Home/7 -ss.input.port3.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 3, Keyboard (US): Keypad Insert/0 -ss.input.port3.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 3, Keyboard (US): Keypad Left/4 -ss.input.port3.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 3, Keyboard (US): Keypad Minus -ss.input.port3.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 3, Keyboard (US): Keypad Pagedown/3 -ss.input.port3.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 3, Keyboard (US): Keypad Pageup/9 -ss.input.port3.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 3, Keyboard (US): Keypad Plus -ss.input.port3.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 3, Keyboard (US): Keypad Right/6 -ss.input.port3.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 3, Keyboard (US): Keypad Slash(Divide) -ss.input.port3.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 3, Keyboard (US): Keypad Up/8 -ss.input.port3.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 3, Keyboard (US): L -ss.input.port3.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 3, Keyboard (US): Left Alt -ss.input.port3.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 3, Keyboard (US): Left Ctrl -ss.input.port3.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 3, Keyboard (US): Cursor Left -ss.input.port3.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 3, Keyboard (US): Left Bracket [ -ss.input.port3.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 3, Keyboard (US): Left Shift -ss.input.port3.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 3, Keyboard (US): M -ss.input.port3.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 3, Keyboard (US): Minus - -ss.input.port3.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 3, Keyboard (US): N -ss.input.port3.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 3, Keyboard (US): Num Lock -ss.input.port3.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 3, Keyboard (US): O -ss.input.port3.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 3, Keyboard (US): P -ss.input.port3.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 3, Keyboard (US): Page Down -ss.input.port3.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 3, Keyboard (US): Page Up -ss.input.port3.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 3, Keyboard (US): Pause -ss.input.port3.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 3, Keyboard (US): Period . -ss.input.port3.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 3, Keyboard (US): Print Screen -ss.input.port3.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 3, Keyboard (US): Q -ss.input.port3.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 3, Keyboard (US): Quote ' -ss.input.port3.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 3, Keyboard (US): R -ss.input.port3.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 3, Keyboard (US): Right Alt -ss.input.port3.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 3, Keyboard (US): Right Ctrl -ss.input.port3.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 3, Keyboard (US): Right -ss.input.port3.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 3, Keyboard (US): Right Bracket ] -ss.input.port3.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 3, Keyboard (US): Right Shift -ss.input.port3.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 3, Keyboard (US): S -ss.input.port3.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 3, Keyboard (US): Scroll Lock -ss.input.port3.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 3, Keyboard (US): Semicolon ; -ss.input.port3.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 3, Keyboard (US): Slash / -ss.input.port3.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 3, Keyboard (US): Space -ss.input.port3.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 3, Keyboard (US): T -ss.input.port3.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 3, Keyboard (US): Tab -ss.input.port3.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 3, Keyboard (US): U -ss.input.port3.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 3, Keyboard (US): Up -ss.input.port3.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 3, Keyboard (US): V -ss.input.port3.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 3, Keyboard (US): W -ss.input.port3.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 3, Keyboard (US): X -ss.input.port3.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 3, Keyboard (US): Y -ss.input.port3.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 3, Keyboard (US): Z -ss.input.port3.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 3, Mission Stick: A (Stick Trigger) -ss.input.port3.mission.a - -;ss, Virtual Port 3, Mission Stick: A AF -ss.input.port3.mission.afa - -;Default position for switch "A AF". -ss.input.port3.mission.afa.defpos off - -;ss, Virtual Port 3, Mission Stick: B AF -ss.input.port3.mission.afb - -;Default position for switch "B AF". -ss.input.port3.mission.afb.defpos off - -;ss, Virtual Port 3, Mission Stick: C AF -ss.input.port3.mission.afc - -;Default position for switch "C AF". -ss.input.port3.mission.afc.defpos off - -;ss, Virtual Port 3, Mission Stick: L AF -ss.input.port3.mission.afl - -;Default position for switch "L AF". -ss.input.port3.mission.afl.defpos off - -;ss, Virtual Port 3, Mission Stick: R AF -ss.input.port3.mission.afr - -;Default position for switch "R AF". -ss.input.port3.mission.afr.defpos off - -;ss, Virtual Port 3, Mission Stick: AF Speed -ss.input.port3.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port3.mission.afspeed.defpos 1 - -;ss, Virtual Port 3, Mission Stick: X AF -ss.input.port3.mission.afx - -;Default position for switch "X AF". -ss.input.port3.mission.afx.defpos off - -;ss, Virtual Port 3, Mission Stick: Y AF -ss.input.port3.mission.afy - -;Default position for switch "Y AF". -ss.input.port3.mission.afy.defpos off - -;ss, Virtual Port 3, Mission Stick: Z AF -ss.input.port3.mission.afz - -;Default position for switch "Z AF". -ss.input.port3.mission.afz.defpos off - -;ss, Virtual Port 3, Mission Stick: B (Stick Left Button) -ss.input.port3.mission.b - -;ss, Virtual Port 3, Mission Stick: C (Stick Right Button) -ss.input.port3.mission.c - -;ss, Virtual Port 3, Mission Stick: L -ss.input.port3.mission.l - -;ss, Virtual Port 3, Mission Stick: R -ss.input.port3.mission.r - -;ss, Virtual Port 3, Mission Stick: START -ss.input.port3.mission.start - -;ss, Virtual Port 3, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port3.mission.stick_back - -;ss, Virtual Port 3, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port3.mission.stick_fore - -;ss, Virtual Port 3, Mission Stick: Stick LEFT ← (Analog) -ss.input.port3.mission.stick_left - -;ss, Virtual Port 3, Mission Stick: Stick RIGHT → (Analog) -ss.input.port3.mission.stick_right - -;ss, Virtual Port 3, Mission Stick: Throttle Down (Analog) -ss.input.port3.mission.throttle_down - -;ss, Virtual Port 3, Mission Stick: Throttle Up (Analog) -ss.input.port3.mission.throttle_up - -;ss, Virtual Port 3, Mission Stick: X -ss.input.port3.mission.x - -;ss, Virtual Port 3, Mission Stick: Y -ss.input.port3.mission.y - -;ss, Virtual Port 3, Mission Stick: Z -ss.input.port3.mission.z - -;ss, Virtual Port 3, Mouse: Left Button -ss.input.port3.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 3, Mouse: Middle Button -ss.input.port3.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 3, Mouse: Motion Down -ss.input.port3.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 3, Mouse: Motion Left -ss.input.port3.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 3, Mouse: Motion Right -ss.input.port3.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 3, Mouse: Motion Up -ss.input.port3.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 3, Mouse: Right Button -ss.input.port3.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 3, Mouse: Start -ss.input.port3.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 3, Steering Wheel: A (R Group) -ss.input.port3.wheel.a - -;ss, Virtual Port 3, Steering Wheel: Analog LEFT ← -ss.input.port3.wheel.analog_left - -;ss, Virtual Port 3, Steering Wheel: Analog RIGHT → -ss.input.port3.wheel.analog_right - -;ss, Virtual Port 3, Steering Wheel: B (R Group) -ss.input.port3.wheel.b - -;ss, Virtual Port 3, Steering Wheel: C (R Group) -ss.input.port3.wheel.c - -;ss, Virtual Port 3, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port3.wheel.down - -;ss, Virtual Port 3, Steering Wheel: START -ss.input.port3.wheel.start - -;ss, Virtual Port 3, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port3.wheel.up - -;ss, Virtual Port 3, Steering Wheel: X (L Group) -ss.input.port3.wheel.x - -;ss, Virtual Port 3, Steering Wheel: Y (L Group) -ss.input.port3.wheel.y - -;ss, Virtual Port 3, Steering Wheel: Z (L Group) -ss.input.port3.wheel.z - -;Input device for Virtual Port 4 -ss.input.port4 gamepad - -;ss, Virtual Port 4, 3D Control Pad: A -ss.input.port4.3dpad.a - -;ss, Virtual Port 4, 3D Control Pad: Analog DOWN ↓ -ss.input.port4.3dpad.analog_down - -;ss, Virtual Port 4, 3D Control Pad: Analog LEFT ← -ss.input.port4.3dpad.analog_left - -;ss, Virtual Port 4, 3D Control Pad: Analog RIGHT → -ss.input.port4.3dpad.analog_right - -;ss, Virtual Port 4, 3D Control Pad: Analog UP ↑ -ss.input.port4.3dpad.analog_up - -;ss, Virtual Port 4, 3D Control Pad: B -ss.input.port4.3dpad.b - -;ss, Virtual Port 4, 3D Control Pad: C -ss.input.port4.3dpad.c - -;ss, Virtual Port 4, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port4.3dpad.down - -;ss, Virtual Port 4, 3D Control Pad: D-Pad LEFT ← -ss.input.port4.3dpad.left - -;ss, Virtual Port 4, 3D Control Pad: Left Shoulder (Analog) -ss.input.port4.3dpad.ls - -;ss, Virtual Port 4, 3D Control Pad: Mode -ss.input.port4.3dpad.mode - -;Default position for switch "Mode". -ss.input.port4.3dpad.mode.defpos digital - -;ss, Virtual Port 4, 3D Control Pad: D-Pad RIGHT → -ss.input.port4.3dpad.right - -;ss, Virtual Port 4, 3D Control Pad: Right Shoulder (Analog) -ss.input.port4.3dpad.rs - -;ss, Virtual Port 4, 3D Control Pad: START -ss.input.port4.3dpad.start - -;ss, Virtual Port 4, 3D Control Pad: D-Pad UP ↑ -ss.input.port4.3dpad.up - -;ss, Virtual Port 4, 3D Control Pad: X -ss.input.port4.3dpad.x - -;ss, Virtual Port 4, 3D Control Pad: Y -ss.input.port4.3dpad.y - -;ss, Virtual Port 4, 3D Control Pad: Z -ss.input.port4.3dpad.z - -;ss, Virtual Port 4, Dual Mission: A (R Stick Trigger) -ss.input.port4.dmission.a - -;ss, Virtual Port 4, Dual Mission: A AF -ss.input.port4.dmission.afa - -;Default position for switch "A AF". -ss.input.port4.dmission.afa.defpos off - -;ss, Virtual Port 4, Dual Mission: B AF -ss.input.port4.dmission.afb - -;Default position for switch "B AF". -ss.input.port4.dmission.afb.defpos off - -;ss, Virtual Port 4, Dual Mission: C AF -ss.input.port4.dmission.afc - -;Default position for switch "C AF". -ss.input.port4.dmission.afc.defpos off - -;ss, Virtual Port 4, Dual Mission: L AF -ss.input.port4.dmission.afl - -;Default position for switch "L AF". -ss.input.port4.dmission.afl.defpos off - -;ss, Virtual Port 4, Dual Mission: R AF -ss.input.port4.dmission.afr - -;Default position for switch "R AF". -ss.input.port4.dmission.afr.defpos off - -;ss, Virtual Port 4, Dual Mission: Autofire Speed -ss.input.port4.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port4.dmission.afspeed.defpos 1 - -;ss, Virtual Port 4, Dual Mission: X AF -ss.input.port4.dmission.afx - -;Default position for switch "X AF". -ss.input.port4.dmission.afx.defpos off - -;ss, Virtual Port 4, Dual Mission: Y AF -ss.input.port4.dmission.afy - -;Default position for switch "Y AF". -ss.input.port4.dmission.afy.defpos off - -;ss, Virtual Port 4, Dual Mission: Z AF -ss.input.port4.dmission.afz - -;Default position for switch "Z AF". -ss.input.port4.dmission.afz.defpos off - -;ss, Virtual Port 4, Dual Mission: B (R Stick Left Button) -ss.input.port4.dmission.b - -;ss, Virtual Port 4, Dual Mission: C (R Stick Right Button) -ss.input.port4.dmission.c - -;ss, Virtual Port 4, Dual Mission: L -ss.input.port4.dmission.l - -;ss, Virtual Port 4, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port4.dmission.lstick_back - -;ss, Virtual Port 4, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port4.dmission.lstick_fore - -;ss, Virtual Port 4, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port4.dmission.lstick_left - -;ss, Virtual Port 4, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port4.dmission.lstick_right - -;ss, Virtual Port 4, Dual Mission: L Throttle Down (Analog) -ss.input.port4.dmission.lthrottle_down - -;ss, Virtual Port 4, Dual Mission: L Throttle Up (Analog) -ss.input.port4.dmission.lthrottle_up - -;ss, Virtual Port 4, Dual Mission: R -ss.input.port4.dmission.r - -;ss, Virtual Port 4, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port4.dmission.rstick_back - -;ss, Virtual Port 4, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port4.dmission.rstick_fore - -;ss, Virtual Port 4, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port4.dmission.rstick_left - -;ss, Virtual Port 4, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port4.dmission.rstick_right - -;ss, Virtual Port 4, Dual Mission: R Throttle Down (Analog) -ss.input.port4.dmission.rthrottle_down - -;ss, Virtual Port 4, Dual Mission: R Throttle Up (Analog) -ss.input.port4.dmission.rthrottle_up - -;ss, Virtual Port 4, Dual Mission: START -ss.input.port4.dmission.start - -;ss, Virtual Port 4, Dual Mission: X (L Stick Trigger) -ss.input.port4.dmission.x - -;ss, Virtual Port 4, Dual Mission: Y (L Stick Left Button) -ss.input.port4.dmission.y - -;ss, Virtual Port 4, Dual Mission: Z (L Stick Right Button) -ss.input.port4.dmission.z - -;ss, Virtual Port 4, Digital Gamepad: A -ss.input.port4.gamepad.a - -;ss, Virtual Port 4, Digital Gamepad: B -ss.input.port4.gamepad.b - -;ss, Virtual Port 4, Digital Gamepad: C -ss.input.port4.gamepad.c - -;ss, Virtual Port 4, Digital Gamepad: DOWN ↓ -ss.input.port4.gamepad.down - -;ss, Virtual Port 4, Digital Gamepad: LEFT ← -ss.input.port4.gamepad.left - -;ss, Virtual Port 4, Digital Gamepad: Left Shoulder -ss.input.port4.gamepad.ls - -;ss, Virtual Port 4, Digital Gamepad: RIGHT → -ss.input.port4.gamepad.right - -;ss, Virtual Port 4, Digital Gamepad: Right Shoulder -ss.input.port4.gamepad.rs - -;ss, Virtual Port 4, Digital Gamepad: START -ss.input.port4.gamepad.start - -;ss, Virtual Port 4, Digital Gamepad: UP ↑ -ss.input.port4.gamepad.up - -;ss, Virtual Port 4, Digital Gamepad: X -ss.input.port4.gamepad.x - -;ss, Virtual Port 4, Digital Gamepad: Y -ss.input.port4.gamepad.y - -;ss, Virtual Port 4, Digital Gamepad: Z -ss.input.port4.gamepad.z - -;ss, Virtual Port 4, Light Gun: Offscreen Shot(Simulated) -ss.input.port4.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 4, Light Gun: START -ss.input.port4.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 4, Light Gun: Trigger -ss.input.port4.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 4, Light Gun: X Axis -ss.input.port4.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 4, Light Gun: Y Axis -ss.input.port4.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 4. -ss.input.port4.gun_chairs 0xFF8000 - -;ss, Virtual Port 4, Keyboard (JP): 0(Zero) -ss.input.port4.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 4, Keyboard (JP): 1(One) -ss.input.port4.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 4, Keyboard (JP): 2 -ss.input.port4.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 4, Keyboard (JP): 3 -ss.input.port4.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 4, Keyboard (JP): 4 -ss.input.port4.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 4, Keyboard (JP): 5 -ss.input.port4.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 4, Keyboard (JP): 6 -ss.input.port4.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 4, Keyboard (JP): 7 -ss.input.port4.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 4, Keyboard (JP): 8 -ss.input.port4.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 4, Keyboard (JP): 9 -ss.input.port4.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 4, Keyboard (JP): A -ss.input.port4.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 4, Keyboard (JP): At @ -ss.input.port4.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 4, Keyboard (JP): B -ss.input.port4.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 4, Keyboard (JP): Backslash \ -ss.input.port4.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 4, Keyboard (JP): Backspace -ss.input.port4.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 4, Keyboard (JP): C -ss.input.port4.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 4, Keyboard (JP): Caps Lock/英数 -ss.input.port4.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 4, Keyboard (JP): Circumflex ^ -ss.input.port4.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 4, Keyboard (JP): Colon : -ss.input.port4.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 4, Keyboard (JP): Comma , -ss.input.port4.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 4, Keyboard (JP): 変換 -ss.input.port4.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 4, Keyboard (JP): D -ss.input.port4.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 4, Keyboard (JP): Delete -ss.input.port4.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 4, Keyboard (JP): Down -ss.input.port4.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 4, Keyboard (JP): E -ss.input.port4.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 4, Keyboard (JP): End -ss.input.port4.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 4, Keyboard (JP): Enter -ss.input.port4.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 4, Keyboard (JP): Escape -ss.input.port4.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 4, Keyboard (JP): F -ss.input.port4.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 4, Keyboard (JP): F1 -ss.input.port4.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 4, Keyboard (JP): F10 -ss.input.port4.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 4, Keyboard (JP): F11 -ss.input.port4.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 4, Keyboard (JP): F12 -ss.input.port4.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 4, Keyboard (JP): F2 -ss.input.port4.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 4, Keyboard (JP): F3 -ss.input.port4.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 4, Keyboard (JP): F4 -ss.input.port4.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 4, Keyboard (JP): F5 -ss.input.port4.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 4, Keyboard (JP): F6 -ss.input.port4.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 4, Keyboard (JP): F7 -ss.input.port4.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 4, Keyboard (JP): F8 -ss.input.port4.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 4, Keyboard (JP): F9 -ss.input.port4.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 4, Keyboard (JP): G -ss.input.port4.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 4, Keyboard (JP): H -ss.input.port4.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 4, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port4.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 4, Keyboard (JP): Home -ss.input.port4.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 4, Keyboard (JP): 半角/全角/漢字 -ss.input.port4.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 4, Keyboard (JP): I -ss.input.port4.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 4, Keyboard (JP): Insert -ss.input.port4.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 4, Keyboard (JP): J -ss.input.port4.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 4, Keyboard (JP): K -ss.input.port4.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 4, Keyboard (JP): L -ss.input.port4.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 4, Keyboard (JP): Left Alt -ss.input.port4.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 4, Keyboard (JP): Left Ctrl -ss.input.port4.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 4, Keyboard (JP): Cursor Left -ss.input.port4.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 4, Keyboard (JP): Left Bracket [ -ss.input.port4.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 4, Keyboard (JP): Left Shift -ss.input.port4.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 4, Keyboard (JP): M -ss.input.port4.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 4, Keyboard (JP): Minus - -ss.input.port4.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 4, Keyboard (JP): N -ss.input.port4.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 4, Keyboard (JP): 無変換 -ss.input.port4.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 4, Keyboard (JP): O -ss.input.port4.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 4, Keyboard (JP): P -ss.input.port4.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 4, Keyboard (JP): Page Down -ss.input.port4.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 4, Keyboard (JP): Page Up -ss.input.port4.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 4, Keyboard (JP): Pause -ss.input.port4.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 4, Keyboard (JP): Period . -ss.input.port4.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 4, Keyboard (JP): Print Screen -ss.input.port4.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 4, Keyboard (JP): Q -ss.input.port4.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 4, Keyboard (JP): R -ss.input.port4.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 4, Keyboard (JP): Right Alt -ss.input.port4.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 4, Keyboard (JP): Right Ctrl -ss.input.port4.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 4, Keyboard (JP): Right -ss.input.port4.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 4, Keyboard (JP): Right Bracket ] -ss.input.port4.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 4, Keyboard (JP): Right Shift -ss.input.port4.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 4, Keyboard (JP): S -ss.input.port4.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 4, Keyboard (JP): Scroll Lock -ss.input.port4.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 4, Keyboard (JP): Semicolon ; -ss.input.port4.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 4, Keyboard (JP): Slash / -ss.input.port4.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 4, Keyboard (JP): Space -ss.input.port4.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 4, Keyboard (JP): T -ss.input.port4.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 4, Keyboard (JP): Tab -ss.input.port4.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 4, Keyboard (JP): U -ss.input.port4.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 4, Keyboard (JP): Up -ss.input.port4.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 4, Keyboard (JP): V -ss.input.port4.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 4, Keyboard (JP): W -ss.input.port4.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 4, Keyboard (JP): X -ss.input.port4.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 4, Keyboard (JP): Y -ss.input.port4.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 4, Keyboard (JP): Yen ¥ -ss.input.port4.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 4, Keyboard (JP): Z -ss.input.port4.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 4, Keyboard (US): 0(Zero) -ss.input.port4.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 4, Keyboard (US): 1(One) -ss.input.port4.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 4, Keyboard (US): 2 -ss.input.port4.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 4, Keyboard (US): 3 -ss.input.port4.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 4, Keyboard (US): 4 -ss.input.port4.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 4, Keyboard (US): 5 -ss.input.port4.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 4, Keyboard (US): 6 -ss.input.port4.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 4, Keyboard (US): 7 -ss.input.port4.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 4, Keyboard (US): 8 -ss.input.port4.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 4, Keyboard (US): 9 -ss.input.port4.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 4, Keyboard (US): A -ss.input.port4.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 4, Keyboard (US): B -ss.input.port4.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 4, Keyboard (US): Backslash \ -ss.input.port4.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 4, Keyboard (US): Backspace -ss.input.port4.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 4, Keyboard (US): C -ss.input.port4.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 4, Keyboard (US): Caps Lock -ss.input.port4.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 4, Keyboard (US): Comma , -ss.input.port4.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 4, Keyboard (US): D -ss.input.port4.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 4, Keyboard (US): Delete -ss.input.port4.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 4, Keyboard (US): Down -ss.input.port4.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 4, Keyboard (US): E -ss.input.port4.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 4, Keyboard (US): End -ss.input.port4.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 4, Keyboard (US): Enter -ss.input.port4.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 4, Keyboard (US): Equals = -ss.input.port4.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 4, Keyboard (US): Escape -ss.input.port4.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 4, Keyboard (US): F -ss.input.port4.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 4, Keyboard (US): F1 -ss.input.port4.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 4, Keyboard (US): F10 -ss.input.port4.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 4, Keyboard (US): F11 -ss.input.port4.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 4, Keyboard (US): F12 -ss.input.port4.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 4, Keyboard (US): F2 -ss.input.port4.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 4, Keyboard (US): F3 -ss.input.port4.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 4, Keyboard (US): F4 -ss.input.port4.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 4, Keyboard (US): F5 -ss.input.port4.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 4, Keyboard (US): F6 -ss.input.port4.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 4, Keyboard (US): F7 -ss.input.port4.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 4, Keyboard (US): F8 -ss.input.port4.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 4, Keyboard (US): F9 -ss.input.port4.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 4, Keyboard (US): G -ss.input.port4.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 4, Keyboard (US): Grave ` -ss.input.port4.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 4, Keyboard (US): H -ss.input.port4.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 4, Keyboard (US): Home -ss.input.port4.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 4, Keyboard (US): I -ss.input.port4.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 4, Keyboard (US): Insert -ss.input.port4.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 4, Keyboard (US): J -ss.input.port4.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 4, Keyboard (US): K -ss.input.port4.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 4, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port4.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 4, Keyboard (US): Keypad Center/5 -ss.input.port4.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 4, Keyboard (US): Keypad Delete -ss.input.port4.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 4, Keyboard (US): Keypad Down/2 -ss.input.port4.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 4, Keyboard (US): Keypad End/1 -ss.input.port4.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 4, Keyboard (US): Keypad Enter -ss.input.port4.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 4, Keyboard (US): Keypad Home/7 -ss.input.port4.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 4, Keyboard (US): Keypad Insert/0 -ss.input.port4.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 4, Keyboard (US): Keypad Left/4 -ss.input.port4.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 4, Keyboard (US): Keypad Minus -ss.input.port4.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 4, Keyboard (US): Keypad Pagedown/3 -ss.input.port4.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 4, Keyboard (US): Keypad Pageup/9 -ss.input.port4.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 4, Keyboard (US): Keypad Plus -ss.input.port4.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 4, Keyboard (US): Keypad Right/6 -ss.input.port4.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 4, Keyboard (US): Keypad Slash(Divide) -ss.input.port4.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 4, Keyboard (US): Keypad Up/8 -ss.input.port4.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 4, Keyboard (US): L -ss.input.port4.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 4, Keyboard (US): Left Alt -ss.input.port4.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 4, Keyboard (US): Left Ctrl -ss.input.port4.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 4, Keyboard (US): Cursor Left -ss.input.port4.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 4, Keyboard (US): Left Bracket [ -ss.input.port4.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 4, Keyboard (US): Left Shift -ss.input.port4.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 4, Keyboard (US): M -ss.input.port4.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 4, Keyboard (US): Minus - -ss.input.port4.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 4, Keyboard (US): N -ss.input.port4.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 4, Keyboard (US): Num Lock -ss.input.port4.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 4, Keyboard (US): O -ss.input.port4.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 4, Keyboard (US): P -ss.input.port4.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 4, Keyboard (US): Page Down -ss.input.port4.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 4, Keyboard (US): Page Up -ss.input.port4.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 4, Keyboard (US): Pause -ss.input.port4.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 4, Keyboard (US): Period . -ss.input.port4.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 4, Keyboard (US): Print Screen -ss.input.port4.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 4, Keyboard (US): Q -ss.input.port4.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 4, Keyboard (US): Quote ' -ss.input.port4.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 4, Keyboard (US): R -ss.input.port4.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 4, Keyboard (US): Right Alt -ss.input.port4.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 4, Keyboard (US): Right Ctrl -ss.input.port4.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 4, Keyboard (US): Right -ss.input.port4.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 4, Keyboard (US): Right Bracket ] -ss.input.port4.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 4, Keyboard (US): Right Shift -ss.input.port4.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 4, Keyboard (US): S -ss.input.port4.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 4, Keyboard (US): Scroll Lock -ss.input.port4.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 4, Keyboard (US): Semicolon ; -ss.input.port4.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 4, Keyboard (US): Slash / -ss.input.port4.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 4, Keyboard (US): Space -ss.input.port4.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 4, Keyboard (US): T -ss.input.port4.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 4, Keyboard (US): Tab -ss.input.port4.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 4, Keyboard (US): U -ss.input.port4.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 4, Keyboard (US): Up -ss.input.port4.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 4, Keyboard (US): V -ss.input.port4.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 4, Keyboard (US): W -ss.input.port4.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 4, Keyboard (US): X -ss.input.port4.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 4, Keyboard (US): Y -ss.input.port4.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 4, Keyboard (US): Z -ss.input.port4.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 4, Mission Stick: A (Stick Trigger) -ss.input.port4.mission.a - -;ss, Virtual Port 4, Mission Stick: A AF -ss.input.port4.mission.afa - -;Default position for switch "A AF". -ss.input.port4.mission.afa.defpos off - -;ss, Virtual Port 4, Mission Stick: B AF -ss.input.port4.mission.afb - -;Default position for switch "B AF". -ss.input.port4.mission.afb.defpos off - -;ss, Virtual Port 4, Mission Stick: C AF -ss.input.port4.mission.afc - -;Default position for switch "C AF". -ss.input.port4.mission.afc.defpos off - -;ss, Virtual Port 4, Mission Stick: L AF -ss.input.port4.mission.afl - -;Default position for switch "L AF". -ss.input.port4.mission.afl.defpos off - -;ss, Virtual Port 4, Mission Stick: R AF -ss.input.port4.mission.afr - -;Default position for switch "R AF". -ss.input.port4.mission.afr.defpos off - -;ss, Virtual Port 4, Mission Stick: AF Speed -ss.input.port4.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port4.mission.afspeed.defpos 1 - -;ss, Virtual Port 4, Mission Stick: X AF -ss.input.port4.mission.afx - -;Default position for switch "X AF". -ss.input.port4.mission.afx.defpos off - -;ss, Virtual Port 4, Mission Stick: Y AF -ss.input.port4.mission.afy - -;Default position for switch "Y AF". -ss.input.port4.mission.afy.defpos off - -;ss, Virtual Port 4, Mission Stick: Z AF -ss.input.port4.mission.afz - -;Default position for switch "Z AF". -ss.input.port4.mission.afz.defpos off - -;ss, Virtual Port 4, Mission Stick: B (Stick Left Button) -ss.input.port4.mission.b - -;ss, Virtual Port 4, Mission Stick: C (Stick Right Button) -ss.input.port4.mission.c - -;ss, Virtual Port 4, Mission Stick: L -ss.input.port4.mission.l - -;ss, Virtual Port 4, Mission Stick: R -ss.input.port4.mission.r - -;ss, Virtual Port 4, Mission Stick: START -ss.input.port4.mission.start - -;ss, Virtual Port 4, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port4.mission.stick_back - -;ss, Virtual Port 4, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port4.mission.stick_fore - -;ss, Virtual Port 4, Mission Stick: Stick LEFT ← (Analog) -ss.input.port4.mission.stick_left - -;ss, Virtual Port 4, Mission Stick: Stick RIGHT → (Analog) -ss.input.port4.mission.stick_right - -;ss, Virtual Port 4, Mission Stick: Throttle Down (Analog) -ss.input.port4.mission.throttle_down - -;ss, Virtual Port 4, Mission Stick: Throttle Up (Analog) -ss.input.port4.mission.throttle_up - -;ss, Virtual Port 4, Mission Stick: X -ss.input.port4.mission.x - -;ss, Virtual Port 4, Mission Stick: Y -ss.input.port4.mission.y - -;ss, Virtual Port 4, Mission Stick: Z -ss.input.port4.mission.z - -;ss, Virtual Port 4, Mouse: Left Button -ss.input.port4.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 4, Mouse: Middle Button -ss.input.port4.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 4, Mouse: Motion Down -ss.input.port4.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 4, Mouse: Motion Left -ss.input.port4.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 4, Mouse: Motion Right -ss.input.port4.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 4, Mouse: Motion Up -ss.input.port4.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 4, Mouse: Right Button -ss.input.port4.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 4, Mouse: Start -ss.input.port4.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 4, Steering Wheel: A (R Group) -ss.input.port4.wheel.a - -;ss, Virtual Port 4, Steering Wheel: Analog LEFT ← -ss.input.port4.wheel.analog_left - -;ss, Virtual Port 4, Steering Wheel: Analog RIGHT → -ss.input.port4.wheel.analog_right - -;ss, Virtual Port 4, Steering Wheel: B (R Group) -ss.input.port4.wheel.b - -;ss, Virtual Port 4, Steering Wheel: C (R Group) -ss.input.port4.wheel.c - -;ss, Virtual Port 4, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port4.wheel.down - -;ss, Virtual Port 4, Steering Wheel: START -ss.input.port4.wheel.start - -;ss, Virtual Port 4, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port4.wheel.up - -;ss, Virtual Port 4, Steering Wheel: X (L Group) -ss.input.port4.wheel.x - -;ss, Virtual Port 4, Steering Wheel: Y (L Group) -ss.input.port4.wheel.y - -;ss, Virtual Port 4, Steering Wheel: Z (L Group) -ss.input.port4.wheel.z - -;Input device for Virtual Port 5 -ss.input.port5 gamepad - -;ss, Virtual Port 5, 3D Control Pad: A -ss.input.port5.3dpad.a - -;ss, Virtual Port 5, 3D Control Pad: Analog DOWN ↓ -ss.input.port5.3dpad.analog_down - -;ss, Virtual Port 5, 3D Control Pad: Analog LEFT ← -ss.input.port5.3dpad.analog_left - -;ss, Virtual Port 5, 3D Control Pad: Analog RIGHT → -ss.input.port5.3dpad.analog_right - -;ss, Virtual Port 5, 3D Control Pad: Analog UP ↑ -ss.input.port5.3dpad.analog_up - -;ss, Virtual Port 5, 3D Control Pad: B -ss.input.port5.3dpad.b - -;ss, Virtual Port 5, 3D Control Pad: C -ss.input.port5.3dpad.c - -;ss, Virtual Port 5, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port5.3dpad.down - -;ss, Virtual Port 5, 3D Control Pad: D-Pad LEFT ← -ss.input.port5.3dpad.left - -;ss, Virtual Port 5, 3D Control Pad: Left Shoulder (Analog) -ss.input.port5.3dpad.ls - -;ss, Virtual Port 5, 3D Control Pad: Mode -ss.input.port5.3dpad.mode - -;Default position for switch "Mode". -ss.input.port5.3dpad.mode.defpos digital - -;ss, Virtual Port 5, 3D Control Pad: D-Pad RIGHT → -ss.input.port5.3dpad.right - -;ss, Virtual Port 5, 3D Control Pad: Right Shoulder (Analog) -ss.input.port5.3dpad.rs - -;ss, Virtual Port 5, 3D Control Pad: START -ss.input.port5.3dpad.start - -;ss, Virtual Port 5, 3D Control Pad: D-Pad UP ↑ -ss.input.port5.3dpad.up - -;ss, Virtual Port 5, 3D Control Pad: X -ss.input.port5.3dpad.x - -;ss, Virtual Port 5, 3D Control Pad: Y -ss.input.port5.3dpad.y - -;ss, Virtual Port 5, 3D Control Pad: Z -ss.input.port5.3dpad.z - -;ss, Virtual Port 5, Dual Mission: A (R Stick Trigger) -ss.input.port5.dmission.a - -;ss, Virtual Port 5, Dual Mission: A AF -ss.input.port5.dmission.afa - -;Default position for switch "A AF". -ss.input.port5.dmission.afa.defpos off - -;ss, Virtual Port 5, Dual Mission: B AF -ss.input.port5.dmission.afb - -;Default position for switch "B AF". -ss.input.port5.dmission.afb.defpos off - -;ss, Virtual Port 5, Dual Mission: C AF -ss.input.port5.dmission.afc - -;Default position for switch "C AF". -ss.input.port5.dmission.afc.defpos off - -;ss, Virtual Port 5, Dual Mission: L AF -ss.input.port5.dmission.afl - -;Default position for switch "L AF". -ss.input.port5.dmission.afl.defpos off - -;ss, Virtual Port 5, Dual Mission: R AF -ss.input.port5.dmission.afr - -;Default position for switch "R AF". -ss.input.port5.dmission.afr.defpos off - -;ss, Virtual Port 5, Dual Mission: Autofire Speed -ss.input.port5.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port5.dmission.afspeed.defpos 1 - -;ss, Virtual Port 5, Dual Mission: X AF -ss.input.port5.dmission.afx - -;Default position for switch "X AF". -ss.input.port5.dmission.afx.defpos off - -;ss, Virtual Port 5, Dual Mission: Y AF -ss.input.port5.dmission.afy - -;Default position for switch "Y AF". -ss.input.port5.dmission.afy.defpos off - -;ss, Virtual Port 5, Dual Mission: Z AF -ss.input.port5.dmission.afz - -;Default position for switch "Z AF". -ss.input.port5.dmission.afz.defpos off - -;ss, Virtual Port 5, Dual Mission: B (R Stick Left Button) -ss.input.port5.dmission.b - -;ss, Virtual Port 5, Dual Mission: C (R Stick Right Button) -ss.input.port5.dmission.c - -;ss, Virtual Port 5, Dual Mission: L -ss.input.port5.dmission.l - -;ss, Virtual Port 5, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port5.dmission.lstick_back - -;ss, Virtual Port 5, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port5.dmission.lstick_fore - -;ss, Virtual Port 5, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port5.dmission.lstick_left - -;ss, Virtual Port 5, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port5.dmission.lstick_right - -;ss, Virtual Port 5, Dual Mission: L Throttle Down (Analog) -ss.input.port5.dmission.lthrottle_down - -;ss, Virtual Port 5, Dual Mission: L Throttle Up (Analog) -ss.input.port5.dmission.lthrottle_up - -;ss, Virtual Port 5, Dual Mission: R -ss.input.port5.dmission.r - -;ss, Virtual Port 5, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port5.dmission.rstick_back - -;ss, Virtual Port 5, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port5.dmission.rstick_fore - -;ss, Virtual Port 5, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port5.dmission.rstick_left - -;ss, Virtual Port 5, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port5.dmission.rstick_right - -;ss, Virtual Port 5, Dual Mission: R Throttle Down (Analog) -ss.input.port5.dmission.rthrottle_down - -;ss, Virtual Port 5, Dual Mission: R Throttle Up (Analog) -ss.input.port5.dmission.rthrottle_up - -;ss, Virtual Port 5, Dual Mission: START -ss.input.port5.dmission.start - -;ss, Virtual Port 5, Dual Mission: X (L Stick Trigger) -ss.input.port5.dmission.x - -;ss, Virtual Port 5, Dual Mission: Y (L Stick Left Button) -ss.input.port5.dmission.y - -;ss, Virtual Port 5, Dual Mission: Z (L Stick Right Button) -ss.input.port5.dmission.z - -;ss, Virtual Port 5, Digital Gamepad: A -ss.input.port5.gamepad.a - -;ss, Virtual Port 5, Digital Gamepad: B -ss.input.port5.gamepad.b - -;ss, Virtual Port 5, Digital Gamepad: C -ss.input.port5.gamepad.c - -;ss, Virtual Port 5, Digital Gamepad: DOWN ↓ -ss.input.port5.gamepad.down - -;ss, Virtual Port 5, Digital Gamepad: LEFT ← -ss.input.port5.gamepad.left - -;ss, Virtual Port 5, Digital Gamepad: Left Shoulder -ss.input.port5.gamepad.ls - -;ss, Virtual Port 5, Digital Gamepad: RIGHT → -ss.input.port5.gamepad.right - -;ss, Virtual Port 5, Digital Gamepad: Right Shoulder -ss.input.port5.gamepad.rs - -;ss, Virtual Port 5, Digital Gamepad: START -ss.input.port5.gamepad.start - -;ss, Virtual Port 5, Digital Gamepad: UP ↑ -ss.input.port5.gamepad.up - -;ss, Virtual Port 5, Digital Gamepad: X -ss.input.port5.gamepad.x - -;ss, Virtual Port 5, Digital Gamepad: Y -ss.input.port5.gamepad.y - -;ss, Virtual Port 5, Digital Gamepad: Z -ss.input.port5.gamepad.z - -;ss, Virtual Port 5, Light Gun: Offscreen Shot(Simulated) -ss.input.port5.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 5, Light Gun: START -ss.input.port5.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 5, Light Gun: Trigger -ss.input.port5.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 5, Light Gun: X Axis -ss.input.port5.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 5, Light Gun: Y Axis -ss.input.port5.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 5. -ss.input.port5.gun_chairs 0xFFFF00 - -;ss, Virtual Port 5, Keyboard (JP): 0(Zero) -ss.input.port5.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 5, Keyboard (JP): 1(One) -ss.input.port5.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 5, Keyboard (JP): 2 -ss.input.port5.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 5, Keyboard (JP): 3 -ss.input.port5.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 5, Keyboard (JP): 4 -ss.input.port5.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 5, Keyboard (JP): 5 -ss.input.port5.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 5, Keyboard (JP): 6 -ss.input.port5.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 5, Keyboard (JP): 7 -ss.input.port5.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 5, Keyboard (JP): 8 -ss.input.port5.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 5, Keyboard (JP): 9 -ss.input.port5.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 5, Keyboard (JP): A -ss.input.port5.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 5, Keyboard (JP): At @ -ss.input.port5.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 5, Keyboard (JP): B -ss.input.port5.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 5, Keyboard (JP): Backslash \ -ss.input.port5.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 5, Keyboard (JP): Backspace -ss.input.port5.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 5, Keyboard (JP): C -ss.input.port5.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 5, Keyboard (JP): Caps Lock/英数 -ss.input.port5.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 5, Keyboard (JP): Circumflex ^ -ss.input.port5.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 5, Keyboard (JP): Colon : -ss.input.port5.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 5, Keyboard (JP): Comma , -ss.input.port5.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 5, Keyboard (JP): 変換 -ss.input.port5.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 5, Keyboard (JP): D -ss.input.port5.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 5, Keyboard (JP): Delete -ss.input.port5.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 5, Keyboard (JP): Down -ss.input.port5.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 5, Keyboard (JP): E -ss.input.port5.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 5, Keyboard (JP): End -ss.input.port5.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 5, Keyboard (JP): Enter -ss.input.port5.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 5, Keyboard (JP): Escape -ss.input.port5.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 5, Keyboard (JP): F -ss.input.port5.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 5, Keyboard (JP): F1 -ss.input.port5.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 5, Keyboard (JP): F10 -ss.input.port5.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 5, Keyboard (JP): F11 -ss.input.port5.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 5, Keyboard (JP): F12 -ss.input.port5.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 5, Keyboard (JP): F2 -ss.input.port5.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 5, Keyboard (JP): F3 -ss.input.port5.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 5, Keyboard (JP): F4 -ss.input.port5.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 5, Keyboard (JP): F5 -ss.input.port5.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 5, Keyboard (JP): F6 -ss.input.port5.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 5, Keyboard (JP): F7 -ss.input.port5.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 5, Keyboard (JP): F8 -ss.input.port5.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 5, Keyboard (JP): F9 -ss.input.port5.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 5, Keyboard (JP): G -ss.input.port5.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 5, Keyboard (JP): H -ss.input.port5.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 5, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port5.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 5, Keyboard (JP): Home -ss.input.port5.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 5, Keyboard (JP): 半角/全角/漢字 -ss.input.port5.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 5, Keyboard (JP): I -ss.input.port5.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 5, Keyboard (JP): Insert -ss.input.port5.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 5, Keyboard (JP): J -ss.input.port5.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 5, Keyboard (JP): K -ss.input.port5.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 5, Keyboard (JP): L -ss.input.port5.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 5, Keyboard (JP): Left Alt -ss.input.port5.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 5, Keyboard (JP): Left Ctrl -ss.input.port5.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 5, Keyboard (JP): Cursor Left -ss.input.port5.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 5, Keyboard (JP): Left Bracket [ -ss.input.port5.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 5, Keyboard (JP): Left Shift -ss.input.port5.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 5, Keyboard (JP): M -ss.input.port5.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 5, Keyboard (JP): Minus - -ss.input.port5.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 5, Keyboard (JP): N -ss.input.port5.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 5, Keyboard (JP): 無変換 -ss.input.port5.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 5, Keyboard (JP): O -ss.input.port5.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 5, Keyboard (JP): P -ss.input.port5.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 5, Keyboard (JP): Page Down -ss.input.port5.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 5, Keyboard (JP): Page Up -ss.input.port5.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 5, Keyboard (JP): Pause -ss.input.port5.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 5, Keyboard (JP): Period . -ss.input.port5.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 5, Keyboard (JP): Print Screen -ss.input.port5.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 5, Keyboard (JP): Q -ss.input.port5.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 5, Keyboard (JP): R -ss.input.port5.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 5, Keyboard (JP): Right Alt -ss.input.port5.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 5, Keyboard (JP): Right Ctrl -ss.input.port5.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 5, Keyboard (JP): Right -ss.input.port5.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 5, Keyboard (JP): Right Bracket ] -ss.input.port5.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 5, Keyboard (JP): Right Shift -ss.input.port5.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 5, Keyboard (JP): S -ss.input.port5.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 5, Keyboard (JP): Scroll Lock -ss.input.port5.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 5, Keyboard (JP): Semicolon ; -ss.input.port5.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 5, Keyboard (JP): Slash / -ss.input.port5.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 5, Keyboard (JP): Space -ss.input.port5.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 5, Keyboard (JP): T -ss.input.port5.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 5, Keyboard (JP): Tab -ss.input.port5.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 5, Keyboard (JP): U -ss.input.port5.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 5, Keyboard (JP): Up -ss.input.port5.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 5, Keyboard (JP): V -ss.input.port5.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 5, Keyboard (JP): W -ss.input.port5.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 5, Keyboard (JP): X -ss.input.port5.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 5, Keyboard (JP): Y -ss.input.port5.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 5, Keyboard (JP): Yen ¥ -ss.input.port5.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 5, Keyboard (JP): Z -ss.input.port5.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 5, Keyboard (US): 0(Zero) -ss.input.port5.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 5, Keyboard (US): 1(One) -ss.input.port5.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 5, Keyboard (US): 2 -ss.input.port5.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 5, Keyboard (US): 3 -ss.input.port5.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 5, Keyboard (US): 4 -ss.input.port5.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 5, Keyboard (US): 5 -ss.input.port5.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 5, Keyboard (US): 6 -ss.input.port5.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 5, Keyboard (US): 7 -ss.input.port5.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 5, Keyboard (US): 8 -ss.input.port5.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 5, Keyboard (US): 9 -ss.input.port5.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 5, Keyboard (US): A -ss.input.port5.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 5, Keyboard (US): B -ss.input.port5.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 5, Keyboard (US): Backslash \ -ss.input.port5.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 5, Keyboard (US): Backspace -ss.input.port5.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 5, Keyboard (US): C -ss.input.port5.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 5, Keyboard (US): Caps Lock -ss.input.port5.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 5, Keyboard (US): Comma , -ss.input.port5.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 5, Keyboard (US): D -ss.input.port5.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 5, Keyboard (US): Delete -ss.input.port5.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 5, Keyboard (US): Down -ss.input.port5.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 5, Keyboard (US): E -ss.input.port5.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 5, Keyboard (US): End -ss.input.port5.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 5, Keyboard (US): Enter -ss.input.port5.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 5, Keyboard (US): Equals = -ss.input.port5.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 5, Keyboard (US): Escape -ss.input.port5.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 5, Keyboard (US): F -ss.input.port5.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 5, Keyboard (US): F1 -ss.input.port5.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 5, Keyboard (US): F10 -ss.input.port5.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 5, Keyboard (US): F11 -ss.input.port5.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 5, Keyboard (US): F12 -ss.input.port5.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 5, Keyboard (US): F2 -ss.input.port5.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 5, Keyboard (US): F3 -ss.input.port5.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 5, Keyboard (US): F4 -ss.input.port5.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 5, Keyboard (US): F5 -ss.input.port5.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 5, Keyboard (US): F6 -ss.input.port5.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 5, Keyboard (US): F7 -ss.input.port5.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 5, Keyboard (US): F8 -ss.input.port5.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 5, Keyboard (US): F9 -ss.input.port5.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 5, Keyboard (US): G -ss.input.port5.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 5, Keyboard (US): Grave ` -ss.input.port5.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 5, Keyboard (US): H -ss.input.port5.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 5, Keyboard (US): Home -ss.input.port5.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 5, Keyboard (US): I -ss.input.port5.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 5, Keyboard (US): Insert -ss.input.port5.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 5, Keyboard (US): J -ss.input.port5.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 5, Keyboard (US): K -ss.input.port5.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 5, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port5.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 5, Keyboard (US): Keypad Center/5 -ss.input.port5.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 5, Keyboard (US): Keypad Delete -ss.input.port5.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 5, Keyboard (US): Keypad Down/2 -ss.input.port5.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 5, Keyboard (US): Keypad End/1 -ss.input.port5.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 5, Keyboard (US): Keypad Enter -ss.input.port5.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 5, Keyboard (US): Keypad Home/7 -ss.input.port5.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 5, Keyboard (US): Keypad Insert/0 -ss.input.port5.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 5, Keyboard (US): Keypad Left/4 -ss.input.port5.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 5, Keyboard (US): Keypad Minus -ss.input.port5.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 5, Keyboard (US): Keypad Pagedown/3 -ss.input.port5.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 5, Keyboard (US): Keypad Pageup/9 -ss.input.port5.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 5, Keyboard (US): Keypad Plus -ss.input.port5.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 5, Keyboard (US): Keypad Right/6 -ss.input.port5.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 5, Keyboard (US): Keypad Slash(Divide) -ss.input.port5.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 5, Keyboard (US): Keypad Up/8 -ss.input.port5.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 5, Keyboard (US): L -ss.input.port5.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 5, Keyboard (US): Left Alt -ss.input.port5.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 5, Keyboard (US): Left Ctrl -ss.input.port5.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 5, Keyboard (US): Cursor Left -ss.input.port5.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 5, Keyboard (US): Left Bracket [ -ss.input.port5.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 5, Keyboard (US): Left Shift -ss.input.port5.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 5, Keyboard (US): M -ss.input.port5.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 5, Keyboard (US): Minus - -ss.input.port5.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 5, Keyboard (US): N -ss.input.port5.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 5, Keyboard (US): Num Lock -ss.input.port5.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 5, Keyboard (US): O -ss.input.port5.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 5, Keyboard (US): P -ss.input.port5.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 5, Keyboard (US): Page Down -ss.input.port5.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 5, Keyboard (US): Page Up -ss.input.port5.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 5, Keyboard (US): Pause -ss.input.port5.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 5, Keyboard (US): Period . -ss.input.port5.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 5, Keyboard (US): Print Screen -ss.input.port5.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 5, Keyboard (US): Q -ss.input.port5.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 5, Keyboard (US): Quote ' -ss.input.port5.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 5, Keyboard (US): R -ss.input.port5.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 5, Keyboard (US): Right Alt -ss.input.port5.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 5, Keyboard (US): Right Ctrl -ss.input.port5.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 5, Keyboard (US): Right -ss.input.port5.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 5, Keyboard (US): Right Bracket ] -ss.input.port5.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 5, Keyboard (US): Right Shift -ss.input.port5.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 5, Keyboard (US): S -ss.input.port5.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 5, Keyboard (US): Scroll Lock -ss.input.port5.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 5, Keyboard (US): Semicolon ; -ss.input.port5.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 5, Keyboard (US): Slash / -ss.input.port5.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 5, Keyboard (US): Space -ss.input.port5.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 5, Keyboard (US): T -ss.input.port5.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 5, Keyboard (US): Tab -ss.input.port5.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 5, Keyboard (US): U -ss.input.port5.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 5, Keyboard (US): Up -ss.input.port5.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 5, Keyboard (US): V -ss.input.port5.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 5, Keyboard (US): W -ss.input.port5.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 5, Keyboard (US): X -ss.input.port5.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 5, Keyboard (US): Y -ss.input.port5.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 5, Keyboard (US): Z -ss.input.port5.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 5, Mission Stick: A (Stick Trigger) -ss.input.port5.mission.a - -;ss, Virtual Port 5, Mission Stick: A AF -ss.input.port5.mission.afa - -;Default position for switch "A AF". -ss.input.port5.mission.afa.defpos off - -;ss, Virtual Port 5, Mission Stick: B AF -ss.input.port5.mission.afb - -;Default position for switch "B AF". -ss.input.port5.mission.afb.defpos off - -;ss, Virtual Port 5, Mission Stick: C AF -ss.input.port5.mission.afc - -;Default position for switch "C AF". -ss.input.port5.mission.afc.defpos off - -;ss, Virtual Port 5, Mission Stick: L AF -ss.input.port5.mission.afl - -;Default position for switch "L AF". -ss.input.port5.mission.afl.defpos off - -;ss, Virtual Port 5, Mission Stick: R AF -ss.input.port5.mission.afr - -;Default position for switch "R AF". -ss.input.port5.mission.afr.defpos off - -;ss, Virtual Port 5, Mission Stick: AF Speed -ss.input.port5.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port5.mission.afspeed.defpos 1 - -;ss, Virtual Port 5, Mission Stick: X AF -ss.input.port5.mission.afx - -;Default position for switch "X AF". -ss.input.port5.mission.afx.defpos off - -;ss, Virtual Port 5, Mission Stick: Y AF -ss.input.port5.mission.afy - -;Default position for switch "Y AF". -ss.input.port5.mission.afy.defpos off - -;ss, Virtual Port 5, Mission Stick: Z AF -ss.input.port5.mission.afz - -;Default position for switch "Z AF". -ss.input.port5.mission.afz.defpos off - -;ss, Virtual Port 5, Mission Stick: B (Stick Left Button) -ss.input.port5.mission.b - -;ss, Virtual Port 5, Mission Stick: C (Stick Right Button) -ss.input.port5.mission.c - -;ss, Virtual Port 5, Mission Stick: L -ss.input.port5.mission.l - -;ss, Virtual Port 5, Mission Stick: R -ss.input.port5.mission.r - -;ss, Virtual Port 5, Mission Stick: START -ss.input.port5.mission.start - -;ss, Virtual Port 5, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port5.mission.stick_back - -;ss, Virtual Port 5, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port5.mission.stick_fore - -;ss, Virtual Port 5, Mission Stick: Stick LEFT ← (Analog) -ss.input.port5.mission.stick_left - -;ss, Virtual Port 5, Mission Stick: Stick RIGHT → (Analog) -ss.input.port5.mission.stick_right - -;ss, Virtual Port 5, Mission Stick: Throttle Down (Analog) -ss.input.port5.mission.throttle_down - -;ss, Virtual Port 5, Mission Stick: Throttle Up (Analog) -ss.input.port5.mission.throttle_up - -;ss, Virtual Port 5, Mission Stick: X -ss.input.port5.mission.x - -;ss, Virtual Port 5, Mission Stick: Y -ss.input.port5.mission.y - -;ss, Virtual Port 5, Mission Stick: Z -ss.input.port5.mission.z - -;ss, Virtual Port 5, Mouse: Left Button -ss.input.port5.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 5, Mouse: Middle Button -ss.input.port5.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 5, Mouse: Motion Down -ss.input.port5.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 5, Mouse: Motion Left -ss.input.port5.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 5, Mouse: Motion Right -ss.input.port5.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 5, Mouse: Motion Up -ss.input.port5.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 5, Mouse: Right Button -ss.input.port5.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 5, Mouse: Start -ss.input.port5.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 5, Steering Wheel: A (R Group) -ss.input.port5.wheel.a - -;ss, Virtual Port 5, Steering Wheel: Analog LEFT ← -ss.input.port5.wheel.analog_left - -;ss, Virtual Port 5, Steering Wheel: Analog RIGHT → -ss.input.port5.wheel.analog_right - -;ss, Virtual Port 5, Steering Wheel: B (R Group) -ss.input.port5.wheel.b - -;ss, Virtual Port 5, Steering Wheel: C (R Group) -ss.input.port5.wheel.c - -;ss, Virtual Port 5, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port5.wheel.down - -;ss, Virtual Port 5, Steering Wheel: START -ss.input.port5.wheel.start - -;ss, Virtual Port 5, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port5.wheel.up - -;ss, Virtual Port 5, Steering Wheel: X (L Group) -ss.input.port5.wheel.x - -;ss, Virtual Port 5, Steering Wheel: Y (L Group) -ss.input.port5.wheel.y - -;ss, Virtual Port 5, Steering Wheel: Z (L Group) -ss.input.port5.wheel.z - -;Input device for Virtual Port 6 -ss.input.port6 gamepad - -;ss, Virtual Port 6, 3D Control Pad: A -ss.input.port6.3dpad.a - -;ss, Virtual Port 6, 3D Control Pad: Analog DOWN ↓ -ss.input.port6.3dpad.analog_down - -;ss, Virtual Port 6, 3D Control Pad: Analog LEFT ← -ss.input.port6.3dpad.analog_left - -;ss, Virtual Port 6, 3D Control Pad: Analog RIGHT → -ss.input.port6.3dpad.analog_right - -;ss, Virtual Port 6, 3D Control Pad: Analog UP ↑ -ss.input.port6.3dpad.analog_up - -;ss, Virtual Port 6, 3D Control Pad: B -ss.input.port6.3dpad.b - -;ss, Virtual Port 6, 3D Control Pad: C -ss.input.port6.3dpad.c - -;ss, Virtual Port 6, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port6.3dpad.down - -;ss, Virtual Port 6, 3D Control Pad: D-Pad LEFT ← -ss.input.port6.3dpad.left - -;ss, Virtual Port 6, 3D Control Pad: Left Shoulder (Analog) -ss.input.port6.3dpad.ls - -;ss, Virtual Port 6, 3D Control Pad: Mode -ss.input.port6.3dpad.mode - -;Default position for switch "Mode". -ss.input.port6.3dpad.mode.defpos digital - -;ss, Virtual Port 6, 3D Control Pad: D-Pad RIGHT → -ss.input.port6.3dpad.right - -;ss, Virtual Port 6, 3D Control Pad: Right Shoulder (Analog) -ss.input.port6.3dpad.rs - -;ss, Virtual Port 6, 3D Control Pad: START -ss.input.port6.3dpad.start - -;ss, Virtual Port 6, 3D Control Pad: D-Pad UP ↑ -ss.input.port6.3dpad.up - -;ss, Virtual Port 6, 3D Control Pad: X -ss.input.port6.3dpad.x - -;ss, Virtual Port 6, 3D Control Pad: Y -ss.input.port6.3dpad.y - -;ss, Virtual Port 6, 3D Control Pad: Z -ss.input.port6.3dpad.z - -;ss, Virtual Port 6, Dual Mission: A (R Stick Trigger) -ss.input.port6.dmission.a - -;ss, Virtual Port 6, Dual Mission: A AF -ss.input.port6.dmission.afa - -;Default position for switch "A AF". -ss.input.port6.dmission.afa.defpos off - -;ss, Virtual Port 6, Dual Mission: B AF -ss.input.port6.dmission.afb - -;Default position for switch "B AF". -ss.input.port6.dmission.afb.defpos off - -;ss, Virtual Port 6, Dual Mission: C AF -ss.input.port6.dmission.afc - -;Default position for switch "C AF". -ss.input.port6.dmission.afc.defpos off - -;ss, Virtual Port 6, Dual Mission: L AF -ss.input.port6.dmission.afl - -;Default position for switch "L AF". -ss.input.port6.dmission.afl.defpos off - -;ss, Virtual Port 6, Dual Mission: R AF -ss.input.port6.dmission.afr - -;Default position for switch "R AF". -ss.input.port6.dmission.afr.defpos off - -;ss, Virtual Port 6, Dual Mission: Autofire Speed -ss.input.port6.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port6.dmission.afspeed.defpos 1 - -;ss, Virtual Port 6, Dual Mission: X AF -ss.input.port6.dmission.afx - -;Default position for switch "X AF". -ss.input.port6.dmission.afx.defpos off - -;ss, Virtual Port 6, Dual Mission: Y AF -ss.input.port6.dmission.afy - -;Default position for switch "Y AF". -ss.input.port6.dmission.afy.defpos off - -;ss, Virtual Port 6, Dual Mission: Z AF -ss.input.port6.dmission.afz - -;Default position for switch "Z AF". -ss.input.port6.dmission.afz.defpos off - -;ss, Virtual Port 6, Dual Mission: B (R Stick Left Button) -ss.input.port6.dmission.b - -;ss, Virtual Port 6, Dual Mission: C (R Stick Right Button) -ss.input.port6.dmission.c - -;ss, Virtual Port 6, Dual Mission: L -ss.input.port6.dmission.l - -;ss, Virtual Port 6, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port6.dmission.lstick_back - -;ss, Virtual Port 6, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port6.dmission.lstick_fore - -;ss, Virtual Port 6, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port6.dmission.lstick_left - -;ss, Virtual Port 6, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port6.dmission.lstick_right - -;ss, Virtual Port 6, Dual Mission: L Throttle Down (Analog) -ss.input.port6.dmission.lthrottle_down - -;ss, Virtual Port 6, Dual Mission: L Throttle Up (Analog) -ss.input.port6.dmission.lthrottle_up - -;ss, Virtual Port 6, Dual Mission: R -ss.input.port6.dmission.r - -;ss, Virtual Port 6, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port6.dmission.rstick_back - -;ss, Virtual Port 6, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port6.dmission.rstick_fore - -;ss, Virtual Port 6, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port6.dmission.rstick_left - -;ss, Virtual Port 6, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port6.dmission.rstick_right - -;ss, Virtual Port 6, Dual Mission: R Throttle Down (Analog) -ss.input.port6.dmission.rthrottle_down - -;ss, Virtual Port 6, Dual Mission: R Throttle Up (Analog) -ss.input.port6.dmission.rthrottle_up - -;ss, Virtual Port 6, Dual Mission: START -ss.input.port6.dmission.start - -;ss, Virtual Port 6, Dual Mission: X (L Stick Trigger) -ss.input.port6.dmission.x - -;ss, Virtual Port 6, Dual Mission: Y (L Stick Left Button) -ss.input.port6.dmission.y - -;ss, Virtual Port 6, Dual Mission: Z (L Stick Right Button) -ss.input.port6.dmission.z - -;ss, Virtual Port 6, Digital Gamepad: A -ss.input.port6.gamepad.a - -;ss, Virtual Port 6, Digital Gamepad: B -ss.input.port6.gamepad.b - -;ss, Virtual Port 6, Digital Gamepad: C -ss.input.port6.gamepad.c - -;ss, Virtual Port 6, Digital Gamepad: DOWN ↓ -ss.input.port6.gamepad.down - -;ss, Virtual Port 6, Digital Gamepad: LEFT ← -ss.input.port6.gamepad.left - -;ss, Virtual Port 6, Digital Gamepad: Left Shoulder -ss.input.port6.gamepad.ls - -;ss, Virtual Port 6, Digital Gamepad: RIGHT → -ss.input.port6.gamepad.right - -;ss, Virtual Port 6, Digital Gamepad: Right Shoulder -ss.input.port6.gamepad.rs - -;ss, Virtual Port 6, Digital Gamepad: START -ss.input.port6.gamepad.start - -;ss, Virtual Port 6, Digital Gamepad: UP ↑ -ss.input.port6.gamepad.up - -;ss, Virtual Port 6, Digital Gamepad: X -ss.input.port6.gamepad.x - -;ss, Virtual Port 6, Digital Gamepad: Y -ss.input.port6.gamepad.y - -;ss, Virtual Port 6, Digital Gamepad: Z -ss.input.port6.gamepad.z - -;ss, Virtual Port 6, Light Gun: Offscreen Shot(Simulated) -ss.input.port6.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 6, Light Gun: START -ss.input.port6.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 6, Light Gun: Trigger -ss.input.port6.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 6, Light Gun: X Axis -ss.input.port6.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 6, Light Gun: Y Axis -ss.input.port6.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 6. -ss.input.port6.gun_chairs 0x00FFFF - -;ss, Virtual Port 6, Keyboard (JP): 0(Zero) -ss.input.port6.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 6, Keyboard (JP): 1(One) -ss.input.port6.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 6, Keyboard (JP): 2 -ss.input.port6.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 6, Keyboard (JP): 3 -ss.input.port6.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 6, Keyboard (JP): 4 -ss.input.port6.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 6, Keyboard (JP): 5 -ss.input.port6.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 6, Keyboard (JP): 6 -ss.input.port6.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 6, Keyboard (JP): 7 -ss.input.port6.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 6, Keyboard (JP): 8 -ss.input.port6.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 6, Keyboard (JP): 9 -ss.input.port6.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 6, Keyboard (JP): A -ss.input.port6.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 6, Keyboard (JP): At @ -ss.input.port6.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 6, Keyboard (JP): B -ss.input.port6.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 6, Keyboard (JP): Backslash \ -ss.input.port6.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 6, Keyboard (JP): Backspace -ss.input.port6.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 6, Keyboard (JP): C -ss.input.port6.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 6, Keyboard (JP): Caps Lock/英数 -ss.input.port6.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 6, Keyboard (JP): Circumflex ^ -ss.input.port6.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 6, Keyboard (JP): Colon : -ss.input.port6.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 6, Keyboard (JP): Comma , -ss.input.port6.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 6, Keyboard (JP): 変換 -ss.input.port6.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 6, Keyboard (JP): D -ss.input.port6.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 6, Keyboard (JP): Delete -ss.input.port6.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 6, Keyboard (JP): Down -ss.input.port6.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 6, Keyboard (JP): E -ss.input.port6.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 6, Keyboard (JP): End -ss.input.port6.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 6, Keyboard (JP): Enter -ss.input.port6.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 6, Keyboard (JP): Escape -ss.input.port6.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 6, Keyboard (JP): F -ss.input.port6.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 6, Keyboard (JP): F1 -ss.input.port6.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 6, Keyboard (JP): F10 -ss.input.port6.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 6, Keyboard (JP): F11 -ss.input.port6.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 6, Keyboard (JP): F12 -ss.input.port6.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 6, Keyboard (JP): F2 -ss.input.port6.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 6, Keyboard (JP): F3 -ss.input.port6.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 6, Keyboard (JP): F4 -ss.input.port6.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 6, Keyboard (JP): F5 -ss.input.port6.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 6, Keyboard (JP): F6 -ss.input.port6.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 6, Keyboard (JP): F7 -ss.input.port6.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 6, Keyboard (JP): F8 -ss.input.port6.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 6, Keyboard (JP): F9 -ss.input.port6.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 6, Keyboard (JP): G -ss.input.port6.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 6, Keyboard (JP): H -ss.input.port6.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 6, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port6.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 6, Keyboard (JP): Home -ss.input.port6.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 6, Keyboard (JP): 半角/全角/漢字 -ss.input.port6.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 6, Keyboard (JP): I -ss.input.port6.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 6, Keyboard (JP): Insert -ss.input.port6.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 6, Keyboard (JP): J -ss.input.port6.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 6, Keyboard (JP): K -ss.input.port6.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 6, Keyboard (JP): L -ss.input.port6.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 6, Keyboard (JP): Left Alt -ss.input.port6.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 6, Keyboard (JP): Left Ctrl -ss.input.port6.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 6, Keyboard (JP): Cursor Left -ss.input.port6.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 6, Keyboard (JP): Left Bracket [ -ss.input.port6.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 6, Keyboard (JP): Left Shift -ss.input.port6.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 6, Keyboard (JP): M -ss.input.port6.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 6, Keyboard (JP): Minus - -ss.input.port6.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 6, Keyboard (JP): N -ss.input.port6.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 6, Keyboard (JP): 無変換 -ss.input.port6.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 6, Keyboard (JP): O -ss.input.port6.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 6, Keyboard (JP): P -ss.input.port6.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 6, Keyboard (JP): Page Down -ss.input.port6.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 6, Keyboard (JP): Page Up -ss.input.port6.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 6, Keyboard (JP): Pause -ss.input.port6.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 6, Keyboard (JP): Period . -ss.input.port6.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 6, Keyboard (JP): Print Screen -ss.input.port6.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 6, Keyboard (JP): Q -ss.input.port6.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 6, Keyboard (JP): R -ss.input.port6.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 6, Keyboard (JP): Right Alt -ss.input.port6.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 6, Keyboard (JP): Right Ctrl -ss.input.port6.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 6, Keyboard (JP): Right -ss.input.port6.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 6, Keyboard (JP): Right Bracket ] -ss.input.port6.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 6, Keyboard (JP): Right Shift -ss.input.port6.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 6, Keyboard (JP): S -ss.input.port6.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 6, Keyboard (JP): Scroll Lock -ss.input.port6.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 6, Keyboard (JP): Semicolon ; -ss.input.port6.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 6, Keyboard (JP): Slash / -ss.input.port6.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 6, Keyboard (JP): Space -ss.input.port6.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 6, Keyboard (JP): T -ss.input.port6.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 6, Keyboard (JP): Tab -ss.input.port6.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 6, Keyboard (JP): U -ss.input.port6.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 6, Keyboard (JP): Up -ss.input.port6.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 6, Keyboard (JP): V -ss.input.port6.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 6, Keyboard (JP): W -ss.input.port6.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 6, Keyboard (JP): X -ss.input.port6.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 6, Keyboard (JP): Y -ss.input.port6.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 6, Keyboard (JP): Yen ¥ -ss.input.port6.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 6, Keyboard (JP): Z -ss.input.port6.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 6, Keyboard (US): 0(Zero) -ss.input.port6.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 6, Keyboard (US): 1(One) -ss.input.port6.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 6, Keyboard (US): 2 -ss.input.port6.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 6, Keyboard (US): 3 -ss.input.port6.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 6, Keyboard (US): 4 -ss.input.port6.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 6, Keyboard (US): 5 -ss.input.port6.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 6, Keyboard (US): 6 -ss.input.port6.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 6, Keyboard (US): 7 -ss.input.port6.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 6, Keyboard (US): 8 -ss.input.port6.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 6, Keyboard (US): 9 -ss.input.port6.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 6, Keyboard (US): A -ss.input.port6.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 6, Keyboard (US): B -ss.input.port6.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 6, Keyboard (US): Backslash \ -ss.input.port6.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 6, Keyboard (US): Backspace -ss.input.port6.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 6, Keyboard (US): C -ss.input.port6.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 6, Keyboard (US): Caps Lock -ss.input.port6.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 6, Keyboard (US): Comma , -ss.input.port6.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 6, Keyboard (US): D -ss.input.port6.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 6, Keyboard (US): Delete -ss.input.port6.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 6, Keyboard (US): Down -ss.input.port6.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 6, Keyboard (US): E -ss.input.port6.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 6, Keyboard (US): End -ss.input.port6.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 6, Keyboard (US): Enter -ss.input.port6.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 6, Keyboard (US): Equals = -ss.input.port6.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 6, Keyboard (US): Escape -ss.input.port6.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 6, Keyboard (US): F -ss.input.port6.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 6, Keyboard (US): F1 -ss.input.port6.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 6, Keyboard (US): F10 -ss.input.port6.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 6, Keyboard (US): F11 -ss.input.port6.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 6, Keyboard (US): F12 -ss.input.port6.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 6, Keyboard (US): F2 -ss.input.port6.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 6, Keyboard (US): F3 -ss.input.port6.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 6, Keyboard (US): F4 -ss.input.port6.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 6, Keyboard (US): F5 -ss.input.port6.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 6, Keyboard (US): F6 -ss.input.port6.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 6, Keyboard (US): F7 -ss.input.port6.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 6, Keyboard (US): F8 -ss.input.port6.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 6, Keyboard (US): F9 -ss.input.port6.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 6, Keyboard (US): G -ss.input.port6.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 6, Keyboard (US): Grave ` -ss.input.port6.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 6, Keyboard (US): H -ss.input.port6.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 6, Keyboard (US): Home -ss.input.port6.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 6, Keyboard (US): I -ss.input.port6.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 6, Keyboard (US): Insert -ss.input.port6.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 6, Keyboard (US): J -ss.input.port6.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 6, Keyboard (US): K -ss.input.port6.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 6, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port6.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 6, Keyboard (US): Keypad Center/5 -ss.input.port6.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 6, Keyboard (US): Keypad Delete -ss.input.port6.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 6, Keyboard (US): Keypad Down/2 -ss.input.port6.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 6, Keyboard (US): Keypad End/1 -ss.input.port6.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 6, Keyboard (US): Keypad Enter -ss.input.port6.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 6, Keyboard (US): Keypad Home/7 -ss.input.port6.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 6, Keyboard (US): Keypad Insert/0 -ss.input.port6.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 6, Keyboard (US): Keypad Left/4 -ss.input.port6.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 6, Keyboard (US): Keypad Minus -ss.input.port6.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 6, Keyboard (US): Keypad Pagedown/3 -ss.input.port6.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 6, Keyboard (US): Keypad Pageup/9 -ss.input.port6.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 6, Keyboard (US): Keypad Plus -ss.input.port6.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 6, Keyboard (US): Keypad Right/6 -ss.input.port6.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 6, Keyboard (US): Keypad Slash(Divide) -ss.input.port6.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 6, Keyboard (US): Keypad Up/8 -ss.input.port6.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 6, Keyboard (US): L -ss.input.port6.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 6, Keyboard (US): Left Alt -ss.input.port6.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 6, Keyboard (US): Left Ctrl -ss.input.port6.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 6, Keyboard (US): Cursor Left -ss.input.port6.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 6, Keyboard (US): Left Bracket [ -ss.input.port6.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 6, Keyboard (US): Left Shift -ss.input.port6.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 6, Keyboard (US): M -ss.input.port6.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 6, Keyboard (US): Minus - -ss.input.port6.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 6, Keyboard (US): N -ss.input.port6.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 6, Keyboard (US): Num Lock -ss.input.port6.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 6, Keyboard (US): O -ss.input.port6.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 6, Keyboard (US): P -ss.input.port6.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 6, Keyboard (US): Page Down -ss.input.port6.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 6, Keyboard (US): Page Up -ss.input.port6.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 6, Keyboard (US): Pause -ss.input.port6.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 6, Keyboard (US): Period . -ss.input.port6.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 6, Keyboard (US): Print Screen -ss.input.port6.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 6, Keyboard (US): Q -ss.input.port6.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 6, Keyboard (US): Quote ' -ss.input.port6.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 6, Keyboard (US): R -ss.input.port6.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 6, Keyboard (US): Right Alt -ss.input.port6.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 6, Keyboard (US): Right Ctrl -ss.input.port6.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 6, Keyboard (US): Right -ss.input.port6.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 6, Keyboard (US): Right Bracket ] -ss.input.port6.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 6, Keyboard (US): Right Shift -ss.input.port6.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 6, Keyboard (US): S -ss.input.port6.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 6, Keyboard (US): Scroll Lock -ss.input.port6.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 6, Keyboard (US): Semicolon ; -ss.input.port6.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 6, Keyboard (US): Slash / -ss.input.port6.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 6, Keyboard (US): Space -ss.input.port6.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 6, Keyboard (US): T -ss.input.port6.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 6, Keyboard (US): Tab -ss.input.port6.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 6, Keyboard (US): U -ss.input.port6.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 6, Keyboard (US): Up -ss.input.port6.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 6, Keyboard (US): V -ss.input.port6.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 6, Keyboard (US): W -ss.input.port6.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 6, Keyboard (US): X -ss.input.port6.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 6, Keyboard (US): Y -ss.input.port6.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 6, Keyboard (US): Z -ss.input.port6.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 6, Mission Stick: A (Stick Trigger) -ss.input.port6.mission.a - -;ss, Virtual Port 6, Mission Stick: A AF -ss.input.port6.mission.afa - -;Default position for switch "A AF". -ss.input.port6.mission.afa.defpos off - -;ss, Virtual Port 6, Mission Stick: B AF -ss.input.port6.mission.afb - -;Default position for switch "B AF". -ss.input.port6.mission.afb.defpos off - -;ss, Virtual Port 6, Mission Stick: C AF -ss.input.port6.mission.afc - -;Default position for switch "C AF". -ss.input.port6.mission.afc.defpos off - -;ss, Virtual Port 6, Mission Stick: L AF -ss.input.port6.mission.afl - -;Default position for switch "L AF". -ss.input.port6.mission.afl.defpos off - -;ss, Virtual Port 6, Mission Stick: R AF -ss.input.port6.mission.afr - -;Default position for switch "R AF". -ss.input.port6.mission.afr.defpos off - -;ss, Virtual Port 6, Mission Stick: AF Speed -ss.input.port6.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port6.mission.afspeed.defpos 1 - -;ss, Virtual Port 6, Mission Stick: X AF -ss.input.port6.mission.afx - -;Default position for switch "X AF". -ss.input.port6.mission.afx.defpos off - -;ss, Virtual Port 6, Mission Stick: Y AF -ss.input.port6.mission.afy - -;Default position for switch "Y AF". -ss.input.port6.mission.afy.defpos off - -;ss, Virtual Port 6, Mission Stick: Z AF -ss.input.port6.mission.afz - -;Default position for switch "Z AF". -ss.input.port6.mission.afz.defpos off - -;ss, Virtual Port 6, Mission Stick: B (Stick Left Button) -ss.input.port6.mission.b - -;ss, Virtual Port 6, Mission Stick: C (Stick Right Button) -ss.input.port6.mission.c - -;ss, Virtual Port 6, Mission Stick: L -ss.input.port6.mission.l - -;ss, Virtual Port 6, Mission Stick: R -ss.input.port6.mission.r - -;ss, Virtual Port 6, Mission Stick: START -ss.input.port6.mission.start - -;ss, Virtual Port 6, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port6.mission.stick_back - -;ss, Virtual Port 6, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port6.mission.stick_fore - -;ss, Virtual Port 6, Mission Stick: Stick LEFT ← (Analog) -ss.input.port6.mission.stick_left - -;ss, Virtual Port 6, Mission Stick: Stick RIGHT → (Analog) -ss.input.port6.mission.stick_right - -;ss, Virtual Port 6, Mission Stick: Throttle Down (Analog) -ss.input.port6.mission.throttle_down - -;ss, Virtual Port 6, Mission Stick: Throttle Up (Analog) -ss.input.port6.mission.throttle_up - -;ss, Virtual Port 6, Mission Stick: X -ss.input.port6.mission.x - -;ss, Virtual Port 6, Mission Stick: Y -ss.input.port6.mission.y - -;ss, Virtual Port 6, Mission Stick: Z -ss.input.port6.mission.z - -;ss, Virtual Port 6, Mouse: Left Button -ss.input.port6.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 6, Mouse: Middle Button -ss.input.port6.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 6, Mouse: Motion Down -ss.input.port6.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 6, Mouse: Motion Left -ss.input.port6.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 6, Mouse: Motion Right -ss.input.port6.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 6, Mouse: Motion Up -ss.input.port6.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 6, Mouse: Right Button -ss.input.port6.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 6, Mouse: Start -ss.input.port6.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 6, Steering Wheel: A (R Group) -ss.input.port6.wheel.a - -;ss, Virtual Port 6, Steering Wheel: Analog LEFT ← -ss.input.port6.wheel.analog_left - -;ss, Virtual Port 6, Steering Wheel: Analog RIGHT → -ss.input.port6.wheel.analog_right - -;ss, Virtual Port 6, Steering Wheel: B (R Group) -ss.input.port6.wheel.b - -;ss, Virtual Port 6, Steering Wheel: C (R Group) -ss.input.port6.wheel.c - -;ss, Virtual Port 6, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port6.wheel.down - -;ss, Virtual Port 6, Steering Wheel: START -ss.input.port6.wheel.start - -;ss, Virtual Port 6, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port6.wheel.up - -;ss, Virtual Port 6, Steering Wheel: X (L Group) -ss.input.port6.wheel.x - -;ss, Virtual Port 6, Steering Wheel: Y (L Group) -ss.input.port6.wheel.y - -;ss, Virtual Port 6, Steering Wheel: Z (L Group) -ss.input.port6.wheel.z - -;Input device for Virtual Port 7 -ss.input.port7 gamepad - -;ss, Virtual Port 7, 3D Control Pad: A -ss.input.port7.3dpad.a - -;ss, Virtual Port 7, 3D Control Pad: Analog DOWN ↓ -ss.input.port7.3dpad.analog_down - -;ss, Virtual Port 7, 3D Control Pad: Analog LEFT ← -ss.input.port7.3dpad.analog_left - -;ss, Virtual Port 7, 3D Control Pad: Analog RIGHT → -ss.input.port7.3dpad.analog_right - -;ss, Virtual Port 7, 3D Control Pad: Analog UP ↑ -ss.input.port7.3dpad.analog_up - -;ss, Virtual Port 7, 3D Control Pad: B -ss.input.port7.3dpad.b - -;ss, Virtual Port 7, 3D Control Pad: C -ss.input.port7.3dpad.c - -;ss, Virtual Port 7, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port7.3dpad.down - -;ss, Virtual Port 7, 3D Control Pad: D-Pad LEFT ← -ss.input.port7.3dpad.left - -;ss, Virtual Port 7, 3D Control Pad: Left Shoulder (Analog) -ss.input.port7.3dpad.ls - -;ss, Virtual Port 7, 3D Control Pad: Mode -ss.input.port7.3dpad.mode - -;Default position for switch "Mode". -ss.input.port7.3dpad.mode.defpos digital - -;ss, Virtual Port 7, 3D Control Pad: D-Pad RIGHT → -ss.input.port7.3dpad.right - -;ss, Virtual Port 7, 3D Control Pad: Right Shoulder (Analog) -ss.input.port7.3dpad.rs - -;ss, Virtual Port 7, 3D Control Pad: START -ss.input.port7.3dpad.start - -;ss, Virtual Port 7, 3D Control Pad: D-Pad UP ↑ -ss.input.port7.3dpad.up - -;ss, Virtual Port 7, 3D Control Pad: X -ss.input.port7.3dpad.x - -;ss, Virtual Port 7, 3D Control Pad: Y -ss.input.port7.3dpad.y - -;ss, Virtual Port 7, 3D Control Pad: Z -ss.input.port7.3dpad.z - -;ss, Virtual Port 7, Dual Mission: A (R Stick Trigger) -ss.input.port7.dmission.a - -;ss, Virtual Port 7, Dual Mission: A AF -ss.input.port7.dmission.afa - -;Default position for switch "A AF". -ss.input.port7.dmission.afa.defpos off - -;ss, Virtual Port 7, Dual Mission: B AF -ss.input.port7.dmission.afb - -;Default position for switch "B AF". -ss.input.port7.dmission.afb.defpos off - -;ss, Virtual Port 7, Dual Mission: C AF -ss.input.port7.dmission.afc - -;Default position for switch "C AF". -ss.input.port7.dmission.afc.defpos off - -;ss, Virtual Port 7, Dual Mission: L AF -ss.input.port7.dmission.afl - -;Default position for switch "L AF". -ss.input.port7.dmission.afl.defpos off - -;ss, Virtual Port 7, Dual Mission: R AF -ss.input.port7.dmission.afr - -;Default position for switch "R AF". -ss.input.port7.dmission.afr.defpos off - -;ss, Virtual Port 7, Dual Mission: Autofire Speed -ss.input.port7.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port7.dmission.afspeed.defpos 1 - -;ss, Virtual Port 7, Dual Mission: X AF -ss.input.port7.dmission.afx - -;Default position for switch "X AF". -ss.input.port7.dmission.afx.defpos off - -;ss, Virtual Port 7, Dual Mission: Y AF -ss.input.port7.dmission.afy - -;Default position for switch "Y AF". -ss.input.port7.dmission.afy.defpos off - -;ss, Virtual Port 7, Dual Mission: Z AF -ss.input.port7.dmission.afz - -;Default position for switch "Z AF". -ss.input.port7.dmission.afz.defpos off - -;ss, Virtual Port 7, Dual Mission: B (R Stick Left Button) -ss.input.port7.dmission.b - -;ss, Virtual Port 7, Dual Mission: C (R Stick Right Button) -ss.input.port7.dmission.c - -;ss, Virtual Port 7, Dual Mission: L -ss.input.port7.dmission.l - -;ss, Virtual Port 7, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port7.dmission.lstick_back - -;ss, Virtual Port 7, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port7.dmission.lstick_fore - -;ss, Virtual Port 7, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port7.dmission.lstick_left - -;ss, Virtual Port 7, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port7.dmission.lstick_right - -;ss, Virtual Port 7, Dual Mission: L Throttle Down (Analog) -ss.input.port7.dmission.lthrottle_down - -;ss, Virtual Port 7, Dual Mission: L Throttle Up (Analog) -ss.input.port7.dmission.lthrottle_up - -;ss, Virtual Port 7, Dual Mission: R -ss.input.port7.dmission.r - -;ss, Virtual Port 7, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port7.dmission.rstick_back - -;ss, Virtual Port 7, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port7.dmission.rstick_fore - -;ss, Virtual Port 7, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port7.dmission.rstick_left - -;ss, Virtual Port 7, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port7.dmission.rstick_right - -;ss, Virtual Port 7, Dual Mission: R Throttle Down (Analog) -ss.input.port7.dmission.rthrottle_down - -;ss, Virtual Port 7, Dual Mission: R Throttle Up (Analog) -ss.input.port7.dmission.rthrottle_up - -;ss, Virtual Port 7, Dual Mission: START -ss.input.port7.dmission.start - -;ss, Virtual Port 7, Dual Mission: X (L Stick Trigger) -ss.input.port7.dmission.x - -;ss, Virtual Port 7, Dual Mission: Y (L Stick Left Button) -ss.input.port7.dmission.y - -;ss, Virtual Port 7, Dual Mission: Z (L Stick Right Button) -ss.input.port7.dmission.z - -;ss, Virtual Port 7, Digital Gamepad: A -ss.input.port7.gamepad.a - -;ss, Virtual Port 7, Digital Gamepad: B -ss.input.port7.gamepad.b - -;ss, Virtual Port 7, Digital Gamepad: C -ss.input.port7.gamepad.c - -;ss, Virtual Port 7, Digital Gamepad: DOWN ↓ -ss.input.port7.gamepad.down - -;ss, Virtual Port 7, Digital Gamepad: LEFT ← -ss.input.port7.gamepad.left - -;ss, Virtual Port 7, Digital Gamepad: Left Shoulder -ss.input.port7.gamepad.ls - -;ss, Virtual Port 7, Digital Gamepad: RIGHT → -ss.input.port7.gamepad.right - -;ss, Virtual Port 7, Digital Gamepad: Right Shoulder -ss.input.port7.gamepad.rs - -;ss, Virtual Port 7, Digital Gamepad: START -ss.input.port7.gamepad.start - -;ss, Virtual Port 7, Digital Gamepad: UP ↑ -ss.input.port7.gamepad.up - -;ss, Virtual Port 7, Digital Gamepad: X -ss.input.port7.gamepad.x - -;ss, Virtual Port 7, Digital Gamepad: Y -ss.input.port7.gamepad.y - -;ss, Virtual Port 7, Digital Gamepad: Z -ss.input.port7.gamepad.z - -;ss, Virtual Port 7, Light Gun: Offscreen Shot(Simulated) -ss.input.port7.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 7, Light Gun: START -ss.input.port7.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 7, Light Gun: Trigger -ss.input.port7.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 7, Light Gun: X Axis -ss.input.port7.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 7, Light Gun: Y Axis -ss.input.port7.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 7. -ss.input.port7.gun_chairs 0x0080FF - -;ss, Virtual Port 7, Keyboard (JP): 0(Zero) -ss.input.port7.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 7, Keyboard (JP): 1(One) -ss.input.port7.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 7, Keyboard (JP): 2 -ss.input.port7.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 7, Keyboard (JP): 3 -ss.input.port7.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 7, Keyboard (JP): 4 -ss.input.port7.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 7, Keyboard (JP): 5 -ss.input.port7.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 7, Keyboard (JP): 6 -ss.input.port7.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 7, Keyboard (JP): 7 -ss.input.port7.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 7, Keyboard (JP): 8 -ss.input.port7.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 7, Keyboard (JP): 9 -ss.input.port7.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 7, Keyboard (JP): A -ss.input.port7.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 7, Keyboard (JP): At @ -ss.input.port7.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 7, Keyboard (JP): B -ss.input.port7.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 7, Keyboard (JP): Backslash \ -ss.input.port7.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 7, Keyboard (JP): Backspace -ss.input.port7.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 7, Keyboard (JP): C -ss.input.port7.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 7, Keyboard (JP): Caps Lock/英数 -ss.input.port7.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 7, Keyboard (JP): Circumflex ^ -ss.input.port7.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 7, Keyboard (JP): Colon : -ss.input.port7.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 7, Keyboard (JP): Comma , -ss.input.port7.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 7, Keyboard (JP): 変換 -ss.input.port7.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 7, Keyboard (JP): D -ss.input.port7.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 7, Keyboard (JP): Delete -ss.input.port7.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 7, Keyboard (JP): Down -ss.input.port7.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 7, Keyboard (JP): E -ss.input.port7.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 7, Keyboard (JP): End -ss.input.port7.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 7, Keyboard (JP): Enter -ss.input.port7.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 7, Keyboard (JP): Escape -ss.input.port7.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 7, Keyboard (JP): F -ss.input.port7.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 7, Keyboard (JP): F1 -ss.input.port7.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 7, Keyboard (JP): F10 -ss.input.port7.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 7, Keyboard (JP): F11 -ss.input.port7.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 7, Keyboard (JP): F12 -ss.input.port7.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 7, Keyboard (JP): F2 -ss.input.port7.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 7, Keyboard (JP): F3 -ss.input.port7.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 7, Keyboard (JP): F4 -ss.input.port7.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 7, Keyboard (JP): F5 -ss.input.port7.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 7, Keyboard (JP): F6 -ss.input.port7.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 7, Keyboard (JP): F7 -ss.input.port7.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 7, Keyboard (JP): F8 -ss.input.port7.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 7, Keyboard (JP): F9 -ss.input.port7.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 7, Keyboard (JP): G -ss.input.port7.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 7, Keyboard (JP): H -ss.input.port7.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 7, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port7.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 7, Keyboard (JP): Home -ss.input.port7.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 7, Keyboard (JP): 半角/全角/漢字 -ss.input.port7.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 7, Keyboard (JP): I -ss.input.port7.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 7, Keyboard (JP): Insert -ss.input.port7.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 7, Keyboard (JP): J -ss.input.port7.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 7, Keyboard (JP): K -ss.input.port7.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 7, Keyboard (JP): L -ss.input.port7.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 7, Keyboard (JP): Left Alt -ss.input.port7.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 7, Keyboard (JP): Left Ctrl -ss.input.port7.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 7, Keyboard (JP): Cursor Left -ss.input.port7.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 7, Keyboard (JP): Left Bracket [ -ss.input.port7.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 7, Keyboard (JP): Left Shift -ss.input.port7.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 7, Keyboard (JP): M -ss.input.port7.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 7, Keyboard (JP): Minus - -ss.input.port7.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 7, Keyboard (JP): N -ss.input.port7.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 7, Keyboard (JP): 無変換 -ss.input.port7.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 7, Keyboard (JP): O -ss.input.port7.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 7, Keyboard (JP): P -ss.input.port7.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 7, Keyboard (JP): Page Down -ss.input.port7.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 7, Keyboard (JP): Page Up -ss.input.port7.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 7, Keyboard (JP): Pause -ss.input.port7.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 7, Keyboard (JP): Period . -ss.input.port7.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 7, Keyboard (JP): Print Screen -ss.input.port7.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 7, Keyboard (JP): Q -ss.input.port7.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 7, Keyboard (JP): R -ss.input.port7.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 7, Keyboard (JP): Right Alt -ss.input.port7.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 7, Keyboard (JP): Right Ctrl -ss.input.port7.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 7, Keyboard (JP): Right -ss.input.port7.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 7, Keyboard (JP): Right Bracket ] -ss.input.port7.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 7, Keyboard (JP): Right Shift -ss.input.port7.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 7, Keyboard (JP): S -ss.input.port7.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 7, Keyboard (JP): Scroll Lock -ss.input.port7.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 7, Keyboard (JP): Semicolon ; -ss.input.port7.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 7, Keyboard (JP): Slash / -ss.input.port7.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 7, Keyboard (JP): Space -ss.input.port7.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 7, Keyboard (JP): T -ss.input.port7.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 7, Keyboard (JP): Tab -ss.input.port7.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 7, Keyboard (JP): U -ss.input.port7.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 7, Keyboard (JP): Up -ss.input.port7.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 7, Keyboard (JP): V -ss.input.port7.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 7, Keyboard (JP): W -ss.input.port7.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 7, Keyboard (JP): X -ss.input.port7.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 7, Keyboard (JP): Y -ss.input.port7.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 7, Keyboard (JP): Yen ¥ -ss.input.port7.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 7, Keyboard (JP): Z -ss.input.port7.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 7, Keyboard (US): 0(Zero) -ss.input.port7.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 7, Keyboard (US): 1(One) -ss.input.port7.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 7, Keyboard (US): 2 -ss.input.port7.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 7, Keyboard (US): 3 -ss.input.port7.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 7, Keyboard (US): 4 -ss.input.port7.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 7, Keyboard (US): 5 -ss.input.port7.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 7, Keyboard (US): 6 -ss.input.port7.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 7, Keyboard (US): 7 -ss.input.port7.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 7, Keyboard (US): 8 -ss.input.port7.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 7, Keyboard (US): 9 -ss.input.port7.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 7, Keyboard (US): A -ss.input.port7.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 7, Keyboard (US): B -ss.input.port7.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 7, Keyboard (US): Backslash \ -ss.input.port7.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 7, Keyboard (US): Backspace -ss.input.port7.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 7, Keyboard (US): C -ss.input.port7.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 7, Keyboard (US): Caps Lock -ss.input.port7.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 7, Keyboard (US): Comma , -ss.input.port7.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 7, Keyboard (US): D -ss.input.port7.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 7, Keyboard (US): Delete -ss.input.port7.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 7, Keyboard (US): Down -ss.input.port7.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 7, Keyboard (US): E -ss.input.port7.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 7, Keyboard (US): End -ss.input.port7.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 7, Keyboard (US): Enter -ss.input.port7.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 7, Keyboard (US): Equals = -ss.input.port7.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 7, Keyboard (US): Escape -ss.input.port7.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 7, Keyboard (US): F -ss.input.port7.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 7, Keyboard (US): F1 -ss.input.port7.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 7, Keyboard (US): F10 -ss.input.port7.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 7, Keyboard (US): F11 -ss.input.port7.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 7, Keyboard (US): F12 -ss.input.port7.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 7, Keyboard (US): F2 -ss.input.port7.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 7, Keyboard (US): F3 -ss.input.port7.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 7, Keyboard (US): F4 -ss.input.port7.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 7, Keyboard (US): F5 -ss.input.port7.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 7, Keyboard (US): F6 -ss.input.port7.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 7, Keyboard (US): F7 -ss.input.port7.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 7, Keyboard (US): F8 -ss.input.port7.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 7, Keyboard (US): F9 -ss.input.port7.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 7, Keyboard (US): G -ss.input.port7.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 7, Keyboard (US): Grave ` -ss.input.port7.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 7, Keyboard (US): H -ss.input.port7.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 7, Keyboard (US): Home -ss.input.port7.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 7, Keyboard (US): I -ss.input.port7.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 7, Keyboard (US): Insert -ss.input.port7.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 7, Keyboard (US): J -ss.input.port7.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 7, Keyboard (US): K -ss.input.port7.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 7, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port7.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 7, Keyboard (US): Keypad Center/5 -ss.input.port7.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 7, Keyboard (US): Keypad Delete -ss.input.port7.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 7, Keyboard (US): Keypad Down/2 -ss.input.port7.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 7, Keyboard (US): Keypad End/1 -ss.input.port7.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 7, Keyboard (US): Keypad Enter -ss.input.port7.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 7, Keyboard (US): Keypad Home/7 -ss.input.port7.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 7, Keyboard (US): Keypad Insert/0 -ss.input.port7.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 7, Keyboard (US): Keypad Left/4 -ss.input.port7.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 7, Keyboard (US): Keypad Minus -ss.input.port7.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 7, Keyboard (US): Keypad Pagedown/3 -ss.input.port7.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 7, Keyboard (US): Keypad Pageup/9 -ss.input.port7.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 7, Keyboard (US): Keypad Plus -ss.input.port7.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 7, Keyboard (US): Keypad Right/6 -ss.input.port7.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 7, Keyboard (US): Keypad Slash(Divide) -ss.input.port7.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 7, Keyboard (US): Keypad Up/8 -ss.input.port7.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 7, Keyboard (US): L -ss.input.port7.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 7, Keyboard (US): Left Alt -ss.input.port7.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 7, Keyboard (US): Left Ctrl -ss.input.port7.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 7, Keyboard (US): Cursor Left -ss.input.port7.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 7, Keyboard (US): Left Bracket [ -ss.input.port7.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 7, Keyboard (US): Left Shift -ss.input.port7.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 7, Keyboard (US): M -ss.input.port7.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 7, Keyboard (US): Minus - -ss.input.port7.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 7, Keyboard (US): N -ss.input.port7.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 7, Keyboard (US): Num Lock -ss.input.port7.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 7, Keyboard (US): O -ss.input.port7.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 7, Keyboard (US): P -ss.input.port7.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 7, Keyboard (US): Page Down -ss.input.port7.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 7, Keyboard (US): Page Up -ss.input.port7.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 7, Keyboard (US): Pause -ss.input.port7.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 7, Keyboard (US): Period . -ss.input.port7.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 7, Keyboard (US): Print Screen -ss.input.port7.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 7, Keyboard (US): Q -ss.input.port7.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 7, Keyboard (US): Quote ' -ss.input.port7.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 7, Keyboard (US): R -ss.input.port7.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 7, Keyboard (US): Right Alt -ss.input.port7.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 7, Keyboard (US): Right Ctrl -ss.input.port7.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 7, Keyboard (US): Right -ss.input.port7.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 7, Keyboard (US): Right Bracket ] -ss.input.port7.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 7, Keyboard (US): Right Shift -ss.input.port7.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 7, Keyboard (US): S -ss.input.port7.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 7, Keyboard (US): Scroll Lock -ss.input.port7.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 7, Keyboard (US): Semicolon ; -ss.input.port7.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 7, Keyboard (US): Slash / -ss.input.port7.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 7, Keyboard (US): Space -ss.input.port7.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 7, Keyboard (US): T -ss.input.port7.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 7, Keyboard (US): Tab -ss.input.port7.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 7, Keyboard (US): U -ss.input.port7.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 7, Keyboard (US): Up -ss.input.port7.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 7, Keyboard (US): V -ss.input.port7.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 7, Keyboard (US): W -ss.input.port7.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 7, Keyboard (US): X -ss.input.port7.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 7, Keyboard (US): Y -ss.input.port7.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 7, Keyboard (US): Z -ss.input.port7.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 7, Mission Stick: A (Stick Trigger) -ss.input.port7.mission.a - -;ss, Virtual Port 7, Mission Stick: A AF -ss.input.port7.mission.afa - -;Default position for switch "A AF". -ss.input.port7.mission.afa.defpos off - -;ss, Virtual Port 7, Mission Stick: B AF -ss.input.port7.mission.afb - -;Default position for switch "B AF". -ss.input.port7.mission.afb.defpos off - -;ss, Virtual Port 7, Mission Stick: C AF -ss.input.port7.mission.afc - -;Default position for switch "C AF". -ss.input.port7.mission.afc.defpos off - -;ss, Virtual Port 7, Mission Stick: L AF -ss.input.port7.mission.afl - -;Default position for switch "L AF". -ss.input.port7.mission.afl.defpos off - -;ss, Virtual Port 7, Mission Stick: R AF -ss.input.port7.mission.afr - -;Default position for switch "R AF". -ss.input.port7.mission.afr.defpos off - -;ss, Virtual Port 7, Mission Stick: AF Speed -ss.input.port7.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port7.mission.afspeed.defpos 1 - -;ss, Virtual Port 7, Mission Stick: X AF -ss.input.port7.mission.afx - -;Default position for switch "X AF". -ss.input.port7.mission.afx.defpos off - -;ss, Virtual Port 7, Mission Stick: Y AF -ss.input.port7.mission.afy - -;Default position for switch "Y AF". -ss.input.port7.mission.afy.defpos off - -;ss, Virtual Port 7, Mission Stick: Z AF -ss.input.port7.mission.afz - -;Default position for switch "Z AF". -ss.input.port7.mission.afz.defpos off - -;ss, Virtual Port 7, Mission Stick: B (Stick Left Button) -ss.input.port7.mission.b - -;ss, Virtual Port 7, Mission Stick: C (Stick Right Button) -ss.input.port7.mission.c - -;ss, Virtual Port 7, Mission Stick: L -ss.input.port7.mission.l - -;ss, Virtual Port 7, Mission Stick: R -ss.input.port7.mission.r - -;ss, Virtual Port 7, Mission Stick: START -ss.input.port7.mission.start - -;ss, Virtual Port 7, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port7.mission.stick_back - -;ss, Virtual Port 7, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port7.mission.stick_fore - -;ss, Virtual Port 7, Mission Stick: Stick LEFT ← (Analog) -ss.input.port7.mission.stick_left - -;ss, Virtual Port 7, Mission Stick: Stick RIGHT → (Analog) -ss.input.port7.mission.stick_right - -;ss, Virtual Port 7, Mission Stick: Throttle Down (Analog) -ss.input.port7.mission.throttle_down - -;ss, Virtual Port 7, Mission Stick: Throttle Up (Analog) -ss.input.port7.mission.throttle_up - -;ss, Virtual Port 7, Mission Stick: X -ss.input.port7.mission.x - -;ss, Virtual Port 7, Mission Stick: Y -ss.input.port7.mission.y - -;ss, Virtual Port 7, Mission Stick: Z -ss.input.port7.mission.z - -;ss, Virtual Port 7, Mouse: Left Button -ss.input.port7.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 7, Mouse: Middle Button -ss.input.port7.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 7, Mouse: Motion Down -ss.input.port7.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 7, Mouse: Motion Left -ss.input.port7.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 7, Mouse: Motion Right -ss.input.port7.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 7, Mouse: Motion Up -ss.input.port7.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 7, Mouse: Right Button -ss.input.port7.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 7, Mouse: Start -ss.input.port7.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 7, Steering Wheel: A (R Group) -ss.input.port7.wheel.a - -;ss, Virtual Port 7, Steering Wheel: Analog LEFT ← -ss.input.port7.wheel.analog_left - -;ss, Virtual Port 7, Steering Wheel: Analog RIGHT → -ss.input.port7.wheel.analog_right - -;ss, Virtual Port 7, Steering Wheel: B (R Group) -ss.input.port7.wheel.b - -;ss, Virtual Port 7, Steering Wheel: C (R Group) -ss.input.port7.wheel.c - -;ss, Virtual Port 7, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port7.wheel.down - -;ss, Virtual Port 7, Steering Wheel: START -ss.input.port7.wheel.start - -;ss, Virtual Port 7, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port7.wheel.up - -;ss, Virtual Port 7, Steering Wheel: X (L Group) -ss.input.port7.wheel.x - -;ss, Virtual Port 7, Steering Wheel: Y (L Group) -ss.input.port7.wheel.y - -;ss, Virtual Port 7, Steering Wheel: Z (L Group) -ss.input.port7.wheel.z - -;Input device for Virtual Port 8 -ss.input.port8 gamepad - -;ss, Virtual Port 8, 3D Control Pad: A -ss.input.port8.3dpad.a - -;ss, Virtual Port 8, 3D Control Pad: Analog DOWN ↓ -ss.input.port8.3dpad.analog_down - -;ss, Virtual Port 8, 3D Control Pad: Analog LEFT ← -ss.input.port8.3dpad.analog_left - -;ss, Virtual Port 8, 3D Control Pad: Analog RIGHT → -ss.input.port8.3dpad.analog_right - -;ss, Virtual Port 8, 3D Control Pad: Analog UP ↑ -ss.input.port8.3dpad.analog_up - -;ss, Virtual Port 8, 3D Control Pad: B -ss.input.port8.3dpad.b - -;ss, Virtual Port 8, 3D Control Pad: C -ss.input.port8.3dpad.c - -;ss, Virtual Port 8, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port8.3dpad.down - -;ss, Virtual Port 8, 3D Control Pad: D-Pad LEFT ← -ss.input.port8.3dpad.left - -;ss, Virtual Port 8, 3D Control Pad: Left Shoulder (Analog) -ss.input.port8.3dpad.ls - -;ss, Virtual Port 8, 3D Control Pad: Mode -ss.input.port8.3dpad.mode - -;Default position for switch "Mode". -ss.input.port8.3dpad.mode.defpos digital - -;ss, Virtual Port 8, 3D Control Pad: D-Pad RIGHT → -ss.input.port8.3dpad.right - -;ss, Virtual Port 8, 3D Control Pad: Right Shoulder (Analog) -ss.input.port8.3dpad.rs - -;ss, Virtual Port 8, 3D Control Pad: START -ss.input.port8.3dpad.start - -;ss, Virtual Port 8, 3D Control Pad: D-Pad UP ↑ -ss.input.port8.3dpad.up - -;ss, Virtual Port 8, 3D Control Pad: X -ss.input.port8.3dpad.x - -;ss, Virtual Port 8, 3D Control Pad: Y -ss.input.port8.3dpad.y - -;ss, Virtual Port 8, 3D Control Pad: Z -ss.input.port8.3dpad.z - -;ss, Virtual Port 8, Dual Mission: A (R Stick Trigger) -ss.input.port8.dmission.a - -;ss, Virtual Port 8, Dual Mission: A AF -ss.input.port8.dmission.afa - -;Default position for switch "A AF". -ss.input.port8.dmission.afa.defpos off - -;ss, Virtual Port 8, Dual Mission: B AF -ss.input.port8.dmission.afb - -;Default position for switch "B AF". -ss.input.port8.dmission.afb.defpos off - -;ss, Virtual Port 8, Dual Mission: C AF -ss.input.port8.dmission.afc - -;Default position for switch "C AF". -ss.input.port8.dmission.afc.defpos off - -;ss, Virtual Port 8, Dual Mission: L AF -ss.input.port8.dmission.afl - -;Default position for switch "L AF". -ss.input.port8.dmission.afl.defpos off - -;ss, Virtual Port 8, Dual Mission: R AF -ss.input.port8.dmission.afr - -;Default position for switch "R AF". -ss.input.port8.dmission.afr.defpos off - -;ss, Virtual Port 8, Dual Mission: Autofire Speed -ss.input.port8.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port8.dmission.afspeed.defpos 1 - -;ss, Virtual Port 8, Dual Mission: X AF -ss.input.port8.dmission.afx - -;Default position for switch "X AF". -ss.input.port8.dmission.afx.defpos off - -;ss, Virtual Port 8, Dual Mission: Y AF -ss.input.port8.dmission.afy - -;Default position for switch "Y AF". -ss.input.port8.dmission.afy.defpos off - -;ss, Virtual Port 8, Dual Mission: Z AF -ss.input.port8.dmission.afz - -;Default position for switch "Z AF". -ss.input.port8.dmission.afz.defpos off - -;ss, Virtual Port 8, Dual Mission: B (R Stick Left Button) -ss.input.port8.dmission.b - -;ss, Virtual Port 8, Dual Mission: C (R Stick Right Button) -ss.input.port8.dmission.c - -;ss, Virtual Port 8, Dual Mission: L -ss.input.port8.dmission.l - -;ss, Virtual Port 8, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port8.dmission.lstick_back - -;ss, Virtual Port 8, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port8.dmission.lstick_fore - -;ss, Virtual Port 8, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port8.dmission.lstick_left - -;ss, Virtual Port 8, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port8.dmission.lstick_right - -;ss, Virtual Port 8, Dual Mission: L Throttle Down (Analog) -ss.input.port8.dmission.lthrottle_down - -;ss, Virtual Port 8, Dual Mission: L Throttle Up (Analog) -ss.input.port8.dmission.lthrottle_up - -;ss, Virtual Port 8, Dual Mission: R -ss.input.port8.dmission.r - -;ss, Virtual Port 8, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port8.dmission.rstick_back - -;ss, Virtual Port 8, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port8.dmission.rstick_fore - -;ss, Virtual Port 8, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port8.dmission.rstick_left - -;ss, Virtual Port 8, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port8.dmission.rstick_right - -;ss, Virtual Port 8, Dual Mission: R Throttle Down (Analog) -ss.input.port8.dmission.rthrottle_down - -;ss, Virtual Port 8, Dual Mission: R Throttle Up (Analog) -ss.input.port8.dmission.rthrottle_up - -;ss, Virtual Port 8, Dual Mission: START -ss.input.port8.dmission.start - -;ss, Virtual Port 8, Dual Mission: X (L Stick Trigger) -ss.input.port8.dmission.x - -;ss, Virtual Port 8, Dual Mission: Y (L Stick Left Button) -ss.input.port8.dmission.y - -;ss, Virtual Port 8, Dual Mission: Z (L Stick Right Button) -ss.input.port8.dmission.z - -;ss, Virtual Port 8, Digital Gamepad: A -ss.input.port8.gamepad.a - -;ss, Virtual Port 8, Digital Gamepad: B -ss.input.port8.gamepad.b - -;ss, Virtual Port 8, Digital Gamepad: C -ss.input.port8.gamepad.c - -;ss, Virtual Port 8, Digital Gamepad: DOWN ↓ -ss.input.port8.gamepad.down - -;ss, Virtual Port 8, Digital Gamepad: LEFT ← -ss.input.port8.gamepad.left - -;ss, Virtual Port 8, Digital Gamepad: Left Shoulder -ss.input.port8.gamepad.ls - -;ss, Virtual Port 8, Digital Gamepad: RIGHT → -ss.input.port8.gamepad.right - -;ss, Virtual Port 8, Digital Gamepad: Right Shoulder -ss.input.port8.gamepad.rs - -;ss, Virtual Port 8, Digital Gamepad: START -ss.input.port8.gamepad.start - -;ss, Virtual Port 8, Digital Gamepad: UP ↑ -ss.input.port8.gamepad.up - -;ss, Virtual Port 8, Digital Gamepad: X -ss.input.port8.gamepad.x - -;ss, Virtual Port 8, Digital Gamepad: Y -ss.input.port8.gamepad.y - -;ss, Virtual Port 8, Digital Gamepad: Z -ss.input.port8.gamepad.z - -;ss, Virtual Port 8, Light Gun: Offscreen Shot(Simulated) -ss.input.port8.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 8, Light Gun: START -ss.input.port8.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 8, Light Gun: Trigger -ss.input.port8.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 8, Light Gun: X Axis -ss.input.port8.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 8, Light Gun: Y Axis -ss.input.port8.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 8. -ss.input.port8.gun_chairs 0x8000FF - -;ss, Virtual Port 8, Keyboard (JP): 0(Zero) -ss.input.port8.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 8, Keyboard (JP): 1(One) -ss.input.port8.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 8, Keyboard (JP): 2 -ss.input.port8.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 8, Keyboard (JP): 3 -ss.input.port8.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 8, Keyboard (JP): 4 -ss.input.port8.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 8, Keyboard (JP): 5 -ss.input.port8.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 8, Keyboard (JP): 6 -ss.input.port8.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 8, Keyboard (JP): 7 -ss.input.port8.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 8, Keyboard (JP): 8 -ss.input.port8.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 8, Keyboard (JP): 9 -ss.input.port8.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 8, Keyboard (JP): A -ss.input.port8.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 8, Keyboard (JP): At @ -ss.input.port8.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 8, Keyboard (JP): B -ss.input.port8.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 8, Keyboard (JP): Backslash \ -ss.input.port8.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 8, Keyboard (JP): Backspace -ss.input.port8.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 8, Keyboard (JP): C -ss.input.port8.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 8, Keyboard (JP): Caps Lock/英数 -ss.input.port8.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 8, Keyboard (JP): Circumflex ^ -ss.input.port8.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 8, Keyboard (JP): Colon : -ss.input.port8.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 8, Keyboard (JP): Comma , -ss.input.port8.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 8, Keyboard (JP): 変換 -ss.input.port8.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 8, Keyboard (JP): D -ss.input.port8.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 8, Keyboard (JP): Delete -ss.input.port8.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 8, Keyboard (JP): Down -ss.input.port8.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 8, Keyboard (JP): E -ss.input.port8.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 8, Keyboard (JP): End -ss.input.port8.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 8, Keyboard (JP): Enter -ss.input.port8.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 8, Keyboard (JP): Escape -ss.input.port8.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 8, Keyboard (JP): F -ss.input.port8.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 8, Keyboard (JP): F1 -ss.input.port8.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 8, Keyboard (JP): F10 -ss.input.port8.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 8, Keyboard (JP): F11 -ss.input.port8.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 8, Keyboard (JP): F12 -ss.input.port8.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 8, Keyboard (JP): F2 -ss.input.port8.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 8, Keyboard (JP): F3 -ss.input.port8.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 8, Keyboard (JP): F4 -ss.input.port8.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 8, Keyboard (JP): F5 -ss.input.port8.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 8, Keyboard (JP): F6 -ss.input.port8.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 8, Keyboard (JP): F7 -ss.input.port8.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 8, Keyboard (JP): F8 -ss.input.port8.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 8, Keyboard (JP): F9 -ss.input.port8.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 8, Keyboard (JP): G -ss.input.port8.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 8, Keyboard (JP): H -ss.input.port8.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 8, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port8.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 8, Keyboard (JP): Home -ss.input.port8.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 8, Keyboard (JP): 半角/全角/漢字 -ss.input.port8.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 8, Keyboard (JP): I -ss.input.port8.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 8, Keyboard (JP): Insert -ss.input.port8.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 8, Keyboard (JP): J -ss.input.port8.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 8, Keyboard (JP): K -ss.input.port8.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 8, Keyboard (JP): L -ss.input.port8.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 8, Keyboard (JP): Left Alt -ss.input.port8.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 8, Keyboard (JP): Left Ctrl -ss.input.port8.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 8, Keyboard (JP): Cursor Left -ss.input.port8.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 8, Keyboard (JP): Left Bracket [ -ss.input.port8.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 8, Keyboard (JP): Left Shift -ss.input.port8.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 8, Keyboard (JP): M -ss.input.port8.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 8, Keyboard (JP): Minus - -ss.input.port8.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 8, Keyboard (JP): N -ss.input.port8.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 8, Keyboard (JP): 無変換 -ss.input.port8.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 8, Keyboard (JP): O -ss.input.port8.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 8, Keyboard (JP): P -ss.input.port8.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 8, Keyboard (JP): Page Down -ss.input.port8.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 8, Keyboard (JP): Page Up -ss.input.port8.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 8, Keyboard (JP): Pause -ss.input.port8.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 8, Keyboard (JP): Period . -ss.input.port8.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 8, Keyboard (JP): Print Screen -ss.input.port8.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 8, Keyboard (JP): Q -ss.input.port8.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 8, Keyboard (JP): R -ss.input.port8.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 8, Keyboard (JP): Right Alt -ss.input.port8.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 8, Keyboard (JP): Right Ctrl -ss.input.port8.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 8, Keyboard (JP): Right -ss.input.port8.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 8, Keyboard (JP): Right Bracket ] -ss.input.port8.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 8, Keyboard (JP): Right Shift -ss.input.port8.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 8, Keyboard (JP): S -ss.input.port8.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 8, Keyboard (JP): Scroll Lock -ss.input.port8.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 8, Keyboard (JP): Semicolon ; -ss.input.port8.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 8, Keyboard (JP): Slash / -ss.input.port8.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 8, Keyboard (JP): Space -ss.input.port8.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 8, Keyboard (JP): T -ss.input.port8.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 8, Keyboard (JP): Tab -ss.input.port8.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 8, Keyboard (JP): U -ss.input.port8.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 8, Keyboard (JP): Up -ss.input.port8.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 8, Keyboard (JP): V -ss.input.port8.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 8, Keyboard (JP): W -ss.input.port8.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 8, Keyboard (JP): X -ss.input.port8.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 8, Keyboard (JP): Y -ss.input.port8.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 8, Keyboard (JP): Yen ¥ -ss.input.port8.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 8, Keyboard (JP): Z -ss.input.port8.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 8, Keyboard (US): 0(Zero) -ss.input.port8.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 8, Keyboard (US): 1(One) -ss.input.port8.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 8, Keyboard (US): 2 -ss.input.port8.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 8, Keyboard (US): 3 -ss.input.port8.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 8, Keyboard (US): 4 -ss.input.port8.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 8, Keyboard (US): 5 -ss.input.port8.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 8, Keyboard (US): 6 -ss.input.port8.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 8, Keyboard (US): 7 -ss.input.port8.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 8, Keyboard (US): 8 -ss.input.port8.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 8, Keyboard (US): 9 -ss.input.port8.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 8, Keyboard (US): A -ss.input.port8.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 8, Keyboard (US): B -ss.input.port8.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 8, Keyboard (US): Backslash \ -ss.input.port8.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 8, Keyboard (US): Backspace -ss.input.port8.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 8, Keyboard (US): C -ss.input.port8.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 8, Keyboard (US): Caps Lock -ss.input.port8.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 8, Keyboard (US): Comma , -ss.input.port8.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 8, Keyboard (US): D -ss.input.port8.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 8, Keyboard (US): Delete -ss.input.port8.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 8, Keyboard (US): Down -ss.input.port8.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 8, Keyboard (US): E -ss.input.port8.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 8, Keyboard (US): End -ss.input.port8.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 8, Keyboard (US): Enter -ss.input.port8.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 8, Keyboard (US): Equals = -ss.input.port8.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 8, Keyboard (US): Escape -ss.input.port8.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 8, Keyboard (US): F -ss.input.port8.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 8, Keyboard (US): F1 -ss.input.port8.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 8, Keyboard (US): F10 -ss.input.port8.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 8, Keyboard (US): F11 -ss.input.port8.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 8, Keyboard (US): F12 -ss.input.port8.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 8, Keyboard (US): F2 -ss.input.port8.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 8, Keyboard (US): F3 -ss.input.port8.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 8, Keyboard (US): F4 -ss.input.port8.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 8, Keyboard (US): F5 -ss.input.port8.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 8, Keyboard (US): F6 -ss.input.port8.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 8, Keyboard (US): F7 -ss.input.port8.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 8, Keyboard (US): F8 -ss.input.port8.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 8, Keyboard (US): F9 -ss.input.port8.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 8, Keyboard (US): G -ss.input.port8.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 8, Keyboard (US): Grave ` -ss.input.port8.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 8, Keyboard (US): H -ss.input.port8.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 8, Keyboard (US): Home -ss.input.port8.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 8, Keyboard (US): I -ss.input.port8.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 8, Keyboard (US): Insert -ss.input.port8.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 8, Keyboard (US): J -ss.input.port8.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 8, Keyboard (US): K -ss.input.port8.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 8, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port8.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 8, Keyboard (US): Keypad Center/5 -ss.input.port8.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 8, Keyboard (US): Keypad Delete -ss.input.port8.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 8, Keyboard (US): Keypad Down/2 -ss.input.port8.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 8, Keyboard (US): Keypad End/1 -ss.input.port8.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 8, Keyboard (US): Keypad Enter -ss.input.port8.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 8, Keyboard (US): Keypad Home/7 -ss.input.port8.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 8, Keyboard (US): Keypad Insert/0 -ss.input.port8.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 8, Keyboard (US): Keypad Left/4 -ss.input.port8.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 8, Keyboard (US): Keypad Minus -ss.input.port8.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 8, Keyboard (US): Keypad Pagedown/3 -ss.input.port8.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 8, Keyboard (US): Keypad Pageup/9 -ss.input.port8.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 8, Keyboard (US): Keypad Plus -ss.input.port8.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 8, Keyboard (US): Keypad Right/6 -ss.input.port8.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 8, Keyboard (US): Keypad Slash(Divide) -ss.input.port8.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 8, Keyboard (US): Keypad Up/8 -ss.input.port8.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 8, Keyboard (US): L -ss.input.port8.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 8, Keyboard (US): Left Alt -ss.input.port8.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 8, Keyboard (US): Left Ctrl -ss.input.port8.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 8, Keyboard (US): Cursor Left -ss.input.port8.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 8, Keyboard (US): Left Bracket [ -ss.input.port8.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 8, Keyboard (US): Left Shift -ss.input.port8.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 8, Keyboard (US): M -ss.input.port8.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 8, Keyboard (US): Minus - -ss.input.port8.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 8, Keyboard (US): N -ss.input.port8.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 8, Keyboard (US): Num Lock -ss.input.port8.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 8, Keyboard (US): O -ss.input.port8.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 8, Keyboard (US): P -ss.input.port8.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 8, Keyboard (US): Page Down -ss.input.port8.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 8, Keyboard (US): Page Up -ss.input.port8.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 8, Keyboard (US): Pause -ss.input.port8.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 8, Keyboard (US): Period . -ss.input.port8.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 8, Keyboard (US): Print Screen -ss.input.port8.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 8, Keyboard (US): Q -ss.input.port8.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 8, Keyboard (US): Quote ' -ss.input.port8.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 8, Keyboard (US): R -ss.input.port8.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 8, Keyboard (US): Right Alt -ss.input.port8.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 8, Keyboard (US): Right Ctrl -ss.input.port8.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 8, Keyboard (US): Right -ss.input.port8.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 8, Keyboard (US): Right Bracket ] -ss.input.port8.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 8, Keyboard (US): Right Shift -ss.input.port8.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 8, Keyboard (US): S -ss.input.port8.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 8, Keyboard (US): Scroll Lock -ss.input.port8.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 8, Keyboard (US): Semicolon ; -ss.input.port8.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 8, Keyboard (US): Slash / -ss.input.port8.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 8, Keyboard (US): Space -ss.input.port8.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 8, Keyboard (US): T -ss.input.port8.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 8, Keyboard (US): Tab -ss.input.port8.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 8, Keyboard (US): U -ss.input.port8.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 8, Keyboard (US): Up -ss.input.port8.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 8, Keyboard (US): V -ss.input.port8.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 8, Keyboard (US): W -ss.input.port8.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 8, Keyboard (US): X -ss.input.port8.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 8, Keyboard (US): Y -ss.input.port8.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 8, Keyboard (US): Z -ss.input.port8.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 8, Mission Stick: A (Stick Trigger) -ss.input.port8.mission.a - -;ss, Virtual Port 8, Mission Stick: A AF -ss.input.port8.mission.afa - -;Default position for switch "A AF". -ss.input.port8.mission.afa.defpos off - -;ss, Virtual Port 8, Mission Stick: B AF -ss.input.port8.mission.afb - -;Default position for switch "B AF". -ss.input.port8.mission.afb.defpos off - -;ss, Virtual Port 8, Mission Stick: C AF -ss.input.port8.mission.afc - -;Default position for switch "C AF". -ss.input.port8.mission.afc.defpos off - -;ss, Virtual Port 8, Mission Stick: L AF -ss.input.port8.mission.afl - -;Default position for switch "L AF". -ss.input.port8.mission.afl.defpos off - -;ss, Virtual Port 8, Mission Stick: R AF -ss.input.port8.mission.afr - -;Default position for switch "R AF". -ss.input.port8.mission.afr.defpos off - -;ss, Virtual Port 8, Mission Stick: AF Speed -ss.input.port8.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port8.mission.afspeed.defpos 1 - -;ss, Virtual Port 8, Mission Stick: X AF -ss.input.port8.mission.afx - -;Default position for switch "X AF". -ss.input.port8.mission.afx.defpos off - -;ss, Virtual Port 8, Mission Stick: Y AF -ss.input.port8.mission.afy - -;Default position for switch "Y AF". -ss.input.port8.mission.afy.defpos off - -;ss, Virtual Port 8, Mission Stick: Z AF -ss.input.port8.mission.afz - -;Default position for switch "Z AF". -ss.input.port8.mission.afz.defpos off - -;ss, Virtual Port 8, Mission Stick: B (Stick Left Button) -ss.input.port8.mission.b - -;ss, Virtual Port 8, Mission Stick: C (Stick Right Button) -ss.input.port8.mission.c - -;ss, Virtual Port 8, Mission Stick: L -ss.input.port8.mission.l - -;ss, Virtual Port 8, Mission Stick: R -ss.input.port8.mission.r - -;ss, Virtual Port 8, Mission Stick: START -ss.input.port8.mission.start - -;ss, Virtual Port 8, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port8.mission.stick_back - -;ss, Virtual Port 8, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port8.mission.stick_fore - -;ss, Virtual Port 8, Mission Stick: Stick LEFT ← (Analog) -ss.input.port8.mission.stick_left - -;ss, Virtual Port 8, Mission Stick: Stick RIGHT → (Analog) -ss.input.port8.mission.stick_right - -;ss, Virtual Port 8, Mission Stick: Throttle Down (Analog) -ss.input.port8.mission.throttle_down - -;ss, Virtual Port 8, Mission Stick: Throttle Up (Analog) -ss.input.port8.mission.throttle_up - -;ss, Virtual Port 8, Mission Stick: X -ss.input.port8.mission.x - -;ss, Virtual Port 8, Mission Stick: Y -ss.input.port8.mission.y - -;ss, Virtual Port 8, Mission Stick: Z -ss.input.port8.mission.z - -;ss, Virtual Port 8, Mouse: Left Button -ss.input.port8.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 8, Mouse: Middle Button -ss.input.port8.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 8, Mouse: Motion Down -ss.input.port8.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 8, Mouse: Motion Left -ss.input.port8.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 8, Mouse: Motion Right -ss.input.port8.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 8, Mouse: Motion Up -ss.input.port8.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 8, Mouse: Right Button -ss.input.port8.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 8, Mouse: Start -ss.input.port8.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 8, Steering Wheel: A (R Group) -ss.input.port8.wheel.a - -;ss, Virtual Port 8, Steering Wheel: Analog LEFT ← -ss.input.port8.wheel.analog_left - -;ss, Virtual Port 8, Steering Wheel: Analog RIGHT → -ss.input.port8.wheel.analog_right - -;ss, Virtual Port 8, Steering Wheel: B (R Group) -ss.input.port8.wheel.b - -;ss, Virtual Port 8, Steering Wheel: C (R Group) -ss.input.port8.wheel.c - -;ss, Virtual Port 8, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port8.wheel.down - -;ss, Virtual Port 8, Steering Wheel: START -ss.input.port8.wheel.start - -;ss, Virtual Port 8, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port8.wheel.up - -;ss, Virtual Port 8, Steering Wheel: X (L Group) -ss.input.port8.wheel.x - -;ss, Virtual Port 8, Steering Wheel: Y (L Group) -ss.input.port8.wheel.y - -;ss, Virtual Port 8, Steering Wheel: Z (L Group) -ss.input.port8.wheel.z - -;Input device for Virtual Port 9 -ss.input.port9 gamepad - -;ss, Virtual Port 9, 3D Control Pad: A -ss.input.port9.3dpad.a - -;ss, Virtual Port 9, 3D Control Pad: Analog DOWN ↓ -ss.input.port9.3dpad.analog_down - -;ss, Virtual Port 9, 3D Control Pad: Analog LEFT ← -ss.input.port9.3dpad.analog_left - -;ss, Virtual Port 9, 3D Control Pad: Analog RIGHT → -ss.input.port9.3dpad.analog_right - -;ss, Virtual Port 9, 3D Control Pad: Analog UP ↑ -ss.input.port9.3dpad.analog_up - -;ss, Virtual Port 9, 3D Control Pad: B -ss.input.port9.3dpad.b - -;ss, Virtual Port 9, 3D Control Pad: C -ss.input.port9.3dpad.c - -;ss, Virtual Port 9, 3D Control Pad: D-Pad DOWN ↓ -ss.input.port9.3dpad.down - -;ss, Virtual Port 9, 3D Control Pad: D-Pad LEFT ← -ss.input.port9.3dpad.left - -;ss, Virtual Port 9, 3D Control Pad: Left Shoulder (Analog) -ss.input.port9.3dpad.ls - -;ss, Virtual Port 9, 3D Control Pad: Mode -ss.input.port9.3dpad.mode - -;Default position for switch "Mode". -ss.input.port9.3dpad.mode.defpos digital - -;ss, Virtual Port 9, 3D Control Pad: D-Pad RIGHT → -ss.input.port9.3dpad.right - -;ss, Virtual Port 9, 3D Control Pad: Right Shoulder (Analog) -ss.input.port9.3dpad.rs - -;ss, Virtual Port 9, 3D Control Pad: START -ss.input.port9.3dpad.start - -;ss, Virtual Port 9, 3D Control Pad: D-Pad UP ↑ -ss.input.port9.3dpad.up - -;ss, Virtual Port 9, 3D Control Pad: X -ss.input.port9.3dpad.x - -;ss, Virtual Port 9, 3D Control Pad: Y -ss.input.port9.3dpad.y - -;ss, Virtual Port 9, 3D Control Pad: Z -ss.input.port9.3dpad.z - -;ss, Virtual Port 9, Dual Mission: A (R Stick Trigger) -ss.input.port9.dmission.a - -;ss, Virtual Port 9, Dual Mission: A AF -ss.input.port9.dmission.afa - -;Default position for switch "A AF". -ss.input.port9.dmission.afa.defpos off - -;ss, Virtual Port 9, Dual Mission: B AF -ss.input.port9.dmission.afb - -;Default position for switch "B AF". -ss.input.port9.dmission.afb.defpos off - -;ss, Virtual Port 9, Dual Mission: C AF -ss.input.port9.dmission.afc - -;Default position for switch "C AF". -ss.input.port9.dmission.afc.defpos off - -;ss, Virtual Port 9, Dual Mission: L AF -ss.input.port9.dmission.afl - -;Default position for switch "L AF". -ss.input.port9.dmission.afl.defpos off - -;ss, Virtual Port 9, Dual Mission: R AF -ss.input.port9.dmission.afr - -;Default position for switch "R AF". -ss.input.port9.dmission.afr.defpos off - -;ss, Virtual Port 9, Dual Mission: Autofire Speed -ss.input.port9.dmission.afspeed - -;Default position for switch "Autofire Speed". -ss.input.port9.dmission.afspeed.defpos 1 - -;ss, Virtual Port 9, Dual Mission: X AF -ss.input.port9.dmission.afx - -;Default position for switch "X AF". -ss.input.port9.dmission.afx.defpos off - -;ss, Virtual Port 9, Dual Mission: Y AF -ss.input.port9.dmission.afy - -;Default position for switch "Y AF". -ss.input.port9.dmission.afy.defpos off - -;ss, Virtual Port 9, Dual Mission: Z AF -ss.input.port9.dmission.afz - -;Default position for switch "Z AF". -ss.input.port9.dmission.afz.defpos off - -;ss, Virtual Port 9, Dual Mission: B (R Stick Left Button) -ss.input.port9.dmission.b - -;ss, Virtual Port 9, Dual Mission: C (R Stick Right Button) -ss.input.port9.dmission.c - -;ss, Virtual Port 9, Dual Mission: L -ss.input.port9.dmission.l - -;ss, Virtual Port 9, Dual Mission: L Stick BACK ↓ (Analog) -ss.input.port9.dmission.lstick_back - -;ss, Virtual Port 9, Dual Mission: L Stick FORE ↑ (Analog) -ss.input.port9.dmission.lstick_fore - -;ss, Virtual Port 9, Dual Mission: L Stick LEFT ← (Analog) -ss.input.port9.dmission.lstick_left - -;ss, Virtual Port 9, Dual Mission: L Stick RIGHT → (Analog) -ss.input.port9.dmission.lstick_right - -;ss, Virtual Port 9, Dual Mission: L Throttle Down (Analog) -ss.input.port9.dmission.lthrottle_down - -;ss, Virtual Port 9, Dual Mission: L Throttle Up (Analog) -ss.input.port9.dmission.lthrottle_up - -;ss, Virtual Port 9, Dual Mission: R -ss.input.port9.dmission.r - -;ss, Virtual Port 9, Dual Mission: R Stick BACK ↓ (Analog) -ss.input.port9.dmission.rstick_back - -;ss, Virtual Port 9, Dual Mission: R Stick FORE ↑ (Analog) -ss.input.port9.dmission.rstick_fore - -;ss, Virtual Port 9, Dual Mission: R Stick LEFT ← (Analog) -ss.input.port9.dmission.rstick_left - -;ss, Virtual Port 9, Dual Mission: R Stick RIGHT → (Analog) -ss.input.port9.dmission.rstick_right - -;ss, Virtual Port 9, Dual Mission: R Throttle Down (Analog) -ss.input.port9.dmission.rthrottle_down - -;ss, Virtual Port 9, Dual Mission: R Throttle Up (Analog) -ss.input.port9.dmission.rthrottle_up - -;ss, Virtual Port 9, Dual Mission: START -ss.input.port9.dmission.start - -;ss, Virtual Port 9, Dual Mission: X (L Stick Trigger) -ss.input.port9.dmission.x - -;ss, Virtual Port 9, Dual Mission: Y (L Stick Left Button) -ss.input.port9.dmission.y - -;ss, Virtual Port 9, Dual Mission: Z (L Stick Right Button) -ss.input.port9.dmission.z - -;ss, Virtual Port 9, Digital Gamepad: A -ss.input.port9.gamepad.a - -;ss, Virtual Port 9, Digital Gamepad: B -ss.input.port9.gamepad.b - -;ss, Virtual Port 9, Digital Gamepad: C -ss.input.port9.gamepad.c - -;ss, Virtual Port 9, Digital Gamepad: DOWN ↓ -ss.input.port9.gamepad.down - -;ss, Virtual Port 9, Digital Gamepad: LEFT ← -ss.input.port9.gamepad.left - -;ss, Virtual Port 9, Digital Gamepad: Left Shoulder -ss.input.port9.gamepad.ls - -;ss, Virtual Port 9, Digital Gamepad: RIGHT → -ss.input.port9.gamepad.right - -;ss, Virtual Port 9, Digital Gamepad: Right Shoulder -ss.input.port9.gamepad.rs - -;ss, Virtual Port 9, Digital Gamepad: START -ss.input.port9.gamepad.start - -;ss, Virtual Port 9, Digital Gamepad: UP ↑ -ss.input.port9.gamepad.up - -;ss, Virtual Port 9, Digital Gamepad: X -ss.input.port9.gamepad.x - -;ss, Virtual Port 9, Digital Gamepad: Y -ss.input.port9.gamepad.y - -;ss, Virtual Port 9, Digital Gamepad: Z -ss.input.port9.gamepad.z - -;ss, Virtual Port 9, Light Gun: Offscreen Shot(Simulated) -ss.input.port9.gun.offscreen_shot mouse 0x0 button_right - -;ss, Virtual Port 9, Light Gun: START -ss.input.port9.gun.start mouse 0x0 button_middle - -;ss, Virtual Port 9, Light Gun: Trigger -ss.input.port9.gun.trigger mouse 0x0 button_left - -;ss, Virtual Port 9, Light Gun: X Axis -ss.input.port9.gun.x_axis mouse 0x0 cursor_x-+ - -;ss, Virtual Port 9, Light Gun: Y Axis -ss.input.port9.gun.y_axis mouse 0x0 cursor_y-+ - -;Crosshairs color for lightgun on virtual port 9. -ss.input.port9.gun_chairs 0xFF80FF - -;ss, Virtual Port 9, Keyboard (JP): 0(Zero) -ss.input.port9.jpkeyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 9, Keyboard (JP): 1(One) -ss.input.port9.jpkeyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 9, Keyboard (JP): 2 -ss.input.port9.jpkeyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 9, Keyboard (JP): 3 -ss.input.port9.jpkeyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 9, Keyboard (JP): 4 -ss.input.port9.jpkeyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 9, Keyboard (JP): 5 -ss.input.port9.jpkeyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 9, Keyboard (JP): 6 -ss.input.port9.jpkeyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 9, Keyboard (JP): 7 -ss.input.port9.jpkeyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 9, Keyboard (JP): 8 -ss.input.port9.jpkeyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 9, Keyboard (JP): 9 -ss.input.port9.jpkeyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 9, Keyboard (JP): A -ss.input.port9.jpkeyboard.a keyboard 0x0 4 - -;ss, Virtual Port 9, Keyboard (JP): At @ -ss.input.port9.jpkeyboard.at keyboard 0x0 47 - -;ss, Virtual Port 9, Keyboard (JP): B -ss.input.port9.jpkeyboard.b keyboard 0x0 5 - -;ss, Virtual Port 9, Keyboard (JP): Backslash \ -ss.input.port9.jpkeyboard.backslash keyboard 0x0 135 - -;ss, Virtual Port 9, Keyboard (JP): Backspace -ss.input.port9.jpkeyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 9, Keyboard (JP): C -ss.input.port9.jpkeyboard.c keyboard 0x0 6 - -;ss, Virtual Port 9, Keyboard (JP): Caps Lock/英数 -ss.input.port9.jpkeyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 9, Keyboard (JP): Circumflex ^ -ss.input.port9.jpkeyboard.circumflex keyboard 0x0 46 - -;ss, Virtual Port 9, Keyboard (JP): Colon : -ss.input.port9.jpkeyboard.colon keyboard 0x0 52 - -;ss, Virtual Port 9, Keyboard (JP): Comma , -ss.input.port9.jpkeyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 9, Keyboard (JP): 変換 -ss.input.port9.jpkeyboard.conv keyboard 0x0 138 - -;ss, Virtual Port 9, Keyboard (JP): D -ss.input.port9.jpkeyboard.d keyboard 0x0 7 - -;ss, Virtual Port 9, Keyboard (JP): Delete -ss.input.port9.jpkeyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 9, Keyboard (JP): Down -ss.input.port9.jpkeyboard.down keyboard 0x0 81 - -;ss, Virtual Port 9, Keyboard (JP): E -ss.input.port9.jpkeyboard.e keyboard 0x0 8 - -;ss, Virtual Port 9, Keyboard (JP): End -ss.input.port9.jpkeyboard.end keyboard 0x0 77 - -;ss, Virtual Port 9, Keyboard (JP): Enter -ss.input.port9.jpkeyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 9, Keyboard (JP): Escape -ss.input.port9.jpkeyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 9, Keyboard (JP): F -ss.input.port9.jpkeyboard.f keyboard 0x0 9 - -;ss, Virtual Port 9, Keyboard (JP): F1 -ss.input.port9.jpkeyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 9, Keyboard (JP): F10 -ss.input.port9.jpkeyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 9, Keyboard (JP): F11 -ss.input.port9.jpkeyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 9, Keyboard (JP): F12 -ss.input.port9.jpkeyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 9, Keyboard (JP): F2 -ss.input.port9.jpkeyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 9, Keyboard (JP): F3 -ss.input.port9.jpkeyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 9, Keyboard (JP): F4 -ss.input.port9.jpkeyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 9, Keyboard (JP): F5 -ss.input.port9.jpkeyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 9, Keyboard (JP): F6 -ss.input.port9.jpkeyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 9, Keyboard (JP): F7 -ss.input.port9.jpkeyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 9, Keyboard (JP): F8 -ss.input.port9.jpkeyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 9, Keyboard (JP): F9 -ss.input.port9.jpkeyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 9, Keyboard (JP): G -ss.input.port9.jpkeyboard.g keyboard 0x0 10 - -;ss, Virtual Port 9, Keyboard (JP): H -ss.input.port9.jpkeyboard.h keyboard 0x0 11 - -;ss, Virtual Port 9, Keyboard (JP): ひらがな/カタカナ/ローマ字 -ss.input.port9.jpkeyboard.hkr keyboard 0x0 136 - -;ss, Virtual Port 9, Keyboard (JP): Home -ss.input.port9.jpkeyboard.home keyboard 0x0 74 - -;ss, Virtual Port 9, Keyboard (JP): 半角/全角/漢字 -ss.input.port9.jpkeyboard.hwfw keyboard 0x0 53 - -;ss, Virtual Port 9, Keyboard (JP): I -ss.input.port9.jpkeyboard.i keyboard 0x0 12 - -;ss, Virtual Port 9, Keyboard (JP): Insert -ss.input.port9.jpkeyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 9, Keyboard (JP): J -ss.input.port9.jpkeyboard.j keyboard 0x0 13 - -;ss, Virtual Port 9, Keyboard (JP): K -ss.input.port9.jpkeyboard.k keyboard 0x0 14 - -;ss, Virtual Port 9, Keyboard (JP): L -ss.input.port9.jpkeyboard.l keyboard 0x0 15 - -;ss, Virtual Port 9, Keyboard (JP): Left Alt -ss.input.port9.jpkeyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 9, Keyboard (JP): Left Ctrl -ss.input.port9.jpkeyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 9, Keyboard (JP): Cursor Left -ss.input.port9.jpkeyboard.left keyboard 0x0 80 - -;ss, Virtual Port 9, Keyboard (JP): Left Bracket [ -ss.input.port9.jpkeyboard.leftbracket keyboard 0x0 48 - -;ss, Virtual Port 9, Keyboard (JP): Left Shift -ss.input.port9.jpkeyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 9, Keyboard (JP): M -ss.input.port9.jpkeyboard.m keyboard 0x0 16 - -;ss, Virtual Port 9, Keyboard (JP): Minus - -ss.input.port9.jpkeyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 9, Keyboard (JP): N -ss.input.port9.jpkeyboard.n keyboard 0x0 17 - -;ss, Virtual Port 9, Keyboard (JP): 無変換 -ss.input.port9.jpkeyboard.nonconv keyboard 0x0 139 - -;ss, Virtual Port 9, Keyboard (JP): O -ss.input.port9.jpkeyboard.o keyboard 0x0 18 - -;ss, Virtual Port 9, Keyboard (JP): P -ss.input.port9.jpkeyboard.p keyboard 0x0 19 - -;ss, Virtual Port 9, Keyboard (JP): Page Down -ss.input.port9.jpkeyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 9, Keyboard (JP): Page Up -ss.input.port9.jpkeyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 9, Keyboard (JP): Pause -ss.input.port9.jpkeyboard.pause keyboard 0x0 72 || keyboard 0x0 83 - -;ss, Virtual Port 9, Keyboard (JP): Period . -ss.input.port9.jpkeyboard.period keyboard 0x0 55 - -;ss, Virtual Port 9, Keyboard (JP): Print Screen -ss.input.port9.jpkeyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 9, Keyboard (JP): Q -ss.input.port9.jpkeyboard.q keyboard 0x0 20 - -;ss, Virtual Port 9, Keyboard (JP): R -ss.input.port9.jpkeyboard.r keyboard 0x0 21 - -;ss, Virtual Port 9, Keyboard (JP): Right Alt -ss.input.port9.jpkeyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 9, Keyboard (JP): Right Ctrl -ss.input.port9.jpkeyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 9, Keyboard (JP): Right -ss.input.port9.jpkeyboard.right keyboard 0x0 79 - -;ss, Virtual Port 9, Keyboard (JP): Right Bracket ] -ss.input.port9.jpkeyboard.rightbracket keyboard 0x0 49 - -;ss, Virtual Port 9, Keyboard (JP): Right Shift -ss.input.port9.jpkeyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 9, Keyboard (JP): S -ss.input.port9.jpkeyboard.s keyboard 0x0 22 - -;ss, Virtual Port 9, Keyboard (JP): Scroll Lock -ss.input.port9.jpkeyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 9, Keyboard (JP): Semicolon ; -ss.input.port9.jpkeyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 9, Keyboard (JP): Slash / -ss.input.port9.jpkeyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 9, Keyboard (JP): Space -ss.input.port9.jpkeyboard.space keyboard 0x0 44 - -;ss, Virtual Port 9, Keyboard (JP): T -ss.input.port9.jpkeyboard.t keyboard 0x0 23 - -;ss, Virtual Port 9, Keyboard (JP): Tab -ss.input.port9.jpkeyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 9, Keyboard (JP): U -ss.input.port9.jpkeyboard.u keyboard 0x0 24 - -;ss, Virtual Port 9, Keyboard (JP): Up -ss.input.port9.jpkeyboard.up keyboard 0x0 82 - -;ss, Virtual Port 9, Keyboard (JP): V -ss.input.port9.jpkeyboard.v keyboard 0x0 25 - -;ss, Virtual Port 9, Keyboard (JP): W -ss.input.port9.jpkeyboard.w keyboard 0x0 26 - -;ss, Virtual Port 9, Keyboard (JP): X -ss.input.port9.jpkeyboard.x keyboard 0x0 27 - -;ss, Virtual Port 9, Keyboard (JP): Y -ss.input.port9.jpkeyboard.y keyboard 0x0 28 - -;ss, Virtual Port 9, Keyboard (JP): Yen ¥ -ss.input.port9.jpkeyboard.yen keyboard 0x0 137 - -;ss, Virtual Port 9, Keyboard (JP): Z -ss.input.port9.jpkeyboard.z keyboard 0x0 29 - -;ss, Virtual Port 9, Keyboard (US): 0(Zero) -ss.input.port9.keyboard.0 keyboard 0x0 39 - -;ss, Virtual Port 9, Keyboard (US): 1(One) -ss.input.port9.keyboard.1 keyboard 0x0 30 - -;ss, Virtual Port 9, Keyboard (US): 2 -ss.input.port9.keyboard.2 keyboard 0x0 31 - -;ss, Virtual Port 9, Keyboard (US): 3 -ss.input.port9.keyboard.3 keyboard 0x0 32 - -;ss, Virtual Port 9, Keyboard (US): 4 -ss.input.port9.keyboard.4 keyboard 0x0 33 - -;ss, Virtual Port 9, Keyboard (US): 5 -ss.input.port9.keyboard.5 keyboard 0x0 34 - -;ss, Virtual Port 9, Keyboard (US): 6 -ss.input.port9.keyboard.6 keyboard 0x0 35 - -;ss, Virtual Port 9, Keyboard (US): 7 -ss.input.port9.keyboard.7 keyboard 0x0 36 - -;ss, Virtual Port 9, Keyboard (US): 8 -ss.input.port9.keyboard.8 keyboard 0x0 37 - -;ss, Virtual Port 9, Keyboard (US): 9 -ss.input.port9.keyboard.9 keyboard 0x0 38 - -;ss, Virtual Port 9, Keyboard (US): A -ss.input.port9.keyboard.a keyboard 0x0 4 - -;ss, Virtual Port 9, Keyboard (US): B -ss.input.port9.keyboard.b keyboard 0x0 5 - -;ss, Virtual Port 9, Keyboard (US): Backslash \ -ss.input.port9.keyboard.backslash keyboard 0x0 49 || keyboard 0x0 135 - -;ss, Virtual Port 9, Keyboard (US): Backspace -ss.input.port9.keyboard.backspace keyboard 0x0 42 - -;ss, Virtual Port 9, Keyboard (US): C -ss.input.port9.keyboard.c keyboard 0x0 6 - -;ss, Virtual Port 9, Keyboard (US): Caps Lock -ss.input.port9.keyboard.capslock keyboard 0x0 57 - -;ss, Virtual Port 9, Keyboard (US): Comma , -ss.input.port9.keyboard.comma keyboard 0x0 54 - -;ss, Virtual Port 9, Keyboard (US): D -ss.input.port9.keyboard.d keyboard 0x0 7 - -;ss, Virtual Port 9, Keyboard (US): Delete -ss.input.port9.keyboard.delete keyboard 0x0 76 - -;ss, Virtual Port 9, Keyboard (US): Down -ss.input.port9.keyboard.down keyboard 0x0 81 - -;ss, Virtual Port 9, Keyboard (US): E -ss.input.port9.keyboard.e keyboard 0x0 8 - -;ss, Virtual Port 9, Keyboard (US): End -ss.input.port9.keyboard.end keyboard 0x0 77 - -;ss, Virtual Port 9, Keyboard (US): Enter -ss.input.port9.keyboard.enter keyboard 0x0 40 - -;ss, Virtual Port 9, Keyboard (US): Equals = -ss.input.port9.keyboard.equals keyboard 0x0 46 - -;ss, Virtual Port 9, Keyboard (US): Escape -ss.input.port9.keyboard.esc keyboard 0x0 41 - -;ss, Virtual Port 9, Keyboard (US): F -ss.input.port9.keyboard.f keyboard 0x0 9 - -;ss, Virtual Port 9, Keyboard (US): F1 -ss.input.port9.keyboard.f1 keyboard 0x0 58 - -;ss, Virtual Port 9, Keyboard (US): F10 -ss.input.port9.keyboard.f10 keyboard 0x0 67 - -;ss, Virtual Port 9, Keyboard (US): F11 -ss.input.port9.keyboard.f11 keyboard 0x0 68 - -;ss, Virtual Port 9, Keyboard (US): F12 -ss.input.port9.keyboard.f12 keyboard 0x0 69 - -;ss, Virtual Port 9, Keyboard (US): F2 -ss.input.port9.keyboard.f2 keyboard 0x0 59 - -;ss, Virtual Port 9, Keyboard (US): F3 -ss.input.port9.keyboard.f3 keyboard 0x0 60 - -;ss, Virtual Port 9, Keyboard (US): F4 -ss.input.port9.keyboard.f4 keyboard 0x0 61 - -;ss, Virtual Port 9, Keyboard (US): F5 -ss.input.port9.keyboard.f5 keyboard 0x0 62 - -;ss, Virtual Port 9, Keyboard (US): F6 -ss.input.port9.keyboard.f6 keyboard 0x0 63 - -;ss, Virtual Port 9, Keyboard (US): F7 -ss.input.port9.keyboard.f7 keyboard 0x0 64 - -;ss, Virtual Port 9, Keyboard (US): F8 -ss.input.port9.keyboard.f8 keyboard 0x0 65 - -;ss, Virtual Port 9, Keyboard (US): F9 -ss.input.port9.keyboard.f9 keyboard 0x0 66 - -;ss, Virtual Port 9, Keyboard (US): G -ss.input.port9.keyboard.g keyboard 0x0 10 - -;ss, Virtual Port 9, Keyboard (US): Grave ` -ss.input.port9.keyboard.grave keyboard 0x0 53 - -;ss, Virtual Port 9, Keyboard (US): H -ss.input.port9.keyboard.h keyboard 0x0 11 - -;ss, Virtual Port 9, Keyboard (US): Home -ss.input.port9.keyboard.home keyboard 0x0 74 - -;ss, Virtual Port 9, Keyboard (US): I -ss.input.port9.keyboard.i keyboard 0x0 12 - -;ss, Virtual Port 9, Keyboard (US): Insert -ss.input.port9.keyboard.insert keyboard 0x0 73 - -;ss, Virtual Port 9, Keyboard (US): J -ss.input.port9.keyboard.j keyboard 0x0 13 - -;ss, Virtual Port 9, Keyboard (US): K -ss.input.port9.keyboard.k keyboard 0x0 14 - -;ss, Virtual Port 9, Keyboard (US): Keypad Asterisk(Multiply) -ss.input.port9.keyboard.kp_asterisk keyboard 0x0 85 - -;ss, Virtual Port 9, Keyboard (US): Keypad Center/5 -ss.input.port9.keyboard.kp_center keyboard 0x0 93 - -;ss, Virtual Port 9, Keyboard (US): Keypad Delete -ss.input.port9.keyboard.kp_delete keyboard 0x0 99 - -;ss, Virtual Port 9, Keyboard (US): Keypad Down/2 -ss.input.port9.keyboard.kp_down keyboard 0x0 90 - -;ss, Virtual Port 9, Keyboard (US): Keypad End/1 -ss.input.port9.keyboard.kp_end keyboard 0x0 89 - -;ss, Virtual Port 9, Keyboard (US): Keypad Enter -ss.input.port9.keyboard.kp_enter keyboard 0x0 88 - -;ss, Virtual Port 9, Keyboard (US): Keypad Home/7 -ss.input.port9.keyboard.kp_home keyboard 0x0 95 - -;ss, Virtual Port 9, Keyboard (US): Keypad Insert/0 -ss.input.port9.keyboard.kp_insert keyboard 0x0 98 - -;ss, Virtual Port 9, Keyboard (US): Keypad Left/4 -ss.input.port9.keyboard.kp_left keyboard 0x0 92 - -;ss, Virtual Port 9, Keyboard (US): Keypad Minus -ss.input.port9.keyboard.kp_minus keyboard 0x0 86 - -;ss, Virtual Port 9, Keyboard (US): Keypad Pagedown/3 -ss.input.port9.keyboard.kp_pagedown keyboard 0x0 91 - -;ss, Virtual Port 9, Keyboard (US): Keypad Pageup/9 -ss.input.port9.keyboard.kp_pageup keyboard 0x0 97 - -;ss, Virtual Port 9, Keyboard (US): Keypad Plus -ss.input.port9.keyboard.kp_plus keyboard 0x0 87 - -;ss, Virtual Port 9, Keyboard (US): Keypad Right/6 -ss.input.port9.keyboard.kp_right keyboard 0x0 94 - -;ss, Virtual Port 9, Keyboard (US): Keypad Slash(Divide) -ss.input.port9.keyboard.kp_slash keyboard 0x0 84 - -;ss, Virtual Port 9, Keyboard (US): Keypad Up/8 -ss.input.port9.keyboard.kp_up keyboard 0x0 96 - -;ss, Virtual Port 9, Keyboard (US): L -ss.input.port9.keyboard.l keyboard 0x0 15 - -;ss, Virtual Port 9, Keyboard (US): Left Alt -ss.input.port9.keyboard.lalt keyboard 0x0 226 - -;ss, Virtual Port 9, Keyboard (US): Left Ctrl -ss.input.port9.keyboard.lctrl keyboard 0x0 224 - -;ss, Virtual Port 9, Keyboard (US): Cursor Left -ss.input.port9.keyboard.left keyboard 0x0 80 - -;ss, Virtual Port 9, Keyboard (US): Left Bracket [ -ss.input.port9.keyboard.leftbracket keyboard 0x0 47 - -;ss, Virtual Port 9, Keyboard (US): Left Shift -ss.input.port9.keyboard.lshift keyboard 0x0 225 - -;ss, Virtual Port 9, Keyboard (US): M -ss.input.port9.keyboard.m keyboard 0x0 16 - -;ss, Virtual Port 9, Keyboard (US): Minus - -ss.input.port9.keyboard.minus keyboard 0x0 45 - -;ss, Virtual Port 9, Keyboard (US): N -ss.input.port9.keyboard.n keyboard 0x0 17 - -;ss, Virtual Port 9, Keyboard (US): Num Lock -ss.input.port9.keyboard.numlock keyboard 0x0 83 - -;ss, Virtual Port 9, Keyboard (US): O -ss.input.port9.keyboard.o keyboard 0x0 18 - -;ss, Virtual Port 9, Keyboard (US): P -ss.input.port9.keyboard.p keyboard 0x0 19 - -;ss, Virtual Port 9, Keyboard (US): Page Down -ss.input.port9.keyboard.pagedown keyboard 0x0 78 - -;ss, Virtual Port 9, Keyboard (US): Page Up -ss.input.port9.keyboard.pageup keyboard 0x0 75 - -;ss, Virtual Port 9, Keyboard (US): Pause -ss.input.port9.keyboard.pause keyboard 0x0 72 - -;ss, Virtual Port 9, Keyboard (US): Period . -ss.input.port9.keyboard.period keyboard 0x0 55 - -;ss, Virtual Port 9, Keyboard (US): Print Screen -ss.input.port9.keyboard.printscreen keyboard 0x0 70 - -;ss, Virtual Port 9, Keyboard (US): Q -ss.input.port9.keyboard.q keyboard 0x0 20 - -;ss, Virtual Port 9, Keyboard (US): Quote ' -ss.input.port9.keyboard.quote keyboard 0x0 52 - -;ss, Virtual Port 9, Keyboard (US): R -ss.input.port9.keyboard.r keyboard 0x0 21 - -;ss, Virtual Port 9, Keyboard (US): Right Alt -ss.input.port9.keyboard.ralt keyboard 0x0 230 - -;ss, Virtual Port 9, Keyboard (US): Right Ctrl -ss.input.port9.keyboard.rctrl keyboard 0x0 228 - -;ss, Virtual Port 9, Keyboard (US): Right -ss.input.port9.keyboard.right keyboard 0x0 79 - -;ss, Virtual Port 9, Keyboard (US): Right Bracket ] -ss.input.port9.keyboard.rightbracket keyboard 0x0 48 - -;ss, Virtual Port 9, Keyboard (US): Right Shift -ss.input.port9.keyboard.rshift keyboard 0x0 229 - -;ss, Virtual Port 9, Keyboard (US): S -ss.input.port9.keyboard.s keyboard 0x0 22 - -;ss, Virtual Port 9, Keyboard (US): Scroll Lock -ss.input.port9.keyboard.scrolllock keyboard 0x0 71 - -;ss, Virtual Port 9, Keyboard (US): Semicolon ; -ss.input.port9.keyboard.semicolon keyboard 0x0 51 - -;ss, Virtual Port 9, Keyboard (US): Slash / -ss.input.port9.keyboard.slash keyboard 0x0 56 - -;ss, Virtual Port 9, Keyboard (US): Space -ss.input.port9.keyboard.space keyboard 0x0 44 - -;ss, Virtual Port 9, Keyboard (US): T -ss.input.port9.keyboard.t keyboard 0x0 23 - -;ss, Virtual Port 9, Keyboard (US): Tab -ss.input.port9.keyboard.tab keyboard 0x0 43 - -;ss, Virtual Port 9, Keyboard (US): U -ss.input.port9.keyboard.u keyboard 0x0 24 - -;ss, Virtual Port 9, Keyboard (US): Up -ss.input.port9.keyboard.up keyboard 0x0 82 - -;ss, Virtual Port 9, Keyboard (US): V -ss.input.port9.keyboard.v keyboard 0x0 25 - -;ss, Virtual Port 9, Keyboard (US): W -ss.input.port9.keyboard.w keyboard 0x0 26 - -;ss, Virtual Port 9, Keyboard (US): X -ss.input.port9.keyboard.x keyboard 0x0 27 - -;ss, Virtual Port 9, Keyboard (US): Y -ss.input.port9.keyboard.y keyboard 0x0 28 - -;ss, Virtual Port 9, Keyboard (US): Z -ss.input.port9.keyboard.z keyboard 0x0 29 - -;ss, Virtual Port 9, Mission Stick: A (Stick Trigger) -ss.input.port9.mission.a - -;ss, Virtual Port 9, Mission Stick: A AF -ss.input.port9.mission.afa - -;Default position for switch "A AF". -ss.input.port9.mission.afa.defpos off - -;ss, Virtual Port 9, Mission Stick: B AF -ss.input.port9.mission.afb - -;Default position for switch "B AF". -ss.input.port9.mission.afb.defpos off - -;ss, Virtual Port 9, Mission Stick: C AF -ss.input.port9.mission.afc - -;Default position for switch "C AF". -ss.input.port9.mission.afc.defpos off - -;ss, Virtual Port 9, Mission Stick: L AF -ss.input.port9.mission.afl - -;Default position for switch "L AF". -ss.input.port9.mission.afl.defpos off - -;ss, Virtual Port 9, Mission Stick: R AF -ss.input.port9.mission.afr - -;Default position for switch "R AF". -ss.input.port9.mission.afr.defpos off - -;ss, Virtual Port 9, Mission Stick: AF Speed -ss.input.port9.mission.afspeed - -;Default position for switch "AF Speed". -ss.input.port9.mission.afspeed.defpos 1 - -;ss, Virtual Port 9, Mission Stick: X AF -ss.input.port9.mission.afx - -;Default position for switch "X AF". -ss.input.port9.mission.afx.defpos off - -;ss, Virtual Port 9, Mission Stick: Y AF -ss.input.port9.mission.afy - -;Default position for switch "Y AF". -ss.input.port9.mission.afy.defpos off - -;ss, Virtual Port 9, Mission Stick: Z AF -ss.input.port9.mission.afz - -;Default position for switch "Z AF". -ss.input.port9.mission.afz.defpos off - -;ss, Virtual Port 9, Mission Stick: B (Stick Left Button) -ss.input.port9.mission.b - -;ss, Virtual Port 9, Mission Stick: C (Stick Right Button) -ss.input.port9.mission.c - -;ss, Virtual Port 9, Mission Stick: L -ss.input.port9.mission.l - -;ss, Virtual Port 9, Mission Stick: R -ss.input.port9.mission.r - -;ss, Virtual Port 9, Mission Stick: START -ss.input.port9.mission.start - -;ss, Virtual Port 9, Mission Stick: Stick BACK ↓ (Analog) -ss.input.port9.mission.stick_back - -;ss, Virtual Port 9, Mission Stick: Stick FORE ↑ (Analog) -ss.input.port9.mission.stick_fore - -;ss, Virtual Port 9, Mission Stick: Stick LEFT ← (Analog) -ss.input.port9.mission.stick_left - -;ss, Virtual Port 9, Mission Stick: Stick RIGHT → (Analog) -ss.input.port9.mission.stick_right - -;ss, Virtual Port 9, Mission Stick: Throttle Down (Analog) -ss.input.port9.mission.throttle_down - -;ss, Virtual Port 9, Mission Stick: Throttle Up (Analog) -ss.input.port9.mission.throttle_up - -;ss, Virtual Port 9, Mission Stick: X -ss.input.port9.mission.x - -;ss, Virtual Port 9, Mission Stick: Y -ss.input.port9.mission.y - -;ss, Virtual Port 9, Mission Stick: Z -ss.input.port9.mission.z - -;ss, Virtual Port 9, Mouse: Left Button -ss.input.port9.mouse.left mouse 0x0 button_left - -;ss, Virtual Port 9, Mouse: Middle Button -ss.input.port9.mouse.middle mouse 0x0 button_middle - -;ss, Virtual Port 9, Mouse: Motion Down -ss.input.port9.mouse.motion_down mouse 0x0 rel_y+ - -;ss, Virtual Port 9, Mouse: Motion Left -ss.input.port9.mouse.motion_left mouse 0x0 rel_x- - -;ss, Virtual Port 9, Mouse: Motion Right -ss.input.port9.mouse.motion_right mouse 0x0 rel_x+ - -;ss, Virtual Port 9, Mouse: Motion Up -ss.input.port9.mouse.motion_up mouse 0x0 rel_y- - -;ss, Virtual Port 9, Mouse: Right Button -ss.input.port9.mouse.right mouse 0x0 button_right - -;ss, Virtual Port 9, Mouse: Start -ss.input.port9.mouse.start keyboard 0x0 40 - -;ss, Virtual Port 9, Steering Wheel: A (R Group) -ss.input.port9.wheel.a - -;ss, Virtual Port 9, Steering Wheel: Analog LEFT ← -ss.input.port9.wheel.analog_left - -;ss, Virtual Port 9, Steering Wheel: Analog RIGHT → -ss.input.port9.wheel.analog_right - -;ss, Virtual Port 9, Steering Wheel: B (R Group) -ss.input.port9.wheel.b - -;ss, Virtual Port 9, Steering Wheel: C (R Group) -ss.input.port9.wheel.c - -;ss, Virtual Port 9, Steering Wheel: R Gear Shift(Equiv. DOWN ↓) -ss.input.port9.wheel.down - -;ss, Virtual Port 9, Steering Wheel: START -ss.input.port9.wheel.start - -;ss, Virtual Port 9, Steering Wheel: L Gear Shift(Equiv. UP ↑) -ss.input.port9.wheel.up - -;ss, Virtual Port 9, Steering Wheel: X (L Group) -ss.input.port9.wheel.x - -;ss, Virtual Port 9, Steering Wheel: Y (L Group) -ss.input.port9.wheel.y - -;ss, Virtual Port 9, Steering Wheel: Z (L Group) -ss.input.port9.wheel.z - -;Enable multitap on Saturn port 1. -ss.input.sport1.multitap 0 - -;Enable multitap on Saturn port 2. -ss.input.sport2.multitap 0 - -;Attempt to auto-detect region of game. -ss.region_autodetect 1 - -;Default region to use. -ss.region_default jp - -;Enable scanlines with specified opacity. -ss.scanlines 0 - -;SCSP output resampler quality. -ss.scsp.resamp_quality 4 - -;Enable specified OpenGL shader. -ss.shader scale2x - -;Force interlaced video to be treated as progressive. -ss.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -ss.shader.goat.hdiv 0.50 - -;Mask pattern. -ss.shader.goat.pat goatron - -;Enable scanlines effect. -ss.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -ss.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -ss.shader.goat.vdiv 0.50 - -;Last displayed scanline in NTSC mode. -ss.slend 239 - -;Last displayed scanline in PAL mode. -ss.slendp 255 - -;First displayed scanline in NTSC mode. -ss.slstart 0 - -;First displayed scanline in PAL mode. -ss.slstartp 0 - -;Automatically set RTC on game load. -ss.smpc.autortc 1 - -;BIOS language. -ss.smpc.autortc.lang english - -;Enable specified special video scaler. -ss.special none - -;Stretch to fill screen. -ss.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -ss.tblur 0 - -;Accumulate color data rather than discarding it. -ss.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -ss.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -ss.videoip 1 - -;Full-screen horizontal resolution. -ss.xres 0 - -;Scaling factor for the X axis in windowed mode. -ss.xscale 3.000000 - -;Scaling factor for the X axis in fullscreen mode. -ss.xscalefs 1.000000 - -;Full-screen vertical resolution. -ss.yres 0 - -;Scaling factor for the Y axis in windowed mode. -ss.yscale 3.000000 - -;Scaling factor for the Y axis in fullscreen mode. -ss.yscalefs 1.000000 - -;3D mode. -vb.3dmode anaglyph - -;Reverse left/right 3D views. -vb.3dreverse 0 - -;Allow draw skipping. -vb.allow_draw_skip 0 - -;Anaglyph maximum-brightness color for left view. -vb.anaglyph.lcolor 0xffba00 - -;Anaglyph preset colors. -vb.anaglyph.preset red_blue - -;Anaglyph maximum-brightness color for right view. -vb.anaglyph.rcolor 0x00baff - -;CPU emulation mode. -vb.cpu_emulation accurate - -;Disassembly font size. -vb.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -vb.debugger.memcharenc shift_jis - -;Default maximum-brightness color to use in non-anaglyph 3D modes. -vb.default_color 0xF0F0F0 - -;Disable parallax for BG and OBJ rendering. -vb.disable_parallax 0 - -;Enable (automatic) usage of this module. -vb.enable 1 - -;Force monophonic sound output. -vb.forcemono 0 - -;vb, Built-In, Gamepad: A -vb.input.builtin.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;vb, Built-In, Gamepad: B -vb.input.builtin.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;vb, Built-In, Gamepad: DOWN ↓ (Left D-Pad) -vb.input.builtin.gamepad.down-l joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;vb, Built-In, Gamepad: DOWN ↓ (Right D-Pad) -vb.input.builtin.gamepad.down-r joystick 0x0003045e028e01010008000b00000000 abs_4+ - -;vb, Built-In, Gamepad: LEFT ← (Left D-Pad) -vb.input.builtin.gamepad.left-l joystick 0x0003045e028e01010008000b00000000 abs_6- - -;vb, Built-In, Gamepad: LEFT ← (Right D-Pad) -vb.input.builtin.gamepad.left-r joystick 0x0003045e028e01010008000b00000000 abs_3- - -;vb, Built-In, Gamepad: Left-Back -vb.input.builtin.gamepad.lt joystick 0x0003045e028e01010008000b00000000 button_4 - -;vb, Built-In, Gamepad: Rapid A -vb.input.builtin.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;vb, Built-In, Gamepad: Rapid B -vb.input.builtin.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;vb, Built-In, Gamepad: RIGHT → (Left D-Pad) -vb.input.builtin.gamepad.right-l joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;vb, Built-In, Gamepad: RIGHT → (Right D-Pad) -vb.input.builtin.gamepad.right-r joystick 0x0003045e028e01010008000b00000000 abs_3+ - -;vb, Built-In, Gamepad: Right-Back -vb.input.builtin.gamepad.rt joystick 0x0003045e028e01010008000b00000000 button_5 - -;vb, Built-In, Gamepad: Select -vb.input.builtin.gamepad.select joystick 0x0003045e028e01010008000b00000000 button_6 - -;vb, Built-In, Gamepad: Start -vb.input.builtin.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;vb, Built-In, Gamepad: UP ↑ (Left D-Pad) -vb.input.builtin.gamepad.up-l joystick 0x0003045e028e01010008000b00000000 abs_7- - -;vb, Built-In, Gamepad: UP ↑ (Right D-Pad) -vb.input.builtin.gamepad.up-r joystick 0x0003045e028e01010008000b00000000 abs_4- - -;Input latency reduction hack. -vb.input.instant_read_hack 1 - -;vb, System, Misc: Battery Voltage -vb.input.system.misc.battery - -;Default position for switch "Battery Voltage". -vb.input.system.misc.battery.defpos normal - -;Display latency reduction hack. -vb.instant_display_hack 0 - -;LED on duration to linear RGB conversion coefficient. -vb.ledonscale 1.75 - -;Line Interlaced prescale. -vb.liprescale 2 - -;Enable scanlines with specified opacity. -vb.scanlines 0 - -;Enable specified OpenGL shader. -vb.shader sabr - -;Force interlaced video to be treated as progressive. -vb.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -vb.shader.goat.hdiv 0.50 - -;Mask pattern. -vb.shader.goat.pat goatron - -;Enable scanlines effect. -vb.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -vb.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -vb.shader.goat.vdiv 0.50 - -;Number of pixels to separate L/R views by. -vb.sidebyside.separation 0 - -;Enable specified special video scaler. -vb.special none - -;Stretch to fill screen. -vb.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -vb.tblur 0 - -;Accumulate color data rather than discarding it. -vb.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -vb.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -vb.videoip 0 - -;Full-screen horizontal resolution. -vb.xres 0 - -;Scaling factor for the X axis in windowed mode. -vb.xscale 2.000000 - -;Scaling factor for the X axis in fullscreen mode. -vb.xscalefs 1.000000 - -;Full-screen vertical resolution. -vb.yres 0 - -;Scaling factor for the Y axis in windowed mode. -vb.yscale 2.000000 - -;Scaling factor for the Y axis in fullscreen mode. -vb.yscalefs 1.000000 - -;Enable time synchronization(waiting) for frame blitting. -video.blit_timesync 1 - -;Preferred window manager cursor visibility. -video.cursorvis hidden - -;Deinterlacer to use for interlaced video. -video.deinterlacer weave - -;Attempt to disable desktop composition. -video.disable_composition 1 - -;Video output driver. -video.driver default - -;Force backbuffer clear before drawing. -video.force_bbclear 0 - -;Enable frameskip during emulation rendering. -video.frameskip 1 - -;Enable fullscreen mode. -video.fs 1 - -;Display to use with fullscreen mode. -video.fs.display -1 - -;Preferred source data pixel format for emulated video. -video.glformat auto - -;Attempt to synchronize OpenGL page flips to vertical retrace period. -video.glvsync 1 - -;Birth Day -wswan.bday 23 - -;Blood Type -wswan.blood O - -;Birth Month -wswan.bmonth 6 - -;Birth Year -wswan.byear 1989 - -;Disassembly font size. -wswan.debugger.disfontsize 5x7 - -;Character encoding for the debugger's memory editor. -wswan.debugger.memcharenc shift_jis - -;Enable (automatic) usage of this module. -wswan.enable 1 - -;Enable comms to external program. -wswan.excomm 0 - -;Comms external program path. -wswan.excomm.path wonderfence - -;Force monophonic sound output. -wswan.forcemono 0 - -;Input device for Built-In -wswan.input.builtin gamepad - -;wswan, Built-In, Gamepad: A -wswan.input.builtin.gamepad.a joystick 0x0003045e028e01010008000b00000000 button_1 - -;wswan, Built-In, Gamepad: B -wswan.input.builtin.gamepad.b joystick 0x0003045e028e01010008000b00000000 button_0 - -;wswan, Built-In, Gamepad: X3(X DOWN ↓) -wswan.input.builtin.gamepad.down-x joystick 0x0003045e028e01010008000b00000000 abs_7+ - -;wswan, Built-In, Gamepad: Y3(Y DOWN ↓) -wswan.input.builtin.gamepad.down-y joystick 0x0003045e028e01010008000b00000000 abs_2+ || joystick 0x0003045e028e01010008000b00000000 abs_2- - -;wswan, Built-In, Gamepad: X4(X LEFT ←) -wswan.input.builtin.gamepad.left-x joystick 0x0003045e028e01010008000b00000000 abs_6- - -;wswan, Built-In, Gamepad: Y4(Y LEFT ←) -wswan.input.builtin.gamepad.left-y joystick 0x0003045e028e01010008000b00000000 button_4 - -;wswan, Built-In, Gamepad: Rapid A -wswan.input.builtin.gamepad.rapid_a joystick 0x0003045e028e01010008000b00000000 button_3 - -;wswan, Built-In, Gamepad: Rapid B -wswan.input.builtin.gamepad.rapid_b joystick 0x0003045e028e01010008000b00000000 button_2 - -;wswan, Built-In, Gamepad: X2(X RIGHT →) -wswan.input.builtin.gamepad.right-x joystick 0x0003045e028e01010008000b00000000 abs_6+ - -;wswan, Built-In, Gamepad: Y2(Y RIGHT →) -wswan.input.builtin.gamepad.right-y joystick 0x0003045e028e01010008000b00000000 button_5 - -;wswan, Built-In, Gamepad: Start -wswan.input.builtin.gamepad.start joystick 0x0003045e028e01010008000b00000000 button_7 - -;wswan, Built-In, Gamepad: X1(X UP ↑) -wswan.input.builtin.gamepad.up-x joystick 0x0003045e028e01010008000b00000000 abs_7- - -;wswan, Built-In, Gamepad: Y1(Y UP ↑) -wswan.input.builtin.gamepad.up-y joystick 0x0003045e028e01010008000b00000000 abs_5- - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): A (right) -wswan.input.builtin.gamepadraa.a keyboard 0x0 91 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): A'(center, upper) -wswan.input.builtin.gamepadraa.ap keyboard 0x0 94 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): B (center, lower) -wswan.input.builtin.gamepadraa.b keyboard 0x0 90 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): B'(left) -wswan.input.builtin.gamepadraa.bp keyboard 0x0 93 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): X3(X DOWN ↓) -wswan.input.builtin.gamepadraa.down-x keyboard 0x0 22 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): Y3(Y DOWN ↓) -wswan.input.builtin.gamepadraa.down-y keyboard 0x0 81 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): X4(X LEFT ←) -wswan.input.builtin.gamepadraa.left-x keyboard 0x0 4 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): Y4(Y LEFT ←) -wswan.input.builtin.gamepadraa.left-y keyboard 0x0 80 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): X2(X RIGHT →) -wswan.input.builtin.gamepadraa.right-x keyboard 0x0 7 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): Y2(Y RIGHT →) -wswan.input.builtin.gamepadraa.right-y keyboard 0x0 79 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): Start -wswan.input.builtin.gamepadraa.start keyboard 0x0 40 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): X1(X UP ↑) -wswan.input.builtin.gamepadraa.up-x keyboard 0x0 26 - -;wswan, Built-In, Gamepad(Rotation Auto-Adjust): Y1(Y UP ↑) -wswan.input.builtin.gamepadraa.up-y keyboard 0x0 82 - -;Language games should display text in. -wswan.language english - -;Name -wswan.name Mednafen - -;Enable scanlines with specified opacity. -wswan.scanlines 0 - -;Sex -wswan.sex F - -;Enable specified OpenGL shader. -wswan.shader sabr - -;Force interlaced video to be treated as progressive. -wswan.shader.goat.fprog 0 - -;Constant RGB horizontal divergence. -wswan.shader.goat.hdiv 0.50 - -;Mask pattern. -wswan.shader.goat.pat goatron - -;Enable scanlines effect. -wswan.shader.goat.slen 1 - -;Transparency of otherwise-opaque mask areas. -wswan.shader.goat.tp 0.50 - -;Constant RGB vertical divergence. -wswan.shader.goat.vdiv 0.50 - -;Enable specified special video scaler. -wswan.special none - -;Stretch to fill screen. -wswan.stretch aspect - -;Enable video temporal blur(50/50 previous/current frame by default). -wswan.tblur 0 - -;Accumulate color data rather than discarding it. -wswan.tblur.accum 0 - -;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame. -wswan.tblur.accum.amount 50 - -;Enable (bi)linear interpolation. -wswan.videoip 0 - -;Full-screen horizontal resolution. -wswan.xres 0 - -;Scaling factor for the X axis in windowed mode. -wswan.xscale 4.000000 - -;Scaling factor for the X axis in fullscreen mode. -wswan.xscalefs 1.000000 - -;Full-screen vertical resolution. -wswan.yres 0 - -;Scaling factor for the Y axis in windowed mode. -wswan.yscale 4.000000 - -;Scaling factor for the Y axis in fullscreen mode. -wswan.yscalefs 1.000000 - diff --git a/packages/emulators/standalone/mednafen/config/common/mednafen.cfg b/packages/emulators/standalone/mednafen/config/common/mednafen.cfg index b08db7b34..c22b40558 100644 --- a/packages/emulators/standalone/mednafen/config/common/mednafen.cfg +++ b/packages/emulators/standalone/mednafen/config/common/mednafen.cfg @@ -9,7 +9,7 @@ affinity.cd 0 ;Main emulation thread CPU affinity mask. -affinity.emu 0 +affinity.emu 0x3 ;Video blitting thread CPU affinity mask. affinity.video 0 @@ -204,7 +204,7 @@ command.exit joystick @GUID1@ @DEVICE_BTN_SELECT@ && joystick @GUID1@ @DEVICE_BT command.fast_forward joystick @GUID1@ @DEVICE_BTN_SELECT@ && joystick @GUID1@ @DEVICE_BTN_TR2@ ;Configure buttons on virtual port 1 -command.input_config1 keyboard 0x0 30+alt+shift +command.input_config1 keyboard 0x0 30+alt+shift || joystick @GUID1@ @DEVICE_BTN_THUMBR@ && joystick @GUID1@ @DEVICE_BTN_TL2@ ;Configure buttons on virtual port 10 command.input_config10 keyboard 0x0 39+alt+shift @@ -255,7 +255,7 @@ command.input_configc_am keyboard 0x0 59+shift command.insert_coin keyboard 0x0 65 ;Insert/Eject disk/disc -command.insert_eject_disk joystick @GUID1@ @DEVICE_BTN_TR@ +command.insert_eject_disk joystick @GUID1@ @DEVICE_BTN_THUMBR@ && joystick @GUID1@ @DEVICE_BTN_TR@ ;Load movie command.load_movie keyboard 0x0 64+shift @@ -318,7 +318,7 @@ command.save_movie keyboard 0x0 62+shift command.save_state joystick @GUID1@ @DEVICE_BTN_SELECT@ && joystick @GUID1@ @DEVICE_BTN_TR@ ;Select disk/disc -command.select_disk joystick @GUID1@ @DEVICE_BTN_TL@ +command.select_disk joystick @GUID1@ @DEVICE_BTN_THUMBR@ && joystick @GUID1@ @DEVICE_BTN_TL@ ;Select drive command.select_drive keyboard 0x0 63+shift @@ -327,13 +327,13 @@ command.select_drive keyboard 0x0 63+shift command.slow_forward keyboard 0x0 49 ;Rewind -command.state_rewind joystick @GUID1@ @DEVICE_BTN_THUMBL@ && joystick @GUID1@ @DEVICE_BTN_TL2@ +command.state_rewind joystick @GUID1@ @DEVICE_BTN_SELECT@ && joystick @GUID1@ @DEVICE_BTN_TL2@ ;Decrease selected save state slot by 1 -command.state_slot_dec joystick @GUID1@ @DEVICE_BTN_THUMBL@ && joystick @GUID1@ @DEVICE_BTN_DPAD_LEFT@ +command.state_slot_dec joystick @GUID1@ @DEVICE_BTN_THUMBR@ && joystick @GUID1@ @DEVICE_BTN_DPAD_LEFT@ ;Increase selected save state slot by 1 -command.state_slot_inc joystick @GUID1@ @DEVICE_BTN_THUMBL@ && joystick @GUID1@ @DEVICE_BTN_DPAD_RIGHT@ +command.state_slot_inc joystick @GUID1@ @DEVICE_BTN_THUMBR@ && joystick @GUID1@ @DEVICE_BTN_DPAD_RIGHT@ ;Take scaled(and filtered) screen snapshot command.take_scaled_snapshot keyboard 0x0 66+shift @@ -546,19 +546,19 @@ ffspeed 15 fftoggle 1 ;Format string for movie filename. -filesys.fname_movie %f.%M%p.%x +filesys.fname_movie %f.%M%p.mednafen.%x ;Format string for save games filename. -filesys.fname_sav %f.%M%x +filesys.fname_sav %f.mednafen.%M%x ;Format string for save game backups filename. -filesys.fname_savbackup %f.%m%z%p.%x +filesys.fname_savbackup %f.%m%z%p.mednafen.%x ;Format string for screen snapshot filenames. -filesys.fname_snap %f-%p.%x +filesys.fname_snap %f-%p.mednafen.%x ;Format string for state filename. -filesys.fname_state %f.%M%X +filesys.fname_state %f.mednafen.%M%X ;Enable old handling of .gz file extensions with respect to data file path construction. filesys.old_gz_naming 0 @@ -726,7 +726,7 @@ gb.yscale 6.000000 gb.yscalefs 1.000000 ;Path to optional GBA BIOS ROM image. -gba.bios +gba.bios gba_bios.bin ;Enable (automatic) usage of this module. gba.enable 1 @@ -927,7 +927,7 @@ gg.yscalefs 1.000000 input.autofirefreq 3 ;Dangerous key action delay. -input.ckdelay 0 +input.ckdelay 1500 ;Analog axis binary press detection threshold. input.joystick.axis_threshold 75 @@ -1137,22 +1137,22 @@ md.input.port1.gamepad2.start md.input.port1.gamepad2.up ;md, Virtual Port 1, 6-Button Gamepad: A -md.input.port1.gamepad6.a keyboard 0x0 89 +md.input.port1.gamepad6.a joystick @GUID1@ @DEVICE_BTN_WEST@ ;md, Virtual Port 1, 6-Button Gamepad: B -md.input.port1.gamepad6.b keyboard 0x0 90 +md.input.port1.gamepad6.b joystick @GUID1@ @DEVICE_BTN_SOUTH@ ;md, Virtual Port 1, 6-Button Gamepad: C -md.input.port1.gamepad6.c keyboard 0x0 91 +md.input.port1.gamepad6.c joystick @GUID1@ @DEVICE_BTN_EAST@ ;md, Virtual Port 1, 6-Button Gamepad: DOWN ↓ -md.input.port1.gamepad6.down keyboard 0x0 22 +md.input.port1.gamepad6.down joystick @GUID1@ @DEVICE_BTN_DPAD_DOWN@ ;md, Virtual Port 1, 6-Button Gamepad: LEFT ← -md.input.port1.gamepad6.left keyboard 0x0 4 +md.input.port1.gamepad6.left joystick @GUID1@ @DEVICE_BTN_DPAD_LEFT@ ;md, Virtual Port 1, 6-Button Gamepad: Mode -md.input.port1.gamepad6.mode keyboard 0x0 16 +md.input.port1.gamepad6.mode joystick @GUID1@ @DEVICE_BTN_SELECT@ ;md, Virtual Port 1, 6-Button Gamepad: Rapid A md.input.port1.gamepad6.rapid_a @@ -1173,22 +1173,22 @@ md.input.port1.gamepad6.rapid_y md.input.port1.gamepad6.rapid_z ;md, Virtual Port 1, 6-Button Gamepad: RIGHT → -md.input.port1.gamepad6.right keyboard 0x0 7 +md.input.port1.gamepad6.right joystick @GUID1@ @DEVICE_BTN_DPAD_RIGHT@ ;md, Virtual Port 1, 6-Button Gamepad: Start -md.input.port1.gamepad6.start keyboard 0x0 40 +md.input.port1.gamepad6.start joystick @GUID1@ @DEVICE_BTN_START@ ;md, Virtual Port 1, 6-Button Gamepad: UP ↑ -md.input.port1.gamepad6.up keyboard 0x0 26 +md.input.port1.gamepad6.up joystick @GUID1@ @DEVICE_BTN_DPAD_UP@ ;md, Virtual Port 1, 6-Button Gamepad: X -md.input.port1.gamepad6.x keyboard 0x0 92 +md.input.port1.gamepad6.x joystick @GUID1@ @DEVICE_BTN_TL@ ;md, Virtual Port 1, 6-Button Gamepad: Y -md.input.port1.gamepad6.y keyboard 0x0 93 +md.input.port1.gamepad6.y joystick @GUID1@ @DEVICE_BTN_NORTH@ ;md, Virtual Port 1, 6-Button Gamepad: Z -md.input.port1.gamepad6.z keyboard 0x0 94 +md.input.port1.gamepad6.z joystick @GUID1@ @DEVICE_BTN_TR@ ;md, Virtual Port 1, Sega Mega Mouse: Left Button md.input.port1.megamouse.left mouse 0x0 button_left @@ -3306,7 +3306,7 @@ pce.adpcmvolume 100 pce.arcadecard 1 ;Path to the CD BIOS -pce.cdbios /storage/roms/bios/syscard3.pce +pce.cdbios syscard3.pce ;CD-DA volume. pce.cddavolume 100 @@ -3339,7 +3339,7 @@ pce.forcemono 0 pce.forcesgx 0 ;Path to the GE CD BIOS -pce.gecdbios /storage/roms/bios/gecard.pce +pce.gecdbios gecard.pce ;Show horizontal overscan area. pce.h_overscan 0 @@ -4125,7 +4125,7 @@ pce_fast.adpcmvolume 100 pce_fast.arcadecard 1 ;Path to the CD BIOS -pce_fast.cdbios /storage/roms/bios/syscard3.pce +pce_fast.cdbios syscard3.pce ;CD-DA volume. pce_fast.cddavolume 100 @@ -4608,7 +4608,7 @@ pcfx.adpcm.emulate_buggy_codec 0 pcfx.adpcm.suppress_channel_reset_clicks 1 ;Path to the ROM BIOS -pcfx.bios /storage/roms/bios/pcfx.rom +pcfx.bios pcfx.rom ;Emulated CD-ROM speed. pcfx.cdspeed 2 @@ -6021,7 +6021,7 @@ snes_faust.affinity.msu1.audio 0 snes_faust.affinity.msu1.data 0 ;PPU rendering thread CPU affinity mask. -snes_faust.affinity.ppu 0 +snes_faust.affinity.ppu 0xc ;Correct aspect ratio. snes_faust.correct_aspect 1 @@ -6756,7 +6756,7 @@ vb.debugger.memcharenc shift_jis vb.default_color 0xF0F0F0 ;Disable parallax for BG and OBJ rendering. -vb.disable_parallax 1 +vb.disable_parallax 0 ;Enable (automatic) usage of this module. vb.enable 1 @@ -9865,43 +9865,43 @@ ss.input.mouse_sensitivity 0.50 ss.input.port1 gamepad -ss.input.port1.3dpad.a +ss.input.port1.3dpad.a joystick @GUID1@ @DEVICE_BTN_WEST@ -ss.input.port1.3dpad.analog_down +ss.input.port1.3dpad.analog_down joystick @GUID1@ @DEVICE_BTN_AL_DOWN@ -ss.input.port1.3dpad.analog_left +ss.input.port1.3dpad.analog_left joystick @GUID1@ @DEVICE_BTN_AL_LEFT@ -ss.input.port1.3dpad.analog_right +ss.input.port1.3dpad.analog_right joystick @GUID1@ @DEVICE_BTN_AL_RIGHT@ -ss.input.port1.3dpad.analog_up +ss.input.port1.3dpad.analog_up joystick @GUID1@ @DEVICE_BTN_AL_UP@ -ss.input.port1.3dpad.b +ss.input.port1.3dpad.b joystick @GUID1@ @DEVICE_BTN_SOUTH@ -ss.input.port1.3dpad.c +ss.input.port1.3dpad.c joystick @GUID1@ @DEVICE_BTN_TR@ -ss.input.port1.3dpad.down +ss.input.port1.3dpad.down joystick @GUID1@ @DEVICE_BTN_DPAD_DOWN@ -ss.input.port1.3dpad.left +ss.input.port1.3dpad.left joystick @GUID1@ @DEVICE_BTN_DPAD_LEFT@ -ss.input.port1.3dpad.ls +ss.input.port1.3dpad.ls joystick @GUID1@ @DEVICE_BTN_TL2@ || joystick @GUID1@ @DEVICE_BTN_TL2_MINUS@ -ss.input.port1.3dpad.mode +ss.input.port1.3dpad.mode joystick -ss.input.port1.3dpad.mode.defpos digital +ss.input.port1.3dpad.mode.defpos analog -ss.input.port1.3dpad.right +ss.input.port1.3dpad.right joystick @GUID1@ @DEVICE_BTN_DPAD_RIGHT@ -ss.input.port1.3dpad.rs +ss.input.port1.3dpad.rs joystick @GUID1@ @DEVICE_BTN_TR2@ || joystick @GUID1@ @DEVICE_BTN_TR2_MINUS@ -ss.input.port1.3dpad.start +ss.input.port1.3dpad.start joystick @GUID1@ @DEVICE_BTN_START@ -ss.input.port1.3dpad.up +ss.input.port1.3dpad.up joystick @GUID1@ @DEVICE_BTN_DPAD_UP@ -ss.input.port1.3dpad.x +ss.input.port1.3dpad.x joystick @GUID1@ @DEVICE_BTN_WEST@ -ss.input.port1.3dpad.y +ss.input.port1.3dpad.y joystick @GUID1@ @DEVICE_BTN_NORTH@ -ss.input.port1.3dpad.z +ss.input.port1.3dpad.z joystick @GUID1@ @DEVICE_BTN_TL@ ss.input.port1.dmission.a @@ -9981,31 +9981,31 @@ ss.input.port1.dmission.y ss.input.port1.dmission.z -ss.input.port1.gamepad.a keyboard 0x0 89 +ss.input.port1.gamepad.a joystick @GUID1@ @DEVICE_BTN_WEST@ -ss.input.port1.gamepad.b keyboard 0x0 90 +ss.input.port1.gamepad.b joystick @GUID1@ @DEVICE_BTN_SOUTH@ -ss.input.port1.gamepad.c keyboard 0x0 91 +ss.input.port1.gamepad.c joystick @GUID1@ @DEVICE_BTN_TR@ -ss.input.port1.gamepad.down keyboard 0x0 22 +ss.input.port1.gamepad.down joystick @GUID1@ @DEVICE_BTN_DPAD_DOWN@ -ss.input.port1.gamepad.left keyboard 0x0 4 +ss.input.port1.gamepad.left joystick @GUID1@ @DEVICE_BTN_DPAD_LEFT@ -ss.input.port1.gamepad.ls keyboard 0x0 95 +ss.input.port1.gamepad.ls joystick @GUID1@ @DEVICE_BTN_TL2@ -ss.input.port1.gamepad.right keyboard 0x0 7 +ss.input.port1.gamepad.right joystick @GUID1@ @DEVICE_BTN_DPAD_RIGHT@ -ss.input.port1.gamepad.rs keyboard 0x0 97 +ss.input.port1.gamepad.rs joystick @GUID1@ @DEVICE_BTN_TR2@ -ss.input.port1.gamepad.start keyboard 0x0 40 +ss.input.port1.gamepad.start joystick @GUID1@ @DEVICE_BTN_START@ -ss.input.port1.gamepad.up keyboard 0x0 26 +ss.input.port1.gamepad.up joystick @GUID1@ @DEVICE_BTN_DPAD_UP@ -ss.input.port1.gamepad.x keyboard 0x0 92 +ss.input.port1.gamepad.x joystick @GUID1@ @DEVICE_BTN_WEST@ -ss.input.port1.gamepad.y keyboard 0x0 93 +ss.input.port1.gamepad.y joystick @GUID1@ @DEVICE_BTN_NORTH@ -ss.input.port1.gamepad.z keyboard 0x0 94 +ss.input.port1.gamepad.z joystick @GUID1@ @DEVICE_BTN_TL@ ss.input.port1.gun.offscreen_shot mouse 0x0 button_right diff --git a/packages/emulators/standalone/mednafen/package.mk b/packages/emulators/standalone/mednafen/package.mk index 0dcdc4726..19fc7f7a6 100644 --- a/packages/emulators/standalone/mednafen/package.mk +++ b/packages/emulators/standalone/mednafen/package.mk @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2023-present asoderq/sydarn2 (https://github.com/asoderq) +# Copyright (C) 2023-present sydarn (https://github.com/asoderq) PKG_NAME="mednafen" PKG_VERSION="1.31.0-UNSTABLE" @@ -13,18 +13,17 @@ pre_configure_target() { # unsupported modules DISABLED_MODULES+=" --disable-apple2 \ - --disable-sasplay \ + --disable-sasplay \ --disable-ssfplay" case ${DEVICE} in - RK3326) + RK3326|RK3566) DISABLED_MODULES+=" --disable-snes \ --disable-ss \ --disable-psx" ;; - RK356*) - DISABLED_MODULES+=" --disable-ss \ - --disable-psx" + S922X|RK3399|RK3588) + DISABLED_MODULES+=" --disable-ss" ;; esac @@ -37,13 +36,10 @@ makeinstall_target() { cp -rf ${PKG_DIR}/scripts/* ${INSTALL}/usr/bin chmod +x ${INSTALL}/usr/bin/start_mednafen.sh + chmod +x ${INSTALL}/usr/bin/mednafen_gen_config.sh mkdir -p ${INSTALL}/usr/config/${PKG_NAME} - if [ -d ${PKG_DIR}/config/${DEVICE} ]; then - cp ${PKG_DIR}/config/${DEVICE}/* ${INSTALL}/usr/config/${PKG_NAME} - else - cp ${PKG_DIR}/config/common/* ${INSTALL}/usr/config/${PKG_NAME} - fi + cp ${PKG_DIR}/config/common/* ${INSTALL}/usr/config/${PKG_NAME} } post_install() { diff --git a/packages/emulators/standalone/mednafen/scripts/mednafen_gen_config.sh b/packages/emulators/standalone/mednafen/scripts/mednafen_gen_config.sh new file mode 100644 index 000000000..357c46854 --- /dev/null +++ b/packages/emulators/standalone/mednafen/scripts/mednafen_gen_config.sh @@ -0,0 +1,145 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023-present asoderq (https://github.com/asoderq) + +. /etc/profile + + +# Generate controller config +# Set controller guid, just take the first one mednafen lists +GUID1="$(mednafen --list-joysticks | grep ID | awk 'NR==1 {print $2}')" +sed -e "s/@GUID1@/${GUID1}/g" ${MEDNAFEN_CONFIG} >> $MEDNAFEN_HOME/mednafen.cfg + +NAME="$(mednafen --list-joysticks | grep ID | awk 'NR==1 {print $5$6}')" + + +# Controller config for 360 and GPIO handled separately +if [[ "${NAME}" = "X-Box360" ]] +then +for CONTROL in DEVICE_BTN_SOUTH DEVICE_BTN_EAST DEVICE_BTN_NORTH \ + DEVICE_BTN_WEST DEVICE_BTN_TL DEVICE_BTN_TR \ + DEVICE_BTN_SELECT DEVICE_BTN_START DEVICE_BTN_MODE \ + DEVICE_BTN_THUMBL DEVICE_BTN_THUMBR +do + sed -i -e "s/@${CONTROL}@/button_${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg +done + +# Naming differs to much just assign mednafen name here +DEVICE_BTN_DPAD_UP="abs_7-" +DEVICE_BTN_DPAD_DOWN="abs_7+" +DEVICE_BTN_DPAD_LEFT="abs_6-" +DEVICE_BTN_DPAD_RIGHT="abs_6+" +DEVICE_BTN_TL2="abs_2+" +DEVICE_BTN_TR2="abs_5+" + +# These are the minus range of the analog triggers +DEVICE_BTN_TL2_MINUS="abs_2-" +DEVICE_BTN_TR2_MINUS="abs_5-" + +# Left analog +DEVICE_BTN_AL_DOWN="abs_1+" +DEVICE_BTN_AL_UP="abs_1-" +DEVICE_BTN_AL_LEFT="abs_0-" +DEVICE_BTN_AL_RIGHT="abs_0+" + +# Right analog +DEVICE_BTN_AR_DOWN="abs_3+" +DEVICE_BTN_AR_UP="abs_3-" +DEVICE_BTN_AR_LEFT="abs_2-" +DEVICE_BTN_AR_RIGHT="abs_2+" + +for CONTROL in DEVICE_BTN_TL2 DEVICE_BTN_TR2 DEVICE_BTN_DPAD_UP \ + DEVICE_BTN_DPAD_DOWN DEVICE_BTN_DPAD_LEFT \ + DEVICE_BTN_DPAD_RIGHT DEVICE_BTN_TL2 \ + DEVICE_BTN_TR2_MINUS DEVICE_BTN_AL_DOWN DEVICE_BTN_AL_UP \ + DEVICE_BTN_AL_LEFT DEVICE_BTN_AL_RIGHT \ + DEVICE_BTN_AR_DOWN DEVICE_BTN_AR_UP DEVICE_BTN_AR_LEFT \ + DEVICE_BTN_TL2_MINUS DEVICE_BTN_TR2_MINUS +do + sed -i -e "s/@${CONTROL}@/${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg +done + +elif [[ "${NAME}" = "OSHPB" ]] +then +# This is 351P, maybe, hopefully also M and V. +# No 351 usb controller has analog triggers +DEVICE_BTN_TL2_MINUS=${DEVICE_BTN_TL2} +DEVICE_BTN_TR2_MINUS=${DEVICE_BTN_TR2} + +# These are the inputs prefixed with button_ +for CONTROL in DEVICE_BTN_SOUTH DEVICE_BTN_EAST DEVICE_BTN_NORTH \ + DEVICE_BTN_WEST DEVICE_BTN_TL DEVICE_BTN_TR \ + DEVICE_BTN_TL2 DEVICE_BTN_TR2 DEVICE_BTN_SELECT \ + DEVICE_BTN_START DEVICE_BTN_MODE DEVICE_BTN_THUMBL \ + DEVICE_BTN_THUMBR DEVICE_BTN_TL2_MINUS DEVICE_BTN_TR2_MINUS +do + sed -i -e "s/@${CONTROL}@/button_${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg +done + +DEVICE_BTN_DPAD_UP="abs_6-" +DEVICE_BTN_DPAD_DOWN="abs_6+" +DEVICE_BTN_DPAD_LEFT="abs_5-" +DEVICE_BTN_DPAD_RIGHT="abs_5+" + +# These inputs are probably prefixed with something else than button_ +# Just null out the sticks until it is supported in the controller profile +# Left analog +DEVICE_BTN_AL_DOWN="" +DEVICE_BTN_AL_UP="" +DEVICE_BTN_AL_LEFT="" +DEVICE_BTN_AL_RIGHT="" + +# Right analog +DEVICE_BTN_AR_DOWN="" +DEVICE_BTN_AR_UP="" +DEVICE_BTN_AR_LEFT="" +DEVICE_BTN_AR_RIGHT="" +for CONTROL in DEVICE_BTN_AL_DOWN DEVICE_BTN_AL_UP DEVICE_BTN_AL_LEFT \ + DEVICE_BTN_AL_RIGHT DEVICE_BTN_AR_DOWN DEVICE_BTN_AR_UP \ + DEVICE_BTN_AR_LEFT DEVICE_BTN_DPAD_UP DEVICE_BTN_DPAD_DOWN\ + DEVICE_BTN_DPAD_LEFT DEVICE_BTN_DPAD_RIGHT + +do + sed -i -e "s/@${CONTROL}@/${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg +done + +else +# No GPIO device has analog triggers (I think), Just set them to the same +DEVICE_BTN_TL2_MINUS=${DEVICE_BTN_TL2} +DEVICE_BTN_TR2_MINUS=${DEVICE_BTN_TR2} + +# These are the inputs prefixed with button_ +for CONTROL in DEVICE_BTN_SOUTH DEVICE_BTN_EAST DEVICE_BTN_NORTH \ + DEVICE_BTN_WEST DEVICE_BTN_TL DEVICE_BTN_TR \ + DEVICE_BTN_TL2 DEVICE_BTN_TR2 DEVICE_BTN_SELECT \ + DEVICE_BTN_START DEVICE_BTN_MODE DEVICE_BTN_THUMBL \ + DEVICE_BTN_THUMBR DEVICE_BTN_DPAD_UP DEVICE_BTN_DPAD_DOWN \ + DEVICE_BTN_DPAD_LEFT DEVICE_BTN_DPAD_RIGHT \ + DEVICE_BTN_TL2_MINUS DEVICE_BTN_TR2_MINUS +do + sed -i -e "s/@${CONTROL}@/button_${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg +done + +# These inputs are probably prefixed with something else than button_ +# Just null out the sticks until it is supported in the controller profile +# Left analog +DEVICE_BTN_AL_DOWN="" +DEVICE_BTN_AL_UP="" +DEVICE_BTN_AL_LEFT="" +DEVICE_BTN_AL_RIGHT="" + +# Right analog +DEVICE_BTN_AR_DOWN="" +DEVICE_BTN_AR_UP="" +DEVICE_BTN_AR_LEFT="" +DEVICE_BTN_AR_RIGHT="" +for CONTROL in DEVICE_BTN_AL_DOWN DEVICE_BTN_AL_UP DEVICE_BTN_AL_LEFT \ + DEVICE_BTN_AL_RIGHT DEVICE_BTN_AR_DOWN DEVICE_BTN_AR_UP \ + DEVICE_BTN_AR_LEFT +do + sed -i -e "s/@${CONTROL}@//g" $MEDNAFEN_HOME/mednafen.cfg +done + +fi + + diff --git a/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh b/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh index 3ceb492e7..3a1d4fb19 100644 --- a/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh +++ b/packages/emulators/standalone/mednafen/scripts/start_mednafen.sh @@ -1,11 +1,21 @@ #!/bin/bash # SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2022-present asoderq (https://github.com/asoderq) +# Copyright (C) 2023-present asoderq (https://github.com/asoderq) . /etc/profile export MEDNAFEN_HOME=/storage/.config/mednafen -MEDNAFEN_CONFIG=/usr/config/mednafen/mednafen.cfg +export MEDNAFEN_CONFIG=/usr/config/mednafen/mednafen.cfg + +if [ ! -d "$MEDNAFEN_HOME" ] +then + mkdir /storage/.config/mednafen +fi + +if [ ! -f "$MEDNAFEN_HOME/mednafen.cfg" ] +then + /usr/bin/bash /usr/bin/mednafen_gen_config.sh +fi #Emulation Station Features GAME=$(echo "${1}"| sed "s#^/.*/##") @@ -27,26 +37,8 @@ else unset EMUPERF fi -# delete current config -rm $MEDNAFEN_HOME/mednafen.cfg -# Generate controller config -# Set controller sdl guid -GUID1="$(mednafen --list-joysticks | grep ID | awk 'NR==1 {print $2}')" -sed -e "s/@GUID1@/${GUID1}/g" ${MEDNAFEN_CONFIG} >> $MEDNAFEN_HOME/mednafen.cfg - -# Buttons mapping -for CONTROL in DEVICE_BTN_SOUTH DEVICE_BTN_EAST DEVICE_BTN_NORTH \ - DEVICE_BTN_WEST DEVICE_BTN_TL DEVICE_BTN_TR \ - DEVICE_BTN_TL2 DEVICE_BTN_TR2 DEVICE_BTN_SELECT \ - DEVICE_BTN_START DEVICE_BTN_MODE DEVICE_BTN_THUMBL \ - DEVICE_BTN_THUMBR DEVICE_BTN_DPAD_UP DEVICE_BTN_DPAD_DOWN \ - DEVICE_BTN_DPAD_LEFT DEVICE_BTN_DPAD_RIGHT -do - sed -i -e "s/@${CONTROL}@/button_${!CONTROL}/g" $MEDNAFEN_HOME/mednafen.cfg -done - #Set Save folder - sed -i -e "s/@PLATFORM@/${PLATFORM}/g" $MEDNAFEN_HOME/mednafen.cfg +sed -i -e "s/@PLATFORM@/${PLATFORM}/g" $MEDNAFEN_HOME/mednafen.cfg # Get command line switches FEATURES_CMDLINE="" diff --git a/packages/emulators/standalone/openbor/package.mk b/packages/emulators/standalone/openbor/package.mk index c8f48da29..34527afff 100644 --- a/packages/emulators/standalone/openbor/package.mk +++ b/packages/emulators/standalone/openbor/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="openbor" -PKG_VERSION="7f6f17507078848be625e6d1c1b4f41823151387" +PKG_VERSION="b8303cce992a0db93c3a465df3c943942fe322f8" PKG_ARCH="any" PKG_SITE="https://github.com/DCurrent/openbor" PKG_URL="${PKG_SITE}.git" diff --git a/packages/emulators/standalone/ppsspp-sa/package.mk b/packages/emulators/standalone/ppsspp-sa/package.mk index 2369daa26..599bd0a27 100644 --- a/packages/emulators/standalone/ppsspp-sa/package.mk +++ b/packages/emulators/standalone/ppsspp-sa/package.mk @@ -7,7 +7,7 @@ PKG_REV="1" PKG_ARCH="any" PKG_SITE="https://github.com/hrydgard/ppsspp" PKG_URL="${PKG_SITE}.git" -PKG_VERSION="a9d2ff29ea06c709c3cd077eeb720ce9efdc4f6f" +PKG_VERSION="157fabf91b959305af7bde3b124df3a15524fed4" PKG_LICENSE="GPLv2" PKG_DEPENDS_TARGET="toolchain ffmpeg libzip SDL2 zlib zip" PKG_SHORTDESC="PPSSPPDL" diff --git a/packages/emulators/standalone/retroarch/package.mk b/packages/emulators/standalone/retroarch/package.mk index 70bef01c1..7f48c9b00 100644 --- a/packages/emulators/standalone/retroarch/package.mk +++ b/packages/emulators/standalone/retroarch/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="retroarch" -PKG_VERSION="54805a182789cb5a76516884aebedfa3c6bf7e9f" +PKG_VERSION="636a6e9d55e6f83613d470bdaee9a1e21945c330" PKG_SITE="https://github.com/libretro/RetroArch" PKG_URL="${PKG_SITE}.git" PKG_LICENSE="GPLv3" diff --git a/packages/emulators/standalone/retroarch/sources/AMD64/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/AMD64/retroarch.cfg index 524190bbb..e80f97ae8 100644 --- a/packages/emulators/standalone/retroarch/sources/AMD64/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/AMD64/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable = "true" audio_enable_menu = "false" diff --git a/packages/emulators/standalone/retroarch/sources/RK3326/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3326/retroarch.cfg index 6fcf4eea6..5448eef76 100755 --- a/packages/emulators/standalone/retroarch/sources/RK3326/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/RK3326/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable_menu_bgm = "false" audio_enable_menu_cancel = "false" diff --git a/packages/emulators/standalone/retroarch/sources/RK3399/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3399/retroarch.cfg index e83a497f6..add180195 100644 --- a/packages/emulators/standalone/retroarch/sources/RK3399/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/RK3399/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable_menu_bgm = "false" audio_enable_menu_cancel = "false" diff --git a/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg index 291b4648a..417156035 100644 --- a/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/RK3566/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable_menu_bgm = "false" audio_enable_menu_cancel = "false" diff --git a/packages/emulators/standalone/retroarch/sources/RK3588/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/RK3588/retroarch.cfg index cdc0d5e70..4cf09f7de 100755 --- a/packages/emulators/standalone/retroarch/sources/RK3588/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/RK3588/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable_menu_bgm = "false" audio_enable_menu_cancel = "false" diff --git a/packages/emulators/standalone/retroarch/sources/S922X/retroarch.cfg b/packages/emulators/standalone/retroarch/sources/S922X/retroarch.cfg index 66c7a11bf..792bc4834 100644 --- a/packages/emulators/standalone/retroarch/sources/S922X/retroarch.cfg +++ b/packages/emulators/standalone/retroarch/sources/S922X/retroarch.cfg @@ -13,7 +13,7 @@ aspect_ratio_index = "22" assets_directory = "/tmp/assets" audio_block_frames = "0" audio_device = "" -audio_driver = "pulse" +audio_driver = "alsathread" audio_dsp_plugin = "" audio_enable_menu_bgm = "false" audio_enable_menu_cancel = "false" diff --git a/packages/emulators/standalone/rpcs3-sa/package.mk b/packages/emulators/standalone/rpcs3-sa/package.mk index cb3fa0ab9..5cce92066 100644 --- a/packages/emulators/standalone/rpcs3-sa/package.mk +++ b/packages/emulators/standalone/rpcs3-sa/package.mk @@ -16,7 +16,7 @@ PKG_GIT_CLONE_BRANCH="master" PKG_GIT_CLONE_SINGLE="yes" pre_configure_host() { - PKG_CMAKE_SCRIPT="${PKG_BUILD}/llvm/CMakeLists.txt" + PKG_CMAKE_SCRIPT="${PKG_BUILD}/3rdparty/llvm/llvm/llvm/CMakeLists.txt" PKG_CMAKE_OPTS_HOST="-DLLVM_TARGETS_TO_BUILD="X86" \ -DLLVM_BUILD_RUNTIME=OFF \ -DLLVM_BUILD_TOOLS=OFF \ diff --git a/packages/emulators/tools/retroarch-joypads/package.mk b/packages/emulators/tools/retroarch-joypads/package.mk index 4adde255a..f0fb48678 100644 --- a/packages/emulators/tools/retroarch-joypads/package.mk +++ b/packages/emulators/tools/retroarch-joypads/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="retroarch-joypads" -PKG_VERSION="0ce2aa145e7ac3ae552bfb15d2c6730e8ceefd56" +PKG_VERSION="59f2fe78cc5c84c9c914a6503bb9c66ece4e9317" PKG_LICENSE="GPL" PKG_SITE="https://github.com/libretro/retroarch-joypad-autoconfig" PKG_URL="${PKG_SITE}.git" diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index c444e450d..3c35618ec 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -51,7 +51,7 @@ if [ "${DISPLAYSERVER}" = "x11" ]; then export X11_INCLUDES= PKG_MESON_OPTS_TARGET+=" -Dplatforms=x11 -Ddri3=enabled -Dglx=dri -Dglvnd=true" elif [ "${DISPLAYSERVER}" = "wl" ]; then - PKG_DEPENDS_TARGET+=" wayland wayland-protocols libglvnd glfw egl-wayland" + PKG_DEPENDS_TARGET+=" wayland wayland-protocols libglvnd glfw" PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland,x11 -Ddri3=enabled -Dglx=dri -Dglvnd=true" PKG_DEPENDS_TARGET+=" xorgproto libXext libXdamage libXfixes libXxf86vm libxcb libX11 libxshmfence libXrandr libglvnd" export X11_INCLUDES= diff --git a/packages/hardware/quirks/devices/Anbernic RG552/040-hdmi b/packages/hardware/quirks/devices/Anbernic RG552/040-hdmi deleted file mode 100755 index ce01028ee..000000000 --- a/packages/hardware/quirks/devices/Anbernic RG552/040-hdmi +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2022-present - The JELOS Project (https://github.com/JustEnoughLinuxOS) - -. /storage/.config/profile.d/001-device_config - -# Set export GPIO for HDMI -if [ ! -d "/sys/class/gpio/gpio${DEVICE_HDMI_GPIO}" ]; then - echo ${DEVICE_HDMI_GPIO} > /sys/class/gpio/export - echo in > /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/direction -fi - -# Check HDMI plug state and switch to HDMI audo if true -HDMI_VALUE=$(cat /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/value) - case ${HDMI_VALUE} in - "0") - sed -i 's/pcm "hw:0,0"/pcm "hw:1,0"'/ /storage/.config/asound.conf - ;; - esac diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/001-audio b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/001-audio new file mode 100644 index 000000000..cf473483d --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/post/001-audio @@ -0,0 +1,30 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Workaround for no audio on wake from sleep. + +. /etc/profile + +HDMI=$(pactl list sinks short | grep hdmi | cut -c 0-2) +SPEAKER=$(pactl list sinks short | grep es8316 | cut -c 0-2) + +#Set sink to one we aren't currently using +pactl set-default-sink ${SPEAKER} + +#Then check if HDMI is plugged and switch to HDMI + +# Set export GPIO for HDMI +if [ ! -d "/sys/class/gpio/gpio${DEVICE_HDMI_GPIO}" ]; then + echo ${DEVICE_HDMI_GPIO} > /sys/class/gpio/export + echo in > /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/direction +fi + +# Check HDMI plug state and switch to HDMI audo if true +HDMI_VALUE=$(cat /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/value) + case ${HDMI_VALUE} in + "0") + sleep 11 + pactl set-default-sink ${HDMI} + ;; + esac diff --git a/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/001-audio b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/001-audio new file mode 100644 index 000000000..2dc5fd014 --- /dev/null +++ b/packages/hardware/quirks/devices/Anbernic RG552/sleep.d/pre/001-audio @@ -0,0 +1,16 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +# Workaround for no audio on wake from sleep. + +. /etc/profile + +HDMI=$(pactl list sinks short | grep hdmi | cut -c 0-2) +SPEAKER=$(pactl list sinks short | grep es8316 | cut -c 0-2) + +#Set sink to one we aren't currently using +pactl set-default-sink ${HDMI} + +#Suspend the sink we are using +pactl suspend-sink ${SPEAKER} 1 diff --git a/packages/hardware/quirks/devices/Hardkernel ODROID-N2L b/packages/hardware/quirks/devices/Hardkernel ODROID-N2L new file mode 120000 index 000000000..0a1ef3988 --- /dev/null +++ b/packages/hardware/quirks/devices/Hardkernel ODROID-N2L @@ -0,0 +1 @@ +Hardkernel ODROID-N2 \ No newline at end of file diff --git a/packages/hardware/quirks/devices/Powkiddy RGB10 b/packages/hardware/quirks/devices/Powkiddy RGB10 new file mode 120000 index 000000000..ad0f3d86d --- /dev/null +++ b/packages/hardware/quirks/devices/Powkiddy RGB10 @@ -0,0 +1 @@ +ODROID-GO Advance Black Edition \ No newline at end of file diff --git a/packages/hardware/quirks/platforms/RK3326/060-game_settings b/packages/hardware/quirks/platforms/RK3326/060-game_settings index 63938e387..0caeb6cad 100644 --- a/packages/hardware/quirks/platforms/RK3326/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3326/060-game_settings @@ -11,6 +11,7 @@ do if [ -z ${SETTING} ] then set_setting ${SYSTEM}.cpugovernor performance + set_setting ${SYSTEM}.gpuperf profile_peak fi done diff --git a/packages/hardware/quirks/platforms/RK3399/060-game_settings b/packages/hardware/quirks/platforms/RK3399/060-game_settings index 63938e387..0caeb6cad 100755 --- a/packages/hardware/quirks/platforms/RK3399/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3399/060-game_settings @@ -11,6 +11,7 @@ do if [ -z ${SETTING} ] then set_setting ${SYSTEM}.cpugovernor performance + set_setting ${SYSTEM}.gpuperf profile_peak fi done diff --git a/packages/hardware/quirks/platforms/RK3566/060-game_settings b/packages/hardware/quirks/platforms/RK3566/060-game_settings index 63938e387..0caeb6cad 100755 --- a/packages/hardware/quirks/platforms/RK3566/060-game_settings +++ b/packages/hardware/quirks/platforms/RK3566/060-game_settings @@ -11,6 +11,7 @@ do if [ -z ${SETTING} ] then set_setting ${SYSTEM}.cpugovernor performance + set_setting ${SYSTEM}.gpuperf profile_peak fi done diff --git a/packages/hardware/quirks/platforms/S922X/060-game_settings b/packages/hardware/quirks/platforms/S922X/060-game_settings index 63938e387..0caeb6cad 100755 --- a/packages/hardware/quirks/platforms/S922X/060-game_settings +++ b/packages/hardware/quirks/platforms/S922X/060-game_settings @@ -11,6 +11,7 @@ do if [ -z ${SETTING} ] then set_setting ${SYSTEM}.cpugovernor performance + set_setting ${SYSTEM}.gpuperf profile_peak fi done diff --git a/packages/jelos/autostart/050-audio b/packages/jelos/autostart/050-audio index 8cf7a79de..c9bd0ff9e 100755 --- a/packages/jelos/autostart/050-audio +++ b/packages/jelos/autostart/050-audio @@ -37,5 +37,10 @@ then VOLUME="${DEVICE_VOLUME}" fi +### Set the primary card volume to 100% +### to eliminate low audio on some devices. +amixer -c 0 -q sset "Master" 100% + +### Now set the pipewire mixer volume /usr/bin/volume ${VOLUME} diff --git a/packages/jelos/profile.d/099-freqfunctions b/packages/jelos/profile.d/099-freqfunctions index 2954b68f4..a9c4029bd 100644 --- a/packages/jelos/profile.d/099-freqfunctions +++ b/packages/jelos/profile.d/099-freqfunctions @@ -85,41 +85,26 @@ set_gpu_gov() { fi } -set_amdgpu_perf() { - for AMDGPU_PERF_DEVICE in $(find /sys/devices -name power_dpm_force_performance_level 2>/dev/null) - do - echo $1 >${AMDGPU_PERF_DEVICE} 2>/dev/null - done -} - onlinethreads() { set_online_threads ${1} ${2} } performance() { set_cpu_gov performance - set_amdgpu_perf profile_peak - set_gpu_gov performance set_dmc_gov performance } ondemand() { set_cpu_gov ondemand - set_amdgpu_perf auto - set_gpu_gov ondemand set_dmc_gov ondemand } schedutil() { set_cpu_gov schedutil - set_amdgpu_perf auto - set_gpu_gov ondemand set_dmc_gov ondemand } powersave() { set_cpu_gov powersave - set_amdgpu_perf low - set_gpu_gov powersave set_dmc_gov powersave } diff --git a/packages/jelos/sources/post-update b/packages/jelos/sources/post-update index 93b607bc0..443ae0697 100644 --- a/packages/jelos/sources/post-update +++ b/packages/jelos/sources/post-update @@ -64,13 +64,6 @@ ln -sf /usr/share/locale /storage/.config/emulationstation/locale >>/var/log/con ### Add items below this line that are safe to remove after a period of time. ################################################################################ -### Added 20230409 as a helper for the quirks refactor. -if [ ! -d "/storage/.config/profile_backup" ] -then - mkdir /storage/.config/profile_backup - mv /storage/.config/profile.d/* /storage/.config/profile_backup -fi - ### 20230913 (reverted) Set the default output to Master for pipewire ES_SETTINGS="/storage/.config/emulationstation/es_settings.cfg" @@ -109,3 +102,6 @@ sed -i 's~builtin_imageviewer_enable.*$~builtin_imageviewer_enable = "false"~g' ### 20231010 - Stop setting vram in ES settings. sed -i '/^.*>/storage/.config/sleep.conf.d/sleep.conf + AllowSuspend=yes + SuspendState=freeze standby mem +EOF + ;; + standby) + cat <>/storage/.config/sleep.conf.d/sleep.conf + AllowSuspend=yes + SuspendState=standby mem freeze +EOF + ;; + mem) + cat <>/storage/.config/sleep.conf.d/sleep.conf + AllowSuspend=yes + SuspendState=mem standby freeze +EOF + ;; + default) + del_setting system.suspendmode + if [ -e "/usr/lib/autostart/quirks/platforms/${HW_DEVICE}/030-suspend_mode" ] + then + "/usr/lib/autostart/quirks/devices/${QUIRK_DEVICE}/030-suspend_mode" + elif [ -e "/usr/lib/autostart/quirks/devices/${QUIRK_DEVICE}/030-suspend_mode" ] + then + "/usr/lib/autostart/quirks/platforms/${HW_DEVICE}/030-suspend_mode" + fi + ;; *) cat <>/storage/.config/sleep.conf.d/sleep.conf AllowSuspend=yes diff --git a/packages/kernel/linux-drivers/RTL8852xx/package.mk b/packages/kernel/linux-drivers/RTL8852xx/package.mk new file mode 100644 index 000000000..ffb13a39b --- /dev/null +++ b/packages/kernel/linux-drivers/RTL8852xx/package.mk @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="RTL8852xx" +PKG_VERSION="fce040c12fbf93bfd904ded48df60dea2c8d4423" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/lwfinger/rtw89" +PKG_URL="https://github.com/lwfinger/rtw89/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain linux linux-firmware" +PKG_NEED_UNPACK="${LINUX_DEPENDS}" +PKG_LONGDESC="Realtek RTL8852xx Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="make" + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + kernel_make KSRC=$(kernel_path) KVER=$(kernel_version) +} + +makeinstall_target() { + mkdir -p ${INSTALL}/$(get_full_module_dir)/${PKG_NAME} + cp *.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME} +} diff --git a/packages/kernel/linux-drivers/esp8089/modprobe.d/esp8089.conf b/packages/kernel/linux-drivers/esp8089/modprobe.d/esp8089.conf deleted file mode 100644 index 1675e5e6c..000000000 --- a/packages/kernel/linux-drivers/esp8089/modprobe.d/esp8089.conf +++ /dev/null @@ -1 +0,0 @@ -options esp8089 esp_reset_gpio=105 diff --git a/packages/kernel/linux-drivers/esp8089/package.mk b/packages/kernel/linux-drivers/esp8089/package.mk deleted file mode 100644 index 5e0bf327c..000000000 --- a/packages/kernel/linux-drivers/esp8089/package.mk +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -PKG_NAME="esp8089" -PKG_VERSION="1.9.20230804" -PKG_LICENSE="GPL" -PKG_SITE="https://github.com/al177/esp8089" -PKG_URL="https://github.com/al177/esp8089/archive/refs/tags/1.9.20230804.tar.gz" -PKG_DEPENDS_TARGET="toolchain linux" -PKG_NEED_UNPACK="${LINUX_DEPENDS}" -PKG_LONGDESC="ESP8089 Wifi Driver" -PKG_IS_KERNEL_PKG="yes" -PKG_TOOLCHAIN="make" - -pre_make_target() { - unset LDFLAGS -} - -make_target() { - make V=1 \ - ARCH=${TARGET_KERNEL_ARCH} \ - KSRC=$(kernel_path) \ - CROSS_COMPILE=${TARGET_KERNEL_PREFIX} \ - TARGET=$(kernel_version) \ - KERNEL_MODULES=$(get_build_dir linux)/.install_pkg/$(get_full_module_dir) \ - KBUILD=$(get_build_dir linux) -} - -makeinstall_target() { - mkdir -p ${INSTALL}/$(get_full_module_dir)/${PKG_NAME} - cp *.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME} -} \ No newline at end of file diff --git a/packages/kernel/linux-drivers/esp8089/patches/001-fix-sdio-detect.patch b/packages/kernel/linux-drivers/esp8089/patches/001-fix-sdio-detect.patch deleted file mode 100644 index 73791e6dd..000000000 --- a/packages/kernel/linux-drivers/esp8089/patches/001-fix-sdio-detect.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/sdio_sif_esp.c 2023-08-04 15:04:02.000000000 -0600 -+++ b/sdio_sif_esp.c 2023-10-27 12:08:08.302695270 -0600 -@@ -50,6 +50,24 @@ - //unsigned int esp_msg_level = 0; - unsigned int esp_msg_level = ESP_DBG_ERROR | ESP_SHOW; - -+/* HdG: Note: -+ * 1) MMC_HAS_FORCE_DETECT_CHANGE is a hack which is set by my sunxi-wip -+ * tree. FIXME replace with a version check once mmc_force_detect_change() -+ * is added to the mainline kernel. -+ * 2) This version does NOT implement keep_power, the dts must mark the -+ * regulators as regulator-always-on and not use mmc-pwrseq for this stub -+ * to work. -+ */ -+#ifndef MMC_HAS_FORCE_DETECT_CHANGE -+void mmc_force_detect_change(struct mmc_host *host, unsigned long delay, -+ bool keep_power) -+{ -+ host->caps &= ~MMC_CAP_NONREMOVABLE; -+ host->caps |= MMC_CAP_NEEDS_POLL; -+ mmc_detect_change(host, delay); -+} -+#endif -+ - static struct semaphore esp_powerup_sem; - - static enum esp_sdio_state sif_sdio_state; -@@ -500,6 +518,7 @@ - int err = 0; - struct esp_pub *epub; - struct esp_sdio_ctrl *sctrl; -+ struct mmc_host *host = func->card->host; - - esp_dbg(ESP_DBG_TRACE, - "sdio_func_num: 0x%X, vendor id: 0x%X, dev id: 0x%X, block size: 0x%X/0x%X\n", -@@ -609,6 +628,10 @@ - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){ - esp_dbg(ESP_DBG_ERROR, "first normal exit\n"); - sif_sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; -+ -+ /* Rescan the esp8089 after loading the initial firmware */ -+ mmc_force_detect_change(host, msecs_to_jiffies(100), true); -+ - up(&esp_powerup_sem); - } - - \ No newline at end of file diff --git a/packages/kernel/linux-firmware/esp8089-firmware/package.mk b/packages/kernel/linux-firmware/esp8089-firmware/package.mk new file mode 100644 index 000000000..123ce8a5c --- /dev/null +++ b/packages/kernel/linux-firmware/esp8089-firmware/package.mk @@ -0,0 +1,14 @@ +PKG_NAME="esp8089-firmware" +PKG_VERSION="7221f52b930072f29f5e7f49b7e663224e70cc9e" +PKG_LICENSE="Apache" +PKG_SITE="https://github.com/armbian/firmware" +PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_NEED_UNPACK="${LINUX_DEPENDS}" +PKG_LONGDESC="esp8089 Linux firmware" +PKG_TOOLCHAIN="manual" + +makeinstall_target() { + mkdir -p ${INSTALL}/$(get_kernel_overlay_dir)/lib/firmware + cp -av eagle_fw*.bin ${INSTALL}/$(get_kernel_overlay_dir)/lib/firmware +} diff --git a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat index f11d145b4..22ab7452e 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat +++ b/packages/kernel/linux-firmware/kernel-firmware/firmwares/any.dat @@ -20,3 +20,4 @@ ath9k_htc/* brcm/* rtl_bt/* rtlwifi/* +rtw89/* diff --git a/packages/kernel/linux-firmware/kernel-firmware/package.mk b/packages/kernel/linux-firmware/kernel-firmware/package.mk index 2e929b233..53efc4b2f 100644 --- a/packages/kernel/linux-firmware/kernel-firmware/package.mk +++ b/packages/kernel/linux-firmware/kernel-firmware/package.mk @@ -84,6 +84,14 @@ makeinstall_target() { ln -s "rtl8723bs_config-OBDA8723.bin" "${FW_TARGET_DIR}/rtl_bt/rtl8723bs_config.bin" fi + # The BSP kernel for RK3588 reformats the vendor firmware path for Realtek BT devices, + # so symlink the firmware. + if [ ${DEVICE} = "RK3588" ]; then + for i in ${FW_TARGET_DIR}/rtl_bt/*.bin; do + ln -s "rtl_bt/$(basename ${i})" "${FW_TARGET_DIR}/$(basename ${i%.*})" + done + fi + # Cleanup - which may be project or device specific find_file_path scripts/cleanup.sh && ${FOUND_PATH} ${FW_TARGET_DIR} || true } diff --git a/packages/kernel/linux/package.mk b/packages/kernel/linux/package.mk index 9a4753a0f..55e3a7c15 100644 --- a/packages/kernel/linux/package.mk +++ b/packages/kernel/linux/package.mk @@ -4,11 +4,11 @@ PKG_NAME="linux" PKG_LICENSE="GPL" -PKG_VERSION="6.5.9" +PKG_VERSION="6.5.11" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" PKG_SITE="http://www.kernel.org" PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host" -PKG_DEPENDS_TARGET="toolchain linux:host kmod:host cpio:host xz:host keyutils ncurses openssl:host wireless-regdb initramfs ${KERNEL_EXTRA_DEPENDS_TARGET}" +PKG_DEPENDS_TARGET="toolchain linux:host kmod:host cpio:host xz:host keyutils ncurses openssl:host wireless-regdb ${KERNEL_EXTRA_DEPENDS_TARGET}" PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory initramfs) $(get_pkg_variable initramfs PKG_NEED_UNPACK)" PKG_LONGDESC="This package contains a precompiled kernel image and the modules." PKG_IS_KERNEL_PKG="yes" diff --git a/packages/lang/Python3/package.mk b/packages/lang/Python3/package.mk index 3f8330c4d..7c0ad59fc 100644 --- a/packages/lang/Python3/package.mk +++ b/packages/lang/Python3/package.mk @@ -4,7 +4,7 @@ PKG_NAME="Python3" # When changing PKG_VERSION remember to sync PKG_PYTHON_VERSION! -PKG_VERSION="3.11.4" +PKG_VERSION="3.11.6" PKG_LICENSE="OSS" PKG_SITE="https://www.python.org/" PKG_URL="https://www.python.org/ftp/python/${PKG_VERSION}/${PKG_NAME::-1}-${PKG_VERSION}.tar.xz" diff --git a/packages/multimedia/libamcodec/package.mk b/packages/multimedia/libamcodec/package.mk deleted file mode 100644 index 1f887853a..000000000 --- a/packages/multimedia/libamcodec/package.mk +++ /dev/null @@ -1,22 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) - -PKG_NAME="libamcodec" -PKG_VERSION="31cd6eceaa1402b9f4ff5cc349e53899860fe9b9" -PKG_SHA256="9052aaa00c827d3bfef7de83f55678aa1674368f06911a003b138953409f4d7c" -PKG_LICENSE="proprietary" -PKG_SITE="http://openlinux.amlogic.com" -PKG_URL="https://sources.coreelec.org/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain" -PKG_LONGDESC="libamplayer: Interface library for Amlogic media codecs" -PKG_TOOLCHAIN="manual" - -make_target() { - cp -PR * ${SYSROOT_PREFIX} -} - -makeinstall_target() { - mkdir -p ${INSTALL}/usr - cp -PR usr/lib ${INSTALL}/usr -} diff --git a/packages/sysutils/amremote/package.mk b/packages/sysutils/amremote/package.mk deleted file mode 100644 index a83572763..000000000 --- a/packages/sysutils/amremote/package.mk +++ /dev/null @@ -1,34 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) - -PKG_NAME="amremote" -PKG_LICENSE="other" -PKG_SITE="http://www.amlogic.com" -PKG_DEPENDS_TARGET="toolchain usbutils" -PKG_LONGDESC="amremote - IR remote configuration utility for Amlogic-based devices" - -case "$LINUX" in - amlogic-3.14) - PKG_VERSION="05b85d1f9821ae65dca250ba87b369327dd71df3" - PKG_SHA256="895a64efc05cee3148b4c33f5acbffb87da095d8b8f289f78e0cec26d2ed6f9d" - PKG_URL="https://github.com/CoreELEC/amremote/archive/${PKG_VERSION}.tar.gz" - ;; - amlogic-4.9) - PKG_VERSION="1db130a0ccd47f6b5c3d1dffab1e89613b796a8c" - PKG_SHA256="5b96f2a1dd03200909eed749f5d97d1d02ee7fc8ac92d8fce6b5d6772ee642dc" - PKG_URL="https://github.com/CoreELEC/amremote/archive/${PKG_VERSION}.tar.gz" - ;; -esac - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/bin - cp remotecfg ${INSTALL}/usr/bin - - mkdir -p ${INSTALL}/usr/lib/coreelec - cp ${PKG_DIR}/scripts/* ${INSTALL}/usr/lib/coreelec -} - -post_install() { - enable_service remote-config.service -} diff --git a/packages/sysutils/amremote/scripts/remote-config b/packages/sysutils/amremote/scripts/remote-config deleted file mode 100755 index 9529f0adf..000000000 --- a/packages/sysutils/amremote/scripts/remote-config +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh - -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) - -remap_keys () { - [ ! -f "$1" ] && return - - sed -i 's/ 15[^0-9]*$/ 1/ - s/ 63[^0-9]*$/ 90/ - s/ 97[^0-9]*$/ 28/ - s/ 102[^0-9]*$/ 172/ - s/ 125[^0-9]*$/ 46/ - s/ 128[^0-9]*$/ 45/ - s/ 139[^0-9]*$/ 46/ - s/ 142[^0-9]*$/ 116/ - s/ 143[^0-9]*$/ 116/ - s/ 158[^0-9]*$/ 1/ - s/ 183[^0-9]*$/ 59/ - s/ 184[^0-9]*$/ 399/ - s/ 185[^0-9]*$/ 400/ - s/ 186[^0-9]*$/ 60/ - s/ 232[^0-9]*$/ 28/ - s/ 240[^0-9]*$/ 164/ - s/ 241[^0-9]*$/ 163/ - s/ 242[^0-9]*$/ 165/ - s/ 244[^0-9]*$/ 208/ - s/ 245[^0-9]*$/ 168/ - s/ 264[^0-9]*$/ 63/ - s/ 704[^0-9]*$/ 116/' \ - "$1" -} - -[ ! -e "/proc/device-tree/meson-ir/compatible" -o ! -e "/proc/device-tree/meson-remote/compatible" ] && exit - -if [ -f "/flash/remote.disable" -o -f "/storage/.config/remote.disable" ]; then - echo "remote control disabled by user" - exit 0 -fi - -if [ -f "/flash/remote.force_meson_ir" -o -f "/storage/.config/remote.force_meson_ir" ]; then - force_meson_ir="yes" -else - force_meson_ir="no" -fi - -if [ -f "/flash/remote.conf" ]; then - REMOTE_CONF_DIR="/flash" -elif [ -f "/storage/.config/remote.conf" ]; then - REMOTE_CONF_DIR="/storage/.config" -else - REMOTE_CONF_DIR="" - - if [ -d "/proc/device-tree/custom_maps" -a "$force_meson_ir" = "no" ]; then - MAP_NAME=$(cat /proc/device-tree/custom_maps/map_0/mapname 2>/dev/null) - echo "using meson-remote, with pre-defined map '$MAP_NAME' from dtb" - modprobe meson-remote - exit 0 - fi -fi - -if [ -d "$REMOTE_CONF_DIR" ]; then - echo "using meson-remote, conf from $REMOTE_CONF_DIR" - - if [ -d "/proc/device-tree/custom_maps" ]; then - MAP_NAME=$(cat /proc/device-tree/custom_maps/map_0/mapname 2>/dev/null) - echo "also using pre-defined map '$MAP_NAME' from dtb" - fi - - modprobe meson-remote - - for f in $REMOTE_CONF_DIR/remote*.conf; do - echo "configuring remote with $f" - cp "$f" /tmp/remote.conf - remap_keys /tmp/remote.conf - remotecfg /tmp/remote.conf - rm -f /tmp/remote.conf - done -else - echo "using meson-ir" - modprobe meson-ir -fi - -exit 0 diff --git a/packages/sysutils/amremote/system.d/remote-config.service b/packages/sysutils/amremote/system.d/remote-config.service deleted file mode 100644 index 3527bca12..000000000 --- a/packages/sysutils/amremote/system.d/remote-config.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=IR remote control support -Before=graphical.target kodi.service -After=multi-user.target -ConditionPathExists=/proc/device-tree/meson-ir/compatible -ConditionPathExists=/proc/device-tree/meson-remote/compatible - -[Service] -Type=oneshot -ExecStart=/usr/lib/coreelec/remote-config - -[Install] -WantedBy=graphical.target diff --git a/packages/sysutils/autostart/system.d/jelos-autostart.service b/packages/sysutils/autostart/system.d/jelos-autostart.service index 04d118805..440a4276d 100644 --- a/packages/sysutils/autostart/system.d/jelos-autostart.service +++ b/packages/sysutils/autostart/system.d/jelos-autostart.service @@ -1,7 +1,7 @@ [Unit] Description=JELOS user autostart script -Before=emulationstation.service -After=network-base.service graphical.target +Before=emustation.service weston.service +After=network-base.service graphical.target userconfig.service [Service] Type=oneshot diff --git a/packages/sysutils/inject_bl301/config/bl301.conf b/packages/sysutils/inject_bl301/config/bl301.conf deleted file mode 100644 index 6bbe3ce2c..000000000 --- a/packages/sysutils/inject_bl301/config/bl301.conf +++ /dev/null @@ -1,25 +0,0 @@ -#################################################################### -# CoreELEC inject_bl301 config # -# # -# coreelec-dt-id blob definition: # -# # -# [substring coreelec-dt-id] = [substring BL301 blob binary] # -# # -# [substring coreelec-dt-id] = [] -> "Not supported" # -# # -# config.ini parameter are auto generated from package bl301: # -# # -# [config variable name] # -# config_id = [unique unsigned int ID for variable] # -# config_name = [unique matching config.ini key name] # -# # -# This config parameter value is filled automatic by package.mk. # -# Multiple sections are possible. Do not edit! # -#################################################################### - -[BL301] -odroid= -lepotato= -lafrite= -gxl_p212_2g_kvim=Khadas_VIM1 -khadas_vim3=Khadas_VIM3 diff --git a/packages/sysutils/inject_bl301/package.mk b/packages/sysutils/inject_bl301/package.mk deleted file mode 100644 index 28666df41..000000000 --- a/packages/sysutils/inject_bl301/package.mk +++ /dev/null @@ -1,40 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2019-present Team CoreELEC (https://coreelec.org) - -PKG_NAME="inject_bl301" -PKG_VERSION="6af46f6a7defbbba360a6bbcd5db2b11925f7315" -PKG_SHA256="bb02545eb80c0a1372f91990cb21572b201251d47523c9f4424fea72a16426ab" -PKG_LICENSE="proprietary" -PKG_SITE="https://coreelec.org" -PKG_URL="https://sources.coreelec.org/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain bl301" -PKG_LONGDESC="Tool to inject bootloader blob BL301.bin on internal eMMC" -PKG_TOOLCHAIN="manual" - -pre_make_target() { - cp -av ${PKG_DIR}/config/bl301.conf ${PKG_BUILD}/bl301.conf - for f in $(find $(get_build_dir bl301) -mindepth 1 -name 'coreelec_config.c'); do - cat ${f} | awk -F'[(),"]' '/.config_id_a\s*=\s*HASH/ {printf("%s %s\n", $2, $3)}' | \ - while read id name; do - if ! grep -Fwq "${id}" ${PKG_BUILD}/bl301.conf; then - echo -e '\n['${id}']' >> ${PKG_BUILD}/bl301.conf; - cat ${f%.*}.h | awk -v id="HASHSTR_${id} " '$0 ~ id {printf("config_id=%s\n", $3)}' >> ${PKG_BUILD}/bl301.conf; - echo -e "config_name=${name}" >> ${PKG_BUILD}/bl301.conf; - fi - done - done -} - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/sbin - mkdir -p ${INSTALL}/usr/lib/coreelec - mkdir -p ${INSTALL}/etc/inject_bl301 - install -m 0755 inject_bl301 ${INSTALL}/usr/sbin/inject_bl301 - install -m 0755 ${PKG_DIR}/scripts/check-bl301.sh ${INSTALL}/usr/lib/coreelec/check-bl301 - install -m 0755 ${PKG_DIR}/scripts/update-bl301.sh ${INSTALL}/usr/lib/coreelec/update-bl301 - install -m 0644 ${PKG_BUILD}/bl301.conf ${INSTALL}/etc/inject_bl301/bl301.conf -} - -post_install() { - enable_service update-bl301.service -} diff --git a/packages/sysutils/inject_bl301/scripts/check-bl301.sh b/packages/sysutils/inject_bl301/scripts/check-bl301.sh deleted file mode 100755 index d227cf303..000000000 --- a/packages/sysutils/inject_bl301/scripts/check-bl301.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# -# SPDX-License-Identifier: GPL-3.0-or-later -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) -# -# Detect BL301 injection -# -##################################################### -# -# Comand Line Arguments -# -v = Show verbose output -# -##################################################### - -VERBOSE=0 -INSTALLED=0 - -if [ "$1" = "-v" ]; then - VERBOSE=1 -fi - -if [ -e /usr/sbin/inject_bl301 ]; then - inject_bl301 -i - if [ ${?} = 1 ]; then - INSTALLED=1 - fi -fi - -if [ "$VERBOSE" = 1 ]; then - if [ "${INSTALLED}" = 1 ]; then - echo "CoreELEC BL301 Installed" - else - echo "CoreELEC BL301 Not found" - fi -fi -exit ${INSTALLED} diff --git a/packages/sysutils/inject_bl301/scripts/update-bl301.sh b/packages/sysutils/inject_bl301/scripts/update-bl301.sh deleted file mode 100755 index 9619f30de..000000000 --- a/packages/sysutils/inject_bl301/scripts/update-bl301.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# -# SPDX-License-Identifier: GPL-3.0-or-later -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) -# -# Update BL301 injection -# -##################################################### -# -# Comand Line Arguments -# -v = Show verbose output -# -##################################################### - -VERBOSE=0 -INSTALLED=0 -UPDATE=1 -RET=0 - -if [ "$1" = "-v" ]; then - VERBOSE=1 -fi - -if [ -e /usr/lib/coreelec/check-bl301 ]; then - /usr/lib/coreelec/check-bl301 - INSTALLED=${?} - if [ "${INSTALLED}" = 1 ]; then - touch /run/bl301_injected - fi -fi - -if [ -e /usr/sbin/inject_bl301 ] && [ "${INSTALLED}" = 1 ]; then - inject_bl301 -Y > /storage/update-bl301.log - UPDATE=${?} -fi - -if [ "$VERBOSE" = 1 ]; then - if [ "${INSTALLED}" = 1 ] && [ "$UPDATE" = 0 ]; then - echo "CoreELEC BL301 got updated" - elif [ "${INSTALLED}" = 1 ] && [ "$UPDATE" = 1 ]; then - echo "CoreELEC BL301 installed but no update needed" - elif [ "${INSTALLED}" = 1 ]; then - echo "CoreELEC BL301 installed but error on update: " $UPDATE - RET=$UPDATE - elif [ "${INSTALLED}" = 0 ]; then - echo "CoreELEC BL301 not installed" - fi -fi - -if [ "${INSTALLED}" = 1 ] && [ "$UPDATE" = 0 ]; then - sync && reboot -fi - -exit $RET diff --git a/packages/sysutils/inject_bl301/system.d/update-bl301.service b/packages/sysutils/inject_bl301/system.d/update-bl301.service deleted file mode 100644 index 61033aa30..000000000 --- a/packages/sysutils/inject_bl301/system.d/update-bl301.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=CoreELEC BL301 Update Service - -[Service] -Type=oneshot -ExecStart=/usr/lib/coreelec/update-bl301 -v -RemainAfterExit=no - -[Install] -WantedBy=basic.target diff --git a/packages/sysutils/powerstate/profile.d/030-powerfunctions b/packages/sysutils/powerstate/profile.d/030-powerfunctions index 0ba2928ea..2446a4a23 100644 --- a/packages/sysutils/powerstate/profile.d/030-powerfunctions +++ b/packages/sysutils/powerstate/profile.d/030-powerfunctions @@ -17,17 +17,41 @@ gpu_power_profile() { } get_gpu_performance_level() { - cat /sys/class/drm/card0/device/power_dpm_force_performance_level 2>/dev/null + case ${HW_ARCH} in + x86_64) + cat /sys/class/drm/card0/device/power_dpm_force_performance_level 2>/dev/null + ;; + aarch64) + get_setting system.gpuperf + ;; + esac } gpu_performance_level() { - for card in /sys/class/drm/card*/device/power_dpm_force_performance_level - do - if [ -e "${card}" ] - then - echo ${1} >${card} 2>/dev/null - fi - done + case ${HW_ARCH} in + x86_64) + for card in /sys/class/drm/card*/device/power_dpm_force_performance_level + do + if [ -e "${card}" ] + then + echo ${1} >${card} 2>/dev/null + fi + done + ;; + aarch64) + case ${1} in + profile_peak) + set_gpu_gov performance + ;; + auto|profile_standard) + set_gpu_gov ondemand + ;; + low) + set_gpu_gov powersave + ;; + esac + ;; + esac } pcie_aspm_policy() { diff --git a/packages/sysutils/sleep/sources/sleep.sh b/packages/sysutils/sleep/sources/sleep.sh index ce80ed75a..59ff06da4 100755 --- a/packages/sysutils/sleep/sources/sleep.sh +++ b/packages/sysutils/sleep/sources/sleep.sh @@ -12,11 +12,13 @@ else fi QUIRK_DEVICE="$(echo ${QUIRK_DEVICE} | sed -e "s#[/]#-#g")" +EVENTLOG="/var/log/sleep.log" + headphones() { if [ "${DEVICE_FAKE_JACKSENSE}" == "true" ] then log $0 "Headphone sense: ${1}" - systemctl ${1} headphones >/dev/null 2>&1 + systemctl ${1} headphones >${EVENTLOG} 2>&1 fi } @@ -24,21 +26,14 @@ volumectl() { if [ "${DEVICE_VOLUMECTL}" == "true" ] then log $0 "Volume control: ${1}" - systemctl ${1} volume >/dev/null 2>&1 - fi -} - -jslisten() { - if [ "$(systemctl is-active jslisten)" = "active" ] - then - systemctl ${1} jslisten + systemctl ${1} volume >${EVENTLOG} 2>&1 fi } powerstate() { if [ "$(get_setting system.powersave)" = 1 ] then - systemctl ${1} powerstate >/dev/null 2>&1 + systemctl ${1} powerstate >${EVENTLOG} 2>&1 fi } @@ -46,7 +41,7 @@ bluetooth() { if [ "$(get_setting bluetooth.enabled)" == "1" ] then log $0 "Bluetooth: ${1}" - systemctl ${1} bluetooth >/dev/null 2>&1 + systemctl ${1} bluetooth >${EVENTLOG} 2>&1 fi } @@ -62,7 +57,7 @@ modules() { if [ $? = 0 ] then echo ${module} >>/tmp/modules.load - modprobe -r ${module} + modprobe -r ${module} >${EVENTLOG} 2>&1 fi done fi @@ -78,7 +73,7 @@ modules() { do if (( "${MODCNT}" < "${MODATTEMPTS}" )) then - modprobe ${module%% *} + modprobe ${module%% *} >${EVENTLOG} 2>&1 if [ $? = 0 ] then break @@ -100,7 +95,7 @@ quirks() { for QUIRK in /usr/lib/autostart/quirks/platforms/"${HW_DEVICE}"/sleep.d/${1}/* \ /usr/lib/autostart/quirks/devices/"${QUIRK_DEVICE}"/sleep.d/${1}/* do - "${QUIRK}" >/dev/null 2>&1 + "${QUIRK}" >${EVENTLOG} 2>&1 done } @@ -108,7 +103,6 @@ case $1 in pre) headphones stop volumectl stop - jslisten stop bluetooth stop runtime_power_management on wake_events disabled @@ -123,22 +117,23 @@ case $1 in powerstate start headphones start volumectl start - jslisten start bluetooth start if [ "$(get_setting network.enabled)" == "1" ] then log $0 "Connecting WIFI." - nohup wifictl enable >/dev/null 2>&1 + nohup wifictl enable >${EVENTLOG} 2>&1 fi DEVICE_VOLUME=$(get_setting "audio.volume" 2>/dev/null) log $0 "Restoring volume to ${DEVICE_VOLUME}%." - amixer -c 0 -M set "${DEVICE_AUDIO_MIXER}" ${DEVICE_VOLUME}% + amixer -c 0 -M set "${DEVICE_AUDIO_MIXER}" ${DEVICE_VOLUME}% >${EVENTLOG} 2>&1 BRIGHTNESS=$(get_setting system.brightness) log $0 "Restoring brightness to ${BRIGHTNESS}." - brightness set ${BRIGHTNESS} + brightness set ${BRIGHTNESS} >${EVENTLOG} 2>&1 quirks post + + systemctl restart jslisten >${EVENTLOG} 2>&1 ;; esac diff --git a/packages/sysutils/system-utils/sources/devices/AMD64/overclock b/packages/sysutils/system-utils/sources/devices/AMD64/overclock index 3088467b4..b39f27f7f 100755 --- a/packages/sysutils/system-utils/sources/devices/AMD64/overclock +++ b/packages/sysutils/system-utils/sources/devices/AMD64/overclock @@ -85,4 +85,3 @@ case ${PROFILE} in esac ryzenadj --tctl-temp=97 --stapm-limit=${WATTS} --fast-limit=${WATTS} --stapm-time=500 --slow-limit=${WATTS} --slow-time=30 --vrmmax-current=70000 -set_setting system.overclock ${PROFILE} diff --git a/packages/sysutils/system-utils/sources/devices/RK3399/video_sense b/packages/sysutils/system-utils/sources/devices/RK3399/video_sense index 0017b4d07..6c5811b77 100644 --- a/packages/sysutils/system-utils/sources/devices/RK3399/video_sense +++ b/packages/sysutils/system-utils/sources/devices/RK3399/video_sense @@ -11,38 +11,26 @@ if [ ! -d "/sys/class/gpio/gpio${DEVICE_HDMI_GPIO}" ]; then echo in > /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/direction fi +HDMI=$(pactl list sinks short | grep hdmi | cut -c 0-2) +SPEAKER=$(pactl list sinks short | grep es8316 | cut -c 0-2) + # Check HDMI plugged / unplugged, set audio output, restart Emulation Station HDMI_VALUE=$(cat /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/value) while true do HDMI_NEW_VALUE=$(cat /sys/class/gpio/gpio${DEVICE_HDMI_GPIO}/value) - HP_GPIO=$(cat /sys/class/gpio/gpio${DEVICE_JACK}/value) if test "${HDMI_VALUE}" != "${HDMI_NEW_VALUE}" then case ${HDMI_NEW_VALUE} in "0") #HDMI plugged - sed -i 's/pcm "hw:0,0"/pcm "hw:1,0"/' /storage/.config/asound.conf + pactl set-default-sink ${HDMI} ;; "1") #HDMI unpluagged - sed -i 's/pcm "hw:1,0"/pcm "hw:0,0"/' /storage/.config/asound.conf - case ${HP_GPIO} in - "1") - amixer -c 0 cset name='Speaker Switch' ${DEVICE_PLAYBACK_PATH_HP} - amixer -c 0 set 'Headphone' '67%' - amixer -c 0 set 'Playback Polarity' Normal - set_setting "audio.device" "headphone" - ;; - *) - amixer -c 0 cset name='Speaker Switch' ${DEVICE_PLAYBACK_PATH_SPK} - amixer -c 0 set 'Headphone' '100%' - amixer -c 0 set 'Playback Polarity' 'R Invert' - set_setting "audio.device" "speakers" - ;; - esac + pactl set-default-sink ${SPEAKER} ;; esac - systemctl restart weston + killall emulationstation HDMI_VALUE=${HDMI_NEW_VALUE} fi diff --git a/packages/sysutils/system-utils/sources/scripts/hdmi_sense b/packages/sysutils/system-utils/sources/scripts/hdmi_sense index c718f9211..8c232aea4 100755 --- a/packages/sysutils/system-utils/sources/scripts/hdmi_sense +++ b/packages/sysutils/system-utils/sources/scripts/hdmi_sense @@ -6,7 +6,7 @@ # Source predefined functions and variables . /etc/profile -for HDMI in /sys/class/drm/card0/card0-HDMI-A-[0-9]/status +for HDMI in /sys/class/drm/card*/card*-HDMI-A-[0-9]/status do HDMI_STATE=$(<${HDMI}) case ${HDMI_STATE} in diff --git a/packages/sysutils/system-utils/udev.d/099-hdmi b/packages/sysutils/system-utils/udev.d/099-hdmi deleted file mode 100644 index a7c2fd447..000000000 --- a/packages/sysutils/system-utils/udev.d/099-hdmi +++ /dev/null @@ -1,2 +0,0 @@ -### Change FB rotation when hdmi is connected (Powkiddy x55) -ACTION=="change", SUBSYSTEM=="extcon", ATTRS{name}=="*hdmi*", RUN+="/usr/bin/hdmi_sense" diff --git a/packages/sysutils/system-utils/udev.d/99-hdmi.rules b/packages/sysutils/system-utils/udev.d/99-hdmi.rules index 6747ef217..f1b34ccc3 100644 --- a/packages/sysutils/system-utils/udev.d/99-hdmi.rules +++ b/packages/sysutils/system-utils/udev.d/99-hdmi.rules @@ -1 +1 @@ -KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="add|change", RUN+="/usr/bin/hdmi_sense" +KERNEL=="card*", SUBSYSTEM=="drm", ACTION=="add|change", RUN+="/usr/bin/hdmi_sense" diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index e53089494..568f72839 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) PKG_NAME="systemd" -PKG_VERSION="252.14" +PKG_VERSION="252.18" PKG_LICENSE="LGPL2.1+" PKG_SITE="http://www.freedesktop.org/wiki/Software/systemd" PKG_URL="https://github.com/systemd/systemd-stable/archive/v${PKG_VERSION}.tar.gz" diff --git a/packages/themes/es-theme-art-book-next/package.mk b/packages/themes/es-theme-art-book-next/package.mk index 0a381c2e3..b21f1b279 100644 --- a/packages/themes/es-theme-art-book-next/package.mk +++ b/packages/themes/es-theme-art-book-next/package.mk @@ -4,7 +4,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="es-theme-art-book-next" -PKG_VERSION="1bbd47382bef153512f66772a37ef38f04d9cef3" +PKG_VERSION="5b34520a1c54e229596f07c91525dff4a8e08762" PKG_ARCH="any" PKG_LICENSE="CUSTOM" PKG_SITE="https://github.com/anthonycaccese/art-book-next-jelos" diff --git a/packages/themes/es-theme-minielec/package.mk b/packages/themes/es-theme-minielec/package.mk deleted file mode 100644 index 8f71ced19..000000000 --- a/packages/themes/es-theme-minielec/package.mk +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -PKG_NAME="es-theme-minielec" -PKG_VERSION="364173dab15a77190b11a5e36966890468cad67c" -PKG_ARCH="any" -PKG_LICENSE="CC BY-NC-SA 4.0" -PKG_SITE="https://github.com/Rose22/es-theme-minielec" -PKG_URL="${PKG_SITE}.git" -GET_HANDLER_SUPPORT="git" -PKG_SHORTDESC="Minielec" -PKG_LONGDESC="Minielec theme by Rose22" -PKG_TOOLCHAIN="manual" - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/share/themes/${PKG_NAME} - cp -rf * ${INSTALL}/usr/share/themes/${PKG_NAME} -} diff --git a/packages/themes/es-theme-minielec/patches/001-fixes.patch b/packages/themes/es-theme-minielec/patches/001-fixes.patch deleted file mode 100644 index b32cc9eee..000000000 --- a/packages/themes/es-theme-minielec/patches/001-fixes.patch +++ /dev/null @@ -1,43 +0,0 @@ -Binary files es-theme-minielec.orig/backgrounds/amberelec_dark.png and es-theme-minielec/backgrounds/amberelec_dark.png differ -Binary files es-theme-minielec.orig/backgrounds/amberelec_light.png and es-theme-minielec/backgrounds/amberelec_light.png differ -diff -rupN es-theme-minielec.orig/theme.xml es-theme-minielec/theme.xml ---- es-theme-minielec.orig/theme.xml 2022-07-14 17:38:41.518144012 -0400 -+++ es-theme-minielec/theme.xml 2022-07-14 17:48:53.713622441 -0400 -@@ -23,15 +23,16 @@ - ./fontsizes.xml - - -- -- -- -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -105,11 +106,6 @@ - - - -- ./overlays/amberelec_center.xml -- ./overlays/amberelec_topleft.xml -- ./overlays/amberelec_topright.xml -- ./overlays/amberelec_bottomleft.xml -- ./overlays/amberelec_bottomright.xml - ./overlays/clearglass.xml - ./overlays/sparkles.xml - ./overlays/sparkles2.xml diff --git a/packages/themes/es-theme-minimal/package.mk b/packages/themes/es-theme-minimal/package.mk deleted file mode 100644 index 499a6096e..000000000 --- a/packages/themes/es-theme-minimal/package.mk +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) - -PKG_NAME="es-theme-minimal" -PKG_VERSION="b478b0e3986e557b40fcd25a9e48d9956fa11a96" -PKG_ARCH="any" -PKG_LICENSE="creative commons CC-BY-NC-SA" -PKG_SITE="https://github.com/fabricecaruso/es-theme-minimal" -PKG_URL="${PKG_SITE}.git" -GET_HANDLER_SUPPORT="git" -PKG_SHORTDESC="Minimal" -PKG_LONGDESC="Minimal theme by fabricecaruso" -PKG_TOOLCHAIN="manual" - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/share/themes/${PKG_NAME} - cp -rf * ${INSTALL}/usr/share/themes/${PKG_NAME} -} diff --git a/packages/tools/aml-dtbtools/package.mk b/packages/tools/aml-dtbtools/package.mk deleted file mode 100644 index 1512dfde2..000000000 --- a/packages/tools/aml-dtbtools/package.mk +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) - -PKG_NAME="aml-dtbtools" -PKG_VERSION="cce100f" -PKG_SHA256="8bcaa83fcc9e85c9c04930e7411447d96a97da0809c5ecd9af91c8b554133c41" -PKG_LICENSE="free" -PKG_SITE="https://github.com/Wilhansen/aml-dtbtools" -PKG_URL="https://github.com/Wilhansen/aml-dtbtools/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_HOST="gcc:host" -PKG_LONGDESC="AML DTB Tools" - -PKG_MAKE_OPTS_HOST="dtbTool" - -makeinstall_host() { - mkdir -p ${TOOLCHAIN}/bin - cp dtbTool ${TOOLCHAIN}/bin -} diff --git a/packages/tools/bl301/package.mk b/packages/tools/bl301/package.mk deleted file mode 100644 index 410e7651d..000000000 --- a/packages/tools/bl301/package.mk +++ /dev/null @@ -1,47 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2018-present Team CoreELEC (https://coreelec.org) - -PKG_NAME="bl301" -PKG_VERSION="85f483db84c1482ee632bf34e6765c92486fc9d0" -PKG_SHA256="526d10570add92e737782cf1b7faae8e329e565d2163fdf5d014d22096291841" -PKG_LICENSE="GPL" -PKG_SITE="https://coreelec.org" -PKG_URL="https://github.com/CoreELEC/bl301/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain gcc-linaro-aarch64-elf:host gcc-linaro-arm-eabi:host" -PKG_LONGDESC="Das U-Boot is a cross-platform bootloader for embedded systems." -PKG_TOOLCHAIN="manual" - -pre_make_target() { - sed -i "s|arm-none-eabi-|arm-eabi-|g" ${PKG_BUILD}/Makefile ${PKG_BUILD}/arch/arm/cpu/armv8/*/firmware/scp_task/Makefile 2>/dev/null || true -} - -make_target() { - [ "${BUILD_WITH_DEBUG}" = "yes" ] && PKG_DEBUG=1 || PKG_DEBUG=0 - export PATH=${TOOLCHAIN}/lib/gcc-linaro-aarch64-elf/bin/:${TOOLCHAIN}/lib/gcc-linaro-arm-eabi/bin/:$PATH - DEBUG=${PKG_DEBUG} CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make mrproper - - for f in $(find ${PKG_BUILD}/configs -mindepth 1); do - PKG_UBOOT_CONFIG=$(basename -- "$f") - PKG_BL301_SUBDEVICE=${PKG_UBOOT_CONFIG%_defconfig} - echo Building bl301 for ${PKG_BL301_SUBDEVICE} - DEBUG=${PKG_DEBUG} CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make ${PKG_UBOOT_CONFIG} - DEBUG=${PKG_DEBUG} CROSS_COMPILE=aarch64-elf- ARCH=arm CFLAGS="" LDFLAGS="" make HOSTCC="${HOST_CC}" HOSTSTRIP="true" bl301.bin - mv ${PKG_BUILD}/build/scp_task/bl301.bin ${PKG_BUILD}/build/${PKG_BL301_SUBDEVICE}_bl301.bin - echo "moved blob to: " ${PKG_BUILD}/build/${PKG_BL301_SUBDEVICE}_bl301.bin - rm -rf ${PKG_BUILD}/build/scp_task - done -} - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/share/bootloader/bl301 - - for f in $(find ${PKG_BUILD}/configs -mindepth 1); do - PKG_UBOOT_CONFIG=$(basename -- "$f") - PKG_BL301_SUBDEVICE=${PKG_UBOOT_CONFIG%_defconfig} - PKG_BIN=${PKG_BUILD}/build/${PKG_BL301_SUBDEVICE}_bl301.bin - cp -av ${PKG_BIN} ${INSTALL}/usr/share/bootloader/bl301/${PKG_BL301_SUBDEVICE}_bl301.bin - done - - [ -d "${PKG_BUILD}/bl30" ] && cp -av ${PKG_BUILD}/bl30 ${INSTALL}/usr/share/bootloader/bl301 || : - [ -d "${PKG_BUILD}/bl31" ] && cp -av ${PKG_BUILD}/bl31 ${INSTALL}/usr/share/bootloader/bl301 || : -} diff --git a/packages/tools/ceemmc/package.mk b/packages/tools/ceemmc/package.mk deleted file mode 100644 index dc7b36a37..000000000 --- a/packages/tools/ceemmc/package.mk +++ /dev/null @@ -1,17 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0-or-later -# Copyright (C) 2019-present Team CoreELEC (https://coreelec.org) - -PKG_NAME="ceemmc" -PKG_VERSION="d74dcaa86e08a7d742218ede660ba9307f1e19fa" -PKG_SHA256="b0755c8d229ce6f9ab1aca88956f4cc441eb0fe0328b29c74b26e3d7e0fa6997" -PKG_LICENSE="proprietary" -PKG_SITE="https://coreelec.org" -PKG_URL="https://sources.coreelec.org/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain" -PKG_LONGDESC="Tool to install CoreELEC on internal eMMC" -PKG_TOOLCHAIN="manual" - -makeinstall_target() { - mkdir -p ${INSTALL}/usr/sbin - install -m 0755 ceemmc ${INSTALL}/usr/sbin/ceemmc -} diff --git a/packages/tools/rtk_hciattach/system.d/hciattach-realtek.service b/packages/tools/rtk_hciattach/system.d/hciattach-realtek.service index c48dad498..36c903463 100644 --- a/packages/tools/rtk_hciattach/system.d/hciattach-realtek.service +++ b/packages/tools/rtk_hciattach/system.d/hciattach-realtek.service @@ -2,6 +2,7 @@ Description=Attach /dev/ttyS1 to BlueZ stack Before=bluetooth-agent.service PartOf=bluetooth.service +ConditionPathExists=/dev/ttyS1 [Service] Type=simple diff --git a/packages/ui/emulationstation/config/common/es_features.cfg b/packages/ui/emulationstation/config/common/es_features.cfg index e66cb9135..d420800b2 100644 --- a/packages/ui/emulationstation/config/common/es_features.cfg +++ b/packages/ui/emulationstation/config/common/es_features.cfg @@ -2,10 +2,6 @@ - - - - @@ -164,6 +160,7 @@ + @@ -793,6 +790,7 @@ + diff --git a/packages/ui/emulationstation/config/common/es_systems.cfg b/packages/ui/emulationstation/config/common/es_systems.cfg deleted file mode 100644 index d4832eee7..000000000 --- a/packages/ui/emulationstation/config/common/es_systems.cfg +++ /dev/null @@ -1,15 +0,0 @@ - - - - tools - Tools - JELOS - 2021 - system - /storage/.config/modules - .sh - /usr/bin/run %ROM% - tools - tools - - diff --git a/packages/ui/emulationstation/package.mk b/packages/ui/emulationstation/package.mk index 52032dd84..337362b79 100644 --- a/packages/ui/emulationstation/package.mk +++ b/packages/ui/emulationstation/package.mk @@ -3,7 +3,7 @@ # Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) PKG_NAME="emulationstation" -PKG_VERSION="58a9a86aa957501753e7b2442efcbfb5dbdb9bac" +PKG_VERSION="94f95dc" PKG_GIT_CLONE_BRANCH="main" PKG_REV="1" PKG_ARCH="any" @@ -117,8 +117,31 @@ makeinstall_target() { ln -sf /storage/.config/emulationstation/themes ${INSTALL}/etc/emulationstation/ cp -rf ${PKG_DIR}/config/common/*.cfg ${INSTALL}/usr/config/emulationstation - ln -sf /usr/config/emulationstation/es_systems.cfg ${INSTALL}/etc/emulationstation/es_systems.cfg + # If we're not an emulation device, ES may still be installed so we need a default config. + if [ "${EMULATION_DEVICE}" = "no" ] || \ + [ "${BASE_ONLY}" = "true" ] + then + cat <${INSTALL}/etc/emulationstation/es_systems.cfg + + + + tools + Tools + JELOS + 2021 + system + /storage/.config/modules + .sh + /usr/bin/run %ROM% + tools + tools + + +EOF + fi + + ln -sf /usr/config/emulationstation/es_systems.cfg ${INSTALL}/etc/emulationstation/es_systems.cfg if [ -d "${PKG_DIR}/config/device/${DEVICE}" ]; then cp -rf ${PKG_DIR}/config/device/${DEVICE}/*.cfg ${INSTALL}/usr/config/emulationstation fi diff --git a/packages/virtual/emulators/package.mk b/packages/virtual/emulators/package.mk index ade80fbd9..0231c01c5 100644 --- a/packages/virtual/emulators/package.mk +++ b/packages/virtual/emulators/package.mk @@ -33,7 +33,7 @@ case "${DEVICE}" in AMD64) [ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="lutris-wine" PKG_EMUS+=" amiberry cemu-sa citra-sa dolphin-sa duckstation-sa melonds-sa minivmacsa mupen64plus-sa kronos-sa \ - nanoboyadvance-sa pcsx2-sa primehack rpcs3-sa ryujinx-sa scummvmsa vita3k-sa xemu-sa yuzu-sa" + nanoboyadvance-sa pcsx2-sa primehack rpcs3-sa ryujinx-sa scummvmsa vita3k-sa xemu-sa yuzu-sa mednafen" LIBRETRO_CORES+=" beetle-psx-lr bsnes-hd-lr citra-lr desmume-lr dolphin-lr flycast-lr lrps2-lr mame-lr \ play-lr" ;; @@ -68,7 +68,7 @@ case "${DEVICE}" in RK3326*) [ "${ENABLE_32BIT}" == "true" ] && EMUS_32BIT="flycast-lr desmume-lr gpsp-lr pcsx_rearmed-lr" PKG_DEPENDS_TARGET+=" common-shaders glsl-shaders" - PKG_EMUS+=" amiberry drastic-sa mupen64plus-sa nanoboyadvance-sa scummvmsa yabasanshiro-sa portmaster" + PKG_EMUS+=" amiberry drastic-sa mupen64plus-sa nanoboyadvance-sa scummvmsa yabasanshiro-sa portmaster mednafen" LIBRETRO_CORES+=" uae4arm flycast-lr" PKG_RETROARCH+=" retropie-shaders" ;; @@ -358,7 +358,7 @@ makeinstall_target() { add_emu_core famicom retroarch quicknes false add_emu_core famicom retroarch mesen false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core famicom mednafen nes false ;; esac @@ -369,7 +369,7 @@ makeinstall_target() { add_emu_core fds retroarch fceumm false add_emu_core fds retroarch quicknes false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core fds mednafen nes false ;; esac @@ -405,7 +405,7 @@ makeinstall_target() { add_emu_core gb retroarch mgba false add_emu_core gb retroarch vbam false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gb mednafen gb false ;; esac @@ -419,7 +419,7 @@ makeinstall_target() { add_emu_core gbh retroarch mgba false add_emu_core gbh retroarch vbam false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gbh mednafen gb false ;; esac @@ -444,7 +444,7 @@ makeinstall_target() { ;; esac case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gba mednafen gba false ;; esac @@ -457,7 +457,7 @@ makeinstall_target() { add_emu_core gbah retroarch vba_next false add_emu_core gbah retroarch beetle_gba false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gbah mednafen gba false ;; esac @@ -471,7 +471,7 @@ makeinstall_target() { add_emu_core gbc retroarch mgba false add_emu_core gbc retroarch vbam false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gbc mednafen gb false ;; esac @@ -485,7 +485,7 @@ makeinstall_target() { add_emu_core gbch retroarch mgba false add_emu_core gbch retroarch vbam false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gbch mednafen gb false ;; esac @@ -546,7 +546,7 @@ makeinstall_target() { add_emu_core gamegear retroarch picodrive false add_emu_core gamegear retroarch smsplus false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core gamegear mednafen gg false ;; esac @@ -558,7 +558,7 @@ makeinstall_target() { add_emu_core ggh retroarch picodrive false add_emu_core ggh retroarch smsplus false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core ggh mednafen gg false ;; esac @@ -580,7 +580,7 @@ makeinstall_target() { add_emu_core atarilynx retroarch handy true add_emu_core atarilynx retroarch beetle_lynx false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core atarilynx mednafen lynx false ;; esac @@ -605,7 +605,7 @@ makeinstall_target() { add_emu_core megadrive-japan retroarch genesis_plus_gx_wide false add_emu_core megadrive-japan retroarch picodrive case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core megadrive-japan mednafen md false ;; esac @@ -620,7 +620,7 @@ makeinstall_target() { add_emu_core snesmsu1 retroarch snes9x true add_emu_core snesmsu1 retroarch beetle_supafaust false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core snesmsu1 mednafen snes_faust false ;; esac @@ -680,7 +680,7 @@ makeinstall_target() { add_emu_core ngp retroarch beetle_ngp true add_emu_core ngp retroarch race false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core ngp mednafen ngp false ;; esac @@ -690,7 +690,7 @@ makeinstall_target() { add_emu_core ngpc retroarch beetle_ngp true add_emu_core ngpc retroarch race false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core ngpc mednafen ngp false ;; esac @@ -740,7 +740,7 @@ makeinstall_target() { add_emu_core nes retroarch quicknes false add_emu_core nes retroarch mesen false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core nes mednafen nes false ;; esac @@ -752,7 +752,7 @@ makeinstall_target() { add_emu_core nesh retroarch quicknes false add_emu_core nesh retroarch mesen false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core nesh mednafen nesh false ;; esac @@ -779,7 +779,7 @@ makeinstall_target() { add_emu_core pcengine retroarch beetle_pce false add_emu_core pcengine retroarch beetle_supergrafx false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core pcengine mednafen pce false add_emu_core pcengine mednafen pce_fast false ;; @@ -791,7 +791,7 @@ makeinstall_target() { add_emu_core pcenginecd retroarch beetle_pce false add_emu_core pcenginecd retroarch beetle_supergrafx false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core pcenginecd mednafen pce false add_emu_core pcenginecd mednafen pce_fast false ;; @@ -801,7 +801,7 @@ makeinstall_target() { ### NEC PC-FX add_emu_core pcfx retroarch beetle_pcfx true case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core pcfx mednafen pcfx false ;; esac @@ -817,6 +817,7 @@ makeinstall_target() { AMD64) add_emu_core psx retroarch beetle_psx true add_emu_core psx duckstation duckstation-sa false + add_emu_core psx mednafen psx false ;; S922X*) add_emu_core psx retroarch pcsx_rearmed true @@ -844,6 +845,7 @@ makeinstall_target() { RK3326) add_emu_core psx retroarch pcsx_rearmed32 true add_emu_core psx retroarch pcsx_rearmed false + add_emu_core psx mednafen psx false ;; esac add_emu_core psx retroarch duckstation false @@ -933,7 +935,7 @@ makeinstall_target() { add_emu_core genesis retroarch genesis_plus_gx_wide false add_emu_core genesis retroarch picodrive false case ${DEVICE} in - RK3399) + RK3399|AMD64) add_emu_core genesis mednafen md false ;; esac @@ -944,7 +946,7 @@ makeinstall_target() { add_emu_core genh retroarch genesis_plus_gx_wide false add_emu_core genh retroarch picodrive false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core genh mednafen md false ;; esac @@ -956,7 +958,7 @@ makeinstall_target() { add_emu_core mastersystem retroarch picodrive false add_emu_core mastersystem retroarch smsplus false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core mastersystem mednafen sms false ;; esac @@ -967,7 +969,7 @@ makeinstall_target() { add_emu_core megadrive retroarch genesis_plus_gx_wide false add_emu_core megadrive retroarch picodrive false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core megadrive mednafen md false ;; esac @@ -990,7 +992,7 @@ makeinstall_target() { esac add_emu_core saturn retroarch beetle_saturn false case ${DEVICE} in - RK3399) + AMD64) add_emu_core saturn mednafen ss false ;; esac @@ -1001,7 +1003,7 @@ makeinstall_target() { AMD64|S922X*|RK35*) add_emu_core st-v retroarch beetle_saturn true ;; - RK3399) + RK3399|AMD64) add_emu_core st-v retroarch beetle_saturn true add_emu_core st-v mednafen ss false ;; @@ -1039,7 +1041,7 @@ makeinstall_target() { add_emu_core supergrafx retroarch beetle_supergrafx add_emu_core supergrafx retroarch beetle_pce case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core supergrafx mednafen pce false add_emu_core supergrafx mednafen pce_fast false ;; @@ -1056,10 +1058,13 @@ makeinstall_target() { add_emu_core snes retroarch bsnes_mercury_performance false add_emu_core snes retroarch bsnes_hd_beta false case ${DEVICE} in - RK3399) + RK3399|AMD64) add_emu_core snes mednafen snes_faust false add_emu_core snes mednafen snes false ;; + RK3326) + add_emu_core snes mednafen snes_faust false + ;; esac add_es_system snes @@ -1073,10 +1078,13 @@ makeinstall_target() { add_emu_core snesh retroarch bsnes_mercury_performance false add_emu_core snesh retroarch bsnes_hd_beta false case ${DEVICE} in - RK3399) + RK3399|AMD64) add_emu_core snesh mednafen snes false add_emu_core snesh mednafen snes_faust false ;; + RK3326) + add_emu_core snes mednafen snes_faust false + ;; esac add_es_system snesh @@ -1090,10 +1098,13 @@ makeinstall_target() { add_emu_core sfc retroarch bsnes_mercury_performance false add_emu_core sfc retroarch bsnes_hd_beta false case ${DEVICE} in - RK3399) + RK3399|AMD64) add_emu_core sfc mednafen snes false add_emu_core sfc mednafen snes_faust false ;; + RK3326) + add_emu_core snes mednafen snes_faust false + ;; esac add_es_system sfc @@ -1121,7 +1132,7 @@ makeinstall_target() { add_emu_core tg16 retroarch beetle_pce false add_emu_core tg16 retroarch beetle_supergrafx false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core tg16 mednafen pce false add_emu_core tg16 mednafen pce_fast false ;; @@ -1133,7 +1144,7 @@ makeinstall_target() { add_emu_core tg16cd retroarch beetle_pce false add_emu_core tg16cd retroarch beetle_supergrafx false case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core tg16cd mednafen pce false add_emu_core tg16cd mednafen pce_fast false ;; @@ -1155,7 +1166,7 @@ makeinstall_target() { ### Nintendo VirtualBoy add_emu_core virtualboy retroarch beetle_vb true case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core virtualboy mednafen vb false ;; esac @@ -1164,7 +1175,7 @@ makeinstall_target() { ### Bandai Wonderswan add_emu_core wonderswan retroarch beetle_wswan true case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core wonderswan mednafen wswan false ;; esac @@ -1173,7 +1184,7 @@ makeinstall_target() { ### Bandai Wonderswan Color add_emu_core wonderswancolor retroarch beetle_wswan true case ${DEVICE} in - RK3399) + RK3399|AMD64|RK3326) add_emu_core wonderswancolor mednafen wswan false ;; esac diff --git a/packages/virtual/image/package.mk b/packages/virtual/image/package.mk index 55d11f701..56cb6ced2 100644 --- a/packages/virtual/image/package.mk +++ b/packages/virtual/image/package.mk @@ -55,14 +55,6 @@ fi # Add support for containers [ "${CONTAINER_SUPPORT}" = "yes" ] && PKG_DEPENDS_TARGET+=" ${PKG_TOOLS} docker" -### Unless we're building the release branch, build the debug tools. -BUILD_BRANCH="$(git branch --show-current)" -if [ ! "${BUILD_BRANCH}" = "main" ] && \ - [ -z "${DEBUG_SUPPORT}" ] -then - DEBUG_SUPPORT=yes -fi - [ "${DEBUG_SUPPORT}" = "yes" ] && PKG_DEPENDS_TARGET+=" ${PKG_DEBUG}" # 32Bit package support diff --git a/projects/Amlogic/bootloader/mkimage b/projects/Amlogic/bootloader/mkimage index 08d644410..97015d902 100644 --- a/projects/Amlogic/bootloader/mkimage +++ b/projects/Amlogic/bootloader/mkimage @@ -56,4 +56,10 @@ case "${SUBDEVICE}" in mkimage_extlinux mkimage_uboot ;; + Odroid_N2L) + DTB=("meson-g12b-odroid-n2l") + mkimage_dtb + mkimage_extlinux + mkimage_uboot + ;; esac diff --git a/projects/Amlogic/bootloader/update.sh b/projects/Amlogic/bootloader/update.sh index 44a78113b..5bf0319c3 100755 --- a/projects/Amlogic/bootloader/update.sh +++ b/projects/Amlogic/bootloader/update.sh @@ -60,9 +60,12 @@ if [ -n "$DT_ID" ]; then *odroid_go_ultra*|*rgb10-max-3*) SUBDEVICE="Odroid_GOU" ;; - *odroid-n2*) + *odroid-n2|*odroid-n2-plus) SUBDEVICE="Odroid_N2" ;; + *odroid-n2l) + SUBDEVICE="Odroid_N2L" + ;; esac fi diff --git a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf index 272a2c93b..ceb8a37ea 100644 --- a/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf +++ b/projects/Amlogic/devices/S922X/linux/linux.aarch64.conf @@ -508,7 +508,7 @@ CONFIG_CMDLINE="" CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y # CONFIG_SUSPEND_SKIP_SYNC is not set -# CONFIG_HIBERNATION is not set +CONFIG_HIBERNATION=y CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y # CONFIG_PM_AUTOSLEEP is not set diff --git a/projects/Amlogic/devices/S922X/options b/projects/Amlogic/devices/S922X/options index bb46761fb..e8964bd6e 100644 --- a/projects/Amlogic/devices/S922X/options +++ b/projects/Amlogic/devices/S922X/options @@ -32,7 +32,7 @@ PARTITION_TABLE="msdos" # Additional kernel make parameters (for example to specify the u-boot loadaddress) - KERNEL_MAKE_EXTRACMD+="dtbs" + KERNEL_MAKE_EXTRACMD+="$(while read i; do eval $i; for dtb in ${DTB[@]}; do echo amlogic/${dtb}.dtb; done; done <<< $(grep DTB= ${PROJECT_DIR}/${PROJECT}/bootloader/mkimage))" # Define the CPU HW_CPU="Amlogic S922X" @@ -85,7 +85,7 @@ DRIVER_ADDONS="" # debug tty path - DEBUG_TTY="/dev/ttyFIQ0" + DEBUG_TTY="/dev/ttyAML0" # Disable 32BIT support ENABLE_32BIT="false" @@ -150,5 +150,5 @@ # htop tool (yes / no) HTOP_TOOL="yes" - # JELOS Subdevices - SUBDEVICES="Odroid_GOU Odroid_N2" + # JELOS Subdevices (supported devices: Odroid_GOU Odroid_N2 Odroid_N2L) + SUBDEVICES="Odroid_GOU Odroid_N2 Odroid_N2L" diff --git a/projects/Amlogic/options b/projects/Amlogic/options index 8de624dfa..98770fd70 100644 --- a/projects/Amlogic/options +++ b/projects/Amlogic/options @@ -64,7 +64,7 @@ DRIVER_ADDONS_SUPPORT="no" # debug tty path - DEBUG_TTY="/dev/ttyS2" + DEBUG_TTY="/dev/ttyAML0" # build with entware installer ENTWARE_SUPPORT="yes" diff --git a/projects/Amlogic/packages/linux/package.mk b/projects/Amlogic/packages/linux/package.mk index 7db58e566..d7077c56c 100644 --- a/projects/Amlogic/packages/linux/package.mk +++ b/projects/Amlogic/packages/linux/package.mk @@ -8,9 +8,9 @@ PKG_NAME="linux" PKG_LICENSE="GPL" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host" -PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host wireless-regdb keyutils util-linux binutils ncurses openssl:host initramfs ${KERNEL_EXTRA_DEPENDS_TARGET}" +PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" PKG_DEPENDS_INIT="toolchain" -PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory busybox)" +PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory initramfs) $(get_pkg_variable initramfs PKG_NEED_UNPACK)" PKG_LONGDESC="This package builds the kernel for Amlogic devices" PKG_IS_KERNEL_PKG="yes" PKG_STAMP="${KERNEL_TARGET} ${KERNEL_MAKE_EXTRACMD}" @@ -18,7 +18,7 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in S922X*) - PKG_VERSION="6.1.60" + PKG_VERSION="6.1.62" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac @@ -44,6 +44,13 @@ if [[ "${KERNEL_TARGET}" = uImage* ]]; then PKG_DEPENDS_TARGET="${PKG_DEPENDS_TARGET} u-boot-tools:host" fi +# Ensure that the dependencies of initramfs:target are built correctly, but +# we don't want to add initramfs:target as a direct dependency as we install +# this "manually" from within linux:target +for pkg in $(get_pkg_variable initramfs PKG_DEPENDS_TARGET); do + ! listcontains "${PKG_DEPENDS_TARGET}" "${pkg}" && PKG_DEPENDS_TARGET+=" ${pkg}" || true +done + post_patch() { cp ${PKG_KERNEL_CFG_FILE} ${PKG_BUILD}/.config @@ -107,6 +114,11 @@ makeinstall_host() { } pre_make_target() { + ( cd ${ROOT} + rm -rf ${BUILD}/initramfs + rm -f ${STAMPS_INSTALL}/initramfs/install_target ${STAMPS_INSTALL}/*/install_init + ${SCRIPTS}/install initramfs + ) if [ "${TARGET_ARCH}" = "x86_64" ]; then # copy some extra firmware to linux tree mkdir -p ${PKG_BUILD}/external-firmware diff --git a/projects/Amlogic/packages/linux/patches/S922X/001.01-Add-ODROID-N2L-device-tree.patch b/projects/Amlogic/packages/linux/patches/S922X/001.01-Add-ODROID-N2L-device-tree.patch new file mode 100644 index 000000000..720c939ef --- /dev/null +++ b/projects/Amlogic/packages/linux/patches/S922X/001.01-Add-ODROID-N2L-device-tree.patch @@ -0,0 +1,80 @@ +--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2l.dts ++++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2l.dts +@@ -0,0 +1,77 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2023 JELOS (https://github.com/JustEnoughLinuxOS) ++ */ ++ ++/dts-v1/; ++ ++#include "meson-g12b-a311d.dtsi" ++#include "meson-g12b-odroid-n2.dtsi" ++ ++/ { ++ compatible = "hardkernel,odroid-n2l", "amlogic,s922x", "amlogic,g12b"; ++ model = "Hardkernel ODROID-N2L"; ++ ++ sound { ++ compatible = "amlogic,axg-sound-card"; ++ model = "ODROID-N2L"; ++ audio-aux-devs = <&tdmout_b>, <&tdmin_a>, <&tdmin_b>, ++ <&tdmin_c>, <&tdmin_lb>; ++ audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", ++ "TDMOUT_B IN 1", "FRDDR_B OUT 1", ++ "TDMOUT_B IN 2", "FRDDR_C OUT 1", ++ "TDM_B Playback", "TDMOUT_B OUT", ++ "TDMIN_A IN 4", "TDM_B Loopback", ++ "TDMIN_B IN 4", "TDM_B Loopback", ++ "TDMIN_C IN 4", "TDM_B Loopback", ++ "TDMIN_LB IN 1", "TDM_B Loopback", ++ "TODDR_A IN 0", "TDMIN_A OUT", ++ "TODDR_B IN 0", "TDMIN_A OUT", ++ "TODDR_C IN 0", "TDMIN_A OUT", ++ "TODDR_A IN 1", "TDMIN_B OUT", ++ "TODDR_B IN 1", "TDMIN_B OUT", ++ "TODDR_C IN 1", "TDMIN_B OUT", ++ "TODDR_A IN 2", "TDMIN_C OUT", ++ "TODDR_B IN 2", "TDMIN_C OUT", ++ "TODDR_C IN 2", "TDMIN_C OUT", ++ "TODDR_A IN 6", "TDMIN_LB OUT", ++ "TODDR_B IN 6", "TDMIN_LB OUT", ++ "TODDR_C IN 6", "TDMIN_LB OUT"; ++ ++ dai-link-6 { ++ /delete-node/ codec-1; ++ }; ++ ++ dai-link-7 { ++ /delete-node/ codec-1; ++ }; ++ ++ /delete-node/ dai-link-9; ++ }; ++}; ++ ++ð_phy { ++ status = "disabled"; ++}; ++ ++&vddcpu_a { ++ regulator-min-microvolt = <680000>; ++ regulator-max-microvolt = <1040000>; ++ ++ pwms = <&pwm_ab 0 1500 0>; ++}; ++ ++&vddcpu_b { ++ regulator-min-microvolt = <680000>; ++ regulator-max-microvolt = <1040000>; ++ ++ pwms = <&pwm_AO_cd 1 1500 0>; ++}; ++ ++&usb2_phy0 { ++ phy-supply = <&usb_pwr_en>; ++}; ++ ++&usb2_phy1 { ++ phy-supply = <&usb_pwr_en>; ++}; diff --git a/projects/Amlogic/packages/linux/patches/S922X/001.01-device-trees-to-build.patch b/projects/Amlogic/packages/linux/patches/S922X/001.01-device-trees-to-build.patch deleted file mode 100644 index 5d0bf6473..000000000 --- a/projects/Amlogic/packages/linux/patches/S922X/001.01-device-trees-to-build.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/Makefile linux/arch/arm64/boot/dts/amlogic/Makefile ---- linux.orig/arch/arm64/boot/dts/amlogic/Makefile 2023-09-12 12:02:56.937601871 +0000 -+++ linux/arch/arm64/boot/dts/amlogic/Makefile 2023-09-12 12:03:27.490291628 +0000 -@@ -1,69 +1,5 @@ - # SPDX-License-Identifier: GPL-2.0 --dtb-$(CONFIG_ARCH_MESON) += meson-a1-ad401.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-axg-jethome-jethub-j100.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-axg-jethome-jethub-j110-rev-2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-axg-jethome-jethub-j110-rev-3.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12a-radxa-zero.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gsking-x.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking.dtb -+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-go-ultra.dtb - dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb - dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-p200.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-p201.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-vega-s95-meta.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-vega-s95-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-vega-s95-telos.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-wetek-hub.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-wetek-play2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s805x-libretech-ac.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s805x-p241.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-libretech-pc.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-mecool-kii-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p230.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-p231.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-phicomm-n1.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-sml5442tw.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905d-vero4k-plus.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-jethome-jethub-j80.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-p281.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905w-tx3-mini.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-hwacom-amazetv.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-khadas-vim.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc-v2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-libretech-cc.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-nexbox-a95x.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxl-s905x-p212.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-gt1-ultimate.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-khadas-vim2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-mecool-kiii-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-minix-neo-u9h.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-nexbox-a1.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q200.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-q201.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-rbox-pro.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-s912-libretech-pc.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-vega-s96.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-gxm-wetek-core2.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-s4-s805x2-aq222.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air-gbit.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-a95xf3-air.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-bananapi-m5.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-h96-max.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-khadas-vim3l.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-c4.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-odroid-hc4.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-sei610.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air-gbit.dtb --dtb-$(CONFIG_ARCH_MESON) += meson-sm1-x96-air.dtb -+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-powkiddy-rgb10-max-3.dtb diff --git a/projects/Amlogic/packages/linux/patches/S922X/001.02-Add-ODROID-GO-Ultra-device-tree.patch b/projects/Amlogic/packages/linux/patches/S922X/001.02-Add-ODROID-GO-Ultra-device-tree.patch index 6e7fed000..af1b464d0 100644 --- a/projects/Amlogic/packages/linux/patches/S922X/001.02-Add-ODROID-GO-Ultra-device-tree.patch +++ b/projects/Amlogic/packages/linux/patches/S922X/001.02-Add-ODROID-GO-Ultra-device-tree.patch @@ -1,7 +1,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts linux/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts --- linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts 1970-01-01 00:00:00.000000000 +0000 +++ linux/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts 2023-09-12 13:20:28.956694441 +0000 -@@ -0,0 +1,1021 @@ +@@ -0,0 +1,1015 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Neil Armstrong @@ -361,9 +361,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts + +/* RK817 only supports 12.5mV steps, round up the values */ +&cpu_opp_table_0 { -+ opp-667000000 { -+ opp-microvolt = <725000>; -+ }; + opp-1000000000 { + opp-microvolt = <737500>; + }; @@ -396,9 +393,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-go-ultra.dts + +/* RK818 only supports 12.5mV steps, round up the values */ +&cpub_opp_table_1 { -+ opp-667000000 { -+ opp-microvolt = <750000>; -+ }; + opp-1000000000 { + opp-microvolt = <775000>; + }; diff --git a/projects/Amlogic/packages/linux/patches/S922X/001.03-Add-Powkiddy-RGB10-MAX-3-device-tree.patch b/projects/Amlogic/packages/linux/patches/S922X/001.03-Add-Powkiddy-RGB10-MAX-3-device-tree.patch index d4649c2c0..4c947d5bc 100644 --- a/projects/Amlogic/packages/linux/patches/S922X/001.03-Add-Powkiddy-RGB10-MAX-3-device-tree.patch +++ b/projects/Amlogic/packages/linux/patches/S922X/001.03-Add-Powkiddy-RGB10-MAX-3-device-tree.patch @@ -1,7 +1,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max-3.dts linux/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max-3.dts --- linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max-3.dts 1970-01-01 00:00:00.000000000 +0000 +++ linux/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max-3.dts 2023-09-12 12:04:13.567330573 +0000 -@@ -0,0 +1,995 @@ +@@ -0,0 +1,989 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2022 Neil Armstrong @@ -350,9 +350,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max- + +/* RK817 only supports 12.5mV steps, round up the values */ +&cpu_opp_table_0 { -+ opp-667000000 { -+ opp-microvolt = <731250>; -+ }; + opp-1000000000 { + opp-microvolt = <760000>; + }; @@ -378,9 +375,6 @@ diff -rupN linux.orig/arch/arm64/boot/dts/amlogic/meson-g12b-powkiddy-rgb10-max- + +/* RK818 only supports 12.5mV steps, round up the values */ +&cpub_opp_table_1 { -+ opp-667000000 { -+ opp-microvolt = <750000>; -+ }; + opp-1000000000 { + opp-microvolt = <775000>; + }; diff --git a/projects/Amlogic/packages/linux/patches/S922X/004.03-polled-input-device-driver.patch b/projects/Amlogic/packages/linux/patches/S922X/004.03-polled-input-device-driver.patch index c2377a6bc..52d9cd4b7 100644 --- a/projects/Amlogic/packages/linux/patches/S922X/004.03-polled-input-device-driver.patch +++ b/projects/Amlogic/packages/linux/patches/S922X/004.03-polled-input-device-driver.patch @@ -400,3 +400,65 @@ diff -rupN linux.orig/drivers/input/input-polldev.c linux/drivers/input/input-po +} +EXPORT_SYMBOL(input_unregister_polled_device); +diff -rupN linux.orig/include/linux/input-polldev.h linux/include/linux/input-polldev.h +--- linux.orig/include/linux/input-polldev.h 1970-01-01 00:00:00.000000000 +0000 ++++ linux/include/linux/input-polldev.h 2023-09-12 12:03:27.490291628 +0000 +@@ -0,0 +1,58 @@ ++/* SPDX-License-Identifier: GPL-2.0-only */ ++#ifndef _INPUT_POLLDEV_H ++#define _INPUT_POLLDEV_H ++ ++/* ++ * Copyright (c) 2007 Dmitry Torokhov ++ */ ++ ++#include ++#include ++ ++/** ++ * struct input_polled_dev - simple polled input device ++ * @private: private driver data. ++ * @open: driver-supplied method that prepares device for polling ++ * (enabled the device and maybe flushes device state). ++ * @close: driver-supplied method that is called when device is no ++ * longer being polled. Used to put device into low power mode. ++ * @poll: driver-supplied method that polls the device and posts ++ * input events (mandatory). ++ * @poll_interval: specifies how often the poll() method should be called. ++ * Defaults to 500 msec unless overridden when registering the device. ++ * @poll_interval_max: specifies upper bound for the poll interval. ++ * Defaults to the initial value of @poll_interval. ++ * @poll_interval_min: specifies lower bound for the poll interval. ++ * Defaults to 0. ++ * @input: input device structure associated with the polled device. ++ * Must be properly initialized by the driver (id, name, phys, bits). ++ * ++ * Polled input device provides a skeleton for supporting simple input ++ * devices that do not raise interrupts but have to be periodically ++ * scanned or polled to detect changes in their state. ++ */ ++struct input_polled_dev { ++ void *private; ++ ++ void (*open)(struct input_polled_dev *dev); ++ void (*close)(struct input_polled_dev *dev); ++ void (*poll)(struct input_polled_dev *dev); ++ unsigned int poll_interval; /* msec */ ++ unsigned int poll_interval_max; /* msec */ ++ unsigned int poll_interval_min; /* msec */ ++ ++ struct input_dev *input; ++ ++/* private: */ ++ struct delayed_work work; ++ ++ bool devres_managed; ++}; ++ ++struct input_polled_dev *input_allocate_polled_device(void); ++struct input_polled_dev *devm_input_allocate_polled_device(struct device *dev); ++void input_free_polled_device(struct input_polled_dev *dev); ++int input_register_polled_device(struct input_polled_dev *dev); ++void input_unregister_polled_device(struct input_polled_dev *dev); ++ ++#endif diff --git a/projects/Amlogic/packages/linux/patches/S922X/004.04-rk818-charger-driver.patch b/projects/Amlogic/packages/linux/patches/S922X/004.04-rk818-charger-driver.patch index 807c7e379..dc6b2ec71 100644 --- a/projects/Amlogic/packages/linux/patches/S922X/004.04-rk818-charger-driver.patch +++ b/projects/Amlogic/packages/linux/patches/S922X/004.04-rk818-charger-driver.patch @@ -4426,68 +4426,6 @@ diff -rupN linux.orig/drivers/power/supply/rk818_charger.c linux/drivers/power/s +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:rk818-charger"); +MODULE_AUTHOR("Ondřej Jirman "); -diff -rupN linux.orig/include/linux/input-polldev.h linux/include/linux/input-polldev.h ---- linux.orig/include/linux/input-polldev.h 1970-01-01 00:00:00.000000000 +0000 -+++ linux/include/linux/input-polldev.h 2023-09-12 12:03:27.490291628 +0000 -@@ -0,0 +1,58 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+#ifndef _INPUT_POLLDEV_H -+#define _INPUT_POLLDEV_H -+ -+/* -+ * Copyright (c) 2007 Dmitry Torokhov -+ */ -+ -+#include -+#include -+ -+/** -+ * struct input_polled_dev - simple polled input device -+ * @private: private driver data. -+ * @open: driver-supplied method that prepares device for polling -+ * (enabled the device and maybe flushes device state). -+ * @close: driver-supplied method that is called when device is no -+ * longer being polled. Used to put device into low power mode. -+ * @poll: driver-supplied method that polls the device and posts -+ * input events (mandatory). -+ * @poll_interval: specifies how often the poll() method should be called. -+ * Defaults to 500 msec unless overridden when registering the device. -+ * @poll_interval_max: specifies upper bound for the poll interval. -+ * Defaults to the initial value of @poll_interval. -+ * @poll_interval_min: specifies lower bound for the poll interval. -+ * Defaults to 0. -+ * @input: input device structure associated with the polled device. -+ * Must be properly initialized by the driver (id, name, phys, bits). -+ * -+ * Polled input device provides a skeleton for supporting simple input -+ * devices that do not raise interrupts but have to be periodically -+ * scanned or polled to detect changes in their state. -+ */ -+struct input_polled_dev { -+ void *private; -+ -+ void (*open)(struct input_polled_dev *dev); -+ void (*close)(struct input_polled_dev *dev); -+ void (*poll)(struct input_polled_dev *dev); -+ unsigned int poll_interval; /* msec */ -+ unsigned int poll_interval_max; /* msec */ -+ unsigned int poll_interval_min; /* msec */ -+ -+ struct input_dev *input; -+ -+/* private: */ -+ struct delayed_work work; -+ -+ bool devres_managed; -+}; -+ -+struct input_polled_dev *input_allocate_polled_device(void); -+struct input_polled_dev *devm_input_allocate_polled_device(struct device *dev); -+void input_free_polled_device(struct input_polled_dev *dev); -+int input_register_polled_device(struct input_polled_dev *dev); -+void input_unregister_polled_device(struct input_polled_dev *dev); -+ -+#endif diff -rupN linux.orig/include/linux/mfd/rk808.h linux/include/linux/mfd/rk808.h --- linux.orig/include/linux/mfd/rk808.h 2023-09-12 12:02:59.205653098 +0000 +++ linux/include/linux/mfd/rk808.h 2023-09-12 12:03:27.490291628 +0000 diff --git a/projects/Amlogic/packages/u-boot-Odroid_GOU/patches/005-boot-from-sd-first.patch b/projects/Amlogic/packages/u-boot-Odroid_GOU/patches/005-boot-from-sd-first.patch new file mode 100644 index 000000000..7b2d3c30d --- /dev/null +++ b/projects/Amlogic/packages/u-boot-Odroid_GOU/patches/005-boot-from-sd-first.patch @@ -0,0 +1,12 @@ +--- a/board/hardkernel/odroidgo4/odroidgo4.c ++++ b/board/hardkernel/odroidgo4/odroidgo4.c +@@ -165,8 +165,8 @@ + } + int board_mmc_init(bd_t *bis) + { +- board_mmc_register(SDIO_PORT_C); // eMMC + board_mmc_register(SDIO_PORT_B); // SD card ++ board_mmc_register(SDIO_PORT_C); // eMMC + + return 0; + } diff --git a/projects/Amlogic/packages/u-boot-Odroid_N2L/package.mk b/projects/Amlogic/packages/u-boot-Odroid_N2L/package.mk new file mode 100644 index 000000000..949c41adf --- /dev/null +++ b/projects/Amlogic/packages/u-boot-Odroid_N2L/package.mk @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS) + +PKG_NAME="u-boot-Odroid_N2L" +PKG_VERSION="v2023.10" +PKG_LICENSE="GPL" +PKG_SITE="https://www.denx.de/wiki/U-Boot" +PKG_URL="https://github.com/u-boot/u-boot/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain amlogic-boot-fip" +PKG_DEPENDS_UNPACK="amlogic-boot-fip" +PKG_LONGDESC="Das U-Boot is a cross-platform bootloader for embedded systems." +PKG_TOOLCHAIN="manual" + +configure_package() { + PKG_UBOOT_CONFIG="odroid-n2l_defconfig" + PKG_UBOOT_FIP="odroid-n2l" + FIP_DIR="$(get_build_dir amlogic-boot-fip)" +} + +make_target() { + [ "${BUILD_WITH_DEBUG}" = "yes" ] && PKG_DEBUG=1 || PKG_DEBUG=0 + setup_pkg_config_host + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make mrproper + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm make HOSTCC="${HOST_CC}" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTLDFLAGS="${HOST_LDFLAGS}" ${PKG_UBOOT_CONFIG} + DEBUG=${PKG_DEBUG} CROSS_COMPILE="${TARGET_KERNEL_PREFIX}" LDFLAGS="" ARCH=arm _python_sysroot="${TOOLCHAIN}" _python_prefix=/ _python_exec_prefix=/ make HOSTCC="${HOST_CC}" HOSTCFLAGS="-I${TOOLCHAIN}/include" HOSTLDFLAGS="${HOST_LDFLAGS}" HOSTSTRIP="true" CONFIG_MKIMAGE_DTC_PATH="scripts/dtc/dtc" + + cp -av ${PKG_BUILD}/u-boot.bin ${FIP_DIR}/${PKG_UBOOT_FIP} + cd ${FIP_DIR} + ./build-fip.sh ${PKG_UBOOT_FIP} ${FIP_DIR}/${PKG_UBOOT_FIP}/u-boot.bin ${PKG_BUILD} +} + +makeinstall_target() { + : # nothing +} diff --git a/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/001-remove-amlogic-prefix.patch b/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/001-remove-amlogic-prefix.patch new file mode 100644 index 000000000..671fd3df0 --- /dev/null +++ b/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/001-remove-amlogic-prefix.patch @@ -0,0 +1,11 @@ +--- a/include/configs/meson64.h ++++ b/include/configs/meson64.h +@@ -99,7 +99,7 @@ + "pxefile_addr_r=0x01080000\0" \ + "fdtoverlay_addr_r=0x01000000\0" \ + "ramdisk_addr_r=0x13000000\0" \ +- "fdtfile=amlogic/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \ ++ "fdtfile=/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \ + BOOTENV + #endif + diff --git a/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/002-instant-boot.patch b/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/002-instant-boot.patch new file mode 100644 index 000000000..f91a833c5 --- /dev/null +++ b/projects/Amlogic/packages/u-boot-Odroid_N2L/patches/002-instant-boot.patch @@ -0,0 +1,10 @@ +--- a/configs/odroid-n2l_defconfig ++++ b/configs/odroid-n2l_defconfig +@@ -18,6 +18,7 @@ + CONFIG_DEBUG_UART=y + CONFIG_REMAKE_ELF=y + CONFIG_OF_BOARD_SETUP=y ++CONFIG_BOOTDELAY=0 + # CONFIG_DISPLAY_CPUINFO is not set + CONFIG_MISC_INIT_R=y + CONFIG_SYS_MAXARGS=32 diff --git a/projects/PC/devices/AMD64/linux/linux.x86_64.conf b/projects/PC/devices/AMD64/linux/linux.x86_64.conf index 9beab031e..823d20754 100644 --- a/projects/PC/devices/AMD64/linux/linux.x86_64.conf +++ b/projects/PC/devices/AMD64/linux/linux.x86_64.conf @@ -1,20 +1,21 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 6.3.8 Kernel Configuration +# Linux/x86 6.5.10 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="x86_64-libreelec-linux-gnu-gcc-12.3.0 (GCC) 12.3.0" +CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=120300 +CONFIG_GCC_VERSION=110400 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24000 +CONFIG_AS_VERSION=23800 CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24000 +CONFIG_LD_VERSION=23800 CONFIG_LLD_VERSION=0 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=0 @@ -122,9 +123,9 @@ CONFIG_BPF_SYSCALL=y # end of BPF subsystem CONFIG_PREEMPT_BUILD=y -CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set -# CONFIG_PREEMPT is not set +CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y CONFIG_PREEMPTION=y CONFIG_PREEMPT_DYNAMIC=y @@ -151,7 +152,6 @@ CONFIG_CPU_ISOLATION=y CONFIG_TREE_RCU=y CONFIG_PREEMPT_RCU=y # CONFIG_RCU_EXPERT is not set -CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y CONFIG_TASKS_RCU=y @@ -166,7 +166,6 @@ CONFIG_IKCONFIG_PROC=y # CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=17 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 -CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 # CONFIG_PRINTK_INDEX is not set CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y @@ -219,7 +218,6 @@ CONFIG_PID_NS=y CONFIG_NET_NS=y # CONFIG_CHECKPOINT_RESTORE is not set # CONFIG_SCHED_AUTOGROUP is not set -# CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" @@ -277,10 +275,10 @@ CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y CONFIG_RSEQ=y +CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y -CONFIG_GUEST_PERF_EVENTS=y # CONFIG_PC104 is not set # @@ -328,7 +326,6 @@ CONFIG_CC_HAS_SANE_STACKPROTECTOR=y # Processor type and features # CONFIG_SMP=y -CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y # CONFIG_GOLDFISH is not set @@ -342,16 +339,14 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_HYPERVISOR_GUEST=y CONFIG_PARAVIRT=y -CONFIG_PARAVIRT_XXL=y # CONFIG_PARAVIRT_DEBUG is not set CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_X86_HV_CALLBACK_VECTOR=y -CONFIG_XEN=n -CONFIG_KVM_GUEST=n +# CONFIG_XEN is not set +# CONFIG_KVM_GUEST is not set CONFIG_ARCH_CPUIDLE_HALTPOLL=y CONFIG_PVH=y CONFIG_PARAVIRT_TIME_ACCOUNTING=y -CONFIG_PARAVIRT_CLOCK=y CONFIG_JAILHOUSE_GUEST=y CONFIG_ACRN_GUEST=y CONFIG_INTEL_TDX_GUEST=y @@ -482,9 +477,8 @@ CONFIG_PHYSICAL_ALIGN=0x1000000 CONFIG_DYNAMIC_MEMORY_LAYOUT=y CONFIG_RANDOMIZE_MEMORY=y CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +# CONFIG_ADDRESS_MASKING is not set CONFIG_HOTPLUG_CPU=y -# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set -# CONFIG_DEBUG_HOTPLUG_CPU0 is not set # CONFIG_COMPAT_VDSO is not set CONFIG_LEGACY_VSYSCALL_XONLY=y # CONFIG_LEGACY_VSYSCALL_NONE is not set @@ -515,7 +509,9 @@ CONFIG_CALL_DEPTH_TRACKING=y # CONFIG_CALL_THUNKS_DEBUG is not set CONFIG_CPU_IBPB_ENTRY=y CONFIG_CPU_IBRS_ENTRY=y +CONFIG_CPU_SRSO=y CONFIG_SLS=y +# CONFIG_GDS_FORCE_MITIGATION is not set CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y @@ -651,6 +647,7 @@ CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_PCC_CPUFREQ=m CONFIG_X86_AMD_PSTATE=y +CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3 CONFIG_X86_AMD_PSTATE_UT=y CONFIG_X86_ACPI_CPUFREQ=y CONFIG_X86_ACPI_CPUFREQ_CPB=y @@ -672,8 +669,6 @@ CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_CPU_IDLE_GOV_TEO=y -CONFIG_CPU_IDLE_GOV_HALTPOLL=y -CONFIG_HALTPOLL_CPUIDLE=y # end of CPU Idle CONFIG_INTEL_IDLE=y @@ -684,7 +679,6 @@ CONFIG_INTEL_IDLE=y # CONFIG_PCI_DIRECT=y CONFIG_PCI_MMCONFIG=y -CONFIG_PCI_XEN=y CONFIG_MMCONF_FAM10H=y # CONFIG_PCI_CNB20LE_QUIRK is not set # CONFIG_ISA_BUS is not set @@ -702,7 +696,14 @@ CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y # end of Binary Emulations -# CONFIG_HAVE_KVM=n +CONFIG_HAVE_KVM=y +CONFIG_VIRTUALIZATION=y +# CONFIG_KVM is not set +CONFIG_AS_AVX512=y +CONFIG_AS_SHA1_NI=y +CONFIG_AS_SHA256_NI=y +CONFIG_AS_TPAUSE=y +CONFIG_AS_GFNI=y # # General architecture-dependent options @@ -710,6 +711,11 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y CONFIG_HOTPLUG_SMT=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +CONFIG_HOTPLUG_CORE_SYNC_FULL=y +CONFIG_HOTPLUG_SPLIT_STARTUP=y +CONFIG_HOTPLUG_PARALLEL=y CONFIG_GENERIC_ENTRY=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y @@ -722,7 +728,6 @@ CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_KRETPROBES=y CONFIG_KRETPROBE_ON_RETHOOK=y -CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y @@ -739,6 +744,7 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_ARCH_HAS_FORTIFY_SOURCE=y CONFIG_ARCH_HAS_SET_MEMORY=y CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_ARCH_WANTS_NO_INSTR=y @@ -759,6 +765,7 @@ CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y CONFIG_MMU_GATHER_TABLE_FREE=y CONFIG_MMU_GATHER_RCU_TABLE_FREE=y CONFIG_MMU_GATHER_MERGE_VMAS=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y @@ -852,8 +859,6 @@ CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y # end of GCOV-based kernel profiling CONFIG_HAVE_GCC_PLUGINS=y -CONFIG_GCC_PLUGINS=y -# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT_16B=y CONFIG_FUNCTION_ALIGNMENT=16 @@ -863,6 +868,8 @@ CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULE_SIG_FORMAT=y CONFIG_MODULES=y +CONFIG_MODULE_DEBUGFS=y +# CONFIG_MODULE_DEBUG is not set CONFIG_MODULE_FORCE_LOAD=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y @@ -890,6 +897,7 @@ CONFIG_BLOCK=y CONFIG_BLOCK_LEGACY_AUTOLOAD=y CONFIG_BLK_RQ_ALLOC_TIME=y CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CGROUP_PUNT_BIO=y CONFIG_BLK_DEV_BSG_COMMON=y CONFIG_BLK_ICQ=y CONFIG_BLK_DEV_BSGLIB=y @@ -938,7 +946,6 @@ CONFIG_EFI_PARTITION=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y -CONFIG_BLK_MQ_RDMA=y CONFIG_BLK_PM=y CONFIG_BLOCK_HOLDER_DEPRECATED=y CONFIG_BLK_MQ_STACKING=y @@ -953,7 +960,6 @@ CONFIG_BFQ_GROUP_IOSCHED=y # CONFIG_BFQ_CGROUP_DEBUG is not set # end of IO Schedulers -CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y CONFIG_UNINLINE_SPIN_UNLOCK=y @@ -989,6 +995,7 @@ CONFIG_ZPOOL=y CONFIG_SWAP=y CONFIG_ZSWAP=y CONFIG_ZSWAP_DEFAULT_ON=y +# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set @@ -1009,9 +1016,8 @@ CONFIG_ZSMALLOC_CHAIN_SIZE=8 # # SLAB allocator options # -# CONFIG_SLAB is not set +# CONFIG_SLAB_DEPRECATED is not set CONFIG_SLUB=y -# CONFIG_SLOB_DEPRECATED is not set # CONFIG_SLUB_TINY is not set CONFIG_SLAB_MERGE_DEFAULT=y CONFIG_SLAB_FREELIST_RANDOM=y @@ -1026,6 +1032,7 @@ CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_NUMA_KEEP_MEMINFO=y CONFIG_MEMORY_ISOLATION=y @@ -1093,6 +1100,7 @@ CONFIG_ARCH_HAS_PKEYS=y CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y CONFIG_MAPPING_DIRTY_HELPERS=y CONFIG_SECRETMEM=y @@ -1104,6 +1112,9 @@ CONFIG_PTE_MARKER_UFFD_WP=y CONFIG_LRU_GEN=y CONFIG_LRU_GEN_ENABLED=y # CONFIG_LRU_GEN_STATS is not set +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y # # Data Access Monitoring @@ -1156,6 +1167,7 @@ CONFIG_SMC=m CONFIG_SMC_DIAG=m CONFIG_XDP_SOCKETS=y CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_NET_HANDSHAKE=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -1268,6 +1280,7 @@ CONFIG_NETFILTER_SKIP_EGRESS=y CONFIG_NETFILTER_NETLINK=m CONFIG_NETFILTER_FAMILY_BRIDGE=y CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_BPF_LINK=y CONFIG_NETFILTER_NETLINK_HOOK=m CONFIG_NETFILTER_NETLINK_ACCT=m CONFIG_NETFILTER_NETLINK_QUEUE=m @@ -1839,6 +1852,7 @@ CONFIG_NET_NCSI=y CONFIG_NCSI_OEM_CMD_GET_MAC=y CONFIG_NCSI_OEM_CMD_KEEP_PHY=y CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y @@ -1949,6 +1963,7 @@ CONFIG_BT_MTKSDIO=m CONFIG_BT_MTKUART=m CONFIG_BT_HCIRSI=m CONFIG_BT_VIRTIO=m +# CONFIG_BT_NXPUART is not set # end of Bluetooth device drivers CONFIG_AF_RXRPC=m @@ -2003,7 +2018,6 @@ CONFIG_RFKILL_GPIO=m CONFIG_NET_9P=m CONFIG_NET_9P_FD=m CONFIG_NET_9P_VIRTIO=m -CONFIG_NET_9P_XEN=m CONFIG_NET_9P_RDMA=m # CONFIG_NET_9P_DEBUG is not set # CONFIG_CAIF is not set @@ -2099,7 +2113,6 @@ CONFIG_PCI_QUIRKS=y # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set CONFIG_PCI_STUB=y CONFIG_PCI_PF_STUB=m -CONFIG_XEN_PCIDEV_FRONTEND=m CONFIG_PCI_ATS=y CONFIG_PCI_DOE=y CONFIG_PCI_LOCKLESS_CONFIG=y @@ -2131,24 +2144,24 @@ CONFIG_VMD=m CONFIG_PCI_HYPERV_INTERFACE=m # -# DesignWare PCI Core Support +# Cadence-based PCIe controllers +# +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers # CONFIG_PCIE_DW=y CONFIG_PCIE_DW_HOST=y +CONFIG_PCI_MESON=y CONFIG_PCIE_DW_PLAT=y CONFIG_PCIE_DW_PLAT_HOST=y -CONFIG_PCI_MESON=y -# end of DesignWare PCI Core Support +# end of DesignWare-based PCIe controllers # -# Mobiveil PCIe Core Support +# Mobiveil-based PCIe controllers # -# end of Mobiveil PCIe Core Support - -# -# Cadence PCIe controllers support -# -# end of Cadence PCIe controllers support +# end of Mobiveil-based PCIe controllers # end of PCI controller drivers # @@ -2173,6 +2186,7 @@ CONFIG_CXL_PORT=m CONFIG_CXL_SUSPEND=y CONFIG_CXL_REGION=y # CONFIG_CXL_REGION_INVALIDATION_TEST is not set +CONFIG_CXL_PMU=m CONFIG_PCCARD=m CONFIG_PCMCIA=m CONFIG_PCMCIA_LOAD_CIS=y @@ -2207,6 +2221,7 @@ CONFIG_STANDALONE=y # Firmware loader # CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_SYSFS=y CONFIG_EXTRA_FIRMWARE="" @@ -2225,7 +2240,6 @@ CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set CONFIG_HMEM_REPORTING=y # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set -CONFIG_SYS_HYPERVISOR=y CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y CONFIG_SOC_BUS=y @@ -2242,6 +2256,7 @@ CONFIG_REGMAP_SCCB=m CONFIG_REGMAP_SPI_AVMM=m CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set # end of Generic Driver Options # @@ -2307,6 +2322,7 @@ CONFIG_EFI_EARLYCON=y CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y # CONFIG_EFI_DISABLE_RUNTIME is not set CONFIG_EFI_COCO_SECRET=y +CONFIG_UNACCEPTED_MEMORY=y CONFIG_EFI_EMBEDDED_FIRMWARE=y # end of EFI (Extensible Firmware Interface) Support @@ -2502,11 +2518,10 @@ CONFIG_CDROM_PKTCDVD=m CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set CONFIG_ATA_OVER_ETH=m -CONFIG_XEN_BLKDEV_FRONTEND=m -CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_VIRTIO_BLK=y CONFIG_BLK_DEV_RBD=m CONFIG_BLK_DEV_UBLK=m +CONFIG_BLKDEV_UBLK_LEGACY_OPCODES=y CONFIG_BLK_DEV_RNBD=y CONFIG_BLK_DEV_RNBD_CLIENT=m CONFIG_BLK_DEV_RNBD_SERVER=m @@ -2601,6 +2616,7 @@ CONFIG_INTEL_MEI_TXE=m CONFIG_INTEL_MEI_GSC=m CONFIG_INTEL_MEI_HDCP=m CONFIG_INTEL_MEI_PXP=m +# CONFIG_INTEL_MEI_GSC_PROXY is not set CONFIG_VMWARE_VMCI=m CONFIG_GENWQE=m CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 @@ -2709,7 +2725,6 @@ CONFIG_SCSI_FLASHPOINT=y CONFIG_SCSI_MYRB=m CONFIG_SCSI_MYRS=m CONFIG_VMWARE_PVSCSI=m -CONFIG_XEN_SCSI_FRONTEND=m CONFIG_HYPERV_STORAGE=m CONFIG_LIBFC=m CONFIG_LIBFCOE=m @@ -2867,6 +2882,7 @@ CONFIG_PATA_PARPORT=m # CONFIG_PATA_PARPORT_ATEN=m CONFIG_PATA_PARPORT_BPCK=m +# CONFIG_PATA_PARPORT_BPCK6 is not set CONFIG_PATA_PARPORT_COMM=m CONFIG_PATA_PARPORT_DSTR=m CONFIG_PATA_PARPORT_FIT2=m @@ -2951,6 +2967,7 @@ CONFIG_TCM_FC=m CONFIG_ISCSI_TARGET=m CONFIG_ISCSI_TARGET_CXGB4=m CONFIG_SBP_TARGET=m +# CONFIG_REMOTE_TARGET is not set CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -3053,6 +3070,8 @@ CONFIG_NET_DSA_LOOP=m CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=m # CONFIG_NET_DSA_LANTIQ_GSWIP is not set CONFIG_NET_DSA_MT7530=m +CONFIG_NET_DSA_MT7530_MDIO=m +CONFIG_NET_DSA_MT7530_MMIO=m CONFIG_NET_DSA_MV88E6060=m CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m @@ -3066,6 +3085,7 @@ CONFIG_NET_DSA_MSCC_OCELOT_EXT=m CONFIG_NET_DSA_MSCC_SEVILLE=m CONFIG_NET_DSA_AR9331=m CONFIG_NET_DSA_QCA8K=m +# CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT is not set CONFIG_NET_DSA_SJA1105=m CONFIG_NET_DSA_SJA1105_PTP=y CONFIG_NET_DSA_SJA1105_TAS=y @@ -3112,6 +3132,7 @@ CONFIG_PCMCIA_NMCLAN=m CONFIG_AMD_XGBE=m CONFIG_AMD_XGBE_DCB=y CONFIG_AMD_XGBE_HAVE_ECC=y +# CONFIG_PDS_CORE is not set CONFIG_NET_VENDOR_AQUANTIA=y CONFIG_AQTION=m CONFIG_NET_VENDOR_ARC=y @@ -3153,6 +3174,7 @@ CONFIG_THUNDER_NIC_VF=m CONFIG_THUNDER_NIC_BGX=m CONFIG_THUNDER_NIC_RGX=m CONFIG_CAVIUM_PTP=m +CONFIG_LIQUIDIO_CORE=m CONFIG_LIQUIDIO=m CONFIG_LIQUIDIO_VF=m CONFIG_NET_VENDOR_CHELSIO=y @@ -3219,7 +3241,6 @@ CONFIG_E1000E_HWTS=y CONFIG_IGB=y CONFIG_IGB_HWMON=y CONFIG_IGBVF=m -CONFIG_IXGB=y CONFIG_IXGBE=y CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCB=y @@ -3235,10 +3256,6 @@ CONFIG_ICE_SWITCHDEV=y CONFIG_ICE_HWTS=y CONFIG_FM10K=m CONFIG_IGC=y -CONFIG_NET_VENDOR_WANGXUN=y -CONFIG_LIBWX=m -CONFIG_NGBE=m -CONFIG_TXGBE=m CONFIG_JME=y CONFIG_NET_VENDOR_ADI=y CONFIG_ADIN1110=m @@ -3420,6 +3437,10 @@ CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=y CONFIG_VIA_RHINE_MMIO=y CONFIG_VIA_VELOCITY=y +CONFIG_NET_VENDOR_WANGXUN=y +CONFIG_LIBWX=m +CONFIG_NGBE=m +CONFIG_TXGBE=m CONFIG_NET_VENDOR_WIZNET=y CONFIG_WIZNET_W5100=m CONFIG_WIZNET_W5300=m @@ -3473,11 +3494,13 @@ CONFIG_MARVELL_88X2222_PHY=m CONFIG_MAXLINEAR_GPHY=m CONFIG_MEDIATEK_GE_PHY=m CONFIG_MICREL_PHY=m +# CONFIG_MICROCHIP_T1S_PHY is not set CONFIG_MICROCHIP_PHY=m CONFIG_MICROCHIP_T1_PHY=m CONFIG_MICROSEMI_PHY=m CONFIG_MOTORCOMM_PHY=m CONFIG_NATIONAL_PHY=m +# CONFIG_NXP_CBTX_PHY is not set CONFIG_NXP_C45_TJA11XX_PHY=m CONFIG_NXP_TJA11XX_PHY=m CONFIG_NCN26000_PHY=m @@ -3554,6 +3577,7 @@ CONFIG_CAN_8DEV_USB=m CONFIG_CAN_EMS_USB=m CONFIG_CAN_ESD_USB=m CONFIG_CAN_ETAS_ES58X=m +# CONFIG_CAN_F81604 is not set CONFIG_CAN_GS_USB=m CONFIG_CAN_KVASER_USB=m CONFIG_CAN_MCBA_USB=m @@ -3582,6 +3606,7 @@ CONFIG_MDIO_GPIO=m CONFIG_MDIO_I2C=m CONFIG_MDIO_MVUSB=m CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_REGMAP=m CONFIG_MDIO_THUNDER=m # @@ -3593,7 +3618,7 @@ CONFIG_MDIO_THUNDER=m # CONFIG_PCS_XPCS=m CONFIG_PCS_LYNX=m -CONFIG_PCS_ALTERA_TSE=m +CONFIG_PCS_MTK_LYNXI=m # end of PCS device drivers CONFIG_PLIP=m @@ -3605,6 +3630,11 @@ CONFIG_PPP_MPPE=m CONFIG_PPP_MULTILINK=y CONFIG_PPPOATM=m CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 CONFIG_PPTP=m CONFIG_PPPOL2TP=m CONFIG_PPP_ASYNC=m @@ -3806,9 +3836,9 @@ CONFIG_IWLWIFI_OPMODE_MODULAR=y # # Debugging Options # -CONFIG_IWLWIFI_DEBUG=n -CONFIG_IWLWIFI_DEBUGFS=n -CONFIG_IWLWIFI_DEVICE_TRACING=n +# CONFIG_IWLWIFI_DEBUG is not set +# CONFIG_IWLWIFI_DEBUGFS is not set +# CONFIG_IWLWIFI_DEVICE_TRACING is not set # end of Debugging Options CONFIG_WLAN_VENDOR_INTERSIL=y @@ -3946,12 +3976,16 @@ CONFIG_RTW88_8822C=m CONFIG_RTW88_8723D=m CONFIG_RTW88_8821C=m CONFIG_RTW88_8822BE=m +# CONFIG_RTW88_8822BS is not set CONFIG_RTW88_8822BU=m CONFIG_RTW88_8822CE=m +# CONFIG_RTW88_8822CS is not set CONFIG_RTW88_8822CU=m CONFIG_RTW88_8723DE=m +# CONFIG_RTW88_8723DS is not set CONFIG_RTW88_8723DU=m CONFIG_RTW88_8821CE=m +# CONFIG_RTW88_8821CS is not set CONFIG_RTW88_8821CU=m CONFIG_RTW88_DEBUG=y CONFIG_RTW88_DEBUGFS=y @@ -3961,6 +3995,7 @@ CONFIG_RTW89_PCI=m CONFIG_RTW89_8852A=m CONFIG_RTW89_8852B=m CONFIG_RTW89_8852C=m +# CONFIG_RTW89_8851BE is not set CONFIG_RTW89_8852AE=m CONFIG_RTW89_8852BE=m CONFIG_RTW89_8852CE=m @@ -3996,8 +4031,8 @@ CONFIG_QTNFMAC=m CONFIG_QTNFMAC_PCIE=m CONFIG_PCMCIA_RAYCS=m CONFIG_PCMCIA_WL3501=m -CONFIG_MAC80211_HWSIM=m CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_MAC80211_HWSIM=m CONFIG_VIRT_WIFI=m # CONFIG_WAN is not set CONFIG_IEEE802154_DRIVERS=m @@ -4025,8 +4060,6 @@ CONFIG_IOSM=m CONFIG_MTK_T7XX=m # end of Wireless WAN -CONFIG_XEN_NETDEV_FRONTEND=m -CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m CONFIG_FUJITSU_ES=m CONFIG_USB4_NET=m @@ -4238,9 +4271,9 @@ CONFIG_TOUCHSCREEN_MMS114=m CONFIG_TOUCHSCREEN_MELFAS_MIP4=m CONFIG_TOUCHSCREEN_MSG2638=m CONFIG_TOUCHSCREEN_MTOUCH=m +# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set CONFIG_TOUCHSCREEN_IMAGIS=m CONFIG_TOUCHSCREEN_INEXIO=m -CONFIG_TOUCHSCREEN_MK712=m CONFIG_TOUCHSCREEN_PENMOUNT=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_TOUCHSCREEN_TOUCHRIGHT=m @@ -4352,7 +4385,6 @@ CONFIG_INPUT_IQS626A=m CONFIG_INPUT_IQS7222=m CONFIG_INPUT_CMA3000=m CONFIG_INPUT_CMA3000_I2C=m -CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m CONFIG_INPUT_IDEAPAD_SLIDEBAR=m CONFIG_INPUT_SOC_BUTTON_ARRAY=m CONFIG_INPUT_DRV260X_HAPTICS=m @@ -4483,13 +4515,11 @@ CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m CONFIG_SYNCLINK_GT=m CONFIG_N_HDLC=m +CONFIG_IPWIRELESS=m CONFIG_N_GSM=m CONFIG_NOZOMI=m CONFIG_NULL_TTY=m CONFIG_HVC_DRIVER=y -CONFIG_HVC_IRQ=y -CONFIG_HVC_XEN=y -CONFIG_HVC_XEN_FRONTEND=y CONFIG_RPMSG_TTY=m CONFIG_SERIAL_DEV_BUS=y CONFIG_SERIAL_DEV_CTRL_TTYPORT=y @@ -4519,17 +4549,6 @@ CONFIG_HW_RANDOM_VIA=m CONFIG_HW_RANDOM_VIRTIO=m CONFIG_HW_RANDOM_XIPHERA=m CONFIG_APPLICOM=m - -# -# PCMCIA character devices -# -CONFIG_SYNCLINK_CS=m -CONFIG_CARDMAN_4000=m -CONFIG_CARDMAN_4040=m -CONFIG_SCR24X=m -CONFIG_IPWIRELESS=m -# end of PCMCIA character devices - CONFIG_MWAVE=m CONFIG_DEVMEM=y CONFIG_NVRAM=y @@ -4550,7 +4569,6 @@ CONFIG_TCG_TIS_I2C_NUVOTON=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m -CONFIG_TCG_XEN=m CONFIG_TCG_CRB=y CONFIG_TCG_VTPM_PROXY=m CONFIG_TCG_TIS_ST33ZP24=m @@ -4630,7 +4648,6 @@ CONFIG_I2C_CBUS_GPIO=y CONFIG_I2C_DESIGNWARE_CORE=y CONFIG_I2C_DESIGNWARE_SLAVE=y CONFIG_I2C_DESIGNWARE_PLATFORM=y -CONFIG_I2C_DESIGNWARE_AMDPSP=y CONFIG_I2C_DESIGNWARE_BAYTRAIL=y CONFIG_I2C_DESIGNWARE_PCI=y CONFIG_I2C_EMEV2=m @@ -4693,7 +4710,6 @@ CONFIG_SPI_DW_DMA=y CONFIG_SPI_DW_PCI=m CONFIG_SPI_DW_MMIO=m CONFIG_SPI_DLN2=m -CONFIG_SPI_NXP_FLEXSPI=m CONFIG_SPI_GPIO=m CONFIG_SPI_INTEL=m CONFIG_SPI_INTEL_PCI=m @@ -4706,7 +4722,6 @@ CONFIG_SPI_OC_TINY=m CONFIG_SPI_PCI1XXXX=m CONFIG_SPI_PXA2XX=m CONFIG_SPI_PXA2XX_PCI=m -# CONFIG_SPI_ROCKCHIP is not set CONFIG_SPI_SC18IS602=m CONFIG_SPI_SIFIVE=m CONFIG_SPI_MXIC=m @@ -4765,11 +4780,11 @@ CONFIG_PTP_1588_CLOCK=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_DP83640_PHY=m CONFIG_PTP_1588_CLOCK_INES=m -CONFIG_PTP_1588_CLOCK_KVM=y CONFIG_PTP_1588_CLOCK_IDT82P33=m CONFIG_PTP_1588_CLOCK_IDTCM=m CONFIG_PTP_1588_CLOCK_VMW=m CONFIG_PTP_1588_CLOCK_OCP=m +# CONFIG_PTP_DFL_TOD is not set # end of PTP clock support CONFIG_PINCTRL=y @@ -4843,13 +4858,13 @@ CONFIG_GPIO_ICH=m CONFIG_GPIO_MB86S7X=m CONFIG_GPIO_MENZ127=m CONFIG_GPIO_SIOX=m -CONFIG_GPIO_VX855=m CONFIG_GPIO_AMD_FCH=m # end of Memory mapped GPIO drivers # # Port-mapped I/O GPIO drivers # +CONFIG_GPIO_VX855=m CONFIG_GPIO_F7188X=m CONFIG_GPIO_IT87=m CONFIG_GPIO_SCH=m @@ -4861,6 +4876,7 @@ CONFIG_GPIO_WS16C48=m # # I2C GPIO expanders # +# CONFIG_GPIO_FXL6408 is not set CONFIG_GPIO_MAX7300=m CONFIG_GPIO_MAX732X=m CONFIG_GPIO_PCA953X=m @@ -4880,6 +4896,7 @@ CONFIG_GPIO_CRYSTAL_COVE=m CONFIG_GPIO_DA9052=m CONFIG_GPIO_DA9055=m CONFIG_GPIO_DLN2=m +# CONFIG_GPIO_ELKHARTLAKE is not set CONFIG_GPIO_JANZ_TTL=m CONFIG_GPIO_KEMPLD=m CONFIG_GPIO_LP3943=m @@ -5050,6 +5067,7 @@ CONFIG_CHARGER_TPS65090=m CONFIG_BATTERY_GAUGE_LTC2941=m CONFIG_BATTERY_GOLDFISH=m CONFIG_BATTERY_RT5033=m +# CONFIG_CHARGER_RT5033 is not set CONFIG_CHARGER_RT9455=m CONFIG_CHARGER_RT9467=m CONFIG_CHARGER_RT9471=m @@ -5148,6 +5166,7 @@ CONFIG_SENSORS_MAX197=m CONFIG_SENSORS_MAX31722=m CONFIG_SENSORS_MAX31730=m CONFIG_SENSORS_MAX31760=m +# CONFIG_MAX31827 is not set CONFIG_SENSORS_MAX6620=m CONFIG_SENSORS_MAX6621=m CONFIG_SENSORS_MAX6639=m @@ -5196,6 +5215,7 @@ CONFIG_SENSORS_OXP=m CONFIG_SENSORS_PCF8591=m CONFIG_PMBUS=m CONFIG_SENSORS_PMBUS=m +# CONFIG_SENSORS_ACBEL_FSG032 is not set CONFIG_SENSORS_ADM1266=m CONFIG_SENSORS_ADM1275=m CONFIG_SENSORS_BEL_PFE=m @@ -5314,6 +5334,7 @@ CONFIG_SENSORS_ACPI_POWER=m CONFIG_SENSORS_ATK0110=m CONFIG_SENSORS_ASUS_WMI=m CONFIG_SENSORS_ASUS_EC=m +# CONFIG_SENSORS_HP_WMI is not set CONFIG_THERMAL=y CONFIG_THERMAL_NETLINK=y CONFIG_THERMAL_STATISTICS=y @@ -5325,6 +5346,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set CONFIG_THERMAL_GOV_FAIR_SHARE=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_BANG_BANG=y @@ -5355,7 +5377,6 @@ CONFIG_PROC_THERMAL_MMIO_RAPL=m CONFIG_INTEL_BXT_PMIC_THERMAL=m CONFIG_INTEL_PCH_THERMAL=m CONFIG_INTEL_TCC_COOLING=m -CONFIG_INTEL_MENLOW=m CONFIG_INTEL_HFI_THERMAL=y # end of Intel thermal drivers @@ -5443,7 +5464,6 @@ CONFIG_NI903X_WDT=m CONFIG_NIC7018_WDT=m CONFIG_SIEMENS_SIMATIC_IPC_WDT=m CONFIG_MEN_A21_WDT=m -CONFIG_XEN_WDT=m # # PCI-based Watchdog Cards @@ -5531,6 +5551,7 @@ CONFIG_MFD_88PM800=m CONFIG_MFD_88PM805=m CONFIG_MFD_88PM860X=y CONFIG_MFD_MAX14577=m +# CONFIG_MFD_MAX77541 is not set CONFIG_MFD_MAX77693=m CONFIG_MFD_MAX77843=y CONFIG_MFD_MAX8907=m @@ -5576,6 +5597,8 @@ CONFIG_MFD_TPS65910=y CONFIG_MFD_TPS65912=m CONFIG_MFD_TPS65912_I2C=m CONFIG_MFD_TPS65912_SPI=m +# CONFIG_MFD_TPS6594_I2C is not set +# CONFIG_MFD_TPS6594_SPI is not set CONFIG_TWL4030_CORE=y CONFIG_MFD_TWL4030_AUDIO=y CONFIG_TWL6040_CORE=y @@ -5682,12 +5705,15 @@ CONFIG_REGULATOR_PV88090=m CONFIG_REGULATOR_PWM=m # CONFIG_REGULATOR_QCOM_SPMI is not set # CONFIG_REGULATOR_QCOM_USB_VBUS is not set +# CONFIG_REGULATOR_RAA215300 is not set CONFIG_REGULATOR_RC5T583=m CONFIG_REGULATOR_RT4801=m +# CONFIG_REGULATOR_RT4803 is not set CONFIG_REGULATOR_RT4831=m CONFIG_REGULATOR_RT5033=m CONFIG_REGULATOR_RT5120=m CONFIG_REGULATOR_RT5190A=m +# CONFIG_REGULATOR_RT5739 is not set CONFIG_REGULATOR_RT5759=m CONFIG_REGULATOR_RT6160=m CONFIG_REGULATOR_RT6190=m @@ -5753,7 +5779,7 @@ CONFIG_IR_WINBOND_CIR=m CONFIG_RC_ATI_REMOTE=m CONFIG_RC_LOOPBACK=m CONFIG_RC_XBOX_DVD=m -CONFIG_CEC_CORE=m +CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y CONFIG_CEC_PIN=y @@ -5806,7 +5832,6 @@ CONFIG_V4L2_FWNODE=m CONFIG_V4L2_ASYNC=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m -CONFIG_VIDEOBUF_VMALLOC=m # end of Video4Linux options # @@ -5913,7 +5938,6 @@ CONFIG_VIDEO_PVRUSB2=m CONFIG_VIDEO_PVRUSB2_SYSFS=y CONFIG_VIDEO_PVRUSB2_DVB=y # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set -CONFIG_VIDEO_STK1160_COMMON=m CONFIG_VIDEO_STK1160=m # @@ -6062,6 +6086,7 @@ CONFIG_DVB_BUDGET_CORE=m CONFIG_DVB_BUDGET=m CONFIG_DVB_BUDGET_CI=m CONFIG_DVB_BUDGET_AV=m +CONFIG_IPU_BRIDGE=m CONFIG_VIDEO_IPU3_CIO2=m CONFIG_CIO2_BRIDGE=y CONFIG_RADIO_ADAPTERS=m @@ -6245,10 +6270,7 @@ CONFIG_MEDIA_ATTACH=y # IR I2C driver auto-selected by 'Autoselect ancillary drivers' # CONFIG_VIDEO_IR_I2C=m - -# -# Camera sensor devices -# +CONFIG_VIDEO_CAMERA_SENSOR=y CONFIG_VIDEO_APTINA_PLL=m CONFIG_VIDEO_CCS_PLL=m CONFIG_VIDEO_AR0521=m @@ -6266,16 +6288,14 @@ CONFIG_VIDEO_IMX319=m CONFIG_VIDEO_IMX355=m CONFIG_VIDEO_MAX9271_LIB=m CONFIG_VIDEO_MT9M001=m -CONFIG_VIDEO_MT9M032=m CONFIG_VIDEO_MT9M111=m CONFIG_VIDEO_MT9P031=m -CONFIG_VIDEO_MT9T001=m CONFIG_VIDEO_MT9T112=m CONFIG_VIDEO_MT9V011=m CONFIG_VIDEO_MT9V032=m CONFIG_VIDEO_MT9V111=m -CONFIG_VIDEO_NOON010PC30=m CONFIG_VIDEO_OG01A1B=m +# CONFIG_VIDEO_OV01A10 is not set CONFIG_VIDEO_OV02A10=m CONFIG_VIDEO_OV08D10=m CONFIG_VIDEO_OV08X40=m @@ -6311,13 +6331,8 @@ CONFIG_VIDEO_RJ54N1=m CONFIG_VIDEO_S5C73M3=m CONFIG_VIDEO_S5K5BAF=m CONFIG_VIDEO_S5K6A3=m -CONFIG_VIDEO_S5K6AA=m -CONFIG_VIDEO_SR030PC30=m -CONFIG_VIDEO_VS6624=m CONFIG_VIDEO_CCS=m CONFIG_VIDEO_ET8EK8=m -CONFIG_VIDEO_M5MOLS=m -# end of Camera sensor devices # # Lens drivers @@ -6399,7 +6414,6 @@ CONFIG_VIDEO_CX25840=m # # Video encoders # -# CONFIG_VIDEO_AD9389B is not set # CONFIG_VIDEO_ADV7170 is not set # CONFIG_VIDEO_ADV7175 is not set # CONFIG_VIDEO_ADV7343 is not set @@ -6665,16 +6679,17 @@ CONFIG_DVB_DUMMY_FE=m # Graphics support # CONFIG_APERTURE_HELPERS=y +CONFIG_VIDEO_CMDLINE=y CONFIG_VIDEO_NOMODESET=y CONFIG_AGP=y CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=y CONFIG_AGP_SIS=y CONFIG_AGP_VIA=y -CONFIG_INTEL_GTT=m +CONFIG_INTEL_GTT=y CONFIG_VGA_SWITCHEROO=y CONFIG_DRM=y -CONFIG_DRM_MIPI_DBI=y +CONFIG_DRM_MIPI_DBI=m CONFIG_DRM_MIPI_DSI=y # CONFIG_DRM_DEBUG_MM is not set CONFIG_DRM_KMS_HELPER=y @@ -6684,19 +6699,20 @@ CONFIG_DRM_FBDEV_EMULATION=y CONFIG_DRM_FBDEV_OVERALLOC=200 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set CONFIG_DRM_LOAD_EDID_FIRMWARE=y -CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_DISPLAY_HELPER=y CONFIG_DRM_DISPLAY_DP_HELPER=y CONFIG_DRM_DISPLAY_HDCP_HELPER=y CONFIG_DRM_DISPLAY_HDMI_HELPER=y CONFIG_DRM_DP_AUX_CHARDEV=y CONFIG_DRM_DP_CEC=y -CONFIG_DRM_TTM=m -CONFIG_DRM_BUDDY=m +CONFIG_DRM_TTM=y +CONFIG_DRM_BUDDY=y CONFIG_DRM_VRAM_HELPER=m -CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_TTM_HELPER=y CONFIG_DRM_GEM_DMA_HELPER=m CONFIG_DRM_GEM_SHMEM_HELPER=y -CONFIG_DRM_SCHED=m +CONFIG_DRM_SUBALLOC_HELPER=y +CONFIG_DRM_SCHED=y # # I2C encoder or helper chips @@ -6718,6 +6734,7 @@ CONFIG_DRM_AMDGPU=y CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y CONFIG_DRM_AMDGPU_USERPTR=y +# CONFIG_DRM_AMDGPU_WERROR is not set # # ACP (Audio CoProcessor) Configuration @@ -6729,8 +6746,7 @@ CONFIG_DRM_AMD_ACP=y # Display Engine Configuration # CONFIG_DRM_AMD_DC=y -CONFIG_DRM_AMD_DC_DCN=y -CONFIG_DRM_AMD_DC_HDCP=y +CONFIG_DRM_AMD_DC_FP=y CONFIG_DRM_AMD_DC_SI=y CONFIG_DRM_AMD_SECURE_DISPLAY=y # end of Display Engine Configuration @@ -6749,7 +6765,6 @@ CONFIG_DRM_I915_FORCE_PROBE="*" CONFIG_DRM_I915_CAPTURE_ERROR=y CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y -CONFIG_DRM_I915_GVT_KVMGT=m CONFIG_DRM_I915_PXP=y # @@ -6781,7 +6796,6 @@ CONFIG_DRM_I915_STOP_TIMEOUT=100 CONFIG_DRM_I915_TIMESLICE_DURATION=1 # end of drm/i915 Profile Guided Optimisation -CONFIG_DRM_I915_GVT=y CONFIG_DRM_VGEM=m CONFIG_DRM_VKMS=m CONFIG_DRM_VMWGFX=m @@ -6792,6 +6806,7 @@ CONFIG_DRM_AST=m CONFIG_DRM_MGAG200=m CONFIG_DRM_QXL=m CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VIRTIO_GPU_KMS=y CONFIG_DRM_PANEL=y # @@ -6828,8 +6843,6 @@ CONFIG_TINYDRM_MI0283QT=m CONFIG_TINYDRM_REPAPER=m CONFIG_TINYDRM_ST7586=m CONFIG_TINYDRM_ST7735R=m -CONFIG_DRM_XEN=y -CONFIG_DRM_XEN_FRONTEND=m CONFIG_DRM_VBOXVIDEO=m CONFIG_DRM_GUD=m CONFIG_DRM_SSD130X=m @@ -6843,7 +6856,6 @@ CONFIG_DRM_PRIVACY_SCREEN=y # # Frame buffer Devices # -CONFIG_FB_CMDLINE=y CONFIG_FB_NOTIFY=y CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set @@ -6857,6 +6869,9 @@ CONFIG_FB_SYS_IMAGEBLIT=y # CONFIG_FB_FOREIGN_ENDIAN is not set CONFIG_FB_SYS_FOPS=y CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_IO_HELPERS=y +CONFIG_FB_SYS_HELPERS=y +CONFIG_FB_SYS_HELPERS_DEFERRED=y CONFIG_FB_BACKLIGHT=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y @@ -6882,7 +6897,6 @@ CONFIG_FB_EFI=y # CONFIG_FB_RIVA is not set # CONFIG_FB_I740 is not set # CONFIG_FB_LE80578 is not set -# CONFIG_FB_INTEL is not set # CONFIG_FB_MATROX is not set CONFIG_FB_RADEON=y CONFIG_FB_RADEON_I2C=y @@ -6908,7 +6922,6 @@ CONFIG_FB_RADEON_BACKLIGHT=y CONFIG_FB_UDL=y # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set -CONFIG_XEN_FBDEV_FRONTEND=m # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set # CONFIG_FB_HYPERV is not set @@ -6989,6 +7002,7 @@ CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_DRM_ACCEL=y CONFIG_DRM_ACCEL_HABANALABS=m CONFIG_DRM_ACCEL_IVPU=m +# CONFIG_DRM_ACCEL_QAIC is not set CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y # CONFIG_SOUND_OSS_CORE_PRECLAIM is not set @@ -7034,6 +7048,7 @@ CONFIG_SND_SEQ_MIDI_EVENT=m CONFIG_SND_SEQ_MIDI=m CONFIG_SND_SEQ_MIDI_EMUL=m CONFIG_SND_SEQ_VIRMIDI=m +# CONFIG_SND_SEQ_UMP is not set CONFIG_SND_MPU401_UART=m CONFIG_SND_OPL3_LIB=m CONFIG_SND_OPL3_LIB_SEQ=m @@ -7042,6 +7057,7 @@ CONFIG_SND_AC97_CODEC=m CONFIG_SND_DRIVERS=y CONFIG_SND_DUMMY=m CONFIG_SND_ALOOP=m +# CONFIG_SND_PCMTEST is not set CONFIG_SND_VIRMIDI=m CONFIG_SND_MTPAV=m CONFIG_SND_MTS64=m @@ -7172,6 +7188,7 @@ CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m CONFIG_SND_SPI=y CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m +# CONFIG_SND_USB_AUDIO_MIDI_V2 is not set CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y CONFIG_SND_USB_UA101=m CONFIG_SND_USB_USX2Y=m @@ -7259,6 +7276,7 @@ CONFIG_SND_SOC_FSL_RPMSG=m # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs +# CONFIG_SND_SOC_CHV3_I2S is not set CONFIG_SND_I2S_HI6210_I2S=m CONFIG_SND_SOC_IMG=y CONFIG_SND_SOC_IMG_I2S_IN=m @@ -7403,6 +7421,7 @@ CONFIG_SND_SOC_SOF_ALDERLAKE=m CONFIG_SND_SOC_SOF_INTEL_MTL=m CONFIG_SND_SOC_SOF_METEORLAKE=m CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_MLINK=m CONFIG_SND_SOC_SOF_HDA_LINK=y CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m @@ -7457,6 +7476,7 @@ CONFIG_SND_SOC_AW88395_LIB=m CONFIG_SND_SOC_AW88395=m CONFIG_SND_SOC_BD28623=m # CONFIG_SND_SOC_BT_SCO is not set +# CONFIG_SND_SOC_CHV3_CODEC is not set CONFIG_SND_SOC_CROS_EC_CODEC=m CONFIG_SND_SOC_CS35L32=m CONFIG_SND_SOC_CS35L33=m @@ -7470,6 +7490,9 @@ CONFIG_SND_SOC_CS35L41_I2C=m CONFIG_SND_SOC_CS35L45=m CONFIG_SND_SOC_CS35L45_SPI=m CONFIG_SND_SOC_CS35L45_I2C=m +# CONFIG_SND_SOC_CS35L56_I2C is not set +# CONFIG_SND_SOC_CS35L56_SPI is not set +# CONFIG_SND_SOC_CS35L56_SDW is not set CONFIG_SND_SOC_CS42L42_CORE=m CONFIG_SND_SOC_CS42L42=m CONFIG_SND_SOC_CS42L42_SDW=m @@ -7517,9 +7540,11 @@ CONFIG_SND_SOC_MAX98504=m CONFIG_SND_SOC_MAX9867=m CONFIG_SND_SOC_MAX98927=m CONFIG_SND_SOC_MAX98520=m +CONFIG_SND_SOC_MAX98363=m CONFIG_SND_SOC_MAX98373=m CONFIG_SND_SOC_MAX98373_I2C=m CONFIG_SND_SOC_MAX98373_SDW=m +# CONFIG_SND_SOC_MAX98388 is not set CONFIG_SND_SOC_MAX98390=m CONFIG_SND_SOC_MAX98396=m CONFIG_SND_SOC_MAX9860=m @@ -7582,6 +7607,8 @@ CONFIG_SND_SOC_RT711=m CONFIG_SND_SOC_RT711_SDW=m CONFIG_SND_SOC_RT711_SDCA_SDW=m CONFIG_SND_SOC_RT712_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m +# CONFIG_SND_SOC_RT722_SDCA_SDW is not set CONFIG_SND_SOC_RT715=m CONFIG_SND_SOC_RT715_SDW=m CONFIG_SND_SOC_RT715_SDCA_SDW=m @@ -7612,6 +7639,7 @@ CONFIG_SND_SOC_TAS2562=m CONFIG_SND_SOC_TAS2764=m CONFIG_SND_SOC_TAS2770=m CONFIG_SND_SOC_TAS2780=m +# CONFIG_SND_SOC_TAS2781_I2C is not set CONFIG_SND_SOC_TAS5086=m CONFIG_SND_SOC_TAS571X=m CONFIG_SND_SOC_TAS5720=m @@ -7672,6 +7700,7 @@ CONFIG_SND_SOC_WM8978=m CONFIG_SND_SOC_WM8985=m CONFIG_SND_SOC_WSA881X=m CONFIG_SND_SOC_WSA883X=m +# CONFIG_SND_SOC_WSA884X is not set CONFIG_SND_SOC_ZL38060=m CONFIG_SND_SOC_MAX9759=m CONFIG_SND_SOC_MT6351=m @@ -7697,7 +7726,6 @@ CONFIG_SND_SIMPLE_CARD=m CONFIG_SND_X86=y CONFIG_HDMI_LPE_AUDIO=m CONFIG_SND_SYNTH_EMUX=m -CONFIG_SND_XEN_FRONTEND=m CONFIG_SND_VIRTIO=m CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y @@ -7785,6 +7813,7 @@ CONFIG_HID_NINTENDO=m CONFIG_NINTENDO_FF=y CONFIG_HID_NTI=m CONFIG_HID_NTRIG=m +# CONFIG_HID_NVIDIA_SHIELD is not set CONFIG_HID_ORTEK=m CONFIG_HID_PANTHERLORD=m CONFIG_PANTHERLORD_FF=y @@ -7857,6 +7886,7 @@ CONFIG_USB_HIDDEV=y CONFIG_I2C_HID=y CONFIG_I2C_HID_ACPI=m +# CONFIG_I2C_HID_OF is not set CONFIG_I2C_HID_CORE=m # @@ -7927,7 +7957,6 @@ CONFIG_USB_OHCI_HCD_PCI=y # CONFIG_USB_OHCI_HCD_SSB is not set CONFIG_USB_OHCI_HCD_PLATFORM=m CONFIG_USB_UHCI_HCD=y -CONFIG_USB_U132_HCD=m CONFIG_USB_SL811_HCD=m # CONFIG_USB_SL811_HCD_ISO is not set CONFIG_USB_SL811_CS=m @@ -7935,7 +7964,6 @@ CONFIG_USB_R8A66597_HCD=m CONFIG_USB_HCD_BCMA=m CONFIG_USB_HCD_SSB=m # CONFIG_USB_HCD_TEST_MODE is not set -CONFIG_USB_XEN_HCD=m # # USB Device Class drivers @@ -8046,7 +8074,6 @@ CONFIG_USB_ISP1760_DUAL_ROLE=y # # USB port drivers # -CONFIG_USB_USS720=m CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y CONFIG_USB_SERIAL_SIMPLE=m @@ -8107,6 +8134,7 @@ CONFIG_USB_SERIAL_DEBUG=m # # USB Miscellaneous drivers # +CONFIG_USB_USS720=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m CONFIG_USB_ADUTUX=m @@ -8116,7 +8144,6 @@ CONFIG_USB_LCD=m CONFIG_USB_CYPRESS_CY7C63=m CONFIG_USB_CYTHERM=m CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m CONFIG_USB_APPLEDISPLAY=m CONFIG_APPLE_MFI_FASTCHARGE=m CONFIG_USB_SISUSBVGA=m @@ -8176,6 +8203,7 @@ CONFIG_USB_NET2280=m CONFIG_USB_GOKU=m CONFIG_USB_EG20T=m CONFIG_USB_MAX3420_UDC=m +# CONFIG_USB_CDNS2_UDC is not set CONFIG_USB_DUMMY_HCD=m # end of USB Peripheral Controller @@ -8286,6 +8314,7 @@ CONFIG_TYPEC_MUX_FSA4480=m CONFIG_TYPEC_MUX_GPIO_SBU=m CONFIG_TYPEC_MUX_PI3USB30532=m CONFIG_TYPEC_MUX_INTEL_PMC=m +# CONFIG_TYPEC_MUX_NB7VPQ904M is not set # end of USB Type-C Multiplexer/DeMultiplexer Switch support # @@ -8370,6 +8399,8 @@ CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y # CONFIG_LEDS_88PM860X=m CONFIG_LEDS_APU=m +# CONFIG_LEDS_AW200XX is not set +# CONFIG_LEDS_CHT_WCOVE is not set CONFIG_LEDS_LM3530=m CONFIG_LEDS_LM3532=m CONFIG_LEDS_LM3533=m @@ -8392,6 +8423,7 @@ CONFIG_LEDS_DA9052=m CONFIG_LEDS_DAC124S085=m CONFIG_LEDS_PWM=m CONFIG_LEDS_REGULATOR=m +# CONFIG_LEDS_BD2606MVV is not set CONFIG_LEDS_BD2802=m CONFIG_LEDS_INTEL_SS4200=m CONFIG_LEDS_LT3593=m @@ -8421,6 +8453,7 @@ CONFIG_LEDS_TPS6105X=m # CONFIG_LEDS_AS3645A=m CONFIG_LEDS_LM3601X=m +# CONFIG_LEDS_MT6370_FLASH is not set CONFIG_LEDS_RT8515=m CONFIG_LEDS_SGM3140=m @@ -8428,6 +8461,7 @@ CONFIG_LEDS_SGM3140=m # RGB LED drivers # CONFIG_LEDS_PWM_MULTICOLOR=m +# CONFIG_LEDS_MT6370_RGB is not set # # LED Triggers @@ -8441,7 +8475,6 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=m CONFIG_LEDS_TRIGGER_BACKLIGHT=m CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_ACTIVITY=m -CONFIG_LEDS_TRIGGER_GPIO=m CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # @@ -8459,6 +8492,8 @@ CONFIG_LEDS_TRIGGER_TTY=m # Simple LED drivers # CONFIG_LEDS_SIEMENS_SIMATIC_IPC=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_APOLLOLAKE=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_F7188X=m CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y @@ -8755,6 +8790,10 @@ CONFIG_VFIO_CONTAINER=y CONFIG_VFIO_IOMMU_TYPE1=m # CONFIG_VFIO_NOIOMMU is not set CONFIG_VFIO_VIRQFD=y + +# +# VFIO support for PCI devices +# CONFIG_VFIO_PCI_CORE=m CONFIG_VFIO_PCI_MMAP=y CONFIG_VFIO_PCI_INTX=y @@ -8762,7 +8801,8 @@ CONFIG_VFIO_PCI=m CONFIG_VFIO_PCI_VGA=y CONFIG_VFIO_PCI_IGD=y CONFIG_MLX5_VFIO_PCI=m -CONFIG_VFIO_MDEV=m +# end of VFIO support for PCI devices + CONFIG_IRQ_BYPASS_MANAGER=m CONFIG_VIRT_DRIVERS=y CONFIG_VMGENID=y @@ -8801,6 +8841,7 @@ CONFIG_ALIBABA_ENI_VDPA=m CONFIG_SNET_VDPA=m CONFIG_VHOST_IOTLB=m CONFIG_VHOST_RING=m +CONFIG_VHOST_TASK=y CONFIG_VHOST=m CONFIG_VHOST_MENU=y CONFIG_VHOST_NET=m @@ -8813,50 +8854,12 @@ CONFIG_VHOST_VDPA=m # Microsoft Hyper-V guest support # CONFIG_HYPERV=m +# CONFIG_HYPERV_VTL_MODE is not set CONFIG_HYPERV_TIMER=y CONFIG_HYPERV_UTILS=m CONFIG_HYPERV_BALLOON=m # end of Microsoft Hyper-V guest support -# -# Xen driver support -# -CONFIG_XEN_BALLOON=y -CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y -CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512 -CONFIG_XEN_SCRUB_PAGES_DEFAULT=y -CONFIG_XEN_DEV_EVTCHN=m -CONFIG_XEN_BACKEND=y -CONFIG_XENFS=m -CONFIG_XEN_COMPAT_XENFS=y -CONFIG_XEN_SYS_HYPERVISOR=y -CONFIG_XEN_XENBUS_FRONTEND=y -CONFIG_XEN_GNTDEV=m -CONFIG_XEN_GNTDEV_DMABUF=y -CONFIG_XEN_GRANT_DEV_ALLOC=m -CONFIG_XEN_GRANT_DMA_ALLOC=y -CONFIG_SWIOTLB_XEN=y -CONFIG_XEN_PCI_STUB=y -CONFIG_XEN_PCIDEV_BACKEND=m -CONFIG_XEN_PVCALLS_FRONTEND=m -CONFIG_XEN_PVCALLS_BACKEND=y -CONFIG_XEN_SCSI_BACKEND=m -CONFIG_XEN_PRIVCMD=m -CONFIG_XEN_ACPI_PROCESSOR=m -CONFIG_XEN_MCE_LOG=y -CONFIG_XEN_HAVE_PVMMU=y -CONFIG_XEN_EFI=y -CONFIG_XEN_AUTO_XLATE=y -CONFIG_XEN_ACPI=y -CONFIG_XEN_SYMS=y -CONFIG_XEN_HAVE_VPMU=y -CONFIG_XEN_FRONT_PGDIR_SHBUF=m -CONFIG_XEN_UNPOPULATED_ALLOC=y -CONFIG_XEN_GRANT_DMA_OPS=y -CONFIG_XEN_VIRTIO=y -# CONFIG_XEN_VIRTIO_FORCE_GRANT is not set -# end of Xen driver support - # CONFIG_GREYBUS is not set # CONFIG_COMEDI is not set CONFIG_STAGING=y @@ -8911,14 +8914,6 @@ CONFIG_AD9834=m CONFIG_AD5933=m # end of Network Analyzer, Impedance Converters -# -# Active energy metering IC -# -CONFIG_ADE7854=m -CONFIG_ADE7854_I2C=m -CONFIG_ADE7854_SPI=m -# end of Active energy metering IC - # # Resolver to digital converters # @@ -9000,16 +8995,16 @@ CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACPI_WMI=y CONFIG_WMI_BMOF=y CONFIG_HUAWEI_WMI=m -CONFIG_MXM_WMI=m -CONFIG_PEAQ_WMI=m +CONFIG_MXM_WMI=y CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m CONFIG_XIAOMI_WMI=m CONFIG_GIGABYTE_WMI=m -CONFIG_YOGABOOK_WMI=m +# CONFIG_YOGABOOK is not set CONFIG_ACERHDF=m CONFIG_ACER_WIRELESS=m CONFIG_ACER_WMI=m CONFIG_AMD_PMF=y +# CONFIG_AMD_PMF_DEBUG is not set CONFIG_AMD_PMC=y CONFIG_AMD_HSMP=y CONFIG_ADV_SWBUTTON=m @@ -9049,6 +9044,7 @@ CONFIG_HP_WMI=m CONFIG_WIRELESS_HOTKEY=m CONFIG_IBM_RTL=m CONFIG_IDEAPAD_LAPTOP=m +# CONFIG_LENOVO_YMC is not set CONFIG_SENSORS_HDAPS=m CONFIG_THINKPAD_ACPI=m CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y @@ -9072,6 +9068,7 @@ CONFIG_INTEL_PMT_CRASHLOG=m # # Intel Speed Select Technology interface support # +CONFIG_INTEL_SPEED_SELECT_TPMI=m CONFIG_INTEL_SPEED_SELECT_INTERFACE=m # end of Intel Speed Select Technology interface support @@ -9083,6 +9080,7 @@ CONFIG_INTEL_WMI_THUNDERBOLT=m # # Intel Uncore Frequency Control # +CONFIG_INTEL_UNCORE_FREQ_CONTROL_TPMI=m CONFIG_INTEL_UNCORE_FREQ_CONTROL=m # end of Intel Uncore Frequency Control @@ -9091,6 +9089,7 @@ CONFIG_INTEL_VBTN=m CONFIG_INTEL_INT0002_VGPIO=m CONFIG_INTEL_OAKTRAIL=m CONFIG_INTEL_BXTWC_PMIC_TMU=m +# CONFIG_INTEL_BYTCRC_PWRSRC is not set CONFIG_INTEL_CHTDC_TI_PWRBTN=m CONFIG_INTEL_CHTWC_INT33FE=m CONFIG_INTEL_ISHTP_ECLITE=m @@ -9102,6 +9101,7 @@ CONFIG_INTEL_SMARTCONNECT=m CONFIG_INTEL_TPMI=m CONFIG_INTEL_TURBO_MAX_3=y CONFIG_INTEL_VSEC=m +# CONFIG_MSI_EC is not set CONFIG_MSI_LAPTOP=m CONFIG_MSI_WMI=m CONFIG_PCENGINES_APU2=m @@ -9164,7 +9164,6 @@ CONFIG_MAILBOX=y CONFIG_PCC=y CONFIG_ALTERA_MBOX=m CONFIG_IOMMU_IOVA=y -CONFIG_IOASID=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y @@ -9218,6 +9217,7 @@ CONFIG_SOUNDWIRE=m # # SoundWire Devices # +# CONFIG_SOUNDWIRE_AMD is not set CONFIG_SOUNDWIRE_CADENCE=m CONFIG_SOUNDWIRE_INTEL=m CONFIG_SOUNDWIRE_QCOM=m @@ -9465,6 +9465,7 @@ CONFIG_TI_ADC128S052=m CONFIG_TI_ADC161S626=m CONFIG_TI_ADS1015=m CONFIG_TI_ADS7924=m +# CONFIG_TI_ADS1100 is not set CONFIG_TI_ADS7950=m CONFIG_TI_ADS8344=m CONFIG_TI_ADS8688=m @@ -9759,6 +9760,8 @@ CONFIG_ISL29125=m CONFIG_HID_SENSOR_ALS=m CONFIG_HID_SENSOR_PROX=m CONFIG_JSA1212=m +# CONFIG_ROHM_BU27008 is not set +# CONFIG_ROHM_BU27034 is not set CONFIG_RPR0521=m CONFIG_SENSORS_LM3533=m CONFIG_LTR501=m @@ -9768,6 +9771,7 @@ CONFIG_MAX44000=m CONFIG_MAX44009=m CONFIG_NOA1305=m CONFIG_OPT3001=m +# CONFIG_OPT4001 is not set CONFIG_PA12203001=m CONFIG_SI1133=m CONFIG_SI1145=m @@ -9859,6 +9863,7 @@ CONFIG_MCP4131=m CONFIG_MCP4531=m CONFIG_MCP41010=m CONFIG_TPL0102=m +# CONFIG_X9250 is not set # end of Digital potentiometers # @@ -9884,6 +9889,7 @@ CONFIG_MPL115=m CONFIG_MPL115_I2C=m CONFIG_MPL115_SPI=m CONFIG_MPL3115=m +# CONFIG_MPRLS0025PA is not set CONFIG_MS5611=m CONFIG_MS5611_I2C=m CONFIG_MS5611_SPI=m @@ -10018,6 +10024,7 @@ CONFIG_PHY_INTEL_LGM_EMMC=m CONFIG_POWERCAP=y CONFIG_INTEL_RAPL_CORE=m CONFIG_INTEL_RAPL=m +# CONFIG_INTEL_RAPL_TPMI is not set CONFIG_IDLE_INJECT=y CONFIG_MCB=m CONFIG_MCB_PCI=m @@ -10058,6 +10065,14 @@ CONFIG_DEV_DAX_HMEM_DEVICES=y CONFIG_DEV_DAX_KMEM=m CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y + +# +# Layout Types +# +# CONFIG_NVMEM_LAYOUT_SL28_VPD is not set +# CONFIG_NVMEM_LAYOUT_ONIE_TLV is not set +# end of Layout Types + CONFIG_NVMEM_RAVE_SP_EEPROM=m CONFIG_NVMEM_RMEM=m # CONFIG_NVMEM_SPMI_SDAM is not set @@ -10163,9 +10178,11 @@ CONFIG_JFS_SECURITY=y CONFIG_JFS_STATISTICS=y CONFIG_XFS_FS=m CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y +CONFIG_XFS_DRAIN_INTENTS=y CONFIG_XFS_ONLINE_SCRUB=y CONFIG_XFS_ONLINE_REPAIR=y # CONFIG_XFS_WARN is not set @@ -10220,13 +10237,11 @@ CONFIG_FANOTIFY=y CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y -# CONFIG_PRINT_QUOTA_WARNING is not set # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=m CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m CONFIG_QUOTACTL=y -CONFIG_AUTOFS4_FS=y CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m @@ -10300,7 +10315,6 @@ CONFIG_TMPFS_XATTR=y CONFIG_TMPFS_INODE64=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y -CONFIG_ARCH_WANT_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y # CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set CONFIG_MEMFD_CREATE=y @@ -10446,7 +10460,7 @@ CONFIG_SMB_SERVER=m CONFIG_SMB_SERVER_SMBDIRECT=y CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y CONFIG_SMB_SERVER_KERBEROS5=y -CONFIG_SMBFS_COMMON=m +CONFIG_SMBFS=m CONFIG_CODA_FS=m CONFIG_AFS_FS=m # CONFIG_AFS_DEBUG is not set @@ -10508,7 +10522,6 @@ CONFIG_NLS_MAC_ROMANIAN=m CONFIG_NLS_MAC_TURKISH=m CONFIG_NLS_UTF8=y CONFIG_DLM=m -# CONFIG_DLM_DEPRECATED_API is not set CONFIG_DLM_DEBUG=y CONFIG_UNICODE=y # CONFIG_UNICODE_NORMALIZATION_SELFTEST is not set @@ -10536,16 +10549,13 @@ CONFIG_SECURITY_NETWORK_XFRM=y CONFIG_SECURITY_PATH=y # CONFIG_INTEL_TXT is not set CONFIG_LSM_MMAP_MIN_ADDR=65536 -CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y CONFIG_HARDENED_USERCOPY=y CONFIG_FORTIFY_SOURCE=y # CONFIG_STATIC_USERMODEHELPER is not set CONFIG_SECURITY_SELINUX=y CONFIG_SECURITY_SELINUX_BOOTPARAM=y -# CONFIG_SECURITY_SELINUX_DISABLE is not set CONFIG_SECURITY_SELINUX_DEVELOP=y CONFIG_SECURITY_SELINUX_AVC_STATS=y -CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0 CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 CONFIG_SECURITY_SMACK=y @@ -10582,10 +10592,10 @@ CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y CONFIG_INTEGRITY_TRUSTED_KEYRING=y CONFIG_INTEGRITY_PLATFORM_KEYRING=y CONFIG_INTEGRITY_MACHINE_KEYRING=y +# CONFIG_INTEGRITY_CA_MACHINE_KEYRING is not set CONFIG_LOAD_UEFI_KEYS=y CONFIG_INTEGRITY_AUDIT=y # CONFIG_IMA is not set -# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set # CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set # CONFIG_EVM is not set # CONFIG_DEFAULT_SECURITY_SELINUX is not set @@ -10602,13 +10612,7 @@ CONFIG_LSM="yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor" # # Memory initialization # -CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y -CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y -CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y CONFIG_INIT_STACK_NONE=y -# CONFIG_INIT_STACK_ALL_PATTERN is not set -# CONFIG_INIT_STACK_ALL_ZERO is not set -# CONFIG_GCC_PLUGIN_STACKLEAK is not set CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y @@ -10616,8 +10620,6 @@ CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y # end of Memory initialization CONFIG_RANDSTRUCT_NONE=y -# CONFIG_RANDSTRUCT_FULL is not set -# CONFIG_RANDSTRUCT_PERFORMANCE is not set # end of Kernel hardening options # end of Security options @@ -10636,6 +10638,7 @@ CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_SIG2=y CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_HASH=y @@ -10729,6 +10732,7 @@ CONFIG_CRYPTO_AEGIS128=m CONFIG_CRYPTO_CHACHA20POLY1305=m CONFIG_CRYPTO_CCM=y CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GENIV=y CONFIG_CRYPTO_SEQIV=y CONFIG_CRYPTO_ECHAINIV=m CONFIG_CRYPTO_ESSIV=m @@ -10750,7 +10754,7 @@ CONFIG_CRYPTO_RMD160=m CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_SHA3=y CONFIG_CRYPTO_SM3=m CONFIG_CRYPTO_SM3_GENERIC=m CONFIG_CRYPTO_STREEBOG=m @@ -10790,6 +10794,7 @@ CONFIG_CRYPTO_DRBG_HASH=y CONFIG_CRYPTO_DRBG_CTR=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_JITTERENTROPY_TESTINTERFACE is not set CONFIG_CRYPTO_KDF800108_CTR=y # end of Random number generation @@ -10861,6 +10866,8 @@ CONFIG_CRYPTO_DEV_SP_CCP=y CONFIG_CRYPTO_DEV_CCP_CRYPTO=m CONFIG_CRYPTO_DEV_SP_PSP=y CONFIG_CRYPTO_DEV_CCP_DEBUGFS=y +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m CONFIG_CRYPTO_DEV_QAT=m CONFIG_CRYPTO_DEV_QAT_DH895xCC=m CONFIG_CRYPTO_DEV_QAT_C3XXX=m @@ -10869,8 +10876,6 @@ CONFIG_CRYPTO_DEV_QAT_4XXX=m CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m CONFIG_CRYPTO_DEV_QAT_C62XVF=m -CONFIG_CRYPTO_DEV_NITROX=m -CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m CONFIG_CRYPTO_DEV_CHELSIO=m CONFIG_CRYPTO_DEV_VIRTIO=m CONFIG_CRYPTO_DEV_SAFEXCEL=m @@ -11005,9 +11010,11 @@ CONFIG_INTERVAL_TREE_SPAN_ITER=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y +CONFIG_NEED_SG_DMA_FLAGS=y CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y @@ -11167,6 +11174,7 @@ CONFIG_PTDUMP_CORE=y # CONFIG_PTDUMP_DEBUGFS is not set CONFIG_HAVE_DEBUG_KMEMLEAK=y # CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set # CONFIG_DEBUG_OBJECTS is not set CONFIG_SHRINKER_DEBUG=y # CONFIG_DEBUG_STACK_USAGE is not set @@ -11206,14 +11214,20 @@ CONFIG_PANIC_TIMEOUT=0 CONFIG_LOCKUP_DETECTOR=y CONFIG_SOFTLOCKUP_DETECTOR=y # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set -CONFIG_HARDLOCKUP_DETECTOR_PERF=y -CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +# CONFIG_HARDLOCKUP_DETECTOR_BUDDY is not set +# CONFIG_HARDLOCKUP_DETECTOR_ARCH is not set +CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y # CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set # CONFIG_WQ_WATCHDOG is not set +# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set # CONFIG_TEST_LOCKUP is not set # end of Debug Oops, Lockups and Hangs @@ -11292,6 +11306,7 @@ CONFIG_HAVE_RETHOOK=y CONFIG_RETHOOK=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y @@ -11319,6 +11334,7 @@ CONFIG_FTRACE=y CONFIG_BOOTTIME_TRACING=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y +# CONFIG_FUNCTION_GRAPH_RETVAL is not set CONFIG_DYNAMIC_FTRACE=y CONFIG_DYNAMIC_FTRACE_WITH_REGS=y CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y @@ -11339,6 +11355,7 @@ CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_FPROBE_EVENTS=y CONFIG_KPROBE_EVENTS=y # CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set CONFIG_UPROBE_EVENTS=y @@ -11350,6 +11367,7 @@ CONFIG_FTRACE_MCOUNT_RECORD=y CONFIG_FTRACE_MCOUNT_USE_CC=y CONFIG_TRACING_MAP=y CONFIG_SYNTH_EVENTS=y +# CONFIG_USER_EVENTS is not set CONFIG_HIST_TRIGGERS=y # CONFIG_TRACE_EVENT_INJECT is not set # CONFIG_TRACEPOINT_BENCHMARK is not set diff --git a/projects/PC/devices/AMD64/options b/projects/PC/devices/AMD64/options index f8f44c43c..22c1060f3 100644 --- a/projects/PC/devices/AMD64/options +++ b/projects/PC/devices/AMD64/options @@ -1,14 +1,16 @@ case ${TARGET_ARCH} in x86_64) - # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 - # athlon-fx amdfam10 barcelona - # (Intel CPUs) atom core2 nocona - # - TARGET_CPU="x86-64" - ;; + if [ -z "${TARGET_CPU}" ] + then + TARGET_CPU="x86-64-v3" + fi + ;; i686) - TARGET_CPU="i686" - ;; + if [ -z "${TARGET_CPU}" ] + then + TARGET_CPU="i686" + fi + ;; esac # kernel command line diff --git a/projects/PC/options b/projects/PC/options index 88dbf9263..6c6619b9d 100644 --- a/projects/PC/options +++ b/projects/PC/options @@ -2,18 +2,6 @@ # setup system defaults ################################################################################ - # The TARGET_CPU variable controls which processor should be targeted for - # generated code. - case ${TARGET_ARCH} in - x86_64) - # (AMD CPUs) k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 - # athlon-fx amdfam10 barcelona - # (Intel CPUs) atom core2 nocona - # - TARGET_CPU="x86-64" - ;; - esac - # Bootloader to use (syslinux / u-boot) BOOTLOADER="syslinux" diff --git a/projects/Rockchip/bootloader/install b/projects/Rockchip/bootloader/install index 142554ace..439835862 100755 --- a/projects/Rockchip/bootloader/install +++ b/projects/Rockchip/bootloader/install @@ -85,39 +85,11 @@ fi ;; esac - if [ "${BOOT_INI}" == true ] then echo "boot: create boot.ini..." - cat >${INSTALL}/usr/share/bootloader/boot.ini < "${INSTALL}/usr/share/bootloader/extlinux/extlinux.conf" LABEL ${DISTRO} LINUX /${KERNEL_NAME} ${FDTMODE} - APPEND boot=UUID=@BOOT_UUID@ disk=UUID=@DISK_UUID@ ${EXTRA_CMDLINE} + APPEND boot=UUID=@UUID_SYSTEM@ disk=UUID=@UUID_STORAGE@ ${EXTRA_CMDLINE} EOF fi diff --git a/projects/Rockchip/bootloader/mkimage b/projects/Rockchip/bootloader/mkimage index 02af545a4..873d59d83 100755 --- a/projects/Rockchip/bootloader/mkimage +++ b/projects/Rockchip/bootloader/mkimage @@ -49,37 +49,12 @@ esac #Create boot.ini if [ "${BOOT_INI}" == true ] then - echo "image: create boot.ini..." - cat >"${LE_TMP}/boot.ini" </dev/null - sed -e "s/@BOOT_UUID@/$BOOT_UUID/" \ - -e "s/@DISK_UUID@/$DISK_UUID/" \ + sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ + -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ -i $BOOT_ROOT/extlinux/${conf} done if [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.ini ]; then echo "Updating boot.ini..." cp -p $SYSTEM_ROOT/usr/share/bootloader/boot.ini $BOOT_ROOT/boot.ini &>/dev/null - sed -e "s/@BOOT_UUID@/$BOOT_UUID/" \ - -e "s/@DISK_UUID@/$DISK_UUID/" \ + sed -e "s/@UUID_SYSTEM@/${UUID_SYSTEM}/" \ + -e "s/@UUID_STORAGE@/${UUID_STORAGE}/" \ -i $BOOT_ROOT/boot.ini fi diff --git a/projects/Rockchip/devices/RK3326/boot/boot.ini b/projects/Rockchip/devices/RK3326/boot/boot.ini new file mode 100644 index 000000000..678023110 --- /dev/null +++ b/projects/Rockchip/devices/RK3326/boot/boot.ini @@ -0,0 +1,31 @@ +odroidgoa-uboot-config + +setenv bootargs "boot=UUID=@UUID_SYSTEM@ disk=UUID=@UUID_STORAGE@ @EXTRA_CMDLINE@" + +setenv loadaddr "0x02000000" +setenv dtb_loadaddr "0x01f00000" + +load mmc 1:1 ${loadaddr} KERNEL + +if test ${hwrev} = 'v11'; then + if gpio input c22; then + if gpio input d9; then + load mmc 1:1 ${dtb_loadaddr} rk3326-powkiddy-rgb10.dtb + else + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go2-v11.dtb + fi + else + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351m.dtb + fi +elif test ${hwrev} = 'v10-go3'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go3.dtb +elif test ${hwrev} = 'v10'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-odroid-go2.dtb +elif test ${hwrev} = 'rg351v'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351v.dtb +elif test ${hwrev} = 'rg351mp'; then + load mmc 1:1 ${dtb_loadaddr} rk3326-anbernic-rg351mp.dtb +fi + +booti ${loadaddr} - ${dtb_loadaddr} + diff --git a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf index e7a895a4f..0492efde5 100644 --- a/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3326/linux/linux.aarch64.conf @@ -2003,7 +2003,8 @@ CONFIG_WLAN_VENDOR_QUANTENNA=y CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_VIRT_WIFI is not set # CONFIG_WAN is not set - +CONFIG_ESP8089=m +CONFIG_ESP8089_DEBUG_FS=y # # Wireless WAN # diff --git a/projects/Rockchip/devices/RK3326/options b/projects/Rockchip/devices/RK3326/options index 514583930..bdc800a54 100644 --- a/projects/Rockchip/devices/RK3326/options +++ b/projects/Rockchip/devices/RK3326/options @@ -31,7 +31,7 @@ BOOTLOADER="u-boot" TRUST_LABEL="trust" PARTITION_TABLE="msdos" - DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3") + DEVICE_DTB=("rk3326-anbernic-rg351m" "rk3326-anbernic-rg351v" "rk3326-odroid-go2" "rk3326-odroid-go2-v11" "rk3326-odroid-go3" "rk3326-powkiddy-rgb10") UBOOT_DTB="${DEVICE_DTB[0]}" UBOOT_CONFIG="odroidgoa_defconfig" PKG_SOC="px30" @@ -78,13 +78,13 @@ # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware" + FIRMWARE="misc-firmware wlan-firmware esp8089-firmware" # additional drivers to install: # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" - ADDITIONAL_DRIVERS="RTL8812AU RTL8814AU RTL8821AU RTL8821CU RTL88x2BU esp8089" + ADDITIONAL_DRIVERS="RTL8812AU RTL8814AU RTL8821AU RTL8821CU RTL88x2BU" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" diff --git a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf index 12202bad8..9c6baf34d 100644 --- a/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3399/linux/linux.aarch64.conf @@ -1,15 +1,15 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.1.38 Kernel Configuration +# Linux/arm64 6.1.62 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-libreelec-linux-gnueabi-gcc-12.3.0 (GCC) 12.3.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=120300 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y -CONFIG_AS_VERSION=24000 +CONFIG_AS_VERSION=24100 CONFIG_LD_IS_BFD=y -CONFIG_LD_VERSION=24000 +CONFIG_LD_VERSION=24100 CONFIG_LLD_VERSION=0 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y @@ -38,9 +38,9 @@ CONFIG_SYSVIPC_SYSCTL=y CONFIG_SYSVIPC_COMPAT=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y -CONFIG_WATCH_QUEUE=y -# CONFIG_CROSS_MEMORY_ATTACH is not set -CONFIG_USELIB=y +# CONFIG_WATCH_QUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set # CONFIG_AUDIT is not set CONFIG_HAVE_ARCH_AUDITSYSCALL=y @@ -82,7 +82,7 @@ CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set CONFIG_NO_HZ_IDLE=y # CONFIG_NO_HZ_FULL is not set -# CONFIG_NO_HZ is not set +CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y # end of Timers subsystem @@ -99,14 +99,11 @@ CONFIG_BPF_SYSCALL=y # CONFIG_BPF_PRELOAD is not set # end of BPF subsystem -CONFIG_PREEMPT_BUILD=y +CONFIG_PREEMPT_VOLUNTARY_BUILD=y # CONFIG_PREEMPT_NONE is not set -# CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y -CONFIG_PREEMPT_COUNT=y -CONFIG_PREEMPTION=y +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PREEMPT is not set # CONFIG_PREEMPT_DYNAMIC is not set -# CONFIG_SCHED_CORE is not set # # CPU/Task time and stats accounting @@ -127,12 +124,10 @@ CONFIG_CPU_ISOLATION=y # RCU Subsystem # CONFIG_TREE_RCU=y -CONFIG_PREEMPT_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU_GENERIC=y -CONFIG_TASKS_RCU=y CONFIG_TASKS_TRACE_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y @@ -168,11 +163,11 @@ CONFIG_BLK_CGROUP=y CONFIG_CGROUP_WRITEBACK=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_RDMA=y -CONFIG_CGROUP_FREEZER=y +# CONFIG_CGROUP_RDMA is not set +# CONFIG_CGROUP_FREEZER is not set CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_DEVICE=y @@ -214,8 +209,8 @@ CONFIG_INITRAMFS_COMPRESSION_GZIP=y # CONFIG_INITRAMFS_COMPRESSION_NONE is not set # CONFIG_BOOT_CONFIG is not set CONFIG_INITRAMFS_PRESERVE_MTIME=y -# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set -CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_LD_ORPHAN_WARN=y CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y @@ -223,7 +218,7 @@ CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y -CONFIG_SGETMASK_SYSCALL=y +# CONFIG_SGETMASK_SYSCALL is not set CONFIG_SYSFS_SYSCALL=y CONFIG_FHANDLE=y CONFIG_POSIX_TIMERS=y @@ -243,7 +238,7 @@ CONFIG_IO_URING=y CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y -CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_ALL is not set CONFIG_KALLSYMS_BASE_RELATIVE=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y @@ -275,6 +270,7 @@ CONFIG_ARCH_MMAP_RND_BITS_MIN=18 CONFIG_ARCH_MMAP_RND_BITS_MAX=33 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_NO_IOPORT_MAP=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 CONFIG_LOCKDEP_SUPPORT=y @@ -337,33 +333,35 @@ CONFIG_ARCH_ROCKCHIP=y # # ARM errata workarounds via the alternatives framework # -# CONFIG_ARM64_ERRATUM_826319 is not set -# CONFIG_ARM64_ERRATUM_827319 is not set -# CONFIG_ARM64_ERRATUM_824069 is not set -# CONFIG_ARM64_ERRATUM_819472 is not set +CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y # CONFIG_ARM64_ERRATUM_832075 is not set CONFIG_ARM64_ERRATUM_1742098=y -# CONFIG_ARM64_ERRATUM_845719 is not set -# CONFIG_ARM64_ERRATUM_843419 is not set +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_843419=y CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y # CONFIG_ARM64_ERRATUM_1024718 is not set # CONFIG_ARM64_ERRATUM_1418040 is not set +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y # CONFIG_ARM64_ERRATUM_1165522 is not set -# CONFIG_ARM64_ERRATUM_1319367 is not set +CONFIG_ARM64_ERRATUM_1319367=y # CONFIG_ARM64_ERRATUM_1530923 is not set -CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y -CONFIG_ARM64_ERRATUM_2441007=y +# CONFIG_ARM64_ERRATUM_2441007 is not set # CONFIG_ARM64_ERRATUM_1286807 is not set # CONFIG_ARM64_ERRATUM_1463225 is not set # CONFIG_ARM64_ERRATUM_1542419 is not set # CONFIG_ARM64_ERRATUM_1508412 is not set # CONFIG_ARM64_ERRATUM_2051678 is not set -CONFIG_ARM64_ERRATUM_2077057=y -CONFIG_ARM64_ERRATUM_2658417=y +# CONFIG_ARM64_ERRATUM_2077057 is not set +# CONFIG_ARM64_ERRATUM_2658417 is not set # CONFIG_ARM64_ERRATUM_2054223 is not set # CONFIG_ARM64_ERRATUM_2067961 is not set -CONFIG_ARM64_ERRATUM_2441009=y -CONFIG_ARM64_ERRATUM_2457168=y +# CONFIG_ARM64_ERRATUM_2441009 is not set +CONFIG_ARM64_ERRATUM_2966298=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set # CONFIG_CAVIUM_ERRATUM_27456 is not set @@ -391,15 +389,15 @@ CONFIG_ARM64_PA_BITS=48 CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_SCHED_MC=y # CONFIG_SCHED_CLUSTER is not set -CONFIG_SCHED_SMT=y -CONFIG_NR_CPUS=8 +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=6 CONFIG_HOTPLUG_CPU=y # CONFIG_NUMA is not set # CONFIG_HZ_100 is not set -CONFIG_HZ_250=y -# CONFIG_HZ_300 is not set +# CONFIG_HZ_250 is not set +CONFIG_HZ_300=y # CONFIG_HZ_1000 is not set -CONFIG_HZ=250 +CONFIG_HZ=300 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_HW_PERF_EVENTS=y @@ -409,6 +407,7 @@ CONFIG_CC_HAVE_SHADOW_CALL_STACK=y # CONFIG_KEXEC is not set # CONFIG_KEXEC_FILE is not set # CONFIG_CRASH_DUMP is not set +CONFIG_TRANS_TABLE=y # CONFIG_XEN is not set CONFIG_ARCH_FORCE_MAX_ORDER=11 CONFIG_UNMAP_KERNEL_AT_EL0=y @@ -419,16 +418,13 @@ CONFIG_ARM64_TAGGED_ADDR_ABI=y CONFIG_COMPAT=y CONFIG_KUSER_HELPERS=y # CONFIG_COMPAT_ALIGNMENT_FIXUPS is not set -CONFIG_ARMV8_DEPRECATED=y -# CONFIG_SWP_EMULATION is not set -# CONFIG_CP15_BARRIER_EMULATION is not set -# CONFIG_SETEND_EMULATION is not set +# CONFIG_ARMV8_DEPRECATED is not set # # ARMv8.1 architectural features # -CONFIG_ARM64_HW_AFDBM=y -CONFIG_ARM64_PAN=y +# CONFIG_ARM64_HW_AFDBM is not set +# CONFIG_ARM64_PAN is not set CONFIG_AS_HAS_LDAPR=y CONFIG_AS_HAS_LSE_ATOMICS=y # end of ARMv8.1 architectural features @@ -439,15 +435,14 @@ CONFIG_AS_HAS_LSE_ATOMICS=y CONFIG_AS_HAS_ARMV8_2=y CONFIG_AS_HAS_SHA3=y # CONFIG_ARM64_PMEM is not set -CONFIG_ARM64_RAS_EXTN=y -CONFIG_ARM64_CNP=y +# CONFIG_ARM64_RAS_EXTN is not set +# CONFIG_ARM64_CNP is not set # end of ARMv8.2 architectural features # # ARMv8.3 architectural features # -CONFIG_ARM64_PTR_AUTH=y -CONFIG_ARM64_PTR_AUTH_KERNEL=y +# CONFIG_ARM64_PTR_AUTH is not set CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y CONFIG_AS_HAS_PAC=y @@ -457,9 +452,9 @@ CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y # # ARMv8.4 architectural features # -CONFIG_ARM64_AMU_EXTN=y +# CONFIG_ARM64_AMU_EXTN is not set CONFIG_AS_HAS_ARMV8_4=y -CONFIG_ARM64_TLB_RANGE=y +# CONFIG_ARM64_TLB_RANGE is not set # end of ARMv8.4 architectural features # @@ -470,13 +465,11 @@ CONFIG_AS_HAS_ARMV8_5=y CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y # CONFIG_ARM64_E0PD is not set CONFIG_ARM64_AS_HAS_MTE=y -CONFIG_ARM64_MTE=y # end of ARMv8.5 architectural features # # ARMv8.7 architectural features # -CONFIG_ARM64_EPAN=y # end of ARMv8.7 architectural features CONFIG_ARM64_SVE=y @@ -484,8 +477,7 @@ CONFIG_ARM64_SME=y CONFIG_ARM64_MODULE_PLTS=y # CONFIG_ARM64_PSEUDO_NMI is not set CONFIG_RELOCATABLE=y -CONFIG_RANDOMIZE_BASE=y -CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +# CONFIG_RANDOMIZE_BASE is not set CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y CONFIG_STACKPROTECTOR_PER_TASK=y CONFIG_ARCH_NR_GPIO=0 @@ -503,11 +495,14 @@ CONFIG_CMDLINE="" # CONFIG_SUSPEND=y CONFIG_SUSPEND_FREEZER=y -CONFIG_SUSPEND_SKIP_SYNC=y -# CONFIG_HIBERNATION is not set +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +# CONFIG_HIBERNATION_SNAPSHOT_DEV is not set +CONFIG_PM_STD_PARTITION="" CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y -CONFIG_PM_AUTOSLEEP=y +# CONFIG_PM_AUTOSLEEP is not set # CONFIG_PM_USERSPACE_AUTOSLEEP is not set # CONFIG_PM_WAKELOCKS is not set CONFIG_PM=y @@ -520,6 +515,7 @@ CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_CPU_PM=y CONFIG_ENERGY_MODEL=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_ARCH_SUSPEND_POSSIBLE=y # end of Power management options @@ -532,7 +528,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y # CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y -CONFIG_CPU_IDLE_GOV_LADDER=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set CONFIG_CPU_IDLE_GOV_MENU=y # CONFIG_CPU_IDLE_GOV_TEO is not set CONFIG_DT_IDLE_STATES=y @@ -581,7 +577,6 @@ CONFIG_HAVE_KVM=y # # General architecture-dependent options # -CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y @@ -694,9 +689,9 @@ CONFIG_GCC_PLUGINS=y CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y -CONFIG_MODULE_FORCE_LOAD=y +# CONFIG_MODULE_FORCE_LOAD is not set CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set @@ -710,7 +705,7 @@ CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y -CONFIG_BLOCK_LEGACY_AUTOLOAD=y +# CONFIG_BLOCK_LEGACY_AUTOLOAD is not set CONFIG_BLK_DEV_BSG_COMMON=y CONFIG_BLK_DEV_BSGLIB=y # CONFIG_BLK_DEV_INTEGRITY is not set @@ -733,7 +728,7 @@ CONFIG_PARTITION_ADVANCED=y # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set -CONFIG_MAC_PARTITION=y +# CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set @@ -750,10 +745,7 @@ CONFIG_EFI_PARTITION=y # end of Partition Types CONFIG_BLOCK_COMPAT=y -CONFIG_BLK_MQ_PCI=y CONFIG_BLK_PM=y -CONFIG_BLOCK_HOLDER_DEPRECATED=y -CONFIG_BLK_MQ_STACKING=y # # IO Schedulers @@ -764,7 +756,57 @@ CONFIG_MQ_IOSCHED_DEADLINE=y # end of IO Schedulers CONFIG_ASN1=y -CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_RWSEM_SPIN_ON_OWNER=y @@ -787,9 +829,9 @@ CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y CONFIG_ARCH_HAVE_ELF_PROT=y CONFIG_ARCH_USE_GNU_PROPERTY=y CONFIG_ELFCORE=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_SCRIPT=y -CONFIG_BINFMT_MISC=y +# CONFIG_BINFMT_MISC is not set CONFIG_COREDUMP=y # end of Executable file formats @@ -822,6 +864,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y # CONFIG_MEMORY_HOTPLUG is not set @@ -847,7 +890,6 @@ CONFIG_ARCH_HAS_PTE_DEVMAP=y CONFIG_ARCH_HAS_ZONE_DMA_SET=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA32=y -CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y # CONFIG_VM_EVENT_COUNTERS is not set # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set @@ -878,52 +920,31 @@ CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_UNIX_SCM=y CONFIG_AF_UNIX_OOB=y -CONFIG_UNIX_DIAG=m +# CONFIG_UNIX_DIAG is not set # CONFIG_TLS is not set -CONFIG_XFRM=y -CONFIG_XFRM_ALGO=y -CONFIG_XFRM_USER=y -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set -CONFIG_XFRM_AH=y -CONFIG_XFRM_ESP=y -CONFIG_XFRM_IPCOMP=y -CONFIG_NET_KEY=y -# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -# CONFIG_IP_FIB_TRIE_STATS is not set -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set CONFIG_NET_IPIP=m CONFIG_NET_IPGRE_DEMUX=m -CONFIG_NET_IP_TUNNEL=y +CONFIG_NET_IP_TUNNEL=m CONFIG_NET_IPGRE=m # CONFIG_NET_IPGRE_BROADCAST is not set -CONFIG_IP_MROUTE_COMMON=y -CONFIG_IP_MROUTE=y -CONFIG_IP_MROUTE_MULTIPLE_TABLES=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y +# CONFIG_IP_MROUTE is not set +# CONFIG_SYN_COOKIES is not set # CONFIG_NET_IPVTI is not set -CONFIG_NET_UDP_TUNNEL=y +CONFIG_NET_UDP_TUNNEL=m # CONFIG_NET_FOU is not set # CONFIG_NET_FOU_IP_TUNNELS is not set -CONFIG_INET_AH=y -CONFIG_INET_ESP=y -# CONFIG_INET_ESP_OFFLOAD is not set -# CONFIG_INET_ESPINTCP is not set -CONFIG_INET_IPCOMP=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set CONFIG_INET_TABLE_PERTURB_ORDER=16 -CONFIG_INET_XFRM_TUNNEL=y -CONFIG_INET_TUNNEL=y +CONFIG_INET_TUNNEL=m # CONFIG_INET_DIAG is not set CONFIG_TCP_CONG_ADVANCED=y CONFIG_TCP_CONG_BIC=m @@ -945,303 +966,200 @@ CONFIG_TCP_CONG_CDG=m CONFIG_DEFAULT_RENO=y CONFIG_DEFAULT_TCP_CONG="reno" CONFIG_TCP_MD5SIG=y -# CONFIG_IPV6 is not set +CONFIG_IPV6=m +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set # CONFIG_MPTCP is not set # CONFIG_NETWORK_SECMARK is not set CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NETWORK_PHY_TIMESTAMPING is not set CONFIG_NETFILTER=y CONFIG_NETFILTER_ADVANCED=y -CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=m # # Core Netfilter Configuration # CONFIG_NETFILTER_INGRESS=y CONFIG_NETFILTER_EGRESS=y -CONFIG_NETFILTER_NETLINK=y CONFIG_NETFILTER_FAMILY_BRIDGE=y -CONFIG_NETFILTER_FAMILY_ARP=y -# CONFIG_NETFILTER_NETLINK_HOOK is not set -CONFIG_NETFILTER_NETLINK_ACCT=m -CONFIG_NETFILTER_NETLINK_QUEUE=y -CONFIG_NETFILTER_NETLINK_LOG=y -CONFIG_NETFILTER_NETLINK_OSF=m +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set CONFIG_NF_CONNTRACK=m CONFIG_NF_LOG_SYSLOG=m -CONFIG_NETFILTER_CONNCOUNT=m -CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_MARK is not set # CONFIG_NF_CONNTRACK_ZONES is not set CONFIG_NF_CONNTRACK_PROCFS=y CONFIG_NF_CONNTRACK_EVENTS=y -CONFIG_NF_CONNTRACK_TIMEOUT=y -CONFIG_NF_CONNTRACK_TIMESTAMP=y -CONFIG_NF_CONNTRACK_LABELS=y +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_LABELS is not set CONFIG_NF_CT_PROTO_DCCP=y -CONFIG_NF_CT_PROTO_GRE=y CONFIG_NF_CT_PROTO_SCTP=y CONFIG_NF_CT_PROTO_UDPLITE=y -CONFIG_NF_CONNTRACK_AMANDA=m -CONFIG_NF_CONNTRACK_FTP=m -CONFIG_NF_CONNTRACK_H323=m -CONFIG_NF_CONNTRACK_IRC=m -CONFIG_NF_CONNTRACK_BROADCAST=m -CONFIG_NF_CONNTRACK_NETBIOS_NS=m -CONFIG_NF_CONNTRACK_SNMP=m -CONFIG_NF_CONNTRACK_PPTP=m -CONFIG_NF_CONNTRACK_SANE=m -CONFIG_NF_CONNTRACK_SIP=m -CONFIG_NF_CONNTRACK_TFTP=m -CONFIG_NF_CT_NETLINK=m -CONFIG_NF_CT_NETLINK_TIMEOUT=m -# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +# CONFIG_NF_CONNTRACK_FTP is not set +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set CONFIG_NF_NAT=m -CONFIG_NF_NAT_AMANDA=m -CONFIG_NF_NAT_FTP=m -CONFIG_NF_NAT_IRC=m -CONFIG_NF_NAT_SIP=m -CONFIG_NF_NAT_TFTP=m -CONFIG_NF_NAT_REDIRECT=y CONFIG_NF_NAT_MASQUERADE=y -CONFIG_NETFILTER_SYNPROXY=m -CONFIG_NF_TABLES=m -# CONFIG_NF_TABLES_NETDEV is not set -# CONFIG_NFT_NUMGEN is not set -CONFIG_NFT_CT=m -# CONFIG_NFT_CONNLIMIT is not set -CONFIG_NFT_LOG=m -CONFIG_NFT_LIMIT=m -CONFIG_NFT_MASQ=m -CONFIG_NFT_REDIR=m -# CONFIG_NFT_TUNNEL is not set -# CONFIG_NFT_OBJREF is not set -CONFIG_NFT_QUEUE=m -# CONFIG_NFT_QUOTA is not set -CONFIG_NFT_REJECT=m -CONFIG_NFT_COMPAT=m -CONFIG_NFT_HASH=m -# CONFIG_NFT_XFRM is not set -# CONFIG_NFT_SOCKET is not set -# CONFIG_NFT_OSF is not set -# CONFIG_NFT_TPROXY is not set -# CONFIG_NFT_SYNPROXY is not set -# CONFIG_NF_FLOW_TABLE is not set +# CONFIG_NF_TABLES is not set CONFIG_NETFILTER_XTABLES=y CONFIG_NETFILTER_XTABLES_COMPAT=y # # Xtables combined modules # -CONFIG_NETFILTER_XT_MARK=m -CONFIG_NETFILTER_XT_CONNMARK=m -CONFIG_NETFILTER_XT_SET=m +# CONFIG_NETFILTER_XT_MARK is not set +# CONFIG_NETFILTER_XT_CONNMARK is not set # # Xtables targets # CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m -CONFIG_NETFILTER_XT_TARGET_CT=m -CONFIG_NETFILTER_XT_TARGET_DSCP=m -CONFIG_NETFILTER_XT_TARGET_HL=m -CONFIG_NETFILTER_XT_TARGET_HMARK=m -CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m -CONFIG_NETFILTER_XT_TARGET_LED=m +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set CONFIG_NETFILTER_XT_TARGET_LOG=m -CONFIG_NETFILTER_XT_TARGET_MARK=m +# CONFIG_NETFILTER_XT_TARGET_MARK is not set CONFIG_NETFILTER_XT_NAT=m -CONFIG_NETFILTER_XT_TARGET_NETMAP=m -CONFIG_NETFILTER_XT_TARGET_NFLOG=m -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m -CONFIG_NETFILTER_XT_TARGET_RATEEST=m -CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m -CONFIG_NETFILTER_XT_TARGET_TEE=m -CONFIG_NETFILTER_XT_TARGET_TPROXY=m -CONFIG_NETFILTER_XT_TARGET_TRACE=m -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m -CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set # # Xtables matches # CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m -CONFIG_NETFILTER_XT_MATCH_BPF=m -CONFIG_NETFILTER_XT_MATCH_CGROUP=m -CONFIG_NETFILTER_XT_MATCH_CLUSTER=m -CONFIG_NETFILTER_XT_MATCH_COMMENT=m -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m -CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m -CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m -CONFIG_NETFILTER_XT_MATCH_CPU=m -CONFIG_NETFILTER_XT_MATCH_DCCP=m -CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m -CONFIG_NETFILTER_XT_MATCH_DSCP=m -CONFIG_NETFILTER_XT_MATCH_ECN=m -CONFIG_NETFILTER_XT_MATCH_ESP=m -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m -CONFIG_NETFILTER_XT_MATCH_HELPER=m -CONFIG_NETFILTER_XT_MATCH_HL=m -CONFIG_NETFILTER_XT_MATCH_IPCOMP=m -CONFIG_NETFILTER_XT_MATCH_IPRANGE=m -CONFIG_NETFILTER_XT_MATCH_IPVS=m -CONFIG_NETFILTER_XT_MATCH_L2TP=m -CONFIG_NETFILTER_XT_MATCH_LENGTH=m -CONFIG_NETFILTER_XT_MATCH_LIMIT=m -CONFIG_NETFILTER_XT_MATCH_MAC=m -CONFIG_NETFILTER_XT_MATCH_MARK=m -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m -CONFIG_NETFILTER_XT_MATCH_NFACCT=m -CONFIG_NETFILTER_XT_MATCH_OSF=m -CONFIG_NETFILTER_XT_MATCH_OWNER=m -CONFIG_NETFILTER_XT_MATCH_POLICY=m -CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m -CONFIG_NETFILTER_XT_MATCH_QUOTA=m -CONFIG_NETFILTER_XT_MATCH_RATEEST=m -CONFIG_NETFILTER_XT_MATCH_REALM=m -CONFIG_NETFILTER_XT_MATCH_RECENT=m -CONFIG_NETFILTER_XT_MATCH_SCTP=m -CONFIG_NETFILTER_XT_MATCH_SOCKET=m -CONFIG_NETFILTER_XT_MATCH_STATE=m -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m -CONFIG_NETFILTER_XT_MATCH_STRING=m -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m -CONFIG_NETFILTER_XT_MATCH_TIME=m -CONFIG_NETFILTER_XT_MATCH_U32=m +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set # end of Core Netfilter Configuration -CONFIG_IP_SET=y -CONFIG_IP_SET_MAX=256 -CONFIG_IP_SET_BITMAP_IP=m -CONFIG_IP_SET_BITMAP_IPMAC=m -CONFIG_IP_SET_BITMAP_PORT=m -CONFIG_IP_SET_HASH_IP=m -CONFIG_IP_SET_HASH_IPMARK=m -CONFIG_IP_SET_HASH_IPPORT=m -CONFIG_IP_SET_HASH_IPPORTIP=m -CONFIG_IP_SET_HASH_IPPORTNET=m -# CONFIG_IP_SET_HASH_IPMAC is not set -CONFIG_IP_SET_HASH_MAC=m -CONFIG_IP_SET_HASH_NETPORTNET=m -CONFIG_IP_SET_HASH_NET=m -CONFIG_IP_SET_HASH_NETNET=m -CONFIG_IP_SET_HASH_NETPORT=m -CONFIG_IP_SET_HASH_NETIFACE=m -CONFIG_IP_SET_LIST_SET=m -CONFIG_IP_VS=m -# CONFIG_IP_VS_DEBUG is not set -CONFIG_IP_VS_TAB_BITS=12 - -# -# IPVS transport protocol load balancing support -# -CONFIG_IP_VS_PROTO_TCP=y -CONFIG_IP_VS_PROTO_UDP=y -CONFIG_IP_VS_PROTO_AH_ESP=y -CONFIG_IP_VS_PROTO_ESP=y -CONFIG_IP_VS_PROTO_AH=y -CONFIG_IP_VS_PROTO_SCTP=y - -# -# IPVS scheduler -# -CONFIG_IP_VS_RR=m -CONFIG_IP_VS_WRR=m -CONFIG_IP_VS_LC=m -CONFIG_IP_VS_WLC=m -CONFIG_IP_VS_FO=m -CONFIG_IP_VS_OVF=m -CONFIG_IP_VS_LBLC=m -CONFIG_IP_VS_LBLCR=m -CONFIG_IP_VS_DH=m -CONFIG_IP_VS_SH=m -# CONFIG_IP_VS_MH is not set -CONFIG_IP_VS_SED=m -CONFIG_IP_VS_NQ=m -# CONFIG_IP_VS_TWOS is not set - -# -# IPVS SH scheduler -# -CONFIG_IP_VS_SH_TAB_BITS=8 - -# -# IPVS MH scheduler -# -CONFIG_IP_VS_MH_TAB_INDEX=12 - -# -# IPVS application helper -# -# CONFIG_IP_VS_FTP is not set -CONFIG_IP_VS_NFCT=y -# CONFIG_IP_VS_PE_SIP is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set # # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=m -CONFIG_NF_SOCKET_IPV4=m -CONFIG_NF_TPROXY_IPV4=m -# CONFIG_NF_TABLES_IPV4 is not set -# CONFIG_NF_TABLES_ARP is not set -CONFIG_NF_DUP_IPV4=m -CONFIG_NF_LOG_ARP=m +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set CONFIG_NF_LOG_IPV4=m CONFIG_NF_REJECT_IPV4=m -CONFIG_NF_NAT_SNMP_BASIC=m -CONFIG_NF_NAT_PPTP=m -CONFIG_NF_NAT_H323=m CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_MATCH_AH=m -CONFIG_IP_NF_MATCH_ECN=m -CONFIG_IP_NF_MATCH_RPFILTER=m -CONFIG_IP_NF_MATCH_TTL=m +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set CONFIG_IP_NF_FILTER=y CONFIG_IP_NF_TARGET_REJECT=m -CONFIG_IP_NF_TARGET_SYNPROXY=m +# CONFIG_IP_NF_TARGET_SYNPROXY is not set CONFIG_IP_NF_NAT=m CONFIG_IP_NF_TARGET_MASQUERADE=m -CONFIG_IP_NF_TARGET_NETMAP=m -CONFIG_IP_NF_TARGET_REDIRECT=m +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set CONFIG_IP_NF_MANGLE=m -CONFIG_IP_NF_TARGET_CLUSTERIP=m -CONFIG_IP_NF_TARGET_ECN=m -CONFIG_IP_NF_TARGET_TTL=m -CONFIG_IP_NF_RAW=m -CONFIG_IP_NF_ARPTABLES=m -CONFIG_IP_NF_ARPFILTER=m -CONFIG_IP_NF_ARP_MANGLE=m +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_ARPTABLES is not set # end of IP: Netfilter Configuration -CONFIG_NF_TABLES_BRIDGE=m -CONFIG_NFT_BRIDGE_META=m +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m # CONFIG_NF_CONNTRACK_BRIDGE is not set -CONFIG_BRIDGE_NF_EBTABLES=m -CONFIG_BRIDGE_EBT_BROUTE=m -CONFIG_BRIDGE_EBT_T_FILTER=m -CONFIG_BRIDGE_EBT_T_NAT=m -CONFIG_BRIDGE_EBT_802_3=m -CONFIG_BRIDGE_EBT_AMONG=m -CONFIG_BRIDGE_EBT_ARP=m -CONFIG_BRIDGE_EBT_IP=m -CONFIG_BRIDGE_EBT_LIMIT=m -CONFIG_BRIDGE_EBT_MARK=m -CONFIG_BRIDGE_EBT_PKTTYPE=m -CONFIG_BRIDGE_EBT_STP=m -CONFIG_BRIDGE_EBT_VLAN=m -CONFIG_BRIDGE_EBT_ARPREPLY=m -CONFIG_BRIDGE_EBT_DNAT=m -CONFIG_BRIDGE_EBT_MARK_T=m -CONFIG_BRIDGE_EBT_REDIRECT=m -CONFIG_BRIDGE_EBT_SNAT=m -CONFIG_BRIDGE_EBT_LOG=m -CONFIG_BRIDGE_EBT_NFLOG=m +# CONFIG_BRIDGE_NF_EBTABLES is not set # CONFIG_BPFILTER is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set @@ -1249,94 +1167,33 @@ CONFIG_BRIDGE_EBT_NFLOG=m # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_L2TP is not set -CONFIG_STP=y -CONFIG_BRIDGE=y +CONFIG_STP=m +CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y -# CONFIG_BRIDGE_VLAN_FILTERING is not set # CONFIG_BRIDGE_MRP is not set # CONFIG_BRIDGE_CFM is not set # CONFIG_NET_DSA is not set -CONFIG_VLAN_8021Q=y -# CONFIG_VLAN_8021Q_GVRP is not set -# CONFIG_VLAN_8021Q_MVRP is not set -CONFIG_LLC=y +# CONFIG_VLAN_8021Q is not set +CONFIG_LLC=m # CONFIG_LLC2 is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set # CONFIG_IEEE802154 is not set -CONFIG_NET_SCHED=y - -# -# Queueing/Scheduling -# -# CONFIG_NET_SCH_CBQ is not set -CONFIG_NET_SCH_HTB=y -# CONFIG_NET_SCH_HFSC is not set -# CONFIG_NET_SCH_PRIO is not set -# CONFIG_NET_SCH_MULTIQ is not set -# CONFIG_NET_SCH_RED is not set -# CONFIG_NET_SCH_SFB is not set -# CONFIG_NET_SCH_SFQ is not set -# CONFIG_NET_SCH_TEQL is not set -# CONFIG_NET_SCH_TBF is not set -# CONFIG_NET_SCH_CBS is not set -# CONFIG_NET_SCH_ETF is not set -# CONFIG_NET_SCH_TAPRIO is not set -# CONFIG_NET_SCH_GRED is not set -# CONFIG_NET_SCH_DSMARK is not set -# CONFIG_NET_SCH_NETEM is not set -# CONFIG_NET_SCH_DRR is not set -# CONFIG_NET_SCH_MQPRIO is not set -# CONFIG_NET_SCH_SKBPRIO is not set -# CONFIG_NET_SCH_CHOKE is not set -# CONFIG_NET_SCH_QFQ is not set -CONFIG_NET_SCH_CODEL=y -CONFIG_NET_SCH_FQ_CODEL=y -# CONFIG_NET_SCH_CAKE is not set -# CONFIG_NET_SCH_FQ is not set -# CONFIG_NET_SCH_HHF is not set -# CONFIG_NET_SCH_PIE is not set -# CONFIG_NET_SCH_PLUG is not set -# CONFIG_NET_SCH_ETS is not set -# CONFIG_NET_SCH_DEFAULT is not set - -# -# Classification -# -CONFIG_NET_CLS=y -# CONFIG_NET_CLS_BASIC is not set -# CONFIG_NET_CLS_ROUTE4 is not set -# CONFIG_NET_CLS_FW is not set -CONFIG_NET_CLS_U32=y -# CONFIG_CLS_U32_PERF is not set -CONFIG_CLS_U32_MARK=y -# CONFIG_NET_CLS_RSVP is not set -# CONFIG_NET_CLS_RSVP6 is not set -# CONFIG_NET_CLS_FLOW is not set -CONFIG_NET_CLS_CGROUP=y -# CONFIG_NET_CLS_BPF is not set -# CONFIG_NET_CLS_FLOWER is not set -# CONFIG_NET_CLS_MATCHALL is not set -# CONFIG_NET_EMATCH is not set -# CONFIG_NET_CLS_ACT is not set -CONFIG_NET_SCH_FIFO=y +# CONFIG_NET_SCHED is not set # CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y # CONFIG_BATMAN_ADV is not set -CONFIG_OPENVSWITCH=m -CONFIG_OPENVSWITCH_GRE=m -CONFIG_OPENVSWITCH_VXLAN=m +# CONFIG_OPENVSWITCH is not set # CONFIG_VSOCKETS is not set # CONFIG_NETLINK_DIAG is not set -CONFIG_MPLS=y -CONFIG_NET_MPLS_GSO=m -# CONFIG_MPLS_ROUTING is not set -CONFIG_NET_NSH=m +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set # CONFIG_HSR is not set # CONFIG_NET_SWITCHDEV is not set -CONFIG_NET_L3_MASTER_DEV=y +# CONFIG_NET_L3_MASTER_DEV is not set # CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set CONFIG_PCPU_DEV_REFCNT=y @@ -1344,8 +1201,8 @@ CONFIG_RPS=y CONFIG_RFS_ACCEL=y CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_CGROUP_NET_CLASSID=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y # CONFIG_BPF_STREAM_PARSER is not set @@ -1359,18 +1216,12 @@ CONFIG_NET_FLOW_LIMIT=y # end of Networking options # CONFIG_HAMRADIO is not set -CONFIG_CAN=y -CONFIG_CAN_RAW=y -CONFIG_CAN_BCM=y -CONFIG_CAN_GW=y -# CONFIG_CAN_J1939 is not set -# CONFIG_CAN_ISOTP is not set +# CONFIG_CAN is not set CONFIG_BT=m CONFIG_BT_BREDR=y CONFIG_BT_RFCOMM=y # CONFIG_BT_RFCOMM_TTY is not set # CONFIG_BT_BNEP is not set -# CONFIG_BT_CMTP is not set CONFIG_BT_HIDP=y CONFIG_BT_HS=y CONFIG_BT_LE=y @@ -1383,14 +1234,7 @@ CONFIG_BT_DEBUGFS=y # # Bluetooth device drivers # -CONFIG_BT_INTEL=m -CONFIG_BT_BCM=m -CONFIG_BT_RTL=m -CONFIG_BT_HCIBTUSB=m -# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set -CONFIG_BT_HCIBTUSB_BCM=y -# CONFIG_BT_HCIBTUSB_MTK is not set -CONFIG_BT_HCIBTUSB_RTL=y +# CONFIG_BT_HCIBTUSB is not set # CONFIG_BT_HCIBTSDIO is not set CONFIG_BT_HCIUART=m CONFIG_BT_HCIUART_SERDEV=y @@ -1409,13 +1253,9 @@ CONFIG_BT_HCIUART_ATH3K=y # CONFIG_BT_HCIBCM203X is not set # CONFIG_BT_HCIBPA10X is not set CONFIG_BT_HCIBFUSB=m -# CONFIG_BT_HCIDTL1 is not set -# CONFIG_BT_HCIBT3C is not set -# CONFIG_BT_HCIBLUECARD is not set CONFIG_BT_HCIVHCI=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m -# CONFIG_BT_ATH3K is not set # CONFIG_BT_MTKSDIO is not set # CONFIG_BT_MTKUART is not set # end of Bluetooth device drivers @@ -1423,7 +1263,6 @@ CONFIG_BT_MRVL_SDIO=m # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set # CONFIG_MCTP is not set -CONFIG_FIB_RULES=y CONFIG_WIRELESS=y CONFIG_WIRELESS_EXT=y CONFIG_WEXT_CORE=y @@ -1461,9 +1300,7 @@ CONFIG_RFKILL_INPUT=y CONFIG_RFKILL_GPIO=m # CONFIG_NET_9P is not set # CONFIG_CAIF is not set -CONFIG_CEPH_LIB=m -# CONFIG_CEPH_LIB_PRETTYDEBUG is not set -# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set +# CONFIG_CEPH_LIB is not set # CONFIG_NFC is not set # CONFIG_PSAMPLE is not set # CONFIG_NET_IFE is not set @@ -1482,109 +1319,16 @@ CONFIG_PAGE_POOL=y # CONFIG_ARM_AMBA=y CONFIG_HAVE_PCI=y -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_DOMAINS_GENERIC=y -CONFIG_PCI_SYSCALL=y -CONFIG_PCIEPORTBUS=y -CONFIG_PCIEAER=y -# CONFIG_PCIEAER_INJECT is not set -# CONFIG_PCIE_ECRC is not set -CONFIG_PCIEASPM=y -# CONFIG_PCIEASPM_DEFAULT is not set -CONFIG_PCIEASPM_POWERSAVE=y -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -# CONFIG_PCIEASPM_PERFORMANCE is not set -CONFIG_PCIE_PME=y -# CONFIG_PCIE_DPC is not set -# CONFIG_PCIE_PTM is not set -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PCI_QUIRKS=y -CONFIG_PCI_DEBUG=y -# CONFIG_PCI_STUB is not set -# CONFIG_PCI_IOV is not set -# CONFIG_PCI_PRI is not set -# CONFIG_PCI_PASID is not set -# CONFIG_PCIE_BUS_TUNE_OFF is not set -CONFIG_PCIE_BUS_DEFAULT=y -# CONFIG_PCIE_BUS_SAFE is not set -# CONFIG_PCIE_BUS_PERFORMANCE is not set -# CONFIG_PCIE_BUS_PEER2PEER is not set -# CONFIG_VGA_ARB is not set -# CONFIG_HOTPLUG_PCI is not set - -# -# PCI controller drivers -# -# CONFIG_PCI_FTPCI100 is not set -# CONFIG_PCI_HOST_GENERIC is not set -# CONFIG_PCIE_XILINX is not set -# CONFIG_PCI_XGENE is not set -# CONFIG_PCIE_ALTERA is not set -# CONFIG_PCI_HOST_THUNDER_PEM is not set -# CONFIG_PCI_HOST_THUNDER_ECAM is not set -# CONFIG_PCIE_ROCKCHIP_HOST is not set -# CONFIG_PCIE_MICROCHIP_HOST is not set - -# -# DesignWare PCI Core Support -# -# CONFIG_PCIE_DW_PLAT_HOST is not set -# CONFIG_PCI_HISI is not set -# CONFIG_PCIE_ROCKCHIP_DW_HOST is not set -# CONFIG_PCIE_KIRIN is not set -# CONFIG_PCI_MESON is not set -# CONFIG_PCIE_AL is not set -# end of DesignWare PCI Core Support - -# -# Mobiveil PCIe Core Support -# -# end of Mobiveil PCIe Core Support - -# -# Cadence PCIe controllers support -# -# CONFIG_PCIE_CADENCE_PLAT_HOST is not set -# CONFIG_PCI_J721E_HOST is not set -# end of Cadence PCIe controllers support -# end of PCI controller drivers - -# -# PCI Endpoint -# -# CONFIG_PCI_ENDPOINT is not set -# end of PCI Endpoint - -# -# PCI switch controller drivers -# -# CONFIG_PCI_SW_SWITCHTEC is not set -# end of PCI switch controller drivers - -# CONFIG_CXL_BUS is not set -CONFIG_PCCARD=y -CONFIG_PCMCIA=y -CONFIG_PCMCIA_LOAD_CIS=y -CONFIG_CARDBUS=y - -# -# PC-card bridges -# -# CONFIG_YENTA is not set -# CONFIG_PD6729 is not set -# CONFIG_I82092 is not set -# CONFIG_RAPIDIO is not set +# CONFIG_PCI is not set +# CONFIG_PCCARD is not set # # Generic Driver Options # -CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y -CONFIG_DEVTMPFS_SAFE=y +# CONFIG_DEVTMPFS_SAFE is not set CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y @@ -1592,20 +1336,18 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y # Firmware loader # CONFIG_FW_LOADER=y -CONFIG_FW_LOADER_PAGED_BUF=y -CONFIG_FW_LOADER_SYSFS=y CONFIG_EXTRA_FIRMWARE="" -CONFIG_FW_LOADER_USER_HELPER=y -CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +# CONFIG_FW_LOADER_USER_HELPER is not set # CONFIG_FW_LOADER_COMPRESS is not set CONFIG_FW_CACHE=y # CONFIG_FW_UPLOAD is not set # end of Firmware loader CONFIG_WANT_DEV_COREDUMP=y -# CONFIG_ALLOW_DEV_COREDUMP is not set +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y # CONFIG_DEBUG_DRIVER is not set -CONFIG_DEBUG_DEVRES=y +# CONFIG_DEBUG_DEVRES is not set # CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set CONFIG_GENERIC_CPU_AUTOPROBE=y @@ -1630,8 +1372,7 @@ CONFIG_GENERIC_ARCH_TOPOLOGY=y # CONFIG_MHI_BUS_EP is not set # end of Bus devices -CONFIG_CONNECTOR=y -CONFIG_PROC_EVENTS=y +# CONFIG_CONNECTOR is not set # # Firmware Drivers @@ -1653,7 +1394,6 @@ CONFIG_ARM_SCMI_POWER_DOMAIN=y CONFIG_ARM_SCPI_PROTOCOL=y CONFIG_ARM_SCPI_POWER_DOMAIN=y # CONFIG_FIRMWARE_MEMMAP is not set -# CONFIG_FW_CFG_SYSFS is not set # CONFIG_ARM_FFA_TRANSPORT is not set # CONFIG_GOOGLE_FIRMWARE is not set CONFIG_ARM_PSCI_FW=y @@ -1685,8 +1425,6 @@ CONFIG_OF_OVERLAY=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_NULL_BLK is not set -CONFIG_CDROM=y -# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set CONFIG_ZRAM=y CONFIG_ZRAM_DEF_COMP_LZORLE=y # CONFIG_ZRAM_DEF_COMP_LZ4 is not set @@ -1696,28 +1434,19 @@ CONFIG_ZRAM_DEF_COMP="lzo-rle" # CONFIG_ZRAM_MEMORY_TRACKING is not set CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 -CONFIG_BLK_DEV_DRBD=m -# CONFIG_DRBD_FAULT_INJECTION is not set +# CONFIG_BLK_DEV_DRBD is not set CONFIG_BLK_DEV_NBD=m -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=1 -CONFIG_BLK_DEV_RAM_SIZE=4096 +# CONFIG_BLK_DEV_RAM is not set # CONFIG_CDROM_PKTCDVD is not set -CONFIG_ATA_OVER_ETH=m -CONFIG_BLK_DEV_RBD=m +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set # CONFIG_BLK_DEV_UBLK is not set # # NVME Support # -CONFIG_NVME_CORE=m -CONFIG_BLK_DEV_NVME=m -# CONFIG_NVME_MULTIPATH is not set -# CONFIG_NVME_VERBOSE_ERRORS is not set -# CONFIG_NVME_HWMON is not set # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set -# CONFIG_NVME_AUTH is not set # CONFIG_NVME_TARGET is not set # end of NVME Support @@ -1726,11 +1455,8 @@ CONFIG_BLK_DEV_NVME=m # # CONFIG_AD525X_DPOT is not set # CONFIG_DUMMY_IRQ is not set -# CONFIG_PHANTOM is not set -# CONFIG_TIFM_CORE is not set # CONFIG_ICS932S401 is not set # CONFIG_ENCLOSURE_SERVICES is not set -# CONFIG_HP_ILO is not set # CONFIG_APDS9802ALS is not set # CONFIG_ISL29003 is not set # CONFIG_ISL29020 is not set @@ -1740,9 +1466,7 @@ CONFIG_BLK_DEV_NVME=m # CONFIG_HMC6352 is not set # CONFIG_DS1682 is not set # CONFIG_LATTICE_ECP3_CONFIG is not set -CONFIG_SRAM=y -# CONFIG_DW_XDATA_PCIE is not set -# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_SRAM is not set # CONFIG_XILINX_SDFEC is not set # CONFIG_HISI_HIKEY_USB is not set # CONFIG_OPEN_DICE is not set @@ -1756,14 +1480,12 @@ CONFIG_SRAM=y # CONFIG_EEPROM_AT25 is not set # CONFIG_EEPROM_LEGACY is not set # CONFIG_EEPROM_MAX6875 is not set -CONFIG_EEPROM_93CX6=y +CONFIG_EEPROM_93CX6=m # CONFIG_EEPROM_93XX46 is not set # CONFIG_EEPROM_IDT_89HPESX is not set # CONFIG_EEPROM_EE1004 is not set # end of EEPROM support -# CONFIG_CB710_CORE is not set - # # Texas Instruments shared transport line discipline # @@ -1773,49 +1495,42 @@ CONFIG_EEPROM_93CX6=y # CONFIG_SENSORS_LIS3_SPI is not set # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set -# CONFIG_VMWARE_VMCI is not set -# CONFIG_GENWQE is not set # CONFIG_ECHO is not set -# CONFIG_BCM_VK is not set -# CONFIG_MISC_ALCOR_PCI is not set -# CONFIG_MISC_RTSX_PCI is not set # CONFIG_MISC_RTSX_USB is not set -# CONFIG_HABANA_AI is not set # CONFIG_UACCE is not set # CONFIG_PVPANIC is not set -# CONFIG_GP_PCI1XXXX is not set # end of Misc devices # # SCSI device support # CONFIG_SCSI_MOD=y -CONFIG_RAID_ATTRS=m +# CONFIG_RAID_ATTRS is not set CONFIG_SCSI_COMMON=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y -CONFIG_SCSI_PROC_FS=y +# CONFIG_SCSI_PROC_FS is not set # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y # CONFIG_CHR_DEV_ST is not set -CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR is not set # CONFIG_CHR_DEV_SG is not set CONFIG_BLK_DEV_BSG=y # CONFIG_CHR_DEV_SCH is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set -CONFIG_SCSI_SCAN_ASYNC=y +# CONFIG_SCSI_SCAN_ASYNC is not set # # SCSI Transports # -CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_SPI_ATTRS is not set # CONFIG_SCSI_FC_ATTRS is not set # CONFIG_SCSI_ISCSI_ATTRS is not set -CONFIG_SCSI_SAS_ATTRS=m +# CONFIG_SCSI_SAS_ATTRS is not set # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set # end of SCSI Transports @@ -1823,220 +1538,25 @@ CONFIG_SCSI_SAS_ATTRS=m CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set # CONFIG_ISCSI_BOOT_SYSFS is not set -# CONFIG_SCSI_CXGB3_ISCSI is not set -# CONFIG_SCSI_CXGB4_ISCSI is not set -# CONFIG_SCSI_BNX2_ISCSI is not set -# CONFIG_BE2ISCSI is not set -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set -# CONFIG_SCSI_HPSA is not set -# CONFIG_SCSI_3W_9XXX is not set -# CONFIG_SCSI_3W_SAS is not set -# CONFIG_SCSI_ACARD is not set -# CONFIG_SCSI_AACRAID is not set -# CONFIG_SCSI_AIC7XXX is not set -# CONFIG_SCSI_AIC79XX is not set -# CONFIG_SCSI_AIC94XX is not set -# CONFIG_SCSI_HISI_SAS is not set -# CONFIG_SCSI_MVSAS is not set -# CONFIG_SCSI_MVUMI is not set -# CONFIG_SCSI_ADVANSYS is not set -# CONFIG_SCSI_ARCMSR is not set -# CONFIG_SCSI_ESAS2R is not set -# CONFIG_MEGARAID_NEWGEN is not set -# CONFIG_MEGARAID_LEGACY is not set -CONFIG_MEGARAID_SAS=m -CONFIG_SCSI_MPT3SAS=m -CONFIG_SCSI_MPT2SAS_MAX_SGE=128 -CONFIG_SCSI_MPT3SAS_MAX_SGE=128 -CONFIG_SCSI_MPT2SAS=m -# CONFIG_SCSI_MPI3MR is not set -# CONFIG_SCSI_SMARTPQI is not set -# CONFIG_SCSI_HPTIOP is not set -# CONFIG_SCSI_BUSLOGIC is not set -# CONFIG_SCSI_MYRB is not set -# CONFIG_SCSI_MYRS is not set -# CONFIG_SCSI_SNIC is not set -# CONFIG_SCSI_DMX3191D is not set -# CONFIG_SCSI_FDOMAIN_PCI is not set -# CONFIG_SCSI_IPS is not set -# CONFIG_SCSI_INITIO is not set -# CONFIG_SCSI_INIA100 is not set -# CONFIG_SCSI_STEX is not set -# CONFIG_SCSI_SYM53C8XX_2 is not set -# CONFIG_SCSI_IPR is not set -# CONFIG_SCSI_QLOGIC_1280 is not set -# CONFIG_SCSI_QLA_ISCSI is not set -# CONFIG_SCSI_DC395x is not set -# CONFIG_SCSI_AM53C974 is not set -# CONFIG_SCSI_WD719X is not set # CONFIG_SCSI_DEBUG is not set -# CONFIG_SCSI_PMCRAID is not set -# CONFIG_SCSI_PM8001 is not set -# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set # CONFIG_SCSI_DH is not set # end of SCSI device support -CONFIG_ATA=y -CONFIG_SATA_HOST=y -CONFIG_ATA_VERBOSE_ERROR=y -CONFIG_ATA_FORCE=y -CONFIG_SATA_PMP=y - -# -# Controllers with non-SFF native interface -# -CONFIG_SATA_AHCI=y -CONFIG_SATA_MOBILE_LPM_POLICY=0 -CONFIG_SATA_AHCI_PLATFORM=y -# CONFIG_AHCI_DWC is not set -# CONFIG_AHCI_CEVA is not set -# CONFIG_AHCI_QORIQ is not set -# CONFIG_SATA_INIC162X is not set -# CONFIG_SATA_ACARD_AHCI is not set -# CONFIG_SATA_SIL24 is not set -CONFIG_ATA_SFF=y - -# -# SFF controllers with custom DMA interface -# -# CONFIG_PDC_ADMA is not set -# CONFIG_SATA_QSTOR is not set -# CONFIG_SATA_SX4 is not set -CONFIG_ATA_BMDMA=y - -# -# SATA SFF controllers with BMDMA -# -# CONFIG_ATA_PIIX is not set -# CONFIG_SATA_DWC is not set -CONFIG_SATA_MV=m -CONFIG_SATA_NV=m -CONFIG_SATA_PROMISE=m -CONFIG_SATA_SIL=m -# CONFIG_SATA_SIS is not set -# CONFIG_SATA_SVW is not set -# CONFIG_SATA_ULI is not set -# CONFIG_SATA_VIA is not set -# CONFIG_SATA_VITESSE is not set - -# -# PATA SFF controllers with BMDMA -# -# CONFIG_PATA_ALI is not set -# CONFIG_PATA_AMD is not set -# CONFIG_PATA_ARTOP is not set -# CONFIG_PATA_ATIIXP is not set -# CONFIG_PATA_ATP867X is not set -# CONFIG_PATA_CMD64X is not set -# CONFIG_PATA_CYPRESS is not set -# CONFIG_PATA_EFAR is not set -# CONFIG_PATA_HPT366 is not set -# CONFIG_PATA_HPT37X is not set -# CONFIG_PATA_HPT3X2N is not set -# CONFIG_PATA_HPT3X3 is not set -# CONFIG_PATA_IT8213 is not set -# CONFIG_PATA_IT821X is not set -# CONFIG_PATA_JMICRON is not set -# CONFIG_PATA_MARVELL is not set -# CONFIG_PATA_NETCELL is not set -# CONFIG_PATA_NINJA32 is not set -# CONFIG_PATA_NS87415 is not set -# CONFIG_PATA_OLDPIIX is not set -# CONFIG_PATA_OPTIDMA is not set -# CONFIG_PATA_PDC2027X is not set -# CONFIG_PATA_PDC_OLD is not set -# CONFIG_PATA_RADISYS is not set -# CONFIG_PATA_RDC is not set -# CONFIG_PATA_SCH is not set -# CONFIG_PATA_SERVERWORKS is not set -# CONFIG_PATA_SIL680 is not set -# CONFIG_PATA_SIS is not set -# CONFIG_PATA_TOSHIBA is not set -# CONFIG_PATA_TRIFLEX is not set -# CONFIG_PATA_VIA is not set -# CONFIG_PATA_WINBOND is not set - -# -# PIO-only SFF controllers -# -# CONFIG_PATA_CMD640_PCI is not set -# CONFIG_PATA_MPIIX is not set -# CONFIG_PATA_NS87410 is not set -# CONFIG_PATA_OPTI is not set -# CONFIG_PATA_PCMCIA is not set -# CONFIG_PATA_OF_PLATFORM is not set -# CONFIG_PATA_RZ1000 is not set - -# -# Generic fallback / legacy drivers -# -# CONFIG_ATA_GENERIC is not set -# CONFIG_PATA_LEGACY is not set -CONFIG_MD=y -CONFIG_BLK_DEV_MD=y -CONFIG_MD_AUTODETECT=y -CONFIG_MD_LINEAR=m -CONFIG_MD_RAID0=y -CONFIG_MD_RAID1=y -CONFIG_MD_RAID10=y -CONFIG_MD_RAID456=y -# CONFIG_MD_MULTIPATH is not set -# CONFIG_MD_FAULTY is not set -CONFIG_BCACHE=m -# CONFIG_BCACHE_DEBUG is not set -# CONFIG_BCACHE_CLOSURES_DEBUG is not set -# CONFIG_BCACHE_ASYNC_REGISTRATION is not set -CONFIG_BLK_DEV_DM_BUILTIN=y -CONFIG_BLK_DEV_DM=y -# CONFIG_DM_DEBUG is not set -# CONFIG_DM_UNSTRIPED is not set -CONFIG_DM_CRYPT=m -# CONFIG_DM_SNAPSHOT is not set -# CONFIG_DM_THIN_PROVISIONING is not set -# CONFIG_DM_CACHE is not set -# CONFIG_DM_WRITECACHE is not set -# CONFIG_DM_EBS is not set -# CONFIG_DM_ERA is not set -# CONFIG_DM_CLONE is not set -# CONFIG_DM_MIRROR is not set -CONFIG_DM_RAID=y -# CONFIG_DM_ZERO is not set -# CONFIG_DM_MULTIPATH is not set -# CONFIG_DM_DELAY is not set -# CONFIG_DM_DUST is not set -# CONFIG_DM_INIT is not set -# CONFIG_DM_UEVENT is not set -# CONFIG_DM_FLAKEY is not set -# CONFIG_DM_VERITY is not set -# CONFIG_DM_SWITCH is not set -# CONFIG_DM_LOG_WRITES is not set -# CONFIG_DM_INTEGRITY is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set # CONFIG_TARGET_CORE is not set -# CONFIG_FUSION is not set - -# -# IEEE 1394 (FireWire) support -# -# CONFIG_FIREWIRE is not set -# CONFIG_FIREWIRE_NOSY is not set -# end of IEEE 1394 (FireWire) support - CONFIG_NETDEVICES=y CONFIG_MII=y CONFIG_NET_CORE=y # CONFIG_BONDING is not set # CONFIG_DUMMY is not set -CONFIG_WIREGUARD=y +CONFIG_WIREGUARD=m # CONFIG_WIREGUARD_DEBUG is not set # CONFIG_EQUALIZER is not set -# CONFIG_NET_FC is not set # CONFIG_NET_TEAM is not set -CONFIG_MACVLAN=y -# CONFIG_MACVTAP is not set -CONFIG_IPVLAN_L3S=y -CONFIG_IPVLAN=y -# CONFIG_IPVTAP is not set -CONFIG_VXLAN=m +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set # CONFIG_GENEVE is not set # CONFIG_BAREUDP is not set # CONFIG_GTP is not set @@ -2044,145 +1564,10 @@ CONFIG_VXLAN=m # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set CONFIG_TUN=m -# CONFIG_TUN_VNET_CROSS_LE is not set -CONFIG_VETH=y -# CONFIG_NLMON is not set -# CONFIG_NET_VRF is not set -# CONFIG_ARCNET is not set -CONFIG_ETHERNET=y -CONFIG_MDIO=y -# CONFIG_NET_VENDOR_3COM is not set -# CONFIG_NET_VENDOR_ADAPTEC is not set -# CONFIG_NET_VENDOR_AGERE is not set -CONFIG_NET_VENDOR_ALACRITECH=y -# CONFIG_SLICOSS is not set -# CONFIG_NET_VENDOR_ALTEON is not set -# CONFIG_ALTERA_TSE is not set -CONFIG_NET_VENDOR_AMAZON=y -# CONFIG_ENA_ETHERNET is not set -# CONFIG_NET_VENDOR_AMD is not set -CONFIG_NET_VENDOR_AQUANTIA=y -# CONFIG_AQTION is not set -# CONFIG_NET_VENDOR_ARC is not set -CONFIG_NET_VENDOR_ASIX=y -# CONFIG_SPI_AX88796C is not set -# CONFIG_NET_VENDOR_ATHEROS is not set -# CONFIG_NET_VENDOR_BROADCOM is not set -CONFIG_NET_VENDOR_CADENCE=y -# CONFIG_MACB is not set -# CONFIG_NET_VENDOR_CAVIUM is not set -# CONFIG_NET_VENDOR_CHELSIO is not set -# CONFIG_NET_VENDOR_CISCO is not set -CONFIG_NET_VENDOR_CORTINA=y -# CONFIG_GEMINI_ETHERNET is not set -CONFIG_NET_VENDOR_DAVICOM=y -# CONFIG_DM9051 is not set -# CONFIG_DNET is not set -# CONFIG_NET_VENDOR_DEC is not set -# CONFIG_NET_VENDOR_DLINK is not set -# CONFIG_NET_VENDOR_EMULEX is not set -CONFIG_NET_VENDOR_ENGLEDER=y -# CONFIG_TSNEP is not set -# CONFIG_NET_VENDOR_EZCHIP is not set -CONFIG_NET_VENDOR_FUJITSU=y -# CONFIG_PCMCIA_FMVJ18X is not set -CONFIG_NET_VENDOR_FUNGIBLE=y -# CONFIG_FUN_ETH is not set -CONFIG_NET_VENDOR_GOOGLE=y -# CONFIG_GVE is not set -# CONFIG_NET_VENDOR_HISILICON is not set -CONFIG_NET_VENDOR_HUAWEI=y -# CONFIG_HINIC is not set -CONFIG_NET_VENDOR_I825XX=y -CONFIG_NET_VENDOR_INTEL=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGB_HWMON=y -# CONFIG_IGBVF is not set -# CONFIG_IXGB is not set -CONFIG_IXGBE=y -CONFIG_IXGBE_HWMON=y -# CONFIG_IXGBEVF is not set -# CONFIG_I40E is not set -# CONFIG_I40EVF is not set -# CONFIG_ICE is not set -# CONFIG_FM10K is not set -# CONFIG_IGC is not set -CONFIG_NET_VENDOR_WANGXUN=y -# CONFIG_NGBE is not set -# CONFIG_TXGBE is not set -# CONFIG_JME is not set -CONFIG_NET_VENDOR_ADI=y -CONFIG_NET_VENDOR_LITEX=y -# CONFIG_LITEX_LITEETH is not set -# CONFIG_NET_VENDOR_MARVELL is not set -# CONFIG_NET_VENDOR_MELLANOX is not set -# CONFIG_NET_VENDOR_MICREL is not set -# CONFIG_NET_VENDOR_MICROCHIP is not set -CONFIG_NET_VENDOR_MICROSEMI=y -CONFIG_NET_VENDOR_MICROSOFT=y -# CONFIG_NET_VENDOR_MYRI is not set -# CONFIG_FEALNX is not set -CONFIG_NET_VENDOR_NI=y -# CONFIG_NI_XGE_MANAGEMENT_ENET is not set -# CONFIG_NET_VENDOR_NATSEMI is not set -CONFIG_NET_VENDOR_NETERION=y -# CONFIG_S2IO is not set -CONFIG_NET_VENDOR_NETRONOME=y -# CONFIG_NFP is not set -# CONFIG_NET_VENDOR_NVIDIA is not set -# CONFIG_NET_VENDOR_OKI is not set -# CONFIG_ETHOC is not set -CONFIG_NET_VENDOR_PACKET_ENGINES=y -# CONFIG_HAMACHI is not set -# CONFIG_YELLOWFIN is not set -CONFIG_NET_VENDOR_PENSANDO=y -# CONFIG_IONIC is not set -# CONFIG_NET_VENDOR_QLOGIC is not set -# CONFIG_NET_VENDOR_BROCADE is not set -# CONFIG_NET_VENDOR_QUALCOMM is not set -# CONFIG_NET_VENDOR_RDC is not set -# CONFIG_NET_VENDOR_REALTEK is not set -# CONFIG_NET_VENDOR_RENESAS is not set -# CONFIG_NET_VENDOR_ROCKER is not set -# CONFIG_NET_VENDOR_SAMSUNG is not set -# CONFIG_NET_VENDOR_SEEQ is not set -# CONFIG_NET_VENDOR_SILAN is not set -# CONFIG_NET_VENDOR_SIS is not set -CONFIG_NET_VENDOR_SOLARFLARE=y -# CONFIG_SFC is not set -# CONFIG_SFC_FALCON is not set -# CONFIG_SFC_SIENA is not set -# CONFIG_NET_VENDOR_SMSC is not set -CONFIG_NET_VENDOR_SOCIONEXT=y -CONFIG_NET_VENDOR_STMICRO=y -CONFIG_STMMAC_ETH=y -# CONFIG_STMMAC_SELFTESTS is not set -CONFIG_STMMAC_PLATFORM=y -# CONFIG_DWMAC_DWC_QOS_ETH is not set -CONFIG_DWMAC_GENERIC=y -CONFIG_DWMAC_ROCKCHIP=y -# CONFIG_DWMAC_INTEL_PLAT is not set -# CONFIG_DWMAC_LOONGSON is not set -# CONFIG_STMMAC_PCI is not set -# CONFIG_NET_VENDOR_SUN is not set -# CONFIG_NET_VENDOR_SYNOPSYS is not set -# CONFIG_NET_VENDOR_TEHUTI is not set -# CONFIG_NET_VENDOR_TI is not set -CONFIG_NET_VENDOR_VERTEXCOM=y -# CONFIG_MSE102X is not set -# CONFIG_NET_VENDOR_VIA is not set -# CONFIG_NET_VENDOR_WIZNET is not set -CONFIG_NET_VENDOR_XILINX=y -# CONFIG_XILINX_EMACLITE is not set -# CONFIG_XILINX_AXI_EMAC is not set -# CONFIG_XILINX_LL_TEMAC is not set -CONFIG_NET_VENDOR_XIRCOM=y -# CONFIG_PCMCIA_XIRC2PS is not set -# CONFIG_FDDI is not set -# CONFIG_HIPPI is not set +CONFIG_TUN_VNET_CROSS_LE=y +CONFIG_VETH=m +CONFIG_NLMON=m +# CONFIG_ETHERNET is not set CONFIG_PHYLINK=y CONFIG_PHYLIB=y CONFIG_SWPHY=y @@ -2241,59 +1626,6 @@ CONFIG_ROCKCHIP_PHY=y # CONFIG_XILINX_GMII2RGMII is not set # CONFIG_MICREL_KS8995MA is not set # CONFIG_PSE_CONTROLLER is not set -CONFIG_CAN_DEV=y -# CONFIG_CAN_VCAN is not set -# CONFIG_CAN_VXCAN is not set -CONFIG_CAN_NETLINK=y -CONFIG_CAN_CALC_BITTIMING=y -# CONFIG_CAN_CAN327 is not set -# CONFIG_CAN_FLEXCAN is not set -# CONFIG_CAN_GRCAN is not set -# CONFIG_CAN_KVASER_PCIEFD is not set -# CONFIG_CAN_SLCAN is not set -# CONFIG_CAN_XILINXCAN is not set -# CONFIG_CAN_C_CAN is not set -# CONFIG_CAN_CC770 is not set -# CONFIG_CAN_CTUCANFD_PCI is not set -# CONFIG_CAN_CTUCANFD_PLATFORM is not set -# CONFIG_CAN_IFI_CANFD is not set -# CONFIG_CAN_M_CAN is not set -# CONFIG_CAN_PEAK_PCIEFD is not set -CONFIG_CAN_SJA1000=y -# CONFIG_CAN_EMS_PCI is not set -# CONFIG_CAN_EMS_PCMCIA is not set -# CONFIG_CAN_F81601 is not set -# CONFIG_CAN_KVASER_PCI is not set -# CONFIG_CAN_PEAK_PCI is not set -# CONFIG_CAN_PEAK_PCMCIA is not set -CONFIG_CAN_PLX_PCI=y -# CONFIG_CAN_SJA1000_ISA is not set -# CONFIG_CAN_SJA1000_PLATFORM is not set -# CONFIG_CAN_SOFTING is not set - -# -# CAN SPI interfaces -# -# CONFIG_CAN_HI311X is not set -# CONFIG_CAN_MCP251X is not set -# CONFIG_CAN_MCP251XFD is not set -# end of CAN SPI interfaces - -# -# CAN USB interfaces -# -# CONFIG_CAN_8DEV_USB is not set -# CONFIG_CAN_EMS_USB is not set -# CONFIG_CAN_ESD_USB is not set -# CONFIG_CAN_ETAS_ES58X is not set -# CONFIG_CAN_GS_USB is not set -# CONFIG_CAN_KVASER_USB is not set -# CONFIG_CAN_MCBA_USB is not set -# CONFIG_CAN_PEAK_USB is not set -# CONFIG_CAN_UCAN is not set -# end of CAN USB interfaces - -# CONFIG_CAN_DEBUG_DEVICES is not set CONFIG_MDIO_DEVICE=y CONFIG_MDIO_BUS=y CONFIG_FWNODE_MDIO=y @@ -2307,7 +1639,6 @@ CONFIG_MDIO_DEVRES=y # CONFIG_MDIO_OCTEON is not set # CONFIG_MDIO_IPQ4019 is not set # CONFIG_MDIO_IPQ8064 is not set -# CONFIG_MDIO_THUNDER is not set # # MDIO Multiplexers @@ -2319,21 +1650,10 @@ CONFIG_MDIO_DEVRES=y # # PCS device drivers # -CONFIG_PCS_XPCS=y # end of PCS device drivers -CONFIG_PPP=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_DEFLATE=m -# CONFIG_PPP_FILTER is not set -# CONFIG_PPP_MPPE is not set -# CONFIG_PPP_MULTILINK is not set -CONFIG_PPPOE=m -# CONFIG_PPTP is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m +# CONFIG_PPP is not set # CONFIG_SLIP is not set -CONFIG_SLHC=m CONFIG_USB_NET_DRIVERS=y # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set @@ -2374,18 +1694,13 @@ CONFIG_USB_NET_RNDIS_HOST=y CONFIG_USB_RTL8153_ECM=m CONFIG_WLAN=y CONFIG_WLAN_VENDOR_ADMTEK=y -# CONFIG_ADM8211 is not set CONFIG_ATH_COMMON=m CONFIG_WLAN_VENDOR_ATH=y # CONFIG_ATH_DEBUG is not set -CONFIG_ATH5K=m -# CONFIG_ATH5K_DEBUG is not set -CONFIG_ATH5K_PCI=y CONFIG_ATH9K_HW=m CONFIG_ATH9K_COMMON=m CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m -CONFIG_ATH9K_PCI=y # CONFIG_ATH9K_AHB is not set # CONFIG_ATH9K_DEBUGFS is not set # CONFIG_ATH9K_DYNACK is not set @@ -2393,7 +1708,6 @@ CONFIG_ATH9K_PCI=y CONFIG_ATH9K_RFKILL=y # CONFIG_ATH9K_CHANNEL_CONTEXT is not set CONFIG_ATH9K_PCOEM=y -# CONFIG_ATH9K_PCI_NO_EEPROM is not set # CONFIG_ATH9K_HTC is not set # CONFIG_ATH9K_HWRNG is not set # CONFIG_CARL9170 is not set @@ -2402,10 +1716,8 @@ CONFIG_ATH6KL=m CONFIG_ATH6KL_USB=m # CONFIG_ATH6KL_DEBUG is not set CONFIG_AR5523=m -# CONFIG_WIL6210 is not set CONFIG_ATH10K=m CONFIG_ATH10K_CE=y -# CONFIG_ATH10K_PCI is not set # CONFIG_ATH10K_SDIO is not set # CONFIG_ATH10K_USB is not set # CONFIG_ATH10K_DEBUG is not set @@ -2413,7 +1725,6 @@ CONFIG_ATH10K_CE=y CONFIG_WCN36XX=m # CONFIG_WCN36XX_DEBUGFS is not set CONFIG_WLAN_VENDOR_ATMEL=y -# CONFIG_ATMEL is not set CONFIG_AT76C50X_USB=m CONFIG_WLAN_VENDOR_BROADCOM=y CONFIG_B43=m @@ -2422,8 +1733,6 @@ CONFIG_B43_SSB=y CONFIG_B43_BUSES_BCMA_AND_SSB=y # CONFIG_B43_BUSES_BCMA is not set # CONFIG_B43_BUSES_SSB is not set -CONFIG_B43_PCI_AUTOSELECT=y -CONFIG_B43_PCICORE_AUTOSELECT=y # CONFIG_B43_SDIO is not set CONFIG_B43_BCMA_PIO=y CONFIG_B43_PIO=y @@ -2439,28 +1748,18 @@ CONFIG_BRCMUTIL=m # CONFIG_BRCMSMAC is not set CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_PROTO_BCDC=y -CONFIG_BRCMFMAC_PROTO_MSGBUF=y # CONFIG_BRCMFMAC_SDIO is not set CONFIG_BRCMFMAC_USB=y -CONFIG_BRCMFMAC_PCIE=y # CONFIG_BRCM_TRACING is not set # CONFIG_BRCMDBG is not set CONFIG_WLAN_VENDOR_CISCO=y -# CONFIG_AIRO_CS is not set CONFIG_WLAN_VENDOR_INTEL=y -# CONFIG_IPW2100 is not set -# CONFIG_IPW2200 is not set -# CONFIG_IWL4965 is not set -# CONFIG_IWL3945 is not set -# CONFIG_IWLWIFI is not set CONFIG_WLAN_VENDOR_INTERSIL=y # CONFIG_HOSTAP is not set -# CONFIG_HERMES is not set # CONFIG_P54_COMMON is not set CONFIG_WLAN_VENDOR_MARVELL=y CONFIG_LIBERTAS=m CONFIG_LIBERTAS_USB=m -# CONFIG_LIBERTAS_CS is not set # CONFIG_LIBERTAS_SDIO is not set # CONFIG_LIBERTAS_SPI is not set # CONFIG_LIBERTAS_DEBUG is not set @@ -2469,22 +1768,14 @@ CONFIG_LIBERTAS_THINFIRM=m # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set # CONFIG_LIBERTAS_THINFIRM_USB is not set CONFIG_MWIFIEX=m -CONFIG_MWIFIEX_SDIO=m -# CONFIG_MWIFIEX_PCIE is not set +# CONFIG_MWIFIEX_SDIO is not set CONFIG_MWIFIEX_USB=m -# CONFIG_MWL8K is not set CONFIG_WLAN_VENDOR_MEDIATEK=y CONFIG_MT7601U=m # CONFIG_MT76x0U is not set -# CONFIG_MT76x0E is not set -# CONFIG_MT76x2E is not set # CONFIG_MT76x2U is not set -# CONFIG_MT7603E is not set -# CONFIG_MT7615E is not set # CONFIG_MT7663U is not set # CONFIG_MT7663S is not set -# CONFIG_MT7915E is not set -# CONFIG_MT7921E is not set # CONFIG_MT7921S is not set # CONFIG_MT7921U is not set CONFIG_WLAN_VENDOR_MICROCHIP=y @@ -2494,10 +1785,6 @@ CONFIG_WLAN_VENDOR_PURELIFI=y # CONFIG_PLFXLC is not set CONFIG_WLAN_VENDOR_RALINK=y CONFIG_RT2X00=m -# CONFIG_RT2400PCI is not set -# CONFIG_RT2500PCI is not set -# CONFIG_RT61PCI is not set -# CONFIG_RT2800PCI is not set CONFIG_RT2500USB=m CONFIG_RT73USB=m CONFIG_RT2800USB=m @@ -2515,50 +1802,18 @@ CONFIG_RT2X00_LIB_CRYPTO=y CONFIG_RT2X00_LIB_LEDS=y # CONFIG_RT2X00_DEBUG is not set CONFIG_WLAN_VENDOR_REALTEK=y -CONFIG_RTL8180=m CONFIG_RTL8187=m CONFIG_RTL8187_LEDS=y CONFIG_RTL_CARDS=m -CONFIG_RTL8192CE=m -CONFIG_RTL8192SE=m -CONFIG_RTL8192DE=m -CONFIG_RTL8723AE=m -CONFIG_RTL8723BE=m -CONFIG_RTL8188EE=m -CONFIG_RTL8192EE=m -CONFIG_RTL8821AE=m CONFIG_RTL8192CU=m CONFIG_RTLWIFI=m -CONFIG_RTLWIFI_PCI=m CONFIG_RTLWIFI_USB=m CONFIG_RTLWIFI_DEBUG=y CONFIG_RTL8192C_COMMON=m -CONFIG_RTL8723_COMMON=m -CONFIG_RTLBTCOEXIST=m CONFIG_RTL8XXXU=m CONFIG_RTL8XXXU_UNTESTED=y CONFIG_RTW88=m -CONFIG_RTW88_CORE=m -CONFIG_RTW88_PCI=m -CONFIG_RTW88_8822B=m -CONFIG_RTW88_8822C=m -CONFIG_RTW88_8723D=m -CONFIG_RTW88_8821C=m -CONFIG_RTW88_8822BE=m -CONFIG_RTW88_8822CE=m -CONFIG_RTW88_8723DE=m -CONFIG_RTW88_8821CE=m -# CONFIG_RTW88_DEBUG is not set -# CONFIG_RTW88_DEBUGFS is not set CONFIG_RTW89=m -CONFIG_RTW89_CORE=m -CONFIG_RTW89_PCI=m -CONFIG_RTW89_8852A=m -CONFIG_RTW89_8852C=m -CONFIG_RTW89_8852AE=m -CONFIG_RTW89_8852CE=m -# CONFIG_RTW89_DEBUGMSG is not set -# CONFIG_RTW89_DEBUGFS is not set CONFIG_WLAN_VENDOR_RSI=y # CONFIG_RSI_91X is not set CONFIG_WLAN_VENDOR_SILABS=y @@ -2575,9 +1830,6 @@ CONFIG_WLAN_VENDOR_ZYDAS=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_WLAN_VENDOR_QUANTENNA=y -# CONFIG_QTNFMAC_PCIE is not set -# CONFIG_PCMCIA_RAYCS is not set -# CONFIG_PCMCIA_WL3501 is not set # CONFIG_MAC80211_HWSIM is not set CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_VIRT_WIFI is not set @@ -2589,12 +1841,9 @@ CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_WWAN is not set # end of Wireless WAN -# CONFIG_VMXNET3 is not set # CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set -CONFIG_ISDN=y -CONFIG_ISDN_CAPI=y -# CONFIG_MISDN is not set +# CONFIG_ISDN is not set # # Input device support @@ -2605,7 +1854,6 @@ CONFIG_INPUT_FF_MEMLESS=y CONFIG_INPUT_POLLDEV=y # CONFIG_INPUT_SPARSEKMAP is not set CONFIG_INPUT_MATRIXKMAP=y -CONFIG_INPUT_VIVALDIFMAP=y # # Userland interfaces @@ -2622,7 +1870,7 @@ CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ADC=y # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set -CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_QT1050 is not set # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set @@ -2686,28 +1934,21 @@ CONFIG_JOYSTICK_ADC=y # CONFIG_JOYSTICK_JOYDUMP is not set CONFIG_JOYSTICK_XPAD=m CONFIG_JOYSTICK_XPAD_FF=y -# CONFIG_JOYSTICK_XPAD_LEDS is not set +CONFIG_JOYSTICK_XPAD_LEDS=y # CONFIG_JOYSTICK_PSXPAD_SPI is not set # CONFIG_JOYSTICK_PXRC is not set # CONFIG_JOYSTICK_QWIIC is not set # CONFIG_JOYSTICK_FSIA6B is not set CONFIG_JOYSTICK_SINGLEADCJOY=y # CONFIG_JOYSTICK_SENSEHAT is not set -CONFIG_INPUT_TABLET=y -# CONFIG_TABLET_USB_ACECAD is not set -# CONFIG_TABLET_USB_AIPTEK is not set -# CONFIG_TABLET_USB_HANWANG is not set -# CONFIG_TABLET_USB_KBTAB is not set -# CONFIG_TABLET_USB_PEGASUS is not set -# CONFIG_TABLET_SERIAL_WACOM4 is not set +# CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set # CONFIG_TOUCHSCREEN_ADC is not set # CONFIG_TOUCHSCREEN_AR1021_I2C is not set -CONFIG_TOUCHSCREEN_ATMEL_MXT=y -# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_TOUCHSCREEN_BU21013 is not set # CONFIG_TOUCHSCREEN_BU21029 is not set @@ -2751,25 +1992,7 @@ CONFIG_TOUCHSCREEN_GOODIX=y # CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_PIXCIR is not set # CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set -CONFIG_TOUCHSCREEN_USB_COMPOSITE=y -CONFIG_TOUCHSCREEN_USB_EGALAX=y -CONFIG_TOUCHSCREEN_USB_PANJIT=y -CONFIG_TOUCHSCREEN_USB_3M=y -CONFIG_TOUCHSCREEN_USB_ITM=y -CONFIG_TOUCHSCREEN_USB_ETURBO=y -CONFIG_TOUCHSCREEN_USB_GUNZE=y -CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y -CONFIG_TOUCHSCREEN_USB_IRTOUCH=y -CONFIG_TOUCHSCREEN_USB_IDEALTEK=y -CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y -CONFIG_TOUCHSCREEN_USB_GOTOP=y -CONFIG_TOUCHSCREEN_USB_JASTEC=y -CONFIG_TOUCHSCREEN_USB_ELO=y -CONFIG_TOUCHSCREEN_USB_E2I=y -CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y -CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y -CONFIG_TOUCHSCREEN_USB_NEXIO=y -CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set # CONFIG_TOUCHSCREEN_TSC_SERIO is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set @@ -2780,7 +2003,6 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y # CONFIG_TOUCHSCREEN_SIS_I2C is not set # CONFIG_TOUCHSCREEN_ST1232 is not set # CONFIG_TOUCHSCREEN_STMFTS is not set -# CONFIG_TOUCHSCREEN_SUR40 is not set # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set # CONFIG_TOUCHSCREEN_SX8654 is not set # CONFIG_TOUCHSCREEN_TPS6507X is not set @@ -2822,20 +2044,7 @@ CONFIG_INPUT_RK805_PWRKEY=y # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set # CONFIG_INPUT_DRV2667_HAPTICS is not set -CONFIG_RMI4_CORE=y -# CONFIG_RMI4_I2C is not set -# CONFIG_RMI4_SPI is not set -# CONFIG_RMI4_SMB is not set -CONFIG_RMI4_F03=y -CONFIG_RMI4_F03_SERIO=y -CONFIG_RMI4_2D_SENSOR=y -CONFIG_RMI4_F11=y -CONFIG_RMI4_F12=y -CONFIG_RMI4_F30=y -# CONFIG_RMI4_F34 is not set -# CONFIG_RMI4_F3A is not set -# CONFIG_RMI4_F54 is not set -# CONFIG_RMI4_F55 is not set +# CONFIG_RMI4_CORE is not set # # Hardware I/O ports @@ -2843,8 +2052,7 @@ CONFIG_RMI4_F30=y CONFIG_SERIO=y CONFIG_SERIO_SERPORT=m # CONFIG_SERIO_AMBAKMI is not set -# CONFIG_SERIO_PCIPS2 is not set -CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_LIBPS2 is not set # CONFIG_SERIO_RAW is not set # CONFIG_SERIO_ALTERA_PS2 is not set # CONFIG_SERIO_PS2MULT is not set @@ -2855,8 +2063,6 @@ CONFIG_SERIO_LIBPS2=y CONFIG_GAMEPORT=y # CONFIG_GAMEPORT_NS558 is not set # CONFIG_GAMEPORT_L4 is not set -# CONFIG_GAMEPORT_EMU10K1 is not set -# CONFIG_GAMEPORT_FM801 is not set # end of Hardware I/O ports # end of Input device support @@ -2880,12 +2086,10 @@ CONFIG_LDISC_AUTOLOAD=y CONFIG_SERIAL_EARLYCON=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -CONFIG_SERIAL_8250_16550A_VARIANTS=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set # CONFIG_SERIAL_8250_FINTEK is not set CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DMA=y -# CONFIG_SERIAL_8250_PCI is not set -# CONFIG_SERIAL_8250_CS is not set CONFIG_SERIAL_8250_NR_UARTS=5 CONFIG_SERIAL_8250_RUNTIME_UARTS=5 CONFIG_SERIAL_8250_EXTENDED=y @@ -2897,22 +2101,19 @@ CONFIG_SERIAL_8250_DWLIB=y CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_DW=y # CONFIG_SERIAL_8250_RT288X is not set -CONFIG_SERIAL_8250_PERICOM=y CONFIG_SERIAL_OF_PLATFORM=y # # Non-8250 serial port support # # CONFIG_SERIAL_AMBA_PL010 is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_SERIAL_AMBA_PL011 is not set # CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set # CONFIG_SERIAL_UARTLITE is not set CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y -# CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_SIFIVE is not set # CONFIG_SERIAL_SCCNXP is not set # CONFIG_SERIAL_SC16IS7XX is not set @@ -2920,7 +2121,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_ALTERA_UART is not set # CONFIG_SERIAL_XILINX_PS_UART is not set # CONFIG_SERIAL_ARC is not set -# CONFIG_SERIAL_RP2 is not set # CONFIG_SERIAL_FSL_LPUART is not set # CONFIG_SERIAL_FSL_LINFLEXUART is not set # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set @@ -2930,7 +2130,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_N_GSM is not set -# CONFIG_NOZOMI is not set # CONFIG_NULL_TTY is not set # CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y @@ -2944,34 +2143,8 @@ CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y -CONFIG_HW_RANDOM_CN10K=y -# CONFIG_APPLICOM is not set - -# -# PCMCIA character devices -# -# CONFIG_SYNCLINK_CS is not set -# CONFIG_CARDMAN_4000 is not set -# CONFIG_CARDMAN_4040 is not set -# CONFIG_SCR24X is not set -# CONFIG_IPWIRELESS is not set -# end of PCMCIA character devices - CONFIG_DEVMEM=y -CONFIG_DEVPORT=y -CONFIG_TCG_TPM=y -CONFIG_HW_RANDOM_TPM=y -# CONFIG_TCG_TIS is not set -# CONFIG_TCG_TIS_SPI is not set -# CONFIG_TCG_TIS_I2C is not set -# CONFIG_TCG_TIS_I2C_CR50 is not set -# CONFIG_TCG_TIS_I2C_ATMEL is not set -CONFIG_TCG_TIS_I2C_INFINEON=y -# CONFIG_TCG_TIS_I2C_NUVOTON is not set -# CONFIG_TCG_ATMEL is not set -# CONFIG_TCG_VTPM_PROXY is not set -# CONFIG_TCG_TIS_ST33ZP24_I2C is not set -# CONFIG_TCG_TIS_ST33ZP24_SPI is not set +# CONFIG_TCG_TPM is not set # CONFIG_XILLYBUS is not set # CONFIG_XILLYUSB is not set CONFIG_RANDOM_TRUST_CPU=y @@ -3009,25 +2182,6 @@ CONFIG_I2C_ALGOBIT=y # I2C Hardware Bus support # -# -# PC SMBus host controller drivers -# -# CONFIG_I2C_ALI1535 is not set -# CONFIG_I2C_ALI1563 is not set -# CONFIG_I2C_ALI15X3 is not set -# CONFIG_I2C_AMD756 is not set -# CONFIG_I2C_AMD8111 is not set -# CONFIG_I2C_I801 is not set -# CONFIG_I2C_ISCH is not set -# CONFIG_I2C_PIIX4 is not set -# CONFIG_I2C_NFORCE2 is not set -# CONFIG_I2C_NVIDIA_GPU is not set -# CONFIG_I2C_SIS5595 is not set -# CONFIG_I2C_SIS630 is not set -# CONFIG_I2C_SIS96X is not set -# CONFIG_I2C_VIA is not set -# CONFIG_I2C_VIAPRO is not set - # # I2C system bus drivers (mostly embedded / system-on-chip) # @@ -3036,7 +2190,6 @@ CONFIG_I2C_ALGOBIT=y CONFIG_I2C_DESIGNWARE_CORE=y # CONFIG_I2C_DESIGNWARE_SLAVE is not set CONFIG_I2C_DESIGNWARE_PLATFORM=y -# CONFIG_I2C_DESIGNWARE_PCI is not set # CONFIG_I2C_EMEV2 is not set # CONFIG_I2C_GPIO is not set # CONFIG_I2C_NOMADIK is not set @@ -3044,7 +2197,6 @@ CONFIG_I2C_DESIGNWARE_PLATFORM=y # CONFIG_I2C_PCA_PLATFORM is not set CONFIG_I2C_RK3X=y # CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_THUNDERX is not set # CONFIG_I2C_XILINX is not set # @@ -3052,7 +2204,6 @@ CONFIG_I2C_RK3X=y # # CONFIG_I2C_DIOLAN_U2C is not set # CONFIG_I2C_CP2615 is not set -# CONFIG_I2C_PCI1XXXX is not set # CONFIG_I2C_ROBOTFUZZ_OSIF is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set @@ -3092,13 +2243,11 @@ CONFIG_SPI_BITBANG=y # CONFIG_SPI_MICROCHIP_CORE_QSPI is not set # CONFIG_SPI_OC_TINY is not set # CONFIG_SPI_PL022 is not set -# CONFIG_SPI_PXA2XX is not set CONFIG_SPI_ROCKCHIP=y # CONFIG_SPI_ROCKCHIP_SFC is not set # CONFIG_SPI_SC18IS602 is not set # CONFIG_SPI_SIFIVE is not set # CONFIG_SPI_MXIC is not set -# CONFIG_SPI_THUNDERX is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set # CONFIG_SPI_ZYNQMP_GQSPI is not set @@ -3142,7 +2291,7 @@ CONFIG_PTP_1588_CLOCK_OPTIONAL=y # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # -CONFIG_PTP_1588_CLOCK_KVM=y +# CONFIG_PTP_1588_CLOCK_KVM is not set # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # end of PTP clock support @@ -3217,18 +2366,8 @@ CONFIG_GPIO_ROCKCHIP=y # # MFD GPIO expanders # -# CONFIG_GPIO_TPS6586X is not set # end of MFD GPIO expanders -# -# PCI GPIO expanders -# -# CONFIG_GPIO_BT8XX is not set -# CONFIG_GPIO_PCI_IDIO_16 is not set -# CONFIG_GPIO_PCIE_IDIO_24 is not set -# CONFIG_GPIO_RDC321X is not set -# end of PCI GPIO expanders - # # SPI GPIO expanders # @@ -3280,7 +2419,7 @@ CONFIG_BATTERY_CW2015=y # CONFIG_BATTERY_DS2781 is not set # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_SAMSUNG_SDI is not set -CONFIG_BATTERY_SBS=y +# CONFIG_BATTERY_SBS is not set # CONFIG_CHARGER_SBS is not set # CONFIG_MANAGER_SBS is not set # CONFIG_BATTERY_BQ27XXX is not set @@ -3298,7 +2437,7 @@ CONFIG_CHARGER_GPIO=y # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set -CONFIG_CHARGER_BQ24735=y +# CONFIG_CHARGER_BQ24735 is not set # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set @@ -3335,7 +2474,6 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7475 is not set # CONFIG_SENSORS_AHT10 is not set -# CONFIG_SENSORS_AQUACOMPUTER_D5NEXT is not set # CONFIG_SENSORS_AS370 is not set # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_AXI_FAN_CONTROL is not set @@ -3344,10 +2482,8 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set # CONFIG_SENSORS_CORSAIR_PSU is not set -# CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set -# CONFIG_SENSORS_I5K_AMB is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_F75375S is not set @@ -3420,8 +2556,6 @@ CONFIG_HWMON=y # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_NZXT_KRAKEN2 is not set -# CONFIG_SENSORS_NZXT_SMART2 is not set # CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set @@ -3433,7 +2567,6 @@ CONFIG_SENSORS_PWM_FAN=y # CONFIG_SENSORS_SHT3x is not set # CONFIG_SENSORS_SHT4x is not set # CONFIG_SENSORS_SHTC1 is not set -# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_DME1737 is not set # CONFIG_SENSORS_EMC1403 is not set # CONFIG_SENSORS_EMC2103 is not set @@ -3463,9 +2596,7 @@ CONFIG_SENSORS_PWM_FAN=y # CONFIG_SENSORS_TMP421 is not set # CONFIG_SENSORS_TMP464 is not set # CONFIG_SENSORS_TMP513 is not set -# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VT1211 is not set -# CONFIG_SENSORS_VT8231 is not set # CONFIG_SENSORS_W83773G is not set # CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83791D is not set @@ -3525,42 +2656,22 @@ CONFIG_WATCHDOG_OPEN_TIMEOUT=0 CONFIG_DW_WATCHDOG=y # CONFIG_MAX63XX_WATCHDOG is not set # CONFIG_ARM_SMC_WATCHDOG is not set -# CONFIG_ALIM7101_WDT is not set -# CONFIG_I6300ESB_WDT is not set -# CONFIG_HP_WATCHDOG is not set # CONFIG_MEN_A21_WDT is not set -# -# PCI-based Watchdog Cards -# -# CONFIG_PCIPCWATCHDOG is not set -# CONFIG_WDTPCI is not set - # # USB-based Watchdog Cards # # CONFIG_USBPCWATCHDOG is not set CONFIG_SSB_POSSIBLE=y CONFIG_SSB=y -CONFIG_SSB_SPROM=y CONFIG_SSB_BLOCKIO=y -CONFIG_SSB_PCIHOST_POSSIBLE=y -CONFIG_SSB_PCIHOST=y -CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_PCMCIAHOST_POSSIBLE=y -# CONFIG_SSB_PCMCIAHOST is not set CONFIG_SSB_SDIOHOST_POSSIBLE=y # CONFIG_SSB_SDIOHOST is not set -CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y -CONFIG_SSB_DRIVER_PCICORE=y # CONFIG_SSB_DRIVER_GPIO is not set CONFIG_BCMA_POSSIBLE=y CONFIG_BCMA=y CONFIG_BCMA_BLOCKIO=y -CONFIG_BCMA_HOST_PCI_POSSIBLE=y -CONFIG_BCMA_HOST_PCI=y # CONFIG_BCMA_HOST_SOC is not set -CONFIG_BCMA_DRIVER_PCI=y # CONFIG_BCMA_DRIVER_GMAC_CMN is not set # CONFIG_BCMA_DRIVER_GPIO is not set # CONFIG_BCMA_DEBUG is not set @@ -3595,10 +2706,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_HI6421_PMIC is not set # CONFIG_HTC_PASIC3 is not set # CONFIG_HTC_I2CPLD is not set -# CONFIG_LPC_ICH is not set -# CONFIG_LPC_SCH is not set # CONFIG_MFD_IQS62X is not set -# CONFIG_MFD_JANZ_CMODIO is not set # CONFIG_MFD_KEMPLD is not set # CONFIG_MFD_88PM800 is not set # CONFIG_MFD_88PM805 is not set @@ -3626,7 +2734,6 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set # CONFIG_MFD_SY7636A is not set -# CONFIG_MFD_RDC321X is not set # CONFIG_MFD_RT4831 is not set # CONFIG_MFD_RT5033 is not set # CONFIG_MFD_RT5120 is not set @@ -3653,7 +2760,7 @@ CONFIG_MFD_SYSCON=y # CONFIG_MFD_TI_LP873X is not set # CONFIG_MFD_TI_LP87565 is not set # CONFIG_MFD_TPS65218 is not set -CONFIG_MFD_TPS6586X=y +# CONFIG_MFD_TPS6586X is not set # CONFIG_MFD_TPS65910 is not set # CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_TPS65912_SPI is not set @@ -3663,7 +2770,6 @@ CONFIG_MFD_TPS6586X=y # CONFIG_MFD_LM3533 is not set # CONFIG_MFD_TC3589X is not set # CONFIG_MFD_TQMX86 is not set -# CONFIG_MFD_VX855 is not set # CONFIG_MFD_LOCHNAGAR is not set # CONFIG_MFD_ARIZONA_I2C is not set # CONFIG_MFD_ARIZONA_SPI is not set @@ -3692,7 +2798,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set # CONFIG_REGULATOR_88PG86X is not set -CONFIG_REGULATOR_ACT8865=y +# CONFIG_REGULATOR_ACT8865 is not set # CONFIG_REGULATOR_AD5398 is not set # CONFIG_REGULATOR_ARM_SCMI is not set # CONFIG_REGULATOR_DA9121 is not set @@ -3751,55 +2857,15 @@ CONFIG_REGULATOR_RK808=y # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_REGULATOR_TPS65132 is not set # CONFIG_REGULATOR_TPS6524X is not set -CONFIG_REGULATOR_TPS6586X=y -CONFIG_REGULATOR_VCTRL=y -CONFIG_RC_CORE=y -# CONFIG_BPF_LIRC_MODE2 is not set -CONFIG_LIRC=y -CONFIG_RC_MAP=y -CONFIG_RC_DECODERS=y -# CONFIG_IR_IMON_DECODER is not set -CONFIG_IR_JVC_DECODER=y -CONFIG_IR_MCE_KBD_DECODER=y -CONFIG_IR_NEC_DECODER=y -CONFIG_IR_RC5_DECODER=y -CONFIG_IR_RC6_DECODER=y -# CONFIG_IR_RCMM_DECODER is not set -CONFIG_IR_SANYO_DECODER=y -CONFIG_IR_SHARP_DECODER=y -CONFIG_IR_SONY_DECODER=y -CONFIG_IR_XMP_DECODER=y -CONFIG_RC_DEVICES=y -CONFIG_IR_GPIO_CIR=y -# CONFIG_IR_GPIO_TX is not set -# CONFIG_IR_HIX5HD2 is not set -# CONFIG_IR_IGORPLUGUSB is not set -# CONFIG_IR_IGUANA is not set -# CONFIG_IR_IMON is not set -# CONFIG_IR_IMON_RAW is not set -# CONFIG_IR_MCEUSB is not set -# CONFIG_IR_PWM_TX is not set -# CONFIG_IR_REDRAT3 is not set -# CONFIG_IR_SERIAL is not set -# CONFIG_IR_SPI is not set -# CONFIG_IR_STREAMZAP is not set -# CONFIG_IR_TOY is not set -# CONFIG_IR_TTUSBIR is not set -# CONFIG_RC_ATI_REMOTE is not set -# CONFIG_RC_LOOPBACK is not set -# CONFIG_RC_XBOX_DVD is not set +# CONFIG_REGULATOR_VCTRL is not set +# CONFIG_RC_CORE is not set CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y # # CEC support # -CONFIG_MEDIA_CEC_RC=y -CONFIG_MEDIA_CEC_SUPPORT=y -# CONFIG_CEC_CH7322 is not set -# CONFIG_CEC_GPIO is not set -CONFIG_USB_PULSE8_CEC=m -CONFIG_USB_RAINSHADOW_CEC=m +# CONFIG_MEDIA_CEC_SUPPORT is not set # end of CEC support CONFIG_MEDIA_SUPPORT=y @@ -3809,18 +2875,17 @@ CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # # Media device types # -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y +# CONFIG_MEDIA_CAMERA_SUPPORT is not set +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y +# CONFIG_MEDIA_TEST_SUPPORT is not set # end of Media device types CONFIG_VIDEO_DEV=y CONFIG_MEDIA_CONTROLLER=y -CONFIG_DVB_CORE=y # # Video4Linux options @@ -3829,7 +2894,6 @@ CONFIG_VIDEO_V4L2_I2C=y CONFIG_VIDEO_V4L2_SUBDEV_API=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set -CONFIG_VIDEO_TUNER=m CONFIG_V4L2_MEM2MEM_DEV=y CONFIG_V4L2_FWNODE=y CONFIG_V4L2_ASYNC=y @@ -3838,21 +2902,8 @@ CONFIG_V4L2_ASYNC=y # # Media controller options # -CONFIG_MEDIA_CONTROLLER_DVB=y -CONFIG_MEDIA_CONTROLLER_REQUEST_API=y # end of Media controller options -# -# Digital TV options -# -# CONFIG_DVB_MMAP is not set -CONFIG_DVB_NET=y -CONFIG_DVB_MAX_ADAPTERS=8 -# CONFIG_DVB_DYNAMIC_MINORS is not set -# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set -# CONFIG_DVB_ULE_DEBUG is not set -# end of Digital TV options - # # Media drivers # @@ -3864,166 +2915,9 @@ CONFIG_DVB_MAX_ADAPTERS=8 # # Media drivers # -CONFIG_MEDIA_USB_SUPPORT=y - -# -# Webcam devices -# -# CONFIG_USB_GSPCA is not set -# CONFIG_USB_PWC is not set -# CONFIG_USB_S2255 is not set -CONFIG_VIDEO_USBTV=m -CONFIG_USB_VIDEO_CLASS=y -# CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV is not set - -# -# Analog TV USB devices -# -# CONFIG_VIDEO_GO7007 is not set -# CONFIG_VIDEO_HDPVR is not set -# CONFIG_VIDEO_PVRUSB2 is not set -# CONFIG_VIDEO_STK1160_COMMON is not set - -# -# Analog/digital TV USB devices -# -CONFIG_VIDEO_AU0828=m -CONFIG_VIDEO_AU0828_V4L2=y -# CONFIG_VIDEO_AU0828_RC is not set -CONFIG_VIDEO_CX231XX=m -CONFIG_VIDEO_CX231XX_RC=y -CONFIG_VIDEO_CX231XX_ALSA=m -CONFIG_VIDEO_CX231XX_DVB=m - -# -# Digital TV USB devices -# -CONFIG_DVB_AS102=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set -CONFIG_DVB_USB_V2=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_USB_AF9035=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_AZ6007=m -CONFIG_DVB_USB_CE6230=m -CONFIG_DVB_USB_DVBSKY=m -CONFIG_DVB_USB_EC168=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_LME2510=m -CONFIG_DVB_USB_MXL111SF=m -CONFIG_DVB_USB_RTL28XXU=m -# CONFIG_DVB_USB_ZD1301 is not set -CONFIG_DVB_USB=y -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_AZ6027=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_CXUSB=m -# CONFIG_DVB_USB_CXUSB_ANALOG is not set -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_DIB3000MC=m -CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_PCTV452E=m -CONFIG_DVB_USB_TECHNISAT_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_VP7045=m -# CONFIG_SMS_USB_DRV is not set -CONFIG_DVB_TTUSB_BUDGET=m -CONFIG_DVB_TTUSB_DEC=m - -# -# Webcam, TV (analog/digital) USB devices -# -CONFIG_VIDEO_EM28XX=m -CONFIG_VIDEO_EM28XX_V4L2=m -CONFIG_VIDEO_EM28XX_ALSA=m -CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=m - -# -# Software defined radio USB devices -# -CONFIG_USB_AIRSPY=m -CONFIG_USB_HACKRF=m -CONFIG_USB_MSI2500=m -CONFIG_MEDIA_PCI_SUPPORT=y - -# -# Media capture support -# -# CONFIG_VIDEO_SOLO6X10 is not set -# CONFIG_VIDEO_TW5864 is not set -# CONFIG_VIDEO_TW68 is not set -# CONFIG_VIDEO_TW686X is not set -# CONFIG_VIDEO_ZORAN is not set - -# -# Media capture/analog TV support -# -# CONFIG_VIDEO_DT3155 is not set -# CONFIG_VIDEO_IVTV is not set - -# -# Media capture/analog/hybrid TV support -# -# CONFIG_VIDEO_BT848 is not set -# CONFIG_VIDEO_CX18 is not set -CONFIG_VIDEO_CX23885=m -# CONFIG_MEDIA_ALTERA_CI is not set -CONFIG_VIDEO_CX25821=m -# CONFIG_VIDEO_CX25821_ALSA is not set -# CONFIG_VIDEO_CX88 is not set -# CONFIG_VIDEO_SAA7134 is not set -# CONFIG_VIDEO_SAA7164 is not set - -# -# Media digital TV PCI Adapters -# -# CONFIG_DVB_B2C2_FLEXCOP_PCI is not set -# CONFIG_DVB_DDBRIDGE is not set -# CONFIG_DVB_DM1105 is not set -# CONFIG_MANTIS_CORE is not set -# CONFIG_DVB_NETUP_UNIDVB is not set -# CONFIG_DVB_NGENE is not set -# CONFIG_DVB_PLUTO2 is not set -# CONFIG_DVB_PT1 is not set -# CONFIG_DVB_PT3 is not set -# CONFIG_DVB_SMIPCIE is not set -CONFIG_RADIO_ADAPTERS=y -# CONFIG_RADIO_MAXIRADIO is not set -# CONFIG_RADIO_SAA7706H is not set -# CONFIG_RADIO_SHARK is not set -# CONFIG_RADIO_SHARK2 is not set -# CONFIG_RADIO_SI4713 is not set -# CONFIG_RADIO_TEA5764 is not set -# CONFIG_RADIO_TEF6862 is not set -# CONFIG_RADIO_WL1273 is not set -# CONFIG_USB_DSBR is not set -# CONFIG_USB_KEENE is not set -# CONFIG_USB_MA901 is not set -# CONFIG_USB_MR800 is not set -# CONFIG_USB_RAREMONO is not set -# CONFIG_RADIO_SI470X is not set +# CONFIG_MEDIA_USB_SUPPORT is not set CONFIG_MEDIA_PLATFORM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y -# CONFIG_SDR_PLATFORM_DRIVERS is not set -CONFIG_DVB_PLATFORM_DRIVERS=y CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set # CONFIG_VIDEO_MUX is not set @@ -4066,7 +2960,6 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y # # Marvell media platform drivers # -# CONFIG_VIDEO_CAFE_CCIC is not set # # Mediatek media platform drivers @@ -4113,7 +3006,7 @@ CONFIG_VIDEO_ROCKCHIP_ISP1=y # # Verisilicon media platform drivers # -# CONFIG_VIDEO_HANTRO is not configured +# CONFIG_VIDEO_HANTRO is not set # # VIA media platform drivers @@ -4123,130 +3016,22 @@ CONFIG_VIDEO_ROCKCHIP_ISP1=y # Xilinx media platform drivers # # CONFIG_VIDEO_XILINX is not set - -# -# MMC/SDIO DVB adapters -# -# CONFIG_SMS_SDIO_DRV is not set -# CONFIG_V4L_TEST_DRIVERS is not set -# CONFIG_DVB_TEST_DRIVERS is not set -CONFIG_CYPRESS_FIRMWARE=y -CONFIG_TTPCI_EEPROM=m -CONFIG_VIDEO_CX2341X=m -CONFIG_VIDEO_TVEEPROM=m -CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=y CONFIG_VIDEOBUF2_VMALLOC=y CONFIG_VIDEOBUF2_DMA_SG=y -CONFIG_VIDEOBUF2_DVB=m # end of Media drivers # # Media ancillary drivers # -CONFIG_MEDIA_ATTACH=y - -# -# IR I2C driver auto-selected by 'Autoselect ancillary drivers' -# -# CONFIG_VIDEO_IR_I2C is not set - -# -# Camera sensor devices -# -# CONFIG_VIDEO_AR0521 is not set -# CONFIG_VIDEO_HI556 is not set -# CONFIG_VIDEO_HI846 is not set -# CONFIG_VIDEO_HI847 is not set -# CONFIG_VIDEO_IMX208 is not set -# CONFIG_VIDEO_IMX214 is not set -CONFIG_VIDEO_IMX219=y -# CONFIG_VIDEO_IMX258 is not set -# CONFIG_VIDEO_IMX274 is not set -# CONFIG_VIDEO_IMX290 is not set -# CONFIG_VIDEO_IMX319 is not set -# CONFIG_VIDEO_IMX334 is not set -# CONFIG_VIDEO_IMX335 is not set -# CONFIG_VIDEO_IMX355 is not set -# CONFIG_VIDEO_IMX412 is not set -# CONFIG_VIDEO_MT9M001 is not set -# CONFIG_VIDEO_MT9M032 is not set -# CONFIG_VIDEO_MT9M111 is not set -# CONFIG_VIDEO_MT9P031 is not set -# CONFIG_VIDEO_MT9T001 is not set -# CONFIG_VIDEO_MT9T112 is not set -CONFIG_VIDEO_MT9V011=m -# CONFIG_VIDEO_MT9V032 is not set -# CONFIG_VIDEO_MT9V111 is not set -# CONFIG_VIDEO_NOON010PC30 is not set -# CONFIG_VIDEO_OG01A1B is not set -# CONFIG_VIDEO_OV02A10 is not set -# CONFIG_VIDEO_OV08D10 is not set -# CONFIG_VIDEO_OV13858 is not set -# CONFIG_VIDEO_OV13B10 is not set -CONFIG_VIDEO_OV2640=m -# CONFIG_VIDEO_OV2659 is not set -# CONFIG_VIDEO_OV2680 is not set -# CONFIG_VIDEO_OV2685 is not set -# CONFIG_VIDEO_OV5640 is not set -CONFIG_VIDEO_OV5645=y -# CONFIG_VIDEO_OV5647 is not set -# CONFIG_VIDEO_OV5648 is not set -# CONFIG_VIDEO_OV5670 is not set -# CONFIG_VIDEO_OV5675 is not set -# CONFIG_VIDEO_OV5693 is not set -# CONFIG_VIDEO_OV5695 is not set -# CONFIG_VIDEO_OV6650 is not set -# CONFIG_VIDEO_OV7251 is not set -# CONFIG_VIDEO_OV7640 is not set -# CONFIG_VIDEO_OV7670 is not set -# CONFIG_VIDEO_OV772X is not set -# CONFIG_VIDEO_OV7740 is not set -# CONFIG_VIDEO_OV8856 is not set -# CONFIG_VIDEO_OV8865 is not set -# CONFIG_VIDEO_OV9282 is not set -# CONFIG_VIDEO_OV9640 is not set -# CONFIG_VIDEO_OV9650 is not set -# CONFIG_VIDEO_RDACM20 is not set -# CONFIG_VIDEO_RDACM21 is not set -# CONFIG_VIDEO_RJ54N1 is not set -# CONFIG_VIDEO_S5C73M3 is not set -# CONFIG_VIDEO_S5K4ECGX is not set -# CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_S5K6A3 is not set -# CONFIG_VIDEO_S5K6AA is not set -# CONFIG_VIDEO_SR030PC30 is not set -# CONFIG_VIDEO_VS6624 is not set -# CONFIG_VIDEO_CCS is not set -# CONFIG_VIDEO_ET8EK8 is not set -# CONFIG_VIDEO_M5MOLS is not set -# end of Camera sensor devices - -# -# Lens drivers -# -# CONFIG_VIDEO_AD5820 is not set -# CONFIG_VIDEO_AK7375 is not set -# CONFIG_VIDEO_DW9714 is not set -# CONFIG_VIDEO_DW9768 is not set -# CONFIG_VIDEO_DW9807_VCM is not set -# end of Lens drivers - -# -# Flash devices -# -# CONFIG_VIDEO_ADP1653 is not set -# CONFIG_VIDEO_LM3560 is not set -# CONFIG_VIDEO_LM3646 is not set -# end of Flash devices # # Audio decoders, processors and mixers # -CONFIG_VIDEO_CS3308=m +# CONFIG_VIDEO_CS3308 is not set # CONFIG_VIDEO_CS5345 is not set # CONFIG_VIDEO_CS53L32A is not set CONFIG_VIDEO_MSP3400=m @@ -4286,10 +3071,10 @@ CONFIG_VIDEO_MSP3400=m # CONFIG_VIDEO_MAX9286 is not set # CONFIG_VIDEO_ML86V7667 is not set # CONFIG_VIDEO_SAA7110 is not set -CONFIG_VIDEO_SAA711X=m +# CONFIG_VIDEO_SAA711X is not set # CONFIG_VIDEO_TC358743 is not set # CONFIG_VIDEO_TVP514X is not set -CONFIG_VIDEO_TVP5150=m +# CONFIG_VIDEO_TVP5150 is not set # CONFIG_VIDEO_TVP7002 is not set # CONFIG_VIDEO_TW2804 is not set # CONFIG_VIDEO_TW9903 is not set @@ -4301,7 +3086,7 @@ CONFIG_VIDEO_TVP5150=m # Video and audio decoders # # CONFIG_VIDEO_SAA717X is not set -CONFIG_VIDEO_CX25840=m +# CONFIG_VIDEO_CX25840 is not set # end of Video decoders # @@ -4335,7 +3120,6 @@ CONFIG_VIDEO_CX25840=m # # SDR tuner chips # -# CONFIG_SDR_MAX2175 is not set # end of SDR tuner chips # @@ -4350,223 +3134,8 @@ CONFIG_VIDEO_CX25840=m # # Media SPI Adapters # -CONFIG_CXD2880_SPI_DRV=m # CONFIG_VIDEO_GS1662 is not set # end of Media SPI Adapters - -CONFIG_MEDIA_TUNER=y - -# -# Customize TV tuners -# -CONFIG_MEDIA_TUNER_E4000=m -CONFIG_MEDIA_TUNER_FC0011=m -CONFIG_MEDIA_TUNER_FC0012=m -CONFIG_MEDIA_TUNER_FC0013=m -CONFIG_MEDIA_TUNER_FC2580=m -CONFIG_MEDIA_TUNER_IT913X=m -CONFIG_MEDIA_TUNER_M88RS6000T=m -CONFIG_MEDIA_TUNER_MAX2165=m -CONFIG_MEDIA_TUNER_MC44S803=y -CONFIG_MEDIA_TUNER_MSI001=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2063=m -CONFIG_MEDIA_TUNER_MT20XX=y -CONFIG_MEDIA_TUNER_MT2131=m -CONFIG_MEDIA_TUNER_MT2266=m -# CONFIG_MEDIA_TUNER_MXL301RF is not set -CONFIG_MEDIA_TUNER_MXL5005S=m -CONFIG_MEDIA_TUNER_MXL5007T=m -# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set -CONFIG_MEDIA_TUNER_QM1D1C0042=m -CONFIG_MEDIA_TUNER_QT1010=m -CONFIG_MEDIA_TUNER_R820T=m -CONFIG_MEDIA_TUNER_SI2157=m -CONFIG_MEDIA_TUNER_SIMPLE=y -CONFIG_MEDIA_TUNER_TDA18212=m -CONFIG_MEDIA_TUNER_TDA18218=m -CONFIG_MEDIA_TUNER_TDA18250=m -CONFIG_MEDIA_TUNER_TDA18271=y -CONFIG_MEDIA_TUNER_TDA827X=y -CONFIG_MEDIA_TUNER_TDA8290=y -CONFIG_MEDIA_TUNER_TDA9887=y -CONFIG_MEDIA_TUNER_TEA5761=y -CONFIG_MEDIA_TUNER_TEA5767=y -CONFIG_MEDIA_TUNER_TUA9001=m -CONFIG_MEDIA_TUNER_XC2028=y -CONFIG_MEDIA_TUNER_XC4000=y -CONFIG_MEDIA_TUNER_XC5000=y -# end of Customize TV tuners - -# -# Customise DVB Frontends -# - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_M88DS3103=m -# CONFIG_DVB_MXL5XX is not set -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m -CONFIG_DVB_STV090x=m -# CONFIG_DVB_STV0910 is not set -CONFIG_DVB_STV6110x=m -# CONFIG_DVB_STV6111 is not set - -# -# Multistandard (cable + terrestrial) frontends -# -CONFIG_DVB_DRXK=m -CONFIG_DVB_MN88472=m -CONFIG_DVB_MN88473=m -CONFIG_DVB_SI2165=m -CONFIG_DVB_TDA18271C2DD=m - -# -# DVB-S (satellite) frontends -# -# CONFIG_DVB_CX24110 is not set -CONFIG_DVB_CX24116=m -CONFIG_DVB_CX24117=m -CONFIG_DVB_CX24120=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_DS3000=m -# CONFIG_DVB_MB86A16 is not set -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_SI21XX=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_STV0900=m -CONFIG_DVB_STV6110=m -CONFIG_DVB_TDA10071=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8083=m -# CONFIG_DVB_TDA8261 is not set -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TS2020=m -# CONFIG_DVB_TUA6100 is not set -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TUNER_ITD1000=m -# CONFIG_DVB_VES1X93 is not set -# CONFIG_DVB_ZL10036 is not set -CONFIG_DVB_ZL10039=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_AF9013=m -CONFIG_DVB_AS102_FE=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_CXD2820R=m -CONFIG_DVB_CXD2841ER=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m -# CONFIG_DVB_DIB9000 is not set -CONFIG_DVB_DRXD=m -CONFIG_DVB_EC100=m -CONFIG_DVB_GP8PSK_FE=m -# CONFIG_DVB_L64781 is not set -CONFIG_DVB_MT352=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_RTL2830=m -CONFIG_DVB_RTL2832=m -CONFIG_DVB_RTL2832_SDR=m -# CONFIG_DVB_S5H1432 is not set -CONFIG_DVB_SI2168=m -# CONFIG_DVB_SP887X is not set -CONFIG_DVB_STV0367=m -CONFIG_DVB_TDA10048=m -CONFIG_DVB_TDA1004X=m -# CONFIG_DVB_ZD1301_DEMOD is not set -CONFIG_DVB_ZL10353=m -# CONFIG_DVB_CXD2880 is not set - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_STV0297=m -# CONFIG_DVB_TDA10021 is not set -CONFIG_DVB_TDA10023=m -CONFIG_DVB_VES1820=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_AU8522=m -CONFIG_DVB_AU8522_DTV=m -CONFIG_DVB_AU8522_V4L=m -CONFIG_DVB_BCM3510=m -CONFIG_DVB_LG2160=m -CONFIG_DVB_LGDT3305=m -CONFIG_DVB_LGDT3306A=m -CONFIG_DVB_LGDT330X=m -CONFIG_DVB_MXL692=m -CONFIG_DVB_NXT200X=m -# CONFIG_DVB_OR51132 is not set -# CONFIG_DVB_OR51211 is not set -CONFIG_DVB_S5H1409=m -CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_DIB8000=m -CONFIG_DVB_MB86A20S=m -CONFIG_DVB_S921=m - -# -# ISDB-S (satellite) & ISDB-T (terrestrial) frontends -# -# CONFIG_DVB_MN88443X is not set -CONFIG_DVB_TC90522=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m -CONFIG_DVB_TUNER_DIB0090=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_A8293=m -CONFIG_DVB_AF9033=m -CONFIG_DVB_ASCOT2E=m -CONFIG_DVB_ATBM8830=m -CONFIG_DVB_HELENE=m -CONFIG_DVB_HORUS3A=m -CONFIG_DVB_ISL6405=m -CONFIG_DVB_ISL6421=m -CONFIG_DVB_ISL6423=m -CONFIG_DVB_IX2505V=m -CONFIG_DVB_LGS8GL5=m -CONFIG_DVB_LGS8GXX=m -CONFIG_DVB_LNBH25=m -CONFIG_DVB_LNBH29=m -CONFIG_DVB_LNBP21=m -CONFIG_DVB_LNBP22=m -CONFIG_DVB_M88RS2000=m -CONFIG_DVB_TDA665x=m -CONFIG_DVB_DRX39XYJ=m - -# -# Common Interface (EN50221) controller drivers -# -CONFIG_DVB_CXD2099=m -CONFIG_DVB_SP2=m -# end of Customise DVB Frontends - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set # end of Media ancillary drivers # @@ -4583,13 +3152,9 @@ CONFIG_DRM_FBDEV_OVERALLOC=200 # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set CONFIG_DRM_DISPLAY_HELPER=y -CONFIG_DRM_DISPLAY_DP_HELPER=y CONFIG_DRM_DISPLAY_HDMI_HELPER=y # CONFIG_DRM_DP_AUX_CHARDEV is not set # CONFIG_DRM_DP_CEC is not set -CONFIG_DRM_TTM=m -CONFIG_DRM_VRAM_HELPER=m -CONFIG_DRM_TTM_HELPER=m CONFIG_DRM_GEM_DMA_HELPER=y CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_SCHED=y @@ -4611,30 +3176,23 @@ CONFIG_DRM_SCHED=y # CONFIG_DRM_KOMEDA is not set # end of ARM devices -# CONFIG_DRM_RADEON is not set -# CONFIG_DRM_AMDGPU is not set -# CONFIG_DRM_NOUVEAU is not set # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set CONFIG_DRM_ROCKCHIP=y CONFIG_ROCKCHIP_VOP=y # CONFIG_ROCKCHIP_VOP2 is not set -CONFIG_ROCKCHIP_ANALOGIX_DP=y -CONFIG_ROCKCHIP_CDN_DP=y +# CONFIG_ROCKCHIP_ANALOGIX_DP is not set +# CONFIG_ROCKCHIP_CDN_DP is not set CONFIG_ROCKCHIP_DW_HDMI=y CONFIG_ROCKCHIP_DW_MIPI_DSI=y -CONFIG_ROCKCHIP_INNO_HDMI=y -CONFIG_ROCKCHIP_LVDS=y -CONFIG_ROCKCHIP_RGB=y -CONFIG_ROCKCHIP_RK3066_HDMI=y -# CONFIG_DRM_VMWGFX is not set -CONFIG_DRM_UDL=y -CONFIG_DRM_AST=m -# CONFIG_DRM_MGAG200 is not set +# CONFIG_ROCKCHIP_INNO_HDMI is not set +# CONFIG_ROCKCHIP_LVDS is not set +# CONFIG_ROCKCHIP_RGB is not set +# CONFIG_ROCKCHIP_RK3066_HDMI is not set +# CONFIG_DRM_UDL is not set # CONFIG_DRM_RCAR_DW_HDMI is not set # CONFIG_DRM_RCAR_USE_LVDS is not set # CONFIG_DRM_RCAR_USE_MIPI_DSI is not set -# CONFIG_DRM_QXL is not set CONFIG_DRM_PANEL=y # @@ -4740,7 +3298,7 @@ CONFIG_DRM_DISPLAY_CONNECTOR=m # CONFIG_DRM_SIL_SII8620 is not set # CONFIG_DRM_SII902X is not set # CONFIG_DRM_SII9234 is not set -CONFIG_DRM_SIMPLE_BRIDGE=y +# CONFIG_DRM_SIMPLE_BRIDGE is not set # CONFIG_DRM_THINE_THC63LVD1024 is not set # CONFIG_DRM_TOSHIBA_TC358762 is not set # CONFIG_DRM_TOSHIBA_TC358764 is not set @@ -4754,7 +3312,6 @@ CONFIG_DRM_SIMPLE_BRIDGE=y # CONFIG_DRM_TI_TPD12S015 is not set # CONFIG_DRM_ANALOGIX_ANX6345 is not set # CONFIG_DRM_ANALOGIX_ANX78XX is not set -CONFIG_DRM_ANALOGIX_DP=y # CONFIG_DRM_ANALOGIX_ANX7625 is not set # CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_CDNS_MHDP8546 is not set @@ -4767,12 +3324,9 @@ CONFIG_DRM_DW_MIPI_DSI=y # end of Display Interface Bridges # CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_HISI_HIBMC is not set # CONFIG_DRM_HISI_KIRIN is not set # CONFIG_DRM_LOGICVC is not set # CONFIG_DRM_ARCPGU is not set -# CONFIG_DRM_BOCHS is not set -# CONFIG_DRM_CIRRUS_QEMU is not set # CONFIG_DRM_GM12U320 is not set # CONFIG_DRM_PANEL_MIPI_DBI is not set # CONFIG_DRM_SIMPLEDRM is not set @@ -4817,43 +3371,16 @@ CONFIG_FB_MODE_HELPERS=y # # Frame buffer hardware drivers # -# CONFIG_FB_CIRRUS is not set -# CONFIG_FB_PM2 is not set # CONFIG_FB_ARMCLCD is not set -# CONFIG_FB_CYBER2000 is not set -# CONFIG_FB_ASILIANT is not set -# CONFIG_FB_IMSTT is not set -# CONFIG_FB_UVESA is not set # CONFIG_FB_OPENCORES is not set # CONFIG_FB_S1D13XXX is not set -# CONFIG_FB_NVIDIA is not set -# CONFIG_FB_RIVA is not set -# CONFIG_FB_I740 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_S3 is not set -# CONFIG_FB_SAVAGE is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_NEOMAGIC is not set -# CONFIG_FB_KYRO is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_VT8623 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_ARK is not set -# CONFIG_FB_PM3 is not set -# CONFIG_FB_CARMINE is not set # CONFIG_FB_SMSCUFX is not set # CONFIG_FB_UDL is not set # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_VIRTUAL is not set # CONFIG_FB_METRONOME is not set -# CONFIG_FB_MB862XX is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SSD1307 is not set -# CONFIG_FB_SM712 is not set # end of Frame buffer Devices # @@ -4903,28 +3430,22 @@ CONFIG_SND_PCM_ELD=y CONFIG_SND_PCM_IEC958=y CONFIG_SND_DMAENGINE_PCM=y CONFIG_SND_SEQ_DEVICE=y -CONFIG_SND_RAWMIDI=y CONFIG_SND_JACK=y CONFIG_SND_JACK_INPUT_DEV=y # CONFIG_SND_OSSEMUL is not set CONFIG_SND_PCM_TIMER=y -CONFIG_SND_HRTIMER=y -CONFIG_SND_DYNAMIC_MINORS=y -CONFIG_SND_MAX_CARDS=32 +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set # CONFIG_SND_SUPPORT_OLD_API is not set CONFIG_SND_PROC_FS=y # CONFIG_SND_VERBOSE_PROCFS is not set -CONFIG_SND_VERBOSE_PRINTK=y +# CONFIG_SND_VERBOSE_PRINTK is not set CONFIG_SND_CTL_FAST_LOOKUP=y # CONFIG_SND_DEBUG is not set # CONFIG_SND_CTL_INPUT_VALIDATION is not set CONFIG_SND_SEQUENCER=y -CONFIG_SND_SEQ_DUMMY=y -CONFIG_SND_SEQ_HRTIMER_DEFAULT=y -CONFIG_SND_SEQ_MIDI_EVENT=y -CONFIG_SND_SEQ_MIDI=y +# CONFIG_SND_SEQ_DUMMY is not set # CONFIG_SND_DRIVERS is not set -# CONFIG_SND_PCI is not set # # HD-Audio @@ -4934,9 +3455,6 @@ CONFIG_SND_SEQ_MIDI=y CONFIG_SND_HDA_PREALLOC_SIZE=64 # CONFIG_SND_SPI is not set # CONFIG_SND_USB is not set -CONFIG_SND_PCMCIA=y -# CONFIG_SND_VXPOCKET is not set -# CONFIG_SND_PDAUDIOCF is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_ADI is not set @@ -4954,15 +3472,13 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # Common SoC Audio options for Freescale CPUs: # # CONFIG_SND_SOC_FSL_ASRC is not set -CONFIG_SND_SOC_FSL_SAI=y -# CONFIG_SND_SOC_FSL_MQS is not set +# CONFIG_SND_SOC_FSL_SAI is not set # CONFIG_SND_SOC_FSL_AUDMIX is not set # CONFIG_SND_SOC_FSL_SSI is not set # CONFIG_SND_SOC_FSL_SPDIF is not set # CONFIG_SND_SOC_FSL_ESAI is not set # CONFIG_SND_SOC_FSL_MICFIL is not set # CONFIG_SND_SOC_FSL_XCVR is not set -CONFIG_SND_SOC_FSL_UTILS=y # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs @@ -4974,8 +3490,8 @@ CONFIG_SND_SOC_ROCKCHIP_I2S=y CONFIG_SND_SOC_ROCKCHIP_I2S_TDM=y CONFIG_SND_SOC_ROCKCHIP_PDM=y CONFIG_SND_SOC_ROCKCHIP_SPDIF=y -CONFIG_SND_SOC_ROCKCHIP_MAX98090=y -CONFIG_SND_SOC_ROCKCHIP_RT5645=y +# CONFIG_SND_SOC_ROCKCHIP_MAX98090 is not set +# CONFIG_SND_SOC_ROCKCHIP_RT5645 is not set # CONFIG_SND_SOC_RK3288_HDMI_ANALOG is not set # CONFIG_SND_SOC_RK3399_GRU_SOUND is not set # CONFIG_SND_SOC_SOF_TOPLEVEL is not set @@ -5044,7 +3560,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_CX2072X is not set # CONFIG_SND_SOC_DA7213 is not set # CONFIG_SND_SOC_DMIC is not set -CONFIG_SND_SOC_HDMI_CODEC=y +CONFIG_SND_SOC_HDMI_CODEC=m # CONFIG_SND_SOC_ES7134 is not set # CONFIG_SND_SOC_ES7241 is not set CONFIG_SND_SOC_ES8316=y @@ -5056,7 +3572,6 @@ CONFIG_SND_SOC_ES8316=y # CONFIG_SND_SOC_ICS43432 is not set # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98088 is not set -CONFIG_SND_SOC_MAX98090=y # CONFIG_SND_SOC_MAX98357A is not set # CONFIG_SND_SOC_MAX98504 is not set # CONFIG_SND_SOC_MAX9867 is not set @@ -5081,12 +3596,10 @@ CONFIG_SND_SOC_MAX98090=y # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set # CONFIG_SND_SOC_RK3328 is not set -CONFIG_SND_SOC_RK817=y -CONFIG_SND_SOC_RL6231=y +# CONFIG_SND_SOC_RK817 is not set # CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set # CONFIG_SND_SOC_RT5640 is not set -CONFIG_SND_SOC_RT5645=y # CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_RT9120 is not set # CONFIG_SND_SOC_SGTL5000 is not set @@ -5124,7 +3637,7 @@ CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_TLV320AIC3X_I2C is not set # CONFIG_SND_SOC_TLV320AIC3X_SPI is not set # CONFIG_SND_SOC_TLV320ADCX140 is not set -CONFIG_SND_SOC_TS3A227E=y +# CONFIG_SND_SOC_TS3A227E is not set # CONFIG_SND_SOC_TSCS42XX is not set # CONFIG_SND_SOC_TSCS454 is not set # CONFIG_SND_SOC_UDA1334 is not set @@ -5174,15 +3687,14 @@ CONFIG_SND_SOC_TS3A227E=y CONFIG_SND_SIMPLE_CARD_UTILS=y CONFIG_SND_SIMPLE_CARD=y CONFIG_SND_AUDIO_GRAPH_CARD=y -CONFIG_SND_AUDIO_GRAPH_CARD2=y -CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE=y -CONFIG_SND_TEST_COMPONENT=y +# CONFIG_SND_AUDIO_GRAPH_CARD2 is not set +# CONFIG_SND_TEST_COMPONENT is not set # # HID support # CONFIG_HID=y -CONFIG_HID_BATTERY_STRENGTH=y +# CONFIG_HID_BATTERY_STRENGTH is not set CONFIG_HIDRAW=y CONFIG_UHID=y CONFIG_HID_GENERIC=y @@ -5190,130 +3702,90 @@ CONFIG_HID_GENERIC=y # # Special HID drivers # -CONFIG_HID_A4TECH=y -# CONFIG_HID_ACCUTOUCH is not set -CONFIG_HID_ACRUX=y -# CONFIG_HID_ACRUX_FF is not set -CONFIG_HID_APPLE=y -CONFIG_HID_APPLEIR=y -# CONFIG_HID_ASUS is not set -CONFIG_HID_AUREAL=y -CONFIG_HID_BELKIN=y -CONFIG_HID_BETOP_FF=y -# CONFIG_HID_BIGBEN_FF is not set -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CORSAIR=y +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set # CONFIG_HID_COUGAR is not set # CONFIG_HID_MACALLY is not set -CONFIG_HID_PRODIKEYS=y # CONFIG_HID_CMEDIA is not set -CONFIG_HID_CP2112=y -# CONFIG_HID_CREATIVE_SB0540 is not set -CONFIG_HID_CYPRESS=y -CONFIG_HID_DRAGONRISE=y -CONFIG_DRAGONRISE_FF=y -CONFIG_HID_EMS_FF=y -# CONFIG_HID_ELAN is not set -CONFIG_HID_ELECOM=y -CONFIG_HID_ELO=y -CONFIG_HID_EZKEY=y -# CONFIG_HID_FT260 is not set -CONFIG_HID_GEMBIRD=y -CONFIG_HID_GFRM=y +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set # CONFIG_HID_GLORIOUS is not set -CONFIG_HID_HOLTEK=y -CONFIG_HOLTEK_FF=y # CONFIG_HID_VIVALDI is not set -CONFIG_HID_GT683R=y -CONFIG_HID_KEYTOUCH=y -CONFIG_HID_KYE=y -CONFIG_HID_UCLOGIC=y -CONFIG_HID_WALTOP=y +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_WALTOP is not set # CONFIG_HID_VIEWSONIC is not set # CONFIG_HID_VRC2 is not set # CONFIG_HID_XIAOMI is not set -CONFIG_HID_GYRATION=y -CONFIG_HID_ICADE=y +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set # CONFIG_HID_ITE is not set # CONFIG_HID_JABRA is not set -CONFIG_HID_TWINHAN=y -CONFIG_HID_KENSINGTON=y -CONFIG_HID_LCPOWER=y -CONFIG_HID_LED=y -CONFIG_HID_LENOVO=y -# CONFIG_HID_LETSKETCH is not set -CONFIG_HID_LOGITECH=y -CONFIG_HID_LOGITECH_DJ=y -CONFIG_HID_LOGITECH_HIDPP=y -CONFIG_LOGITECH_FF=y -CONFIG_LOGIRUMBLEPAD2_FF=y -CONFIG_LOGIG940_FF=y -CONFIG_LOGIWHEELS_FF=y -CONFIG_HID_MAGICMOUSE=y +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LED is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_MAGICMOUSE is not set # CONFIG_HID_MALTRON is not set # CONFIG_HID_MAYFLASH is not set -# CONFIG_HID_MEGAWORLD_FF is not set # CONFIG_HID_REDRAGON is not set -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_MULTITOUCH=y +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NINTENDO is not set # CONFIG_HID_NTI is not set -CONFIG_HID_NTRIG=y -CONFIG_HID_ORTEK=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PENMOUNT=y -CONFIG_HID_PETALYNX=y +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set # CONFIG_HID_PICOLCD is not set -CONFIG_HID_PLANTRONICS=y +# CONFIG_HID_PLANTRONICS is not set # CONFIG_HID_PXRC is not set # CONFIG_HID_RAZER is not set -CONFIG_HID_PRIMAX=y -# CONFIG_HID_RETRODE is not set -CONFIG_HID_ROCCAT=y -CONFIG_HID_SAITEK=y -CONFIG_HID_SAMSUNG=y +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_SAITEK is not set # CONFIG_HID_SEMITEK is not set -# CONFIG_HID_SIGMAMICRO is not set -CONFIG_HID_SONY=y -# CONFIG_SONY_FF is not set -CONFIG_HID_SPEEDLINK=y +# CONFIG_HID_SPEEDLINK is not set # CONFIG_HID_STEAM is not set -CONFIG_HID_STEELSERIES=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_RMI=y -CONFIG_HID_GREENASIA=y -CONFIG_GREENASIA_FF=y -CONFIG_HID_SMARTJOYPLUS=y -CONFIG_SMARTJOYPLUS_FF=y -CONFIG_HID_TIVO=y -CONFIG_HID_TOPSEED=y +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set # CONFIG_HID_TOPRE is not set -CONFIG_HID_THINGM=y -CONFIG_HID_THRUSTMASTER=y -CONFIG_THRUSTMASTER_FF=y +# CONFIG_HID_THINGM is not set # CONFIG_HID_UDRAW_PS3 is not set -# CONFIG_HID_U2FZERO is not set -CONFIG_HID_WACOM=y -CONFIG_HID_WIIMOTE=y -CONFIG_HID_XINMO=y -CONFIG_HID_ZEROPLUS=y -CONFIG_ZEROPLUS_FF=y -CONFIG_HID_ZYDACRON=y -CONFIG_HID_SENSOR_HUB=y -CONFIG_HID_SENSOR_CUSTOM_SENSOR=y -CONFIG_HID_ALPS=y -# CONFIG_HID_MCP2221 is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set # end of Special HID drivers # # USB HID support # -CONFIG_USB_HID=y +# CONFIG_USB_HID is not set # CONFIG_HID_PID is not set -CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# end of USB HID Boot Protocol drivers # end of USB HID support # @@ -5335,7 +3807,6 @@ CONFIG_USB_COMMON=y # CONFIG_USB_CONN_GPIO is not set CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB=y -CONFIG_USB_PCI=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # @@ -5358,13 +3829,11 @@ CONFIG_USB_MON=y # CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DBGCAP is not set -CONFIG_USB_XHCI_PCI=y # CONFIG_USB_XHCI_PCI_RENESAS is not set CONFIG_USB_XHCI_PLATFORM=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y -CONFIG_USB_EHCI_PCI=y # CONFIG_USB_EHCI_FSL is not set CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_OXU210HP_HCD is not set @@ -5372,10 +3841,8 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y # CONFIG_USB_FOTG210_HCD is not set # CONFIG_USB_MAX3421_HCD is not set CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_HCD_PCI is not set # CONFIG_USB_OHCI_HCD_SSB is not set CONFIG_USB_OHCI_HCD_PLATFORM=y -# CONFIG_USB_UHCI_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_HCD_BCMA is not set @@ -5431,7 +3898,6 @@ CONFIG_USB_DWC3_DUAL_ROLE=y # # Platform Glue Driver Support # -CONFIG_USB_DWC3_HAPS=y CONFIG_USB_DWC3_OF_SIMPLE=y CONFIG_USB_DWC2=y # CONFIG_USB_DWC2_HOST is not set @@ -5441,7 +3907,6 @@ CONFIG_USB_DWC2=y # # CONFIG_USB_DWC2_PERIPHERAL is not set CONFIG_USB_DWC2_DUAL_ROLE=y -# CONFIG_USB_DWC2_PCI is not set # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set # CONFIG_USB_CHIPIDEA is not set @@ -5450,61 +3915,7 @@ CONFIG_USB_DWC2_DUAL_ROLE=y # # USB port drivers # -CONFIG_USB_SERIAL=y -# CONFIG_USB_SERIAL_CONSOLE is not set -CONFIG_USB_SERIAL_GENERIC=y -# CONFIG_USB_SERIAL_SIMPLE is not set -# CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_ARK3116 is not set -# CONFIG_USB_SERIAL_BELKIN is not set -CONFIG_USB_SERIAL_CH341=y -# CONFIG_USB_SERIAL_WHITEHEAT is not set -# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set -CONFIG_USB_SERIAL_CP210X=y -# CONFIG_USB_SERIAL_CYPRESS_M8 is not set -# CONFIG_USB_SERIAL_EMPEG is not set -CONFIG_USB_SERIAL_FTDI_SIO=y -# CONFIG_USB_SERIAL_VISOR is not set -# CONFIG_USB_SERIAL_IPAQ is not set -# CONFIG_USB_SERIAL_IR is not set -# CONFIG_USB_SERIAL_EDGEPORT is not set -# CONFIG_USB_SERIAL_EDGEPORT_TI is not set -# CONFIG_USB_SERIAL_F81232 is not set -# CONFIG_USB_SERIAL_F8153X is not set -# CONFIG_USB_SERIAL_GARMIN is not set -# CONFIG_USB_SERIAL_IPW is not set -# CONFIG_USB_SERIAL_IUU is not set -# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set -CONFIG_USB_SERIAL_KEYSPAN=y -# CONFIG_USB_SERIAL_KLSI is not set -# CONFIG_USB_SERIAL_KOBIL_SCT is not set -# CONFIG_USB_SERIAL_MCT_U232 is not set -# CONFIG_USB_SERIAL_METRO is not set -# CONFIG_USB_SERIAL_MOS7720 is not set -# CONFIG_USB_SERIAL_MOS7840 is not set -# CONFIG_USB_SERIAL_MXUPORT is not set -# CONFIG_USB_SERIAL_NAVMAN is not set -CONFIG_USB_SERIAL_PL2303=y -CONFIG_USB_SERIAL_OTI6858=y -# CONFIG_USB_SERIAL_QCAUX is not set -CONFIG_USB_SERIAL_QUALCOMM=y -# CONFIG_USB_SERIAL_SPCP8X5 is not set -# CONFIG_USB_SERIAL_SAFE is not set -CONFIG_USB_SERIAL_SIERRAWIRELESS=y -# CONFIG_USB_SERIAL_SYMBOL is not set -# CONFIG_USB_SERIAL_TI is not set -# CONFIG_USB_SERIAL_CYBERJACK is not set -CONFIG_USB_SERIAL_WWAN=y -CONFIG_USB_SERIAL_OPTION=y -# CONFIG_USB_SERIAL_OMNINET is not set -# CONFIG_USB_SERIAL_OPTICON is not set -# CONFIG_USB_SERIAL_XSENS_MT is not set -# CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_SSU100 is not set -# CONFIG_USB_SERIAL_QT2 is not set -# CONFIG_USB_SERIAL_UPD78F0730 is not set -# CONFIG_USB_SERIAL_XR is not set -# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers @@ -5529,7 +3940,7 @@ CONFIG_USB_SERIAL_OPTION=y # CONFIG_USB_EHSET_TEST_FIXTURE is not set # CONFIG_USB_ISIGHTFW is not set # CONFIG_USB_YUREX is not set -CONFIG_USB_EZUSB_FX2=y +# CONFIG_USB_EZUSB_FX2 is not set # CONFIG_USB_HUB_USB251XB is not set # CONFIG_USB_HSIC_USB3503 is not set # CONFIG_USB_HSIC_USB4604 is not set @@ -5567,11 +3978,7 @@ CONFIG_U_SERIAL_CONSOLE=y # CONFIG_USB_SNP_UDC_PLAT is not set # CONFIG_USB_M66592 is not set # CONFIG_USB_BDC_UDC is not set -# CONFIG_USB_AMD5536UDC is not set # CONFIG_USB_NET2272 is not set -# CONFIG_USB_NET2280 is not set -# CONFIG_USB_GOKU is not set -# CONFIG_USB_EG20T is not set # CONFIG_USB_GADGET_XILINX is not set # CONFIG_USB_MAX3420_UDC is not set # CONFIG_USB_DUMMY_HCD is not set @@ -5582,27 +3989,7 @@ CONFIG_USB_F_ACM=y CONFIG_USB_U_SERIAL=y CONFIG_USB_F_SERIAL=y CONFIG_USB_F_OBEX=y -CONFIG_USB_F_MASS_STORAGE=y -CONFIG_USB_F_FS=y -CONFIG_USB_CONFIGFS=y -# CONFIG_USB_CONFIGFS_SERIAL is not set -CONFIG_USB_CONFIGFS_ACM=y -# CONFIG_USB_CONFIGFS_OBEX is not set -# CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set -# CONFIG_USB_CONFIGFS_ECM_SUBSET is not set -# CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set -CONFIG_USB_CONFIGFS_MASS_STORAGE=y -# CONFIG_USB_CONFIGFS_F_LB_SS is not set -CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_UAC1 is not set -# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -# CONFIG_USB_CONFIGFS_F_HID is not set -# CONFIG_USB_CONFIGFS_F_UVC is not set -# CONFIG_USB_CONFIGFS_F_PRINTER is not set +# CONFIG_USB_CONFIGFS is not set # # USB Gadget precomposed configurations @@ -5660,7 +4047,7 @@ CONFIG_PWRSEQ_SIMPLE=y CONFIG_MMC_BLOCK=y CONFIG_MMC_BLOCK_MINORS=32 # CONFIG_SDIO_UART is not set -CONFIG_MMC_TEST=y +# CONFIG_MMC_TEST is not set # # MMC/SD/SDIO Host Controller Drivers @@ -5668,7 +4055,6 @@ CONFIG_MMC_TEST=y # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_ARMMMCI is not set CONFIG_MMC_SDHCI=y -# CONFIG_MMC_SDHCI_PCI is not set CONFIG_MMC_SDHCI_PLTFM=y # CONFIG_MMC_SDHCI_OF_ARASAN is not set # CONFIG_MMC_SDHCI_OF_AT91 is not set @@ -5676,25 +4062,19 @@ CONFIG_MMC_SDHCI_PLTFM=y # CONFIG_MMC_SDHCI_CADENCE is not set # CONFIG_MMC_SDHCI_F_SDH30 is not set # CONFIG_MMC_SDHCI_MILBEAUT is not set -# CONFIG_MMC_TIFM_SD is not set # CONFIG_MMC_SPI is not set -# CONFIG_MMC_SDRICOH_CS is not set -# CONFIG_MMC_CB710 is not set -# CONFIG_MMC_VIA_SDMMC is not set CONFIG_MMC_DW=y CONFIG_MMC_DW_PLTFM=y # CONFIG_MMC_DW_BLUEFIELD is not set # CONFIG_MMC_DW_EXYNOS is not set # CONFIG_MMC_DW_HI3798CV200 is not set # CONFIG_MMC_DW_K3 is not set -# CONFIG_MMC_DW_PCI is not set CONFIG_MMC_DW_ROCKCHIP=y # CONFIG_MMC_VUB300 is not set # CONFIG_MMC_USHC is not set # CONFIG_MMC_USDHI6ROL0 is not set # CONFIG_MMC_CQHCI is not set # CONFIG_MMC_HSQ is not set -# CONFIG_MMC_TOSHIBA_PCI is not set # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set # CONFIG_MMC_SDHCI_OMAP is not set @@ -5738,7 +4118,7 @@ CONFIG_LEDS_PWM=y # CONFIG_LEDS_TLC591XX is not set # CONFIG_LEDS_LM355x is not set # CONFIG_LEDS_IS31FL319X is not set -CONFIG_LEDS_IS31FL32XX=y +# CONFIG_LEDS_IS31FL32XX is not set # # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) @@ -5764,7 +4144,6 @@ CONFIG_LEDS_SYSCON=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y -CONFIG_LEDS_TRIGGER_DISK=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y @@ -5815,7 +4194,7 @@ CONFIG_RTC_INTF_SYSFS=y # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set -CONFIG_RTC_DRV_HYM8563=y +# CONFIG_RTC_DRV_HYM8563 is not set # CONFIG_RTC_DRV_MAX6900 is not set # CONFIG_RTC_DRV_NCT3018Y is not set CONFIG_RTC_DRV_RK808=y @@ -5831,7 +4210,6 @@ CONFIG_RTC_DRV_RK808=y # CONFIG_RTC_DRV_PCF8583 is not set # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_BQ32K is not set -# CONFIG_RTC_DRV_TPS6586X is not set # CONFIG_RTC_DRV_S35390A is not set # CONFIG_RTC_DRV_FM3130 is not set # CONFIG_RTC_DRV_RX8010 is not set @@ -5901,7 +4279,6 @@ CONFIG_RTC_I2C_AND_SPI=y # # HID Sensor RTC drivers # -# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set # CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -5913,23 +4290,18 @@ CONFIG_DMA_ENGINE=y CONFIG_DMA_OF=y # CONFIG_ALTERA_MSGDMA is not set # CONFIG_AMBA_PL08X is not set -# CONFIG_BCM_SBA_RAID is not set # CONFIG_DW_AXI_DMAC is not set # CONFIG_FSL_EDMA is not set # CONFIG_FSL_QDMA is not set # CONFIG_INTEL_IDMA64 is not set # CONFIG_MV_XOR_V2 is not set CONFIG_PL330_DMA=y -# CONFIG_PLX_DMA is not set # CONFIG_XILINX_DMA is not set # CONFIG_XILINX_ZYNQMP_DMA is not set # CONFIG_XILINX_ZYNQMP_DPDMA is not set # CONFIG_QCOM_HIDMA_MGMT is not set # CONFIG_QCOM_HIDMA is not set # CONFIG_DW_DMAC is not set -# CONFIG_DW_DMAC_PCI is not set -# CONFIG_DW_EDMA is not set -# CONFIG_DW_EDMA_PCIE is not set # CONFIG_SF_PDMA is not set # @@ -5968,13 +4340,10 @@ CONFIG_SYNC_FILE=y # CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_RTL8192U is not set # CONFIG_RTLLIB is not set CONFIG_RTL8723BS=m CONFIG_R8712U=m CONFIG_R8188EU=m -# CONFIG_RTS5208 is not set -# CONFIG_VT6655 is not set # CONFIG_VT6656 is not set # @@ -6026,7 +4395,6 @@ CONFIG_R8188EU=m # end of Resolver to digital converters # end of IIO staging drivers -# CONFIG_FB_SM750 is not set # CONFIG_STAGING_MEDIA is not set # CONFIG_STAGING_BOARD is not set # CONFIG_LTE_GDM724X is not set @@ -6035,11 +4403,8 @@ CONFIG_R8188EU=m # CONFIG_PI433 is not set # CONFIG_XIL_AXIS_FIFO is not set # CONFIG_FIELDBUS_DEV is not set -# CONFIG_QLGE is not set -# CONFIG_VME_BUS is not set # CONFIG_GOLDFISH is not set -CONFIG_CHROME_PLATFORMS=y -# CONFIG_CROS_EC is not set +# CONFIG_CHROME_PLATFORMS is not set # CONFIG_MELLANOX_PLATFORM is not set # CONFIG_SURFACE_PLATFORMS is not set CONFIG_HAVE_CLK=y @@ -6067,7 +4432,7 @@ CONFIG_COMMON_CLK_RK808=y # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_AXI_CLKGEN is not set -CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_XGENE is not set # CONFIG_COMMON_CLK_PWM is not set # CONFIG_COMMON_CLK_RS9_PCIE is not set # CONFIG_COMMON_CLK_VC5 is not set @@ -6234,8 +4599,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_SM5502 is not set # CONFIG_EXTCON_USB_GPIO is not set # CONFIG_EXTCON_USBC_TUSB320 is not set -CONFIG_MEMORY=y -# CONFIG_ARM_PL172_MPMC is not set +# CONFIG_MEMORY is not set CONFIG_IIO=y CONFIG_IIO_BUFFER=y CONFIG_IIO_BUFFER_CB=y @@ -6244,12 +4608,12 @@ CONFIG_IIO_BUFFER_CB=y # CONFIG_IIO_BUFFER_HW_CONSUMER is not set CONFIG_IIO_KFIFO_BUF=y CONFIG_IIO_TRIGGERED_BUFFER=y -CONFIG_IIO_CONFIGFS=y +# CONFIG_IIO_CONFIGFS is not set CONFIG_IIO_TRIGGER=y CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_IIO_SW_DEVICE is not set -CONFIG_IIO_SW_TRIGGER=y -CONFIG_IIO_TRIGGERED_EVENT=y +# CONFIG_IIO_SW_TRIGGER is not set +# CONFIG_IIO_TRIGGERED_EVENT is not set # # Accelerometers @@ -6278,7 +4642,6 @@ CONFIG_IIO_TRIGGERED_EVENT=y # CONFIG_DMARD10 is not set # CONFIG_FXLS8962AF_I2C is not set # CONFIG_FXLS8962AF_SPI is not set -# CONFIG_HID_SENSOR_ACCEL_3D is not set # CONFIG_IIO_ST_ACCEL_3AXIS is not set # CONFIG_KXSD9 is not set # CONFIG_KXCJK1013 is not set @@ -6413,7 +4776,6 @@ CONFIG_ROCKCHIP_SARADC=y # # Hid Sensor IIO Common # -# CONFIG_HID_SENSOR_IIO_COMMON is not set # end of Hid Sensor IIO Common # @@ -6515,7 +4877,6 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_ADXRS450 is not set # CONFIG_BMG160 is not set # CONFIG_FXAS21002C is not set -# CONFIG_HID_SENSOR_GYRO_3D is not set # CONFIG_MPU3050_I2C is not set # CONFIG_IIO_ST_GYRO_3AXIS is not set # CONFIG_ITG3200 is not set @@ -6542,7 +4903,6 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_DHT11 is not set # CONFIG_HDC100X is not set # CONFIG_HDC2010 is not set -# CONFIG_HID_SENSOR_HUMIDITY is not set # CONFIG_HTS221 is not set # CONFIG_HTU21 is not set # CONFIG_SI7005 is not set @@ -6590,11 +4950,9 @@ CONFIG_ROCKCHIP_SARADC=y # CONFIG_CM36651 is not set # CONFIG_GP2AP002 is not set # CONFIG_GP2AP020A00F is not set -CONFIG_SENSORS_ISL29018=y +# CONFIG_SENSORS_ISL29018 is not set # CONFIG_SENSORS_ISL29028 is not set # CONFIG_ISL29125 is not set -# CONFIG_HID_SENSOR_ALS is not set -# CONFIG_HID_SENSOR_PROX is not set # CONFIG_JSA1212 is not set # CONFIG_RPR0521 is not set # CONFIG_LTR501 is not set @@ -6611,8 +4969,8 @@ CONFIG_SENSORS_ISL29018=y # CONFIG_ST_UVIS25 is not set # CONFIG_TCS3414 is not set # CONFIG_TCS3472 is not set -CONFIG_SENSORS_TSL2563=y -CONFIG_TSL2583=y +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_TSL2583 is not set # CONFIG_TSL2591 is not set # CONFIG_TSL2772 is not set # CONFIG_TSL4531 is not set @@ -6634,7 +4992,6 @@ CONFIG_TSL2583=y # CONFIG_BMC150_MAGN_I2C is not set # CONFIG_BMC150_MAGN_SPI is not set # CONFIG_MAG3110 is not set -# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set # CONFIG_MMC35240 is not set # CONFIG_IIO_ST_MAGN_3AXIS is not set # CONFIG_SENSORS_HMC5843_I2C is not set @@ -6647,29 +5004,24 @@ CONFIG_TSL2583=y # # Multiplexers # -CONFIG_IIO_MUX=y +# CONFIG_IIO_MUX is not set # end of Multiplexers # # Inclinometer sensors # -# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set -# CONFIG_HID_SENSOR_DEVICE_ROTATION is not set # end of Inclinometer sensors # # Triggers - standalone # -CONFIG_IIO_HRTIMER_TRIGGER=y # CONFIG_IIO_INTERRUPT_TRIGGER is not set -# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set -CONFIG_IIO_SYSFS_TRIGGER=y +# CONFIG_IIO_SYSFS_TRIGGER is not set # end of Triggers - standalone # # Linear and angular position sensors # -# CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE is not set # end of Linear and angular position sensors # @@ -6701,7 +5053,6 @@ CONFIG_IIO_SYSFS_TRIGGER=y # CONFIG_BMP280 is not set # CONFIG_DLHL60D is not set # CONFIG_DPS310 is not set -# CONFIG_HID_SENSOR_PRESS is not set # CONFIG_HP03 is not set # CONFIG_ICP10100 is not set # CONFIG_MPL115_I2C is not set @@ -6751,7 +5102,6 @@ CONFIG_IIO_SYSFS_TRIGGER=y # # CONFIG_LTC2983 is not set # CONFIG_MAXIM_THERMOCOUPLE is not set -# CONFIG_HID_SENSOR_TEMP is not set # CONFIG_MLX90614 is not set # CONFIG_MLX90632 is not set # CONFIG_TMP006 is not set @@ -6763,13 +5113,11 @@ CONFIG_IIO_SYSFS_TRIGGER=y # CONFIG_MAX31865 is not set # end of Temperature sensors -# CONFIG_NTB is not set CONFIG_PWM=y CONFIG_PWM_SYSFS=y # CONFIG_PWM_DEBUG is not set # CONFIG_PWM_ATMEL_TCB is not set # CONFIG_PWM_CLK is not set -# CONFIG_PWM_DWC is not set # CONFIG_PWM_FSL_FTM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWM_ROCKCHIP=y @@ -6781,10 +5129,8 @@ CONFIG_PWM_ROCKCHIP=y CONFIG_IRQCHIP=y CONFIG_ARM_GIC=y CONFIG_ARM_GIC_MAX_NR=1 -CONFIG_ARM_GIC_V2M=y CONFIG_ARM_GIC_V3=y CONFIG_ARM_GIC_V3_ITS=y -CONFIG_ARM_GIC_V3_ITS_PCI=y # CONFIG_AL_FIC is not set # CONFIG_XILINX_INTC is not set CONFIG_PARTITION_PERCPU=y @@ -6824,12 +5170,12 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y # CONFIG_PHY_MAPPHONE_MDM6600 is not set # CONFIG_PHY_OCELOT_SERDES is not set CONFIG_PHY_ROCKCHIP_DP=y -CONFIG_PHY_ROCKCHIP_DPHY_RX0=y +# CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set CONFIG_PHY_ROCKCHIP_EMMC=y -CONFIG_PHY_ROCKCHIP_INNO_HDMI=y +# CONFIG_PHY_ROCKCHIP_INNO_HDMI is not set CONFIG_PHY_ROCKCHIP_INNO_USB2=y -CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY=y -CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=y +# CONFIG_PHY_ROCKCHIP_INNO_CSIDPHY is not set +# CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY is not set # CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY is not set CONFIG_PHY_ROCKCHIP_PCIE=y # CONFIG_PHY_ROCKCHIP_SNPS_PCIE3 is not set @@ -6850,12 +5196,9 @@ CONFIG_PHY_ROCKCHIP_USB=y CONFIG_ARM_PMU=y # CONFIG_ARM_DSU_PMU is not set # CONFIG_ARM_SPE_PMU is not set -# CONFIG_HISI_PCIE_PMU is not set -# CONFIG_HNS3_PMU is not set # end of Performance monitor support CONFIG_RAS=y -# CONFIG_USB4 is not set # # Android @@ -6867,32 +5210,20 @@ CONFIG_RAS=y # CONFIG_DAX is not set CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y -# CONFIG_NVMEM_RMEM is not set -# CONFIG_NVMEM_ROCKCHIP_EFUSE is not set -# CONFIG_NVMEM_ROCKCHIP_OTP is not set +CONFIG_NVMEM_RMEM=m +CONFIG_NVMEM_ROCKCHIP_EFUSE=y +CONFIG_NVMEM_ROCKCHIP_OTP=m # # HW tracing support # # CONFIG_STM is not set # CONFIG_INTEL_TH is not set -# CONFIG_HISI_PTT is not set # end of HW tracing support # CONFIG_FPGA is not set # CONFIG_FSI is not set # CONFIG_TEE is not set -CONFIG_MULTIPLEXER=y - -# -# Multiplexer drivers -# -# CONFIG_MUX_ADG792A is not set -# CONFIG_MUX_ADGS1408 is not set -CONFIG_MUX_GPIO=y -CONFIG_MUX_MMIO=y -# end of Multiplexer drivers - CONFIG_PM_OPP=y # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set @@ -7139,7 +5470,6 @@ CONFIG_KEYS=y CONFIG_ENCRYPTED_KEYS=y # CONFIG_USER_DECRYPTED_DATA is not set # CONFIG_KEY_DH_OPERATIONS is not set -# CONFIG_KEY_NOTIFICATIONS is not set # CONFIG_SECURITY_DMESG_RESTRICT is not set # CONFIG_SECURITY is not set CONFIG_SECURITYFS=y @@ -7176,12 +5506,6 @@ CONFIG_RANDSTRUCT_NONE=y # end of Kernel hardening options # end of Security options -CONFIG_XOR_BLOCKS=y -CONFIG_ASYNC_CORE=y -CONFIG_ASYNC_MEMCPY=y -CONFIG_ASYNC_XOR=y -CONFIG_ASYNC_PQ=y -CONFIG_ASYNC_RAID6_RECOV=y CONFIG_CRYPTO=y # @@ -7405,8 +5729,6 @@ CONFIG_BINARY_PRINTF=y # # Library routines # -CONFIG_RAID6_PQ=y -CONFIG_RAID6_PQ_BENCHMARK=y CONFIG_LINEAR_RANGES=y # CONFIG_PACKING is not set CONFIG_BITREVERSE=y @@ -7489,14 +5811,9 @@ CONFIG_DECOMPRESS_LZO=y CONFIG_DECOMPRESS_LZ4=y CONFIG_DECOMPRESS_ZSTD=y CONFIG_GENERIC_ALLOCATOR=y -CONFIG_TEXTSEARCH=y -CONFIG_TEXTSEARCH_KMP=m -CONFIG_TEXTSEARCH_BM=m -CONFIG_TEXTSEARCH_FSM=m CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y CONFIG_HAS_DMA=y CONFIG_DMA_OPS=y CONFIG_NEED_SG_DMA_LENGTH=y @@ -7519,10 +5836,7 @@ CONFIG_SGL_ALLOC=y # CONFIG_FORCE_NR_CPUS is not set CONFIG_CPU_RMAP=y CONFIG_DQL=y -CONFIG_GLOB=y -# CONFIG_GLOB_SELFTEST is not set CONFIG_NLATTR=y -CONFIG_LRU_CACHE=m CONFIG_CLZ_TAB=y CONFIG_IRQ_POLL=y CONFIG_MPILIB=y @@ -7622,6 +5936,7 @@ CONFIG_HAVE_KCSAN_COMPILER=y # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_SLUB_DEBUG is not set # CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_RODATA_TEST is not set CONFIG_ARCH_HAS_DEBUG_WX=y @@ -7639,11 +5954,10 @@ CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y # CONFIG_DEBUG_VM_PGTABLE is not set CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set -# CONFIG_DEBUG_MEMORY_INIT is not set +CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y -CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_KASAN_SW_TAGS=y @@ -7662,9 +5976,7 @@ CONFIG_HAVE_ARCH_KFENCE=y CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=1 # CONFIG_SOFTLOCKUP_DETECTOR is not set -CONFIG_DETECT_HUNG_TASK=y -CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 -CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_DETECT_HUNG_TASK is not set # CONFIG_WQ_WATCHDOG is not set # CONFIG_TEST_LOCKUP is not set # end of Debug Oops, Lockups and Hangs @@ -7673,12 +5985,10 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y # Scheduler Debugging # # CONFIG_SCHED_DEBUG is not set -CONFIG_SCHED_INFO=y -CONFIG_SCHEDSTATS=y +# CONFIG_SCHEDSTATS is not set # end of Scheduler Debugging # CONFIG_DEBUG_TIMEKEEPING is not set -# CONFIG_DEBUG_PREEMPT is not set # # Lock Debugging (spinlocks, mutexes, etc...) @@ -7687,7 +5997,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_PROVE_LOCKING is not set # CONFIG_LOCK_STAT is not set # CONFIG_DEBUG_RT_MUTEXES is not set -CONFIG_DEBUG_SPINLOCK=y +# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set # CONFIG_DEBUG_RWSEMS is not set @@ -7716,7 +6026,7 @@ CONFIG_STACKTRACE=y # CONFIG_DEBUG_MAPLE_TREE is not set # end of Debug kernel data structures -CONFIG_DEBUG_CREDENTIALS=y +# CONFIG_DEBUG_CREDENTIALS is not set # # RCU Debugging @@ -7743,7 +6053,8 @@ CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set # CONFIG_SAMPLES is not set -# CONFIG_STRICT_DEVMEM is not set +CONFIG_STRICT_DEVMEM=y +CONFIG_IO_STRICT_DEVMEM=y # # arm64 Debugging diff --git a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf index 1aef0a017..c6c14213c 100644 --- a/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf +++ b/projects/Rockchip/devices/RK3566/linux/linux.aarch64.conf @@ -2785,7 +2785,7 @@ CONFIG_CHARGER_BQ24735=y # CONFIG_BATTERY_GAUGE_LTC2941 is not set # CONFIG_CHARGER_RT9455 is not set # CONFIG_CHARGER_CROS_USBPD is not set -CONFIG_BATTERY_CW2015=y +# CONFIG_BATTERY_CW2015 is not set # CONFIG_BATTERY_RK816 is not set CONFIG_BATTERY_RK817=y CONFIG_CHARGER_RK817=y @@ -4268,13 +4268,13 @@ CONFIG_USB_DWC2_DUAL_ROLE=y # USB port drivers # CONFIG_USB_SERIAL=y -# CONFIG_USB_SERIAL_CONSOLE is not set +CONFIG_USB_SERIAL_CONSOLE=y CONFIG_USB_SERIAL_GENERIC=y # CONFIG_USB_SERIAL_SIMPLE is not set # CONFIG_USB_SERIAL_AIRCABLE is not set # CONFIG_USB_SERIAL_ARK3116 is not set # CONFIG_USB_SERIAL_BELKIN is not set -# CONFIG_USB_SERIAL_CH341 is not set +CONFIG_USB_SERIAL_CH341=y # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set CONFIG_USB_SERIAL_CP210X=y diff --git a/projects/Rockchip/devices/RK3566/options b/projects/Rockchip/devices/RK3566/options index ea596ee73..ff8acbc0c 100644 --- a/projects/Rockchip/devices/RK3566/options +++ b/projects/Rockchip/devices/RK3566/options @@ -89,7 +89,7 @@ DRIVER_ADDONS="" #dvb-latest # debug tty path - DEBUG_TTY="/dev/ttyFIQ0" + DEBUG_TTY="/dev/ttyUSB0" # build and install bluetooth support (yes / no) BLUETOOTH_SUPPORT="yes" diff --git a/projects/Rockchip/devices/RK3588/options b/projects/Rockchip/devices/RK3588/options index ea24ecd70..58130a351 100755 --- a/projects/Rockchip/devices/RK3588/options +++ b/projects/Rockchip/devices/RK3588/options @@ -88,6 +88,7 @@ # for a list of additional drivers see packages/linux-drivers # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" + ADDITIONAL_DRIVERS+=" RTL8852xx" # build and install driver addons (yes / no) DRIVER_ADDONS_SUPPORT="no" diff --git a/projects/Rockchip/packages/linux/package.mk b/projects/Rockchip/packages/linux/package.mk index 1391f58be..fb0288fff 100644 --- a/projects/Rockchip/packages/linux/package.mk +++ b/projects/Rockchip/packages/linux/package.mk @@ -8,9 +8,9 @@ PKG_NAME="linux" PKG_LICENSE="GPL" PKG_SITE="https://github.com/JustEnoughLinuxOS" PKG_DEPENDS_HOST="ccache:host rsync:host openssl:host" -PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host lz4:host wireless-regdb keyutils util-linux binutils ncurses openssl:host initramfs ${KERNEL_EXTRA_DEPENDS_TARGET}" +PKG_DEPENDS_TARGET="toolchain linux:host cpio:host kmod:host xz:host lz4:host wireless-regdb keyutils util-linux binutils ncurses openssl:host ${KERNEL_EXTRA_DEPENDS_TARGET}" PKG_DEPENDS_INIT="toolchain" -PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory busybox)" +PKG_NEED_UNPACK="${LINUX_DEPENDS} $(get_pkg_directory initramfs) $(get_pkg_variable initramfs PKG_NEED_UNPACK)" PKG_LONGDESC="This package builds the kernel for Rockchip devices" PKG_IS_KERNEL_PKG="yes" PKG_STAMP="${KERNEL_TARGET} ${KERNEL_MAKE_EXTRACMD}" @@ -18,25 +18,25 @@ PKG_PATCH_DIRS+="${DEVICE}" case ${DEVICE} in RK358*) - PKG_VERSION="9469ea8bd5ed" + PKG_VERSION="a7c264a8249f2058cf8ca624ee5034403412a2c1" PKG_URL="${PKG_SITE}/rk358x-kernel.git" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; RK3566) PKG_URL="${PKG_SITE}/rk356x-kernel.git" - PKG_VERSION="9d98ce7b4" + PKG_VERSION="9e8a8b1" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; *X55) PKG_URL="${PKG_SITE}/rk3566-x55-kernel.git" - PKG_VERSION="c7531bab2" + PKG_VERSION="9b92751b8fe21f9326d1a54dd5f675965a12d6e1" GET_HANDLER_SUPPORT="git" PKG_GIT_CLONE_BRANCH="main" ;; RK33*) - PKG_VERSION="6.1.60" + PKG_VERSION="6.1.62" PKG_URL="https://www.kernel.org/pub/linux/kernel/v6.x/${PKG_NAME}-${PKG_VERSION}.tar.xz" ;; esac @@ -62,6 +62,13 @@ if [[ "${KERNEL_TARGET}" = uImage* ]]; then PKG_DEPENDS_TARGET="${PKG_DEPENDS_TARGET} u-boot-tools:host" fi +# Ensure that the dependencies of initramfs:target are built correctly, but +# we don't want to add initramfs:target as a direct dependency as we install +# this "manually" from within linux:target +for pkg in $(get_pkg_variable initramfs PKG_DEPENDS_TARGET); do + ! listcontains "${PKG_DEPENDS_TARGET}" "${pkg}" && PKG_DEPENDS_TARGET+=" ${pkg}" || true +done + post_patch() { cp ${PKG_KERNEL_CFG_FILE} ${PKG_BUILD}/.config @@ -125,6 +132,11 @@ makeinstall_host() { } pre_make_target() { + ( cd ${ROOT} + rm -rf ${BUILD}/initramfs + rm -f ${STAMPS_INSTALL}/initramfs/install_target ${STAMPS_INSTALL}/*/install_init + ${SCRIPTS}/install initramfs + ) if [ "${TARGET_ARCH}" = "x86_64" ]; then # copy some extra firmware to linux tree mkdir -p ${PKG_BUILD}/external-firmware diff --git a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-devices.patch b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-devices.patch index be1fec2a0..15e52e160 100644 --- a/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-devices.patch +++ b/projects/Rockchip/packages/linux/patches/RK3326/000-rk3326-devices.patch @@ -102,7 +102,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/px30.dtsi linux/arch/arm64/bo + compatible = "operating-points-v2"; + opp-786000000 { + opp-hz = /bits/ 64 <786000000>; -+ opp-microvolt = <1100000>; ++ opp-microvolt = <1125000>; + }; + }; + @@ -995,7 +995,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go.dtsi linux/a diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts --- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 1970-01-01 00:00:00.000000000 +0000 +++ linux/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts 2023-10-28 04:02:49.341614140 +0000 -@@ -0,0 +1,300 @@ +@@ -0,0 +1,303 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Hardkernel Co., Ltd @@ -1218,7 +1218,9 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin + compatible = "mmc-pwrseq-simple"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_pwrseq_pins>; -+ /*reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>;*/ ++ reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>; ++ post-power-on-delay-ms = <300>; ++ power-off-delay-us = <200000>; + }; +}; + @@ -1258,12 +1260,13 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin + keep-power-in-suspend; + non-removable; + vmmc-supply = <&vcc_wifi>; ++ mmc-pwrseq = <&wifi_pwrseq>; + status = "okay"; + + esp8089: wifi@1 { + compatible = "esp,esp8089"; + reg = <1>; -+ esp,crystal-26M-en = <2>; ++ esp,crystal-26M-en = <1>; + }; +}; + @@ -1291,7 +1294,7 @@ diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-odroid-go2-v11.dts lin + + wifi { + wifi_pwrseq_pins: wifi-pwrseq-pins { -+ rockchip,pins = /*<3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>,*/ ++ rockchip,pins = <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>, + <3 RK_PB6 RK_FUNC_GPIO &pcfg_output_high>; + }; + }; diff --git a/projects/Rockchip/packages/linux/patches/RK3326/001-powkiddy-rgb10-dts.patch b/projects/Rockchip/packages/linux/patches/RK3326/001-powkiddy-rgb10-dts.patch new file mode 100644 index 000000000..60b363452 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3326/001-powkiddy-rgb10-dts.patch @@ -0,0 +1,315 @@ +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/Makefile linux/arch/arm64/boot/dts/rockchip/Makefile +--- linux.orig/arch/arm64/boot/dts/rockchip/Makefile 2023-10-29 19:29:06.983692813 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/Makefile 2023-10-29 19:30:35.815676699 +0000 +@@ -12,6 +12,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-an + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb ++dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-powkiddy-rgb10.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb + dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-nanopi-r2s.dtb +diff -rupN linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts +--- linux.orig/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 1970-01-01 00:00:00.000000000 +0000 ++++ linux/arch/arm64/boot/dts/rockchip/rk3326-powkiddy-rgb10.dts 2023-10-29 19:31:19.751624080 +0000 +@@ -0,0 +1,299 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++/* ++ * Copyright (c) 2019 Hardkernel Co., Ltd ++ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH ++ * Copyright (c) 2022 Maya Matuszczyk ++ */ ++ ++/dts-v1/; ++#include "rk3326-odroid-go.dtsi" ++ ++/ { ++ model = "Powkiddy RGB10"; ++ compatible = "powkiddy,rk3326-rgb10", "rockchip,rk3326"; ++ ++ aliases { ++ mmc1 = &sdio; ++ }; ++ ++ gpio_keys: volume-keys { ++ compatible = "gpio-keys-polled"; ++ poll-interval = <5>; ++ autorepeat; ++ ++ volume-up-button { ++ label = "VOLUME-UP"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>; ++ ++ }; ++ volume-down-button { ++ label = "VOLUME-DOWN"; ++ linux,code = ; ++ gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>; ++ ++ }; ++ }; ++ ++ joypad: odroidgo2-joypad { ++ compatible = "odroidgo2-v11-joypad"; ++ ++ /* ++ - odroidgo2-joypad sysfs list - ++ * for poll device interval(ms) ++ /sys/devices/platform/odroidgo2_joypad/poll_interval [rw] ++ * for button-adc-fuzz ++ /sys/devices/platform/odroidgo2_joypad/adc_fuzz [r] ++ * for button-adc-flat ++ /sys/devices/platform/odroidgo2_joypad/adc_flat [r] ++ ++ * for report control(1:enable, 0:disable) ++ /sys/devices/platform/odroidgo2_joypad/enable [rw] ++ * for adc calibration value setup(1:current adcs value -> cal value) ++ /sys/devices/platform/odroidgo2_joypad/adc_cal [rw] ++ */ ++ ++ /* gpio pincontrol setup */ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&btn_pins>; ++ ++ /* JOY_X, JOY_Y Channel define */ ++ io-channel-names = "joy_x", "joy_y"; ++ io-channels = <&saradc 1>, <&saradc 2>; ++ ++ /* adc channel count */ ++ button-adc-count = <2>; ++ ++ /* adc calculate scale */ ++ button-adc-scale = <2>; ++ ++ /* adc deadzone range */ ++ button-adc-deadzone = <20>; ++ ++ /* ++ joy-stick voltage range ++ /sys/devices/platform/ff288000.saradc/iio:device0 ++ adc-x : in_voltage1_raw ++ adc-y : in_voltage2_raw ++ ++ range calculate. ++ (adc raw max value - adc raw min value) * scale * 1.7515 ++ */ ++ button-adc-x-range = <1800>; ++ button-adc-y-range = <1800>; ++ ++ /* ++ specifies fuzz value that is used to filter noise from ++ the event stream. ++ */ ++ button-adc-fuzz = <32>; ++ button-adc-flat = <32>; ++ ++ /* poll device interval (ms), adc read interval */ ++ poll-interval = <10>; ++ ++ /* gpio button auto repeat set value : default disable */ ++ /* ++ autorepeat; ++ */ ++ ++ /* ++ *** RGB10 Switch layoout *** ++ |------------------------------------------------| ++ | sw15 sw16 | ++ | sw20 sw21 | ++ |------------------------------------------------| ++ | sw1 vol- |-------------------| vol+ sw8 | ++ | sw3 sw4 | | sw7 sw5 | ++ | sw2 | LCD Display | sw6 | ++ | | | | ++ | |-------------------| | ++ |------------------------------------------------| ++ */ ++ /* ++ joypad driver is poll-device driver. ++ poll-device is does not support wakeup-source. ++ */ ++ sw1 { ++ gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-UP"; ++ linux,code = ; // 0x220 ++ }; ++ sw2 { ++ gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-DOWN"; ++ linux,code = ; // 0x221 ++ }; ++ sw3 { ++ gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-LEFT"; ++ linux,code = ; // 0x222 ++ }; ++ sw4 { ++ gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO DPAD-RIGHT"; ++ linux,code = ; // 0x223 ++ }; ++ sw5 { ++ gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO KEY BTN-A"; ++ linux,code = ; // 0x131 ++ }; ++ sw6 { ++ gpios = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-B"; ++ linux,code = ; // 0x130 ++ }; ++ sw7 { ++ gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-Y"; ++ linux,code = ; // 0x134 ++ }; ++ sw8 { ++ gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO BTN-X"; ++ linux,code = ; // 0x133 ++ }; ++ sw9 { ++ gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>; ++ label = "GPIO F1"; ++ linux,code = ; // 0x2c0 ++ }; ++ sw10 { ++ gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>; ++ label = "GPIO F2"; ++ linux,code = ; // 0x2c1 ++ }; ++ sw13 { ++ gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; ++ label = "GPIO F5"; ++ linux,code = ; // 0x2c4 ++ }; ++ sw14 { ++ gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>; ++ label = "GPIO F6"; ++ linux,code = ; // 0x13c ++ }; ++ sw15 { ++ gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT"; ++ linux,code = ; // 0x02 ++ }; ++ sw16 { ++ gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT"; ++ linux,code = ; // 0x05 ++ }; ++ sw20 { ++ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-LEFT2"; ++ linux,code = ; ++ }; ++ sw21 { ++ gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>; ++ label = "GPIO TOP-RIGHT2"; ++ linux,code = ; ++ }; ++ }; ++ ++ battery: battery { ++ compatible = "simple-battery"; ++ charge-full-design-microamp-hours = <2800000>; ++ charge-term-current-microamp = <280000>; ++ constant-charge-current-max-microamp = <2000000>; ++ constant-charge-voltage-max-microvolt = <4200000>; ++ factory-internal-resistance-micro-ohms = <180000>; ++ voltage-max-design-microvolt = <4100000>; ++ voltage-min-design-microvolt = <3500000>; ++ ++ ocv-capacity-celsius = <20>; ++ ocv-capacity-table-0 = <4046950 100>, <4001920 95>, <3967900 90>, <3919950 85>, ++ <3888450 80>, <3861850 75>, <3831540 70>, <3799130 65>, ++ <3768190 60>, <3745650 55>, <3726610 50>, <3711630 45>, ++ <3696720 40>, <3685660 35>, <3674950 30>, <3663050 25>, ++ <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, ++ <3574170 0>; ++ }; ++ ++ wifi_pwrseq: wifi-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_pwrseq_pins>; ++ /*reset-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>;*/ ++ }; ++}; ++ ++&internal_display { ++ compatible = "elida,kd35t133"; ++ iovcc-supply = <&vcc_lcd>; ++ vdd-supply = <&vcc_lcd>; ++ rotation = <270>; ++}; ++ ++&rk817 { ++ regulators { ++ vcc_wifi: LDO_REG9 { ++ regulator-name = "vcc_wifi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-boot-on; ++ ++ regulator-state-mem { ++ regulator-off-in-suspend; ++ regulator-suspend-microvolt = <3300000>; ++ }; ++ }; ++ }; ++}; ++ ++&rk817_charger { ++ monitored-battery = <&battery>; ++}; ++ ++&sdio { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ disable-wp; ++ keep-power-in-suspend; ++ non-removable; ++ vmmc-supply = <&vcc_wifi>; ++ status = "okay"; ++ ++ esp8089: wifi@1 { ++ compatible = "esp,esp8089"; ++ reg = <1>; ++ esp,crystal-26M-en = <2>; ++ }; ++}; ++ ++&pinctrl { ++ btns { ++ btn_pins: btn-pins { ++ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>, ++ <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, ++ <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>; ++ }; ++ }; ++ ++ wifi { ++ wifi_pwrseq_pins: wifi-pwrseq-pins { ++ rockchip,pins = /*<3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>,*/ ++ <3 RK_PB6 RK_FUNC_GPIO &pcfg_output_high>; ++ }; ++ }; ++}; + diff --git a/projects/Rockchip/packages/linux/patches/RK3326/002-esp8089-kernel-driver.patch b/projects/Rockchip/packages/linux/patches/RK3326/002-esp8089-kernel-driver.patch new file mode 100644 index 000000000..017ee8f04 --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3326/002-esp8089-kernel-driver.patch @@ -0,0 +1,10930 @@ +From 2d6165af6e9d5ed5026cdf250536c0a00d84fd75 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sat, 1 Oct 2022 12:43:53 +0000 +Subject: [PATCH] add esp8089 kernel driver + +--- + drivers/net/wireless/Kconfig | 1 + + drivers/net/wireless/Makefile | 1 + + drivers/net/wireless/esp8089/.gitignore | 7 + + drivers/net/wireless/esp8089/Kconfig | 13 + + drivers/net/wireless/esp8089/LICENSE | 340 +++ + drivers/net/wireless/esp8089/Makefile | 7 + + drivers/net/wireless/esp8089/Makefile.old | 99 + + drivers/net/wireless/esp8089/README.md | 31 + + drivers/net/wireless/esp8089/esp_ctrl.c | 801 ++++++ + drivers/net/wireless/esp8089/esp_ctrl.h | 58 + + drivers/net/wireless/esp8089/esp_debug.c | 297 ++ + drivers/net/wireless/esp8089/esp_debug.h | 101 + + drivers/net/wireless/esp8089/esp_ext.c | 542 ++++ + drivers/net/wireless/esp8089/esp_ext.h | 100 + + drivers/net/wireless/esp8089/esp_file.c | 258 ++ + drivers/net/wireless/esp8089/esp_file.h | 43 + + drivers/net/wireless/esp8089/esp_init_data.h | 7 + + drivers/net/wireless/esp8089/esp_io.c | 639 +++++ + drivers/net/wireless/esp8089/esp_mac80211.c | 1727 ++++++++++++ + drivers/net/wireless/esp8089/esp_mac80211.h | 38 + + drivers/net/wireless/esp8089/esp_main.c | 263 ++ + drivers/net/wireless/esp8089/esp_path.h | 6 + + drivers/net/wireless/esp8089/esp_pub.h | 222 ++ + drivers/net/wireless/esp8089/esp_sif.h | 207 ++ + drivers/net/wireless/esp8089/esp_sip.c | 2418 +++++++++++++++++ + drivers/net/wireless/esp8089/esp_sip.h | 171 ++ + drivers/net/wireless/esp8089/esp_utils.c | 262 ++ + drivers/net/wireless/esp8089/esp_utils.h | 41 + + drivers/net/wireless/esp8089/esp_version.h | 1 + + drivers/net/wireless/esp8089/esp_wl.h | 63 + + drivers/net/wireless/esp8089/esp_wmac.h | 92 + + .../wireless/esp8089/firmware/LICENSE-2.0.txt | 203 ++ + drivers/net/wireless/esp8089/sdio_sif_esp.c | 811 ++++++ + drivers/net/wireless/esp8089/sip2_common.h | 475 ++++ + .../net/wireless/esp8089/slc_host_register.h | 271 ++ + 35 files changed, 10616 insertions(+) + create mode 100644 drivers/net/wireless/esp8089/.gitignore + create mode 100644 drivers/net/wireless/esp8089/Kconfig + create mode 100644 drivers/net/wireless/esp8089/LICENSE + create mode 100644 drivers/net/wireless/esp8089/Makefile + create mode 100644 drivers/net/wireless/esp8089/Makefile.old + create mode 100644 drivers/net/wireless/esp8089/README.md + create mode 100644 drivers/net/wireless/esp8089/esp_ctrl.c + create mode 100644 drivers/net/wireless/esp8089/esp_ctrl.h + create mode 100644 drivers/net/wireless/esp8089/esp_debug.c + create mode 100644 drivers/net/wireless/esp8089/esp_debug.h + create mode 100644 drivers/net/wireless/esp8089/esp_ext.c + create mode 100644 drivers/net/wireless/esp8089/esp_ext.h + create mode 100644 drivers/net/wireless/esp8089/esp_file.c + create mode 100644 drivers/net/wireless/esp8089/esp_file.h + create mode 100644 drivers/net/wireless/esp8089/esp_init_data.h + create mode 100644 drivers/net/wireless/esp8089/esp_io.c + create mode 100644 drivers/net/wireless/esp8089/esp_mac80211.c + create mode 100644 drivers/net/wireless/esp8089/esp_mac80211.h + create mode 100644 drivers/net/wireless/esp8089/esp_main.c + create mode 100644 drivers/net/wireless/esp8089/esp_path.h + create mode 100644 drivers/net/wireless/esp8089/esp_pub.h + create mode 100644 drivers/net/wireless/esp8089/esp_sif.h + create mode 100644 drivers/net/wireless/esp8089/esp_sip.c + create mode 100644 drivers/net/wireless/esp8089/esp_sip.h + create mode 100644 drivers/net/wireless/esp8089/esp_utils.c + create mode 100644 drivers/net/wireless/esp8089/esp_utils.h + create mode 100644 drivers/net/wireless/esp8089/esp_version.h + create mode 100644 drivers/net/wireless/esp8089/esp_wl.h + create mode 100644 drivers/net/wireless/esp8089/esp_wmac.h + create mode 100644 drivers/net/wireless/esp8089/firmware/LICENSE-2.0.txt + create mode 100644 drivers/net/wireless/esp8089/sdio_sif_esp.c + create mode 100644 drivers/net/wireless/esp8089/sip2_common.h + create mode 100644 drivers/net/wireless/esp8089/slc_host_register.h + +diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig +index cb1c15012dd0..de5e37846397 100644 +--- a/drivers/net/wireless/Kconfig ++++ b/drivers/net/wireless/Kconfig +@@ -37,6 +37,7 @@ source "drivers/net/wireless/st/Kconfig" + source "drivers/net/wireless/ti/Kconfig" + source "drivers/net/wireless/zydas/Kconfig" + source "drivers/net/wireless/quantenna/Kconfig" ++source "drivers/net/wireless/esp8089/Kconfig" + + config PCMCIA_RAYCS + tristate "Aviator/Raytheon 2.4GHz wireless support" +diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile +index a61cf6c90343..92ffd2cef51c 100644 +--- a/drivers/net/wireless/Makefile ++++ b/drivers/net/wireless/Makefile +@@ -22,6 +22,7 @@ obj-$(CONFIG_WLAN_VENDOR_SILABS) += silabs/ + obj-$(CONFIG_WLAN_VENDOR_ST) += st/ + obj-$(CONFIG_WLAN_VENDOR_TI) += ti/ + obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/ ++obj-$(CONFIG_ESP8089) += esp8089/ + + # 16-bit wireless PCMCIA client drivers + obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o +diff --git a/drivers/net/wireless/esp8089/.gitignore b/drivers/net/wireless/esp8089/.gitignore +new file mode 100644 +index 000000000000..eae6529085d0 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/.gitignore +@@ -0,0 +1,7 @@ ++*.cmd ++*.o ++Module.symvers ++modules.order ++.tmp_versions ++*.ko ++*.mod.c +diff --git a/drivers/net/wireless/esp8089/Kconfig b/drivers/net/wireless/esp8089/Kconfig +new file mode 100644 +index 000000000000..8db1fc54712d +--- /dev/null ++++ b/drivers/net/wireless/esp8089/Kconfig +@@ -0,0 +1,13 @@ ++config ESP8089 ++ tristate "Espressif ESP8089 SDIO WiFi" ++ depends on MAC80211 ++ help ++ ESP8089 is a low-budget 2.4GHz WiFi chip by Espressif, used in many ++ cheap tablets with Allwinner or Rockchip SoC ++ ++config ESP8089_DEBUG_FS ++ bool "Enable DebugFS support for ESP8089" ++ depends on ESP8089 ++ default y ++ help ++ DebugFS support for ESP8089 +diff --git a/drivers/net/wireless/esp8089/LICENSE b/drivers/net/wireless/esp8089/LICENSE +new file mode 100644 +index 000000000000..d6a93266f748 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/LICENSE +@@ -0,0 +1,340 @@ ++GNU GENERAL PUBLIC LICENSE ++ Version 2, June 1991 ++ ++ Copyright (C) 1989, 1991 Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ Preamble ++ ++ The licenses for most software are designed to take away your ++freedom to share and change it. By contrast, the GNU General Public ++License is intended to guarantee your freedom to share and change free ++software--to make sure the software is free for all its users. This ++General Public License applies to most of the Free Software ++Foundation's software and to any other program whose authors commit to ++using it. (Some other Free Software Foundation software is covered by ++the GNU Lesser General Public License instead.) You can apply it to ++your programs, too. ++ ++ When we speak of free software, we are referring to freedom, not ++price. Our General Public Licenses are designed to make sure that you ++have the freedom to distribute copies of free software (and charge for ++this service if you wish), that you receive source code or can get it ++if you want it, that you can change the software or use pieces of it ++in new free programs; and that you know you can do these things. ++ ++ To protect your rights, we need to make restrictions that forbid ++anyone to deny you these rights or to ask you to surrender the rights. ++These restrictions translate to certain responsibilities for you if you ++distribute copies of the software, or if you modify it. ++ ++ For example, if you distribute copies of such a program, whether ++gratis or for a fee, you must give the recipients all the rights that ++you have. You must make sure that they, too, receive or can get the ++source code. And you must show them these terms so they know their ++rights. ++ ++ We protect your rights with two steps: (1) copyright the software, and ++(2) offer you this license which gives you legal permission to copy, ++distribute and/or modify the software. ++ ++ Also, for each author's protection and ours, we want to make certain ++that everyone understands that there is no warranty for this free ++software. If the software is modified by someone else and passed on, we ++want its recipients to know that what they have is not the original, so ++that any problems introduced by others will not reflect on the original ++authors' reputations. ++ ++ Finally, any free program is threatened constantly by software ++patents. We wish to avoid the danger that redistributors of a free ++program will individually obtain patent licenses, in effect making the ++program proprietary. To prevent this, we have made it clear that any ++patent must be licensed for everyone's free use or not licensed at all. ++ ++ The precise terms and conditions for copying, distribution and ++modification follow. ++ ++ GNU GENERAL PUBLIC LICENSE ++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ++ ++ 0. This License applies to any program or other work which contains ++a notice placed by the copyright holder saying it may be distributed ++under the terms of this General Public License. The "Program", below, ++refers to any such program or work, and a "work based on the Program" ++means either the Program or any derivative work under copyright law: ++that is to say, a work containing the Program or a portion of it, ++either verbatim or with modifications and/or translated into another ++language. (Hereinafter, translation is included without limitation in ++the term "modification".) Each licensee is addressed as "you". ++ ++Activities other than copying, distribution and modification are not ++covered by this License; they are outside its scope. The act of ++running the Program is not restricted, and the output from the Program ++is covered only if its contents constitute a work based on the ++Program (independent of having been made by running the Program). ++Whether that is true depends on what the Program does. ++ ++ 1. You may copy and distribute verbatim copies of the Program's ++source code as you receive it, in any medium, provided that you ++conspicuously and appropriately publish on each copy an appropriate ++copyright notice and disclaimer of warranty; keep intact all the ++notices that refer to this License and to the absence of any warranty; ++and give any other recipients of the Program a copy of this License ++along with the Program. ++ ++You may charge a fee for the physical act of transferring a copy, and ++you may at your option offer warranty protection in exchange for a fee. ++ ++ 2. You may modify your copy or copies of the Program or any portion ++of it, thus forming a work based on the Program, and copy and ++distribute such modifications or work under the terms of Section 1 ++above, provided that you also meet all of these conditions: ++ ++ a) You must cause the modified files to carry prominent notices ++ stating that you changed the files and the date of any change. ++ ++ b) You must cause any work that you distribute or publish, that in ++ whole or in part contains or is derived from the Program or any ++ part thereof, to be licensed as a whole at no charge to all third ++ parties under the terms of this License. ++ ++ c) If the modified program normally reads commands interactively ++ when run, you must cause it, when started running for such ++ interactive use in the most ordinary way, to print or display an ++ announcement including an appropriate copyright notice and a ++ notice that there is no warranty (or else, saying that you provide ++ a warranty) and that users may redistribute the program under ++ these conditions, and telling the user how to view a copy of this ++ License. (Exception: if the Program itself is interactive but ++ does not normally print such an announcement, your work based on ++ the Program is not required to print an announcement.) ++ ++These requirements apply to the modified work as a whole. If ++identifiable sections of that work are not derived from the Program, ++and can be reasonably considered independent and separate works in ++themselves, then this License, and its terms, do not apply to those ++sections when you distribute them as separate works. But when you ++distribute the same sections as part of a whole which is a work based ++on the Program, the distribution of the whole must be on the terms of ++this License, whose permissions for other licensees extend to the ++entire whole, and thus to each and every part regardless of who wrote it. ++ ++Thus, it is not the intent of this section to claim rights or contest ++your rights to work written entirely by you; rather, the intent is to ++exercise the right to control the distribution of derivative or ++collective works based on the Program. ++ ++In addition, mere aggregation of another work not based on the Program ++with the Program (or with a work based on the Program) on a volume of ++a storage or distribution medium does not bring the other work under ++the scope of this License. ++ ++ 3. You may copy and distribute the Program (or a work based on it, ++under Section 2) in object code or executable form under the terms of ++Sections 1 and 2 above provided that you also do one of the following: ++ ++ a) Accompany it with the complete corresponding machine-readable ++ source code, which must be distributed under the terms of Sections ++ 1 and 2 above on a medium customarily used for software interchange; or, ++ ++ b) Accompany it with a written offer, valid for at least three ++ years, to give any third party, for a charge no more than your ++ cost of physically performing source distribution, a complete ++ machine-readable copy of the corresponding source code, to be ++ distributed under the terms of Sections 1 and 2 above on a medium ++ customarily used for software interchange; or, ++ ++ c) Accompany it with the information you received as to the offer ++ to distribute corresponding source code. (This alternative is ++ allowed only for noncommercial distribution and only if you ++ received the program in object code or executable form with such ++ an offer, in accord with Subsection b above.) ++ ++The source code for a work means the preferred form of the work for ++making modifications to it. For an executable work, complete source ++code means all the source code for all modules it contains, plus any ++associated interface definition files, plus the scripts used to ++control compilation and installation of the executable. However, as a ++special exception, the source code distributed need not include ++anything that is normally distributed (in either source or binary ++form) with the major components (compiler, kernel, and so on) of the ++operating system on which the executable runs, unless that component ++itself accompanies the executable. ++ ++If distribution of executable or object code is made by offering ++access to copy from a designated place, then offering equivalent ++access to copy the source code from the same place counts as ++distribution of the source code, even though third parties are not ++compelled to copy the source along with the object code. ++ ++ 4. You may not copy, modify, sublicense, or distribute the Program ++except as expressly provided under this License. Any attempt ++otherwise to copy, modify, sublicense or distribute the Program is ++void, and will automatically terminate your rights under this License. ++However, parties who have received copies, or rights, from you under ++this License will not have their licenses terminated so long as such ++parties remain in full compliance. ++ ++ 5. You are not required to accept this License, since you have not ++signed it. However, nothing else grants you permission to modify or ++distribute the Program or its derivative works. These actions are ++prohibited by law if you do not accept this License. Therefore, by ++modifying or distributing the Program (or any work based on the ++Program), you indicate your acceptance of this License to do so, and ++all its terms and conditions for copying, distributing or modifying ++the Program or works based on it. ++ ++ 6. Each time you redistribute the Program (or any work based on the ++Program), the recipient automatically receives a license from the ++original licensor to copy, distribute or modify the Program subject to ++these terms and conditions. You may not impose any further ++restrictions on the recipients' exercise of the rights granted herein. ++You are not responsible for enforcing compliance by third parties to ++this License. ++ ++ 7. If, as a consequence of a court judgment or allegation of patent ++infringement or for any other reason (not limited to patent issues), ++conditions are imposed on you (whether by court order, agreement or ++otherwise) that contradict the conditions of this License, they do not ++excuse you from the conditions of this License. If you cannot ++distribute so as to satisfy simultaneously your obligations under this ++License and any other pertinent obligations, then as a consequence you ++may not distribute the Program at all. For example, if a patent ++license would not permit royalty-free redistribution of the Program by ++all those who receive copies directly or indirectly through you, then ++the only way you could satisfy both it and this License would be to ++refrain entirely from distribution of the Program. ++ ++If any portion of this section is held invalid or unenforceable under ++any particular circumstance, the balance of the section is intended to ++apply and the section as a whole is intended to apply in other ++circumstances. ++ ++It is not the purpose of this section to induce you to infringe any ++patents or other property right claims or to contest validity of any ++such claims; this section has the sole purpose of protecting the ++integrity of the free software distribution system, which is ++implemented by public license practices. Many people have made ++generous contributions to the wide range of software distributed ++through that system in reliance on consistent application of that ++system; it is up to the author/donor to decide if he or she is willing ++to distribute software through any other system and a licensee cannot ++impose that choice. ++ ++This section is intended to make thoroughly clear what is believed to ++be a consequence of the rest of this License. ++ ++ 8. If the distribution and/or use of the Program is restricted in ++certain countries either by patents or by copyrighted interfaces, the ++original copyright holder who places the Program under this License ++may add an explicit geographical distribution limitation excluding ++those countries, so that distribution is permitted only in or among ++countries not thus excluded. In such case, this License incorporates ++the limitation as if written in the body of this License. ++ ++ 9. The Free Software Foundation may publish revised and/or new versions ++of the General Public License from time to time. Such new versions will ++be similar in spirit to the present version, but may differ in detail to ++address new problems or concerns. ++ ++Each version is given a distinguishing version number. If the Program ++specifies a version number of this License which applies to it and "any ++later version", you have the option of following the terms and conditions ++either of that version or of any later version published by the Free ++Software Foundation. If the Program does not specify a version number of ++this License, you may choose any version ever published by the Free Software ++Foundation. ++ ++ 10. If you wish to incorporate parts of the Program into other free ++programs whose distribution conditions are different, write to the author ++to ask for permission. For software which is copyrighted by the Free ++Software Foundation, write to the Free Software Foundation; we sometimes ++make exceptions for this. Our decision will be guided by the two goals ++of preserving the free status of all derivatives of our free software and ++of promoting the sharing and reuse of software generally. ++ ++ NO WARRANTY ++ ++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ++REPAIR OR CORRECTION. ++ ++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGES. ++ ++ END OF TERMS AND CONDITIONS ++ ++ How to Apply These Terms to Your New Programs ++ ++ If you develop a new program, and you want it to be of the greatest ++possible use to the public, the best way to achieve this is to make it ++free software which everyone can redistribute and change under these terms. ++ ++ To do so, attach the following notices to the program. It is safest ++to attach them to the start of each source file to most effectively ++convey the exclusion of warranty; and each file should have at least ++the "copyright" line and a pointer to where the full notice is found. ++ ++ {description} ++ Copyright (C) {year} {fullname} ++ ++ 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 Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License along ++ with this program; if not, write to the Free Software Foundation, Inc., ++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ++ ++Also add information on how to contact you by electronic and paper mail. ++ ++If the program is interactive, make it output a short notice like this ++when it starts in an interactive mode: ++ ++ Gnomovision version 69, Copyright (C) year name of author ++ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ++ This is free software, and you are welcome to redistribute it ++ under certain conditions; type `show c' for details. ++ ++The hypothetical commands `show w' and `show c' should show the appropriate ++parts of the General Public License. Of course, the commands you use may ++be called something other than `show w' and `show c'; they could even be ++mouse-clicks or menu items--whatever suits your program. ++ ++You should also get your employer (if you work as a programmer) or your ++school, if any, to sign a "copyright disclaimer" for the program, if ++necessary. Here is a sample; alter the names: ++ ++ Yoyodyne, Inc., hereby disclaims all copyright interest in the program ++ `Gnomovision' (which makes passes at compilers) written by James Hacker. ++ ++ {signature of Ty Coon}, 1 April 1989 ++ Ty Coon, President of Vice ++ ++This General Public License does not permit incorporating your program into ++proprietary programs. If your program is a subroutine library, you may ++consider it more useful to permit linking proprietary applications with the ++library. If this is what you want to do, use the GNU Lesser General ++Public License instead of this License. ++ +diff --git a/drivers/net/wireless/esp8089/Makefile b/drivers/net/wireless/esp8089/Makefile +new file mode 100644 +index 000000000000..36decfd20ecd +--- /dev/null ++++ b/drivers/net/wireless/esp8089/Makefile +@@ -0,0 +1,7 @@ ++MODULE_NAME = esp8089 ++ ++$(MODULE_NAME)-y := esp_debug.o sdio_sif_esp.o esp_io.o \ ++ esp_file.o esp_main.o esp_sip.o esp_ext.o esp_ctrl.o \ ++ esp_mac80211.o esp_debug.o esp_utils.o ++ ++obj-$(CONFIG_ESP8089) := esp8089.o +diff --git a/drivers/net/wireless/esp8089/Makefile.old b/drivers/net/wireless/esp8089/Makefile.old +new file mode 100644 +index 000000000000..b7b1a47b159c +--- /dev/null ++++ b/drivers/net/wireless/esp8089/Makefile.old +@@ -0,0 +1,99 @@ ++MODNAME = esp8089 ++ ++# By default, we try to compile the modules for the currently running ++# kernel. But it's the first approximation, as we will re-read the ++# version from the kernel sources. ++KVERS_UNAME ?= $(shell uname -r) ++ ++# KBUILD is the path to the Linux kernel build tree. It is usually the ++# same as the kernel source tree, except when the kernel was compiled in ++# a separate directory. ++KBUILD ?= $(shell readlink -f /lib/modules/$(KVERS_UNAME)/build) ++ ++ifeq (,$(KBUILD)) ++$(error Kernel build tree not found - please set KBUILD to configured kernel) ++endif ++ ++KCONFIG := $(KBUILD)/.config ++ifeq (,$(wildcard $(KCONFIG))) ++$(error No .config found in $(KBUILD), please set KBUILD to configured kernel) ++endif ++ ++ifneq (,$(wildcard $(KBUILD)/include/linux/version.h)) ++ifneq (,$(wildcard $(KBUILD)/include/generated/uapi/linux/version.h)) ++$(error Multiple copies of version.h found, please clean your build tree) ++endif ++endif ++ ++# Kernel Makefile doesn't always know the exact kernel version, so we ++# get it from the kernel headers instead and pass it to make. ++VERSION_H := $(KBUILD)/include/generated/utsrelease.h ++ifeq (,$(wildcard $(VERSION_H))) ++VERSION_H := $(KBUILD)/include/linux/utsrelease.h ++endif ++ifeq (,$(wildcard $(VERSION_H))) ++VERSION_H := $(KBUILD)/include/linux/version.h ++endif ++ifeq (,$(wildcard $(VERSION_H))) ++$(error Please run 'make modules_prepare' in $(KBUILD)) ++endif ++ ++KVERS := $(shell sed -ne 's/"//g;s/^\#define UTS_RELEASE //p' $(VERSION_H)) ++ ++ifeq (,$(KVERS)) ++$(error Cannot find UTS_RELEASE in $(VERSION_H), please report) ++endif ++ ++INST_DIR = /lib/modules/$(KVERS)/misc ++ ++SRC_DIR=$(shell pwd) ++ ++include $(KCONFIG) ++ ++EXTRA_CFLAGS += -DCONFIG_ESP8089_DEBUG_FS ++ ++OBJS = esp_debug.o sdio_sif_esp.o esp_io.o \ ++ esp_file.o esp_main.o esp_sip.o esp_ext.o esp_ctrl.o \ ++ esp_mac80211.o esp_debug.o esp_utils.o esp_pm.o ++ ++all: config_check modules ++ ++MODULE := $(MODNAME).ko ++obj-m := $(MODNAME).o ++ ++$(MODNAME)-objs := $(OBJS) ++ ++config_check: ++ @if [ -z "$(CONFIG_WIRELESS_EXT)$(CONFIG_NET_RADIO)" ]; then \ ++ echo; echo; \ ++ echo "*** WARNING: This kernel lacks wireless extensions."; \ ++ echo "Wireless drivers will not work properly."; \ ++ echo; echo; \ ++ fi ++ ++modules: ++ $(MAKE) -C $(KBUILD) M=$(SRC_DIR) ++ ++$(MODULE): ++ $(MAKE) modules ++ ++clean: ++ rm -f *.o *.ko .*.cmd *.mod.c *.symvers modules.order ++ rm -rf .tmp_versions ++ ++install: config_check $(MODULE) ++ @/sbin/modinfo $(MODULE) | grep -q "^vermagic: *$(KVERS) " || \ ++ { echo "$(MODULE)" is not for Linux $(KVERS); exit 1; } ++ mkdir -p -m 755 $(DESTDIR)$(INST_DIR) ++ install -m 0644 $(MODULE) $(DESTDIR)$(INST_DIR) ++ifndef DESTDIR ++ -/sbin/depmod -a $(KVERS) ++endif ++ ++uninstall: ++ rm -f $(DESTDIR)$(INST_DIR)/$(MODULE) ++ifndef DESTDIR ++ -/sbin/depmod -a $(KVERS) ++endif ++ ++.PHONY: all modules clean install config_check +diff --git a/drivers/net/wireless/esp8089/README.md b/drivers/net/wireless/esp8089/README.md +new file mode 100644 +index 000000000000..56b40db272f3 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/README.md +@@ -0,0 +1,31 @@ ++esp8089 ++====== ++ ++ESP8089 Linux driver ++ ++v1.9 imported from the Rockchip Linux kernel github repo ++ ++Modified to build as a standalone module for SDIO devices. ++ ++ ++ ++ ++Building: ++ ++ make ++ ++Using: ++ ++Must load mac80211.ko first if not baked in. ++ ++ sudo modprobe esp8089.ko ++ ++If you get a wlan interface, but scanning shows no networks try using: ++ ++ sudo modprobe esp8089.ko config=crystal_26M_en=1 ++ ++or: ++ ++ sudo modprobe esp8089.ko config=crystal_26M_en=2 ++ ++To load the module. +diff --git a/drivers/net/wireless/esp8089/esp_ctrl.c b/drivers/net/wireless/esp8089/esp_ctrl.c +new file mode 100644 +index 000000000000..a19d2437dd82 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_ctrl.c +@@ -0,0 +1,801 @@ ++/* ++ * Copyright (c) 2009 - 2014 Espressif System. ++ * ++ * SIP ctrl packet parse and pack ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_pub.h" ++#include "esp_sip.h" ++#include "esp_ctrl.h" ++#include "esp_sif.h" ++#include "esp_debug.h" ++#include "esp_wmac.h" ++#include "esp_utils.h" ++#include "esp_wl.h" ++#include "esp_file.h" ++#include "esp_path.h" ++#ifdef TEST_MODE ++#include "testmode.h" ++#endif /* TEST_MODE */ ++#include "esp_version.h" ++ ++extern struct completion *gl_bootup_cplx; ++ ++static void esp_tx_ba_session_op(struct esp_sip *sip, ++ struct esp_node *node, ++ trc_ampdu_state_t state, u8 tid) ++{ ++ struct esp_tx_tid *txtid; ++ ++ txtid = &node->tid[tid]; ++ if (state == TRC_TX_AMPDU_STOPPED) { ++ if (txtid->state == ESP_TID_STATE_OPERATIONAL) { ++ esp_dbg(ESP_DBG_TXAMPDU, ++ "%s tid %d TXAMPDU GOT STOP EVT\n", ++ __func__, tid); ++ ++ spin_lock_bh(&sip->epub->tx_ampdu_lock); ++ txtid->state = ESP_TID_STATE_WAIT_STOP; ++ spin_unlock_bh(&sip->epub->tx_ampdu_lock); ++ ieee80211_stop_tx_ba_session(node->sta, (u16) tid); ++ } else { ++ esp_dbg(ESP_DBG_TXAMPDU, ++ "%s tid %d TXAMPDU GOT STOP EVT IN WRONG STATE %d\n", ++ __func__, tid, txtid->state); ++ } ++ } else if (state == TRC_TX_AMPDU_OPERATIONAL) { ++ if (txtid->state == ESP_TID_STATE_STOP) { ++ esp_dbg(ESP_DBG_TXAMPDU, ++ "%s tid %d TXAMPDU GOT OPERATIONAL\n", ++ __func__, tid); ++ ++ spin_lock_bh(&sip->epub->tx_ampdu_lock); ++ txtid->state = ESP_TID_STATE_TRIGGER; ++ spin_unlock_bh(&sip->epub->tx_ampdu_lock); ++ ieee80211_start_tx_ba_session(node->sta, (u16) tid, ++ 0); ++ ++ } else if (txtid->state == ESP_TID_STATE_OPERATIONAL) { ++ sip_send_ampdu_action(sip->epub, ++ SIP_AMPDU_TX_OPERATIONAL, ++ node->sta->addr, tid, ++ node->ifidx, 0); ++ } else { ++ esp_dbg(ESP_DBG_TXAMPDU, ++ "%s tid %d TXAMPDU GOT OPERATIONAL EVT IN WRONG STATE %d\n", ++ __func__, tid, txtid->state); ++ } ++ } ++} ++ ++int sip_parse_events(struct esp_sip *sip, u8 * buf) ++{ ++ struct sip_hdr *hdr = (struct sip_hdr *) buf; ++ ++ switch (hdr->c_evtid) { ++ case SIP_EVT_TARGET_ON:{ ++ /* use rx work queue to send... */ ++ if (atomic_read(&sip->state) == SIP_PREPARE_BOOT ++ || atomic_read(&sip->state) == SIP_BOOT) { ++ atomic_set(&sip->state, SIP_SEND_INIT); ++ queue_work(sip->epub->esp_wkq, ++ &sip->rx_process_work); ++ } else { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s boot during wrong state %d\n", ++ __func__, ++ atomic_read(&sip->state)); ++ } ++ break; ++ } ++ ++ case SIP_EVT_BOOTUP:{ ++ struct sip_evt_bootup2 *bootup_evt = ++ (struct sip_evt_bootup2 *) (buf + ++ SIP_CTRL_HDR_LEN); ++ if (sip->rawbuf) ++ kfree(sip->rawbuf); ++ ++ sip_post_init(sip, bootup_evt); ++ ++ if (gl_bootup_cplx) ++ complete(gl_bootup_cplx); ++ ++ break; ++ } ++ case SIP_EVT_RESETTING:{ ++ sip->epub->wait_reset = 1; ++ if (gl_bootup_cplx) ++ complete(gl_bootup_cplx); ++ break; ++ } ++ case SIP_EVT_SLEEP:{ ++ //atomic_set(&sip->epub->ps.state, ESP_PM_ON); ++ break; ++ } ++ case SIP_EVT_TXIDLE:{ ++ //struct sip_evt_txidle *txidle = (struct sip_evt_txidle *)(buf + SIP_CTRL_HDR_LEN); ++ //sip_txdone_clear(sip, txidle->last_seq); ++ break; ++ } ++ ++ case SIP_EVT_SCAN_RESULT:{ ++ struct sip_evt_scan_report *report = ++ (struct sip_evt_scan_report *) (buf + ++ SIP_CTRL_HDR_LEN); ++ if (atomic_read(&sip->epub->wl.off)) { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s scan result while wlan off\n", ++ __func__); ++ return 0; ++ } ++ sip_scandone_process(sip, report); ++ ++ break; ++ } ++ ++ case SIP_EVT_ROC:{ ++ struct sip_evt_roc *report = ++ (struct sip_evt_roc *) (buf + ++ SIP_CTRL_HDR_LEN); ++ esp_rocdone_process(sip->epub->hw, report); ++ break; ++ } ++ ++ ++#ifdef ESP_RX_COPYBACK_TEST ++ ++ case SIP_EVT_COPYBACK:{ ++ u32 len = hdr->len - SIP_CTRL_HDR_LEN; ++ ++ esp_dbg(ESP_DBG_TRACE, ++ "%s copyback len %d seq %u\n", __func__, ++ len, hdr->seq); ++ ++ memcpy(copyback_buf + copyback_offset, ++ pkt->buf + SIP_CTRL_HDR_LEN, len); ++ copyback_offset += len; ++ ++ //show_buf(pkt->buf, 256); ++ ++ //how about totlen % 256 == 0?? ++ if (hdr->hdr.len < 256) { ++ kfree(copyback_buf); ++ } ++ } ++ break; ++#endif /* ESP_RX_COPYBACK_TEST */ ++ case SIP_EVT_CREDIT_RPT: ++ break; ++ ++#ifdef TEST_MODE ++ case SIP_EVT_WAKEUP:{ ++ u8 check_str[12]; ++ struct sip_evt_wakeup *wakeup_evt = ++ (struct sip_evt_wakeup *) (buf + ++ SIP_CTRL_HDR_LEN); ++ sprintf((char *) &check_str, "%d", ++ wakeup_evt->check_data); ++ esp_test_cmd_event(TEST_CMD_WAKEUP, ++ (char *) &check_str); ++ break; ++ } ++ ++ case SIP_EVT_DEBUG:{ ++ u8 check_str[640]; ++ sip_parse_event_debug(sip->epub, buf, check_str); ++ esp_dbg(ESP_DBG_TRACE, "%s", check_str); ++ esp_test_cmd_event(TEST_CMD_DEBUG, ++ (char *) &check_str); ++ break; ++ } ++ ++ case SIP_EVT_LOOPBACK:{ ++ u8 check_str[12]; ++ struct sip_evt_loopback *loopback_evt = ++ (struct sip_evt_loopback *) (buf + ++ SIP_CTRL_HDR_LEN); ++ esp_dbg(ESP_DBG_LOG, "%s loopback len %d seq %u\n", ++ __func__, hdr->len, hdr->seq); ++ ++ if (loopback_evt->pack_id != get_loopback_id()) { ++ sprintf((char *) &check_str, ++ "seq id error %d, expect %d", ++ loopback_evt->pack_id, ++ get_loopback_id()); ++ esp_test_cmd_event(TEST_CMD_LOOPBACK, ++ (char *) &check_str); ++ } ++ ++ if ((loopback_evt->pack_id + 1) < ++ get_loopback_num()) { ++ inc_loopback_id(); ++ sip_send_loopback_mblk(sip, ++ loopback_evt->txlen, ++ loopback_evt->rxlen, ++ get_loopback_id()); ++ } else { ++ sprintf((char *) &check_str, "test over!"); ++ esp_test_cmd_event(TEST_CMD_LOOPBACK, ++ (char *) &check_str); ++ } ++ break; ++ } ++#endif /*TEST_MODE */ ++ ++ case SIP_EVT_SNPRINTF_TO_HOST:{ ++ u8 *p = ++ (buf + sizeof(struct sip_hdr) + sizeof(u16)); ++ u16 *len = (u16 *) (buf + sizeof(struct sip_hdr)); ++ char test_res_str[560]; ++ sprintf(test_res_str, ++ "esp_host:%llx\nesp_target: %.*s", ++ DRIVER_VER, *len, p); ++ ++ esp_dbg(ESP_DBG_TRACE, "%s\n", test_res_str); ++ if (*len ++ && sip->epub->sdio_state == ++ ESP_SDIO_STATE_FIRST_INIT) { ++ char filename[256]; ++ if (mod_eagle_path_get() == NULL) ++ sprintf(filename, "%s/%s", FWPATH, ++ "test_results"); ++ else ++ sprintf(filename, "%s/%s", ++ mod_eagle_path_get(), ++ "test_results"); ++ esp_dbg(ESP_DBG_TRACE, ++ "SNPRINTF TO HOST: %s\n", ++ test_res_str); ++ } ++ break; ++ } ++ case SIP_EVT_TRC_AMPDU:{ ++ struct sip_evt_trc_ampdu *ep = ++ (struct sip_evt_trc_ampdu *) (buf + ++ SIP_CTRL_HDR_LEN); ++ struct esp_node *node = NULL; ++ int i = 0; ++ ++ if (atomic_read(&sip->epub->wl.off)) { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s scan result while wlan off\n", ++ __func__); ++ return 0; ++ } ++ ++ node = esp_get_node_by_addr(sip->epub, ep->addr); ++ if (node == NULL) ++ break; ++ for (i = 0; i < 8; i++) { ++ if (ep->tid & (1 << i)) { ++ esp_tx_ba_session_op(sip, node, ++ ep->state, i); ++ } ++ } ++ break; ++ } ++ ++#ifdef TEST_MODE ++ case SIP_EVT_EP:{ ++ char *ep = (char *) (buf + SIP_CTRL_HDR_LEN); ++ static int counter = 0; ++ ++ esp_dbg(ESP_ATE, "%s EVT_EP \n\n", __func__); ++ if (counter++ < 2) { ++ esp_dbg(ESP_ATE, "ATE: %s \n", ep); ++ } ++ ++ esp_test_ate_done_cb(ep); ++ ++ break; ++ } ++#endif /*TEST_MODE */ ++ ++ case SIP_EVT_INIT_EP:{ ++ char *ep = (char *) (buf + SIP_CTRL_HDR_LEN); ++ esp_dbg(ESP_ATE, "Phy Init: %s \n", ep); ++ break; ++ } ++ ++ case SIP_EVT_NOISEFLOOR:{ ++ struct sip_evt_noisefloor *ep = ++ (struct sip_evt_noisefloor *) (buf + ++ SIP_CTRL_HDR_LEN); ++ atomic_set(&sip->noise_floor, ep->noise_floor); ++ break; ++ } ++ default: ++ break; ++ } ++ ++ return 0; ++} ++ ++#include "esp_init_data.h" ++ ++void sip_send_chip_init(struct esp_sip *sip) ++{ ++ size_t size = 0; ++ size = sizeof(esp_init_data); ++ ++ esp_conf_upload_second(esp_init_data, size); ++ ++ atomic_sub(1, &sip->tx_credits); ++ ++ sip_send_cmd(sip, SIP_CMD_INIT, size, (void *) esp_init_data); ++ ++} ++ ++int sip_send_config(struct esp_pub *epub, struct ieee80211_conf *conf) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_config *configcmd; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_config) + ++ sizeof(struct sip_hdr), SIP_CMD_CONFIG); ++ if (!skb) ++ return -EINVAL; ++ esp_dbg(ESP_DBG_TRACE, "%s config center freq %d\n", __func__, ++ conf->chandef.chan->center_freq); ++ configcmd = ++ (struct sip_cmd_config *) (skb->data + sizeof(struct sip_hdr)); ++ configcmd->center_freq = conf->chandef.chan->center_freq; ++ configcmd->duration = 0; ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_bss_info_update(struct esp_pub *epub, struct esp_vif *evif, ++ u8 * bssid, int assoc) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_bss_info_update *bsscmd; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_bss_info_update) + ++ sizeof(struct sip_hdr), ++ SIP_CMD_BSS_INFO_UPDATE); ++ if (!skb) ++ return -EINVAL; ++ ++ bsscmd = ++ (struct sip_cmd_bss_info_update *) (skb->data + ++ sizeof(struct sip_hdr)); ++ if (assoc == 2) { //hack for softAP mode ++ bsscmd->beacon_int = evif->beacon_interval; ++ } else if (assoc == 1) { ++ set_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags); ++ } else { ++ clear_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags); ++ } ++ bsscmd->bssid_no = evif->index; ++ bsscmd->isassoc = assoc; ++ bsscmd->beacon_int = evif->beacon_interval; ++ memcpy(bsscmd->bssid, bssid, ETH_ALEN); ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_wmm_params(struct esp_pub *epub, u8 aci, ++ const struct ieee80211_tx_queue_params *params) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_set_wmm_params *bsscmd; ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_set_wmm_params) + ++ sizeof(struct sip_hdr), ++ SIP_CMD_SET_WMM_PARAM); ++ if (!skb) ++ return -EINVAL; ++ ++ bsscmd = ++ (struct sip_cmd_set_wmm_params *) (skb->data + ++ sizeof(struct sip_hdr)); ++ bsscmd->aci = aci; ++ bsscmd->aifs = params->aifs; ++ bsscmd->txop_us = params->txop * 32; ++ ++ bsscmd->ecw_min = 32 - __builtin_clz(params->cw_min); ++ bsscmd->ecw_max = 32 - __builtin_clz(params->cw_max); ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_ampdu_action(struct esp_pub *epub, u8 action_num, ++ const u8 * addr, u16 tid, u16 ssn, u8 buf_size) ++{ ++ int index = 0; ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_ampdu_action *action; ++ if (action_num == SIP_AMPDU_RX_START) { ++ index = esp_get_empty_rxampdu(epub, addr, tid); ++ } else if (action_num == SIP_AMPDU_RX_STOP) { ++ index = esp_get_exist_rxampdu(epub, addr, tid); ++ } ++ if (index < 0) ++ return -EACCES; ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_ampdu_action) + ++ sizeof(struct sip_hdr), ++ SIP_CMD_AMPDU_ACTION); ++ if (!skb) ++ return -EINVAL; ++ ++ action = ++ (struct sip_cmd_ampdu_action *) (skb->data + ++ sizeof(struct sip_hdr)); ++ action->action = action_num; ++ //for TX, it means interface index ++ action->index = ssn; ++ ++ switch (action_num) { ++ case SIP_AMPDU_RX_START: ++ action->ssn = ssn; ++ // fall through ++ case SIP_AMPDU_RX_STOP: ++ action->index = index; ++ // fall through ++ case SIP_AMPDU_TX_OPERATIONAL: ++ case SIP_AMPDU_TX_STOP: ++ action->win_size = buf_size; ++ action->tid = tid; ++ memcpy(action->addr, addr, ETH_ALEN); ++ break; ++ } ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++#ifdef HW_SCAN ++/*send cmd to target, if aborted is true, inform target stop scan, report scan complete imediately ++ return 1: complete over, 0: success, still have next scan, -1: hardware failure ++ */ ++int sip_send_scan(struct esp_pub *epub) ++{ ++ struct cfg80211_scan_request *scan_req = epub->wl.scan_req; ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_scan *scancmd; ++ u8 *ptr = NULL; ++ int i; ++ u8 append_len, ssid_len; ++ ++ ESSERT(scan_req != NULL); ++ ssid_len = scan_req->n_ssids == 0 ? 0 : ++ (scan_req->n_ssids == ++ 1 ? scan_req->ssids->ssid_len : scan_req->ssids->ssid_len + ++ (scan_req->ssids + 1)->ssid_len); ++ append_len = ssid_len + scan_req->n_channels + scan_req->ie_len; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_scan) + ++ sizeof(struct sip_hdr) + append_len, ++ SIP_CMD_SCAN); ++ ++ if (!skb) ++ return -EINVAL; ++ ++ ptr = skb->data; ++ scancmd = (struct sip_cmd_scan *) (ptr + sizeof(struct sip_hdr)); ++ ptr += sizeof(struct sip_hdr); ++ ++ scancmd->aborted = false; ++ ++ if (scancmd->aborted == false) { ++ ptr += sizeof(struct sip_cmd_scan); ++ if (scan_req->n_ssids <= 0 ++ || (scan_req->n_ssids == 1 && ssid_len == 0)) { ++ scancmd->ssid_len = 0; ++ } else { ++ scancmd->ssid_len = ssid_len; ++ if (scan_req->ssids->ssid_len == ssid_len) ++ memcpy(ptr, scan_req->ssids->ssid, ++ scancmd->ssid_len); ++ else ++ memcpy(ptr, (scan_req->ssids + 1)->ssid, ++ scancmd->ssid_len); ++ } ++ ++ ptr += scancmd->ssid_len; ++ scancmd->n_channels = scan_req->n_channels; ++ for (i = 0; i < scan_req->n_channels; i++) ++ ptr[i] = scan_req->channels[i]->hw_value; ++ ++ ptr += scancmd->n_channels; ++ if (scan_req->ie_len && scan_req->ie != NULL) { ++ scancmd->ie_len = scan_req->ie_len; ++ memcpy(ptr, scan_req->ie, scan_req->ie_len); ++ } else { ++ scancmd->ie_len = 0; ++ } ++ //add a flag that support two ssids, ++ if (scan_req->n_ssids > 1) ++ scancmd->ssid_len |= 0x80; ++ ++ } ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++#endif ++ ++int sip_send_suspend_config(struct esp_pub *epub, u8 suspend) ++{ ++ struct sip_cmd_suspend *cmd = NULL; ++ struct sk_buff *skb = NULL; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_suspend) + ++ sizeof(struct sip_hdr), SIP_CMD_SUSPEND); ++ ++ if (!skb) ++ return -EINVAL; ++ ++ cmd = ++ (struct sip_cmd_suspend *) (skb->data + ++ sizeof(struct sip_hdr)); ++ cmd->suspend = suspend; ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_ps_config(struct esp_pub *epub, struct esp_ps *ps) ++{ ++ struct sip_cmd_ps *pscmd = NULL; ++ struct sk_buff *skb = NULL; ++ struct sip_hdr *shdr = NULL; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_ps) + ++ sizeof(struct sip_hdr), SIP_CMD_PS); ++ ++ if (!skb) ++ return -EINVAL; ++ ++ ++ shdr = (struct sip_hdr *) skb->data; ++ pscmd = (struct sip_cmd_ps *) (skb->data + sizeof(struct sip_hdr)); ++ ++ pscmd->dtim_period = ps->dtim_period; ++ pscmd->max_sleep_period = ps->max_sleep_period; ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++void sip_scandone_process(struct esp_sip *sip, ++ struct sip_evt_scan_report *scan_report) ++{ ++ struct esp_pub *epub = sip->epub; ++ ++ esp_dbg(ESP_DBG_TRACE, "eagle hw scan report\n"); ++ ++ if (epub->wl.scan_req) { ++ hw_scan_done(epub, scan_report->aborted); ++ epub->wl.scan_req = NULL; ++ } ++} ++ ++int sip_send_setkey(struct esp_pub *epub, u8 bssid_no, u8 * peer_addr, ++ struct ieee80211_key_conf *key, u8 isvalid) ++{ ++ struct sip_cmd_setkey *setkeycmd; ++ struct sk_buff *skb = NULL; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_setkey) + ++ sizeof(struct sip_hdr), SIP_CMD_SETKEY); ++ ++ if (!skb) ++ return -EINVAL; ++ ++ setkeycmd = ++ (struct sip_cmd_setkey *) (skb->data + sizeof(struct sip_hdr)); ++ ++ if (peer_addr) { ++ memcpy(setkeycmd->addr, peer_addr, ETH_ALEN); ++ } else { ++ memset(setkeycmd->addr, 0, ETH_ALEN); ++ } ++ ++ setkeycmd->bssid_no = bssid_no; ++ setkeycmd->hw_key_idx = key->hw_key_idx; ++ ++ if (isvalid) { ++ setkeycmd->alg = esp_cipher2alg(key->cipher); ++ setkeycmd->keyidx = key->keyidx; ++ setkeycmd->keylen = key->keylen; ++ if (key->cipher == WLAN_CIPHER_SUITE_TKIP) { ++ memcpy(setkeycmd->key, key->key, 16); ++ memcpy(setkeycmd->key + 16, key->key + 24, 8); ++ memcpy(setkeycmd->key + 24, key->key + 16, 8); ++ } else { ++ memcpy(setkeycmd->key, key->key, key->keylen); ++ } ++ ++ setkeycmd->flags = 1; ++ } else { ++ setkeycmd->flags = 0; ++ } ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++#ifdef FPGA_LOOPBACK ++#define LOOPBACK_PKT_LEN 200 ++int sip_send_loopback_cmd_mblk(struct esp_sip *sip) ++{ ++ int cnt, ret; ++ ++ for (cnt = 0; cnt < 4; cnt++) { ++ if (0 != ++ (ret = ++ sip_send_loopback_mblk(sip, LOOPBACK_PKT_LEN, ++ LOOPBACK_PKT_LEN, 0))) ++ return ret; ++ } ++ return 0; ++} ++#endif /* FPGA_LOOPBACK */ ++ ++int sip_send_loopback_mblk(struct esp_sip *sip, int txpacket_len, ++ int rxpacket_len, int packet_id) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_loopback *cmd; ++ u8 *ptr = NULL; ++ int i, ret; ++ ++ //send 100 loopback pkt ++ if (txpacket_len) ++ skb = ++ sip_alloc_ctrl_skbuf(sip, ++ sizeof(struct sip_cmd_loopback) + ++ sizeof(struct sip_hdr) + ++ txpacket_len, SIP_CMD_LOOPBACK); ++ else ++ skb = ++ sip_alloc_ctrl_skbuf(sip, ++ sizeof(struct sip_cmd_loopback) + ++ sizeof(struct sip_hdr), ++ SIP_CMD_LOOPBACK); ++ ++ if (!skb) ++ return -ENOMEM; ++ ++ ptr = skb->data; ++ cmd = (struct sip_cmd_loopback *) (ptr + sizeof(struct sip_hdr)); ++ ptr += sizeof(struct sip_hdr); ++ cmd->txlen = txpacket_len; ++ cmd->rxlen = rxpacket_len; ++ cmd->pack_id = packet_id; ++ ++ if (txpacket_len) { ++ ptr += sizeof(struct sip_cmd_loopback); ++ /* fill up pkt payload */ ++ for (i = 0; i < txpacket_len; i++) { ++ ptr[i] = i; ++ } ++ } ++ ++ ret = sip_cmd_enqueue(sip, skb, ENQUEUE_PRIOR_TAIL); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++} ++ ++//remain_on_channel ++int sip_send_roc(struct esp_pub *epub, u16 center_freq, u16 duration) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_config *configcmd; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_config) + ++ sizeof(struct sip_hdr), SIP_CMD_CONFIG); ++ if (!skb) ++ return -EINVAL; ++ ++ configcmd = ++ (struct sip_cmd_config *) (skb->data + sizeof(struct sip_hdr)); ++ configcmd->center_freq = center_freq; ++ configcmd->duration = duration; ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, ++ struct ieee80211_sta *sta, struct ieee80211_vif *vif, ++ u8 index) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_setsta *setstacmd; ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_setsta) + ++ sizeof(struct sip_hdr), SIP_CMD_SETSTA); ++ if (!skb) ++ return -EINVAL; ++ ++ setstacmd = ++ (struct sip_cmd_setsta *) (skb->data + sizeof(struct sip_hdr)); ++ setstacmd->ifidx = ifidx; ++ setstacmd->index = index; ++ setstacmd->set = set; ++ if (sta->aid == 0) ++ setstacmd->aid = vif->cfg.aid; ++ else ++ setstacmd->aid = sta->aid; ++ memcpy(setstacmd->mac, sta->addr, ETH_ALEN); ++ if (set) { ++ if (sta->deflink.ht_cap.ht_supported) { ++ if (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ++ setstacmd->phymode = ++ ESP_IEEE80211_T_HT20_S; ++ else ++ setstacmd->phymode = ++ ESP_IEEE80211_T_HT20_L; ++ setstacmd->ampdu_factor = sta->deflink.ht_cap.ampdu_factor; ++ setstacmd->ampdu_density = ++ sta->deflink.ht_cap.ampdu_density; ++ } else { ++ if (sta->deflink.supp_rates[NL80211_BAND_2GHZ] & (~(u32) ++ CONF_HW_BIT_RATE_11B_MASK)) ++ { ++ setstacmd->phymode = ESP_IEEE80211_T_OFDM; ++ } else { ++ setstacmd->phymode = ESP_IEEE80211_T_CCK; ++ } ++ } ++ } ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++ ++int sip_send_recalc_credit(struct esp_pub *epub) ++{ ++ struct sk_buff *skb = NULL; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, 0 + sizeof(struct sip_hdr), ++ SIP_CMD_RECALC_CREDIT); ++ if (!skb) ++ return -ENOMEM; ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_HEAD); ++} ++ ++int sip_cmd(struct esp_pub *epub, enum sip_cmd_id cmd_id, u8 * cmd_buf, ++ u8 cmd_len) ++{ ++ struct sk_buff *skb = NULL; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ cmd_len + sizeof(struct sip_hdr), cmd_id); ++ if (!skb) ++ return -ENOMEM; ++ ++ memcpy(skb->data + sizeof(struct sip_hdr), cmd_buf, cmd_len); ++ ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} +diff --git a/drivers/net/wireless/esp8089/esp_ctrl.h b/drivers/net/wireless/esp8089/esp_ctrl.h +new file mode 100644 +index 000000000000..29c18caa9ede +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_ctrl.h +@@ -0,0 +1,58 @@ ++/* ++ * Copyright (c) 2009- 2014 Espressif System. ++ * ++ * SIP ctrl packet parse and pack ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#ifndef _ESP_CTRL_H_ ++#define _ESP_CTRL_H_ ++ ++int sip_send_loopback_mblk(struct esp_sip *sip, int txpacket_len, ++ int rxpacket_len, int packet_id); ++ ++int sip_send_config(struct esp_pub *epub, struct ieee80211_conf *conf); ++ ++int sip_send_setkey(struct esp_pub *epub, u8 bssid_no, u8 * peer_addr, ++ struct ieee80211_key_conf *key, u8 isvalid); ++ ++int sip_send_scan(struct esp_pub *epub); ++ ++void sip_scandone_process(struct esp_sip *sip, ++ struct sip_evt_scan_report *scan_report); ++ ++int sip_send_bss_info_update(struct esp_pub *epub, struct esp_vif *evif, ++ u8 * bssid, int assoc); ++ ++int sip_send_wmm_params(struct esp_pub *epub, u8 aci, ++ const struct ieee80211_tx_queue_params *params); ++ ++int sip_send_ampdu_action(struct esp_pub *epub, u8 action_num, ++ const u8 * addr, u16 tid, u16 ssn, u8 buf_size); ++ ++int sip_send_roc(struct esp_pub *epub, u16 center_freq, u16 duration); ++ ++int sip_send_set_sta(struct esp_pub *epub, u8 ifidx, u8 set, ++ struct ieee80211_sta *sta, struct ieee80211_vif *vif, ++ u8 index); ++ ++int sip_send_suspend_config(struct esp_pub *epub, u8 suspend); ++ ++int sip_send_ps_config(struct esp_pub *epub, struct esp_ps *ps); ++ ++int sip_parse_events(struct esp_sip *sip, u8 * buf); ++ ++int sip_send_recalc_credit(struct esp_pub *epub); ++ ++int sip_cmd(struct esp_pub *epub, enum sip_cmd_id cmd_id, u8 * cmd_buf, ++ u8 cmd_len); ++ ++#endif /* _ESP_CTRL_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_debug.c b/drivers/net/wireless/esp8089/esp_debug.c +new file mode 100644 +index 000000000000..5ce8fd2ebd6b +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_debug.c +@@ -0,0 +1,297 @@ ++/* ++ * Copyright (c) 2011-2014 Espressif System. ++ * ++ * esp debug interface ++ * - debugfs ++ * - debug level control ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++ ++#include ++#include "sip2_common.h" ++ ++#include "esp_debug.h" ++ ++#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_ESP8089_DEBUG_FS) ++ ++static struct dentry *esp_debugfs_root = NULL; ++ ++static int esp_debugfs_open(struct inode *inode, struct file *filp) ++{ ++ filp->private_data = inode->i_private; ++ return 0; ++} ++ ++static ssize_t esp_debugfs_read(struct file *filp, char __user * buffer, ++ size_t count, loff_t * ppos) ++{ ++ if (*ppos >= 32) ++ return 0; ++ if (*ppos + count > 32) ++ count = 32 - *ppos; ++ ++ if (copy_to_user(buffer, filp->private_data + *ppos, count)) ++ return -EFAULT; ++ ++ *ppos += count; ++ ++ return count; ++} ++ ++static ssize_t esp_debugfs_write(struct file *filp, ++ const char __user * buffer, size_t count, ++ loff_t * ppos) ++{ ++ if (*ppos >= 32) ++ return 0; ++ if (*ppos + count > 32) ++ count = 32 - *ppos; ++ ++ if (copy_from_user(filp->private_data + *ppos, buffer, count)) ++ return -EFAULT; ++ ++ *ppos += count; ++ ++ return count; ++} ++ ++struct file_operations esp_debugfs_fops = { ++ .owner = THIS_MODULE, ++ .open = esp_debugfs_open, ++ .read = esp_debugfs_read, ++ .write = esp_debugfs_write, ++}; ++ ++ ++void esp_dump_var(const char *name, struct dentry *parent, ++ void *value, esp_type type) ++{ ++ umode_t mode = 0644; ++ ++ if (!esp_debugfs_root) ++ return; ++ ++ if (!parent) ++ parent = esp_debugfs_root; ++ ++ switch (type) { ++ case ESP_U8: ++ debugfs_create_u8(name, mode, parent, (u8 *) value); ++ break; ++ case ESP_U16: ++ debugfs_create_u16(name, mode, parent, (u16 *) value); ++ break; ++ case ESP_U32: ++ debugfs_create_u32(name, mode, parent, (u32 *) value); ++ break; ++ case ESP_U64: ++ debugfs_create_u64(name, mode, parent, (u64 *) value); ++ break; ++ case ESP_BOOL: ++ debugfs_create_bool(name, mode, parent, ++ (bool *) value); ++ break; ++ default: //32 ++ debugfs_create_u32(name, mode, parent, (u32 *) value); ++ } ++ ++ return; ++ ++} ++ ++void esp_dump_array(const char *name, struct dentry *parent, ++ struct debugfs_blob_wrapper *blob) ++{ ++ umode_t mode = 0644; ++ ++ if (!esp_debugfs_root) ++ return; ++ ++ if (!parent) ++ parent = esp_debugfs_root; ++ ++ debugfs_create_blob(name, mode, parent, blob); ++ ++} ++ ++void esp_dump(const char *name, struct dentry *parent, ++ void *data, int size) ++{ ++ umode_t mode = 0644; ++ ++ if (!esp_debugfs_root) ++ return; ++ ++ if (!parent) ++ parent = esp_debugfs_root; ++ ++ debugfs_create_file(name, mode, parent, data, ++ &esp_debugfs_fops); ++ ++} ++ ++struct dentry *esp_debugfs_add_sub_dir(const char *name) ++{ ++ struct dentry *sub_dir = NULL; ++ ++ sub_dir = debugfs_create_dir(name, esp_debugfs_root); ++ ++ if (!sub_dir) ++ goto Fail; ++ ++ return sub_dir; ++ ++ Fail: ++ debugfs_remove_recursive(esp_debugfs_root); ++ esp_debugfs_root = NULL; ++ esp_dbg(ESP_DBG_ERROR, ++ "%s failed, debugfs root removed; dir name: %s\n", ++ __FUNCTION__, name); ++ return NULL; ++ ++} ++ ++int esp_debugfs_init(void) ++{ ++ esp_dbg(ESP_DBG, "esp debugfs init\n"); ++ esp_debugfs_root = debugfs_create_dir("esp_debug", NULL); ++ ++ if (!esp_debugfs_root || IS_ERR_OR_NULL(esp_debugfs_root)) { ++ return -ENOENT; ++ } ++ ++ return 0; ++} ++ ++void esp_debugfs_exit(void) ++{ ++ esp_dbg(ESP_DBG, "esp debugfs exit"); ++ ++ debugfs_remove_recursive(esp_debugfs_root); ++ ++ return; ++} ++ ++#else ++ ++inline struct dentry *esp_dump_var(const char *name, struct dentry *parent, ++ void *value, esp_type type) ++{ ++ return NULL; ++} ++ ++inline struct dentry *esp_dump_array(const char *name, ++ struct dentry *parent, ++ struct debugfs_blob_wrapper *blob) ++{ ++ return NULL; ++} ++ ++inline struct dentry *esp_dump(const char *name, struct dentry *parent, ++ void *data, int size) ++{ ++ return NULL; ++} ++ ++struct dentry *esp_debugfs_add_sub_dir(const char *name) ++{ ++ return NULL; ++} ++ ++inline int esp_debugfs_init(void) ++{ ++ return -EPERM; ++} ++ ++inline void esp_debugfs_exit(void) ++{ ++ ++} ++ ++#endif ++ ++ ++void show_buf(u8 * buf, u32 len) ++{ ++// print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 1, buf, len, true); ++#if 1 ++ int i = 0, j; ++ ++ printk(KERN_INFO "\n++++++++++++++++show rbuf+++++++++++++++\n"); ++ for (i = 0; i < (len / 16); i++) { ++ j = i * 16; ++ printk(KERN_INFO ++ "0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x \n", ++ buf[j], buf[j + 1], buf[j + 2], buf[j + 3], ++ buf[j + 4], buf[j + 5], buf[j + 6], buf[j + 7], ++ buf[j + 8], buf[j + 9], buf[j + 10], buf[j + 11], ++ buf[j + 12], buf[j + 13], buf[j + 14], buf[j + 15]); ++ } ++ printk(KERN_INFO "\n++++++++++++++++++++++++++++++++++++++++\n"); ++#endif //0000 ++} ++ ++#ifdef HOST_RC ++static u8 get_cnt(u32 cnt_store, int idx) ++{ ++ int shift = idx << 2; ++ ++ return (u8) ((cnt_store >> shift) & 0xf); ++} ++ ++void esp_show_rcstatus(struct sip_rc_status *rcstatus) ++{ ++ int i; ++ char msg[82]; ++ char rcstr[16]; ++ u32 cnt_store = rcstatus->rc_cnt_store; ++ ++ memset(msg, 0, sizeof(msg)); ++ memset(rcstr, 0, sizeof(rcstr)); ++ ++ printk(KERN_INFO "rcstatus map 0x%08x cntStore 0x%08x\n", ++ rcstatus->rc_map, rcstatus->rc_cnt_store); ++ ++ for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { ++ if (rcstatus->rc_map & BIT(i)) { ++ sprintf(rcstr, "rcIdx %d, cnt %d ", i, ++ get_cnt(cnt_store, i)); ++ strcat(msg, rcstr); ++ } ++ } ++ printk(KERN_INFO "%s \n", msg); ++} ++ ++void esp_show_tx_rates(struct ieee80211_tx_rate *rates) ++{ ++ int i; ++ char msg[128]; ++ char rcstr[32]; ++ ++ memset(msg, 0, sizeof(msg)); ++ memset(rcstr, 0, sizeof(rcstr)); ++ ++ for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { ++ if (rates->idx != -1) { ++ sprintf(rcstr, "Idx %d, cnt %d, flag %02x ", ++ rates->idx, rates->count, rates->flags); ++ strcat(msg, rcstr); ++ } ++ rates++; ++ } ++ strcat(msg, "\n"); ++ printk(KERN_INFO "%s \n", msg); ++} ++#endif /* HOST_RC */ +diff --git a/drivers/net/wireless/esp8089/esp_debug.h b/drivers/net/wireless/esp8089/esp_debug.h +new file mode 100644 +index 000000000000..bab695d34bfb +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_debug.h +@@ -0,0 +1,101 @@ ++/* ++ * Copyright (c) 2011-2014 Espressif System. ++ * ++ * esp debug ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _DEBUG_H_ ++ ++#ifdef ASSERT_PANIC ++#define ESSERT(v) BUG_ON(!(v)) ++#else ++#define ESSERT(v) if(!(v)) printk("ESSERT:%s %d\n", __FILE__, __LINE__) ++#endif ++ ++ ++#include ++#include ++#include ++ ++typedef enum esp_type { ++ ESP_BOOL, ++ ESP_U8, ++ ESP_U16, ++ ESP_U32, ++ ESP_U64 ++} esp_type; ++ ++void esp_dump_var(const char *name, struct dentry *parent, ++ void *value, esp_type type); ++ ++void esp_dump_array(const char *name, struct dentry *parent, ++ struct debugfs_blob_wrapper *blob); ++ ++void esp_dump(const char *name, struct dentry *parent, ++ void *data, int size); ++ ++struct dentry *esp_debugfs_add_sub_dir(const char *name); ++ ++int esp_debugfs_init(void); ++ ++void esp_debugfs_exit(void); ++ ++enum { ++ ESP_DBG_ERROR = BIT(0), ++ ESP_DBG_TRACE = BIT(1), ++ ESP_DBG_LOG = BIT(2), ++ ESP_DBG = BIT(3), ++ ESP_SHOW = BIT(4), ++ ESP_DBG_TXAMPDU = BIT(5), ++ ESP_DBG_OP = BIT(6), ++ ESP_DBG_PS = BIT(7), ++ ESP_ATE = BIT(8), ++ ESP_DBG_ALL = 0xffffffff ++}; ++ ++extern unsigned int esp_msg_level; ++ ++#ifdef ESP_ANDROID_LOGGER ++extern bool log_off; ++#endif /* ESP_ANDROID_LOGGER */ ++ ++#ifdef ESP_ANDROID_LOGGER ++#include "esp_file.h" ++#define esp_dbg(mask, fmt, args...) do { \ ++ if (esp_msg_level & mask) \ ++ { \ ++ if (log_off) \ ++ printk(fmt, ##args); \ ++ else \ ++ logger_write(4, "esp_wifi", fmt, ##args); \ ++ } \ ++ } while (0) ++#else ++#define esp_dbg(mask, fmt, args...) do { \ ++ if (esp_msg_level & mask) \ ++ printk("esp8089: " fmt, ##args); \ ++ } while (0) ++#endif /* ESP_ANDROID_LOGGER */ ++ ++void show_buf(u8 * buf, u32 len); ++ ++#ifdef HOST_RC ++struct sip_rc_status; ++struct ieee80211_tx_rate; ++ ++void esp_show_rcstatus(struct sip_rc_status *rcstatus); ++ ++void esp_show_tx_rates(struct ieee80211_tx_rate *rates); ++#endif /* HOST_RC */ ++ ++#endif /* _DEBUG_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_ext.c b/drivers/net/wireless/esp8089/esp_ext.c +new file mode 100644 +index 000000000000..541f27a6853f +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_ext.c +@@ -0,0 +1,542 @@ ++/* ++ * Copyright (c) 2010 -2013 Espressif System. ++ * ++ * extended gpio ++ * - interface for other driver or kernel ++ * - gpio control ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifdef USE_EXT_GPIO ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_ext.h" ++#include "esp_debug.h" ++#include "esp_sip.h" ++#include "esp_sif.h" ++ ++#ifdef EXT_GPIO_OPS ++extern void register_ext_gpio_ops(struct esp_ext_gpio_ops *ops); ++extern void unregister_ext_gpio_ops(void); ++ ++static struct esp_ext_gpio_ops ext_gpio_ops = { ++ .gpio_request = ext_gpio_request, /* gpio_request gpio_no from 0x0 to 0xf */ ++ .gpio_release = ext_gpio_release, /* gpio_release */ ++ .gpio_set_mode = ext_gpio_set_mode, /* gpio_set_mode, data is irq_func of irq_mode , default level of output_mode */ ++ .gpio_get_mode = ext_gpio_get_mode, /* gpio_get_mode, current mode */ ++ .gpio_set_state = ext_gpio_set_output_state, /* only output state, high level or low level */ ++ .gpio_get_state = ext_gpio_get_state, /* current state */ ++ .irq_ack = ext_irq_ack, /* ack interrupt */ ++}; ++ ++ ++#endif ++ ++static struct esp_pub *ext_epub = NULL; ++ ++static u16 intr_mask_reg = 0x0000; ++struct workqueue_struct *ext_irq_wkq = NULL; ++struct work_struct ext_irq_work; ++static struct mutex ext_mutex_lock; ++ ++static struct ext_gpio_info gpio_list[EXT_GPIO_MAX_NUM] = { ++ {0, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {1, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {2, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {3, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {4, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {5, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {6, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {7, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {8, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {9, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {10, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {11, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {12, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {13, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {14, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++ {15, EXT_GPIO_MODE_DISABLE, EXT_GPIO_STATE_IDLE, NULL}, ++}; ++ ++static struct pending_intr_list_info esp_pending_intr_list = { ++ .start_pos = 0, ++ .end_pos = 0, ++ .curr_num = 0, ++}; ++ ++u16 ext_gpio_get_int_mask_reg(void) ++{ ++ return intr_mask_reg; ++} ++ ++int ext_gpio_request(int gpio_no) ++{ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_ERROR, "%s esp state is not ok\n", ++ __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ return -ERANGE; ++ } ++ ++ if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_DISABLE) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, ++ "%s gpio is already in used by other\n", __func__); ++ return -EPERM; ++ } else { ++ gpio_list[gpio_no].gpio_mode = EXT_GPIO_MODE_MAX; ++ mutex_unlock(&ext_mutex_lock); ++ return 0; ++ } ++} ++ ++EXPORT_SYMBOL(ext_gpio_request); ++ ++int ext_gpio_release(int gpio_no) ++{ ++ int ret; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_ERROR, "%s esp state is not ok\n", ++ __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ return -ERANGE; ++ } ++ sif_lock_bus(ext_epub); ++ ret = ++ sif_config_gpio_mode(ext_epub, (u8) gpio_no, ++ EXT_GPIO_MODE_DISABLE); ++ sif_unlock_bus(ext_epub); ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, "%s gpio release error\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return ret; ++ } ++ ++ gpio_list[gpio_no].gpio_mode = EXT_GPIO_MODE_DISABLE; ++ gpio_list[gpio_no].gpio_state = EXT_GPIO_STATE_IDLE; ++ gpio_list[gpio_no].irq_handler = NULL; ++ intr_mask_reg &= ~(1 << gpio_no); ++ ++ mutex_unlock(&ext_mutex_lock); ++ ++ return 0; ++} ++ ++EXPORT_SYMBOL(ext_gpio_release); ++ ++int ext_gpio_set_mode(int gpio_no, int mode, void *data) ++{ ++ u8 gpio_mode; ++ int ret; ++ struct ext_gpio_info backup_info; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_LOG, "%s esp state is not ok\n", __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ return -ERANGE; ++ } ++ ++ if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_DISABLE) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, ++ "%s gpio is not in occupy, please request gpio\n", ++ __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ if (mode <= EXT_GPIO_MODE_OOB || mode >= EXT_GPIO_MODE_MAX) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s gpio mode unknown\n", __func__); ++ return -EOPNOTSUPP; ++ } ++ ++ memcpy(&backup_info, &gpio_list[gpio_no], ++ sizeof(struct ext_gpio_info)); ++ ++ gpio_list[gpio_no].gpio_mode = mode; ++ gpio_mode = (u8) mode; ++ ++ switch (mode) { ++ case EXT_GPIO_MODE_INTR_POSEDGE: ++ case EXT_GPIO_MODE_INTR_NEGEDGE: ++ case EXT_GPIO_MODE_INTR_LOLEVEL: ++ case EXT_GPIO_MODE_INTR_HILEVEL: ++ if (!data) { ++ memcpy(&gpio_list[gpio_no], &backup_info, ++ sizeof(struct ext_gpio_info)); ++ esp_dbg(ESP_DBG_ERROR, "%s irq_handler is NULL\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -EINVAL; ++ } ++ gpio_list[gpio_no].irq_handler = (ext_irq_handler_t) data; ++ intr_mask_reg |= (1 << gpio_no); ++ break; ++ case EXT_GPIO_MODE_OUTPUT: ++ if (!data) { ++ memcpy(&gpio_list[gpio_no], &backup_info, ++ sizeof(struct ext_gpio_info)); ++ esp_dbg(ESP_DBG_ERROR, ++ "%s output default value is NULL\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -EINVAL; ++ } ++ *(int *) data = (*(int *) data == 0 ? 0 : 1); ++ gpio_mode = (u8) (((*(int *) data) << 4) | gpio_mode); ++ default: ++ gpio_list[gpio_no].irq_handler = NULL; ++ intr_mask_reg &= ~(1 << gpio_no); ++ break; ++ } ++ ++ sif_lock_bus(ext_epub); ++ ret = sif_config_gpio_mode(ext_epub, (u8) gpio_no, gpio_mode); ++ sif_unlock_bus(ext_epub); ++ if (ret) { ++ memcpy(&gpio_list[gpio_no], &backup_info, ++ sizeof(struct ext_gpio_info)); ++ esp_dbg(ESP_DBG_ERROR, "%s gpio set error\n", __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return ret; ++ } ++ ++ mutex_unlock(&ext_mutex_lock); ++ return 0; ++} ++ ++EXPORT_SYMBOL(ext_gpio_set_mode); ++ ++int ext_gpio_get_mode(int gpio_no) ++{ ++ int gpio_mode; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_LOG, "%s esp state is not ok\n", __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -ERANGE; ++ } ++ ++ gpio_mode = gpio_list[gpio_no].gpio_mode; ++ ++ mutex_unlock(&ext_mutex_lock); ++ ++ return gpio_mode; ++} ++ ++EXPORT_SYMBOL(ext_gpio_get_mode); ++ ++ ++int ext_gpio_set_output_state(int gpio_no, int state) ++{ ++ int ret; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_LOG, "%s esp state is not ok\n", __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ return -ERANGE; ++ } ++ ++ if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_OUTPUT) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, ++ "%s gpio is not in output state, please request gpio or set output state\n", ++ __func__); ++ return -EOPNOTSUPP; ++ } ++ ++ if (state != EXT_GPIO_STATE_LOW && state != EXT_GPIO_STATE_HIGH) { ++ mutex_unlock(&ext_mutex_lock); ++ esp_dbg(ESP_DBG_ERROR, "%s gpio state unknown\n", ++ __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ sif_lock_bus(ext_epub); ++ ret = ++ sif_set_gpio_output(ext_epub, 1 << gpio_no, state << gpio_no); ++ sif_unlock_bus(ext_epub); ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, "%s gpio state set error\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return ret; ++ } ++ gpio_list[gpio_no].gpio_state = state; ++ ++ mutex_unlock(&ext_mutex_lock); ++ ++ return 0; ++} ++ ++EXPORT_SYMBOL(ext_gpio_set_output_state); ++ ++int ext_gpio_get_state(int gpio_no) ++{ ++ int ret; ++ u16 state; ++ u16 mask; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_LOG, "%s esp state is not ok\n", __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -ERANGE; ++ } ++ ++ if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_OUTPUT) { ++ state = gpio_list[gpio_no].gpio_state; ++ } else if (gpio_list[gpio_no].gpio_mode == EXT_GPIO_MODE_INPUT) { ++ sif_lock_bus(ext_epub); ++ ret = sif_get_gpio_input(ext_epub, &mask, &state); ++ sif_unlock_bus(ext_epub); ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s get gpio_input state error\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return ret; ++ } ++ } else { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s gpio_state is not input or output\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -EOPNOTSUPP; ++ } ++ mutex_unlock(&ext_mutex_lock); ++ ++ return (state & (1 << gpio_no)) ? 1 : 0; ++} ++ ++EXPORT_SYMBOL(ext_gpio_get_state); ++ ++int ext_irq_ack(int gpio_no) ++{ ++ int ret; ++ ++ if (ext_epub == NULL || ext_epub->sip == NULL || ++ atomic_read(&ext_epub->sip->state) != SIP_RUN) { ++ esp_dbg(ESP_DBG_LOG, "%s esp state is not ok\n", __func__); ++ return -ENOTRECOVERABLE; ++ } ++ ++ mutex_lock(&ext_mutex_lock); ++ if (gpio_no >= EXT_GPIO_MAX_NUM || gpio_no < 0) { ++ esp_dbg(ESP_DBG_ERROR, "%s unkown gpio num\n", __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -ERANGE; ++ } ++ ++ if (gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_POSEDGE ++ && gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_NEGEDGE ++ && gpio_list[gpio_no].gpio_mode != EXT_GPIO_MODE_INTR_LOLEVEL ++ && gpio_list[gpio_no].gpio_mode != ++ EXT_GPIO_MODE_INTR_HILEVEL) { ++ esp_dbg(ESP_DBG_ERROR, "%s gpio mode is not intr mode\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return -ENOTRECOVERABLE; ++ } ++ ++ sif_lock_bus(ext_epub); ++ ret = sif_set_gpio_output(ext_epub, 0x00, 1 << gpio_no); ++ sif_unlock_bus(ext_epub); ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, "%s gpio intr ack error\n", ++ __func__); ++ mutex_unlock(&ext_mutex_lock); ++ return ret; ++ } ++ ++ mutex_unlock(&ext_mutex_lock); ++ return 0; ++} ++ ++EXPORT_SYMBOL(ext_irq_ack); ++ ++void show_status(void) ++{ ++ int i = 0; ++ for (i = 0; i < MAX_PENDING_INTR_LIST; i++) ++ esp_dbg(ESP_DBG_ERROR, "status[%d] = [0x%04x]\n", i, ++ esp_pending_intr_list.pending_intr_list[i]); ++ ++ esp_dbg(ESP_DBG_ERROR, "start_pos[%d]\n", ++ esp_pending_intr_list.start_pos); ++ esp_dbg(ESP_DBG_ERROR, "end_pos[%d]\n", ++ esp_pending_intr_list.end_pos); ++ esp_dbg(ESP_DBG_ERROR, "curr_num[%d]\n", ++ esp_pending_intr_list.curr_num); ++ ++} ++void esp_tx_work(struct work_struct *work) ++{ ++ int i; ++ u16 tmp_intr_status_reg; ++ ++ esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__); ++ ++ spin_lock(&esp_pending_intr_list.spin_lock); ++ ++ tmp_intr_status_reg = ++ esp_pending_intr_list.pending_intr_list[esp_pending_intr_list. ++ start_pos]; ++ ++ esp_pending_intr_list.pending_intr_list[esp_pending_intr_list. ++ start_pos] = 0x0000; ++ esp_pending_intr_list.start_pos = ++ (esp_pending_intr_list.start_pos + 1) % MAX_PENDING_INTR_LIST; ++ esp_pending_intr_list.curr_num--; ++ ++ spin_unlock(&esp_pending_intr_list.spin_lock); ++ ++ for (i = 0; i < EXT_GPIO_MAX_NUM; i++) { ++ if (tmp_intr_status_reg & (1 << i) ++ && (gpio_list[i].irq_handler)) ++ gpio_list[i].irq_handler(); ++ } ++ ++ spin_lock(&esp_pending_intr_list.spin_lock); ++ if (esp_pending_intr_list.curr_num > 0) ++ queue_work(ext_irq_wkq, &ext_irq_work); ++ spin_unlock(&esp_pending_intr_list.spin_lock); ++} ++ ++void ext_gpio_int_process(u16 value) ++{ ++ if (value == 0x00) ++ return; ++ ++ esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__); ++ ++ /* intr cycle queue is full, wait */ ++ while (esp_pending_intr_list.curr_num >= MAX_PENDING_INTR_LIST) { ++ udelay(1); ++ } ++ ++ spin_lock(&esp_pending_intr_list.spin_lock); ++ ++ esp_pending_intr_list.pending_intr_list[esp_pending_intr_list. ++ end_pos] = value; ++ esp_pending_intr_list.end_pos = ++ (esp_pending_intr_list.end_pos + 1) % MAX_PENDING_INTR_LIST; ++ esp_pending_intr_list.curr_num++; ++ ++ queue_work(ext_irq_wkq, &ext_irq_work); ++ ++ spin_unlock(&esp_pending_intr_list.spin_lock); ++} ++ ++int ext_gpio_init(struct esp_pub *epub) ++{ ++ esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__); ++ ++ ext_irq_wkq = create_singlethread_workqueue("esp_ext_irq_wkq"); ++ if (ext_irq_wkq == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "%s create workqueue error\n", ++ __func__); ++ return -EACCES; ++ } ++ ++ INIT_WORK(&ext_irq_work, esp_tx_work); ++ mutex_init(&ext_mutex_lock); ++ ++ ext_epub = epub; ++ ++ if (ext_epub == NULL) ++ return -EINVAL; ++ ++#ifdef EXT_GPIO_OPS ++ register_ext_gpio_ops(&ext_gpio_ops); ++#endif ++ ++ return 0; ++} ++ ++void ext_gpio_deinit(void) ++{ ++ esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__); ++ ++#ifdef EXT_GPIO_OPS ++ unregister_ext_gpio_ops(); ++#endif ++ ext_epub = NULL; ++ cancel_work_sync(&ext_irq_work); ++ ++ if (ext_irq_wkq) ++ destroy_workqueue(ext_irq_wkq); ++ ++} ++ ++#endif /* USE_EXT_GPIO */ +diff --git a/drivers/net/wireless/esp8089/esp_ext.h b/drivers/net/wireless/esp8089/esp_ext.h +new file mode 100644 +index 000000000000..0eeba4d22111 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_ext.h +@@ -0,0 +1,100 @@ ++#ifdef USE_EXT_GPIO ++ ++#ifndef _ESP_EXT_H_ ++#define _ESP_EXT_H_ ++ ++#include ++#include ++#include "esp_sip.h" ++ ++#define MAX_PENDING_INTR_LIST 16 ++ ++#ifdef EXT_GPIO_OPS ++typedef struct esp_ext_gpio_ops { ++ int (*gpio_request) (int gpio_no); /* gpio_request gpio_no from 0x0 to 0xf */ ++ int (*gpio_release) (int gpio_no); /* gpio_release */ ++ int (*gpio_set_mode) (int gpio_no, int mode, void *data); /* gpio_set_mode, data is irq_func of irq_mode , default level of output_mode */ ++ int (*gpio_get_mode) (int gpio_no); /* gpio_get_mode, current mode */ ++ int (*gpio_set_state) (int gpio_no, int state); /* only output state, high level or low level */ ++ int (*gpio_get_state) (int gpio_no); /* current state */ ++ int (*irq_ack) (int gpio_no); /* ack interrupt */ ++} esp_ext_gpio_ops_t; ++#endif ++ ++typedef enum EXT_GPIO_NO { ++ EXT_GPIO_GPIO0 = 0, ++ EXT_GPIO_U0TXD, ++ EXT_GPIO_GPIO2, ++ EXT_GPIO_U0RXD, ++ EXT_GPIO_GPIO4, ++ EXT_GPIO_GPIO5, ++ EXT_GPIO_SD_CLK, ++ EXT_GPIO_SD_DATA0, ++ EXT_GPIO_SD_DATA1, ++ EXT_GPIO_SD_DATA2, ++ EXT_GPIO_SD_DATA3, ++ EXT_GPIO_SD_CMD, ++ EXT_GPIO_MTDI, ++ EXT_GPIO_MTCK, ++ EXT_GPIO_MTMS, ++ EXT_GPIO_MTDO, ++ EXT_GPIO_MAX_NUM ++} EXT_GPIO_NO_T; ++ ++typedef enum EXT_GPIO_MODE { //dir def pullup mode wake ++ EXT_GPIO_MODE_OOB = 0, //output 1 0 n/a n/a ++ EXT_GPIO_MODE_OUTPUT, //output / 0 n/a n/a ++ EXT_GPIO_MODE_DISABLE, //input n/a 0 DIS n/a ++ EXT_GPIO_MODE_INTR_POSEDGE, //input n/a 0 POS 1 ++ EXT_GPIO_MODE_INTR_NEGEDGE, //input n/a 1 NEG 1 ++ EXT_GPIO_MODE_INPUT, //input n/a 0 ANY 1 ++ EXT_GPIO_MODE_INTR_LOLEVEL, //input n/a 1 LOW 1 ++ EXT_GPIO_MODE_INTR_HILEVEL, //input n/a 0 HIGH 1 ++ EXT_GPIO_MODE_MAX, ++} EXT_GPIO_MODE_T; ++ ++typedef enum EXT_GPIO_STATE { ++ EXT_GPIO_STATE_LOW, ++ EXT_GPIO_STATE_HIGH, ++ EXT_GPIO_STATE_IDLE ++} EXT_GPIO_STATE_T; ++ ++typedef irqreturn_t(*ext_irq_handler_t) (void); ++ ++struct ext_gpio_info { ++ int gpio_no; ++ int gpio_mode; ++ int gpio_state; ++ ext_irq_handler_t irq_handler; ++}; ++ ++struct pending_intr_list_info { ++ u16 pending_intr_list[MAX_PENDING_INTR_LIST]; ++ int start_pos; ++ int end_pos; ++ int curr_num; ++ spinlock_t spin_lock; ++}; ++ ++u16 ext_gpio_get_int_mask_reg(void); ++ ++/* for extern user start */ ++int ext_gpio_request(int gpio_no); ++int ext_gpio_release(int gpio_no); ++ ++int ext_gpio_set_mode(int gpio_no, int mode, void *data); ++int ext_gpio_get_mode(int gpio_no); ++ ++int ext_gpio_set_output_state(int gpio_no, int state); ++int ext_gpio_get_state(int gpio_no); ++ ++int ext_irq_ack(int gpio_no); ++/* for extern user end */ ++ ++void ext_gpio_int_process(u16 value); ++ ++int ext_gpio_init(struct esp_pub *epub); ++void ext_gpio_deinit(void); ++#endif /* _ESP_EXT_H_ */ ++ ++#endif /* USE_EXT_GPIO */ +diff --git a/drivers/net/wireless/esp8089/esp_file.c b/drivers/net/wireless/esp8089/esp_file.c +new file mode 100644 +index 000000000000..ea702f010eec +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_file.c +@@ -0,0 +1,258 @@ ++/* ++ * Copyright (c) 2010 -2014 Espressif System. ++ * ++ * file operation in kernel space ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_file.h" ++#include "esp_debug.h" ++#include "esp_sif.h" ++ ++static int mod_parm_crystal = -1; ++module_param_named(crystal, mod_parm_crystal, int, 0444); ++MODULE_PARM_DESC(crystal, "crystal frequency: 0=40MHz, 1=26MHz, 2=24MHz"); ++ ++struct esp_init_table_elem esp_init_table[MAX_ATTR_NUM] = { ++ /* ++ * Crystal type: ++ * 0: 40MHz (default) ++ * 1: 26MHz (ESP8266 ESP-12F) ++ * 2: 24MHz ++ */ ++ {"crystal_26M_en", 48, 0}, ++ /* ++ * Output crystal clock to pin: ++ * 0: None ++ * 1: GPIO1 ++ * 2: URXD0 ++ */ ++ {"test_xtal", 49, 0}, ++ /* ++ * Host SDIO mode: ++ * 0: Auto by pin strapping ++ * 1: SDIO data output on negative edges (SDIO v1.1) ++ * 2: SDIO data output on positive edges (SDIO v2.0) ++ */ ++ {"sdio_configure", 50, 2}, ++ /* ++ * WiFi/Bluetooth co-existence with BK3515A BT chip ++ * 0: None ++ * 1: GPIO0->WLAN_ACTIVE, MTMS->BT_ACTIVE, MTDI->BT_PRIORITY, ++ * U0TXD->ANT_SEL_BT, U0RXD->ANT_SEL_WIFI ++ */ ++ {"bt_configure", 51, 0}, ++ /* ++ * Antenna selection: ++ * 0: Antenna is for WiFi ++ * 1: Antenna is for Bluetooth ++ */ ++ {"bt_protocol", 52, 0}, ++ /* ++ * Dual antenna configuration mode: ++ * 0: None ++ * 1: U0RXD + XPD_DCDC ++ * 2: U0RXD + GPIO0 ++ * 3: U0RXD + U0TXD ++ */ ++ {"dual_ant_configure", 53, 0}, ++ /* ++ * Firmware debugging output pin: ++ * 0: None ++ * 1: UART TX on GPIO2 ++ * 2: UART TX on U0TXD ++ */ ++ {"test_uart_configure", 54, 2}, ++ /* ++ * Whether to share crystal clock with BT (in sleep mode): ++ * 0: no ++ * 1: always on ++ * 2: automatically on according to XPD_DCDC ++ */ ++ {"share_xtal", 55, 0}, ++ /* ++ * Allow chip to be woken up during sleep on pin: ++ * 0: None ++ * 1: XPD_DCDC ++ * 2: GPIO0 ++ * 3: Both XPD_DCDC and GPIO0 ++ */ ++ {"gpio_wake", 56, 0}, ++ {"no_auto_sleep", 57, 0}, ++ {"speed_suspend", 58, 0}, ++ {"attr11", -1, -1}, ++ {"attr12", -1, -1}, ++ {"attr13", -1, -1}, ++ {"attr14", -1, -1}, ++ {"attr15", -1, -1}, ++ //attr that is not send to target ++ /* ++ * Allow chip to be reset by GPIO pin: ++ * 0: no ++ * 1: yes ++ */ ++ {"ext_rst", -1, 0}, ++ {"wakeup_gpio", -1, 12}, ++ {"ate_test", -1, 0}, ++ {"attr19", -1, -1}, ++ {"attr20", -1, -1}, ++ {"attr21", -1, -1}, ++ {"attr22", -1, -1}, ++ {"attr23", -1, -1}, ++}; ++ ++/* ++ * Export part of the configuration related to first initiliazition to the esp8089 ++ */ ++void esp_conf_upload_first(void) ++{ ++ int i; ++ ++ for (i = 0; i < MAX_ATTR_NUM; i++) { ++ if (esp_init_table[i].value < 0) ++ continue; ++ ++ if (!strcmp(esp_init_table[i].attr, "share_xtal")) ++ sif_record_bt_config(esp_init_table[i].value); ++ else if (!strcmp(esp_init_table[i].attr, "ext_rst")) ++ sif_record_rst_config(esp_init_table[i].value); ++ else if (!strcmp(esp_init_table[i].attr, "wakeup_gpio")) ++ sif_record_wakeup_gpio_config(esp_init_table[i].value); ++ else if (!strcmp(esp_init_table[i].attr, "ate_test")) ++ sif_record_ate_config(esp_init_table[i].value); ++ } ++} ++ ++/* ++ * Export part of the configuration related to second initiliazition ++ */ ++void esp_conf_upload_second(u8 * init_data_buf, int buf_size) ++{ ++ int i; ++ ++ for (i = 0; i < MAX_FIX_ATTR_NUM; i++) { ++ if (esp_init_table[i].offset > -1 ++ && esp_init_table[i].offset < buf_size ++ && esp_init_table[i].value > -1) { ++ *(u8 *) (init_data_buf + ++ esp_init_table[i].offset) = ++ esp_init_table[i].value; ++ } else if (esp_init_table[i].offset > buf_size) { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s: offset[%d] longer than init_data_buf len[%d] Ignore\n", ++ __FUNCTION__, esp_init_table[i].offset, ++ buf_size); ++ } ++ } ++ ++} ++ ++ ++void esp_conf_init(struct device *dev) ++{ ++ ++ struct device_node *np = dev->of_node; ++ ++ if (np) { ++ ++ u32 value; ++ ++ if (!of_property_read_u32(np, "esp,crystal-26M-en", &value)) ++ esp_conf_set_attr("crystal_26M_en", value); ++ ++ if (!of_property_read_u32(np, "esp,sdio-configure", &value)) ++ esp_conf_set_attr("sdio_configure", value); ++ ++ if (of_property_read_bool(np, "esp,shared-xtal")) ++ esp_conf_set_attr("share_xtal", 1); ++ ++ if (!of_property_read_u32(np, "esp,gpio-wake", &value)) ++ esp_conf_set_attr("gpio_wake", value); ++ ++ if (!of_property_read_u32(np, "esp,wakeup-gpio", &value)) ++ esp_conf_set_attr("wakeup_gpio", value); ++ ++ if (of_property_read_bool(np, "esp,configure-dual-antenna")) ++ esp_conf_set_attr("dual_ant_configure", 1); ++ ++ if (of_property_read_bool(np, "esp,no-auto-sleep")) ++ esp_conf_set_attr("no_auto_sleep", 1); ++ ++ if (of_property_read_bool(np, "esp,test-xtal")) ++ esp_conf_set_attr("test_xtal", 1); ++ ++ if (of_property_read_bool(np, "esp,bt-configure")) ++ esp_conf_set_attr("bt_configure", 1); ++ ++ if (!of_property_read_u32(np, "esp,bt-protocol", &value)) ++ esp_conf_set_attr("bt_protocol", value); ++ ++ if (of_property_read_bool(np, "esp,test-uart-configure")) ++ esp_conf_set_attr("test_uart_configure", 1); ++ ++ if (of_property_read_bool(np, "esp,speed-suspend")) ++ esp_conf_set_attr("speed_suspend", 1); ++ ++ if (of_property_read_bool(np, "esp,ate-test")) ++ esp_conf_set_attr("ate_test", 1); ++ ++ if (!of_property_read_u32(np, "esp,ext-rst", &value)) ++ esp_conf_set_attr("ext_rst", value); ++ ++ } ++ ++ if (mod_parm_crystal >= 0 && mod_parm_crystal <= 2) ++ esp_conf_set_attr("crystal_26M_en", mod_parm_crystal); ++ ++ ++ esp_conf_show_attrs(); ++ ++} ++ ++int esp_conf_set_attr(char *name, u8 value) { ++ ++ int i; ++ ++ for (i = 0; i < MAX_ATTR_NUM; i++) { ++ ++ if (strcmp(esp_init_table[i].attr, name) == 0) { ++ esp_dbg(ESP_DBG, "set config: %s value: %d", name, value); ++ esp_init_table[i].value = value; ++ return 0; ++ } ++ ++ } ++ ++ return -1; ++ ++} ++ ++void esp_conf_show_attrs(void) ++{ ++ int i; ++ for (i = 0; i < MAX_ATTR_NUM; i++) ++ if (esp_init_table[i].offset > -1) ++ esp_dbg(ESP_SHOW, "config parm:%s (id:%d), value: %d\n", ++ esp_init_table[i].attr, ++ esp_init_table[i].offset, ++ esp_init_table[i].value); ++} +diff --git a/drivers/net/wireless/esp8089/esp_file.h b/drivers/net/wireless/esp8089/esp_file.h +new file mode 100644 +index 000000000000..5ba39c626baa +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_file.h +@@ -0,0 +1,43 @@ ++/* ++ * Copyright (c) 2010 -2014 Espressif System. ++ * ++ * file operation in kernel space ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_FILE_H_ ++#define _ESP_FILE_H_ ++ ++#include ++#include ++ ++#define E_ROUND_UP(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) ++ ++#define CONF_ATTR_LEN 24 ++#define CONF_VAL_LEN 3 ++#define MAX_ATTR_NUM 24 ++#define MAX_FIX_ATTR_NUM 16 ++#define MAX_BUF_LEN ((CONF_ATTR_LEN + CONF_VAL_LEN + 2) * MAX_ATTR_NUM + 2) ++ ++struct esp_init_table_elem { ++ char attr[CONF_ATTR_LEN]; ++ int offset; ++ short value; ++}; ++ ++void esp_conf_init(struct device *dev); ++void esp_conf_upload_first(void); ++void esp_conf_upload_second(u8 * init_data_buf, int buf_size); ++int esp_conf_set_attr(char *name, u8 value); ++void esp_conf_show_attrs(void); ++ ++#endif /* _ESP_FILE_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_init_data.h b/drivers/net/wireless/esp8089/esp_init_data.h +new file mode 100644 +index 000000000000..16f451affd1e +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_init_data.h +@@ -0,0 +1,7 @@ ++static char esp_init_data[] = ++ { 0x5, 0x0, 4, 2, 5, 5, 5, 2, 5, 0, 4, 5, 5, 4, 5, 5, 4, -2, -3, -1, ++-16, -16, -16, -32, -32, -32, 204, 1, 0xff, 0xff, 0, 0, 0, 0, 82, 78, 74, 68, 64, 56, 0, ++0, 1, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 10, 0x0, 0x0, ++0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++0 }; +diff --git a/drivers/net/wireless/esp8089/esp_io.c b/drivers/net/wireless/esp8089/esp_io.c +new file mode 100644 +index 000000000000..6c5c01aad4e5 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_io.c +@@ -0,0 +1,639 @@ ++/* ++ * Copyright (c) 2009 - 2014 Espressif System. ++ * IO interface ++ * - sdio/spi common i/f driver ++ * - target sdio hal ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include "esp_sif.h" ++#include "slc_host_register.h" ++#include "esp_debug.h" ++ ++#ifdef SIF_DEBUG_DSR_DUMP_REG ++static void dump_slc_regs(struct slc_host_regs *regs); ++#endif /* SIF_DEBUG_DSR_DUMP_REG */ ++ ++int esp_common_read(struct esp_pub *epub, u8 * buf, u32 len, int sync, ++ bool noround) ++{ ++ if (sync) { ++ return sif_lldesc_read_sync(epub, buf, len); ++ } else { ++ return sif_lldesc_read_raw(epub, buf, len, noround); ++ } ++} ++ ++ ++int esp_common_write(struct esp_pub *epub, u8 * buf, u32 len, int sync) ++{ ++ if (sync) { ++ return sif_lldesc_write_sync(epub, buf, len); ++ } else { ++ return sif_lldesc_write_raw(epub, buf, len); ++ } ++} ++ ++ ++int esp_common_read_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ u32 len, int sync) ++{ ++ if (sync) { ++ return sif_io_sync(epub, addr, buf, len, ++ SIF_FROM_DEVICE | SIF_SYNC | ++ SIF_BYTE_BASIS | SIF_INC_ADDR); ++ } else { ++ return sif_io_raw(epub, addr, buf, len, ++ SIF_FROM_DEVICE | SIF_BYTE_BASIS | ++ SIF_INC_ADDR); ++ } ++ ++} ++ ++ ++int esp_common_write_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ u32 len, int sync) ++{ ++ if (sync) { ++ return sif_io_sync(epub, addr, buf, len, ++ SIF_TO_DEVICE | SIF_SYNC | ++ SIF_BYTE_BASIS | SIF_INC_ADDR); ++ } else { ++ return sif_io_raw(epub, addr, buf, len, ++ SIF_TO_DEVICE | SIF_BYTE_BASIS | ++ SIF_INC_ADDR); ++ } ++} ++ ++int esp_common_readbyte_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ int sync) ++{ ++ if (sync) { ++ int res; ++ sif_lock_bus(epub); ++ *buf = sdio_io_readb(epub, addr, &res); ++ sif_unlock_bus(epub); ++ return res; ++ } else { ++ int res; ++ *buf = sdio_io_readb(epub, addr, &res); ++ return res; ++ } ++ ++} ++ ++ ++ ++int esp_common_writebyte_with_addr(struct esp_pub *epub, u32 addr, u8 buf, ++ int sync) ++{ ++ if (sync) { ++ int res; ++ sif_lock_bus(epub); ++ sdio_io_writeb(epub, buf, addr, &res); ++ sif_unlock_bus(epub); ++ return res; ++ } else { ++ int res; ++ sdio_io_writeb(epub, buf, addr, &res); ++ return res; ++ } ++} ++ ++int sif_read_reg_window(struct esp_pub *epub, unsigned int reg_addr, ++ u8 * value) ++{ ++ u8 *p_tbuf = NULL; ++ int ret = 0; ++ int retry = 20; ++ ++ reg_addr >>= 2; ++ if (reg_addr > 0x1f) ++ return -1; ++ ++ p_tbuf = kzalloc(4, GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ ++ p_tbuf[0] = 0x80 | (reg_addr & 0x1f); ++ ++ ret = ++ esp_common_write_with_addr(epub, SLC_HOST_WIN_CMD, p_tbuf, 1, ++ ESP_SIF_NOSYNC); ++ ++ if (ret == 0) { ++ do { ++ if (retry < 20) ++ mdelay(10); ++ retry--; ++ ret = ++ esp_common_read_with_addr(epub, ++ SLC_HOST_STATE_W0, ++ p_tbuf, 4, ++ ESP_SIF_NOSYNC); ++ } while (retry > 0 && ret != 0); ++ } ++ ++ if (ret == 0) ++ memcpy(value, p_tbuf, 4); ++ ++ kfree(p_tbuf); ++ return ret; ++} ++ ++int sif_write_reg_window(struct esp_pub *epub, unsigned int reg_addr, ++ u8 * value) ++{ ++ u8 *p_tbuf = NULL; ++ int ret = 0; ++ ++ reg_addr >>= 2; ++ if (reg_addr > 0x1f) ++ return -1; ++ ++ p_tbuf = kzalloc(8, GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ memcpy(p_tbuf, value, 4); ++ p_tbuf[4] = 0xc0 | (reg_addr & 0x1f); ++ ++ ret = ++ esp_common_write_with_addr(epub, SLC_HOST_CONF_W5, p_tbuf, 5, ++ ESP_SIF_NOSYNC); ++ ++ kfree(p_tbuf); ++ return ret; ++} ++ ++int sif_ack_target_read_err(struct esp_pub *epub) ++{ ++ u32 value[1]; ++ int ret; ++ ++ ret = sif_read_reg_window(epub, SLC_RX_LINK, (u8 *) value); ++ if (ret) ++ return ret; ++ value[0] |= SLC_RXLINK_START; ++ ret = sif_write_reg_window(epub, SLC_RX_LINK, (u8 *) value); ++ return ret; ++} ++ ++int sif_had_io_enable(struct esp_pub *epub) ++{ ++ u32 *p_tbuf = NULL; ++ int ret; ++ ++ p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ ++ *p_tbuf = ++ SLC_TXEOF_ENA | (0x4 << SLC_FIFO_MAP_ENA_S) | SLC_TX_DUMMY_MODE ++ | SLC_HDA_MAP_128K | (0xFE << SLC_TX_PUSH_IDLE_NUM_S); ++ ret = sif_write_reg_window(epub, SLC_BRIDGE_CONF, (u8 *) p_tbuf); ++ ++ if (ret) ++ goto _err; ++ ++ *p_tbuf = 0x30; ++ ret = ++ esp_common_write_with_addr((epub), SLC_HOST_CONF_W4 + 1, ++ (u8 *) p_tbuf, 1, ESP_SIF_NOSYNC); ++ ++ if (ret) ++ goto _err; ++ //set w3 0 ++ *p_tbuf = 0x1; ++ ret = ++ esp_common_write_with_addr((epub), SLC_HOST_CONF_W3, ++ (u8 *) p_tbuf, 1, ESP_SIF_NOSYNC); ++ ++ _err: ++ kfree(p_tbuf); ++ return ret; ++} ++ ++typedef enum _SDIO_INTR_MODE { ++ SDIO_INTR_IB = 0, ++ SDIO_INTR_OOB_TOGGLE, ++ SDIO_INTR_OOB_HIGH_LEVEL, ++ SDIO_INTR_OOB_LOW_LEVEL, ++} SDIO_INTR_MODE; ++ ++#define GEN_GPIO_SEL(_gpio_num, _sel_func, _intr_mode, _offset) (((_offset)<< 9 ) |((_intr_mode) << 7)|((_sel_func) << 4)|(_gpio_num)) ++//bit[3:0] = gpio num, 2 ++//bit[6:4] = gpio sel func, 0 ++//bit[8:7] = gpio intr mode, SDIO_INTR_OOB_TOGGLE ++//bit[15:9] = register offset, 0x38 ++ ++u16 gpio_sel_sets[17] = { ++ GEN_GPIO_SEL(0, 0, SDIO_INTR_OOB_TOGGLE, 0x34), //GPIO0 ++ GEN_GPIO_SEL(1, 3, SDIO_INTR_OOB_TOGGLE, 0x18), //U0TXD ++ GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_TOGGLE, 0x38), //GPIO2 ++ GEN_GPIO_SEL(3, 3, SDIO_INTR_OOB_TOGGLE, 0x14), //U0RXD ++ GEN_GPIO_SEL(4, 0, SDIO_INTR_OOB_TOGGLE, 0x3C), //GPIO4 ++ GEN_GPIO_SEL(5, 0, SDIO_INTR_OOB_TOGGLE, 0x40), //GPIO5 ++ GEN_GPIO_SEL(6, 3, SDIO_INTR_OOB_TOGGLE, 0x1C), //SD_CLK ++ GEN_GPIO_SEL(7, 3, SDIO_INTR_OOB_TOGGLE, 0x20), //SD_DATA0 ++ GEN_GPIO_SEL(8, 3, SDIO_INTR_OOB_TOGGLE, 0x24), //SD_DATA1 ++ GEN_GPIO_SEL(9, 3, SDIO_INTR_OOB_TOGGLE, 0x28), //SD_DATA2 ++ GEN_GPIO_SEL(10, 3, SDIO_INTR_OOB_TOGGLE, 0x2C), //SD_DATA3 ++ GEN_GPIO_SEL(11, 3, SDIO_INTR_OOB_TOGGLE, 0x30), //SD_CMD ++ GEN_GPIO_SEL(12, 3, SDIO_INTR_OOB_TOGGLE, 0x04), //MTDI ++ GEN_GPIO_SEL(13, 3, SDIO_INTR_OOB_TOGGLE, 0x08), //MTCK ++ GEN_GPIO_SEL(14, 3, SDIO_INTR_OOB_TOGGLE, 0x0C), //MTMS ++ GEN_GPIO_SEL(15, 3, SDIO_INTR_OOB_TOGGLE, 0x10), //MTDO ++ //pls do not change sel before, if you want to change intr mode,change the one blow ++ //GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_TOGGLE, 0x38) ++ GEN_GPIO_SEL(2, 0, SDIO_INTR_OOB_LOW_LEVEL, 0x38) ++}; ++ ++#if defined(USE_EXT_GPIO) ++u16 gpio_forbidden = 0; ++#endif ++ ++int sif_interrupt_target(struct esp_pub *epub, u8 index) ++{ ++ u8 low_byte = BIT(index); ++ return esp_common_writebyte_with_addr(epub, SLC_HOST_CONF_W4 + 2, ++ low_byte, ESP_SIF_NOSYNC); ++ ++} ++ ++#ifdef USE_EXT_GPIO ++int sif_config_gpio_mode(struct esp_pub *epub, u8 gpio_num, u8 gpio_mode) ++{ ++ u32 *p_tbuf = NULL; ++ int err; ++ ++ if ((BIT(gpio_num) & gpio_forbidden) || gpio_num > 15) ++ return -EINVAL; ++ ++ p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ *p_tbuf = (gpio_mode << 16) | gpio_sel_sets[gpio_num]; ++ err = ++ esp_common_write_with_addr(epub, SLC_HOST_CONF_W1, ++ (u8 *) p_tbuf, sizeof(u32), ++ ESP_SIF_NOSYNC); ++ kfree(p_tbuf); ++ if (err) ++ return err; ++ ++ return sif_interrupt_target(epub, 4); ++} ++ ++int sif_set_gpio_output(struct esp_pub *epub, u16 mask, u16 value) ++{ ++ u32 *p_tbuf = NULL; ++ int err; ++ ++ mask &= ~gpio_forbidden; ++ p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ *p_tbuf = (mask << 16) | value; ++ err = ++ esp_common_write_with_addr(epub, SLC_HOST_CONF_W2, ++ (u8 *) p_tbuf, sizeof(u32), ++ ESP_SIF_NOSYNC); ++ kfree(p_tbuf); ++ if (err) ++ return err; ++ ++ return sif_interrupt_target(epub, 5); ++} ++ ++int sif_get_gpio_intr(struct esp_pub *epub, u16 intr_mask, u16 * value) ++{ ++ u32 *p_tbuf = NULL; ++ int err; ++ ++ p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ *p_tbuf = 0; ++ err = ++ esp_common_read_with_addr(epub, SLC_HOST_CONF_W3, ++ (u8 *) p_tbuf, sizeof(u32), ++ ESP_SIF_NOSYNC); ++ if (err) { ++ kfree(p_tbuf); ++ return err; ++ } ++ ++ *value = *p_tbuf & intr_mask; ++ kfree(p_tbuf); ++ if (*value == 0) ++ return 0; ++ return sif_interrupt_target(epub, 6); ++} ++ ++int sif_get_gpio_input(struct esp_pub *epub, u16 * mask, u16 * value) ++{ ++ u32 *p_tbuf = NULL; ++ int err; ++ ++ err = sif_interrupt_target(epub, 3); ++ if (err) ++ return err; ++ ++ udelay(20); ++ p_tbuf = kzalloc(sizeof(u32), GFP_KERNEL); ++ if (p_tbuf == NULL) ++ return -ENOMEM; ++ *p_tbuf = 0; ++ err = ++ esp_common_read_with_addr(epub, SLC_HOST_CONF_W3, ++ (u8 *) p_tbuf, sizeof(u32), ++ ESP_SIF_NOSYNC); ++ if (err) { ++ kfree(p_tbuf); ++ return err; ++ } ++ ++ *mask = *p_tbuf >> 16; ++ *value = *p_tbuf & *mask; ++ kfree(p_tbuf); ++ ++ return 0; ++} ++#endif ++ ++void check_target_id(struct esp_pub *epub) ++{ ++ u32 date; ++ int err = 0; ++ int i; ++ ++ EPUB_CTRL_CHECK(epub, _err); ++ ++ sif_lock_bus(epub); ++ ++ for (i = 0; i < 4; i++) { ++ err = ++ esp_common_readbyte_with_addr(epub, SLC_HOST_DATE + i, ++ (u8 *) & date + i, ++ ESP_SIF_NOSYNC); ++ err = ++ esp_common_readbyte_with_addr(epub, SLC_HOST_ID + i, ++ (u8 *) & ++ EPUB_TO_CTRL(epub)-> ++ target_id + i, ++ ESP_SIF_NOSYNC); ++ } ++ ++ sif_unlock_bus(epub); ++ ++ esp_dbg(ESP_DBG_LOG, "\n\n \t\t SLC data 0x%08x, ID 0x%08x\n\n", ++ date, EPUB_TO_CTRL(epub)->target_id); ++ ++ switch (EPUB_TO_CTRL(epub)->target_id) { ++ case 0x100: ++ EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000; ++ break; ++ case 0x600: ++ EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000 - 0x800; ++ ++ do { ++ u16 gpio_sel; ++ u8 low_byte = 0; ++ u8 high_byte = 0; ++ u8 byte2 = 0; ++ u8 byte3 = 0; ++#ifdef USE_OOB_INTR ++ gpio_sel = gpio_sel_sets[16]; ++ low_byte = gpio_sel; ++ high_byte = gpio_sel >> 8; ++#ifdef USE_EXT_GPIO ++ gpio_forbidden |= BIT(gpio_sel & 0xf); ++#endif /* USE_EXT_GPIO */ ++#endif /* USE_OOB_INTR */ ++ ++ if (sif_get_bt_config() == 1 ++ && sif_get_rst_config() != 1) { ++ u8 gpio_num = sif_get_wakeup_gpio_config(); ++ gpio_sel = gpio_sel_sets[gpio_num]; ++ byte2 = gpio_sel; ++ byte3 = gpio_sel >> 8; ++#ifdef USE_EXT_GPIO ++ gpio_forbidden |= BIT(gpio_num); ++#endif ++ } ++ sif_lock_bus(epub); ++ err = ++ esp_common_writebyte_with_addr(epub, ++ SLC_HOST_CONF_W1, ++ low_byte, ++ ESP_SIF_NOSYNC); ++ err = ++ esp_common_writebyte_with_addr(epub, ++ SLC_HOST_CONF_W1 ++ + 1, high_byte, ++ ESP_SIF_NOSYNC); ++ err = ++ esp_common_writebyte_with_addr(epub, ++ SLC_HOST_CONF_W1 ++ + 2, byte2, ++ ESP_SIF_NOSYNC); ++ err = ++ esp_common_writebyte_with_addr(epub, ++ SLC_HOST_CONF_W1 ++ + 3, byte3, ++ ESP_SIF_NOSYNC); ++ sif_unlock_bus(epub); ++ } while (0); ++ break; ++ default: ++ EPUB_TO_CTRL(epub)->slc_window_end_addr = 0x20000; ++ break; ++ } ++ _err: ++ return; ++} ++ ++u32 sif_get_blksz(struct esp_pub * epub) ++{ ++ EPUB_CTRL_CHECK(epub, _err); ++ ++ return EPUB_TO_CTRL(epub)->slc_blk_sz; ++ _err: ++ return 512; ++} ++ ++u32 sif_get_target_id(struct esp_pub * epub) ++{ ++ EPUB_CTRL_CHECK(epub, _err); ++ ++ return EPUB_TO_CTRL(epub)->target_id; ++ _err: ++ return 0x600; ++} ++ ++void sif_dsr(struct sdio_func *func) ++{ ++ struct esp_sdio_ctrl *sctrl = sdio_get_drvdata(func); ++ static int dsr_cnt = 0, real_intr_cnt = 0, bogus_intr_cnt = 0; ++ struct slc_host_regs *regs = &(sctrl->slc_regs); ++ esp_dbg(ESP_DBG_TRACE, " %s enter %d \n", __func__, dsr_cnt++); ++ ++ sdio_release_host(sctrl->func); ++ ++ ++ sif_lock_bus(sctrl->epub); ++ ++ ++ do { ++ int ret = 0; ++ ++ memset(regs, 0x0, sizeof(struct slc_host_regs)); ++ ++ ret = ++ esp_common_read_with_addr(sctrl->epub, ++ REG_SLC_HOST_BASE + 8, ++ (u8 *) regs, ++ sizeof(struct slc_host_regs), ++ ESP_SIF_NOSYNC); ++ ++ if ((regs->intr_raw & SLC_HOST_RX_ST) && (ret == 0)) { ++ esp_dbg(ESP_DBG_TRACE, "%s eal intr cnt: %d", ++ __func__, ++real_intr_cnt); ++ ++ esp_dsr(sctrl->epub); ++ ++ } else { ++ sif_unlock_bus(sctrl->epub); ++ ++ esp_dbg(ESP_DBG_TRACE, "%s bogus_intr_cnt %d\n", ++ __func__, ++bogus_intr_cnt); ++ } ++ ++#ifdef SIF_DEBUG_DSR_DUMP_REG ++ dump_slc_regs(regs); ++#endif /* SIF_DEBUG_DUMP_DSR */ ++ ++ } while (0); ++ ++ sdio_claim_host(func); ++ ++ atomic_set(&sctrl->irq_handling, 0); ++} ++ ++ ++struct slc_host_regs *sif_get_regs(struct esp_pub *epub) ++{ ++ EPUB_CTRL_CHECK(epub, _err); ++ ++ return &EPUB_TO_CTRL(epub)->slc_regs; ++ _err: ++ return NULL; ++} ++ ++void sif_disable_target_interrupt(struct esp_pub *epub) ++{ ++ EPUB_FUNC_CHECK(epub, _exit); ++ sif_lock_bus(epub); ++#ifdef HOST_RESET_BUG ++ mdelay(10); ++#endif ++ memset(EPUB_TO_CTRL(epub)->dma_buffer, 0x00, sizeof(u32)); ++ esp_common_write_with_addr(epub, SLC_HOST_INT_ENA, ++ EPUB_TO_CTRL(epub)->dma_buffer, ++ sizeof(u32), ESP_SIF_NOSYNC); ++#ifdef HOST_RESET_BUG ++ mdelay(10); ++#endif ++ ++ sif_unlock_bus(epub); ++ ++ mdelay(1); ++ ++ sif_lock_bus(epub); ++ sif_interrupt_target(epub, 7); ++ sif_unlock_bus(epub); ++ _exit: ++ return; ++} ++ ++#ifdef SIF_DEBUG_DSR_DUMP_REG ++static void dump_slc_regs(struct slc_host_regs *regs) ++{ ++ esp_dbg(ESP_DBG_TRACE, "\n\n ------- %s --------------\n", ++ __func__); ++ ++ esp_dbg(ESP_DBG_TRACE, " \ ++ intr_raw 0x%08X \t \n \ ++ state_w0 0x%08X \t state_w1 0x%08X \n \ ++ config_w0 0x%08X \t config_w1 0x%08X \n \ ++ intr_status 0x%08X \t config_w2 0x%08X \n \ ++ config_w3 0x%08X \t config_w4 0x%08X \n \ ++ token_wdata 0x%08X \t intr_clear 0x%08X \n \ ++ intr_enable 0x%08X \n\n", regs->intr_raw, regs->state_w0, regs->state_w1, regs->config_w0, regs->config_w1, regs->intr_status, regs->config_w2, regs->config_w3, regs->config_w4, regs->token_wdata, regs->intr_clear, regs->intr_enable); ++} ++#endif /* SIF_DEBUG_DSR_DUMP_REG */ ++ ++static int bt_config = 0; ++void sif_record_bt_config(int value) ++{ ++ bt_config = value; ++} ++ ++int sif_get_bt_config(void) ++{ ++ return bt_config; ++} ++ ++static int rst_config = 0; ++void sif_record_rst_config(int value) ++{ ++ rst_config = value; ++} ++ ++int sif_get_rst_config(void) ++{ ++ return rst_config; ++} ++ ++static int ate_test = 0; ++void sif_record_ate_config(int value) ++{ ++ ate_test = value; ++} ++ ++int sif_get_ate_config(void) ++{ ++ return ate_test; ++} ++ ++static int retry_reset = 0; ++void sif_record_retry_config(void) ++{ ++ retry_reset = 1; ++} ++ ++int sif_get_retry_config(void) ++{ ++ return retry_reset; ++} ++ ++static int wakeup_gpio = 12; ++void sif_record_wakeup_gpio_config(int value) ++{ ++ wakeup_gpio = value; ++} ++ ++int sif_get_wakeup_gpio_config(void) ++{ ++ return wakeup_gpio; ++} +diff --git a/drivers/net/wireless/esp8089/esp_mac80211.c b/drivers/net/wireless/esp8089/esp_mac80211.c +new file mode 100644 +index 000000000000..14186365fdd4 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_mac80211.c +@@ -0,0 +1,1727 @@ ++/* ++ * Copyright (c) 2011-2014 Espressif System. ++ * ++ * MAC80211 support module ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "esp_pub.h" ++#include "esp_sip.h" ++#include "esp_ctrl.h" ++#include "esp_sif.h" ++#include "esp_debug.h" ++#include "esp_wl.h" ++#include "esp_utils.h" ++ ++#define ESP_IEEE80211_DBG esp_dbg ++ ++#define GET_NEXT_SEQ(seq) (((seq) +1) & 0x0fff) ++ ++static u8 esp_mac_addr[ETH_ALEN * 2]; ++static u8 getaddr_index(u8 * addr, struct esp_pub *epub); ++ ++static ++void ++esp_op_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, ++ struct sk_buff *skb) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_LOG, "%s enter\n", __func__); ++ if (!mod_support_no_txampdu() && ++ cfg80211_get_chandef_type(&epub->hw->conf.chandef) != ++ NL80211_CHAN_NO_HT) { ++ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); ++ struct ieee80211_hdr *wh = ++ (struct ieee80211_hdr *) skb->data; ++ if (ieee80211_is_data_qos(wh->frame_control)) { ++ if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { ++ u8 tidno = ++ ieee80211_get_qos_ctl(wh)[0] & ++ IEEE80211_QOS_CTL_TID_MASK; ++ struct esp_node *node = ++ esp_get_node_by_addr(epub, wh->addr1); ++ { ++ struct esp_tx_tid *tid = ++ &node->tid[tidno]; ++ //record ssn ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ tid->ssn = ++ GET_NEXT_SEQ(le16_to_cpu ++ (wh-> ++ seq_ctrl) >> 4); ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "tidno:%u,ssn:%u\n", ++ tidno, tid->ssn); ++ spin_unlock_bh(&epub-> ++ tx_ampdu_lock); ++ } ++ } else { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "tx ampdu pkt, sn:%u, %u\n", ++ le16_to_cpu(wh-> ++ seq_ctrl) >> ++ 4, skb->len); ++ } ++ } ++ } ++#ifdef GEN_ERR_CHECKSUM ++ esp_gen_err_checksum(skb); ++#endif ++ ++ sip_tx_data_pkt_enqueue(epub, skb); ++ if (epub) ++ ieee80211_queue_work(hw, &epub->tx_work); ++} ++ ++static int esp_op_start(struct ieee80211_hw *hw) ++{ ++ struct esp_pub *epub; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__); ++ ++ if (!hw) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no hw!\n", __func__); ++ return -EINVAL; ++ } ++ ++ epub = (struct esp_pub *) hw->priv; ++ ++ if (!epub) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no epub!\n", ++ __func__); ++ return EINVAL; ++ } ++ /*add rfkill poll function */ ++ ++ atomic_set(&epub->wl.off, 0); ++ wiphy_rfkill_start_polling(hw->wiphy); ++ return 0; ++} ++ ++static void esp_op_stop(struct ieee80211_hw *hw) ++{ ++ struct esp_pub *epub; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__); ++ ++ if (!hw) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no hw!\n", __func__); ++ return; ++ } ++ ++ epub = (struct esp_pub *) hw->priv; ++ ++ if (!epub) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s no epub!\n", ++ __func__); ++ return; ++ } ++ ++ atomic_set(&epub->wl.off, 1); ++ ++#ifdef HOST_RESET_BUG ++ mdelay(200); ++#endif ++ ++ if (epub->wl.scan_req) { ++ hw_scan_done(epub, true); ++ epub->wl.scan_req = NULL; ++ //msleep(2); ++ } ++} ++ ++#ifdef CONFIG_PM ++static int esp_op_suspend(struct ieee80211_hw *hw, ++ struct cfg80211_wowlan *wowlan) ++{ ++ esp_dbg(ESP_DBG_OP, "%s\n", __func__); ++ ++ return 0; ++} ++ ++static int esp_op_resume(struct ieee80211_hw *hw) ++{ ++ esp_dbg(ESP_DBG_OP, "%s\n", __func__); ++ ++ return 0; ++} ++#endif //CONFIG_PM ++ ++static int esp_op_add_interface(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ struct sip_cmd_setvif svif; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter: type %d, addr %pM\n", ++ __func__, vif->type, vif->addr); ++ ++ memset(&svif, 0, sizeof(struct sip_cmd_setvif)); ++ memcpy(svif.mac, vif->addr, ETH_ALEN); ++ evif->index = svif.index = getaddr_index(vif->addr, epub); ++ evif->epub = epub; ++ epub->vif = vif; ++ svif.set = 1; ++ if ((1 << svif.index) & epub->vif_slot) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "%s interface %d already used\n", ++ __func__, svif.index); ++ return -EOPNOTSUPP; ++ } ++ epub->vif_slot |= 1 << svif.index; ++ ++ if (svif.index == ESP_PUB_MAX_VIF) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "%s only support MAX %d interface\n", ++ __func__, ESP_PUB_MAX_VIF); ++ return -EOPNOTSUPP; ++ } ++ ++ switch (vif->type) { ++ case NL80211_IFTYPE_STATION: ++ //if (svif.index == 1) ++ // vif->type = NL80211_IFTYPE_UNSPECIFIED; ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s STA \n", __func__); ++ svif.op_mode = 0; ++ svif.is_p2p = 0; ++ break; ++ case NL80211_IFTYPE_AP: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s AP \n", __func__); ++ svif.op_mode = 1; ++ svif.is_p2p = 0; ++ break; ++ case NL80211_IFTYPE_P2P_CLIENT: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s P2P_CLIENT \n", __func__); ++ svif.op_mode = 0; ++ svif.is_p2p = 1; ++ break; ++ case NL80211_IFTYPE_P2P_GO: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s P2P_GO \n", __func__); ++ svif.op_mode = 1; ++ svif.is_p2p = 1; ++ break; ++ case NL80211_IFTYPE_UNSPECIFIED: ++ case NL80211_IFTYPE_ADHOC: ++ case NL80211_IFTYPE_AP_VLAN: ++ case NL80211_IFTYPE_WDS: ++ case NL80211_IFTYPE_MONITOR: ++ default: ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "%s does NOT support type %d\n", ++ __func__, vif->type); ++ return -EOPNOTSUPP; ++ } ++ ++ sip_cmd(epub, SIP_CMD_SETVIF, (u8 *) & svif, ++ sizeof(struct sip_cmd_setvif)); ++ return 0; ++} ++ ++static int esp_op_change_interface(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ enum nl80211_iftype new_type, bool p2p) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ struct sip_cmd_setvif svif; ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter,change to if:%d \n", ++ __func__, new_type); ++ ++ if (new_type == NL80211_IFTYPE_AP) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter,change to AP \n", ++ __func__); ++ } ++ ++ if (vif->type != new_type) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s type from %d to %d\n", ++ __func__, vif->type, new_type); ++ } ++ ++ memset(&svif, 0, sizeof(struct sip_cmd_setvif)); ++ memcpy(svif.mac, vif->addr, ETH_ALEN); ++ svif.index = evif->index; ++ svif.set = 2; ++ ++ switch (new_type) { ++ case NL80211_IFTYPE_STATION: ++ svif.op_mode = 0; ++ svif.is_p2p = p2p; ++ break; ++ case NL80211_IFTYPE_AP: ++ svif.op_mode = 1; ++ svif.is_p2p = p2p; ++ break; ++ case NL80211_IFTYPE_P2P_CLIENT: ++ svif.op_mode = 0; ++ svif.is_p2p = 1; ++ break; ++ case NL80211_IFTYPE_P2P_GO: ++ svif.op_mode = 1; ++ svif.is_p2p = 1; ++ break; ++ case NL80211_IFTYPE_UNSPECIFIED: ++ case NL80211_IFTYPE_ADHOC: ++ case NL80211_IFTYPE_AP_VLAN: ++ case NL80211_IFTYPE_WDS: ++ case NL80211_IFTYPE_MONITOR: ++ default: ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "%s does NOT support type %d\n", ++ __func__, vif->type); ++ return -EOPNOTSUPP; ++ } ++ sip_cmd(epub, SIP_CMD_SETVIF, (u8 *) & svif, ++ sizeof(struct sip_cmd_setvif)); ++ return 0; ++} ++ ++static void esp_op_remove_interface(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ struct sip_cmd_setvif svif; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ "%s enter, vif addr %pM, beacon enable %x\n", ++ __func__, vif->addr, ++ vif->bss_conf.enable_beacon); ++ ++ memset(&svif, 0, sizeof(struct sip_cmd_setvif)); ++ svif.index = evif->index; ++ epub->vif_slot &= ~(1 << svif.index); ++ ++ if (evif->ap_up) { ++ evif->beacon_interval = 0; ++ del_timer_sync(&evif->beacon_timer); ++ evif->ap_up = false; ++ } ++ epub->vif = NULL; ++ evif->epub = NULL; ++ ++ sip_cmd(epub, SIP_CMD_SETVIF, (u8 *) & svif, ++ sizeof(struct sip_cmd_setvif)); ++ ++ /* clean up tx/rx queue */ ++ ++} ++ ++#define BEACON_TIM_SAVE_MAX 20 ++u8 beacon_tim_saved[BEACON_TIM_SAVE_MAX]; ++int beacon_tim_count; ++static void beacon_tim_init(void) ++{ ++ memset(beacon_tim_saved, 0, BEACON_TIM_SAVE_MAX); ++ beacon_tim_count = 0; ++} ++ ++static u8 beacon_tim_save(u8 this_tim) ++{ ++ u8 all_tim = 0; ++ int i; ++ beacon_tim_saved[beacon_tim_count] = this_tim; ++ if (++beacon_tim_count >= BEACON_TIM_SAVE_MAX) ++ beacon_tim_count = 0; ++ for (i = 0; i < BEACON_TIM_SAVE_MAX; i++) ++ all_tim |= beacon_tim_saved[i]; ++ return all_tim; ++} ++ ++static bool beacon_tim_alter(struct sk_buff *beacon) ++{ ++ u8 *p, *tim_end; ++ u8 tim_count; ++ int len; ++ int remain_len; ++ struct ieee80211_mgmt *mgmt; ++ ++ if (beacon == NULL) ++ return false; ++ ++ mgmt = (struct ieee80211_mgmt *) ((u8 *) beacon->data); ++ ++ remain_len = ++ beacon->len - ((u8 *) mgmt->u.beacon.variable - (u8 *) mgmt + ++ 12); ++ p = mgmt->u.beacon.variable; ++ ++ while (remain_len > 0) { ++ len = *(++p); ++ if (*p == WLAN_EID_TIM) { // tim field ++ tim_end = p + len; ++ tim_count = *(++p); ++ p += 2; ++ //multicast ++ if (tim_count == 0) ++ *p |= 0x1; ++ if ((*p & 0xfe) == 0 && tim_end >= p + 1) { // we only support 8 sta in this case ++ p++; ++ *p = beacon_tim_save(*p); ++ } ++ return tim_count == 0; ++ } ++ p += (len + 1); ++ remain_len -= (2 + len); ++ } ++ ++ return false; ++} ++ ++unsigned long init_jiffies; ++unsigned long cycle_beacon_count; ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++static void drv_handle_beacon(struct timer_list *t) ++#else ++static void drv_handle_beacon(unsigned long data) ++#endif ++{ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++ struct esp_vif *evif = from_timer(evif, t, beacon_timer); ++ struct ieee80211_vif *vif = evif->epub->vif; ++#else ++ struct ieee80211_vif *vif = (struct ieee80211_vif *) data; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++#endif ++ struct sk_buff *beacon; ++ struct sk_buff *skb; ++ static int dbgcnt = 0; ++ bool tim_reach = false; ++ ++ if (evif->epub == NULL) ++ return; ++ ++ mdelay(2400 * (cycle_beacon_count % 25) % 10000 / 1000); ++ ++ beacon = ieee80211_beacon_get(evif->epub->hw, vif, 0); ++ ++ tim_reach = beacon_tim_alter(beacon); ++ ++ if (beacon && !(dbgcnt++ % 600)) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, " beacon length:%d,fc:0x%x\n", ++ beacon->len, ++ ((struct ieee80211_mgmt *) (beacon-> ++ data))-> ++ frame_control); ++ ++ } ++ ++ if (beacon) ++ sip_tx_data_pkt_enqueue(evif->epub, beacon); ++ ++ if (cycle_beacon_count++ == 100) { ++ init_jiffies = jiffies; ++ cycle_beacon_count -= 100; ++ } ++ mod_timer(&evif->beacon_timer, ++ init_jiffies + ++ msecs_to_jiffies(cycle_beacon_count * ++ vif->bss_conf.beacon_int * 1024 / ++ 1000)); ++ //FIXME:the packets must be sent at home channel ++ //send buffer mcast frames ++ if (tim_reach) { ++ skb = ieee80211_get_buffered_bc(evif->epub->hw, vif); ++ while (skb) { ++ sip_tx_data_pkt_enqueue(evif->epub, skb); ++ skb = ++ ieee80211_get_buffered_bc(evif->epub->hw, vif); ++ } ++ } ++} ++ ++static void init_beacon_timer(struct ieee80211_vif *vif) ++{ ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: beacon interval %x\n", ++ __func__, evif->beacon_interval); ++ ++ beacon_tim_init(); ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++ timer_setup(&evif->beacon_timer, drv_handle_beacon, 0); ++#else ++ init_timer(&evif->beacon_timer); //TBD, not init here... ++ evif->beacon_timer.data = (unsigned long) vif; ++ evif->beacon_timer.function = drv_handle_beacon; ++#endif ++ cycle_beacon_count = 1; ++ init_jiffies = jiffies; ++ evif->beacon_timer.expires = ++ init_jiffies + ++ msecs_to_jiffies(cycle_beacon_count * ++ vif->bss_conf.beacon_int * 1024 / 1000); ++ add_timer(&evif->beacon_timer); ++} ++ ++static int esp_op_config(struct ieee80211_hw *hw, u32 changed) ++{ ++ //struct ieee80211_conf *conf = &hw->conf; ++ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter 0x%08x\n", __func__, ++ changed); ++ ++ if (changed & ++ (IEEE80211_CONF_CHANGE_CHANNEL | IEEE80211_CONF_CHANGE_IDLE)) { ++ sip_send_config(epub, &hw->conf); ++ } ++ ++ return 0; ++} ++ ++static void esp_op_bss_info_changed(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_bss_conf *info, ++ u64 changed) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ ++ // ieee80211_bss_conf(include/net/mac80211.h) is included in ieee80211_sub_if_data(net/mac80211/ieee80211_i.h) , does bssid=ieee80211_if_ap's ssid ? ++ // in 2.6.27, ieee80211_sub_if_data has ieee80211_bss_conf while in 2.6.32 ieee80211_sub_if_data don't have ieee80211_bss_conf ++ // in 2.6.27, ieee80211_bss_conf->enable_beacon don't exist, does it mean it support beacon always? ++ // ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: vif addr %pM, changed %x, assoc %x, bssid %pM\n", __func__, vif->addr, changed, vif->cfg.assoc, info->bssid); ++ // sdata->u.sta.bssid ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ " %s enter: changed %x, assoc %x, bssid %pM\n", ++ __func__, changed, vif->cfg.assoc, info->bssid); ++ ++ if (vif->type == NL80211_IFTYPE_STATION) { ++ if ((changed & BSS_CHANGED_BSSID) || ++ ((changed & BSS_CHANGED_ASSOC) && (vif->cfg.assoc))) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ " %s STA change bssid or assoc\n", ++ __func__); ++ evif->beacon_interval = vif->cfg.aid; ++ memcpy(epub->wl.bssid, (u8 *) info->bssid, ++ ETH_ALEN); ++ sip_send_bss_info_update(epub, evif, ++ (u8 *) info->bssid, ++ vif->cfg.assoc); ++ } else if ((changed & BSS_CHANGED_ASSOC) && (!vif->cfg.assoc)) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ " %s STA change disassoc\n", ++ __func__); ++ evif->beacon_interval = 0; ++ memset(epub->wl.bssid, 0, ETH_ALEN); ++ sip_send_bss_info_update(epub, evif, ++ (u8 *) info->bssid, ++ vif->cfg.assoc); ++ } else { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "%s wrong mode of STA mode\n", ++ __func__); ++ } ++ } else if (vif->type == NL80211_IFTYPE_AP) { ++ if ((changed & BSS_CHANGED_BEACON_ENABLED) || ++ (changed & BSS_CHANGED_BEACON_INT)) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ " %s AP change enable %d, interval is %d, bssid %pM\n", ++ __func__, info->enable_beacon, ++ info->beacon_int, info->bssid); ++ if (info->enable_beacon && evif->ap_up != true) { ++ evif->beacon_interval = info->beacon_int; ++ init_beacon_timer(vif); ++ sip_send_bss_info_update(epub, evif, ++ (u8 *) info-> ++ bssid, 2); ++ evif->ap_up = true; ++ } else if (!info->enable_beacon && evif->ap_up && ++ !(hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) ++ ) { ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ " %s AP disable beacon, interval is %d\n", ++ __func__, ++ info->beacon_int); ++ evif->beacon_interval = 0; ++ del_timer_sync(&evif->beacon_timer); ++ sip_send_bss_info_update(epub, evif, ++ (u8 *) info-> ++ bssid, 2); ++ evif->ap_up = false; ++ } ++ } ++ } else { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "%s op mode unspecified\n", __func__); ++ } ++} ++ ++ ++static u64 esp_op_prepare_multicast(struct ieee80211_hw *hw, ++ struct netdev_hw_addr_list *mc_list) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ return 0; ++} ++ ++static void esp_op_configure_filter(struct ieee80211_hw *hw, ++ unsigned int changed_flags, ++ unsigned int *total_flags, ++ u64 multicast) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ epub->rx_filter = 0; ++ ++ if (*total_flags & FIF_ALLMULTI) ++ epub->rx_filter |= FIF_ALLMULTI; ++ ++ *total_flags = epub->rx_filter; ++} ++ ++static int esp_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, ++ struct ieee80211_vif *vif, ++ struct ieee80211_sta *sta, ++ struct ieee80211_key_conf *key) ++{ ++ u8 i; ++ int ret; ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ u8 ifidx = evif->index; ++ u8 *peer_addr, isvalid; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ "%s enter, flags = %x keyindx = %x cmd = %x mac = %pM cipher = %x\n", ++ __func__, key->flags, key->keyidx, cmd, ++ vif->addr, key->cipher); ++ ++ key->flags = key->flags | IEEE80211_KEY_FLAG_GENERATE_IV; ++ ++ if (sta) { ++ if (memcmp(sta->addr, epub->wl.bssid, ETH_ALEN)) ++ peer_addr = sta->addr; ++ else ++ peer_addr = epub->wl.bssid; ++ } else { ++ peer_addr = epub->wl.bssid; ++ } ++ isvalid = (cmd == SET_KEY) ? 1 : 0; ++ ++ if ((key->flags & IEEE80211_KEY_FLAG_PAIRWISE) ++ || (key->cipher == WLAN_CIPHER_SUITE_WEP40 ++ || key->cipher == WLAN_CIPHER_SUITE_WEP104)) { ++ if (isvalid) { ++ for (i = 0; i < 19; i++) { ++ if (epub->hi_map[i].flag == 0) { ++ epub->hi_map[i].flag = 1; ++ key->hw_key_idx = i + 6; ++ memcpy(epub->hi_map[i].mac, ++ peer_addr, ETH_ALEN); ++ break; ++ } ++ } ++ } else { ++ u8 index = key->hw_key_idx - 6; ++ epub->hi_map[index].flag = 0; ++ memset(epub->hi_map[index].mac, 0, ETH_ALEN); ++ } ++ } else { ++ if (isvalid) { ++ for (i = 0; i < 2; i++) ++ if (epub->low_map[ifidx][i].flag == 0) { ++ epub->low_map[ifidx][i].flag = 1; ++ key->hw_key_idx = ++ i + ifidx * 2 + 2; ++ memcpy(epub->low_map[ifidx][i].mac, ++ peer_addr, ETH_ALEN); ++ break; ++ } ++ } else { ++ u8 index = key->hw_key_idx - 2 - ifidx * 2; ++ epub->low_map[ifidx][index].flag = 0; ++ memset(epub->low_map[ifidx][index].mac, 0, ++ ETH_ALEN); ++ } ++ //key->hw_key_idx = key->keyidx + ifidx * 2 + 1; ++ } ++ ++ if (key->hw_key_idx >= 6) { ++ /*send sub_scan task to target */ ++ //epub->wl.ptk = (cmd==SET_KEY) ? key : NULL; ++ if (isvalid) ++ atomic_inc(&epub->wl.ptk_cnt); ++ else ++ atomic_dec(&epub->wl.ptk_cnt); ++ if (key->cipher == WLAN_CIPHER_SUITE_WEP40 ++ || key->cipher == WLAN_CIPHER_SUITE_WEP104) { ++ if (isvalid) ++ atomic_inc(&epub->wl.gtk_cnt); ++ else ++ atomic_dec(&epub->wl.gtk_cnt); ++ } ++ } else { ++ /*send sub_scan task to target */ ++ if (isvalid) ++ atomic_inc(&epub->wl.gtk_cnt); ++ else ++ atomic_dec(&epub->wl.gtk_cnt); ++ ++ if ((key->cipher == WLAN_CIPHER_SUITE_WEP40 ++ || key->cipher == WLAN_CIPHER_SUITE_WEP104)) { ++ if (isvalid) ++ atomic_inc(&epub->wl.ptk_cnt); ++ else ++ atomic_dec(&epub->wl.ptk_cnt); ++ //epub->wl.ptk = (cmd==SET_KEY) ? key : NULL; ++ } ++ } ++ ++ ret = sip_send_setkey(epub, ifidx, peer_addr, key, isvalid); ++ ++ if ((key->cipher == WLAN_CIPHER_SUITE_TKIP ++ || key->cipher == WLAN_CIPHER_SUITE_TKIP)) { ++ if (ret == 0) ++ atomic_set(&epub->wl.tkip_key_set, 1); ++ } ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s exit\n", __func__); ++ return ret; ++} ++ ++static void esp_op_update_tkip_key(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_key_conf *conf, ++ struct ieee80211_sta *sta, ++ u32 iv32, u16 * phase1key) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++} ++ ++void hw_scan_done(struct esp_pub *epub, bool aborted) ++{ ++ cancel_delayed_work_sync(&epub->scan_timeout_work); ++ ++ ESSERT(epub->wl.scan_req != NULL); ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)) ++ { ++ struct cfg80211_scan_info info = { ++ .aborted = aborted, ++ }; ++ ++ ieee80211_scan_completed(epub->hw, &info); ++ } ++#else ++ ieee80211_scan_completed(epub->hw, aborted); ++#endif ++ if (test_and_clear_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags)) { ++ sip_trigger_txq_process(epub->sip); ++ } ++} ++ ++static void hw_scan_timeout_report(struct work_struct *work) ++{ ++ struct esp_pub *epub = ++ container_of(work, struct esp_pub, scan_timeout_work.work); ++ bool aborted; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "eagle hw scan done\n"); ++ ++ if (test_and_clear_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags)) { ++ sip_trigger_txq_process(epub->sip); ++ } ++ /*check if normally complete or aborted like timeout/hw error */ ++ aborted = (epub->wl.scan_req) ? true : false; ++ ++ if (aborted == true) { ++ epub->wl.scan_req = NULL; ++ } ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)) ++ { ++ struct cfg80211_scan_info info = { ++ .aborted = aborted, ++ }; ++ ++ ieee80211_scan_completed(epub->hw, &info); ++ } ++#else ++ ieee80211_scan_completed(epub->hw, aborted); ++#endif ++} ++ ++static int esp_op_set_rts_threshold(struct ieee80211_hw *hw, u32 value) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ return 0; ++} ++ ++static int esp_node_attach(struct ieee80211_hw *hw, u8 ifidx, ++ struct ieee80211_sta *sta) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_node *node; ++ u8 tidno; ++ struct esp_tx_tid *tid; ++ int i; ++ ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ ++ if (hweight32(epub->enodes_maps[ifidx]) < ESP_PUB_MAX_STA ++ && (i = ffz(epub->enodes_map)) < ESP_PUB_MAX_STA + 1) { ++ epub->enodes_map |= (1 << i); ++ epub->enodes_maps[ifidx] |= (1 << i); ++ node = (struct esp_node *) sta->drv_priv; ++ epub->enodes[i] = node; ++ node->sta = sta; ++ node->ifidx = ifidx; ++ node->index = i; ++ ++ for (tidno = 0, tid = &node->tid[tidno]; ++ tidno < WME_NUM_TID; tidno++) { ++ tid->ssn = 0; ++ tid->cnt = 0; ++ tid->state = ESP_TID_STATE_INIT; ++ } ++ ++ ++ } else { ++ i = -1; ++ } ++ ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return i; ++} ++ ++static int esp_node_detach(struct ieee80211_hw *hw, u8 ifidx, ++ struct ieee80211_sta *sta) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ u32 map; ++ int i; ++ struct esp_node *node = NULL; ++ ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ map = epub->enodes_maps[ifidx]; ++ while (map != 0) { ++ i = ffs(map) - 1; ++ if (epub->enodes[i]->sta == sta) { ++ epub->enodes[i]->sta = NULL; ++ node = epub->enodes[i]; ++ epub->enodes[i] = NULL; ++ epub->enodes_map &= ~(1 << i); ++ epub->enodes_maps[ifidx] &= ~(1 << i); ++ ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return i; ++ } ++ map &= ~(1 << i); ++ } ++ ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return -1; ++} ++ ++struct esp_node *esp_get_node_by_addr(struct esp_pub *epub, ++ const u8 * addr) ++{ ++ int i; ++ u32 map; ++ struct esp_node *node = NULL; ++ if (addr == NULL) ++ return NULL; ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ map = epub->enodes_map; ++ while (map != 0) { ++ i = ffs(map) - 1; ++ if (i < 0) { ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return NULL; ++ } ++ map &= ~(1 << i); ++ if (memcmp(epub->enodes[i]->sta->addr, addr, ETH_ALEN) == ++ 0) { ++ node = epub->enodes[i]; ++ break; ++ } ++ } ++ ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return node; ++} ++ ++struct esp_node *esp_get_node_by_index(struct esp_pub *epub, u8 index) ++{ ++ u32 map; ++ struct esp_node *node = NULL; ++ ++ if (epub == NULL) ++ return NULL; ++ ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ map = epub->enodes_map; ++ if (map & BIT(index)) { ++ node = epub->enodes[index]; ++ } else { ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return NULL; ++ } ++ ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return node; ++} ++ ++int esp_get_empty_rxampdu(struct esp_pub *epub, const u8 * addr, u8 tid) ++{ ++ int index = -1; ++ if (addr == NULL) ++ return index; ++ spin_lock_bh(&epub->rx_ampdu_lock); ++ if ((index = ffz(epub->rxampdu_map)) < ESP_PUB_MAX_RXAMPDU) { ++ epub->rxampdu_map |= BIT(index); ++ epub->rxampdu_node[index] = ++ esp_get_node_by_addr(epub, addr); ++ epub->rxampdu_tid[index] = tid; ++ } else { ++ index = -1; ++ } ++ spin_unlock_bh(&epub->rx_ampdu_lock); ++ return index; ++} ++ ++int esp_get_exist_rxampdu(struct esp_pub *epub, const u8 * addr, u8 tid) ++{ ++ u8 map; ++ int index = -1; ++ int i; ++ if (addr == NULL) ++ return index; ++ spin_lock_bh(&epub->rx_ampdu_lock); ++ map = epub->rxampdu_map; ++ while (map != 0) { ++ i = ffs(map) - 1; ++ if (i < 0) { ++ spin_unlock_bh(&epub->rx_ampdu_lock); ++ return index; ++ } ++ map &= ~BIT(i); ++ if (epub->rxampdu_tid[i] == tid && ++ memcmp(epub->rxampdu_node[i]->sta->addr, addr, ++ ETH_ALEN) == 0) { ++ index = i; ++ break; ++ } ++ } ++ ++ epub->rxampdu_map &= ~BIT(index); ++ spin_unlock_bh(&epub->rx_ampdu_lock); ++ return index; ++ ++} ++ ++static int esp_op_sta_add(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_sta *sta) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ int index; ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ "%s enter, vif addr %pM, sta addr %pM\n", ++ __func__, vif->addr, sta->addr); ++ index = esp_node_attach(hw, evif->index, sta); ++ ++ if (index < 0) ++ return -1; ++ sip_send_set_sta(epub, evif->index, 1, sta, vif, (u8) index); ++ return 0; ++} ++ ++static int esp_op_sta_remove(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_sta *sta) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_vif *evif = (struct esp_vif *) vif->drv_priv; ++ int index; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ "%s enter, vif addr %pM, sta addr %pM\n", ++ __func__, vif->addr, sta->addr); ++ ++ //remove a connect in target ++ index = esp_node_detach(hw, evif->index, sta); ++ sip_send_set_sta(epub, evif->index, 0, sta, vif, (u8) index); ++ ++ return 0; ++} ++ ++ ++static void esp_op_sta_notify(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ enum sta_notify_cmd cmd, ++ struct ieee80211_sta *sta) ++{ ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ switch (cmd) { ++ case STA_NOTIFY_SLEEP: ++ break; ++ ++ case STA_NOTIFY_AWAKE: ++ break; ++ ++ default: ++ break; ++ } ++} ++ ++ ++static int esp_op_conf_tx(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ u32 link_id, u16 queue, ++ const struct ieee80211_tx_queue_params *params) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ return sip_send_wmm_params(epub, queue, params); ++} ++ ++static u64 esp_op_get_tsf(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ return 0; ++} ++ ++static void esp_op_set_tsf(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, u64 tsf) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++} ++ ++static void esp_op_reset_tsf(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++} ++ ++static void esp_op_rfkill_poll(struct ieee80211_hw *hw) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter \n", __func__); ++ ++ wiphy_rfkill_set_hw_state(hw->wiphy, ++ test_bit(ESP_WL_FLAG_RFKILL, ++ &epub->wl. ++ flags) ? true : false); ++} ++ ++#ifdef HW_SCAN ++static int esp_op_hw_scan(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct cfg80211_scan_request *req) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ int i, ret; ++ bool scan_often = true; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s\n", __func__); ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan, %d\n", req->n_ssids); ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "scan, len 1:%d,ssid 1:%s\n", ++ req->ssids->ssid_len, ++ req->ssids->ssid_len == ++ 0 ? "" : (char *) req->ssids->ssid); ++ if (req->n_ssids > 1) ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "scan, len 2:%d,ssid 2:%s\n", ++ (req->ssids + 1)->ssid_len, ++ (req->ssids + 1)->ssid_len == ++ 0 ? "" : (char *) (req->ssids + ++ 1)->ssid); ++ ++ /*scan_request is keep allocate untill scan_done,record it ++ to split request into multi sdio_cmd */ ++ if (atomic_read(&epub->wl.off)) { ++ esp_dbg(ESP_DBG_ERROR, "%s scan but wl off \n", __func__); ++ return -EPERM; ++ } ++ ++ if (req->n_ssids > 1) { ++ struct cfg80211_ssid *ssid2 = req->ssids + 1; ++ if ((req->ssids->ssid_len > 0 && ssid2->ssid_len > 0) ++ || req->n_ssids > 2) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "scan ssid num: %d, ssid1:%s, ssid2:%s,not support\n", ++ req->n_ssids, ++ req->ssids->ssid_len == ++ 0 ? "" : (char *) req->ssids-> ++ ssid, ++ ssid2->ssid_len == ++ 0 ? "" : (char *) ssid2->ssid); ++ return -EINVAL; ++ } ++ } ++ ++ epub->wl.scan_req = req; ++ ++ for (i = 0; i < req->n_channels; i++) ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "eagle hw_scan freq %d\n", ++ req->channels[i]->center_freq); ++#if 0 ++ for (i = 0; i < req->n_ssids; i++) { ++ if (req->ssids->ssid_len > 0) { ++ req->ssids->ssid[req->ssids->ssid_len] = '\0'; ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "scan_ssid %d:%s\n", i, ++ req->ssids->ssid); ++ } ++ } ++#endif ++ ++ /*in connect state, suspend tx data */ ++ if (epub->sip->support_bgscan && ++ test_bit(ESP_WL_FLAG_CONNECT, &epub->wl.flags) && ++ req->n_channels > 0) { ++ ++ scan_often = epub->scan_permit_valid ++ && time_before(jiffies, epub->scan_permit); ++ epub->scan_permit_valid = true; ++ ++ if (!scan_often) { ++/* epub->scan_permit = jiffies + msecs_to_jiffies(900); ++ set_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags); ++ if (atomic_read(&epub->txq_stopped) == false) { ++ atomic_set(&epub->txq_stopped, true); ++ ieee80211_stop_queues(hw); ++ } ++*/ ++ } else { ++ ESP_IEEE80211_DBG(ESP_DBG_LOG, "scan too often\n"); ++ return -EACCES; ++ } ++ } else { ++ scan_often = false; ++ } ++ ++ /*send sub_scan task to target */ ++ ret = sip_send_scan(epub); ++ ++ if (ret) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "fail to send scan_cmd\n"); ++ return ret; ++ } else { ++ if (!scan_often) { ++ epub->scan_permit = ++ jiffies + msecs_to_jiffies(900); ++ set_bit(ESP_WL_FLAG_STOP_TXQ, &epub->wl.flags); ++ if (atomic_read(&epub->txq_stopped) == false) { ++ atomic_set(&epub->txq_stopped, true); ++ ieee80211_stop_queues(hw); ++ } ++ /*force scan complete in case target fail to report in time */ ++ ieee80211_queue_delayed_work(hw, ++ &epub-> ++ scan_timeout_work, ++ req->n_channels * HZ / ++ 4); ++ } ++ } ++ ++ return 0; ++} ++ ++static int esp_op_remain_on_channel(struct ieee80211_hw *hw, ++ struct ieee80211_channel *chan, ++ enum nl80211_channel_type channel_type, ++ int duration) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, ++ "%s enter, center_freq = %d duration = %d\n", ++ __func__, chan->center_freq, duration); ++ sip_send_roc(epub, chan->center_freq, duration); ++ return 0; ++} ++ ++static int esp_op_cancel_remain_on_channel(struct ieee80211_hw *hw) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__); ++ epub->roc_flags = 0; // to disable roc state ++ sip_send_roc(epub, 0, 0); ++ return 0; ++} ++#endif ++ ++void esp_rocdone_process(struct ieee80211_hw *hw, ++ struct sip_evt_roc *report) ++{ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter, state = %d is_ok = %d\n", ++ __func__, report->state, report->is_ok); ++ ++ //roc process begin ++ if ((report->state == 1) && (report->is_ok == 1)) { ++ epub->roc_flags = 1; //flags in roc state, to fix channel, not change ++ ieee80211_ready_on_channel(hw); ++ } else if ((report->state == 0) && (report->is_ok == 1)) //roc process timeout ++ { ++ epub->roc_flags = 0; // to disable roc state ++ ieee80211_remain_on_channel_expired(hw); ++ } ++} ++ ++static int esp_op_set_bitrate_mask(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ const struct cfg80211_bitrate_mask ++ *mask) ++{ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__); ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s vif->macaddr[%pM], mask[%d]\n", ++ __func__, vif->addr, mask->control[0].legacy); ++ ++ return 0; ++} ++ ++void esp_op_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, ++ u32 queues, bool drop) ++{ ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__); ++ do { ++ ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ unsigned long time = jiffies + msecs_to_jiffies(15); ++ while (atomic_read(&epub->sip->tx_data_pkt_queued)) { ++ if (!time_before(jiffies, time)) { ++ break; ++ } ++ if (sif_get_ate_config() == 0) { ++ ieee80211_queue_work(epub->hw, ++ &epub->tx_work); ++ } else { ++ queue_work(epub->esp_wkq, &epub->tx_work); ++ } ++ //sip_txq_process(epub); ++ } ++ mdelay(10); ++ ++ } while (0); ++} ++ ++static int esp_op_ampdu_action(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_ampdu_params *params) ++{ ++ int ret = -EOPNOTSUPP; ++ enum ieee80211_ampdu_mlme_action action = params->action; ++ struct ieee80211_sta *sta = params->sta; ++ u16 tid = params->tid; ++ u16 *ssn = ¶ms->ssn; ++ u8 buf_size = params->buf_size; ++ struct esp_pub *epub = (struct esp_pub *) hw->priv; ++ struct esp_node *node = (struct esp_node *) sta->drv_priv; ++ struct esp_tx_tid *tid_info = &node->tid[tid]; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter \n", __func__); ++ switch (action) { ++ case IEEE80211_AMPDU_TX_START: ++ if (mod_support_no_txampdu() || ++ cfg80211_get_chandef_type(&epub->hw->conf.chandef) == ++ NL80211_CHAN_NO_HT || !sta->deflink.ht_cap.ht_supported) ++ return ret; ++ ++ //if (vif->p2p || vif->type != NL80211_IFTYPE_STATION) ++ // return ret; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "%s TX START, addr:%pM,tid:%u,state:%d\n", ++ __func__, sta->addr, tid, ++ tid_info->state); ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ ESSERT(tid_info->state == ESP_TID_STATE_TRIGGER); ++ *ssn = tid_info->ssn; ++ tid_info->state = ESP_TID_STATE_PROGRESS; ++ ++ ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ ret = 0; ++ break; ++ case IEEE80211_AMPDU_TX_STOP_CONT: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "%s TX STOP, addr:%pM,tid:%u,state:%d\n", ++ __func__, sta->addr, tid, ++ tid_info->state); ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ if (tid_info->state == ESP_TID_STATE_WAIT_STOP) ++ tid_info->state = ESP_TID_STATE_STOP; ++ else ++ tid_info->state = ESP_TID_STATE_INIT; ++ ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid); ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ ret = ++ sip_send_ampdu_action(epub, SIP_AMPDU_TX_STOP, ++ sta->addr, tid, node->ifidx, 0); ++ break; ++ case IEEE80211_AMPDU_TX_STOP_FLUSH: ++ case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT: ++ if (tid_info->state == ESP_TID_STATE_WAIT_STOP) ++ tid_info->state = ESP_TID_STATE_STOP; ++ else ++ tid_info->state = ESP_TID_STATE_INIT; ++ ret = ++ sip_send_ampdu_action(epub, SIP_AMPDU_TX_STOP, ++ sta->addr, tid, node->ifidx, 0); ++ break; ++ case IEEE80211_AMPDU_TX_OPERATIONAL: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "%s TX OPERATION, addr:%pM,tid:%u,state:%d\n", ++ __func__, sta->addr, tid, ++ tid_info->state); ++ spin_lock_bh(&epub->tx_ampdu_lock); ++ ++ if (tid_info->state != ESP_TID_STATE_PROGRESS) { ++ if (tid_info->state == ESP_TID_STATE_INIT) { ++ printk(KERN_ERR "%s WIFI RESET, IGNORE\n", ++ __func__); ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ return -ENETRESET; ++ } else { ++ ESSERT(0); ++ } ++ } ++ ++ tid_info->state = ESP_TID_STATE_OPERATIONAL; ++ spin_unlock_bh(&epub->tx_ampdu_lock); ++ ret = ++ sip_send_ampdu_action(epub, SIP_AMPDU_TX_OPERATIONAL, ++ sta->addr, tid, node->ifidx, ++ buf_size); ++ break; ++ case IEEE80211_AMPDU_RX_START: ++ if (mod_support_no_rxampdu() || ++ cfg80211_get_chandef_type(&epub->hw->conf.chandef) == ++ NL80211_CHAN_NO_HT || !sta->deflink.ht_cap.ht_supported) ++ return ret; ++ ++ if ((vif->p2p && false) ++ || (vif->type != NL80211_IFTYPE_STATION && false) ++ ) ++ return ret; ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, ++ "%s RX START %pM tid %u %u\n", __func__, ++ sta->addr, tid, *ssn); ++ ret = ++ sip_send_ampdu_action(epub, SIP_AMPDU_RX_START, ++ sta->addr, tid, *ssn, 64); ++ break; ++ case IEEE80211_AMPDU_RX_STOP: ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s RX STOP %pM tid %u\n", ++ __func__, sta->addr, tid); ++ ret = ++ sip_send_ampdu_action(epub, SIP_AMPDU_RX_STOP, ++ sta->addr, tid, 0, 0); ++ break; ++ default: ++ break; ++ } ++ return ret; ++} ++ ++static void esp_tx_work(struct work_struct *work) ++{ ++ struct esp_pub *epub = container_of(work, struct esp_pub, tx_work); ++ ++ mutex_lock(&epub->tx_mtx); ++ sip_txq_process(epub); ++ mutex_unlock(&epub->tx_mtx); ++} ++ ++static const struct ieee80211_ops esp_mac80211_ops = { ++ .tx = esp_op_tx, ++ .start = esp_op_start, ++ .stop = esp_op_stop, ++#ifdef CONFIG_PM ++ .suspend = esp_op_suspend, ++ .resume = esp_op_resume, ++#endif ++ .add_interface = esp_op_add_interface, ++ .remove_interface = esp_op_remove_interface, ++ .config = esp_op_config, ++ ++ .bss_info_changed = esp_op_bss_info_changed, ++ .prepare_multicast = esp_op_prepare_multicast, ++ .configure_filter = esp_op_configure_filter, ++ .set_key = esp_op_set_key, ++ .update_tkip_key = esp_op_update_tkip_key, ++ //.sched_scan_start = esp_op_sched_scan_start, ++ //.sched_scan_stop = esp_op_sched_scan_stop, ++ .set_rts_threshold = esp_op_set_rts_threshold, ++ .sta_notify = esp_op_sta_notify, ++ .conf_tx = esp_op_conf_tx, ++ .change_interface = esp_op_change_interface, ++ .get_tsf = esp_op_get_tsf, ++ .set_tsf = esp_op_set_tsf, ++ .reset_tsf = esp_op_reset_tsf, ++ .rfkill_poll = esp_op_rfkill_poll, ++#ifdef HW_SCAN ++ .hw_scan = esp_op_hw_scan, ++ .remain_on_channel = esp_op_remain_on_channel, ++ .cancel_remain_on_channel = esp_op_cancel_remain_on_channel, ++#endif ++ .ampdu_action = esp_op_ampdu_action, ++ //.get_survey = esp_op_get_survey, ++ .sta_add = esp_op_sta_add, ++ .sta_remove = esp_op_sta_remove, ++#ifdef CONFIG_NL80211_TESTMODE ++ //CFG80211_TESTMODE_CMD(esp_op_tm_cmd) ++#endif ++ .set_bitrate_mask = esp_op_set_bitrate_mask, ++ .flush = esp_op_flush, ++}; ++ ++struct esp_pub *esp_pub_alloc_mac80211(struct device *dev) ++{ ++ struct ieee80211_hw *hw; ++ struct esp_pub *epub; ++ int ret = 0; ++ ++ hw = ieee80211_alloc_hw(sizeof(struct esp_pub), &esp_mac80211_ops); ++ ++ if (hw == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "ieee80211 can't alloc hw!\n"); ++ ret = -ENOMEM; ++ return ERR_PTR(ret); ++ } ++ hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; ++ ++ epub = hw->priv; ++ memset(epub, 0, sizeof(*epub)); ++ epub->hw = hw; ++ SET_IEEE80211_DEV(hw, dev); ++ epub->dev = dev; ++ ++ skb_queue_head_init(&epub->txq); ++ skb_queue_head_init(&epub->txdoneq); ++ skb_queue_head_init(&epub->rxq); ++ ++ spin_lock_init(&epub->tx_ampdu_lock); ++ spin_lock_init(&epub->rx_ampdu_lock); ++ spin_lock_init(&epub->tx_lock); ++ mutex_init(&epub->tx_mtx); ++ spin_lock_init(&epub->rx_lock); ++ ++ INIT_WORK(&epub->tx_work, esp_tx_work); ++ ++ //epub->esp_wkq = create_freezable_workqueue("esp_wkq"); ++ epub->esp_wkq = create_singlethread_workqueue("esp_wkq"); ++ ++ if (epub->esp_wkq == NULL) { ++ ret = -ENOMEM; ++ return ERR_PTR(ret); ++ } ++ epub->scan_permit_valid = false; ++ INIT_DELAYED_WORK(&epub->scan_timeout_work, ++ hw_scan_timeout_report); ++ ++ return epub; ++} ++ ++ ++int esp_pub_dealloc_mac80211(struct esp_pub *epub) ++{ ++ set_bit(ESP_WL_FLAG_RFKILL, &epub->wl.flags); ++ ++ destroy_workqueue(epub->esp_wkq); ++ mutex_destroy(&epub->tx_mtx); ++ ++#ifdef ESP_NO_MAC80211 ++ free_netdev(epub->net_dev); ++ wiphy_free(epub->wdev->wiphy); ++ kfree(epub->wdev); ++#else ++ if (epub->hw) { ++ ieee80211_free_hw(epub->hw); ++ } ++#endif ++ ++ return 0; ++} ++ ++#if 0 ++static int esp_reg_notifier(struct wiphy *wiphy, ++ struct regulatory_request *request) ++{ ++ struct ieee80211_supported_band *sband; ++ struct ieee80211_channel *ch; ++ int i; ++ ++ ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter %d\n", __func__, ++ request->initiator); ++ ++ //TBD ++} ++#endif ++ ++/* 2G band channels */ ++static struct ieee80211_channel esp_channels_2ghz[] = { ++ {.hw_value = 1,.center_freq = 2412,.max_power = 25}, ++ {.hw_value = 2,.center_freq = 2417,.max_power = 25}, ++ {.hw_value = 3,.center_freq = 2422,.max_power = 25}, ++ {.hw_value = 4,.center_freq = 2427,.max_power = 25}, ++ {.hw_value = 5,.center_freq = 2432,.max_power = 25}, ++ {.hw_value = 6,.center_freq = 2437,.max_power = 25}, ++ {.hw_value = 7,.center_freq = 2442,.max_power = 25}, ++ {.hw_value = 8,.center_freq = 2447,.max_power = 25}, ++ {.hw_value = 9,.center_freq = 2452,.max_power = 25}, ++ {.hw_value = 10,.center_freq = 2457,.max_power = 25}, ++ {.hw_value = 11,.center_freq = 2462,.max_power = 25}, ++ {.hw_value = 12,.center_freq = 2467,.max_power = 25}, ++ {.hw_value = 13,.center_freq = 2472,.max_power = 25}, ++ //{ .hw_value = 14, .center_freq = 2484, .max_power = 25 }, ++}; ++ ++/* 11G rate */ ++static struct ieee80211_rate esp_rates_2ghz[] = { ++ { ++ .bitrate = 10, ++ .hw_value = CONF_HW_BIT_RATE_1MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_1MBPS, ++ }, ++ { ++ .bitrate = 20, ++ .hw_value = CONF_HW_BIT_RATE_2MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_2MBPS, ++ .flags = IEEE80211_RATE_SHORT_PREAMBLE}, ++ { ++ .bitrate = 55, ++ .hw_value = CONF_HW_BIT_RATE_5_5MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_5_5MBPS, ++ .flags = IEEE80211_RATE_SHORT_PREAMBLE}, ++ { ++ .bitrate = 110, ++ .hw_value = CONF_HW_BIT_RATE_11MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_11MBPS, ++ .flags = IEEE80211_RATE_SHORT_PREAMBLE}, ++ { ++ .bitrate = 60, ++ .hw_value = CONF_HW_BIT_RATE_6MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_6MBPS, ++ }, ++ { ++ .bitrate = 90, ++ .hw_value = CONF_HW_BIT_RATE_9MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_9MBPS, ++ }, ++ { ++ .bitrate = 120, ++ .hw_value = CONF_HW_BIT_RATE_12MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_12MBPS, ++ }, ++ { ++ .bitrate = 180, ++ .hw_value = CONF_HW_BIT_RATE_18MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_18MBPS, ++ }, ++ { ++ .bitrate = 240, ++ .hw_value = CONF_HW_BIT_RATE_24MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_24MBPS, ++ }, ++ { ++ .bitrate = 360, ++ .hw_value = CONF_HW_BIT_RATE_36MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_36MBPS, ++ }, ++ { ++ .bitrate = 480, ++ .hw_value = CONF_HW_BIT_RATE_48MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_48MBPS, ++ }, ++ { ++ .bitrate = 540, ++ .hw_value = CONF_HW_BIT_RATE_54MBPS, ++ .hw_value_short = CONF_HW_BIT_RATE_54MBPS, ++ }, ++}; ++ ++static void esp_pub_init_mac80211(struct esp_pub *epub) ++{ ++ struct ieee80211_hw *hw = epub->hw; ++ ++ static const u32 cipher_suites[] = { ++ WLAN_CIPHER_SUITE_WEP40, ++ WLAN_CIPHER_SUITE_WEP104, ++ WLAN_CIPHER_SUITE_TKIP, ++ WLAN_CIPHER_SUITE_CCMP, ++ }; ++ ++ hw->max_listen_interval = 10; ++ ++ ieee80211_hw_set(hw, SIGNAL_DBM); ++ ieee80211_hw_set(hw, HAS_RATE_CONTROL); ++ ieee80211_hw_set(hw, SUPPORTS_PS); ++ ieee80211_hw_set(hw, AMPDU_AGGREGATION); ++ ieee80211_hw_set(hw, HOST_BROADCAST_PS_BUFFERING); ++ //IEEE80211_HW_PS_NULLFUNC_STACK | ++ //IEEE80211_HW_CONNECTION_MONITOR | ++ //IEEE80211_HW_BEACON_FILTER | ++ //IEEE80211_HW_AMPDU_AGGREGATION | ++ //IEEE80211_HW_REPORTS_TX_ACK_STATUS; ++ hw->max_rx_aggregation_subframes = 0x40; ++ hw->max_tx_aggregation_subframes = 0x40; ++ ++ hw->wiphy->cipher_suites = cipher_suites; ++ hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites); ++ hw->wiphy->max_scan_ie_len = ++ epub->sip->tx_blksz - sizeof(struct sip_hdr) - ++ sizeof(struct sip_cmd_scan); ++ ++ /* ONLY station for now, support P2P soon... */ ++ hw->wiphy->interface_modes = ++ BIT(NL80211_IFTYPE_P2P_GO) | ++ BIT(NL80211_IFTYPE_P2P_CLIENT) | ++ BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_AP); ++ ++ hw->wiphy->max_scan_ssids = 2; ++ //hw->wiphy->max_sched_scan_ssids = 16; ++ //hw->wiphy->max_match_sets = 16; ++ ++ hw->wiphy->max_remain_on_channel_duration = 5000; ++ ++ atomic_set(&epub->wl.off, 1); ++ ++ epub->wl.sbands[NL80211_BAND_2GHZ].band = NL80211_BAND_2GHZ; ++ epub->wl.sbands[NL80211_BAND_2GHZ].channels = esp_channels_2ghz; ++ epub->wl.sbands[NL80211_BAND_2GHZ].bitrates = esp_rates_2ghz; ++ epub->wl.sbands[NL80211_BAND_2GHZ].n_channels = ++ ARRAY_SIZE(esp_channels_2ghz); ++ epub->wl.sbands[NL80211_BAND_2GHZ].n_bitrates = ++ ARRAY_SIZE(esp_rates_2ghz); ++ /*add to support 11n */ ++ epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.ht_supported = true; ++ epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.cap = 0x116C; //IEEE80211_HT_CAP_RX_STBC; //IEEE80211_HT_CAP_SGI_20; ++ epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.ampdu_factor = ++ IEEE80211_HT_MAX_AMPDU_16K; ++ epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.ampdu_density = ++ IEEE80211_HT_MPDU_DENSITY_NONE; ++ memset(&epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.mcs, 0, ++ sizeof(epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.mcs)); ++ epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.mcs.rx_mask[0] = 0xff; ++ //epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.mcs.rx_highest = 7; ++ //epub->wl.sbands[NL80211_BAND_2GHZ].ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; ++ ++ /* BAND_5GHZ TBD */ ++ ++ hw->wiphy->bands[NL80211_BAND_2GHZ] = ++ &epub->wl.sbands[NL80211_BAND_2GHZ]; ++ /* BAND_5GHZ TBD */ ++ ++ /*no fragment */ ++ hw->wiphy->frag_threshold = IEEE80211_MAX_FRAG_THRESHOLD; ++ ++ /* handle AC queue in f/w */ ++ hw->queues = 4; ++ hw->max_rates = 4; ++ //hw->wiphy->reg_notifier = esp_reg_notify; ++ ++ hw->vif_data_size = sizeof(struct esp_vif); ++ hw->sta_data_size = sizeof(struct esp_node); ++ ++ //hw->max_rx_aggregation_subframes = 8; ++} ++ ++int esp_register_mac80211(struct esp_pub *epub) ++{ ++ int ret = 0; ++ u8 *wlan_addr; ++ u8 *p2p_addr; ++ int idx; ++ ++ esp_pub_init_mac80211(epub); ++ ++ epub->hw->wiphy->addresses = (struct mac_address *) esp_mac_addr; ++ memcpy(&epub->hw->wiphy->addresses[0], epub->mac_addr, ETH_ALEN); ++ memcpy(&epub->hw->wiphy->addresses[1], epub->mac_addr, ETH_ALEN); ++ wlan_addr = (u8 *) & epub->hw->wiphy->addresses[0]; ++ p2p_addr = (u8 *) & epub->hw->wiphy->addresses[1]; ++ ++ for (idx = 0; idx < 64; idx++) { ++ p2p_addr[0] = wlan_addr[0] | 0x02; ++ p2p_addr[0] ^= idx << 2; ++ if (strncmp(p2p_addr, wlan_addr, 6) != 0) ++ break; ++ } ++ ++ epub->hw->wiphy->n_addresses = 2; ++ ++ ret = ieee80211_register_hw(epub->hw); ++ ++ if (ret < 0) { ++ ESP_IEEE80211_DBG(ESP_DBG_ERROR, ++ "unable to register mac80211 hw: %d\n", ++ ret); ++ return ret; ++ } else { ++#ifdef MAC80211_NO_CHANGE ++ rtnl_lock(); ++ if (epub->hw->wiphy->interface_modes & ++ (BIT(NL80211_IFTYPE_P2P_GO) | ++ BIT(NL80211_IFTYPE_P2P_CLIENT))) { ++ ret = ++ ieee80211_if_add(hw_to_local(epub->hw), ++ "p2p%d", NULL, ++ NL80211_IFTYPE_STATION, NULL); ++ if (ret) ++ wiphy_warn(epub->hw->wiphy, ++ "Failed to add default virtual iface\n"); ++ } ++ ++ rtnl_unlock(); ++#endif ++ } ++ ++ set_bit(ESP_WL_FLAG_HW_REGISTERED, &epub->wl.flags); ++ ++ return ret; ++} ++ ++static u8 getaddr_index(u8 * addr, struct esp_pub *epub) ++{ ++ int i; ++ for (i = 0; i < ESP_PUB_MAX_VIF; i++) ++ if (memcmp ++ (addr, (u8 *) & epub->hw->wiphy->addresses[i], ++ ETH_ALEN) == 0) ++ return i; ++ return ESP_PUB_MAX_VIF; ++} +diff --git a/drivers/net/wireless/esp8089/esp_mac80211.h b/drivers/net/wireless/esp8089/esp_mac80211.h +new file mode 100644 +index 000000000000..699b27dcadd1 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_mac80211.h +@@ -0,0 +1,38 @@ ++/* ++ * Copyright (c) 2011-2014 Espressif System. ++ * ++ * MAC80211 support module ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#ifndef _ESP_MAC80211_H_ ++#define _ESP_MAC80211_H_ ++ ++struct esp_80211_wmm_ac_param { ++ u8 aci_aifsn; /* AIFSN, ACM, ACI */ ++ u8 cw; /* ECWmin, ECWmax (CW = 2^ECW - 1) */ ++ u16 txop_limit; ++}; ++ ++struct esp_80211_wmm_param_element { ++ /* Element ID: 221 (0xdd); length: 24 */ ++ /* required fields for WMM version 1 */ ++ u8 oui[3]; /* 00:50:f2 */ ++ u8 oui_type; /* 2 */ ++ u8 oui_subtype; /* 1 */ ++ u8 version; /* 1 for WMM version 1.0 */ ++ u8 qos_info; /* AP/STA specif QoS info */ ++ u8 reserved; /* 0 */ ++ struct esp_80211_wmm_ac_param ac[4]; /* AC_BE, AC_BK, AC_VI, AC_VO */ ++}; ++ ++ ++#endif /* _ESP_MAC80211_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_main.c b/drivers/net/wireless/esp8089/esp_main.c +new file mode 100644 +index 000000000000..404e0d7a6f54 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_main.c +@@ -0,0 +1,263 @@ ++/* ++ * Copyright (c) 2010 - 2014 Espressif System. ++ * ++ * main routine ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_pub.h" ++#include "esp_sip.h" ++#include "esp_sif.h" ++#include "esp_debug.h" ++#include "esp_file.h" ++#include "esp_wl.h" ++ ++struct completion *gl_bootup_cplx = NULL; ++ ++#ifndef FPGA_DEBUG ++static int esp_download_fw(struct esp_pub *epub); ++#endif /* !FGPA_DEBUG */ ++ ++static int modparam_no_txampdu = 0; ++static int modparam_no_rxampdu = 0; ++module_param_named(no_txampdu, modparam_no_txampdu, int, 0444); ++MODULE_PARM_DESC(no_txampdu, "Disable tx ampdu."); ++module_param_named(no_rxampdu, modparam_no_rxampdu, int, 0444); ++MODULE_PARM_DESC(no_rxampdu, "Disable rx ampdu."); ++ ++static char *modparam_eagle_path = "/lib/firmware"; ++module_param_named(eagle_path, modparam_eagle_path, charp, 0444); ++MODULE_PARM_DESC(eagle_path, "eagle path"); ++ ++bool mod_support_no_txampdu() ++{ ++ return modparam_no_txampdu; ++} ++ ++bool mod_support_no_rxampdu() ++{ ++ return modparam_no_rxampdu; ++} ++ ++void mod_support_no_txampdu_set(bool value) ++{ ++ modparam_no_txampdu = value; ++} ++ ++char *mod_eagle_path_get(void) ++{ ++ if (modparam_eagle_path[0] == '\0') ++ return NULL; ++ ++ return modparam_eagle_path; ++} ++ ++int esp_pub_init_all(struct esp_pub *epub) ++{ ++ int ret = 0; ++ ++ /* completion for bootup event poll */ ++ DECLARE_COMPLETION_ONSTACK(complete); ++ atomic_set(&epub->ps.state, ESP_PM_OFF); ++ if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { ++ epub->sip = sip_attach(epub); ++ if (epub->sip == NULL) { ++ printk(KERN_ERR "%s sip alloc failed\n", __func__); ++ return -ENOMEM; ++ } ++ ++ esp_dump_var("esp_msg_level", NULL, &esp_msg_level, ++ ESP_U32); ++ ++#ifdef ESP_ANDROID_LOGGER ++ esp_dump_var("log_off", NULL, &log_off, ESP_U32); ++#endif /* ESP_ANDROID_LOGGER */ ++ } else { ++ atomic_set(&epub->sip->state, SIP_PREPARE_BOOT); ++ atomic_set(&epub->sip->tx_credits, 0); ++ } ++ ++ epub->sip->to_host_seq = 0; ++ ++#ifdef TEST_MODE ++ if (sif_get_ate_config() != 0 && sif_get_ate_config() != 1 ++ && sif_get_ate_config() != 6) { ++ esp_test_init(epub); ++ return -1; ++ } ++#endif ++ ++#ifndef FPGA_DEBUG ++ ret = esp_download_fw(epub); ++#ifdef TEST_MODE ++ if (sif_get_ate_config() == 6) { ++ sif_enable_irq(epub); ++ mdelay(500); ++ sif_disable_irq(epub); ++ mdelay(1000); ++ esp_test_init(epub); ++ return -1; ++ } ++#endif ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, "download firmware failed\n"); ++ return ret; ++ } ++ ++ esp_dbg(ESP_DBG_TRACE, "download firmware OK \n"); ++#else ++ sip_send_bootup(epub->sip); ++#endif /* FPGA_DEBUG */ ++ ++ gl_bootup_cplx = &complete; ++ epub->wait_reset = 0; ++ sif_enable_irq(epub); ++ ++ if (epub->sdio_state == ESP_SDIO_STATE_SECOND_INIT ++ || sif_get_ate_config() == 1) { ++ ret = sip_poll_bootup_event(epub->sip); ++ } else { ++ ret = sip_poll_resetting_event(epub->sip); ++ if (ret == 0) { ++ sif_lock_bus(epub); ++ sif_interrupt_target(epub, 7); ++ sif_unlock_bus(epub); ++ } ++ ++ } ++ ++ gl_bootup_cplx = NULL; ++ ++ if (sif_get_ate_config() == 1) ++ ret = -EOPNOTSUPP; ++ ++ return ret; ++} ++ ++void esp_dsr(struct esp_pub *epub) ++{ ++ sip_rx(epub); ++} ++ ++ ++struct esp_fw_hdr { ++ u8 magic; ++ u8 blocks; ++ u8 pad[2]; ++ u32 entry_addr; ++} __packed; ++ ++struct esp_fw_blk_hdr { ++ u32 load_addr; ++ u32 data_len; ++} __packed; ++ ++#define ESP_FW_NAME1 "eagle_fw_ate_config_v19.bin" ++#define ESP_FW_NAME2 "eagle_fw_first_init_v19.bin" ++#define ESP_FW_NAME3 "eagle_fw_second_init_v19.bin" ++ ++#ifndef FPGA_DEBUG ++static int esp_download_fw(struct esp_pub *epub) ++{ ++ const struct firmware *fw_entry; ++ u8 *fw_buf = NULL; ++ u32 offset = 0; ++ int ret = 0; ++ u8 blocks; ++ struct esp_fw_hdr *fhdr; ++ struct esp_fw_blk_hdr *bhdr = NULL; ++ struct sip_cmd_bootup bootcmd; ++ char *esp_fw_name; ++ ++ if (sif_get_ate_config() == 1) { ++ esp_fw_name = ESP_FW_NAME3; ++ } else { ++ esp_fw_name = ++ epub->sdio_state == ++ ESP_SDIO_STATE_FIRST_INIT ? ESP_FW_NAME1 : ++ ESP_FW_NAME2; ++ } ++ ret = request_firmware(&fw_entry, esp_fw_name, epub->dev); ++ ++ if (ret) ++ return ret; ++ ++ fw_buf = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL); ++ ++ release_firmware(fw_entry); ++ ++ if (fw_buf == NULL) { ++ return -ENOMEM; ++ } ++ ++ fhdr = (struct esp_fw_hdr *) fw_buf; ++ ++ if (fhdr->magic != 0xE9) { ++ esp_dbg(ESP_DBG_ERROR, "%s wrong magic! \n", __func__); ++ goto _err; ++ } ++ ++ blocks = fhdr->blocks; ++ offset += sizeof(struct esp_fw_hdr); ++ ++ while (blocks) { ++ ++ bhdr = (struct esp_fw_blk_hdr *) (&fw_buf[offset]); ++ offset += sizeof(struct esp_fw_blk_hdr); ++ ++ ret = ++ sip_write_memory(epub->sip, bhdr->load_addr, ++ &fw_buf[offset], bhdr->data_len); ++ ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, ++ "%s Failed to write fw, err: %d\n", ++ __func__, ret); ++ goto _err; ++ } ++ ++ blocks--; ++ offset += bhdr->data_len; ++ } ++ ++ /* TODO: last byte should be the checksum and skip checksum for now */ ++ ++ bootcmd.boot_addr = fhdr->entry_addr; ++ ret = ++ sip_send_cmd(epub->sip, SIP_CMD_BOOTUP, ++ sizeof(struct sip_cmd_bootup), &bootcmd); ++ ++ if (ret) ++ goto _err; ++ ++ _err: ++ kfree(fw_buf); ++ ++ return ret; ++ ++} ++ ++MODULE_FIRMWARE(ESP_FW_NAME1); ++MODULE_FIRMWARE(ESP_FW_NAME2); ++MODULE_FIRMWARE(ESP_FW_NAME3); ++#endif /* !FPGA_DEBUG */ +diff --git a/drivers/net/wireless/esp8089/esp_path.h b/drivers/net/wireless/esp8089/esp_path.h +new file mode 100644 +index 000000000000..1ceb14bc3b15 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_path.h +@@ -0,0 +1,6 @@ ++#ifndef _ESP_PATH_H_ ++#define _ESP_PATH_H_ ++#define FWPATH "/lib/firmware" ++//module_param_string(fwpath, fwpath, sizeof(fwpath), 0644); ++ ++#endif /* _ESP_PATH_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_pub.h b/drivers/net/wireless/esp8089/esp_pub.h +new file mode 100644 +index 000000000000..0d3ad3655cf4 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_pub.h +@@ -0,0 +1,222 @@ ++/* ++ * Copyright (c) 2011-2014 Espressif System. ++ * ++ * wlan device header file ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_PUB_H_ ++#define _ESP_PUB_H_ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include "sip2_common.h" ++ ++enum esp_sdio_state { ++ ESP_SDIO_STATE_FIRST_INIT, ++ ESP_SDIO_STATE_FIRST_NORMAL_EXIT, ++ ESP_SDIO_STATE_FIRST_ERROR_EXIT, ++ ESP_SDIO_STATE_SECOND_INIT, ++ ESP_SDIO_STATE_SECOND_ERROR_EXIT, ++}; ++ ++enum esp_tid_state { ++ ESP_TID_STATE_INIT, ++ ESP_TID_STATE_TRIGGER, ++ ESP_TID_STATE_PROGRESS, ++ ESP_TID_STATE_OPERATIONAL, ++ ESP_TID_STATE_WAIT_STOP, ++ ESP_TID_STATE_STOP, ++}; ++ ++struct esp_tx_tid { ++ u8 state; ++ u8 cnt; ++ u16 ssn; ++}; ++ ++#define WME_NUM_TID 16 ++struct esp_node { ++ struct esp_tx_tid tid[WME_NUM_TID]; ++ struct ieee80211_sta *sta; ++ u8 ifidx; ++ u8 index; ++}; ++ ++#define WME_AC_BE 2 ++#define WME_AC_BK 3 ++#define WME_AC_VI 1 ++#define WME_AC_VO 0 ++ ++struct llc_snap_hdr { ++ u8 dsap; ++ u8 ssap; ++ u8 cntl; ++ u8 org_code[3]; ++ __be16 eth_type; ++} __packed; ++ ++struct esp_vif { ++ struct esp_pub *epub; ++ u8 index; ++ u32 beacon_interval; ++ bool ap_up; ++ struct timer_list beacon_timer; ++}; ++ ++/* WLAN related, mostly... */ ++/*struct hw_scan_timeout { ++ struct delayed_work w; ++ struct ieee80211_hw *hw; ++};*/ ++ ++typedef struct esp_wl { ++ u8 bssid[ETH_ALEN]; ++ u8 req_bssid[ETH_ALEN]; ++ ++ //struct hw_scan_timeout *hsd; ++ struct cfg80211_scan_request *scan_req; ++ atomic_t ptk_cnt; ++ atomic_t gtk_cnt; ++ atomic_t tkip_key_set; ++ ++ /* so far only 2G band */ ++ struct ieee80211_supported_band sbands[NUM_NL80211_BANDS]; ++ ++ unsigned long flags; ++ atomic_t off; ++} esp_wl_t; ++ ++typedef struct esp_hw_idx_map { ++ u8 mac[ETH_ALEN]; ++ u8 flag; ++} esp_hw_idx_map_t; ++ ++#define ESP_WL_FLAG_RFKILL BIT(0) ++#define ESP_WL_FLAG_HW_REGISTERED BIT(1) ++#define ESP_WL_FLAG_CONNECT BIT(2) ++#define ESP_WL_FLAG_STOP_TXQ BIT(3) ++ ++#define ESP_PUB_MAX_VIF 2 ++#define ESP_PUB_MAX_STA 16 //for one interface ++#define ESP_PUB_MAX_RXAMPDU 8 //for all interfaces ++ ++enum { ++ ESP_PM_OFF = 0, ++ ESP_PM_TURNING_ON, ++ ESP_PM_ON, ++ ESP_PM_TURNING_OFF, /* Do NOT change the order */ ++}; ++ ++struct esp_ps { ++ u32 dtim_period; ++ u32 max_sleep_period; ++ unsigned long last_config_time; ++ atomic_t state; ++ bool nulldata_pm_on; ++}; ++ ++struct esp_mac_prefix { ++ u8 mac_index; ++ u8 mac_addr_prefix[3]; ++}; ++ ++struct esp_pub { ++ struct device *dev; ++#ifdef ESP_NO_MAC80211 ++ struct net_device *net_dev; ++ struct wireless_dev *wdev; ++ struct net_device_stats *net_stats; ++#else ++ struct ieee80211_hw *hw; ++ struct ieee80211_vif *vif; ++ u8 vif_slot; ++#endif /* ESP_MAC80211 */ ++ ++ void *sif; /* serial interface control block, e.g. sdio */ ++ enum esp_sdio_state sdio_state; ++ struct esp_sip *sip; ++ struct esp_wl wl; ++ struct esp_hw_idx_map hi_map[19]; ++ struct esp_hw_idx_map low_map[ESP_PUB_MAX_VIF][2]; ++ //u32 flags; //flags to represent rfkill switch,start ++ u8 roc_flags; //0: not in remain on channel state, 1: in roc state ++ ++ struct work_struct tx_work; /* attach to ieee80211 workqueue */ ++ /* latest mac80211 has multiple tx queue, but we stick with single queue now */ ++ spinlock_t rx_lock; ++ spinlock_t tx_ampdu_lock; ++ spinlock_t rx_ampdu_lock; ++ spinlock_t tx_lock; ++ struct mutex tx_mtx; ++ struct sk_buff_head txq; ++ atomic_t txq_stopped; ++ ++ struct work_struct sendup_work; /* attach to ieee80211 workqueue */ ++ struct sk_buff_head txdoneq; ++ struct sk_buff_head rxq; ++ ++ struct workqueue_struct *esp_wkq; ++ ++ //u8 bssid[ETH_ALEN]; ++ u8 mac_addr[ETH_ALEN]; ++ ++ u32 rx_filter; ++ unsigned long scan_permit; ++ bool scan_permit_valid; ++ struct delayed_work scan_timeout_work; ++ u32 enodes_map; ++ u8 rxampdu_map; ++ u32 enodes_maps[ESP_PUB_MAX_VIF]; ++ struct esp_node *enodes[ESP_PUB_MAX_STA + 1]; ++ struct esp_node *rxampdu_node[ESP_PUB_MAX_RXAMPDU]; ++ u8 rxampdu_tid[ESP_PUB_MAX_RXAMPDU]; ++ struct esp_ps ps; ++ int enable_int; ++ int wait_reset; ++}; ++ ++typedef struct esp_pub esp_pub_t; ++ ++struct esp_pub *esp_pub_alloc_mac80211(struct device *dev); ++int esp_pub_dealloc_mac80211(struct esp_pub *epub); ++int esp_register_mac80211(struct esp_pub *epub); ++ ++int esp_pub_init_all(struct esp_pub *epub); ++ ++char *mod_eagle_path_get(void); ++ ++void esp_dsr(struct esp_pub *epub); ++void hw_scan_done(struct esp_pub *epub, bool aborted); ++void esp_rocdone_process(struct ieee80211_hw *hw, ++ struct sip_evt_roc *report); ++ ++void esp_ps_config(struct esp_pub *epub, struct esp_ps *ps, bool on); ++ ++struct esp_node *esp_get_node_by_addr(struct esp_pub *epub, ++ const u8 * addr); ++struct esp_node *esp_get_node_by_index(struct esp_pub *epub, u8 index); ++int esp_get_empty_rxampdu(struct esp_pub *epub, const u8 * addr, u8 tid); ++int esp_get_exist_rxampdu(struct esp_pub *epub, const u8 * addr, u8 tid); ++ ++#ifdef TEST_MODE ++int test_init_netlink(struct esp_sip *sip); ++void test_exit_netlink(void); ++void esp_test_cmd_event(u32 cmd_type, char *reply_info); ++void esp_test_init(struct esp_pub *epub); ++#endif ++#endif /* _ESP_PUB_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_sif.h b/drivers/net/wireless/esp8089/esp_sif.h +new file mode 100644 +index 000000000000..2d49f2bc8035 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_sif.h +@@ -0,0 +1,207 @@ ++/* ++ * Copyright (c) 2011 - 2014 Espressif System. ++ * ++ * Serial I/F wrapper layer for eagle WLAN device, ++ * abstraction of buses like SDIO/SIP, and provides ++ * flow control for tx/rx layer ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_SIF_H_ ++#define _ESP_SIF_H_ ++ ++#include "esp_pub.h" ++#include ++#include ++ ++/* ++ * H/W SLC module definitions ++ */ ++ ++#define SIF_SLC_BLOCK_SIZE 512 ++ ++ ++/* S/W struct mapping to slc registers */ ++typedef struct slc_host_regs { ++ /* do NOT read token_rdata ++ * ++ u32 pf_data; ++ u32 token_rdata; ++ */ ++ u32 intr_raw; ++ u32 state_w0; ++ u32 state_w1; ++ u32 config_w0; ++ u32 config_w1; ++ u32 intr_status; ++ u32 config_w2; ++ u32 config_w3; ++ u32 config_w4; ++ u32 token_wdata; ++ u32 intr_clear; ++ u32 intr_enable; ++} sif_slc_reg_t; ++ ++ ++enum io_sync_type { ++ ESP_SIF_NOSYNC = 0, ++ ESP_SIF_SYNC, ++}; ++ ++typedef struct esp_sdio_ctrl { ++ struct sdio_func *func; ++ struct esp_pub *epub; ++ ++ ++ struct list_head free_req; ++ ++ u8 *dma_buffer; ++ ++ spinlock_t scat_lock; ++ struct list_head scat_req; ++ ++ bool off; ++ atomic_t irq_handling; ++ const struct sdio_device_id *id; ++ u32 slc_blk_sz; ++ u32 target_id; ++ u32 slc_window_end_addr; ++ ++ struct slc_host_regs slc_regs; ++ atomic_t irq_installed; ++ ++} esp_sdio_ctrl_t; ++ ++#define SIF_TO_DEVICE 0x1 ++#define SIF_FROM_DEVICE 0x2 ++ ++#define SIF_SYNC 0x00000010 ++#define SIF_ASYNC 0x00000020 ++ ++#define SIF_BYTE_BASIS 0x00000040 ++#define SIF_BLOCK_BASIS 0x00000080 ++ ++#define SIF_FIXED_ADDR 0x00000100 ++#define SIF_INC_ADDR 0x00000200 ++ ++#define EPUB_CTRL_CHECK(_epub, _go_err) do{\ ++ if (_epub == NULL) {\ ++ ESSERT(0);\ ++ goto _go_err;\ ++ }\ ++ if ((_epub)->sif == NULL) {\ ++ ESSERT(0);\ ++ goto _go_err;\ ++ }\ ++}while(0) ++ ++#define EPUB_FUNC_CHECK(_epub, _go_err) do{\ ++ if (_epub == NULL) {\ ++ ESSERT(0);\ ++ goto _go_err;\ ++ }\ ++ if ((_epub)->sif == NULL) {\ ++ ESSERT(0);\ ++ goto _go_err;\ ++ }\ ++ if (((struct esp_sdio_ctrl *)(_epub)->sif)->func == NULL) {\ ++ ESSERT(0);\ ++ goto _go_err;\ ++ }\ ++}while(0) ++ ++#define EPUB_TO_CTRL(_epub) (((struct esp_sdio_ctrl *)(_epub)->sif)) ++ ++#define EPUB_TO_FUNC(_epub) (((struct esp_sdio_ctrl *)(_epub)->sif)->func) ++ ++void sdio_io_writeb(struct esp_pub *epub, u8 value, int addr, int *res); ++u8 sdio_io_readb(struct esp_pub *epub, int addr, int *res); ++ ++ ++void sif_enable_irq(struct esp_pub *epub); ++void sif_disable_irq(struct esp_pub *epub); ++void sif_disable_target_interrupt(struct esp_pub *epub); ++ ++u32 sif_get_blksz(struct esp_pub *epub); ++u32 sif_get_target_id(struct esp_pub *epub); ++ ++void sif_dsr(struct sdio_func *func); ++int sif_io_raw(struct esp_pub *epub, u32 addr, u8 * buf, u32 len, ++ u32 flag); ++int sif_io_sync(struct esp_pub *epub, u32 addr, u8 * buf, u32 len, ++ u32 flag); ++int sif_io_async(struct esp_pub *epub, u32 addr, u8 * buf, u32 len, ++ u32 flag, void *context); ++int sif_lldesc_read_sync(struct esp_pub *epub, u8 * buf, u32 len); ++int sif_lldesc_write_sync(struct esp_pub *epub, u8 * buf, u32 len); ++int sif_lldesc_read_raw(struct esp_pub *epub, u8 * buf, u32 len, ++ bool noround); ++int sif_lldesc_write_raw(struct esp_pub *epub, u8 * buf, u32 len); ++ ++int sif_platform_get_irq_no(void); ++int sif_platform_is_irq_occur(void); ++void sif_platform_irq_clear(void); ++void sif_platform_irq_mask(int enable_mask); ++int sif_platform_irq_init(void); ++void sif_platform_irq_deinit(void); ++ ++int esp_common_read(struct esp_pub *epub, u8 * buf, u32 len, int sync, ++ bool noround); ++int esp_common_write(struct esp_pub *epub, u8 * buf, u32 len, int sync); ++int esp_common_read_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ u32 len, int sync); ++int esp_common_write_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ u32 len, int sync); ++ ++int esp_common_readbyte_with_addr(struct esp_pub *epub, u32 addr, u8 * buf, ++ int sync); ++int esp_common_writebyte_with_addr(struct esp_pub *epub, u32 addr, u8 buf, ++ int sync); ++ ++int sif_read_reg_window(struct esp_pub *epub, unsigned int reg_addr, ++ unsigned char *value); ++int sif_write_reg_window(struct esp_pub *epub, unsigned int reg_addr, ++ unsigned char *value); ++int sif_ack_target_read_err(struct esp_pub *epub); ++int sif_had_io_enable(struct esp_pub *epub); ++ ++struct slc_host_regs *sif_get_regs(struct esp_pub *epub); ++ ++void sif_lock_bus(struct esp_pub *epub); ++void sif_unlock_bus(struct esp_pub *epub); ++ ++int sif_interrupt_target(struct esp_pub *epub, u8 index); ++#ifdef USE_EXT_GPIO ++int sif_config_gpio_mode(struct esp_pub *epub, u8 gpio_num, u8 gpio_mode); ++int sif_set_gpio_output(struct esp_pub *epub, u16 mask, u16 value); ++int sif_get_gpio_intr(struct esp_pub *epub, u16 intr_mask, u16 * value); ++int sif_get_gpio_input(struct esp_pub *epub, u16 * mask, u16 * value); ++#endif ++ ++void check_target_id(struct esp_pub *epub); ++ ++void sif_record_bt_config(int value); ++int sif_get_bt_config(void); ++void sif_record_rst_config(int value); ++int sif_get_rst_config(void); ++void sif_record_ate_config(int value); ++int sif_get_ate_config(void); ++void sif_record_retry_config(void); ++int sif_get_retry_config(void); ++void sif_record_wakeup_gpio_config(int value); ++int sif_get_wakeup_gpio_config(void); ++ ++#define sif_reg_read_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR) ++ ++#define sif_reg_write_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR) ++ ++#endif /* _ESP_SIF_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_sip.c b/drivers/net/wireless/esp8089/esp_sip.c +new file mode 100644 +index 000000000000..6602a1e22ab1 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_sip.c +@@ -0,0 +1,2420 @@ ++/* ++ * Copyright (c) 2009 - 2014 Espressif System. ++ * ++ * Serial Interconnctor Protocol ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_mac80211.h" ++#include "esp_pub.h" ++#include "esp_sip.h" ++#include "esp_ctrl.h" ++#include "esp_sif.h" ++#include "esp_debug.h" ++#include "slc_host_register.h" ++#include "esp_wmac.h" ++#include "esp_utils.h" ++ ++#ifdef USE_EXT_GPIO ++#include "esp_ext.h" ++#endif /* USE_EXT_GPIO */ ++ ++extern struct completion *gl_bootup_cplx; ++ ++static int old_signal = -35; ++static int avg_signal = 0; ++static int signal_loop = 0; ++ ++struct esp_mac_prefix esp_mac_prefix_table[] = { ++ {0, {0x18, 0xfe, 0x34}}, ++ {1, {0xac, 0xd0, 0x74}}, ++ {255, {0x18, 0xfe, 0x34}}, ++}; ++ ++#define SIGNAL_COUNT 300 ++ ++#define TID_TO_AC(_tid) ((_tid)== 0||((_tid)==3)?WME_AC_BE:((_tid)<3)?WME_AC_BK:((_tid)<6)?WME_AC_VI:WME_AC_VO) ++ ++#ifdef SIP_DEBUG ++#define esp_sip_dbg esp_dbg ++struct sip_trace { ++ u32 tx_data; ++ u32 tx_cmd; ++ u32 rx_data; ++ u32 rx_evt; ++ u32 rx_tx_status; ++ u32 tx_out_of_credit; ++ u32 tx_one_shot_overflow; ++}; ++static struct sip_trace str; ++#define STRACE_TX_DATA_INC() (str.tx_data++) ++#define STRACE_TX_CMD_INC() (str.tx_cmd++) ++#define STRACE_RX_DATA_INC() (str.rx_data++) ++#define STRACE_RX_EVENT_INC() (str.rx_evt++) ++#define STRACE_RX_TXSTATUS_INC() (str.rx_tx_status++) ++#define STRACE_TX_OUT_OF_CREDIT_INC() (str.tx_out_of_credit++) ++#define STRACE_TX_ONE_SHOT_INC() (str.tx_one_shot_overflow++) ++#define STRACE_SHOW(sip) ++#else ++#define esp_sip_dbg(...) ++#define STRACE_TX_DATA_INC() ++#define STRACE_TX_CMD_INC() ++#define STRACE_RX_DATA_INC() ++#define STRACE_RX_EVENT_INC() ++#define STRACE_RX_TXSTATUS_INC() ++#define STRACE_TX_OUT_OF_CREDIT_INC() ++#define STRACE_TX_ONE_SHOT_INC() ++#define STRACE_SHOW(sip) ++#endif /* SIP_DEBUG */ ++ ++#define SIP_STOP_QUEUE_THRESHOLD 48 ++#define SIP_RESUME_QUEUE_THRESHOLD 12 ++ ++#define SIP_MIN_DATA_PKT_LEN (sizeof(struct esp_mac_rx_ctrl) + 24) //24 is min 80211hdr ++ ++#ifdef ESP_PREALLOC ++extern struct sk_buff *esp_get_sip_skb(int size); ++extern void esp_put_sip_skb(struct sk_buff **skb); ++ ++extern u8 *esp_get_tx_aggr_buf(void); ++extern void esp_put_tx_aggr_buf(u8 ** p); ++ ++#endif ++ ++static void sip_recalc_credit_init(struct esp_sip *sip); ++ ++static int sip_recalc_credit_claim(struct esp_sip *sip, int force); ++ ++static void sip_recalc_credit_release(struct esp_sip *sip); ++ ++static struct sip_pkt *sip_get_ctrl_buf(struct esp_sip *sip, ++ SIP_BUF_TYPE bftype); ++ ++static void sip_reclaim_ctrl_buf(struct esp_sip *sip, struct sip_pkt *pkt, ++ SIP_BUF_TYPE bftype); ++ ++static void sip_free_init_ctrl_buf(struct esp_sip *sip); ++ ++static int sip_pack_pkt(struct esp_sip *sip, struct sk_buff *skb, ++ int *pm_state); ++ ++static struct esp_mac_rx_ctrl *sip_parse_normal_mac_ctrl(struct sk_buff ++ *skb, ++ int *pkt_len_enc, ++ int *buf_len, ++ int *pulled_len); ++ ++static struct sk_buff *sip_parse_data_rx_info(struct esp_sip *sip, ++ struct sk_buff *skb, ++ int pkt_len_enc, int buf_len, ++ struct esp_mac_rx_ctrl ++ *mac_ctrl, int *pulled_len); ++ ++static inline void sip_rx_pkt_enqueue(struct esp_sip *sip, ++ struct sk_buff *skb); ++ ++static void sip_after_write_pkts(struct esp_sip *sip); ++ ++static void sip_update_tx_credits(struct esp_sip *sip, ++ u16 recycled_credits); ++ ++//static void sip_trigger_txq_process(struct esp_sip *sip); ++ ++static bool sip_rx_pkt_process(struct esp_sip *sip, struct sk_buff *skb); ++ ++static void sip_tx_status_report(struct esp_sip *sip, struct sk_buff *skb, ++ struct ieee80211_tx_info *tx_info, ++ bool success); ++ ++#ifdef FPGA_TXDATA ++int sip_send_tx_data(struct esp_sip *sip); ++#endif /* FPGA_TXDATA */ ++ ++#ifdef FPGA_LOOPBACK ++int sip_send_loopback_cmd_mblk(struct esp_sip *sip); ++#endif /* FPGA_LOOPBACK */ ++ ++static bool check_ac_tid(u8 * pkt, u8 ac, u8 tid) ++{ ++ struct ieee80211_hdr *wh = (struct ieee80211_hdr *) pkt; ++#ifdef TID_DEBUG ++ u16 real_tid = 0; ++#endif //TID_DEBUG ++ ++ if (ieee80211_is_data_qos(wh->frame_control)) { ++#ifdef TID_DEBUG ++ real_tid = ++ *ieee80211_get_qos_ctl(wh) & ++ IEEE80211_QOS_CTL_TID_MASK; ++ ++ esp_sip_dbg(ESP_SHOW, "ac:%u, tid:%u, tid in pkt:%u\n", ac, ++ tid, real_tid); ++ if (tid != real_tid) { ++ esp_sip_dbg(ESP_DBG_ERROR, ++ "111 ac:%u, tid:%u, tid in pkt:%u\n", ++ ac, tid, real_tid); ++ } ++ if (TID_TO_AC(tid) != ac) { ++ esp_sip_dbg(ESP_DBG_ERROR, ++ "222 ac:%u, tid:%u, tid in pkt:%u\n", ++ ac, tid, real_tid); ++ } ++#endif /* TID_DEBUG */ ++ } else if (ieee80211_is_mgmt(wh->frame_control)) { ++#ifdef TID_DEBUG ++ esp_sip_dbg(ESP_SHOW, "ac:%u, tid:%u\n", ac, tid); ++ if (tid != 7 || ac != WME_AC_VO) { ++ esp_sip_dbg(ESP_DBG_ERROR, "333 ac:%u, tid:%u\n", ++ ac, tid); ++ } ++#endif /* TID_DEBUG */ ++ } else { ++ if (ieee80211_is_ctl(wh->frame_control)) { ++#ifdef TID_DEBUG ++ esp_sip_dbg(ESP_SHOW, ++ "%s is ctrl pkt fc 0x%04x ac:%u, tid:%u, tid in pkt:%u\n", ++ __func__, wh->frame_control, ac, tid, ++ real_tid); ++#endif /* TID_DEBUG */ ++ } else { ++ if (tid != 0 || ac != WME_AC_BE) { ++ //show_buf(pkt, 24); ++ esp_sip_dbg(ESP_DBG_LOG, ++ "444 ac:%u, tid:%u \n", ac, ++ tid); ++ if (tid == 7 && ac == WME_AC_VO) ++ return false; ++ } ++ return true; //hack to modify non-qos null data. ++ ++ } ++ } ++ ++ return false; ++} ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++static void sip_recalc_credit_timeout(struct timer_list *t) ++#else ++static void sip_recalc_credit_timeout(unsigned long data) ++#endif ++{ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++ struct esp_sip *sip = from_timer(sip, t, credit_timer); ++#else ++ struct esp_sip *sip = (struct esp_sip *) data; ++#endif ++ ++ esp_dbg(ESP_DBG_ERROR, "rct"); ++ ++ sip_recalc_credit_claim(sip, 1); /* recalc again */ ++} ++ ++static void sip_recalc_credit_init(struct esp_sip *sip) ++{ ++ atomic_set(&sip->credit_status, RECALC_CREDIT_DISABLE); //set it disable ++ ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) ++ timer_setup(&sip->credit_timer, sip_recalc_credit_timeout, 0); ++#else ++ init_timer(&sip->credit_timer); ++ sip->credit_timer.data = (unsigned long) sip; ++ sip->credit_timer.function = sip_recalc_credit_timeout; ++#endif ++} ++ ++static int sip_recalc_credit_claim(struct esp_sip *sip, int force) ++{ ++ int ret; ++ ++ if (atomic_read(&sip->credit_status) == RECALC_CREDIT_ENABLE ++ && force == 0) ++ return 1; ++ ++ atomic_set(&sip->credit_status, RECALC_CREDIT_ENABLE); ++ ret = sip_send_recalc_credit(sip->epub); ++ if (ret) { ++ esp_dbg(ESP_DBG_ERROR, "%s error %d", __func__, ret); ++ return ret; ++ } ++ /*setup a timer for handle the abs_credit not receive */ ++ mod_timer(&sip->credit_timer, jiffies + msecs_to_jiffies(2000)); ++ ++ esp_dbg(ESP_SHOW, "rcc"); ++ ++ return ret; ++} ++ ++static void sip_recalc_credit_release(struct esp_sip *sip) ++{ ++ esp_dbg(ESP_SHOW, "rcr"); ++ ++ if (atomic_read(&sip->credit_status) == RECALC_CREDIT_ENABLE) { ++ atomic_set(&sip->credit_status, RECALC_CREDIT_DISABLE); ++ del_timer_sync(&sip->credit_timer); ++ } else ++ esp_dbg(ESP_SHOW, "maybe bogus credit"); ++} ++ ++static void sip_update_tx_credits(struct esp_sip *sip, ++ u16 recycled_credits) ++{ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s:before add, credits is %d\n", ++ __func__, atomic_read(&sip->tx_credits)); ++ ++ if (recycled_credits & 0x800) { ++ atomic_set(&sip->tx_credits, (recycled_credits & 0x7ff)); ++ sip_recalc_credit_release(sip); ++ } else ++ atomic_add(recycled_credits, &sip->tx_credits); ++ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s:after add %d, credits is %d\n", ++ __func__, recycled_credits, ++ atomic_read(&sip->tx_credits)); ++} ++ ++void sip_trigger_txq_process(struct esp_sip *sip) ++{ ++ if (atomic_read(&sip->tx_credits) <= sip->credit_to_reserve + SIP_CTRL_CREDIT_RESERVE //no credits, do nothing ++ || atomic_read(&sip->credit_status) == RECALC_CREDIT_ENABLE) ++ return; ++ ++ if (sip_queue_may_resume(sip)) { ++ /* wakeup upper queue only if we have sufficient credits */ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s wakeup ieee80211 txq \n", ++ __func__); ++ atomic_set(&sip->epub->txq_stopped, false); ++ ieee80211_wake_queues(sip->epub->hw); ++ } else if (atomic_read(&sip->epub->txq_stopped)) { ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s can't wake txq, credits: %d \n", __func__, ++ atomic_read(&sip->tx_credits)); ++ } ++ ++ if (!skb_queue_empty(&sip->epub->txq)) { ++ /* try to send out pkt already in sip queue once we have credits */ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s resume sip txq \n", ++ __func__); ++ ++#if !defined(FPGA_TXDATA) ++ if (sif_get_ate_config() == 0) { ++ ieee80211_queue_work(sip->epub->hw, ++ &sip->epub->tx_work); ++ } else { ++ queue_work(sip->epub->esp_wkq, ++ &sip->epub->tx_work); ++ } ++#else ++ queue_work(sip->epub->esp_wkq, &sip->epub->tx_work); ++#endif ++ } ++} ++ ++static bool sip_ampdu_occupy_buf(struct esp_sip *sip, ++ struct esp_rx_ampdu_len *ampdu_len) ++{ ++ return (ampdu_len->substate == 0 ++ || esp_wmac_rxsec_error(ampdu_len->substate) ++ || (sip->dump_rpbm_err ++ && ampdu_len->substate == RX_RPBM_ERR)); ++} ++ ++static bool sip_rx_pkt_process(struct esp_sip *sip, struct sk_buff *skb) ++{ ++#define DO_NOT_COPY false ++#define DO_COPY true ++ ++ struct sip_hdr *hdr = NULL; ++ struct sk_buff *rskb = NULL; ++ int remains_len = 0; ++ int first_pkt_len = 0; ++ u8 *bufptr = NULL; ++ int ret = 0; ++ bool trigger_rxq = false; ++ ++ if (skb == NULL) { ++ esp_sip_dbg(ESP_DBG_ERROR, "%s NULL SKB!!!!!!!! \n", ++ __func__); ++ return trigger_rxq; ++ } ++ ++ hdr = (struct sip_hdr *) skb->data; ++ bufptr = skb->data; ++ ++ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s Hcredits 0x%08x, realCredits %d\n", ++ __func__, hdr->h_credits, ++ hdr->h_credits & SIP_CREDITS_MASK); ++ if (hdr->h_credits & SIP_CREDITS_MASK) { ++ sip_update_tx_credits(sip, ++ hdr->h_credits & SIP_CREDITS_MASK); ++ } ++ ++ hdr->h_credits &= ~SIP_CREDITS_MASK; /* clean credits in sip_hdr, prevent over-add */ ++ ++ esp_sip_dbg(ESP_DBG_TRACE, "%s credits %d\n", __func__, ++ hdr->h_credits); ++ ++ /* ++ * first pkt's length is stored in recycled_credits first 20 bits ++ * config w3 [31:12] ++ * repair hdr->len of first pkt ++ */ ++ remains_len = hdr->len; ++ first_pkt_len = hdr->h_credits >> 12; ++ hdr->len = first_pkt_len; ++ ++ esp_dbg(ESP_DBG_TRACE, "%s first_pkt_len %d, whole pkt len %d \n", ++ __func__, first_pkt_len, remains_len); ++ if (first_pkt_len > remains_len) { ++ sip_recalc_credit_claim(sip, 0); ++ esp_dbg(ESP_DBG_ERROR, ++ "first_pkt_len %d, whole pkt len %d\n", ++ first_pkt_len, remains_len); ++ show_buf((u8 *) hdr, first_pkt_len); ++ ESSERT(0); ++ goto _exit; ++ } ++ ++ /* ++ * pkts handling, including the first pkt, should alloc new skb for each data pkt. ++ * free the original whole skb after parsing is done. ++ */ ++ while (remains_len) { ++ if (remains_len < sizeof(struct sip_hdr)) { ++ sip_recalc_credit_claim(sip, 0); ++ ESSERT(0); ++ show_buf((u8 *) hdr, 512); ++ goto _exit; ++ } ++ ++ hdr = (struct sip_hdr *) bufptr; ++ if (hdr->len <= 0) { ++ sip_recalc_credit_claim(sip, 0); ++ show_buf((u8 *) hdr, 512); ++ ESSERT(0); ++ goto _exit; ++ } ++ ++ if ((hdr->len & 3) != 0) { ++ sip_recalc_credit_claim(sip, 0); ++ show_buf((u8 *) hdr, 512); ++ ESSERT(0); ++ goto _exit; ++ } ++ if (unlikely(hdr->seq != sip->rxseq++)) { ++ sip_recalc_credit_claim(sip, 0); ++ esp_dbg(ESP_DBG_ERROR, ++ "%s seq mismatch! got %u, expect %u\n", ++ __func__, hdr->seq, sip->rxseq - 1); ++ sip->rxseq = hdr->seq + 1; ++ show_buf(bufptr, 32); ++ ESSERT(0); ++ } ++ ++ if (SIP_HDR_IS_CTRL(hdr)) { ++ STRACE_RX_EVENT_INC(); ++ esp_sip_dbg(ESP_DBG_TRACE, "seq %u \n", hdr->seq); ++ ++ ret = sip_parse_events(sip, bufptr); ++ ++ skb_pull(skb, hdr->len); ++ ++ } else if (SIP_HDR_IS_DATA(hdr)) { ++ struct esp_mac_rx_ctrl *mac_ctrl = NULL; ++ int pkt_len_enc = 0, buf_len = 0, pulled_len = 0; ++ ++ STRACE_RX_DATA_INC(); ++ esp_sip_dbg(ESP_DBG_TRACE, "seq %u \n", hdr->seq); ++ mac_ctrl = ++ sip_parse_normal_mac_ctrl(skb, &pkt_len_enc, ++ &buf_len, ++ &pulled_len); ++ rskb = ++ sip_parse_data_rx_info(sip, skb, pkt_len_enc, ++ buf_len, mac_ctrl, ++ &pulled_len); ++ ++ if (rskb == NULL) ++ goto _move_on; ++ ++ if (likely(atomic_read(&sip->epub->wl.off) == 0)) { ++#ifdef RX_CHECKSUM_TEST ++ esp_rx_checksum_test(rskb); ++#endif ++ local_bh_disable(); ++ ieee80211_rx(sip->epub->hw, rskb); ++ local_bh_enable(); ++ } else { ++ /* still need go thro parsing as skb_pull should invoke */ ++ kfree_skb(rskb); ++ } ++ } else if (SIP_HDR_IS_AMPDU(hdr)) { ++ struct esp_mac_rx_ctrl *mac_ctrl = NULL; ++ struct esp_mac_rx_ctrl new_mac_ctrl; ++ struct esp_rx_ampdu_len *ampdu_len; ++ int pkt_num; ++ int pulled_len = 0; ++ static int pkt_dropped = 0; ++ static int pkt_total = 0; ++ bool have_rxabort = false; ++ bool have_goodpkt = false; ++ static u8 frame_head[16]; ++ static u8 frame_buf_ttl = 0; ++ ++ ampdu_len = ++ (struct esp_rx_ampdu_len *) (skb->data + ++ hdr->len / ++ sip->rx_blksz * ++ sip->rx_blksz); ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s rx ampdu total len %u\n", __func__, ++ hdr->len); ++ if (skb->data != (u8 *) hdr) { ++ printk("%p %p\n", skb->data, hdr); ++ show_buf(skb->data, 512); ++ show_buf((u8 *) hdr, 512); ++ ESSERT(0); ++ goto _exit; ++ } ++ mac_ctrl = ++ sip_parse_normal_mac_ctrl(skb, NULL, NULL, ++ &pulled_len); ++ memcpy(&new_mac_ctrl, mac_ctrl, ++ sizeof(struct esp_mac_rx_ctrl)); ++ mac_ctrl = &new_mac_ctrl; ++ pkt_num = mac_ctrl->ampdu_cnt; ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s %d rx ampdu %u pkts, %d pkts dumped, first len %u\n", ++ __func__, __LINE__, ++ (unsigned ++ int) ((hdr->len % sip->rx_blksz) / ++ sizeof(struct ++ esp_rx_ampdu_len)), ++ pkt_num, ++ (unsigned int) ampdu_len->sublen); ++ ++ pkt_total += mac_ctrl->ampdu_cnt; ++ //esp_sip_dbg(ESP_DBG_ERROR, "%s ampdu dropped %d/%d\n", __func__, pkt_dropped, pkt_total); ++ while (pkt_num > 0) { ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s %d ampdu sub state %02x,\n", ++ __func__, __LINE__, ++ ampdu_len->substate); ++ ++ if (sip_ampdu_occupy_buf(sip, ampdu_len)) { //pkt is dumped ++ ++ rskb = ++ sip_parse_data_rx_info(sip, ++ skb, ++ ampdu_len-> ++ sublen - ++ FCS_LEN, ++ 0, ++ mac_ctrl, ++ &pulled_len); ++ if (!rskb) { ++ ESSERT(0); ++ goto _exit; ++ } ++ ++ if (likely ++ (atomic_read ++ (&sip->epub->wl.off) == 0) ++ && (ampdu_len->substate == 0 ++ || ampdu_len->substate == ++ RX_TKIPMIC_ERR ++ || (sip->sendup_rpbm_pkt ++ && ampdu_len-> ++ substate == ++ RX_RPBM_ERR)) ++ && (sip->rxabort_fixed ++ || !have_rxabort)) { ++ if (!have_goodpkt) { ++ have_goodpkt = ++ true; ++ memcpy(frame_head, ++ rskb->data, ++ 16); ++ frame_head[1] &= ++ ~0x80; ++ frame_buf_ttl = 3; ++ } ++#ifdef RX_CHECKSUM_TEST ++ esp_rx_checksum_test(rskb); ++#endif ++ local_bh_disable(); ++ ieee80211_rx(sip->epub->hw, ++ rskb); ++ local_bh_enable(); ++ ++ } else { ++ kfree_skb(rskb); ++ } ++ } else { ++ if (ampdu_len->substate == ++ RX_ABORT) { ++ u8 *a; ++ have_rxabort = true; ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "rx abort %d %d\n", ++ frame_buf_ttl, ++ pkt_num); ++ if (frame_buf_ttl ++ && !sip-> ++ rxabort_fixed) { ++ struct ++ esp_rx_ampdu_len ++ *next_good_ampdu_len ++ = ++ ampdu_len + 1; ++ a = frame_head; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "frame:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", ++ a[0], a[1], ++ a[2], a[3], ++ a[4], a[5], ++ a[6], a[7], ++ a[8], a[9], ++ a[10], a[11], ++ a[12], a[13], ++ a[14], a[15]); ++ while ++ (!sip_ampdu_occupy_buf ++ (sip, ++ next_good_ampdu_len)) ++ { ++ if (next_good_ampdu_len > ampdu_len + pkt_num - 1) ++ break; ++ next_good_ampdu_len++; ++ ++ } ++ if (next_good_ampdu_len <= ampdu_len + pkt_num - 1) { ++ bool b0, ++ b10, ++ b11; ++ a = skb-> ++ data; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "buf:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", ++ a[0], ++ a[1], ++ a[2], ++ a[3], ++ a[4], ++ a[5], ++ a[6], ++ a[7], ++ a[8], ++ a[9], ++ a[10], ++ a[11], ++ a[12], ++ a[13], ++ a[14], ++ a ++ [15]); ++ b0 = memcmp ++ (frame_head ++ + 4, ++ skb-> ++ data + ++ 4, ++ 12) == ++ 0; ++ b10 = ++ memcmp ++ (frame_head ++ + 10, ++ skb-> ++ data, ++ 6) == ++ 0; ++ b11 = ++ memcpy ++ (frame_head ++ + 11, ++ skb-> ++ data, ++ 5) == ++ 0; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "com %d %d %d\n", ++ b0, ++ b10, ++ b11); ++ if (b0 ++ && !b10 ++ && ++ !b11) { ++ have_rxabort ++ = ++ false; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "repair 0\n"); ++ } else ++ if (!b0 ++ && ++ b10 ++ && ++ !b11) ++ { ++ skb_push ++ (skb, ++ 10); ++ memcpy ++ (skb-> ++ data, ++ frame_head, ++ 10); ++ have_rxabort ++ = ++ false; ++ pulled_len ++ -= ++ 10; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "repair 10\n"); ++ } else ++ if (!b0 ++ && ++ !b10 ++ && ++ b11) ++ { ++ skb_push ++ (skb, ++ 11); ++ memcpy ++ (skb-> ++ data, ++ frame_head, ++ 11); ++ have_rxabort ++ = ++ false; ++ pulled_len ++ -= ++ 11; ++ esp_sip_dbg ++ (ESP_DBG_TRACE, ++ "repair 11\n"); ++ } ++ } ++ } ++ } ++ pkt_dropped++; ++ esp_sip_dbg(ESP_DBG_LOG, ++ "%s ampdu dropped %d/%d\n", ++ __func__, pkt_dropped, ++ pkt_total); ++ } ++ pkt_num--; ++ ampdu_len++; ++ } ++ if (frame_buf_ttl) ++ frame_buf_ttl--; ++ skb_pull(skb, hdr->len - pulled_len); ++ } else { ++ esp_sip_dbg(ESP_DBG_ERROR, "%s %d unknown type\n", ++ __func__, __LINE__); ++ } ++ ++ _move_on: ++ if (hdr->len < remains_len) { ++ remains_len -= hdr->len; ++ } else { ++ break; ++ } ++ bufptr += hdr->len; ++ } ++ ++ _exit: ++#ifdef ESP_PREALLOC ++ esp_put_sip_skb(&skb); ++#else ++ kfree_skb(skb); ++#endif ++ ++ return trigger_rxq; ++ ++#undef DO_NOT_COPY ++#undef DO_COPY ++} ++ ++static void _sip_rxq_process(struct esp_sip *sip) ++{ ++ struct sk_buff *skb = NULL; ++ bool sendup = false; ++ ++ while ((skb = skb_dequeue(&sip->rxq))) { ++ if (sip_rx_pkt_process(sip, skb)) ++ sendup = true; ++ } ++ if (sendup) { ++ queue_work(sip->epub->esp_wkq, &sip->epub->sendup_work); ++ } ++ ++ /* probably tx_credit is updated, try txq */ ++ sip_trigger_txq_process(sip); ++} ++ ++void sip_rxq_process(struct work_struct *work) ++{ ++ struct esp_sip *sip = ++ container_of(work, struct esp_sip, rx_process_work); ++ if (sip == NULL) { ++ ESSERT(0); ++ return; ++ } ++ ++ if (unlikely(atomic_read(&sip->state) == SIP_SEND_INIT)) { ++ sip_send_chip_init(sip); ++ atomic_set(&sip->state, SIP_WAIT_BOOTUP); ++ return; ++ } ++ ++ mutex_lock(&sip->rx_mtx); ++ _sip_rxq_process(sip); ++ mutex_unlock(&sip->rx_mtx); ++} ++ ++static inline void sip_rx_pkt_enqueue(struct esp_sip *sip, ++ struct sk_buff *skb) ++{ ++ skb_queue_tail(&sip->rxq, skb); ++} ++ ++static inline struct sk_buff *sip_rx_pkt_dequeue(struct esp_sip *sip) ++{ ++ return skb_dequeue(&sip->rxq); ++} ++ ++static u32 sip_rx_count = 0; ++void sip_debug_show(struct esp_sip *sip) ++{ ++ esp_sip_dbg(ESP_DBG_ERROR, "txq left %d %d\n", ++ skb_queue_len(&sip->epub->txq), ++ atomic_read(&sip->tx_data_pkt_queued)); ++ esp_sip_dbg(ESP_DBG_ERROR, "tx queues stop ? %d\n", ++ atomic_read(&sip->epub->txq_stopped)); ++ esp_sip_dbg(ESP_DBG_ERROR, "txq stop? %d\n", ++ test_bit(ESP_WL_FLAG_STOP_TXQ, &sip->epub->wl.flags)); ++ esp_sip_dbg(ESP_DBG_ERROR, "tx credit %d\n", ++ atomic_read(&sip->tx_credits)); ++ esp_sip_dbg(ESP_DBG_ERROR, "rx collect %d\n", sip_rx_count); ++ sip_rx_count = 0; ++} ++ ++int sip_rx(struct esp_pub *epub) ++{ ++ struct sip_hdr *shdr = NULL; ++ struct esp_sip *sip = epub->sip; ++ int err = 0; ++ struct sk_buff *first_skb = NULL; ++ u8 *rx_buf = NULL; ++ u32 rx_blksz; ++ struct sk_buff *rx_skb = NULL; ++ ++ u32 first_sz; ++ ++ first_sz = sif_get_regs(epub)->config_w0; ++ ++ if (likely(sif_get_ate_config() != 1)) { ++ do { ++ u8 raw_seq = sif_get_regs(epub)->intr_raw & 0xff; ++ ++ if (raw_seq != sip->to_host_seq) { ++ if (raw_seq == sip->to_host_seq + 1) { /* when last read pkt crc err, this situation may occur, but raw_seq mustn't < to_host_Seq */ ++ sip->to_host_seq = raw_seq; ++ esp_dbg(ESP_DBG_TRACE, ++ "warn: to_host_seq reg 0x%02x, seq 0x%02x", ++ raw_seq, sip->to_host_seq); ++ break; ++ } ++ esp_dbg(ESP_DBG_ERROR, ++ "err: to_host_seq reg 0x%02x, seq 0x%02x", ++ raw_seq, sip->to_host_seq); ++ goto _err; ++ } ++ } while (0); ++ } ++ esp_sip_dbg(ESP_DBG_LOG, "%s enter\n", __func__); ++ ++ ++ /* first read one block out, if we luck enough, that's it ++ * ++ * To make design as simple as possible, we allocate skb(s) ++ * separately for each sif read operation to avoid global ++ * read_buf_pointe access. It coule be optimized late. ++ */ ++ rx_blksz = sif_get_blksz(epub); ++#ifdef ESP_PREALLOC ++ first_skb = esp_get_sip_skb(roundup(first_sz, rx_blksz)); ++#else ++ first_skb = ++ __dev_alloc_skb(roundup(first_sz, rx_blksz), GFP_KERNEL); ++#endif /* ESP_PREALLOC */ ++ ++ if (first_skb == NULL) { ++ sif_unlock_bus(epub); ++ esp_sip_dbg(ESP_DBG_ERROR, "%s first no memory \n", ++ __func__); ++ goto _err; ++ } ++ ++ rx_buf = skb_put(first_skb, first_sz); ++ esp_sip_dbg(ESP_DBG_LOG, "%s rx_buf ptr %p, first_sz %d\n", ++ __func__, rx_buf, first_sz); ++ ++ ++#ifdef USE_EXT_GPIO ++ do { ++ int err2 = 0; ++ u16 value = 0; ++ u16 intr_mask = ext_gpio_get_int_mask_reg(); ++ if (!intr_mask) ++ break; ++ value = sif_get_regs(epub)->config_w3 & intr_mask; ++ if (value) { ++ err2 = sif_interrupt_target(epub, 6); ++ esp_sip_dbg(ESP_DBG, "write gpio\n"); ++ } ++ ++ if (!err2 && value) { ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s intr_mask[0x%04x] value[0x%04x]\n", ++ __func__, intr_mask, value); ++ ext_gpio_int_process(value); ++ } ++ } while (0); ++#endif ++ ++ err = ++ esp_common_read(epub, rx_buf, first_sz, ESP_SIF_NOSYNC, false); ++ sip_rx_count++; ++ if (unlikely(err)) { ++ esp_dbg(ESP_DBG_ERROR, " %s first read err %d %d\n", ++ __func__, err, sif_get_regs(epub)->config_w0); ++#ifdef ESP_PREALLOC ++ esp_put_sip_skb(&first_skb); ++#else ++ kfree_skb(first_skb); ++#endif /* ESP_PREALLOC */ ++ sif_unlock_bus(epub); ++ goto _err; ++ } ++ ++ shdr = (struct sip_hdr *) rx_buf; ++ if (SIP_HDR_IS_CTRL(shdr) && (shdr->c_evtid == SIP_EVT_SLEEP)) { ++ atomic_set(&sip->epub->ps.state, ESP_PM_ON); ++ esp_dbg(ESP_DBG_TRACE, "s\n"); ++ } ++ ++ if (likely(sif_get_ate_config() != 1)) { ++ sip->to_host_seq++; ++ } ++ ++ if ((shdr->len & 3) != 0) { ++ esp_sip_dbg(ESP_DBG_ERROR, "%s shdr->len[%d] error\n", ++ __func__, shdr->len); ++#ifdef ESP_PREALLOC ++ esp_put_sip_skb(&first_skb); ++#else ++ kfree_skb(first_skb); ++#endif /* ESP_PREALLOC */ ++ sif_unlock_bus(epub); ++ err = -EIO; ++ goto _err; ++ } ++ if (shdr->len != first_sz) { ++ esp_sip_dbg(ESP_DBG_ERROR, ++ "%s shdr->len[%d] first_size[%d] error\n", ++ __func__, shdr->len, first_sz); ++#ifdef ESP_PREALLOC ++ esp_put_sip_skb(&first_skb); ++#else ++ kfree_skb(first_skb); ++#endif /* ESP_PREALLOC */ ++ sif_unlock_bus(epub); ++ err = -EIO; ++ goto _err; ++ } else { ++ sif_unlock_bus(epub); ++ skb_trim(first_skb, shdr->len); ++ esp_dbg(ESP_DBG_TRACE, " %s first_skb only\n", __func__); ++ ++ rx_skb = first_skb; ++ } ++ ++ if (atomic_read(&sip->state) == SIP_STOP) { ++#ifdef ESP_PREALLOC ++ esp_put_sip_skb(&rx_skb); ++#else ++ kfree_skb(rx_skb); ++#endif /* ESP_PREALLOC */ ++ esp_sip_dbg(ESP_DBG_ERROR, "%s when sip stopped\n", ++ __func__); ++ return 0; ++ } ++ ++ sip_rx_pkt_enqueue(sip, rx_skb); ++ queue_work(sip->epub->esp_wkq, &sip->rx_process_work); ++ ++ _err: ++ return err; ++} ++ ++int sip_post_init(struct esp_sip *sip, struct sip_evt_bootup2 *bevt) ++{ ++ struct esp_pub *epub; ++ ++ u8 mac_id = bevt->mac_addr[0]; ++ int mac_index = 0; ++ int i = 0; ++ ++ if (sip == NULL) { ++ ESSERT(0); ++ return -EINVAL; ++ } ++ ++ epub = sip->epub; ++ ++ ++ sip->tx_aggr_write_ptr = sip->tx_aggr_buf; ++ ++ sip->tx_blksz = bevt->tx_blksz; ++ sip->rx_blksz = bevt->rx_blksz; ++ sip->credit_to_reserve = bevt->credit_to_reserve; ++ ++ sip->dump_rpbm_err = (bevt->options & SIP_DUMP_RPBM_ERR); ++ sip->rxabort_fixed = (bevt->options & SIP_RXABORT_FIXED); ++ sip->support_bgscan = (bevt->options & SIP_SUPPORT_BGSCAN); ++ ++ sip->sendup_rpbm_pkt = sip->dump_rpbm_err && false; ++ ++ /* print out MAC addr... */ ++ memcpy(epub->mac_addr, bevt->mac_addr, ETH_ALEN); ++ for (i = 0; ++ i < ++ sizeof(esp_mac_prefix_table) / sizeof(struct esp_mac_prefix); ++ i++) { ++ if (esp_mac_prefix_table[i].mac_index == mac_id) { ++ mac_index = i; ++ break; ++ } ++ } ++ ++ epub->mac_addr[0] = ++ esp_mac_prefix_table[mac_index].mac_addr_prefix[0]; ++ epub->mac_addr[1] = ++ esp_mac_prefix_table[mac_index].mac_addr_prefix[1]; ++ epub->mac_addr[2] = ++ esp_mac_prefix_table[mac_index].mac_addr_prefix[2]; ++ ++#ifdef SELF_MAC ++ epub->mac_addr[0] = 0xff; ++ epub->mac_addr[1] = 0xff; ++ epub->mac_addr[2] = 0xff; ++#endif ++ atomic_set(&sip->noise_floor, bevt->noise_floor); ++ ++ sip_recalc_credit_init(sip); ++ ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s tx_blksz %d rx_blksz %d mac addr %pM\n", __func__, ++ sip->tx_blksz, sip->rx_blksz, epub->mac_addr); ++ ++ return 0; ++} ++ ++/* write pkts in aggr buf to target memory */ ++static void sip_write_pkts(struct esp_sip *sip, int pm_state) ++{ ++ int tx_aggr_len = 0; ++ struct sip_hdr *first_shdr = NULL; ++ int err = 0; ++ ++ tx_aggr_len = sip->tx_aggr_write_ptr - sip->tx_aggr_buf; ++ if (tx_aggr_len < sizeof(struct sip_hdr)) { ++ printk("%s tx_aggr_len %d \n", __func__, tx_aggr_len); ++ ESSERT(0); ++ return; ++ } ++ if ((tx_aggr_len & 0x3) != 0) { ++ ESSERT(0); ++ return; ++ } ++ ++ first_shdr = (struct sip_hdr *) sip->tx_aggr_buf; ++ ++ if (atomic_read(&sip->tx_credits) <= SIP_CREDITS_LOW_THRESHOLD) { ++ first_shdr->fc[1] |= SIP_HDR_F_NEED_CRDT_RPT; ++ } ++ ++ /* still use lock bus instead of sif_lldesc_write_sync since we want to protect several global varibles assignments */ ++ sif_lock_bus(sip->epub); ++ ++ err = ++ esp_common_write(sip->epub, sip->tx_aggr_buf, tx_aggr_len, ++ ESP_SIF_NOSYNC); ++ ++ sip->tx_aggr_write_ptr = sip->tx_aggr_buf; ++ sip->tx_tot_len = 0; ++ ++ sif_unlock_bus(sip->epub); ++ ++ if (err) ++ esp_sip_dbg(ESP_DBG_ERROR, "func %s err!!!!!!!!!: %d\n", ++ __func__, err); ++ ++} ++ ++/* setup sip header and tx info, copy pkt into aggr buf */ ++static int sip_pack_pkt(struct esp_sip *sip, struct sk_buff *skb, ++ int *pm_state) ++{ ++ struct ieee80211_tx_info *itx_info; ++ struct sip_hdr *shdr; ++ u32 tx_len = 0, offset = 0; ++ bool is_data = true; ++ ++ itx_info = IEEE80211_SKB_CB(skb); ++ ++ if (itx_info->flags == 0xffffffff) { ++ shdr = (struct sip_hdr *) skb->data; ++ is_data = false; ++ tx_len = skb->len; ++ } else { ++ struct ieee80211_hdr *wh = ++ (struct ieee80211_hdr *) skb->data; ++ struct esp_vif *evif = ++ (struct esp_vif *) itx_info->control.vif->drv_priv; ++ u8 sta_index; ++ struct esp_node *node; ++ /* update sip header */ ++ shdr = (struct sip_hdr *) sip->tx_aggr_write_ptr; ++ ++ shdr->fc[0] = 0; ++ shdr->fc[1] = 0; ++ ++ if ((itx_info->flags & IEEE80211_TX_CTL_AMPDU) ++ && (true || esp_is_ip_pkt(skb))) ++ SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA_AMPDU); ++ else ++ SIP_HDR_SET_TYPE(shdr->fc[0], SIP_DATA); ++ ++ if (evif->epub == NULL) { ++ sip_tx_status_report(sip, skb, itx_info, false); ++ atomic_dec(&sip->tx_data_pkt_queued); ++ return -EINVAL; ++ } ++ ++ /* make room for encrypted pkt */ ++ if (itx_info->control.hw_key) { ++ int alg = ++ esp_cipher2alg(itx_info->control.hw_key-> ++ cipher); ++ if (unlikely(alg == -1)) { ++ sip_tx_status_report(sip, skb, itx_info, ++ false); ++ atomic_dec(&sip->tx_data_pkt_queued); ++ return -1; ++ } else { ++ shdr->d_enc_flag = alg + 1; ++ } ++ ++ shdr->d_hw_kid = ++ itx_info->control.hw_key->hw_key_idx | (evif-> ++ index ++ << 7); ++ } else { ++ shdr->d_enc_flag = 0; ++ shdr->d_hw_kid = (evif->index << 7 | evif->index); ++ } ++ ++ /* update sip tx info */ ++ node = esp_get_node_by_addr(sip->epub, wh->addr1); ++ if (node != NULL) ++ sta_index = node->index; ++ else ++ sta_index = ESP_PUB_MAX_STA + 1; ++ SIP_HDR_SET_IFIDX(shdr->fc[0], ++ evif->index << 3 | sta_index); ++ shdr->d_p2p = itx_info->control.vif->p2p; ++ if (evif->index == 1) ++ shdr->d_p2p = 1; ++ shdr->d_ac = skb_get_queue_mapping(skb); ++ shdr->d_tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; ++ wh = (struct ieee80211_hdr *) skb->data; ++ if (ieee80211_is_mgmt(wh->frame_control)) { ++ /* addba/delba/bar may use different tid/ac */ ++ if (shdr->d_ac == WME_AC_VO) { ++ shdr->d_tid = 7; ++ } ++ if (ieee80211_is_beacon(wh->frame_control)) { ++ shdr->d_tid = 8; ++ shdr->d_ac = 4; ++ } ++ } ++ if (check_ac_tid(skb->data, shdr->d_ac, shdr->d_tid)) { ++ shdr->d_ac = WME_AC_BE; ++ shdr->d_tid = 0; ++ } ++ ++ ++ /* make sure data is start at 4 bytes aligned addr. */ ++ offset = roundup(sizeof(struct sip_hdr), 4); ++ ++#ifdef HOST_RC ++ esp_sip_dbg(ESP_DBG_TRACE, "%s offset0 %d \n", __func__, ++ offset); ++ memcpy(sip->tx_aggr_write_ptr + offset, ++ (void *) &itx_info->control, ++ sizeof(struct sip_tx_rc)); ++ ++ offset += roundup(sizeof(struct sip_tx_rc), 4); ++ esp_show_tx_rates(&itx_info->control.rates[0]); ++ ++#endif /* HOST_RC */ ++ ++ if (SIP_HDR_IS_AMPDU(shdr)) { ++ memset(sip->tx_aggr_write_ptr + offset, 0, ++ sizeof(struct esp_tx_ampdu_entry)); ++ offset += ++ roundup(sizeof(struct esp_tx_ampdu_entry), 4); ++ } ++ ++ tx_len = offset + skb->len; ++ shdr->len = tx_len; /* actual len */ ++ ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s offset %d skblen %d txlen %d\n", __func__, ++ offset, skb->len, tx_len); ++ ++ } ++ ++ shdr->seq = sip->txseq++; ++ //esp_sip_dbg(ESP_DBG_ERROR, "%s seq %u, %u %u\n", __func__, shdr->seq, SIP_HDR_GET_TYPE(shdr->fc[0]),shdr->c_cmdid); ++ ++ /* copy skb to aggr buf */ ++ memcpy(sip->tx_aggr_write_ptr + offset, skb->data, skb->len); ++ ++ if (is_data) { ++ spin_lock_bh(&sip->epub->tx_lock); ++ sip->txdataseq = shdr->seq; ++ spin_unlock_bh(&sip->epub->tx_lock); ++ /* fake a tx_status and report to mac80211 stack to speed up tx, may affect ++ * 1) rate control (now it's all in target, so should be OK) ++ * 2) ps mode, mac80211 want to check ACK of ps/nulldata to see if AP is awake ++ * 3) BAR, mac80211 do BAR by checking ACK ++ */ ++ /* ++ * XXX: need to adjust for 11n, e.g. report tx_status according to BA received in target ++ * ++ */ ++ sip_tx_status_report(sip, skb, itx_info, true); ++ atomic_dec(&sip->tx_data_pkt_queued); ++ ++ STRACE_TX_DATA_INC(); ++ } else { ++ /* check pm state here */ ++ ++ /* no need to hold ctrl skb */ ++ sip_free_ctrl_skbuff(sip, skb); ++ STRACE_TX_CMD_INC(); ++ } ++ ++ /* TBD: roundup here or whole aggr-buf */ ++ tx_len = roundup(tx_len, sip->tx_blksz); ++ ++ sip->tx_aggr_write_ptr += tx_len; ++ sip->tx_tot_len += tx_len; ++ ++ return 0; ++} ++ ++#ifdef HOST_RC ++static void sip_set_tx_rate_status(struct sip_rc_status *rcstatus, ++ struct ieee80211_tx_rate *irates) ++{ ++ int i; ++ u8 shift = 0; ++ u32 cnt = 0; ++ ++ for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { ++ if (rcstatus->rc_map & BIT(i)) { ++ shift = i << 2; ++ cnt = ++ (rcstatus-> ++ rc_cnt_store >> shift) & RC_CNT_MASK; ++ irates[i].idx = i; ++ irates[i].count = (u8) cnt; ++ } else { ++ irates[i].idx = -1; ++ irates[i].count = 0; ++ } ++ } ++ ++ esp_show_rcstatus(rcstatus); ++ esp_show_tx_rates(irates); ++} ++#endif /* HOST_RC */ ++ ++static void sip_tx_status_report(struct esp_sip *sip, struct sk_buff *skb, ++ struct ieee80211_tx_info *tx_info, ++ bool success) ++{ ++ if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { ++ if (likely(success)) ++ tx_info->flags |= IEEE80211_TX_STAT_ACK; ++ else ++ tx_info->flags &= ~IEEE80211_TX_STAT_ACK; ++ ++ /* manipulate rate status... */ ++ tx_info->status.rates[0].idx = 11; ++ tx_info->status.rates[0].count = 1; ++ tx_info->status.rates[0].flags = 0; ++ tx_info->status.rates[1].idx = -1; ++ ++ } else { ++ tx_info->flags |= ++ IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_STAT_ACK; ++ tx_info->status.ampdu_len = 1; ++ tx_info->status.ampdu_ack_len = 1; ++ ++ /* manipulate rate status... */ ++ tx_info->status.rates[0].idx = 7; ++ tx_info->status.rates[0].count = 1; ++ tx_info->status.rates[0].flags = ++ IEEE80211_TX_RC_MCS | IEEE80211_TX_RC_SHORT_GI; ++ tx_info->status.rates[1].idx = -1; ++ ++ } ++ ++ if (tx_info->flags & IEEE80211_TX_STAT_AMPDU) ++ esp_sip_dbg(ESP_DBG_TRACE, "%s ampdu status! \n", ++ __func__); ++ ++ if (!mod_support_no_txampdu() && ++ cfg80211_get_chandef_type(&sip->epub->hw->conf.chandef) != ++ NL80211_CHAN_NO_HT) { ++ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); ++ struct ieee80211_hdr *wh = ++ (struct ieee80211_hdr *) skb->data; ++ if (ieee80211_is_data_qos(wh->frame_control)) { ++ if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { ++ u8 tidno = ++ ieee80211_get_qos_ctl(wh)[0] & ++ IEEE80211_QOS_CTL_TID_MASK; ++ struct esp_node *node; ++ struct esp_tx_tid *tid; ++ struct ieee80211_sta *sta; ++ ++ node = ++ esp_get_node_by_addr(sip->epub, ++ wh->addr1); ++ if (node == NULL) ++ goto _exit; ++ if (node->sta == NULL) ++ goto _exit; ++ sta = node->sta; ++ tid = &node->tid[tidno]; ++ spin_lock_bh(&sip->epub->tx_ampdu_lock); ++ //start session ++ if (tid == NULL) { ++ spin_unlock_bh(&sip->epub-> ++ tx_ampdu_lock); ++ ESSERT(0); ++ goto _exit; ++ } ++ if ((tid->state == ESP_TID_STATE_INIT) && ++ (TID_TO_AC(tidno) != WME_AC_VO) ++ && tid->cnt >= 10) { ++ tid->state = ESP_TID_STATE_TRIGGER; ++ esp_sip_dbg(ESP_DBG_ERROR, ++ "start tx ba session,addr:%pM,tid:%u\n", ++ wh->addr1, tidno); ++ spin_unlock_bh(&sip->epub-> ++ tx_ampdu_lock); ++ ieee80211_start_tx_ba_session(sta, ++ tidno, ++ 0); ++ } else { ++ if (tid->state == ++ ESP_TID_STATE_INIT) ++ tid->cnt++; ++ else ++ tid->cnt = 0; ++ spin_unlock_bh(&sip->epub-> ++ tx_ampdu_lock); ++ } ++ } ++ } ++ } ++ _exit: ++ ieee80211_tx_status(sip->epub->hw, skb); ++} ++ ++/* ++ * NB: this routine should be locked when calling ++ */ ++void sip_txq_process(struct esp_pub *epub) ++{ ++ struct sk_buff *skb; ++ struct esp_sip *sip = epub->sip; ++ u32 pkt_len = 0, tx_len = 0; ++ int blknum = 0; ++ bool queued_back = false; ++ bool out_of_credits = false; ++ struct ieee80211_tx_info *itx_info; ++ int pm_state = 0; ++ ++ while ((skb = skb_dequeue(&epub->txq))) { ++ ++ /* cmd skb->len does not include sip_hdr too */ ++ pkt_len = skb->len; ++ itx_info = IEEE80211_SKB_CB(skb); ++ if (itx_info->flags != 0xffffffff) { ++ pkt_len += roundup(sizeof(struct sip_hdr), 4); ++ if ((itx_info->flags & IEEE80211_TX_CTL_AMPDU) ++ && (true || esp_is_ip_pkt(skb))) ++ pkt_len += ++ roundup(sizeof ++ (struct esp_tx_ampdu_entry), ++ 4); ++ } ++ ++ /* current design simply requires every sip_hdr must be at the begin of mblk, that definitely ++ * need to be optimized, e.g. calulate remain length in the previous mblk, if it larger than ++ * certain threshold (e.g, whole pkt or > 50% of pkt or 2 x sizeof(struct sip_hdr), append pkt ++ * to the previous mblk. This might be done in sip_pack_pkt() ++ */ ++ pkt_len = roundup(pkt_len, sip->tx_blksz); ++ blknum = pkt_len / sip->tx_blksz; ++ esp_dbg(ESP_DBG_TRACE, ++ "%s skb_len %d pkt_len %d blknum %d\n", __func__, ++ skb->len, pkt_len, blknum); ++ ++ if (unlikely(atomic_read(&sip->credit_status) == RECALC_CREDIT_ENABLE)) { /* need recalc credit */ ++ struct sip_hdr *hdr = (struct sip_hdr *) skb->data; ++ itx_info = IEEE80211_SKB_CB(skb); ++ if (!(itx_info->flags == 0xffffffff && SIP_HDR_GET_TYPE(hdr->fc[0]) == SIP_CTRL && hdr->c_cmdid == SIP_CMD_RECALC_CREDIT && blknum <= atomic_read(&sip->tx_credits) - sip->credit_to_reserve)) { /* except cmd recalc credit */ ++ esp_dbg(ESP_DBG_ERROR, ++ "%s recalc credits!\n", __func__); ++ STRACE_TX_OUT_OF_CREDIT_INC(); ++ queued_back = true; ++ out_of_credits = true; ++ break; ++ } ++ } else { /* normal situation */ ++ if (unlikely ++ (blknum > ++ (atomic_read(&sip->tx_credits) - ++ sip->credit_to_reserve - ++ SIP_CTRL_CREDIT_RESERVE))) { ++ itx_info = IEEE80211_SKB_CB(skb); ++ if (itx_info->flags == 0xffffffff) { /* priv ctrl pkt */ ++ if (blknum > ++ atomic_read(&sip->tx_credits) - ++ sip->credit_to_reserve) { ++ esp_dbg(ESP_DBG_TRACE, ++ "%s cmd pkt out of credits!\n", ++ __func__); ++ STRACE_TX_OUT_OF_CREDIT_INC ++ (); ++ queued_back = true; ++ out_of_credits = true; ++ break; ++ } ++ } else { ++ esp_dbg(ESP_DBG_TRACE, ++ "%s out of credits!\n", ++ __func__); ++ STRACE_TX_OUT_OF_CREDIT_INC(); ++ queued_back = true; ++ out_of_credits = true; ++ break; ++ } ++ } ++ } ++ tx_len += pkt_len; ++ if (tx_len >= SIP_TX_AGGR_BUF_SIZE) { ++ /* do we need to have limitation likemax 8 pkts in a row? */ ++ esp_dbg(ESP_DBG_TRACE, ++ "%s too much pkts in one shot!\n", ++ __func__); ++ STRACE_TX_ONE_SHOT_INC(); ++ tx_len -= pkt_len; ++ queued_back = true; ++ break; ++ } ++ ++ if (sip_pack_pkt(sip, skb, &pm_state) != 0) { ++ /* wrong pkt, won't send to target */ ++ tx_len -= pkt_len; ++ continue; ++ } ++ ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s:before sub, credits is %d\n", __func__, ++ atomic_read(&sip->tx_credits)); ++ atomic_sub(blknum, &sip->tx_credits); ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s:after sub %d,credits remains %d\n", ++ __func__, blknum, ++ atomic_read(&sip->tx_credits)); ++ ++ } ++ ++ if (queued_back) { ++ skb_queue_head(&epub->txq, skb); ++ } ++ ++ if (atomic_read(&sip->state) == SIP_STOP ++#ifdef HOST_RESET_BUG ++ || atomic_read(&epub->wl.off) == 1 ++#endif ++ ) { ++ queued_back = 1; ++ tx_len = 0; ++ sip_after_write_pkts(sip); ++ } ++ ++ if (tx_len) { ++ ++ sip_write_pkts(sip, pm_state); ++ ++ sip_after_write_pkts(sip); ++ } ++ ++ if (queued_back && !out_of_credits) { ++ ++ /* skb pending, do async process again */ ++ sip_trigger_txq_process(sip); ++ } ++} ++ ++static void sip_after_write_pkts(struct esp_sip *sip) ++{ ++ ++} ++ ++#ifndef NO_WMM_DUMMY ++static struct esp_80211_wmm_param_element esp_wmm_param = { ++ .oui = {0x00, 0x50, 0xf2}, ++ .oui_type = 0x02, ++ .oui_subtype = 0x01, ++ .version = 0x01, ++ .qos_info = 0x00, ++ .reserved = 0x00, ++ .ac = { ++ { ++ .aci_aifsn = 0x03, ++ .cw = 0xa4, ++ .txop_limit = 0x0000, ++ }, ++ { ++ .aci_aifsn = 0x27, ++ .cw = 0xa4, ++ .txop_limit = 0x0000, ++ }, ++ { ++ .aci_aifsn = 0x42, ++ .cw = 0x43, ++ .txop_limit = 0x005e, ++ }, ++ { ++ .aci_aifsn = 0x62, ++ .cw = 0x32, ++ .txop_limit = 0x002f, ++ }, ++ }, ++}; ++ ++static int esp_add_wmm(struct sk_buff *skb) ++{ ++ u8 *p; ++ int flag = 0; ++ int remain_len; ++ int base_len; ++ int len; ++ struct ieee80211_mgmt *mgmt; ++ struct ieee80211_hdr *wh; ++ ++ if (!skb) ++ return -1; ++ ++ wh = (struct ieee80211_hdr *) skb->data; ++ mgmt = (struct ieee80211_mgmt *) ((u8 *) skb->data); ++ ++ if (ieee80211_is_assoc_resp(wh->frame_control)) { ++ p = mgmt->u.assoc_resp.variable; ++ base_len = ++ (u8 *) mgmt->u.assoc_resp.variable - (u8 *) mgmt; ++ } else if (ieee80211_is_reassoc_resp(wh->frame_control)) { ++ p = mgmt->u.reassoc_resp.variable; ++ base_len = ++ (u8 *) mgmt->u.reassoc_resp.variable - (u8 *) mgmt; ++ } else if (ieee80211_is_probe_resp(wh->frame_control)) { ++ p = mgmt->u.probe_resp.variable; ++ base_len = ++ (u8 *) mgmt->u.probe_resp.variable - (u8 *) mgmt; ++ } else if (ieee80211_is_beacon(wh->frame_control)) { ++ p = mgmt->u.beacon.variable; ++ base_len = (u8 *) mgmt->u.beacon.variable - (u8 *) mgmt; ++ } else ++ return 1; ++ ++ ++ remain_len = skb->len - base_len; ++ ++ while (remain_len > 0) { ++ if (*p == 0xdd && *(p + 5) == 0x02) //wmm type ++ return 0; ++ else if (*p == 0x2d) //has ht cap ++ flag = 1; ++ ++ len = *(++p); ++ p += (len + 1); ++ remain_len -= (len + 2); ++ } ++ ++ if (remain_len < 0) { ++ esp_dbg(ESP_DBG_TRACE, ++ "%s remain_len %d, skb->len %d, base_len %d, flag %d", ++ __func__, remain_len, skb->len, base_len, flag); ++ return -2; ++ } ++ ++ if (flag == 1) { ++ skb_put(skb, 2 + sizeof(esp_wmm_param)); ++ ++ memset(p, 0xdd, sizeof(u8)); ++ memset(p + 1, sizeof(esp_wmm_param), sizeof(u8)); ++ memcpy(p + 2, &esp_wmm_param, sizeof(esp_wmm_param)); ++ ++ esp_dbg(ESP_DBG_TRACE, "esp_wmm_param"); ++ } ++ ++ return 0; ++} ++#endif /* NO_WMM_DUMMY */ ++ ++/* parse mac_rx_ctrl and return length */ ++static int sip_parse_mac_rx_info(struct esp_sip *sip, ++ struct esp_mac_rx_ctrl *mac_ctrl, ++ struct sk_buff *skb) ++{ ++ struct ieee80211_rx_status *rx_status = NULL; ++ struct ieee80211_hdr *hdr; ++ ++ rx_status = IEEE80211_SKB_RXCB(skb); ++ rx_status->freq = esp_ieee2mhz(mac_ctrl->channel); ++ ++ rx_status->signal = mac_ctrl->rssi + mac_ctrl->noise_floor; /* snr actually, need to offset noise floor e.g. -85 */ ++ ++ hdr = (struct ieee80211_hdr *) skb->data; ++ if (mac_ctrl->damatch0 == 1 && mac_ctrl->bssidmatch0 == 1 /*match bssid and da, but beacon package contain other bssid */ ++ && strncmp(hdr->addr2, sip->epub->wl.bssid, ETH_ALEN) == 0) { /* force match addr2 */ ++ if (++signal_loop >= SIGNAL_COUNT) { ++ avg_signal += rx_status->signal; ++ avg_signal /= SIGNAL_COUNT; ++ old_signal = rx_status->signal = (avg_signal + 5); ++ signal_loop = 0; ++ avg_signal = 0; ++ } else { ++ avg_signal += rx_status->signal; ++ rx_status->signal = old_signal; ++ } ++ } ++ ++ rx_status->antenna = 0; /* one antenna for now */ ++ rx_status->band = NL80211_BAND_2GHZ; ++ rx_status->flag = RX_FLAG_DECRYPTED | RX_FLAG_MMIC_STRIPPED; ++ if (mac_ctrl->sig_mode) { ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) ++ rx_status->encoding = RX_ENC_HT; ++#else ++ rx_status->flag |= RX_FLAG_HT; ++#endif ++ rx_status->rate_idx = mac_ctrl->MCS; ++ if (mac_ctrl->SGI) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) ++ rx_status->enc_flags |= RX_ENC_FLAG_SHORT_GI; ++#else ++ rx_status->flag |= RX_FLAG_SHORT_GI; ++#endif ++ } else { ++ rx_status->rate_idx = esp_wmac_rate2idx(mac_ctrl->rate); ++ } ++ if (mac_ctrl->rxend_state == RX_FCS_ERR) ++ rx_status->flag |= RX_FLAG_FAILED_FCS_CRC; ++ ++ /* Mic error frame flag */ ++ if (mac_ctrl->rxend_state == RX_TKIPMIC_ERR ++ || mac_ctrl->rxend_state == RX_CCMPMIC_ERR) { ++ if (atomic_read(&sip->epub->wl.tkip_key_set) == 1) { ++ rx_status->flag |= RX_FLAG_MMIC_ERROR; ++ atomic_set(&sip->epub->wl.tkip_key_set, 0); ++ printk("mic err\n"); ++ } else { ++ printk("mic err discard\n"); ++ } ++ } ++ //esp_dbg(ESP_DBG_LOG, "%s freq: %u; signal: %d; rate_idx %d; flag: %d \n", __func__, rx_status->freq, rx_status->signal, rx_status->rate_idx, rx_status->flag); ++ ++ do { ++ struct ieee80211_hdr *wh = ++ (struct ieee80211_hdr *) ((u8 *) skb->data); ++ ++#ifndef NO_WMM_DUMMY ++ if (ieee80211_is_mgmt(wh->frame_control)) ++ esp_add_wmm(skb); ++#endif ++ ++ /* some kernel e.g. 3.0.8 wrongly handles non-encrypted pkt like eapol */ ++ if (ieee80211_is_data(wh->frame_control)) { ++ if (!ieee80211_has_protected(wh->frame_control)) { ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s kiv_war, add iv_stripped flag \n", ++ __func__); ++ rx_status->flag |= RX_FLAG_IV_STRIPPED; ++ } else { ++ if ((atomic_read(&sip->epub->wl.ptk_cnt) == ++ 0 && !(wh->addr1[0] & 0x1)) ++ || (atomic_read(&sip->epub->wl.gtk_cnt) ++ == 0 && (wh->addr1[0] & 0x1))) { ++ esp_dbg(ESP_DBG_TRACE, ++ "%s ==kiv_war, got bogus enc pkt==\n", ++ __func__); ++ rx_status->flag |= ++ RX_FLAG_IV_STRIPPED; ++ //show_buf(skb->data, 32); ++ } ++ ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "%s kiv_war, got enc pkt \n", ++ __func__); ++ } ++ } ++ } while (0); ++ ++ return 0; ++} ++ ++static struct esp_mac_rx_ctrl *sip_parse_normal_mac_ctrl(struct sk_buff ++ *skb, ++ int *pkt_len_enc, ++ int *buf_len, ++ int *pulled_len) ++{ ++ struct esp_mac_rx_ctrl *mac_ctrl = NULL; ++ struct sip_hdr *hdr = (struct sip_hdr *) skb->data; ++ int len_in_hdr = hdr->len; ++ ++ ESSERT(skb != NULL); ++ ESSERT(skb->len > SIP_MIN_DATA_PKT_LEN); ++ ++ skb_pull(skb, sizeof(struct sip_hdr)); ++ *pulled_len += sizeof(struct sip_hdr); ++ mac_ctrl = (struct esp_mac_rx_ctrl *) skb->data; ++ if (!mac_ctrl->Aggregation) { ++ ESSERT(pkt_len_enc != NULL); ++ ESSERT(buf_len != NULL); ++ *pkt_len_enc = ++ (mac_ctrl->sig_mode ? mac_ctrl->HT_length : mac_ctrl-> ++ legacy_length) - FCS_LEN; ++ *buf_len = ++ len_in_hdr - sizeof(struct sip_hdr) - ++ sizeof(struct esp_mac_rx_ctrl); ++ } ++ skb_pull(skb, sizeof(struct esp_mac_rx_ctrl)); ++ *pulled_len += sizeof(struct esp_mac_rx_ctrl); ++ ++ return mac_ctrl; ++} ++ ++/* ++ * for one MPDU (including subframe in AMPDU) ++ * ++ */ ++static struct sk_buff *sip_parse_data_rx_info(struct esp_sip *sip, ++ struct sk_buff *skb, ++ int pkt_len_enc, int buf_len, ++ struct esp_mac_rx_ctrl ++ *mac_ctrl, int *pulled_len) ++{ ++ /* ++ * | mac_rx_ctrl | real_data_payload | ampdu_entries | ++ */ ++ //without enc ++ int pkt_len = 0; ++ struct sk_buff *rskb = NULL; ++ int ret; ++ ++ if (mac_ctrl->Aggregation) { ++ struct ieee80211_hdr *wh = ++ (struct ieee80211_hdr *) skb->data; ++ pkt_len = pkt_len_enc; ++ if (ieee80211_has_protected(wh->frame_control)) //ampdu, it is CCMP enc ++ pkt_len -= 8; ++ buf_len = roundup(pkt_len, 4); ++ } else ++ pkt_len = buf_len - 3 + ((pkt_len_enc - 1) & 0x3); ++ esp_dbg(ESP_DBG_TRACE, ++ "%s pkt_len %u, pkt_len_enc %u!, delta %d \n", __func__, ++ pkt_len, pkt_len_enc, pkt_len_enc - pkt_len); ++ do { ++#ifndef NO_WMM_DUMMY ++ rskb = ++ __dev_alloc_skb(pkt_len_enc + sizeof(esp_wmm_param) + ++ 2, GFP_ATOMIC); ++#else ++ rskb = __dev_alloc_skb(pkt_len_enc, GFP_ATOMIC); ++#endif /* NO_WMM_DUMMY */ ++ if (unlikely(rskb == NULL)) { ++ esp_sip_dbg(ESP_DBG_ERROR, "%s no mem for rskb\n", ++ __func__); ++ return NULL; ++ } ++ skb_put(rskb, pkt_len_enc); ++ } while (0); ++ ++ do { ++ memcpy(rskb->data, skb->data, pkt_len); ++ if (pkt_len_enc > pkt_len) { ++ memset(rskb->data + pkt_len, 0, ++ pkt_len_enc - pkt_len); ++ } ++ /* strip out current pkt, move to the next one */ ++ skb_pull(skb, buf_len); ++ *pulled_len += buf_len; ++ } while (0); ++ ++ ret = sip_parse_mac_rx_info(sip, mac_ctrl, rskb); ++ if (ret == -1 && !mac_ctrl->Aggregation) { ++ kfree_skb(rskb); ++ return NULL; ++ } ++ ++ esp_dbg(ESP_DBG_LOG, ++ "%s after pull headers, skb->len %d rskb->len %d \n", ++ __func__, skb->len, rskb->len); ++ ++ return rskb; ++} ++ ++struct esp_sip *sip_attach(struct esp_pub *epub) ++{ ++ struct esp_sip *sip = NULL; ++ struct sip_pkt *pkt = NULL; ++ int i; ++#ifndef ESP_PREALLOC ++ int po = 0; ++#endif ++ ++ sip = kzalloc(sizeof(struct esp_sip), GFP_KERNEL); ++ if (sip == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "no mem for sip! \n"); ++ goto _err_sip; ++ } ++#ifdef ESP_PREALLOC ++ sip->tx_aggr_buf = (u8 *) esp_get_tx_aggr_buf(); ++#else ++ po = get_order(SIP_TX_AGGR_BUF_SIZE); ++ sip->tx_aggr_buf = (u8 *) __get_free_pages(GFP_ATOMIC, po); ++#endif ++ if (sip->tx_aggr_buf == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "no mem for tx_aggr_buf! \n"); ++ goto _err_aggr; ++ } ++ ++ spin_lock_init(&sip->lock); ++ ++ INIT_LIST_HEAD(&sip->free_ctrl_txbuf); ++ INIT_LIST_HEAD(&sip->free_ctrl_rxbuf); ++ ++ for (i = 0; i < SIP_CTRL_BUF_N; i++) { ++ pkt = kzalloc(sizeof(struct sip_pkt), GFP_KERNEL); ++ ++ if (!pkt) ++ goto _err_pkt; ++ ++ pkt->buf_begin = kzalloc(SIP_CTRL_BUF_SZ, GFP_KERNEL); ++ ++ if (pkt->buf_begin == NULL) { ++ kfree(pkt); ++ pkt = NULL; ++ goto _err_pkt; ++ } ++ ++ pkt->buf_len = SIP_CTRL_BUF_SZ; ++ pkt->buf = pkt->buf_begin; ++ ++ if (i < SIP_CTRL_TXBUF_N) { ++ list_add_tail(&pkt->list, &sip->free_ctrl_txbuf); ++ } else { ++ list_add_tail(&pkt->list, &sip->free_ctrl_rxbuf); ++ } ++ } ++ ++ mutex_init(&sip->rx_mtx); ++ skb_queue_head_init(&sip->rxq); ++ INIT_WORK(&sip->rx_process_work, sip_rxq_process); ++ ++ sip->epub = epub; ++ atomic_set(&sip->noise_floor, -96); ++ ++ atomic_set(&sip->state, SIP_INIT); ++ atomic_set(&sip->tx_credits, 0); ++ ++ if (sip->rawbuf == NULL) { ++ sip->rawbuf = kzalloc(SIP_BOOT_BUF_SIZE, GFP_KERNEL); ++ if (sip->rawbuf == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "no mem for rawbuf! \n"); ++ goto _err_pkt; ++ } ++ } ++ ++ atomic_set(&sip->state, SIP_PREPARE_BOOT); ++ ++ return sip; ++ ++ _err_pkt: ++ sip_free_init_ctrl_buf(sip); ++ ++ if (sip->tx_aggr_buf) { ++#ifdef ESP_PREALLOC ++ esp_put_tx_aggr_buf(&sip->tx_aggr_buf); ++#else ++ po = get_order(SIP_TX_AGGR_BUF_SIZE); ++ free_pages((unsigned long) sip->tx_aggr_buf, po); ++ sip->tx_aggr_buf = NULL; ++#endif ++ } ++ _err_aggr: ++ if (sip) { ++ kfree(sip); ++ sip = NULL; ++ } ++ _err_sip: ++ return NULL; ++ ++} ++ ++static void sip_free_init_ctrl_buf(struct esp_sip *sip) ++{ ++ struct sip_pkt *pkt, *tpkt; ++ ++ list_for_each_entry_safe(pkt, tpkt, &sip->free_ctrl_txbuf, list) { ++ list_del(&pkt->list); ++ kfree(pkt->buf_begin); ++ kfree(pkt); ++ } ++ ++ list_for_each_entry_safe(pkt, tpkt, &sip->free_ctrl_rxbuf, list) { ++ list_del(&pkt->list); ++ kfree(pkt->buf_begin); ++ kfree(pkt); ++ } ++} ++ ++void sip_detach(struct esp_sip *sip) ++{ ++#ifndef ESP_PREALLOC ++ int po; ++#endif ++ if (sip == NULL) ++ return; ++ ++ esp_dbg(ESP_DBG_TRACE, "sip_detach: sip_free_init_ctrl_buf()"); ++ sip_free_init_ctrl_buf(sip); ++ ++ if (atomic_read(&sip->state) == SIP_RUN) { ++ ++ sif_disable_target_interrupt(sip->epub); ++ ++ atomic_set(&sip->state, SIP_STOP); ++ ++ /* disable irq here */ ++ sif_disable_irq(sip->epub); ++ cancel_work_sync(&sip->rx_process_work); ++ ++ skb_queue_purge(&sip->rxq); ++ mutex_destroy(&sip->rx_mtx); ++ cancel_work(&sip->epub->sendup_work); // Must be non-sync ++ skb_queue_purge(&sip->epub->rxq); ++ ++#ifdef ESP_NO_MAC80211 ++ unregister_netdev(sip->epub->net_dev); ++ wiphy_unregister(sip->epub->wdev->wiphy); ++#else ++ if (test_and_clear_bit ++ (ESP_WL_FLAG_HW_REGISTERED, &sip->epub->wl.flags)) { ++ ieee80211_unregister_hw(sip->epub->hw); ++ } ++#endif ++ ++ /* cancel all worker/timer */ ++ cancel_work_sync(&sip->epub->tx_work); ++ skb_queue_purge(&sip->epub->txq); ++ skb_queue_purge(&sip->epub->txdoneq); ++ ++#ifdef ESP_PREALLOC ++ esp_put_tx_aggr_buf(&sip->tx_aggr_buf); ++#else ++ po = get_order(SIP_TX_AGGR_BUF_SIZE); ++ free_pages((unsigned long) sip->tx_aggr_buf, po); ++ sip->tx_aggr_buf = NULL; ++#endif ++ ++ atomic_set(&sip->state, SIP_INIT); ++ } else if (atomic_read(&sip->state) >= SIP_BOOT ++ && atomic_read(&sip->state) <= SIP_WAIT_BOOTUP) { ++ ++ sif_disable_target_interrupt(sip->epub); ++ atomic_set(&sip->state, SIP_STOP); ++ ++ sif_disable_irq(sip->epub); ++ ++ if (sip->rawbuf) ++ kfree(sip->rawbuf); ++ ++ if (atomic_read(&sip->state) == SIP_SEND_INIT) { ++ cancel_work_sync(&sip->rx_process_work); ++ skb_queue_purge(&sip->rxq); ++ mutex_destroy(&sip->rx_mtx); ++ cancel_work_sync(&sip->epub->sendup_work); ++ skb_queue_purge(&sip->epub->rxq); ++ } ++#ifdef ESP_NO_MAC80211 ++ unregister_netdev(sip->epub->net_dev); ++ wiphy_unregister(sip->epub->wdev->wiphy); ++#else ++ if (test_and_clear_bit ++ (ESP_WL_FLAG_HW_REGISTERED, &sip->epub->wl.flags)) { ++ ieee80211_unregister_hw(sip->epub->hw); ++ } ++#endif ++ atomic_set(&sip->state, SIP_INIT); ++ } else ++ esp_dbg(ESP_DBG_ERROR, "%s wrong state %d\n", __func__, ++ atomic_read(&sip->state)); ++ ++ kfree(sip); ++} ++ ++int sip_write_memory(struct esp_sip *sip, u32 addr, u8 * buf, u16 len) ++{ ++ struct sip_cmd_write_memory *cmd; ++ struct sip_hdr *chdr; ++ u16 remains, hdrs, bufsize; ++ u32 loadaddr; ++ u8 *src; ++ int err = 0; ++ u32 *t = NULL; ++ ++ if (sip == NULL || sip->rawbuf == NULL) { ++ ESSERT(sip != NULL); ++ ESSERT(sip->rawbuf != NULL); ++ return -EINVAL; ++ } ++ ++ memset(sip->rawbuf, 0, SIP_BOOT_BUF_SIZE); ++ ++ chdr = (struct sip_hdr *) sip->rawbuf; ++ SIP_HDR_SET_TYPE(chdr->fc[0], SIP_CTRL); ++ chdr->c_cmdid = SIP_CMD_WRITE_MEMORY; ++ ++ remains = len; ++ hdrs = ++ sizeof(struct sip_hdr) + sizeof(struct sip_cmd_write_memory); ++ ++ while (remains) { ++ src = &buf[len - remains]; ++ loadaddr = addr + (len - remains); ++ ++ if (remains < (SIP_BOOT_BUF_SIZE - hdrs)) { ++ /* aligned with 4 bytes */ ++ bufsize = roundup(remains, 4); ++ memset(sip->rawbuf + hdrs, 0, bufsize); ++ remains = 0; ++ } else { ++ bufsize = SIP_BOOT_BUF_SIZE - hdrs; ++ remains -= bufsize; ++ } ++ ++ chdr->len = bufsize + hdrs; ++ chdr->seq = sip->txseq++; ++ cmd = ++ (struct sip_cmd_write_memory *) (sip->rawbuf + ++ SIP_CTRL_HDR_LEN); ++ cmd->len = bufsize; ++ cmd->addr = loadaddr; ++ memcpy(sip->rawbuf + hdrs, src, bufsize); ++ ++ t = (u32 *) sip->rawbuf; ++ esp_dbg(ESP_DBG_TRACE, ++ "%s t0: 0x%08x t1: 0x%08x t2:0x%08x loadaddr 0x%08x \n", ++ __func__, t[0], t[1], t[2], loadaddr); ++ ++ err = ++ esp_common_write(sip->epub, sip->rawbuf, chdr->len, ++ ESP_SIF_SYNC); ++ ++ if (err) { ++ esp_dbg(ESP_DBG_ERROR, "%s send buffer failed\n", ++ __func__); ++ return err; ++ } ++ // 1ms is enough, in fact on dell-d430, need not delay at all. ++ mdelay(1); ++ ++ } ++ ++ return err; ++} ++ ++int sip_send_cmd(struct esp_sip *sip, int cid, u32 cmdlen, void *cmd) ++{ ++ struct sip_hdr *chdr; ++ struct sip_pkt *pkt = NULL; ++ int ret = 0; ++ ++ pkt = sip_get_ctrl_buf(sip, SIP_TX_CTRL_BUF); ++ ++ if (pkt == NULL) ++ return -ENOMEM; ++ ++ chdr = (struct sip_hdr *) pkt->buf_begin; ++ chdr->len = SIP_CTRL_HDR_LEN + cmdlen; ++ chdr->seq = sip->txseq++; ++ chdr->c_cmdid = cid; ++ ++ ++ if (cmd) { ++ memset(pkt->buf, 0, cmdlen); ++ memcpy(pkt->buf, (u8 *) cmd, cmdlen); ++ } ++ ++ esp_dbg(ESP_DBG_TRACE, "cid %d, len %u, seq %u \n", chdr->c_cmdid, ++ chdr->len, chdr->seq); ++ ++ esp_dbg(ESP_DBG_TRACE, "c1 0x%08x c2 0x%08x\n", ++ *(u32 *) & pkt->buf[0], *(u32 *) & pkt->buf[4]); ++ ++ ret = ++ esp_common_write(sip->epub, pkt->buf_begin, chdr->len, ++ ESP_SIF_SYNC); ++ ++ if (ret) ++ esp_dbg(ESP_DBG_ERROR, "%s send cmd %d failed \n", ++ __func__, cid); ++ ++ sip_reclaim_ctrl_buf(sip, pkt, SIP_TX_CTRL_BUF); ++ ++ /* ++ * Hack here: reset tx/rx seq before target ram code is up... ++ */ ++ if (cid == SIP_CMD_BOOTUP) { ++ sip->rxseq = 0; ++ sip->txseq = 0; ++ sip->txdataseq = 0; ++ } ++ ++ return ret; ++} ++ ++struct sk_buff *sip_alloc_ctrl_skbuf(struct esp_sip *sip, u16 len, u32 cid) ++{ ++ struct sip_hdr *si = NULL; ++ struct ieee80211_tx_info *ti = NULL; ++ struct sk_buff *skb = NULL; ++ ++ ESSERT(len <= sip->tx_blksz); ++ ++ /* no need to reserve space for net stack */ ++ skb = __dev_alloc_skb(len, GFP_KERNEL); ++ ++ if (skb == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "no skb for ctrl !\n"); ++ return NULL; ++ } ++ ++ skb->len = len; ++ ++ ti = IEEE80211_SKB_CB(skb); ++ /* set tx_info flags to 0xffffffff to indicate sip_ctrl pkt */ ++ ti->flags = 0xffffffff; ++ si = (struct sip_hdr *) skb->data; ++ memset(si, 0, sizeof(struct sip_hdr)); ++ SIP_HDR_SET_TYPE(si->fc[0], SIP_CTRL); ++ si->len = len; ++ si->c_cmdid = cid; ++ ++ return skb; ++} ++ ++void sip_free_ctrl_skbuff(struct esp_sip *sip, struct sk_buff *skb) ++{ ++ memset(IEEE80211_SKB_CB(skb), 0, sizeof(struct ieee80211_tx_info)); ++ kfree_skb(skb); ++} ++ ++static struct sip_pkt *sip_get_ctrl_buf(struct esp_sip *sip, ++ SIP_BUF_TYPE bftype) ++{ ++ struct sip_pkt *pkt = NULL; ++ struct list_head *bflist; ++ struct sip_hdr *chdr; ++ ++ bflist = ++ (bftype == ++ SIP_TX_CTRL_BUF) ? &sip->free_ctrl_txbuf : &sip-> ++ free_ctrl_rxbuf; ++ ++ spin_lock_bh(&sip->lock); ++ ++ if (list_empty(bflist)) { ++ spin_unlock_bh(&sip->lock); ++ return NULL; ++ } ++ ++ pkt = list_first_entry(bflist, struct sip_pkt, list); ++ list_del(&pkt->list); ++ spin_unlock_bh(&sip->lock); ++ ++ if (bftype == SIP_TX_CTRL_BUF) { ++ chdr = (struct sip_hdr *) pkt->buf_begin; ++ SIP_HDR_SET_TYPE(chdr->fc[0], SIP_CTRL); ++ pkt->buf = pkt->buf_begin + SIP_CTRL_HDR_LEN; ++ } else { ++ pkt->buf = pkt->buf_begin; ++ } ++ ++ return pkt; ++} ++ ++static void ++sip_reclaim_ctrl_buf(struct esp_sip *sip, struct sip_pkt *pkt, ++ SIP_BUF_TYPE bftype) ++{ ++ struct list_head *bflist = NULL; ++ ++ if (bftype == SIP_TX_CTRL_BUF) ++ bflist = &sip->free_ctrl_txbuf; ++ else if (bftype == SIP_RX_CTRL_BUF) ++ bflist = &sip->free_ctrl_rxbuf; ++ else ++ return; ++ ++ pkt->buf = pkt->buf_begin; ++ ++ spin_lock_bh(&sip->lock); ++ list_add_tail(&pkt->list, bflist); ++ spin_unlock_bh(&sip->lock); ++} ++ ++int sip_poll_bootup_event(struct esp_sip *sip) ++{ ++ int ret = 0; ++ ++ esp_dbg(ESP_DBG_TRACE, "polling bootup event... \n"); ++ ++ if (gl_bootup_cplx) ++ ret = wait_for_completion_timeout(gl_bootup_cplx, 2 * HZ); ++ ++ esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret); ++ if (ret <= 0) { ++ esp_dbg(ESP_DBG_ERROR, "bootup event timeout\n"); ++ return -ETIMEDOUT; ++ } ++ ++ if (sif_get_ate_config() == 0) { ++ ret = esp_register_mac80211(sip->epub); ++ } ++#ifdef TEST_MODE ++ ret = test_init_netlink(sip); ++ if (ret < 0) { ++ esp_sip_dbg(ESP_DBG_TRACE, ++ "esp_sdio: failed initializing netlink\n"); ++ return ret; ++ } ++#endif ++ ++ atomic_set(&sip->state, SIP_RUN); ++ esp_dbg(ESP_DBG_TRACE, "target booted up\n"); ++ ++ return ret; ++} ++ ++int sip_poll_resetting_event(struct esp_sip *sip) ++{ ++ int ret = 0; ++ ++ esp_dbg(ESP_DBG_TRACE, "polling resetting event... \n"); ++ ++ if (gl_bootup_cplx) ++ ret = wait_for_completion_timeout(gl_bootup_cplx, 10 * HZ); ++ ++ esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret); ++ if (ret <= 0) { ++ esp_dbg(ESP_DBG_ERROR, "resetting event timeout\n"); ++ return -ETIMEDOUT; ++ } ++ ++ esp_dbg(ESP_DBG_TRACE, "target resetting %d %p\n", ret, ++ gl_bootup_cplx); ++ ++ return 0; ++} ++ ++ ++#ifdef FPGA_DEBUG ++ ++/* bogus bootup cmd for FPGA debugging */ ++int sip_send_bootup(struct esp_sip *sip) ++{ ++ int ret; ++ struct sip_cmd_bootup bootcmd; ++ ++ esp_dbg(ESP_DBG_LOG, "sending bootup\n"); ++ ++ bootcmd.boot_addr = 0; ++ ret = ++ sip_send_cmd(sip, SIP_CMD_BOOTUP, ++ sizeof(struct sip_cmd_bootup), &bootcmd); ++ ++ return ret; ++} ++ ++#endif /* FPGA_DEBUG */ ++ ++bool sip_queue_need_stop(struct esp_sip * sip) ++{ ++ return atomic_read(&sip->tx_data_pkt_queued) >= ++ SIP_STOP_QUEUE_THRESHOLD || (atomic_read(&sip->tx_credits) < 8 ++ && atomic_read(&sip-> ++ tx_data_pkt_queued) ++ >= ++ SIP_STOP_QUEUE_THRESHOLD / 4 * 3); ++} ++ ++bool sip_queue_may_resume(struct esp_sip * sip) ++{ ++ return atomic_read(&sip->epub->txq_stopped) ++ && !test_bit(ESP_WL_FLAG_STOP_TXQ, &sip->epub->wl.flags) ++ && ((atomic_read(&sip->tx_credits) >= 16 ++ && atomic_read(&sip->tx_data_pkt_queued) < ++ SIP_RESUME_QUEUE_THRESHOLD * 2) ++ || atomic_read(&sip->tx_data_pkt_queued) < ++ SIP_RESUME_QUEUE_THRESHOLD); ++} ++ ++int sip_cmd_enqueue(struct esp_sip *sip, struct sk_buff *skb, int prior) ++{ ++ if (!sip || !sip->epub) { ++ esp_dbg(ESP_DBG_ERROR, "func %s, sip->epub->txq is NULL\n", ++ __func__); ++ return -EINVAL; ++ } ++ ++ if (!skb) { ++ esp_dbg(ESP_DBG_ERROR, "func %s, skb is NULL\n", __func__); ++ return -EINVAL; ++ } ++ ++ if (prior == ENQUEUE_PRIOR_HEAD) ++ skb_queue_head(&sip->epub->txq, skb); ++ else ++ skb_queue_tail(&sip->epub->txq, skb); ++ ++ if (sif_get_ate_config() == 0) { ++ ieee80211_queue_work(sip->epub->hw, &sip->epub->tx_work); ++ } else { ++ queue_work(sip->epub->esp_wkq, &sip->epub->tx_work); ++ } ++ return 0; ++} ++ ++void sip_tx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb) ++{ ++ if (!epub || !epub->sip) { ++ if (!epub) ++ esp_dbg(ESP_DBG_ERROR, "func %s, epub is NULL\n", ++ __func__); ++ else ++ esp_dbg(ESP_DBG_ERROR, ++ "func %s, epub->sip is NULL\n", __func__); ++ ++ return; ++ } ++ if (!skb) { ++ esp_dbg(ESP_DBG_ERROR, "func %s, skb is NULL\n", __func__); ++ return; ++ } ++ skb_queue_tail(&epub->txq, skb); ++ atomic_inc(&epub->sip->tx_data_pkt_queued); ++ if (sip_queue_need_stop(epub->sip)) { ++ if (epub->hw) { ++ ieee80211_stop_queues(epub->hw); ++ atomic_set(&epub->txq_stopped, true); ++ } ++ ++ } ++} ++ ++#ifdef FPGA_TXDATA ++int sip_send_tx_data(struct esp_sip *sip) ++{ ++ struct sk_buff *skb = NULL; ++ struct sip_cmd_bss_info_update *bsscmd; ++ ++ skb = ++ sip_alloc_ctrl_skbuf(epub->sip, ++ sizeof(struct sip_cmd_bss_info_update), ++ SIP_CMD_BSS_INFO_UPDATE); ++ if (!skb) ++ return -EINVAL; ++ ++ bsscmd = ++ (struct sip_cmd_bss_info_update *) (skb->data + ++ sizeof(struct ++ sip_tx_info)); ++ bsscmd->isassoc = (assoc == true) ? 1 : 0; ++ memcpy(bsscmd->bssid, bssid, ETH_ALEN); ++ STRACE_SHOW(epub->sip); ++ return sip_cmd_enqueue(epub->sip, skb, ENQUEUE_PRIOR_TAIL); ++} ++#endif /* FPGA_TXDATA */ +diff --git a/drivers/net/wireless/esp8089/esp_sip.h b/drivers/net/wireless/esp8089/esp_sip.h +new file mode 100644 +index 000000000000..95cc42989b2c +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_sip.h +@@ -0,0 +1,171 @@ ++/* ++ * Copyright (c) 2009- 2014 Espressif System. ++ * ++ * Serial Interconnctor Protocol ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_SIP_H ++#define _ESP_SIP_H ++ ++#include "sip2_common.h" ++ ++#define SIP_CTRL_CREDIT_RESERVE 2 ++ ++#define SIP_PKT_MAX_LEN (1024*16) ++ ++/* 16KB on normal X86 system, should check before porting to orhters */ ++ ++#define SIP_TX_AGGR_BUF_SIZE (4 * PAGE_SIZE) ++#define SIP_RX_AGGR_BUF_SIZE (4 * PAGE_SIZE) ++ ++struct sk_buff; ++ ++struct sip_pkt { ++ struct list_head list; ++ ++ u8 *buf_begin; ++ u32 buf_len; ++ u8 *buf; ++}; ++ ++typedef enum RECALC_CREDIT_STATE { ++ RECALC_CREDIT_DISABLE = 0, ++ RECALC_CREDIT_ENABLE = 1, ++} RECALC_CREDIT_STATE; ++ ++typedef enum ENQUEUE_PRIOR { ++ ENQUEUE_PRIOR_TAIL = 0, ++ ENQUEUE_PRIOR_HEAD, ++} ENQUEUE_PRIOR; ++ ++typedef enum SIP_STATE { ++ SIP_INIT = 0, ++ SIP_PREPARE_BOOT, ++ SIP_BOOT, ++ SIP_SEND_INIT, ++ SIP_WAIT_BOOTUP, ++ SIP_RUN, ++ SIP_SUSPEND, ++ SIP_STOP ++} SIP_STATE; ++ ++enum sip_notifier { ++ SIP_TX_DONE = 1, ++ SIP_RX_DONE = 2, ++}; ++ ++#define SIP_CREDITS_LOW_THRESHOLD 64 //i.e. 4k ++ ++struct esp_sip { ++ struct list_head free_ctrl_txbuf; ++ struct list_head free_ctrl_rxbuf; ++ ++ u32 rxseq; /* sip pkt seq, should match target side */ ++ u32 txseq; ++ u32 txdataseq; ++ ++ u8 to_host_seq; ++ ++ atomic_t state; ++ spinlock_t lock; ++ atomic_t tx_credits; ++ ++ atomic_t tx_ask_credit_update; ++ ++ u8 *rawbuf; /* used in boot stage, free once chip is fully up */ ++ u8 *tx_aggr_buf; ++ u8 *tx_aggr_write_ptr; /* update after insertion of each pkt */ ++ u8 *tx_aggr_lastpkt_ptr; ++ ++ struct mutex rx_mtx; ++ struct sk_buff_head rxq; ++ struct work_struct rx_process_work; ++ ++ u16 tx_blksz; ++ u16 rx_blksz; ++ ++ bool dump_rpbm_err; ++ bool sendup_rpbm_pkt; ++ bool rxabort_fixed; ++ bool support_bgscan; ++ u8 credit_to_reserve; ++ ++ atomic_t credit_status; ++ struct timer_list credit_timer; ++ ++ atomic_t noise_floor; ++ ++ u32 tx_tot_len; /* total len for one transaction */ ++ u32 rx_tot_len; ++ ++ atomic_t rx_handling; ++ atomic_t tx_data_pkt_queued; ++ ++ atomic_t data_tx_stopped; ++ atomic_t tx_stopped; ++ ++ struct esp_pub *epub; ++}; ++ ++int sip_rx(struct esp_pub *epub); ++//int sip_download_fw(struct esp_sip *sip, u32 load_addr, u32 boot_addr); ++ ++ ++int sip_write_memory(struct esp_sip *, u32 addr, u8 * buf, u16 len); ++ ++void sip_credit_process(struct esp_pub *, u8 credits); ++ ++int sip_send_cmd(struct esp_sip *sip, int cid, u32 cmdlen, void *cmd); ++ ++struct esp_sip *sip_attach(struct esp_pub *); ++ ++int sip_post_init(struct esp_sip *sip, struct sip_evt_bootup2 *bevt); ++ ++void sip_detach(struct esp_sip *sip); ++ ++void sip_txq_process(struct esp_pub *epub); ++ ++struct sk_buff *sip_alloc_ctrl_skbuf(struct esp_sip *sip, u16 len, ++ u32 cid); ++ ++void sip_free_ctrl_skbuff(struct esp_sip *sip, struct sk_buff *skb); ++ ++bool sip_queue_need_stop(struct esp_sip *sip); ++bool sip_queue_may_resume(struct esp_sip *sip); ++bool sip_tx_data_need_stop(struct esp_sip *sip); ++bool sip_tx_data_may_resume(struct esp_sip *sip); ++ ++void sip_tx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb); ++void sip_rx_data_pkt_enqueue(struct esp_pub *epub, struct sk_buff *skb); ++ ++int sip_cmd_enqueue(struct esp_sip *sip, struct sk_buff *skb, int prior); ++ ++int sip_poll_bootup_event(struct esp_sip *sip); ++ ++int sip_poll_resetting_event(struct esp_sip *sip); ++ ++void sip_trigger_txq_process(struct esp_sip *sip); ++ ++void sip_send_chip_init(struct esp_sip *sip); ++ ++bool mod_support_no_txampdu(void); ++ ++bool mod_support_no_rxampdu(void); ++ ++void mod_support_no_txampdu_set(bool value); ++ ++#ifdef FPGA_DEBUG ++int sip_send_bootup(struct esp_sip *sip); ++#endif /* FPGA_DEBUG */ ++void sip_debug_show(struct esp_sip *sip); ++#endif +diff --git a/drivers/net/wireless/esp8089/esp_utils.c b/drivers/net/wireless/esp8089/esp_utils.c +new file mode 100644 +index 000000000000..8b188de79b2c +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_utils.c +@@ -0,0 +1,262 @@ ++/* ++ * Copyright (c) 2009 - 2014 Espressif System. ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#include "linux/types.h" ++#include "linux/kernel.h" ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "esp_pub.h" ++#include "esp_utils.h" ++#include "esp_wmac.h" ++#include "esp_debug.h" ++ ++/* ++ * Convert IEEE channel number to MHz frequency. ++ */ ++u32 esp_ieee2mhz(u8 chan) ++{ ++ if (chan == 14) ++ return 2484; ++ ++ if (chan < 14) ++ return 2407 + chan * 5; ++ else ++ return 2512 + ((chan - 15) * 20); ++ //TODO, add 5GHz ++} ++ ++enum { ++ ESP_RATE_1_LONG = 0x0, ++ ESP_RATE_2_LONG = 0x1, ++ ESP_RATE_2_SHORT = 0x5, ++ ESP_RATE_5_SHORT = 0x6, ++ ESP_RATE_5_LONG = 0x2, ++ ESP_RATE_11_SHORT = 0x7, ++ ESP_RATE_11_LONG = 0x3, ++ ESP_RATE_6 = 0xb, ++ ESP_RATE_9 = 0xf, ++ ESP_RATE_12 = 0xa, ++ ESP_RATE_18 = 0xe, ++ ESP_RATE_24 = 0x9, ++ ESP_RATE_36 = 0xd, ++ ESP_RATE_48 = 0x8, ++ ESP_RATE_54 = 0xc, ++ /* ESP_RATE_MCS0 =0x10, ++ ESP_RATE_MCS1 =0x11, ++ ESP_RATE_MCS2 =0x12, ++ ESP_RATE_MCS3 =0x13, ++ ESP_RATE_MCS4 =0x14, ++ ESP_RATE_MCS5 =0x15, ++ ESP_RATE_MCS6 =0x16, ++ ESP_RATE_MCS7 =0x17, ++ */ ++}; ++ ++static u8 esp_rate_table[20] = { ++ ESP_RATE_1_LONG, ++ ESP_RATE_2_SHORT, ++ ESP_RATE_5_SHORT, ++ ESP_RATE_11_SHORT, ++ ESP_RATE_6, ++ ESP_RATE_9, ++ ESP_RATE_12, ++ ESP_RATE_18, ++ ESP_RATE_24, ++ ESP_RATE_36, ++ ESP_RATE_48, ++ ESP_RATE_54, ++ /* ESP_RATE_MCS0, ++ ESP_RATE_MCS1, ++ ESP_RATE_MCS2, ++ ESP_RATE_MCS3, ++ ESP_RATE_MCS4, ++ ESP_RATE_MCS5, ++ ESP_RATE_MCS6, ++ ESP_RATE_MCS7, ++ */ ++}; ++ ++s8 esp_wmac_rate2idx(u8 rate) ++{ ++ int i; ++ ++ if (rate == ESP_RATE_2_LONG) ++ return 1; ++ if (rate == ESP_RATE_5_LONG) ++ return 2; ++ if (rate == ESP_RATE_11_LONG) ++ return 3; ++ ++ for (i = 0; i < 20; i++) { ++ if (rate == esp_rate_table[i]) ++ return i; ++ } ++ ++ esp_dbg(ESP_DBG_ERROR, "%s unknown rate 0x%02x \n", __func__, ++ rate); ++ ++ return 0; ++} ++ ++bool esp_wmac_rxsec_error(u8 error) ++{ ++ return (error >= RX_SECOV_ERR && error <= RX_SECFIFO_TIMEOUT) ++ || (error >= RX_WEPICV_ERR && error <= RX_WAPIMIC_ERR); ++} ++ ++int esp_cipher2alg(int cipher) ++{ ++ if (cipher == WLAN_CIPHER_SUITE_TKIP) ++ return ALG_TKIP; ++ ++ if (cipher == WLAN_CIPHER_SUITE_CCMP) ++ return ALG_CCMP; ++ ++ if (cipher == WLAN_CIPHER_SUITE_WEP40 ++ || cipher == WLAN_CIPHER_SUITE_WEP104) ++ return ALG_WEP; ++ ++ if (cipher == WLAN_CIPHER_SUITE_AES_CMAC) ++ return ALG_AES_CMAC; ++ ++ //printk("%s wrong cipher 0x%x!\n",__func__,cipher); ++ ++ return -1; ++} ++ ++#ifdef RX_CHECKSUM_TEST ++atomic_t g_iv_len; ++void esp_rx_checksum_test(struct sk_buff *skb) ++{ ++ static u32 ip_err = 0; ++ static u32 tcp_err = 0; ++ struct ieee80211_hdr *pwh = (struct ieee80211_hdr *) skb->data; ++ int hdrlen = ieee80211_hdrlen(pwh->frame_control); ++ ++ if (ieee80211_has_protected(pwh->frame_control)) ++ hdrlen += atomic_read(&g_iv_len); ++ ++ if (ieee80211_is_data(pwh->frame_control)) { ++ struct llc_snap_hdr *llc = ++ (struct llc_snap_hdr *) (skb->data + hdrlen); ++ if (ntohs(llc->eth_type) == ETH_P_IP) { ++ int llclen = sizeof(struct llc_snap_hdr); ++ struct iphdr *iph = ++ (struct iphdr *) (skb->data + hdrlen + llclen); ++ __sum16 csum_bak = iph->check; ++ ++ iph->check = 0; ++ iph->check = ip_fast_csum(iph, iph->ihl); ++ if (iph->check != csum_bak) { ++ esp_dbg(ESP_DBG_ERROR, ++ "total ip checksum error %d\n", ++ ++ip_err); ++ } ++ iph->check = csum_bak; ++ ++ if (iph->protocol == 0x06) { ++ struct tcphdr *tcph = ++ (struct tcphdr *) (skb->data + hdrlen + ++ llclen + ++ iph->ihl * 4); ++ int datalen = ++ skb->len - (hdrlen + llclen + ++ iph->ihl * 4); ++ csum_bak = tcph->check; ++ ++ tcph->check = 0; ++ tcph->check = ++ tcp_v4_check(datalen, iph->saddr, ++ iph->daddr, ++ csum_partial((char *) ++ tcph, ++ datalen, 0)); ++ if (tcph->check != csum_bak) { ++ esp_dbg(ESP_DBG_ERROR, ++ "total tcp checksum error %d\n", ++ ++tcp_err); ++ } ++ tcph->check = csum_bak; ++ } ++ } ++ } ++} ++ ++#endif ++ ++#ifdef GEN_ERR_CHECKSUM ++ ++void esp_gen_err_checksum(struct sk_buff *skb) ++{ ++ static u32 tx_seq = 0; ++ if ((tx_seq++ % 16) == 0) { ++ struct ieee80211_hdr *hdr = ++ (struct ieee80211_hdr *) skb->data; ++ int hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ ++ if (ieee80211_has_protected(pwh->frame_control)) ++ hdrlen += ++ IEEE80211_SKB_CB(skb)->control.hw_key->iv_len; ++ ++ struct llc_snap_hdr *llc = ++ (struct llc_snap_hdr *) (skb->data + hdrlen); ++ if (ntohs(llc->eth_type) == ETH_P_IP) { ++ int llclen = sizeof(struct llc_snap_hdr); ++ struct iphdr *iph = ++ (struct iphdr *) (skb->data + hdrlen + llclen); ++ ++ iph->check = ~iph->check; ++ ++ if (iph->protocol == 0x06) { ++ struct tcphdr *tcph = ++ (struct tcphdr *) (skb->data + hdrlen + ++ llclen + ++ iph->ihl * 4); ++ tcph->check = ~tcph->check; ++ } ++ } ++ } ++} ++#endif ++ ++bool esp_is_ip_pkt(struct sk_buff *skb) ++{ ++ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; ++ int hdrlen; ++ struct llc_snap_hdr *llc; ++ ++ if (!ieee80211_is_data(hdr->frame_control)) ++ return false; ++ ++ hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ if (ieee80211_has_protected(hdr->frame_control)) ++ hdrlen += IEEE80211_SKB_CB(skb)->control.hw_key->iv_len; ++#ifdef RX_CHECKSUM_TEST ++ atomic_set(&g_iv_len, ++ IEEE80211_SKB_CB(skb)->control.hw_key->iv_len); ++#endif ++ if (skb->len < hdrlen + sizeof(struct llc_snap_hdr)) ++ return false; ++ llc = (struct llc_snap_hdr *) (skb->data + hdrlen); ++ if (ntohs(llc->eth_type) != ETH_P_IP) ++ return false; ++ else ++ return true; ++} +diff --git a/drivers/net/wireless/esp8089/esp_utils.h b/drivers/net/wireless/esp8089/esp_utils.h +new file mode 100644 +index 000000000000..ed16d9ca0a65 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_utils.h +@@ -0,0 +1,41 @@ ++/* ++ * Copyright (c) 2011-2012 Espressif System. ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_UTILS_H_ ++#define _ESP_UTILS_H_ ++ ++#include "linux/types.h" ++#include ++ ++#ifndef BIT ++#define BIT(x) (0x1 << (x)) ++#endif ++ ++u32 esp_ieee2mhz(u8 chan); ++ ++enum ieee80211_key_alg { ++ ALG_WEP, ++ ALG_TKIP, ++ ALG_CCMP, ++ ALG_AES_CMAC ++}; ++ ++int esp_cipher2alg(int cipher); ++ ++void esp_rx_checksum_test(struct sk_buff *skb); ++void esp_gen_err_checksum(struct sk_buff *skb); ++ ++bool esp_is_ip_pkt(struct sk_buff *skb); ++ ++#endif +diff --git a/drivers/net/wireless/esp8089/esp_version.h b/drivers/net/wireless/esp8089/esp_version.h +new file mode 100644 +index 000000000000..481d98841fc2 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_version.h +@@ -0,0 +1 @@ ++#define DRIVER_VER 0xbdf5087c3debll +diff --git a/drivers/net/wireless/esp8089/esp_wl.h b/drivers/net/wireless/esp8089/esp_wl.h +new file mode 100644 +index 000000000000..e3e62a83d505 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_wl.h +@@ -0,0 +1,63 @@ ++#ifndef _ESP_WL_H_ ++#define _ESP_WL_H_ ++ ++//#define MAX_PROBED_SSID_INDEX 9 ++ ++ ++enum { ++ CONF_HW_BIT_RATE_1MBPS = BIT(0), ++ CONF_HW_BIT_RATE_2MBPS = BIT(1), ++ CONF_HW_BIT_RATE_5_5MBPS = BIT(2), ++ CONF_HW_BIT_RATE_11MBPS = BIT(3), ++ CONF_HW_BIT_RATE_6MBPS = BIT(4), ++ CONF_HW_BIT_RATE_9MBPS = BIT(5), ++ CONF_HW_BIT_RATE_12MBPS = BIT(6), ++ CONF_HW_BIT_RATE_18MBPS = BIT(7), ++ CONF_HW_BIT_RATE_22MBPS = BIT(8), ++ CONF_HW_BIT_RATE_24MBPS = BIT(9), ++ CONF_HW_BIT_RATE_36MBPS = BIT(10), ++ CONF_HW_BIT_RATE_48MBPS = BIT(11), ++ CONF_HW_BIT_RATE_54MBPS = BIT(12), ++ CONF_HW_BIT_RATE_11B_MASK = ++ (CONF_HW_BIT_RATE_1MBPS | CONF_HW_BIT_RATE_2MBPS | ++ CONF_HW_BIT_RATE_5_5MBPS | CONF_HW_BIT_RATE_11MBPS), ++}; ++ ++#if 0 ++enum { ++ CONF_HW_RATE_INDEX_1MBPS = 0, ++ CONF_HW_RATE_INDEX_2MBPS = 1, ++ CONF_HW_RATE_INDEX_5_5MBPS = 2, ++ CONF_HW_RATE_INDEX_6MBPS = 3, ++ CONF_HW_RATE_INDEX_9MBPS = 4, ++ CONF_HW_RATE_INDEX_11MBPS = 5, ++ CONF_HW_RATE_INDEX_12MBPS = 6, ++ CONF_HW_RATE_INDEX_18MBPS = 7, ++ CONF_HW_RATE_INDEX_22MBPS = 8, ++ CONF_HW_RATE_INDEX_24MBPS = 9, ++ CONF_HW_RATE_INDEX_36MBPS = 10, ++ CONF_HW_RATE_INDEX_48MBPS = 11, ++ CONF_HW_RATE_INDEX_54MBPS = 12, ++ CONF_HW_RATE_INDEX_MAX, ++}; ++ ++enum { ++ CONF_HW_RXTX_RATE_54 = 0, ++ CONF_HW_RXTX_RATE_48, ++ CONF_HW_RXTX_RATE_36, ++ CONF_HW_RXTX_RATE_24, ++ CONF_HW_RXTX_RATE_22, ++ CONF_HW_RXTX_RATE_18, ++ CONF_HW_RXTX_RATE_12, ++ CONF_HW_RXTX_RATE_11, ++ CONF_HW_RXTX_RATE_9, ++ CONF_HW_RXTX_RATE_6, ++ CONF_HW_RXTX_RATE_5_5, ++ CONF_HW_RXTX_RATE_2, ++ CONF_HW_RXTX_RATE_1, ++ CONF_HW_RXTX_RATE_MAX, ++ CONF_HW_RXTX_RATE_UNSUPPORTED = 0xff ++}; ++#endif ++ ++#endif /* _ESP_WL_H_ */ +diff --git a/drivers/net/wireless/esp8089/esp_wmac.h b/drivers/net/wireless/esp8089/esp_wmac.h +new file mode 100644 +index 000000000000..72d13cbfc0e5 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/esp_wmac.h +@@ -0,0 +1,92 @@ ++/* ++ * Copyright (c) 2011-2012 Espressif System. ++ * ++ * MAC header ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _ESP_WMAC_H_ ++#define _ESP_WMAC_H_ ++ ++struct esp_mac_rx_ctrl { ++ signed rssi:8; ++ unsigned rate:4; ++ unsigned is_group:1; ++ unsigned:1; ++ unsigned sig_mode:2; ++ unsigned legacy_length:12; ++ unsigned damatch0:1; ++ unsigned damatch1:1; ++ unsigned bssidmatch0:1; ++ unsigned bssidmatch1:1; ++ unsigned MCS:7; ++ unsigned CWB:1; ++ unsigned HT_length:16; ++ unsigned Smoothing:1; ++ unsigned Not_Sounding:1; ++ unsigned:1; ++ unsigned Aggregation:1; ++ unsigned STBC:2; ++ unsigned FEC_CODING:1; ++ unsigned SGI:1; ++ unsigned rxend_state:8; ++ unsigned ampdu_cnt:8; ++ unsigned channel:4; ++ unsigned:4; ++ signed noise_floor:8; ++}; ++ ++struct esp_rx_ampdu_len { ++ unsigned substate:8; ++ unsigned sublen:12; ++ unsigned:12; ++}; ++ ++struct esp_tx_ampdu_entry { ++ u32 sub_len:12, dili_num:7,:1, null_byte:2, data:1, enc:1, seq:8; ++}; ++ ++//rxend_state flags ++#define RX_PYH_ERR_MIN 0x42 ++#define RX_AGC_ERR_MIN 0x42 ++#define RX_AGC_ERR_MAX 0x47 ++#define RX_OFDM_ERR_MIN 0x50 ++#define RX_OFDM_ERR_MAX 0x58 ++#define RX_CCK_ERR_MIN 0x59 ++#define RX_CCK_ERR_MAX 0x5F ++#define RX_ABORT 0x80 ++#define RX_SF_ERR 0x40 ++#define RX_FCS_ERR 0x41 ++#define RX_AHBOV_ERR 0xC0 ++#define RX_BUFOV_ERR 0xC1 ++#define RX_BUFINV_ERR 0xC2 ++#define RX_AMPDUSF_ERR 0xC3 ++#define RX_AMPDUBUFOV_ERR 0xC4 ++#define RX_MACBBFIFOOV_ERR 0xC5 ++#define RX_RPBM_ERR 0xC6 ++#define RX_BTFORCE_ERR 0xC7 ++#define RX_SECOV_ERR 0xE1 ++#define RX_SECPROT_ERR0 0xE2 ++#define RX_SECPROT_ERR1 0xE3 ++#define RX_SECKEY_ERR 0xE4 ++#define RX_SECCRLEN_ERR 0xE5 ++#define RX_SECFIFO_TIMEOUT 0xE6 ++#define RX_WEPICV_ERR 0xF0 ++#define RX_TKIPICV_ERR 0xF4 ++#define RX_TKIPMIC_ERR 0xF5 ++#define RX_CCMPMIC_ERR 0xF8 ++#define RX_WAPIMIC_ERR 0xFC ++ ++s8 esp_wmac_rate2idx(u8 rate); ++bool esp_wmac_rxsec_error(u8 error); ++ ++#endif /* _ESP_WMAC_H_ */ +diff --git a/drivers/net/wireless/esp8089/firmware/LICENSE-2.0.txt b/drivers/net/wireless/esp8089/firmware/LICENSE-2.0.txt +new file mode 100644 +index 000000000000..0dd35c82a001 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/firmware/LICENSE-2.0.txt +@@ -0,0 +1,203 @@ ++The esp8089 firmware files are licensed under the Apache License, Version 2.0: ++ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++ 1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "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 ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ 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 ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++ 2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++ 3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++ 4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++ 5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++ 6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++ 7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++ 8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ 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 stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++ 9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++ END OF TERMS AND CONDITIONS ++ ++ APPENDIX: How to apply the Apache License to your work. ++ ++ To apply the Apache License to your work, attach the following ++ boilerplate notice, with the fields enclosed by brackets "[]" ++ replaced with your own identifying information. (Don't include ++ the brackets!) The text should be enclosed in the appropriate ++ comment syntax for the file format. We also recommend that a ++ file or class name and description of purpose be included on the ++ same "printed page" as the copyright notice for easier ++ identification within third-party archives. ++ ++ Copyright [yyyy] [name of copyright owner] ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. +diff --git a/drivers/net/wireless/esp8089/sdio_sif_esp.c b/drivers/net/wireless/esp8089/sdio_sif_esp.c +new file mode 100644 +index 000000000000..2bd2c63f5388 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/sdio_sif_esp.c +@@ -0,0 +1,824 @@ ++/* ++ * Copyright (c) 2010 -2013 Espressif System. ++ * ++ * sdio serial i/f driver ++ * - sdio device control routines ++ * - sync/async DMA/PIO read/write ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "esp_pub.h" ++#include "esp_sif.h" ++#include "esp_sip.h" ++#include "esp_debug.h" ++#include "slc_host_register.h" ++#include "esp_version.h" ++#include "esp_ctrl.h" ++#include "esp_file.h" ++#ifdef USE_EXT_GPIO ++#include "esp_ext.h" ++#endif /* USE_EXT_GPIO */ ++ ++#define MANUFACTURER_ID_EAGLE_BASE 0x1110 ++#define MANUFACTURER_ID_EAGLE_BASE_MASK 0xFF00 ++#define MANUFACTURER_CODE 0x6666 ++ ++static const struct sdio_device_id esp_sdio_devices[] = { ++ {SDIO_DEVICE ++ (MANUFACTURER_CODE, (MANUFACTURER_ID_EAGLE_BASE | 0x1))}, ++ {}, ++}; ++ ++static const struct of_device_id esp_of_match_table[] = { ++ { .compatible = "esp,esp8089", .data = NULL}, ++ { } ++}; ++ ++static int /*__init*/ esp_sdio_init(void); ++static void /*__exit*/ esp_sdio_exit(void); ++ ++ ++#define ESP_DMA_IBUFSZ 2048 ++ ++//unsigned int esp_msg_level = 0; ++unsigned int esp_msg_level = ESP_DBG_ERROR | ESP_SHOW; ++ ++struct esp_sdio_ctrl *sif_sctrl = NULL; ++ ++#ifdef ESP_ANDROID_LOGGER ++bool log_off = false; ++#endif /* ESP_ANDROID_LOGGER */ ++ ++static int esdio_power_off(struct esp_sdio_ctrl *sctrl); ++static int esdio_power_on(struct esp_sdio_ctrl *sctrl); ++ ++void sif_set_clock(struct sdio_func *func, int clk); ++ ++void sif_lock_bus(struct esp_pub *epub) ++{ ++ EPUB_FUNC_CHECK(epub, _exit); ++ ++ sdio_claim_host(EPUB_TO_FUNC(epub)); ++ _exit: ++ return; ++} ++ ++void sif_unlock_bus(struct esp_pub *epub) ++{ ++ EPUB_FUNC_CHECK(epub, _exit); ++ ++ sdio_release_host(EPUB_TO_FUNC(epub)); ++ _exit: ++ return; ++} ++ ++static inline bool bad_buf(u8 * buf) ++{ ++ return ((unsigned long) buf & 0x3) || !virt_addr_valid(buf); ++} ++ ++u8 sdio_io_readb(struct esp_pub *epub, int addr, int *res) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ struct sdio_func *func = NULL; ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ func = sctrl->func; ++ ++ if (func->num == 0) ++ return sdio_f0_readb(func, addr, res); ++ else ++ return sdio_readb(func, addr, res); ++} ++ ++void sdio_io_writeb(struct esp_pub *epub, u8 value, int addr, int *res) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ struct sdio_func *func = NULL; ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ func = sctrl->func; ++ ++ if (func->num == 0) ++ sdio_f0_writeb(func, value, addr, res); ++ else ++ sdio_writeb(func, value, addr, res); ++} ++ ++int sif_io_raw(struct esp_pub *epub, u32 addr, u8 * buf, u32 len, u32 flag) ++{ ++ int err = 0; ++ u8 *ibuf = NULL; ++ bool need_ibuf = false; ++ struct esp_sdio_ctrl *sctrl = NULL; ++ struct sdio_func *func = NULL; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ err = -EINVAL; ++ goto _exit; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ func = sctrl->func; ++ if (func == NULL) { ++ ESSERT(0); ++ err = -EINVAL; ++ goto _exit; ++ } ++ ++ if (bad_buf(buf)) { ++ esp_dbg(ESP_DBG_TRACE, "%s dst 0x%08x, len %d badbuf\n", ++ __func__, addr, len); ++ need_ibuf = true; ++ ibuf = sctrl->dma_buffer; ++ } else { ++ ibuf = buf; ++ } ++ ++ if (flag & SIF_BLOCK_BASIS) { ++ /* round up for block data transcation */ ++ } ++ ++ if (flag & SIF_TO_DEVICE) { ++ ++ if (need_ibuf) ++ memcpy(ibuf, buf, len); ++ ++ if (flag & SIF_FIXED_ADDR) ++ err = sdio_writesb(func, addr, ibuf, len); ++ else if (flag & SIF_INC_ADDR) { ++ err = sdio_memcpy_toio(func, addr, ibuf, len); ++ } ++ } else if (flag & SIF_FROM_DEVICE) { ++ ++ if (flag & SIF_FIXED_ADDR) ++ err = sdio_readsb(func, ibuf, addr, len); ++ else if (flag & SIF_INC_ADDR) { ++ err = sdio_memcpy_fromio(func, ibuf, addr, len); ++ } ++ ++ ++ if (!err && need_ibuf) ++ memcpy(buf, ibuf, len); ++ } ++ ++ _exit: ++ return err; ++} ++ ++int sif_io_sync(struct esp_pub *epub, u32 addr, u8 * buf, u32 len, ++ u32 flag) ++{ ++ int err = 0; ++ u8 *ibuf = NULL; ++ bool need_ibuf = false; ++ struct esp_sdio_ctrl *sctrl = NULL; ++ struct sdio_func *func = NULL; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ err = -EINVAL; ++ goto _exit; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ func = sctrl->func; ++ if (func == NULL) { ++ ESSERT(0); ++ err = -EINVAL; ++ goto _exit; ++ } ++ ++ if (bad_buf(buf)) { ++ esp_dbg(ESP_DBG_TRACE, "%s dst 0x%08x, len %d badbuf\n", ++ __func__, addr, len); ++ need_ibuf = true; ++ ibuf = sctrl->dma_buffer; ++ } else { ++ ibuf = buf; ++ } ++ ++ if (flag & SIF_BLOCK_BASIS) { ++ /* round up for block data transcation */ ++ } ++ ++ if (flag & SIF_TO_DEVICE) { ++ ++ esp_dbg(ESP_DBG_TRACE, "%s to addr 0x%08x, len %d \n", ++ __func__, addr, len); ++ if (need_ibuf) ++ memcpy(ibuf, buf, len); ++ ++ sdio_claim_host(func); ++ ++ if (flag & SIF_FIXED_ADDR) ++ err = sdio_writesb(func, addr, ibuf, len); ++ else if (flag & SIF_INC_ADDR) { ++ err = sdio_memcpy_toio(func, addr, ibuf, len); ++ } ++ sdio_release_host(func); ++ } else if (flag & SIF_FROM_DEVICE) { ++ ++ esp_dbg(ESP_DBG_TRACE, "%s from addr 0x%08x, len %d \n", ++ __func__, addr, len); ++ ++ sdio_claim_host(func); ++ ++ if (flag & SIF_FIXED_ADDR) ++ err = sdio_readsb(func, ibuf, addr, len); ++ else if (flag & SIF_INC_ADDR) { ++ err = sdio_memcpy_fromio(func, ibuf, addr, len); ++ } ++ ++ sdio_release_host(func); ++ ++ if (!err && need_ibuf) ++ memcpy(buf, ibuf, len); ++ } ++ ++ _exit: ++ return err; ++} ++ ++int sif_lldesc_read_sync(struct esp_pub *epub, u8 * buf, u32 len) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ u32 read_len; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ return -EINVAL; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ ++ switch (sctrl->target_id) { ++ case 0x100: ++ read_len = len; ++ break; ++ case 0x600: ++ read_len = roundup(len, sctrl->slc_blk_sz); ++ break; ++ default: ++ read_len = len; ++ break; ++ } ++ ++ return sif_io_sync((epub), ++ (sctrl->slc_window_end_addr - 2 - (len)), (buf), ++ (read_len), ++ SIF_FROM_DEVICE | SIF_BYTE_BASIS | ++ SIF_INC_ADDR); ++} ++ ++int sif_lldesc_write_sync(struct esp_pub *epub, u8 * buf, u32 len) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ u32 write_len; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ return -EINVAL; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ ++ switch (sctrl->target_id) { ++ case 0x100: ++ write_len = len; ++ break; ++ case 0x600: ++ write_len = roundup(len, sctrl->slc_blk_sz); ++ break; ++ default: ++ write_len = len; ++ break; ++ } ++ ++ return sif_io_sync((epub), (sctrl->slc_window_end_addr - (len)), ++ (buf), (write_len), ++ SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR); ++} ++ ++int sif_lldesc_read_raw(struct esp_pub *epub, u8 * buf, u32 len, ++ bool noround) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ u32 read_len; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ return -EINVAL; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ ++ switch (sctrl->target_id) { ++ case 0x100: ++ read_len = len; ++ break; ++ case 0x600: ++ if (!noround) ++ read_len = roundup(len, sctrl->slc_blk_sz); ++ else ++ read_len = len; ++ break; ++ default: ++ read_len = len; ++ break; ++ } ++ ++ return sif_io_raw((epub), (sctrl->slc_window_end_addr - 2 - (len)), ++ (buf), (read_len), ++ SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR); ++} ++ ++int sif_lldesc_write_raw(struct esp_pub *epub, u8 * buf, u32 len) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ u32 write_len; ++ ++ if (epub == NULL || buf == NULL) { ++ ESSERT(0); ++ return -EINVAL; ++ } ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ ++ switch (sctrl->target_id) { ++ case 0x100: ++ write_len = len; ++ break; ++ case 0x600: ++ write_len = roundup(len, sctrl->slc_blk_sz); ++ break; ++ default: ++ write_len = len; ++ break; ++ } ++ return sif_io_raw((epub), (sctrl->slc_window_end_addr - (len)), ++ (buf), (write_len), ++ SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR); ++ ++} ++ ++static int esdio_power_on(struct esp_sdio_ctrl *sctrl) ++{ ++ int err = 0; ++ ++ if (sctrl->off == false) ++ return err; ++ ++ sdio_claim_host(sctrl->func); ++ err = sdio_enable_func(sctrl->func); ++ ++ if (err) { ++ esp_dbg(ESP_DBG_ERROR, "Unable to enable sdio func: %d\n", ++ err); ++ sdio_release_host(sctrl->func); ++ return err; ++ } ++ ++ sdio_release_host(sctrl->func); ++ ++ /* ensure device is up */ ++ msleep(5); ++ ++ sctrl->off = false; ++ ++ return err; ++} ++ ++static int esdio_power_off(struct esp_sdio_ctrl *sctrl) ++{ ++ int err; ++ ++ if (sctrl->off) ++ return 0; ++ ++ sdio_claim_host(sctrl->func); ++ err = sdio_disable_func(sctrl->func); ++ sdio_release_host(sctrl->func); ++ ++ if (err) ++ return err; ++ ++ sctrl->off = true; ++ ++ return err; ++} ++ ++void sif_enable_irq(struct esp_pub *epub) ++{ ++ int err; ++ struct esp_sdio_ctrl *sctrl = NULL; ++ ++ sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ ++ sdio_claim_host(sctrl->func); ++ ++ err = sdio_claim_irq(sctrl->func, sif_dsr); ++ ++ if (err) ++ esp_dbg(ESP_DBG_ERROR, "sif %s failed\n", __func__); ++ ++ atomic_set(&epub->sip->state, SIP_BOOT); ++ ++ atomic_set(&sctrl->irq_installed, 1); ++ ++ sdio_release_host(sctrl->func); ++} ++ ++void sif_disable_irq(struct esp_pub *epub) ++{ ++ struct esp_sdio_ctrl *sctrl = (struct esp_sdio_ctrl *) epub->sif; ++ int i = 0; ++ ++ if (atomic_read(&sctrl->irq_installed) == 0) ++ return; ++ ++ sdio_claim_host(sctrl->func); ++ ++ while (atomic_read(&sctrl->irq_handling)) { ++ sdio_release_host(sctrl->func); ++ schedule_timeout(HZ / 100); ++ sdio_claim_host(sctrl->func); ++ if (i++ >= 400) { ++ esp_dbg(ESP_DBG_ERROR, "%s force to stop irq\n", ++ __func__); ++ break; ++ } ++ } ++ ++ /* Ignore errors, we don't always use an irq. */ ++ sdio_release_irq(sctrl->func); ++ ++ atomic_set(&sctrl->irq_installed, 0); ++ ++ sdio_release_host(sctrl->func); ++ ++} ++ ++void sif_set_clock(struct sdio_func *func, int clk) ++{ ++ struct mmc_host *host = NULL; ++ struct mmc_card *card = NULL; ++ ++ card = func->card; ++ host = card->host; ++ ++ sdio_claim_host(func); ++ ++ //currently only set clock ++ host->ios.clock = clk * 1000000; ++ ++ esp_dbg(ESP_SHOW, "%s clock is %u\n", __func__, host->ios.clock); ++ if (host->ios.clock > host->f_max) { ++ host->ios.clock = host->f_max; ++ } ++ host->ops->set_ios(host, &host->ios); ++ ++ mdelay(2); ++ ++ sdio_release_host(func); ++} ++ ++static int esp_sdio_probe(struct sdio_func *func, ++ const struct sdio_device_id *id); ++static void esp_sdio_remove(struct sdio_func *func); ++ ++static int esp_sdio_probe(struct sdio_func *func, ++ const struct sdio_device_id *id) ++{ ++ int err = 0; ++ struct esp_pub *epub = NULL; ++ struct esp_sdio_ctrl *sctrl; ++ ++ esp_dbg(ESP_DBG_TRACE, ++ "sdio_func_num: 0x%X, vendor id: 0x%X, dev id: 0x%X, block size: 0x%X/0x%X\n", ++ func->num, func->vendor, func->device, func->max_blksize, ++ func->cur_blksize); ++ ++ if (sif_sctrl == NULL) { ++ ++ esp_conf_init(&func->dev); ++ ++ esp_conf_upload_first(); ++ ++ sctrl = kzalloc(sizeof(struct esp_sdio_ctrl), GFP_KERNEL); ++ ++ if (sctrl == NULL) { ++ return -ENOMEM; ++ } ++ ++ /* temp buffer reserved for un-dma-able request */ ++ sctrl->dma_buffer = kzalloc(ESP_DMA_IBUFSZ, GFP_KERNEL); ++ ++ if (sctrl->dma_buffer == NULL) { ++ err = -ENOMEM; ++ goto _err_last; ++ } ++ sif_sctrl = sctrl; ++ sctrl->slc_blk_sz = SIF_SLC_BLOCK_SIZE; ++ ++ epub = esp_pub_alloc_mac80211(&func->dev); ++ ++ if (epub == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "no mem for epub \n"); ++ err = -ENOMEM; ++ goto _err_dma; ++ } ++ epub->sif = (void *) sctrl; ++ epub->sdio_state = ESP_SDIO_STATE_FIRST_INIT; ++ sctrl->epub = epub; ++ ++#ifdef USE_EXT_GPIO ++ if (sif_get_ate_config() == 0) { ++ err = ext_gpio_init(epub); ++ if (err) { ++ esp_dbg(ESP_DBG_ERROR, ++ "ext_irq_work_init failed %d\n", ++ err); ++ goto _err_epub; ++ } ++ } ++#endif ++ ++ } else { ++ sctrl = sif_sctrl; ++ sif_sctrl = NULL; ++ epub = sctrl->epub; ++ epub->sdio_state = ESP_SDIO_STATE_SECOND_INIT; ++ SET_IEEE80211_DEV(epub->hw, &func->dev); ++ epub->dev = &func->dev; ++ } ++ ++ sctrl->func = func; ++ sdio_set_drvdata(func, sctrl); ++ ++ sctrl->id = id; ++ sctrl->off = true; ++ ++ /* give us some time to enable, in ms */ ++ func->enable_timeout = 100; ++ ++ err = esdio_power_on(sctrl); ++ esp_dbg(ESP_DBG_TRACE, " %s >> power_on err %d \n", __func__, err); ++ ++ if (err) { ++ if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) ++ goto _err_ext_gpio; ++ else ++ goto _err_second_init; ++ } ++ check_target_id(epub); ++ ++ sdio_claim_host(func); ++ ++ err = sdio_set_block_size(func, sctrl->slc_blk_sz); ++ ++ if (err) { ++ esp_dbg(ESP_DBG_ERROR, ++ "Set sdio block size %d failed: %d)\n", ++ sctrl->slc_blk_sz, err); ++ sdio_release_host(func); ++ if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) ++ goto _err_off; ++ else ++ goto _err_second_init; ++ } ++ ++ sdio_release_host(func); ++ ++#ifdef LOWER_CLK ++ /* fix clock for dongle */ ++ sif_set_clock(func, 23); ++#endif //LOWER_CLK ++ ++ err = esp_pub_init_all(epub); ++ ++ if (err) { ++ esp_dbg(ESP_DBG_ERROR, "esp_init_all failed: %d\n", err); ++ if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { ++ err = 0; ++ goto _err_first_init; ++ } ++ if (epub->sdio_state == ESP_SDIO_STATE_SECOND_INIT) ++ goto _err_second_init; ++ } ++ ++ esp_dbg(ESP_DBG_TRACE, " %s return %d\n", __func__, err); ++ if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { ++ esp_dbg(ESP_DBG_TRACE, "first normal exit\n"); ++ epub->sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; ++ /* Rescan the esp8089 after loading the initial firmware */ ++ sdio_claim_host(func); ++ mmc_sw_reset(func->card); ++ sdio_release_host(func); ++ msleep(10); ++ } ++ ++ return err; ++ ++ _err_off: ++ esdio_power_off(sctrl); ++ _err_ext_gpio: ++#ifdef USE_EXT_GPIO ++ if (sif_get_ate_config() == 0) ++ ext_gpio_deinit(); ++ _err_epub: ++#endif ++ esp_pub_dealloc_mac80211(epub); ++ _err_dma: ++ kfree(sctrl->dma_buffer); ++ _err_last: ++ kfree(sctrl); ++ _err_first_init: ++ if (epub && epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { ++ esp_dbg(ESP_DBG_ERROR, "first error exit\n"); ++ epub->sdio_state = ESP_SDIO_STATE_FIRST_ERROR_EXIT; ++ } ++ return err; ++ _err_second_init: ++ epub->sdio_state = ESP_SDIO_STATE_SECOND_ERROR_EXIT; ++ esp_sdio_remove(func); ++ return err; ++} ++ ++static void esp_sdio_remove(struct sdio_func *func) ++{ ++ struct esp_sdio_ctrl *sctrl = NULL; ++ struct esp_pub *epub = NULL; ++ ++ esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__); ++ ++ sctrl = sdio_get_drvdata(func); ++ ++ if (sctrl == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "%s no sctrl\n", __func__); ++ return; ++ } ++ ++ do { ++ epub = sctrl->epub; ++ if (epub == NULL) { ++ esp_dbg(ESP_DBG_ERROR, "%s epub null\n", __func__); ++ break; ++ } ++ if (epub->sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT) { ++ if (epub->sip) { ++ sip_detach(epub->sip); ++ epub->sip = NULL; ++ esp_dbg(ESP_DBG_TRACE, ++ "%s sip detached \n", __func__); ++ } ++#ifdef USE_EXT_GPIO ++ if (sif_get_ate_config() == 0) ++ ext_gpio_deinit(); ++#endif ++ } else { ++ //sif_disable_target_interrupt(epub); ++ atomic_set(&epub->sip->state, SIP_STOP); ++ sif_disable_irq(epub); ++ } ++ ++ if (epub->sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT) { ++ esp_pub_dealloc_mac80211(epub); ++ esp_dbg(ESP_DBG_TRACE, "%s dealloc mac80211 \n", ++ __func__); ++ ++ if (sctrl->dma_buffer) { ++ kfree(sctrl->dma_buffer); ++ sctrl->dma_buffer = NULL; ++ esp_dbg(ESP_DBG_TRACE, ++ "%s free dma_buffer \n", __func__); ++ } ++ ++ kfree(sctrl); ++ } ++ ++ } while (0); ++ ++ sdio_set_drvdata(func, NULL); ++ ++ /* ++ * Reset on sdio remove to leave the hardware in cold state, ++ * so a new module insertion will be possible ++ */ ++ if (epub->sdio_state == ESP_SDIO_STATE_SECOND_INIT) { ++ sdio_claim_host(func); ++ mmc_hw_reset(func->card); ++ sdio_release_host(func); ++ mdelay(10); ++ } ++ ++ esp_dbg(ESP_DBG_TRACE, "eagle sdio remove complete\n"); ++} ++ ++static int esp_sdio_suspend(struct device *dev) ++{ ++ struct sdio_func *func = dev_to_sdio_func(dev); ++ struct esp_sdio_ctrl *sctrl = sdio_get_drvdata(func); ++ struct esp_pub *epub = sctrl->epub; ++ ++ printk("%s", __func__); ++ atomic_set(&epub->ps.state, ESP_PM_ON); ++ ++ do { ++ u32 sdio_flags = 0; ++ int ret = 0; ++ sdio_flags = sdio_get_host_pm_caps(func); ++ ++ if (!(sdio_flags & MMC_PM_KEEP_POWER)) { ++ printk ++ ("%s can't keep power while host is suspended\n", ++ __func__); ++ } ++ ++ /* keep power while host suspended */ ++ ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); ++ if (ret) { ++ printk("%s error while trying to keep power\n", ++ __func__); ++ } ++ } while (0); ++ ++ ++ return 0; ++ ++} ++ ++static int esp_sdio_resume(struct device *dev) ++{ ++ esp_dbg(ESP_DBG_ERROR, "%s", __func__); ++ ++ return 0; ++} ++ ++static const struct dev_pm_ops esp_sdio_pm_ops = { ++ .suspend = esp_sdio_suspend, ++ .resume = esp_sdio_resume, ++}; ++ ++static struct sdio_driver esp_sdio_driver = { ++ .name = "eagle_sdio", ++ .id_table = esp_sdio_devices, ++ .probe = esp_sdio_probe, ++ .remove = esp_sdio_remove, ++ .drv = { ++ .pm = &esp_sdio_pm_ops, ++ .of_match_table = esp_of_match_table, ++ }, ++}; ++ ++static int /*__init*/ esp_sdio_init(void) ++{ ++ ++ esp_debugfs_init(); ++ sdio_register_driver(&esp_sdio_driver); ++ ++ msleep(1000); ++ ++ sdio_unregister_driver(&esp_sdio_driver); ++ msleep(100); ++ sdio_register_driver(&esp_sdio_driver); ++ ++ return 0; ++} ++ ++static void /*__exit*/ esp_sdio_exit(void) ++{ ++ sdio_unregister_driver(&esp_sdio_driver); ++ esp_debugfs_exit(); ++} ++ ++MODULE_DEVICE_TABLE(sdio, esp_sdio_devices); ++MODULE_DEVICE_TABLE(of, esp_of_match_table); ++MODULE_AUTHOR("Espressif System"); ++MODULE_DESCRIPTION ++ ("Driver for SDIO interconnected eagle low-power WLAN devices"); ++MODULE_LICENSE("GPL"); ++ ++module_init(esp_sdio_init); ++module_exit(esp_sdio_exit); +diff --git a/drivers/net/wireless/esp8089/sip2_common.h b/drivers/net/wireless/esp8089/sip2_common.h +new file mode 100644 +index 000000000000..d46e87589b0b +--- /dev/null ++++ b/drivers/net/wireless/esp8089/sip2_common.h +@@ -0,0 +1,475 @@ ++/* ++ * Copyright (c) 2010 - 2014 Espressif System. ++ * ++ * Common definitions of Serial Interconnctor Protocol ++ * ++ * little endian ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef _SIP2_COMMON_H ++#define _SIP2_COMMON_H ++ ++#ifdef __ets__ ++#include "utils.h" ++#endif /*__ets__*/ ++ ++/* max 16 types */ ++typedef enum { ++ SIP_CTRL = 0, ++ SIP_DATA, ++ SIP_DATA_AMPDU ++} SIP_TYPE; ++ ++typedef enum { ++ SIP_TX_CTRL_BUF = 0, /* from host */ ++ SIP_RX_CTRL_BUF, /* to host */ ++ SIP_TX_DATA_BUF, /* from host */ ++ SIP_RX_DATA_BUF /* to host */ ++} SIP_BUF_TYPE; ++ ++enum sip_cmd_id { ++ SIP_CMD_GET_VER = 0, ++ SIP_CMD_WRITE_MEMORY, //1 ROM code ++ SIP_CMD_READ_MEMORY, //2 ++ SIP_CMD_WRITE_REG, //3 ROM code ++ SIP_CMD_READ_REG, //4 ++ SIP_CMD_BOOTUP, //5 ROM code ++ SIP_CMD_COPYBACK, //6 ++ SIP_CMD_INIT, //7 ++ SIP_CMD_SCAN, //8 ++ SIP_CMD_SETKEY, //9 ++ SIP_CMD_CONFIG, //10 ++ SIP_CMD_BSS_INFO_UPDATE, //11 ++ SIP_CMD_LOOPBACK, //12 ROM code ++ //do not add cmd before this line ++ SIP_CMD_SET_WMM_PARAM, ++ SIP_CMD_AMPDU_ACTION, ++ SIP_CMD_HB_REQ, //15 ++ SIP_CMD_RESET_MAC, //16 ++ SIP_CMD_PRE_DOWN, //17 ++ SIP_CMD_SLEEP, /* for sleep testing */ ++ SIP_CMD_WAKEUP, /* for sleep testing */ ++ SIP_CMD_DEBUG, /* for general testing */ ++ SIP_CMD_GET_FW_VER, /* get fw rev. */ ++ SIP_CMD_SETVIF, ++ SIP_CMD_SETSTA, ++ SIP_CMD_PS, ++ SIP_CMD_ATE, ++ SIP_CMD_SUSPEND, ++ SIP_CMD_RECALC_CREDIT, ++ SIP_CMD_MAX, ++}; ++ ++enum { ++ SIP_EVT_TARGET_ON = 0, // ++ SIP_EVT_BOOTUP, //1 in ROM code ++ SIP_EVT_COPYBACK, //2 ++ SIP_EVT_SCAN_RESULT, //3 ++ SIP_EVT_TX_STATUS, //4 ++ SIP_EVT_CREDIT_RPT, //5, in ROM code ++ SIP_EVT_ERROR, //6 ++ SIP_EVT_LOOPBACK, //7, in ROM code ++ SIP_EVT_SNPRINTF_TO_HOST, //8 in ROM code ++ //do not add evt before this line ++ SIP_EVT_HB_ACK, //9 ++ SIP_EVT_RESET_MAC_ACK, //10 ++ SIP_EVT_WAKEUP, //11 /* for sleep testing */ ++ SIP_EVT_DEBUG, //12 /* for general testing */ ++ SIP_EVT_PRINT_TO_HOST, //13 ++ SIP_EVT_TRC_AMPDU, //14 ++ SIP_EVT_ROC, //15 ++ SIP_EVT_RESETTING, ++ SIP_EVT_ATE, ++ SIP_EVT_EP, ++ SIP_EVT_INIT_EP, ++ SIP_EVT_SLEEP, ++ SIP_EVT_TXIDLE, ++ SIP_EVT_NOISEFLOOR, ++ SIP_EVT_MAX ++}; ++ ++#define SIP_IFIDX_MASK 0xf0 ++#define SIP_IFIDX_S 4 ++#define SIP_TYPE_MASK 0x0f ++#define SIP_TYPE_S 0 ++ ++#define SIP_HDR_GET_IFIDX(fc0) (((fc0) & SIP_IFIDX_MASK) >> SIP_IFIDX_S) ++#define SIP_HDR_SET_IFIDX(fc0, ifidx) ( (fc0) = ((fc0) & ~SIP_IFIDX_MASK) | ((ifidx) << SIP_IFIDX_S & SIP_IFIDX_MASK) ) ++#define SIP_HDR_GET_TYPE(fc0) ((fc0) & SIP_TYPE_MASK ) ++/* assume type field is cleared */ ++#define SIP_HDR_SET_TYPE(fc0, type) ((fc0) = ((fc0) & ~ SIP_TYPE_MASK) | ((type) & SIP_TYPE_MASK)) ++ ++/* sip 2.0, not hybrid header so far */ ++#define SIP_HDR_IS_CTRL(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_CTRL) ++#define SIP_HDR_IS_DATA(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_DATA) ++#define SIP_HDR_IS_AMPDU(hdr) (SIP_HDR_GET_TYPE((hdr)->fc[0]) == SIP_DATA_AMPDU) ++ ++/* fc[1] flags, only for data pkt. Ctrl pkts use fc[1] as eventID */ ++#define SIP_HDR_SET_FLAGS(hdr, flags) ((hdr)->fc[1] |= (flags)) ++#define SIP_HDR_F_MORE_PKT 0x1 ++#define SIP_HDR_F_NEED_CRDT_RPT 0x2 ++#define SIP_HDR_F_SYNC 0x4 ++#define SIP_HDR_F_SYNC_RESET 0x8 ++#define SIP_HDR_F_PM_TURNING_ON 0x10 ++#define SIP_HDR_F_PM_TURNING_OFF 0x20 ++ ++#define SIP_HDR_NEED_CREDIT_UPDATE(hdr) ((hdr)->fc[1] & SIP_HDR_F_NEED_CRDT_RPT) ++#define SIP_HDR_IS_MORE_PKT(hdr) ((hdr)->fc[1] & SIP_HDR_F_MORE_PKT) ++#define SIP_HDR_IS_CRDT_RPT(hdr) ((hdr)->fc[1] & SIP_HDR_F_CRDT_RPT) ++#define SIP_HDR_IS_SYNC(hdr) ((hdr)->fc[1] & SIP_HDR_F_SYNC) ++#define SIP_HDR_IS_SYNC_RESET(hdr) ((hdr)->fc[1] & SIP_HDR_F_SYNC_RESET) ++#define SIP_HDR_IS_SYNC_PKT(hdr) (SIP_HDR_IS_SYNC(hdr) | SIP_HDR_IS_SYNC_RESET(hdr)) ++#define SIP_HDR_SET_SYNC(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_SYNC) ++#define SIP_HDR_SET_SYNC_RESET(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_SYNC_RESET) ++#define SIP_HDR_SET_MORE_PKT(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_MORE_PKT) ++#define SIP_HDR_SET_PM_TURNING_ON(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_PM_TURNING_ON) ++#define SIP_HDR_IS_PM_TURNING_ON(hdr) ((hdr)->fc[1] & SIP_HDR_F_PM_TURNING_ON) ++#define SIP_HDR_SET_PM_TURNING_OFF(hdr) SIP_HDR_SET_FLAGS((hdr), SIP_HDR_F_PM_TURNING_OFF) ++#define SIP_HDR_IS_PM_TURNING_OFF(hdr) ((hdr)->fc[1] & SIP_HDR_F_PM_TURNING_OFF) ++ ++/* ++ * fc[0]: first 4bit: ifidx; last 4bit: type ++ * fc[1]: flags ++ * ++ * Don't touch the header definitons ++ */ ++struct sip_hdr_min { ++ u8 fc[2]; ++ __le16 len; ++} __packed; ++ ++/* not more than 4byte long */ ++struct sip_tx_data_info { ++ u8 tid; ++ u8 ac; ++ u8 p2p:1, enc_flag:7; ++ u8 hw_kid; ++} __packed; ++ ++/* NB: this structure should be not more than 4byte !! */ ++struct sip_tx_info { ++ union { ++ u32 cmdid; ++ struct sip_tx_data_info dinfo; ++ } u; ++} __packed; ++ ++struct sip_hdr { ++ u8 fc[2]; //fc[0]: type and ifidx ; fc[1] is eventID if the first ctrl pkt in the chain. data pkt still can use fc[1] to set flag ++ __le16 len; ++ union { ++ volatile u32 recycled_credits; /* last 12bits is credits, first 20 bits is actual length of the first pkt in the chain */ ++ struct sip_tx_info tx_info; ++ } u; ++ u32 seq; ++} __packed; ++ ++#define h_credits u.recycled_credits ++#define c_evtid fc[1] ++#define c_cmdid u.tx_info.u.cmdid ++#define d_ac u.tx_info.u.dinfo.ac ++#define d_tid u.tx_info.u.dinfo.tid ++#define d_p2p u.tx_info.u.dinfo.p2p ++#define d_enc_flag u.tx_info.u.dinfo.enc_flag ++#define d_hw_kid u.tx_info.u.dinfo.hw_kid ++ ++#define SIP_CREDITS_MASK 0xfff /* last 12 bits */ ++ ++#ifdef HOST_RC ++ ++#define RC_CNT_MASK 0xf ++ ++struct sip_rc_status { ++ u32 rc_map; ++ union { ++ u32 rc_cnt1:4, rc_cnt2:4, rc_cnt3:4, rc_cnt4:4, rc_cnt5:4; ++ ++ u32 rc_cnt_store; ++ }; ++}; ++ ++/* copy from mac80211.h */ ++struct sip_tx_rc { ++ struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES]; ++ s8 rts_cts_rate_idx; ++}; ++#endif /* HOST_RC */ ++ ++#define SIP_HDR_MIN_LEN 4 ++#define SIP_HDR_LEN sizeof(struct sip_hdr) ++#define SIP_CTRL_HDR_LEN SIP_HDR_LEN /* same as sip_hdr in sip2 design */ ++#define SIP_BOOT_BUF_SIZE 256 ++#define SIP_CTRL_BUF_SZ 256 /* too much?? */ ++#define SIP_CTRL_BUF_N 6 ++#define SIP_CTRL_TXBUF_N 2 ++#define SIP_CTRL_RXBUF_N 4 ++ ++/* WAR for mblk */ ++#define SIP_RX_ADDR_PREFIX_MASK 0xfc000000 ++#define SIP_RX_ADDR_SHIFT 6 /* [31:5], shift 6 bits */ ++ ++struct sip_cmd_write_memory { ++ u32 addr; ++ u32 len; ++} __packed; ++ ++struct sip_cmd_read_memory { ++ u32 addr; ++ u32 len; ++} __packed; ++ ++struct sip_cmd_write_reg { ++ u32 addr; ++ u32 val; ++} __packed; ++ ++struct sip_cmd_bootup { ++ u32 boot_addr; ++} __packed; ++ ++struct sip_cmd_loopback { ++ u32 txlen; //host to target packet len, 0 means no txpacket ++ u32 rxlen; //target to host packet len, 0 means no rxpacket ++ u32 pack_id; //sequence of packet ++} __packed; ++ ++struct sip_evt_loopback { ++ u32 txlen; //host to target packet len, 0 means no txpacket ++ u32 rxlen; //target to host packet len, 0 means no rxpacket ++ u32 pack_id; //sequence of packet ++} __packed; ++ ++struct sip_cmd_copyback { ++ u32 addr; ++ u32 len; ++} __packed; ++ ++struct sip_cmd_scan { ++// u8 ssid[32]; ++ u8 ssid_len; ++// u8 hw_channel[14]; ++ u8 n_channels; ++ u8 ie_len; ++ u8 aborted; ++} __packed; // ie[] append at the end ++ ++ ++#ifndef ETH_ALEN ++#define ETH_ALEN 6 ++#endif /* ETH_ALEN */ ++ ++struct sip_cmd_setkey { ++ u8 bssid_no; ++ u8 addr[ETH_ALEN]; ++ u8 alg; ++ u8 keyidx; ++ u8 hw_key_idx; ++ u8 flags; ++ u8 keylen; ++ u8 key[32]; ++} __packed; ++ ++struct sip_cmd_config { ++ u16 center_freq; ++ u16 duration; ++} __packed; ++ ++struct sip_cmd_bss_info_update { ++ u8 bssid[ETH_ALEN]; ++ u16 isassoc; ++ u32 beacon_int; ++ u8 bssid_no; ++} __packed; ++ ++struct sip_evt_bootup { ++ u16 tx_blksz; ++ u8 mac_addr[ETH_ALEN]; ++ /* anything else ? */ ++} __packed; ++ ++struct sip_cmd_setvif { ++ u8 index; ++ u8 mac[ETH_ALEN]; ++ u8 set; ++ u8 op_mode; ++ u8 is_p2p; ++} __packed; ++ ++enum esp_ieee80211_phytype { ++ ESP_IEEE80211_T_CCK = 0, ++ ESP_IEEE80211_T_OFDM = 1, ++ ESP_IEEE80211_T_HT20_L = 2, ++ ESP_IEEE80211_T_HT20_S = 3, ++}; ++ ++struct sip_cmd_setsta { ++ u8 ifidx; ++ u8 index; ++ u8 set; ++ u8 phymode; ++ u8 mac[ETH_ALEN]; ++ u16 aid; ++ u8 ampdu_factor; ++ u8 ampdu_density; ++ u16 resv; ++} __packed; ++ ++struct sip_cmd_ps { ++ u8 dtim_period; ++ u8 max_sleep_period; ++ u8 on; ++ u8 resv; ++} __packed; ++ ++struct sip_cmd_suspend { ++ u8 suspend; ++ u8 resv[3]; ++} __packed; ++ ++#define SIP_DUMP_RPBM_ERR BIT(0) ++#define SIP_RXABORT_FIXED BIT(1) ++#define SIP_SUPPORT_BGSCAN BIT(2) ++struct sip_evt_bootup2 { ++ u16 tx_blksz; ++ u8 mac_addr[ETH_ALEN]; ++ u16 rx_blksz; ++ u8 credit_to_reserve; ++ u8 options; ++ s16 noise_floor; ++ u8 resv[2]; ++ /* anything else ? */ ++} __packed; ++ ++typedef enum { ++ TRC_TX_AMPDU_STOPPED = 1, ++ TRC_TX_AMPDU_OPERATIONAL, ++ TRC_TX_AMPDU_WAIT_STOP, ++ TRC_TX_AMPDU_WAIT_OPERATIONAL, ++ TRC_TX_AMPDU_START, ++} trc_ampdu_state_t; ++ ++struct sip_evt_trc_ampdu { ++ u8 state; ++ u8 tid; ++ u8 addr[ETH_ALEN]; ++} __packed; ++ ++struct sip_cmd_set_wmm_params { ++ u8 aci; ++ u8 aifs; ++ u8 ecw_min; ++ u8 ecw_max; ++ u16 txop_us; ++} __packed; ++ ++#define SIP_AMPDU_RX_START 0 ++#define SIP_AMPDU_RX_STOP 1 ++#define SIP_AMPDU_TX_OPERATIONAL 2 ++#define SIP_AMPDU_TX_STOP 3 ++struct sip_cmd_ampdu_action { ++ u8 action; ++ u8 index; ++ u8 tid; ++ u8 win_size; ++ u16 ssn; ++ u8 addr[ETH_ALEN]; ++} __packed; ++ ++#define SIP_TX_ST_OK 0 ++#define SIP_TX_ST_NOEB 1 ++#define SIP_TX_ST_ACKTO 2 ++#define SIP_TX_ST_ENCERR 3 ++ ++//NB: sip_tx_status must be 4 bytes aligned ++struct sip_tx_status { ++ u32 sip_seq; ++#ifdef HOST_RC ++ struct sip_rc_status rcstatus; ++#endif /* HOST_RC */ ++ u8 errno; /* success or failure code */ ++ u8 rate_index; ++ char ack_signal; ++ u8 pad; ++} __packed; ++ ++struct sip_evt_tx_report { ++ u32 pkts; ++ struct sip_tx_status status[0]; ++} __packed; ++ ++struct sip_evt_tx_mblk { ++ u32 mblk_map; ++} __packed; ++ ++struct sip_evt_scan_report { ++ u16 scan_id; ++ u16 aborted; ++} __packed; ++ ++struct sip_evt_roc { ++ u16 state; //start:1, end :0 ++ u16 is_ok; ++} __packed; ++ ++struct sip_evt_txidle { ++ u32 last_seq; ++} __packed; ++ ++struct sip_evt_noisefloor { ++ s16 noise_floor; ++ u16 pad; ++} __packed; ++/* ++ * for mblk direct memory access, no need for sip_hdr. tx: first 2k for contrl msg, ++ * rest of 14k for data. rx, same. ++ */ ++#ifdef TEST_MODE ++ ++struct sip_cmd_sleep { ++ u32 sleep_mode; ++ u32 sleep_tm_ms; ++ u32 wakeup_tm_ms; //zero: after receive bcn, then sleep, nozero: delay nozero ms to sleep ++ u32 sleep_times; //zero: always sleep, nozero: after nozero number sleep/wakeup, then end up sleep ++} __packed; ++ ++struct sip_cmd_wakeup { ++ u32 check_data; //0:copy to event ++} __packed; ++ ++struct sip_evt_wakeup { ++ u32 check_data; ++} __packed; ++ ++//general debug command ++struct sip_cmd_debug { ++ u32 cmd_type; ++ u32 para_num; ++ u32 para[10]; ++} __packed; ++ ++struct sip_evt_debug { ++ u16 len; ++ u32 results[12]; ++ u16 pad; ++} __packed; ++ ++struct sip_cmd_ate { ++ //u8 len; ++ u8 cmdstr[0]; ++} __packed; ++ ++ ++ ++#endif //ifdef TEST_MODE ++ ++#endif /* _SIP_COMMON_H_ */ +diff --git a/drivers/net/wireless/esp8089/slc_host_register.h b/drivers/net/wireless/esp8089/slc_host_register.h +new file mode 100644 +index 000000000000..2cdb2c856d15 +--- /dev/null ++++ b/drivers/net/wireless/esp8089/slc_host_register.h +@@ -0,0 +1,271 @@ ++//Generated at 2012-10-23 20:11:08 ++/* ++ * Copyright (c) 2011 Espressif System ++ * ++ * 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 Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ */ ++ ++#ifndef SLC_HOST_REGISTER_H_INCLUDED ++#define SLC_HOST_REGISTER_H_INCLUDED ++ ++/* #define REG_SLC_HOST_BASE 0x00000000 */ ++/* skip the token1, since reading it will clean the credit */ ++#define REG_SLC_HOST_BASE 0x00000000 ++#define REG_SLC_BASE 0x00000000 ++ ++ ++#define SLC_HOST_PF (REG_SLC_HOST_BASE + 0x0) ++#define SLC_HOST_TOKEN_RDATA (REG_SLC_HOST_BASE + 0x4) ++#define SLC_HOST_RX_PF_EOF 0x0000000F ++#define SLC_HOST_RX_PF_EOF_S 28 ++#define SLC_HOST_TOKEN1 0x00000FFF ++#define SLC_HOST_TOKEN1_S 16 ++#define SLC_HOST_RX_PF_VALID (BIT(15)) ++#define SLC_HOST_TOKEN0 0x00000FFF ++#define SLC_HOST_TOKEN0_S 0 ++ ++#define SLC_HOST_TOKEN0_MASK SLC_HOST_TOKEN0 ++ ++#define SLC_HOST_INT_RAW (REG_SLC_HOST_BASE + 0x8) ++#define SLC_HOST_EXT_BIT3_INT_RAW (BIT(22)) ++#define SLC_HOST_EXT_BIT2_INT_RAW (BIT(21)) ++#define SLC_HOST_EXT_BIT1_INT_RAW (BIT(20)) ++#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_RAW (BIT(19)) ++#define SLC_HOST_RX_PF_VALID_INT_RAW (BIT(18)) ++#define SLC_HOST_TX_OVF_INT_RAW (BIT(17)) ++#define SLC_HOST_RX_UDF_INT_RAW (BIT(16)) ++#define SLC_HOST_TX_START_INT_RAW (BIT(15)) ++#define SLC_HOST_RX_START_INT_RAW (BIT(14)) ++#define SLC_HOST_RX_EOF_INT_RAW (BIT(13)) ++#define SLC_HOST_RX_SOF_INT_RAW (BIT(12)) ++#define SLC_HOST_TOKEN1_0TO1_INT_RAW (BIT(11)) ++#define SLC_HOST_TOKEN0_0TO1_INT_RAW (BIT(10)) ++#define SLC_HOST_TOKEN1_1TO0_INT_RAW (BIT(9)) ++#define SLC_HOST_TOKEN0_1TO0_INT_RAW (BIT(8)) ++#define SLC_HOST_TOHOST_BIT7_INT_RAW (BIT(7)) ++#define SLC_HOST_TOHOST_BIT6_INT_RAW (BIT(6)) ++#define SLC_HOST_TOHOST_BIT5_INT_RAW (BIT(5)) ++#define SLC_HOST_TOHOST_BIT4_INT_RAW (BIT(4)) ++#define SLC_HOST_TOHOST_BIT3_INT_RAW (BIT(3)) ++#define SLC_HOST_TOHOST_BIT2_INT_RAW (BIT(2)) ++#define SLC_HOST_TOHOST_BIT1_INT_RAW (BIT(1)) ++#define SLC_HOST_TOHOST_BIT0_INT_RAW (BIT(0)) ++ ++#define SLC_HOST_STATE_W0 (REG_SLC_HOST_BASE + 0xC) ++#define SLC_HOST_STATE3 0x000000FF ++#define SLC_HOST_STATE3_S 24 ++#define SLC_HOST_STATE2 0x000000FF ++#define SLC_HOST_STATE2_S 16 ++#define SLC_HOST_STATE1 0x000000FF ++#define SLC_HOST_STATE1_S 8 ++#define SLC_HOST_STATE0 0x000000FF ++#define SLC_HOST_STATE0_S 0 ++ ++#define SLC_HOST_STATE_W1 (REG_SLC_HOST_BASE + 0x10) ++#define SLC_HOST_STATE7 0x000000FF ++#define SLC_HOST_STATE7_S 24 ++#define SLC_HOST_STATE6 0x000000FF ++#define SLC_HOST_STATE6_S 16 ++#define SLC_HOST_STATE5 0x000000FF ++#define SLC_HOST_STATE5_S 8 ++#define SLC_HOST_STATE4 0x000000FF ++#define SLC_HOST_STATE4_S 0 ++ ++#define SLC_HOST_CONF_W0 (REG_SLC_HOST_BASE + 0x14) ++#define SLC_HOST_CONF3 0x000000FF ++#define SLC_HOST_CONF3_S 24 ++#define SLC_HOST_CONF2 0x000000FF ++#define SLC_HOST_CONF2_S 16 ++#define SLC_HOST_CONF1 0x000000FF ++#define SLC_HOST_CONF1_S 8 ++#define SLC_HOST_CONF0 0x000000FF ++#define SLC_HOST_CONF0_S 0 ++ ++#define SLC_HOST_CONF_W1 (REG_SLC_HOST_BASE + 0x18) ++#define SLC_HOST_CONF7 0x000000FF ++#define SLC_HOST_CONF7_S 24 ++#define SLC_HOST_CONF6 0x000000FF ++#define SLC_HOST_CONF6_S 16 ++#define SLC_HOST_CONF5 0x000000FF ++#define SLC_HOST_CONF5_S 8 ++#define SLC_HOST_CONF4 0x000000FF ++#define SLC_HOST_CONF4_S 0 ++ ++#define SLC_HOST_INT_ST (REG_SLC_HOST_BASE + 0x1C) ++#define SLC_HOST_RX_ST (BIT(23)) ++#define SLC_HOST_EXT_BIT3_INT_ST (BIT(22)) ++#define SLC_HOST_EXT_BIT2_INT_ST (BIT(21)) ++#define SLC_HOST_EXT_BIT1_INT_ST (BIT(20)) ++#define SLC_HOST_RXFIFO_NOT_EMPTY_INT_ST (BIT(19)) ++#define SLC_HOST_RX_PF_VALID_INT_ST (BIT(18)) ++#define SLC_HOST_TX_OVF_INT_ST (BIT(17)) ++#define SLC_HOST_RX_UDF_INT_ST (BIT(16)) ++#define SLC_HOST_TX_START_INT_ST (BIT(15)) ++#define SLC_HOST_RX_START_INT_ST (BIT(14)) ++#define SLC_HOST_RX_EOF_INT_ST (BIT(13)) ++#define SLC_HOST_RX_SOF_INT_ST (BIT(12)) ++#define SLC_HOST_TOKEN1_0TO1_INT_ST (BIT(11)) ++#define SLC_HOST_TOKEN0_0TO1_INT_ST (BIT(10)) ++#define SLC_HOST_TOKEN1_1TO0_INT_ST (BIT(9)) ++#define SLC_HOST_TOKEN0_1TO0_INT_ST (BIT(8)) ++#define SLC_HOST_TOHOST_BIT7_INT_ST (BIT(7)) ++#define SLC_HOST_TOHOST_BIT6_INT_ST (BIT(6)) ++#define SLC_HOST_TOHOST_BIT5_INT_ST (BIT(5)) ++#define SLC_HOST_TOHOST_BIT4_INT_ST (BIT(4)) ++#define SLC_HOST_TOHOST_BIT3_INT_ST (BIT(3)) ++#define SLC_HOST_TOHOST_BIT2_INT_ST (BIT(2)) ++#define SLC_HOST_TOHOST_BIT1_INT_ST (BIT(1)) ++#define SLC_HOST_TOHOST_BIT0_INT_ST (BIT(0)) ++ ++#define SLC_HOST_CONF_W2 (REG_SLC_HOST_BASE + 0x20) ++#define SLC_HOST_CONF11 0x000000FF ++#define SLC_HOST_CONF11_S 24 ++#define SLC_HOST_CONF10 0x000000FF ++#define SLC_HOST_CONF10_S 16 ++#define SLC_HOST_CONF9 0x000000FF ++#define SLC_HOST_CONF9_S 8 ++#define SLC_HOST_CONF8 0x000000FF ++#define SLC_HOST_CONF8_S 0 ++ ++#define SLC_HOST_CONF_W3 (REG_SLC_HOST_BASE + 0x24) ++#define SLC_HOST_CONF15 0x000000FF ++#define SLC_HOST_CONF15_S 24 ++#define SLC_HOST_CONF14 0x000000FF ++#define SLC_HOST_CONF14_S 16 ++#define SLC_HOST_CONF13 0x000000FF ++#define SLC_HOST_CONF13_S 8 ++#define SLC_HOST_CONF12 0x000000FF ++#define SLC_HOST_CONF12_S 0 ++ ++#define SLC_HOST_GEN_TXDONE_INT BIT(16) ++#define SLC_HOST_GEN_RXDONE_INT BIT(17) ++ ++#define SLC_HOST_CONF_W4 (REG_SLC_HOST_BASE + 0x28) ++#define SLC_HOST_CONF19 0x000000FF ++#define SLC_HOST_CONF19_S 24 ++#define SLC_HOST_CONF18 0x000000FF ++#define SLC_HOST_CONF18_S 16 ++#define SLC_HOST_CONF17 0x000000FF ++#define SLC_HOST_CONF17_S 8 ++#define SLC_HOST_CONF16 0x000000FF ++#define SLC_HOST_CONF16_S 0 ++ ++#define SLC_HOST_TOKEN_WDATA (REG_SLC_HOST_BASE + 0x2C) ++#define SLC_HOST_TOKEN1_WD 0x00000FFF ++#define SLC_HOST_TOKEN1_WD_S 16 ++#define SLC_HOST_TOKEN0_WD 0x00000FFF ++#define SLC_HOST_TOKEN0_WD_S 0 ++ ++#define SLC_HOST_INT_CLR (REG_SLC_HOST_BASE + 0x30) ++#define SLC_HOST_TOKEN1_WR (BIT(31)) ++#define SLC_HOST_TOKEN0_WR (BIT(30)) ++#define SLC_HOST_TOKEN1_DEC (BIT(29)) ++#define SLC_HOST_TOKEN0_DEC (BIT(28)) ++#define SLC_HOST_EXT_BIT3_INT_CLR (BIT(22)) ++#define SLC_HOST_EXT_BIT2_INT_CLR (BIT(21)) ++#define SLC_HOST_EXT_BIT1_INT_CLR (BIT(20)) ++#define SLC_HOST_EXT_BIT0_INT_CLR (BIT(19)) ++#define SLC_HOST_RX_PF_VALID_INT_CLR (BIT(18)) ++#define SLC_HOST_TX_OVF_INT_CLR (BIT(17)) ++#define SLC_HOST_RX_UDF_INT_CLR (BIT(16)) ++#define SLC_HOST_TX_START_INT_CLR (BIT(15)) ++#define SLC_HOST_RX_START_INT_CLR (BIT(14)) ++#define SLC_HOST_RX_EOF_INT_CLR (BIT(13)) ++#define SLC_HOST_RX_SOF_INT_CLR (BIT(12)) ++#define SLC_HOST_TOKEN1_0TO1_INT_CLR (BIT(11)) ++#define SLC_HOST_TOKEN0_0TO1_INT_CLR (BIT(10)) ++#define SLC_HOST_TOKEN1_1TO0_INT_CLR (BIT(9)) ++#define SLC_HOST_TOKEN0_1TO0_INT_CLR (BIT(8)) ++#define SLC_HOST_TOHOST_BIT7_INT_CLR (BIT(7)) ++#define SLC_HOST_TOHOST_BIT6_INT_CLR (BIT(6)) ++#define SLC_HOST_TOHOST_BIT5_INT_CLR (BIT(5)) ++#define SLC_HOST_TOHOST_BIT4_INT_CLR (BIT(4)) ++#define SLC_HOST_TOHOST_BIT3_INT_CLR (BIT(3)) ++#define SLC_HOST_TOHOST_BIT2_INT_CLR (BIT(2)) ++#define SLC_HOST_TOHOST_BIT1_INT_CLR (BIT(1)) ++#define SLC_HOST_TOHOST_BIT0_INT_CLR (BIT(0)) ++ ++#define SLC_HOST_INT_ENA (REG_SLC_HOST_BASE + 0x34) ++#define SLC_HOST_EXT_BIT3_INT_ENA (BIT(22)) ++#define SLC_HOST_EXT_BIT2_INT_ENA (BIT(21)) ++#define SLC_HOST_EXT_BIT1_INT_ENA (BIT(20)) ++#define SLC_HOST_EXT_BIT0_INT_ENA (BIT(19)) ++#define SLC_HOST_RX_PF_VALID_INT_ENA (BIT(18)) ++#define SLC_HOST_TX_OVF_INT_ENA (BIT(17)) ++#define SLC_HOST_RX_UDF_INT_ENA (BIT(16)) ++#define SLC_HOST_TX_START_INT_ENA (BIT(15)) ++#define SLC_HOST_RX_START_INT_ENA (BIT(14)) ++#define SLC_HOST_RX_EOF_INT_ENA (BIT(13)) ++#define SLC_HOST_RX_SOF_INT_ENA (BIT(12)) ++#define SLC_HOST_TOKEN1_0TO1_INT_ENA (BIT(11)) ++#define SLC_HOST_TOKEN0_0TO1_INT_ENA (BIT(10)) ++#define SLC_HOST_TOKEN1_1TO0_INT_ENA (BIT(9)) ++#define SLC_HOST_TOKEN0_1TO0_INT_ENA (BIT(8)) ++#define SLC_HOST_TOHOST_BIT7_INT_ENA (BIT(7)) ++#define SLC_HOST_TOHOST_BIT6_INT_ENA (BIT(6)) ++#define SLC_HOST_TOHOST_BIT5_INT_ENA (BIT(5)) ++#define SLC_HOST_TOHOST_BIT4_INT_ENA (BIT(4)) ++#define SLC_HOST_TOHOST_BIT3_INT_ENA (BIT(3)) ++#define SLC_HOST_TOHOST_BIT2_INT_ENA (BIT(2)) ++#define SLC_HOST_TOHOST_BIT1_INT_ENA (BIT(1)) ++#define SLC_HOST_TOHOST_BIT0_INT_ENA (BIT(0)) ++ ++#define SLC_HOST_CONF_W5 (REG_SLC_HOST_BASE + 0x3C) ++#define SLC_HOST_CONF23 0x000000FF ++#define SLC_HOST_CONF23_S 24 ++#define SLC_HOST_CONF22 0x000000FF ++#define SLC_HOST_CONF22_S 16 ++#define SLC_HOST_CONF21 0x000000FF ++#define SLC_HOST_CONF21_S 8 ++#define SLC_HOST_CONF20 0x000000FF ++#define SLC_HOST_CONF20_S 0 ++ ++#define SLC_HOST_WIN_CMD (REG_SLC_HOST_BASE + 0x40) ++ ++ ++#define SLC_HOST_DATE (REG_SLC_HOST_BASE + 0x78) ++#define SLC_HOST_ID (REG_SLC_HOST_BASE + 0x7C) ++ ++#define SLC_ADDR_WINDOW_CLEAR_MASK (~(0xf<<12)) ++#define SLC_FROM_HOST_ADDR_WINDOW (0x1<<12) ++#define SLC_TO_HOST_ADDR_WINDOW (0x3<<12) ++ ++#define SLC_SET_FROM_HOST_ADDR_WINDOW(v) do { \ ++ (v) &= 0xffff; \ ++ (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \ ++ (v) |= SLC_FROM_HOST_ADDR_WINDOW; \ ++} while (0); ++ ++#define SLC_SET_TO_HOST_ADDR_WINDOW(v) do { \ ++ (v) &= 0xffff; \ ++ (v) &= SLC_ADDR_WINDOW_CLEAR_MASK; \ ++ (v) |= SLC_TO_HOST_ADDR_WINDOW; \ ++} while (0); ++ ++#define SLC_INT_ENA (REG_SLC_BASE + 0xC) ++#define SLC_RX_EOF_INT_ENA BIT(17) ++#define SLC_FRHOST_BIT2_INT_ENA BIT(2) ++ ++#define SLC_RX_LINK (REG_SLC_BASE + 0x24) ++#define SLC_RXLINK_START BIT(29) ++ ++#define SLC_BRIDGE_CONF (REG_SLC_BASE + 0x44) ++#define SLC_TX_PUSH_IDLE_NUM 0xFFFF ++#define SLC_TX_PUSH_IDLE_NUM_S 16 ++#define SLC_HDA_MAP_128K BIT(13) ++#define SLC_TX_DUMMY_MODE BIT(12) ++#define SLC_FIFO_MAP_ENA 0x0000000F ++#define SLC_FIFO_MAP_ENA_S 8 ++#define SLC_TXEOF_ENA 0x0000003F ++#define SLC_TXEOF_ENA_S ++ ++ ++#endif // SLC_HOST_REGISTER_H_INCLUDED +-- +2.34.1 + diff --git a/projects/Rockchip/packages/linux/patches/RK3399/002-singleadc-deadzone.patch b/projects/Rockchip/packages/linux/patches/RK3399/002-singleadc-deadzone.patch new file mode 100644 index 000000000..6a8c85b4c --- /dev/null +++ b/projects/Rockchip/packages/linux/patches/RK3399/002-singleadc-deadzone.patch @@ -0,0 +1,100 @@ +From c731e0b23383c8b451932331f22122afe04348bd Mon Sep 17 00:00:00 2001 +From: Johnny on Flame +Date: Fri, 3 Nov 2023 04:53:33 +0000 +Subject: [PATCH] Port radial thresholding from @littleguy77. + +--- + drivers/input/joystick/singleadcjoy.c | 64 ++++++++++++++++++++------- + 1 file changed, 48 insertions(+), 16 deletions(-) + +diff --git a/drivers/input/joystick/singleadcjoy.c b/drivers/input/joystick/singleadcjoy.c +index f0a24a24a..455e11121 100644 +--- a/drivers/input/joystick/singleadcjoy.c ++++ b/drivers/input/joystick/singleadcjoy.c +@@ -580,35 +580,67 @@ static void joypad_adc_check(struct input_polled_dev *poll_dev) + { + struct joypad *joypad = poll_dev->private; + int nbtn; ++ int mag; + +- for (nbtn = 0; nbtn < joypad->amux_count; nbtn++) { +- struct bt_adc *adc = &joypad->adcs[nbtn]; ++ /* Assumes an even number of axes and that joystick axis pairs are sequential */ ++ /* e.g. left stick Y immediately follows left stick X */ ++ for (nbtn = 0; nbtn < joypad->amux_count; nbtn+=2) { ++ struct bt_adc *adcx = &joypad->adcs[nbtn]; ++ struct bt_adc *adcy = &joypad->adcs[nbtn + 1]; + +- adc->value = joypad_adc_read(joypad->amux, adc); +- if (!adc->value) { ++ /* Read first joystick axis */ ++ adcx->value = joypad_adc_read(joypad->amux, adcx); ++ if (!adcx->value) { ++ //dev_err(joypad->dev, "%s : saradc channels[%d]! adc->value : %d\n",__func__, nbtn, adc->value); ++ continue; ++ } ++ adcx->value = adcx->value - adcx->cal; ++ ++ /* Read second joystick axis */ ++ adcy->value = joypad_adc_read(joypad->amux, adcy); ++ if (!adcy->value) { + //dev_err(joypad->dev, "%s : saradc channels[%d]! adc->value : %d\n",__func__, nbtn, adc->value); + continue; + } +- adc->value = adc->value - adc->cal; ++ adcy->value = adcy->value - adcy->cal; + + /* Joystick Deadzone check */ ++ mag = int_sqrt((adcx->value * adcx->value) + (adcy->value * adcy->value)); + if (joypad->bt_adc_deadzone) { +- if (abs(adc->value) < joypad->bt_adc_deadzone) +- adc->value = 0; ++ if (mag <= joypad->bt_adc_deadzone) { ++ adcx->value = 0; ++ adcy->value = 0; ++ } ++ else { ++ /* Assumes adcx->max == -adcx->min == adcy->max == -adcy->min */ ++ /* Order of operations is critical to avoid integer overflow */ ++ adcx->value = (((adcx->max * adcx->value) / mag) * (mag - joypad->bt_adc_deadzone)) / (adcx->max - joypad->bt_adc_deadzone); ++ adcy->value = (((adcy->max * adcy->value) / mag) * (mag - joypad->bt_adc_deadzone)) / (adcy->max - joypad->bt_adc_deadzone); ++ } + } + + /* adc data tuning */ +- if (adc->tuning_n && adc->value < 0) +- adc->value = ADC_DATA_TUNING(adc->value, adc->tuning_n); +- if (adc->tuning_p && adc->value > 0) +- adc->value = ADC_DATA_TUNING(adc->value, adc->tuning_p); +- +- adc->value = adc->value > adc->max ? adc->max : adc->value; +- adc->value = adc->value < adc->min ? adc->min : adc->value; ++ if (adcx->tuning_n && adcx->value < 0) ++ adcx->value = ADC_DATA_TUNING(adcx->value, adcx->tuning_n); ++ if (adcx->tuning_p && adcx->value > 0) ++ adcx->value = ADC_DATA_TUNING(adcx->value, adcx->tuning_p); ++ if (adcy->tuning_n && adcy->value < 0) ++ adcy->value = ADC_DATA_TUNING(adcy->value, adcy->tuning_n); ++ if (adcy->tuning_p && adcy->value > 0) ++ adcy->value = ADC_DATA_TUNING(adcy->value, adcy->tuning_p); ++ ++ /* Clamp to [min, max] */ ++ adcx->value = adcx->value > adcx->max ? adcx->max : adcx->value; ++ adcx->value = adcx->value < adcx->min ? adcx->min : adcx->value; ++ adcy->value = adcy->value > adcy->max ? adcy->max : adcy->value; ++ adcy->value = adcy->value < adcy->min ? adcy->min : adcy->value; + + input_report_abs(poll_dev->input, +- adc->report_type, +- adc->invert ? adc->value * (-1) : adc->value); ++ adcx->report_type, ++ adcx->invert ? adcx->value * (-1) : adcx->value); ++ input_report_abs(poll_dev->input, ++ adcy->report_type, ++ adcy->invert ? adcy->value * (-1) : adcy->value); + } + input_sync(poll_dev->input); + } +-- +2.34.1 + diff --git a/scripts/unpack b/scripts/unpack index 3ea09b815..fc989f33b 100755 --- a/scripts/unpack +++ b/scripts/unpack @@ -42,7 +42,7 @@ for i in ${BUILD}/${PKG_NAME}-*; do if [ ! "${PKG_DEEPHASH}" = "${STAMP_PKG_DEEPHASH}" ] ; then ${SCRIPTS}/clean "${PKG_NAME}" if [ "${PKG_NAME}" = "linux" ]; then - for CLEAN_DEP in ${KERNEL_EXTRA_DEPENDS_TARGET} ${ADDITIONAL_DRIVERS} initramfs + for CLEAN_DEP in ${KERNEL_EXTRA_DEPENDS_TARGET} ${ADDITIONAL_DRIVERS} busybox initramfs do ${SCRIPTS}/clean "${CLEAN_DEP}" ${SCRIPTS}/unpack "${CLEAN_DEP}" @@ -124,13 +124,7 @@ if [ -d "${SOURCES}/${PKG_NAME}" -o -d "${PKG_DIR}/sources" ] || pkg_call_exists if [ "${PKG_SKIP_PATCHES}" != "yes" ]; then pkg_call_exists pre_patch && pkg_call pre_patch - - if [ "${TARGET_ARCH}" = "x86_64" ]; then - PATCH_ARCH="x86" - else - #PATCH_ARCH="${TARGET_PATCH_ARCH:-${TARGET_ARCH}}" - PATCH_ARCH="${TARGET_ARCH}" - fi + PATCH_ARCH="${TARGET_ARCH}" PATCH_DIRS_PKG="" PATCH_DIRS_PRJ=""