├── .github └── ISSUE_TEMPLATE │ └── bug_report.yml ├── README.md ├── bin ├── mcu_led ├── rk915.ko ├── rk915_fw.bin ├── rk915_patch.bin └── ws2812 ├── clone_support.sh ├── consoles ├── a10mini │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ └── rk3326-a10mini-linux.dtb ├── files │ ├── 480p │ │ ├── 351Files │ │ └── drastic │ │ │ ├── TF1 │ │ │ └── libSDL2-2.0.so.0.3000.2 │ │ │ ├── TF2 │ │ │ └── libSDL2-2.0.so.0.3000.2 │ │ │ └── bg │ │ │ ├── bg_vh_s0.png │ │ │ └── bg_vh_s2.png │ ├── 720p │ │ ├── 351Files │ │ └── drastic │ │ │ ├── TF1 │ │ │ └── libSDL2-2.0.so.0.3000.2 │ │ │ ├── TF2 │ │ │ └── libSDL2-2.0.so.0.3000.2 │ │ │ └── bg │ │ │ ├── bg_vertical.png │ │ │ ├── bg_vertical_full.png │ │ │ ├── bg_vh_s0.png │ │ │ └── bg_vh_s2.png │ ├── 768p │ │ └── 351Files │ ├── dualJoy │ │ ├── controls.ini │ │ ├── drastic.cfg │ │ ├── ppsspp.ini │ │ └── ppsspp.ini.sdl │ ├── noneJoy │ │ ├── controls.ini │ │ ├── drastic.cfg │ │ ├── ppsspp.ini │ │ └── ppsspp.ini.sdl │ ├── ogage.happy5.conf │ ├── ogage.select.conf │ ├── option-gamelist.xml │ ├── retroarch.happy5 │ ├── retroarch.select │ ├── retroarch32.happy5 │ └── retroarch32.select ├── hg36 │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-hg36-linux.dtb ├── k36p4 │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-k36p4-linux.dtb ├── k36p7 │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-k36p7-linux.dtb ├── k36p8 │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-k36p8-linux.dtb ├── k36s │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-k36s-linux.dtb ├── kenrel │ ├── common │ │ └── Image │ └── panel5 │ │ └── Image ├── logo │ ├── 480P │ │ └── logo.bmp │ ├── 720P │ │ ├── logo.bmp │ │ └── logo.bmp.bak │ └── 768P │ │ └── logo.bmp ├── mymini │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-mymini-linux.dtb ├── origin r36s panel 0 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rk3326-r35s-linux.dtb │ ├── rk3326-rg351mp-linux.dtb │ ├── rk3326-rg351mp-linux.dtb.orig │ └── rk3326-rg351mp-linux.dtb.tony ├── origin r36s panel 1 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rk3326-r35s-linux.dtb │ ├── rk3326-rg351mp-linux.dtb │ ├── rk3326-rg351mp-linux.dtb.orig │ └── rk3326-rg351mp-linux.dtb.tony ├── origin r36s panel 2 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rk3326-r35s-linux.dtb │ ├── rk3326-rg351mp-linux.dtb │ ├── rk3326-rg351mp-linux.dtb.orig │ └── rk3326-rg351mp-linux.dtb.tony ├── origin r36s panel 3 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rk3326-r35s-linux.dtb │ ├── rk3326-rg351mp-linux.dtb │ ├── rk3326-rg351mp-linux.dtb.orig │ └── rk3326-rg351mp-linux.dtb.tony ├── origin r36s panel 4 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rk3326-r35s-linux.dtb │ ├── rk3326-rg351mp-linux.dtb │ ├── rk3326-rg351mp-linux.dtb.orig │ └── rk3326-rg351mp-linux.dtb.tony ├── origin r36s panel 5 │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ ├── rg351p-kernel.dtb │ └── rk3326-r35s-linux.dtb ├── r36max │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-r36max-linux.dtb ├── r36pro │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-xf36pro-linux.dtb ├── r36splus │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ └── rk3326-r36plus-linux.dtb ├── r36ultra │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-r36ultra-linux.dtb ├── r46h │ ├── boot.ini │ ├── rg351mp-kernel.dtb │ └── rk3326-r46h-linux.dtb ├── rx6h │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-rx6h-linux.dtb ├── xf35h │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-xf35h-linux.dtb ├── xf40h │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-xf40h-linux.dtb ├── xf40v │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-xf40v-linux.dtb └── xgb36 │ ├── boot.ini │ ├── rg351v-kernel.dtb │ └── rk3326-xgb36-linux.dtb ├── dtb_selector.go ├── dtb_selector_macos_apple ├── dtb_selector_macos_intel ├── dtb_selector_win32.exe ├── go_build.bat ├── grow_p2_plus.sh ├── replace_file ├── atomiswave.sh ├── dreamcast.sh ├── emulationstation2.po ├── es_input.cfg ├── es_systems.cfg ├── n64.sh ├── naomi.sh ├── ogage ├── pico8.sh └── saturn.sh └── sh ├── clone.sh ├── expandtoexfat.sh ├── fix_audio.sh └── joyled.sh /.github/ISSUE_TEMPLATE/bug_report.yml: -------------------------------------------------------------------------------- 1 | name: Bug Report 2 | description: Report a bug (please make sure you are using the latest version first!) 3 | title: "[Bug]: " 4 | labels: [bug] 5 | assignees: [] 6 | 7 | body: 8 | - type: checkboxes 9 | attributes: 10 | label: Pre-submission checklist 11 | description: Please confirm before submitting 12 | options: 13 | - label: I am using the **latest version** of the project 14 | required: true 15 | - label: I have searched existing issues to make sure this is not a duplicate 16 | required: true 17 | 18 | - type: input 19 | id: version 20 | attributes: 21 | label: Version 22 | description: Enter the version you are using 23 | placeholder: e.g.,0913 24 | validations: 25 | required: true 26 | 27 | - type: textarea 28 | id: console 29 | attributes: 30 | label: Console Output / Error 31 | description: Paste relevant console output or error messages here 32 | placeholder: | 33 | Example: 34 | Error: Something went wrong at line 42... 35 | validations: 36 | required: true 37 | 38 | - type: textarea 39 | id: description 40 | attributes: 41 | label: Bug Description 42 | description: Describe the situation you encountered 43 | placeholder: A clear and concise description of the problem. 44 | validations: 45 | required: true 46 | 47 | - type: textarea 48 | id: steps 49 | attributes: 50 | label: Steps to Reproduce 51 | description: Provide detailed steps so we can reproduce the issue 52 | placeholder: | 53 | 1. Run '...' 54 | 2. Click on '...' 55 | 3. Observe the error 56 | validations: 57 | required: true 58 | 59 | - type: textarea 60 | id: expected 61 | attributes: 62 | label: Expected Behavior (Optional) 63 | description: What did you expect to happen? 64 | placeholder: A clear description of the expected behavior. 65 | 66 | - type: textarea 67 | id: media 68 | attributes: 69 | label: Screenshots / Video / Logs (Optional) 70 | description: Upload screenshots, videos, or additional logs that help explain the issue. 71 | placeholder: Drag and drop files here or paste logs. 72 | 73 | - type: textarea 74 | id: additional 75 | attributes: 76 | label: Additional Context (Optional) 77 | description: Add any other context about the problem here. 78 | placeholder: Related environment details, dependencies, etc. 79 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### ArkOS 4.4 Kernel Support for Clone Devices 2 | 3 | This repository aims to bring **ArkOS 4.4 kernel** support to certain clone devices. 4 | Currently, I can only maintain the devices I personally own, but contributions are always welcome via PRs. 5 | 6 | ## Supported Devices 7 | 8 | - **XF40H** 9 | - **XF35H** 10 | - **MyMini** 11 | - **R36Pro** / **K36 PANEL1** 12 | - **R36Max** 13 | - **HG36** 14 | - **R36Ultra**[[Only V1 is supported.](https://github.com/Vi-K36/EE-Clones-DTB/tree/main/R36%20Ultra%20(emmc)/Stock)] 15 | - **R36T** 16 | - **K36S** 17 | - **RX6H** 18 | - **A10Mini** 19 | - **R36S Clone [K36 Panel 8]** 20 | - **R36S Clone [K36 Panel 4]** [origin dtb](https://github.com/Vi-K36/EE-Clones-DTB/tree/main/R36S%20EE-Clone/Stock%20(P4)%20%5BE93995-2022%5D%20(2025)) 21 | - **R36S Clone [K36 Panel 7]** [origin dtb](https://github.com/AeolusUX/K36-DTB/tree/main/Panel%207) 22 | 23 | ## What We Did 24 | 25 | To make ArkOS work on clone devices, the following changes and adaptations were made: 26 | 27 | 1. **Controller driver modification** 28 | - Kernel Source:[lcdyk0517/arkos.bsp.4.4: Linux kernel source tree](https://github.com/lcdyk0517/arkos.bsp.4.4) 29 | 2. **DTS reverse-porting for compatibility** 30 | - The DTS files were **reverse-ported from the 5.10 kernel to the 4.4 kernel** to ensure proper hardware support. 31 | - Reference: [AveyondFly/rocknix_dts](https://github.com/AveyondFly/rocknix_dts/tree/main/3326/arkos_4.4_dts) 32 | 3. - **Built on the ArkOS distribution maintained by AeolusUX** 33 | - Reference repo: [AeolusUX/ArkOS-R3XS](https://github.com/AeolusUX/ArkOS-R3XS) 34 | 4. - **351Files GitHub repo** 35 | - Reference repo: [lcdyk0517/351Files](https://github.com/lcdyk0517/351Files) 36 | 5. - **ogage GitHub repo** 37 | - Reference repo: [lcdyk0517/ogage](https://github.com/lcdyk0517/ogage) 38 | 39 | ## How to Use 40 | 41 | 1. Download the **ArkOS** release image. 42 | 2. Flash the image to the SD card and run `dtb_selector.exe` to select the corresponding device, then reboot the device. 43 | 44 | Or — 45 | If you are a non-Windows user, perform the configuration manually by mounting the `BOOT` partition and: 46 | 47 | 1. Copy all files from `consoles/` (`boot.ini`, and two `dtb` files) to the root directory of the SD card. 48 | 2. Copy `Image` from `consoles/kenrel/common`(sic) to the root directory of the SD card. 49 | 3. Copy the `consoles/logo//logo.bmp` to the root directory of the SD card. 50 | 4. Unmount the SD card, install into the handheld, and reboot 51 | 52 | ## Remapping the Joystick Axes 53 | 54 | Visit the [Joymux-Fix](https://github.com/lcdyk0517/joymux-fix) website for instructions on generating new `dtb` files 55 | with custom controller axis mappings. 56 | 57 | ## Known Limitations 58 | 59 | - **eMMC installation is not yet supported** — currently, only booting from the SD card is available. 60 | 61 | ## Future Work 62 | 63 | 1. Enable **eMMC installation**. 64 | 65 | ## Contribution 66 | 67 | I can only test and maintain devices I physically own. 68 | If you have other clone devices and want to help improve compatibility, feel free to submit a **PR**! 69 | -------------------------------------------------------------------------------- /bin/mcu_led: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/bin/mcu_led -------------------------------------------------------------------------------- /bin/rk915.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/bin/rk915.ko -------------------------------------------------------------------------------- /bin/rk915_fw.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/bin/rk915_fw.bin -------------------------------------------------------------------------------- /bin/rk915_patch.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/bin/rk915_patch.bin -------------------------------------------------------------------------------- /bin/ws2812: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/bin/ws2812 -------------------------------------------------------------------------------- /clone_support.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | MOUNT_DIR="/home/lcdyk/arkos/mnt" 5 | 6 | # 统一的 rsync 选项: 7 | # -rltD :递归/保留软链/保留时间/保留设备文件(尽量通用) 8 | # --no-owner --no-group --no-perms :不要在 FAT32 上设置属主/属组/权限,避免 EPERM 9 | # --omit-dir-times :不尝试写目录时间戳(FAT32 上也可能受限) 10 | RSYNC_BOOT_OPTS="-rltD --no-owner --no-group --no-perms --omit-dir-times" 11 | 12 | echo "== 注入 boot ==" 13 | sudo mkdir -p "$MOUNT_DIR/boot/consoles" 14 | # 不同步 consoles/files 目录(按你原本需求) 15 | sudo rsync $RSYNC_BOOT_OPTS --exclude='files' ./consoles/ "$MOUNT_DIR/boot/consoles/" 16 | 17 | # 这些都是普通文件,直接复制即可 18 | sudo cp -f ./sh/clone.sh ./dtb_selector_macos_intel ./dtb_selector_win32.exe ./dtb_selector_macos_apple ./sh/expandtoexfat.sh ./sh/fix_audio.sh "$MOUNT_DIR/boot/" 19 | 20 | echo "== 注入按键信息 ==" 21 | sudo mkdir -p "$MOUNT_DIR/root/home/ark/.quirks" 22 | # 这里你要的是把 consoles/files 这个“目录”复制进去,所以必须 -r 23 | sudo cp -r ./consoles/files/* "$MOUNT_DIR/root/home/ark/.quirks/" 24 | # 只有 ext4/f2fs 才能 chown,boot(FAT32) 不要 chown 25 | sudo chown -R 1002:1002 "$MOUNT_DIR/root/home/ark/.quirks/" 26 | 27 | echo "== 注入 clone 用配置 ==" 28 | sudo mkdir -p "$MOUNT_DIR/root/opt/system/Clone" "$MOUNT_DIR/root/usr/bin" 29 | sudo cp -f ./sh/joyled.sh "$MOUNT_DIR/root/opt/system/Clone/" 30 | sudo cp -f ./bin/mcu_led ./bin/ws2812 "$MOUNT_DIR/root/usr/bin/" 31 | sudo chown -f 1002:1002 "$MOUNT_DIR/root/usr/bin/ws2812" || true 32 | sudo chown -f 1002:1002 "$MOUNT_DIR/root/usr/bin/mcu_led" || true 33 | sudo chown -R 1002:1002 "$MOUNT_DIR/root/opt/system/Clone" 34 | sudo chmod -R 755 "$MOUNT_DIR/root/opt/system/Clone" 35 | sudo chmod 755 "$MOUNT_DIR/root/usr/bin/mcu_led" "$MOUNT_DIR/root/usr/bin/ws2812" 36 | 37 | echo "== 注入 915 驱动 ==" 38 | sudo mkdir -p "$MOUNT_DIR/root/usr/lib/firmware" \ 39 | "$MOUNT_DIR/root/usr/lib/modules/4.4.189/kernel/drivers/net/wireless" 40 | # 通配符不存在会让 cp 失败,加 || true 容错 41 | sudo cp -f ./bin/rk915_*.bin "$MOUNT_DIR/root/usr/lib/firmware/" 2>/dev/null || true 42 | sudo cp -f ./bin/rk915.ko "$MOUNT_DIR/root/usr/lib/modules/4.4.189/kernel/drivers/net/wireless/" 2>/dev/null || true 43 | sudo chmod 755 "$MOUNT_DIR/root/usr/lib/modules/4.4.189/kernel/drivers/net/wireless/rk915.ko" 2>/dev/null || true 44 | sudo chmod 755 "$MOUNT_DIR/root/usr/lib/firmware/"rk915_*.bin 2>/dev/null || true 45 | 46 | echo "== 注入 351Files 资源 ==" 47 | sudo mkdir -p "$MOUNT_DIR/root/opt/351Files/res" 48 | # 这里 res/* 是多个“目录”,必须 -r 49 | sudo cp -r ./res/* "$MOUNT_DIR/root/opt/351Files/res/" 2>/dev/null || true 50 | 51 | # 重命名 351Files -> 351Files.old(存在才动) 52 | if [[ -e "$MOUNT_DIR/root/opt/351Files/351Files" ]]; then 53 | sudo mv "$MOUNT_DIR/root/opt/351Files/351Files" "$MOUNT_DIR/root/opt/351Files/351Files.old" 54 | else 55 | echo "[warn] 未找到 $MOUNT_DIR/root/opt/351Files/351Files,跳过重命名" 56 | fi 57 | 58 | sudo chown -R 1002:1002 "$MOUNT_DIR/root/opt/351Files/" 2>/dev/null || true 59 | sudo chmod -R 755 "$MOUNT_DIR/root/opt/351Files/" 2>/dev/null || true 60 | 61 | echo "== 注入 retrorun 启动脚本 ==" 62 | sudo cp -f ./replace_file/*.sh "$MOUNT_DIR/root/usr/local/bin/" 63 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/atomiswave.sh" 2>/dev/null || true 64 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/dreamcast.sh" 2>/dev/null || true 65 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/naomi.sh" 2>/dev/null || true 66 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/saturn.sh" 2>/dev/null || true 67 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/n64.sh" 2>/dev/null || true 68 | sudo chown root:root "$MOUNT_DIR/root/usr/local/bin/pico8.sh" 2>/dev/null || true 69 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/atomiswave.sh" 2>/dev/null || true 70 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/dreamcast.sh" 2>/dev/null || true 71 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/naomi.sh" 2>/dev/null || true 72 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/saturn.sh" 2>/dev/null || true 73 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/n64.sh" 2>/dev/null || true 74 | sudo chmod 777 "$MOUNT_DIR/root/usr/local/bin/pico8.sh" 2>/dev/null || true 75 | 76 | echo "== 注入核心 ==" 77 | sudo cp -f ./mod_so/64/* "$MOUNT_DIR/root/home/ark/.config/retroarch/cores/" 78 | sudo cp -f ./mod_so/32/* "$MOUNT_DIR/root/home/ark/.config/retroarch/cores/" 79 | sudo chown -R 1002:1002 $MOUNT_DIR/root/home/ark/.config/retroarch/cores/* 80 | sudo chown -R 1002:1002 $MOUNT_DIR/root/home/ark/.config/retroarch32/cores/* 81 | sudo cp -f ./replace_file/es_systems.cfg "$MOUNT_DIR/root/etc/emulationstation/" 82 | sudo chmod 777 "$MOUNT_DIR/root/etc/emulationstation/es_systems.cfg" 2>/dev/null || true 83 | sudo cp -f ./replace_file/emulationstation2.po "$MOUNT_DIR/root/usr/bin/emulationstation/resources/locale/zh-CN/" 84 | 85 | sudo cp -f ./replace_file/es_input.cfg "$MOUNT_DIR/root/etc/emulationstation/" 86 | sudo chmod 777 "$MOUNT_DIR/root/etc/emulationstation/es_input.cfg" 2>/dev/null || true 87 | 88 | echo "== 复制 roms.tar 出来操作 ==" 89 | sudo cp "$MOUNT_DIR/root/roms.tar" /home/lcdyk/arkos/ 90 | mkdir -p /home/lcdyk/arkos/tmproms 91 | tar -xf /home/lcdyk/arkos/roms.tar -C /home/lcdyk/arkos/tmproms 92 | mkdir -p /home/lcdyk/arkos/tmproms/roms/hbmame 93 | tar -xf zulu11.48.21-ca-jdk11.0.11-linux_aarch64.tar.gz -C /home/lcdyk/arkos/tmproms/roms/j2me 94 | mv /home/lcdyk/arkos/tmproms/roms/j2me/zulu11.48.21-ca-jdk11.0.11-linux_aarch64 /home/lcdyk/arkos/tmproms/roms/j2me/jdk 95 | echo "== 注入 portmaster ==" 96 | sudo cp -rf ./PortMaster/* "/home/lcdyk/arkos/tmproms/roms/tools/PortMaster/" 97 | sudo cp -rf ./PortMaster/PortMaster.sh "/home/lcdyk/arkos/tmproms/roms/tools/PortMaster.sh" 98 | sudo tar -cf /home/lcdyk/arkos/roms.tar -C /home/lcdyk/arkos/tmproms . 99 | rm -rf /home/lcdyk/arkos/tmproms 100 | sudo cp /home/lcdyk/arkos/roms.tar "$MOUNT_DIR/root/" 101 | sudo chmod -R 755 $MOUNT_DIR/root/roms.tar 102 | sudo rm -rf /home/lcdyk/arkos/roms.tar 103 | 104 | echo "== ogage快捷键复制 ==" 105 | sudo cp -r ./replace_file/ogage "$MOUNT_DIR/root/usr/local/bin/" 106 | sudo cp -r ./replace_file/ogage "$MOUNT_DIR/root/home/ark/.quirks/" 107 | 108 | echo "== 删除不需要的文件 ==" 109 | sudo rm -rf "$MOUNT_DIR/boot/BMPs" 110 | sudo rm -rf "$MOUNT_DIR/boot/ScreenFiles" 111 | sudo rm -rf "$MOUNT_DIR/boot/boot.ini" $MOUNT_DIR/boot/*.dtb $MOUNT_DIR/boot/*.orig $MOUNT_DIR/boot/*.tony 112 | if ! grep -q "(kk&lcdyk)" "$MOUNT_DIR/root/usr/share/plymouth/themes/text.plymouth"; then 113 | sed -i -E 's/^(title=.*\([^()]*\)\([^()]*\)\()[^()]*(\))$/\1kk\&lcdyk\2/' "$MOUNT_DIR/root/usr/share/plymouth/themes/text.plymouth" 114 | fi 115 | cat $MOUNT_DIR/root/usr/share/plymouth/themes/text.plymouth 116 | sudo rm -rf "$MOUNT_DIR/root/opt/system/DeviceType" 117 | sudo rm -rf "$MOUNT_DIR/root/opt/system/Advanced/Video Boot/" 118 | sudo rm -rf "$MOUNT_DIR/root/opt/system/Set Launchimage to ascii or pic.sh" 119 | sudo rm -rf "$MOUNT_DIR/root/opt/system/Set Launchimage to vid.sh" 120 | 121 | 122 | echo "== 完成 ==" -------------------------------------------------------------------------------- /consoles/a10mini/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-a10mini-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/a10mini/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/a10mini/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/a10mini/rk3326-a10mini-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/a10mini/rk3326-a10mini-linux.dtb -------------------------------------------------------------------------------- /consoles/files/480p/351Files: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/480p/351Files -------------------------------------------------------------------------------- /consoles/files/480p/drastic/TF1/libSDL2-2.0.so.0.3000.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/480p/drastic/TF1/libSDL2-2.0.so.0.3000.2 -------------------------------------------------------------------------------- /consoles/files/480p/drastic/TF2/libSDL2-2.0.so.0.3000.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/480p/drastic/TF2/libSDL2-2.0.so.0.3000.2 -------------------------------------------------------------------------------- /consoles/files/480p/drastic/bg/bg_vh_s0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/480p/drastic/bg/bg_vh_s0.png -------------------------------------------------------------------------------- /consoles/files/480p/drastic/bg/bg_vh_s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/480p/drastic/bg/bg_vh_s2.png -------------------------------------------------------------------------------- /consoles/files/720p/351Files: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/351Files -------------------------------------------------------------------------------- /consoles/files/720p/drastic/TF1/libSDL2-2.0.so.0.3000.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/TF1/libSDL2-2.0.so.0.3000.2 -------------------------------------------------------------------------------- /consoles/files/720p/drastic/TF2/libSDL2-2.0.so.0.3000.2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/TF2/libSDL2-2.0.so.0.3000.2 -------------------------------------------------------------------------------- /consoles/files/720p/drastic/bg/bg_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/bg/bg_vertical.png -------------------------------------------------------------------------------- /consoles/files/720p/drastic/bg/bg_vertical_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/bg/bg_vertical_full.png -------------------------------------------------------------------------------- /consoles/files/720p/drastic/bg/bg_vh_s0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/bg/bg_vh_s0.png -------------------------------------------------------------------------------- /consoles/files/720p/drastic/bg/bg_vh_s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/720p/drastic/bg/bg_vh_s2.png -------------------------------------------------------------------------------- /consoles/files/768p/351Files: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/files/768p/351Files -------------------------------------------------------------------------------- /consoles/files/dualJoy/controls.ini: -------------------------------------------------------------------------------- 1 | [ControlMapping] 2 | Up = 1-19,10-19 3 | Down = 1-20,10-20 4 | Left = 1-21,10-21 5 | Right = 1-22,10-22 6 | Circle = 10-189 7 | Cross = 10-190 8 | Square = 1-29,10-188 9 | Triangle = 1-47,10-191 10 | Start = 1-62,10-197 11 | L = 1-45,10-193 12 | R = 1-51,10-192 13 | An.Up = 1-37,10-4003 14 | An.Down = 1-39,10-4002 15 | An.Left = 1-38,10-4001 16 | An.Right = 1-40,10-4000 17 | Analog limiter = 1-60 18 | RapidFire = 1-59 19 | Unthrottle = 1-61 20 | SpeedToggle = 1-68 21 | Pause = 1-111 22 | Rewind = 1-67 23 | Save State = 10-107 24 | Load State = 10-106 25 | Select = 10-196 26 | -------------------------------------------------------------------------------- /consoles/files/dualJoy/drastic.cfg: -------------------------------------------------------------------------------- 1 | frameskip_type = 2 2 | frameskip_value = 1 3 | safe_frameskip = 0 4 | show_frame_counter = 0 5 | screen_orientation = 2 6 | screen_swap = 0 7 | savestate_number = 0 8 | fast_forward = 0 9 | enable_sound = 1 10 | clock_speed = 0 11 | threaded_3d = 1 12 | mirror_touch = 0 13 | compress_savestates = 1 14 | savestate_snapshot = 1 15 | unzip_roms = 0 16 | preload_roms = 0 17 | backup_in_savestates = 1 18 | ignore_gamecard_limit = 0 19 | frame_interval = 0 20 | trim_roms = 0 21 | fix_main_2d_screen = 0 22 | disable_edge_marking = 0 23 | interframe_blend = 0 24 | hires_3d = 0 25 | use_rtc_custom_time = 0 26 | rtc_custom_time = 0 27 | rtc_system_time = 0 28 | slot2_device_type = 0 29 | rumble_frames = 3 30 | firmware.username = Dr DraStic 31 | firmware.language = 1 32 | firmware.favorite_color = 0 33 | firmware.birthday_month = 1 34 | firmware.birthday_day = 1 35 | enable_cheats = 1 36 | controls_a[CONTROL_INDEX_UP] = 1217 37 | controls_a[CONTROL_INDEX_DOWN] = 1153 38 | controls_a[CONTROL_INDEX_LEFT] = 1216 39 | controls_a[CONTROL_INDEX_RIGHT] = 1152 40 | controls_a[CONTROL_INDEX_A] = 1025 41 | controls_a[CONTROL_INDEX_B] = 1024 42 | controls_a[CONTROL_INDEX_X] = 1026 43 | controls_a[CONTROL_INDEX_Y] = 1027 44 | controls_a[CONTROL_INDEX_L] = 1028 45 | controls_a[CONTROL_INDEX_R] = 1029 46 | controls_a[CONTROL_INDEX_START] = 1037 47 | controls_a[CONTROL_INDEX_SELECT] = 1036 48 | controls_a[CONTROL_INDEX_HINGE] = 104 49 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_UP] = 1219 50 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 1155 51 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 1218 52 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 1154 53 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1039 54 | controls_a[CONTROL_INDEX_MENU] = 109 55 | controls_a[CONTROL_INDEX_SAVE_STATE] = 318 56 | controls_a[CONTROL_INDEX_LOAD_STATE] = 320 57 | controls_a[CONTROL_INDEX_FAST_FORWARD] = 8 58 | controls_a[CONTROL_INDEX_SWAP_SCREENS] = 65535 59 | controls_a[CONTROL_INDEX_SWAP_ORIENTATION_A] = 97 60 | controls_a[CONTROL_INDEX_SWAP_ORIENTATION_B] = 100 61 | controls_a[CONTROL_INDEX_LOAD_GAME] = 65535 62 | controls_a[CONTROL_INDEX_QUIT] = 65535 63 | controls_a[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 64 | controls_a[CONTROL_INDEX_UI_UP] = 338 65 | controls_a[CONTROL_INDEX_UI_DOWN] = 337 66 | controls_a[CONTROL_INDEX_UI_LEFT] = 336 67 | controls_a[CONTROL_INDEX_UI_RIGHT] = 335 68 | controls_a[CONTROL_INDEX_UI_SELECT] = 13 69 | controls_a[CONTROL_INDEX_UI_BACK] = 8 70 | controls_a[CONTROL_INDEX_UI_EXIT] = 27 71 | controls_a[CONTROL_INDEX_UI_PAGE_UP] = 331 72 | controls_a[CONTROL_INDEX_UI_PAGE_DOWN] = 334 73 | controls_a[CONTROL_INDEX_UI_SWITCH] = 481 74 | controls_b[CONTROL_INDEX_UP] = 1032 75 | controls_b[CONTROL_INDEX_DOWN] = 1033 76 | controls_b[CONTROL_INDEX_LEFT] = 1034 77 | controls_b[CONTROL_INDEX_RIGHT] = 1035 78 | controls_b[CONTROL_INDEX_A] = 65535 79 | controls_b[CONTROL_INDEX_B] = 65535 80 | controls_b[CONTROL_INDEX_X] = 65535 81 | controls_b[CONTROL_INDEX_Y] = 65535 82 | controls_b[CONTROL_INDEX_L] = 65535 83 | controls_b[CONTROL_INDEX_R] = 65535 84 | controls_b[CONTROL_INDEX_START] = 13 85 | controls_b[CONTROL_INDEX_SELECT] = 538 86 | controls_b[CONTROL_INDEX_HINGE] = 65535 87 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_UP] = 65535 88 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 65535 89 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 65535 90 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 65535 91 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1039 92 | controls_b[CONTROL_INDEX_MENU] = 1038 93 | controls_b[CONTROL_INDEX_SAVE_STATE] = 65535 94 | controls_b[CONTROL_INDEX_LOAD_STATE] = 65535 95 | controls_b[CONTROL_INDEX_FAST_FORWARD] = 65535 96 | controls_b[CONTROL_INDEX_SWAP_SCREENS] = 1040 97 | controls_b[CONTROL_INDEX_SWAP_ORIENTATION_A] = 1031 98 | controls_b[CONTROL_INDEX_SWAP_ORIENTATION_B] = 1030 99 | controls_b[CONTROL_INDEX_LOAD_GAME] = 65535 100 | controls_b[CONTROL_INDEX_QUIT] = 65535 101 | controls_b[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 102 | controls_b[CONTROL_INDEX_UI_UP] = 1032 103 | controls_b[CONTROL_INDEX_UI_DOWN] = 1033 104 | controls_b[CONTROL_INDEX_UI_LEFT] = 1034 105 | controls_b[CONTROL_INDEX_UI_RIGHT] = 1035 106 | controls_b[CONTROL_INDEX_UI_SELECT] = 1025 107 | controls_b[CONTROL_INDEX_UI_BACK] = 1026 108 | controls_b[CONTROL_INDEX_UI_EXIT] = 1024 109 | controls_b[CONTROL_INDEX_UI_PAGE_UP] = 1028 110 | controls_b[CONTROL_INDEX_UI_PAGE_DOWN] = 1029 111 | controls_b[CONTROL_INDEX_UI_SWITCH] = 1038 112 | -------------------------------------------------------------------------------- /consoles/files/dualJoy/ppsspp.ini: -------------------------------------------------------------------------------- 1 | [General] 2 | FirstRun = False 3 | RunCount = 25 4 | Enable Logging = False 5 | AutoRun = True 6 | Browse = False 7 | IgnoreBadMemAccess = False 8 | CurrentDirectory = /roms/psp 9 | ShowDebuggerOnLoad = False 10 | CheckForNewVersion = True 11 | Language = en_US 12 | ForceLagSync = False 13 | DiscordPresence = False 14 | NumWorkerThreads = 8 15 | AutoLoadSaveState = 0 16 | EnableCheats = True 17 | CwCheatRefreshRate = 77 18 | ScreenshotsAsPNG = False 19 | UseFFV1 = False 20 | DumpFrames = False 21 | 22 | DumpAudio = False 23 | SaveLoadResetsAVdumping = False 24 | StateSlot = 0 25 | EnableStateUndo = True 26 | RewindFlipFrequency = 0 27 | GridView1 = True 28 | GridView2 = True 29 | GridView3 = False 30 | ComboMode = 0 31 | ReportingHost = default 32 | AutoSaveSymbolMap = False 33 | CacheFullIsoInRam = False 34 | RemoteISOPort = 0 35 | LastRemoteISOServer = 36 | LastRemoteISOPort = 0 37 | RemoteISOManualConfig = False 38 | RemoteShareOnStartup = False 39 | RemoteISOSubdir = / 40 | RemoteDebuggerOnStartup = False 41 | InternalScreenRotation = 1 42 | PauseWhenMinimized = False 43 | DumpDecryptedEboots = False 44 | MemStickInserted = True 45 | ForceLagSync2 = False 46 | UISound = True 47 | CwCheatScrollPosition = 0.000000 48 | DumpVideoOutput = False 49 | 50 | ShowRegionOnGameIcon = False 51 | ShowIDOnGameIcon = False 52 | GameGridScale = 1.000000 53 | RightAnalogUp = 0 54 | RightAnalogDown = 0 55 | RightAnalogLeft = 0 56 | RightAnalogRight = 0 57 | RightAnalogPress = 0 58 | RightAnalogCustom = False 59 | LoadPlugins = False 60 | GameListScrollPosition = 0.000000 61 | ShowOnScreenMessage = True 62 | [CPU] 63 | CPUCore = 1 64 | SeparateSASThread = True 65 | SeparateIOThread = True 66 | IOTimingMethod = 0 67 | FastMemoryAccess = True 68 | FuncReplacements = True 69 | HideSlowWarnings = False 70 | HideStateWarnings = False 71 | PreloadFunctions = False 72 | CPUSpeed = 333 73 | JitDisableFlags = 0x00000000 74 | 75 | [Graphics] 76 | EnableCardboard = False 77 | CardboardScreenSize = 50 78 | CardboardXShift = 0 79 | CardboardYShift = 0 80 | ShowFPSCounter = 2 81 | GraphicsBackend = 0 (OPENGL) 82 | FailedGraphicsBackends = 83 | 84 | VulkanDevice = 85 | RenderingMode = 0 86 | SoftwareRenderer = False 87 | HardwareTransform = True 88 | SoftwareSkinning = True 89 | TextureFiltering = 1 90 | BufferFiltering = 1 91 | InternalResolution = 0 92 | AndroidHwScale = 1 93 | HighQualityDepth = 1 94 | FrameSkip = 0 95 | FrameSkipType = 1 96 | AutoFrameSkip = False 97 | FrameRate = -1 98 | FrameRate2 = -1 99 | FrameSkipUnthrottle = True 100 | ForceMaxEmulatedFPS = 30 101 | AnisotropyLevel = 0 102 | VertexDecCache = True 103 | TextureBackoffCache = True 104 | TextureSecondaryCache = False 105 | FullScreen = True 106 | FullScreenMulti = False 107 | SmallDisplayZoomType = 2 108 | SmallDisplayOffsetX = 0.500000 109 | SmallDisplayOffsetY = 0.500000 110 | SmallDisplayZoomLevel = 1.000000 111 | ImmersiveMode = False 112 | SustainedPerformanceMode = False 113 | TrueColor = True 114 | ReplaceTextures = True 115 | SaveNewTextures = False 116 | IgnoreTextureFilenames = True 117 | TexScalingLevel = 1 118 | TexScalingType = 3 119 | TexDeposterize = False 120 | VSyncInterval = True 121 | DisableStencilTest = False 122 | BloomHack = 2 123 | TimerHack = False 124 | SplineBezierQuality = 0 125 | HardwareTessellation = False 126 | PostShader = Off 127 | MemBlockTransferGPU = True 128 | DisableSlowFramebufEffects = True 129 | FragmentTestCache = True 130 | LogFrameDrops = False 131 | EnableCardboardVR = False 132 | DisabledGraphicsBackends = 133 | 134 | 135 | CameraDevice = 136 | UnthrottleMode = CONTINUOUS 137 | IgnoreScreenInsets = True 138 | TexHardwareScaling = False 139 | TextureShader = Off 140 | InflightFrames = 2 141 | RenderDuplicateFrames = True 142 | ShaderChainRequires60FPS = False 143 | 144 | 145 | ClearFramebuffersOnFirstUseHack = False 146 | 147 | [Sound] 148 | Enable = True 149 | AudioBackend = 0 150 | AudioLatency = 1 151 | ExtraAudioBuffering = False 152 | SoundSpeedHack = False 153 | AudioResampler = False 154 | GlobalVolume = 10 155 | AltSpeedVolume = -1 156 | AudioDevice = 157 | AutoAudioDevice = False 158 | [Control] 159 | HapticFeedback = False 160 | ShowTouchCross = True 161 | ShowTouchCircle = True 162 | ShowTouchSquare = True 163 | ShowTouchTriangle = True 164 | ComboKey0Mapping = 0 165 | ComboKey1Mapping = 0 166 | ComboKey2Mapping = 0 167 | ComboKey3Mapping = 0 168 | ComboKey4Mapping = 0 169 | ShowTouchPause = False 170 | ShowTouchControls = False 171 | DisableDpadDiagonals = False 172 | GamepadOnlyFocused = False 173 | TouchButtonStyle = 1 174 | TouchButtonOpacity = 65 175 | TouchButtonHideSeconds = 20 176 | AutoCenterTouchAnalog = False 177 | ActionButtonSpacing2 = 1.000000 178 | ActionButtonCenterX = 0.937500 179 | ActionButtonCenterY = 0.900000 180 | ActionButtonScale = 1.150000 181 | DPadX = 0.074479 182 | DPadY = 0.760000 183 | DPadScale = 1.150000 184 | ShowTouchDpad = True 185 | DPadSpacing = 1.000000 186 | StartKeyX = 0.559896 187 | StartKeyY = 0.942500 188 | StartKeyScale = 1.150000 189 | ShowTouchStart = True 190 | SelectKeyX = 0.500000 191 | SelectKeyY = 0.942500 192 | SelectKeyScale = 1.150000 193 | ShowTouchSelect = True 194 | UnthrottleKeyX = 0.440104 195 | UnthrottleKeyY = 0.942500 196 | UnthrottleKeyScale = 1.150000 197 | ShowTouchUnthrottle = True 198 | LKeyX = 0.035937 199 | LKeyY = 0.635833 200 | LKeyScale = 1.150000 201 | ShowTouchLTrigger = True 202 | RKeyX = 0.964063 203 | RKeyY = 0.635833 204 | RKeyScale = 1.150000 205 | ShowTouchRTrigger = True 206 | AnalogStickX = 0.074479 207 | AnalogStickY = 0.923333 208 | AnalogStickScale = 1.150000 209 | ShowAnalogStick = True 210 | fcombo0X = 0.571875 211 | fcombo0Y = 0.500000 212 | comboKeyScale0 = 1.150000 213 | ShowComboKey0 = False 214 | fcombo1X = 0.631771 215 | fcombo1Y = 0.500000 216 | comboKeyScale1 = 1.150000 217 | ShowComboKey1 = False 218 | fcombo2X = 0.691667 219 | fcombo2Y = 0.500000 220 | comboKeyScale2 = 1.150000 221 | ShowComboKey2 = False 222 | fcombo3X = 0.571875 223 | fcombo3Y = 0.333333 224 | comboKeyScale3 = 1.150000 225 | ShowComboKey3 = False 226 | fcombo4X = 0.631771 227 | fcombo4Y = 0.333333 228 | comboKeyScale4 = 1.150000 229 | ShowComboKey4 = False 230 | Speed1KeyX = 0.440104 231 | Speed1KeyY = 0.885000 232 | Speed1KeyScale = 1.150000 233 | ShowSpeed1Key = False 234 | Speed2KeyX = 0.500000 235 | Speed2KeyY = 0.885000 236 | Speed2KeyScale = 1.150000 237 | ShowSpeed2Key = False 238 | XInputAnalogSensitivity = 1.000000 239 | AnalogLimiterDeadzone = 0.600000 240 | UseMouse = False 241 | MapMouse = False 242 | ConfineMap = False 243 | MouseSensitivity = 0.100000 244 | MouseSmoothing = 0.900000 245 | ComboKey0Toggle = False 246 | ComboKey1Toggle = False 247 | ComboKey2Toggle = False 248 | ComboKey3Toggle = False 249 | ComboKey4Toggle = False 250 | AnalogAutoRotSpeed = 15.000000 251 | TouchSnapToGrid = False 252 | TouchSnapGridSize = 64 253 | RightAnalogStickX = 0.875000 254 | RightAnalogStickY = 0.856250 255 | RightAnalogStickScale = 1.150000 256 | ShowRightAnalogStick = False 257 | RapidFireKeyX = 0.619792 258 | RapidFireKeyY = 0.784375 259 | RapidFireKeyScale = 1.150000 260 | ShowRapidFireKey = False 261 | AnalogRotationCWKeyX = 0.500000 262 | AnalogRotationKeyCWY = 0.676562 263 | AnalogRotationKeyCWScale = 1.150000 264 | ShowAnalogRotationCWKey = False 265 | AnalogRotationCCWKeyX = 0.380208 266 | AnalogRotationKeyCCWY = 0.676562 267 | AnalogRotationKeyCCWScale = 1.150000 268 | ShowAnalogRotationCCWKey = False 269 | [Network] 270 | EnableWlan = False 271 | EnableAdhocServer = False 272 | proAdhocServer = myneighborsushicat.com 273 | PortOffset = 0 274 | MinTimeout = 1 275 | TCPNoDelay = False 276 | 277 | EnableUPnP = False 278 | UPnPUseOriginalPort = True 279 | EnableNetworkChat = False 280 | ChatButtonPosition = 0 281 | ChatScreenPosition = 0 282 | EnableQuickChat = True 283 | QuickChat1 = Quick Chat 1 284 | QuickChat2 = Quick Chat 2 285 | QuickChat3 = Quick Chat 3 286 | QuickChat4 = Quick Chat 4 287 | QuickChat5 = Quick Chat 5 288 | ForcedFirstConnect = False 289 | [SystemParam] 290 | PSPModel = 0 291 | PSPFirmwareVersion = 660 292 | NickName = PPSSPP 293 | proAdhocServer = black-seraph.com 294 | MacAddress = 4e:7a:78:d9:49:32 295 | PortOffset = 0 296 | Language = 1 297 | TimeFormat = 1 298 | DateFormat = 1 299 | TimeZone = 0 300 | DayLightSavings = False 301 | ButtonPreference = 1 302 | LockParentalLevel = 0 303 | WlanAdhocChannel = 0 304 | WlanPowerSave = False 305 | EncryptSave = True 306 | SavedataUpgradeVersion = True 307 | ParamTimeFormat = 0 308 | ParamDateFormat = 0 309 | MemStickSize = 16 310 | [Debugger] 311 | DisasmWindowX = -1 312 | DisasmWindowY = -1 313 | DisasmWindowW = -1 314 | DisasmWindowH = -1 315 | GEWindowX = -1 316 | GEWindowY = -1 317 | GEWindowW = -1 318 | GEWindowH = -1 319 | ConsoleWindowX = -1 320 | ConsoleWindowY = -1 321 | FontWidth = 8 322 | FontHeight = 12 323 | DisplayStatusBar = True 324 | ShowBottomTabTitles = True 325 | ShowDeveloperMenu = False 326 | SkipDeadbeefFilling = False 327 | FuncHashMap = False 328 | DrawFrameGraph = False 329 | [Upgrade] 330 | UpgradeMessage = 331 | UpgradeVersion = 332 | DismissedVersion = 333 | [Theme] 334 | ItemStyleFg = 0xffffffff 335 | ItemStyleBg = 0x55000000 336 | ItemFocusedStyleFg = 0xffffffff 337 | ItemFocusedStyleBg = 0xffedc24c 338 | ItemDownStyleFg = 0xffffffff 339 | ItemDownStyleBg = 0xffbd9939 340 | ItemDisabledStyleFg = 0x80eeeeee 341 | ItemDisabledStyleBg = 0x55e0d4af 342 | ItemHighlightedStyleFg = 0xffffffff 343 | ItemHighlightedStyleBg = 0x55bdbb39 344 | ButtonStyleFg = 0xffffffff 345 | ButtonStyleBg = 0x55000000 346 | ButtonFocusedStyleFg = 0xffffffff 347 | ButtonFocusedStyleBg = 0xffedc24c 348 | ButtonDownStyleFg = 0xffffffff 349 | ButtonDownStyleBg = 0xffbd9939 350 | ButtonDisabledStyleFg = 0x80eeeeee 351 | ButtonDisabledStyleBg = 0x55e0d4af 352 | ButtonHighlightedStyleFg = 0xffffffff 353 | ButtonHighlightedStyleBg = 0x55bdbb39 354 | HeaderStyleFg = 0xffffffff 355 | InfoStyleFg = 0xffffffff 356 | InfoStyleBg = 0x00000000 357 | PopupTitleStyleFg = 0xffe3be59 358 | PopupStyleFg = 0xffffffff 359 | PopupStyleBg = 0xff303030 360 | [Recent] 361 | MaxRecent = 30 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | FileName0 = /roms2/psp/Ultimate Ghosts 'n Goblins (USA) (PSP) (PSN).iso 373 | [Log] 374 | SYSTEMEnabled = True 375 | SYSTEMLevel = 4 376 | BOOTEnabled = True 377 | BOOTLevel = 4 378 | COMMONEnabled = True 379 | COMMONLevel = 4 380 | CPUEnabled = True 381 | CPULevel = 4 382 | FILESYSEnabled = True 383 | FILESYSLevel = 4 384 | G3DEnabled = True 385 | G3DLevel = 4 386 | HLEEnabled = True 387 | HLELevel = 4 388 | JITEnabled = True 389 | JITLevel = 4 390 | LOADEREnabled = True 391 | LOADERLevel = 4 392 | MEEnabled = True 393 | MELevel = 4 394 | MEMMAPEnabled = True 395 | MEMMAPLevel = 4 396 | SASMIXEnabled = True 397 | SASMIXLevel = 4 398 | SAVESTATEEnabled = True 399 | SAVESTATELevel = 4 400 | FRAMEBUFEnabled = True 401 | FRAMEBUFLevel = 4 402 | SCEAUDIOEnabled = True 403 | SCEAUDIOLevel = 4 404 | SCECTRLEnabled = True 405 | SCECTRLLevel = 4 406 | SCEDISPEnabled = True 407 | SCEDISPLevel = 4 408 | SCEFONTEnabled = True 409 | SCEFONTLevel = 4 410 | SCEGEEnabled = True 411 | SCEGELevel = 4 412 | SCEINTCEnabled = True 413 | SCEINTCLevel = 4 414 | SCEIOEnabled = True 415 | SCEIOLevel = 4 416 | SCEKERNELEnabled = True 417 | SCEKERNELLevel = 4 418 | SCEMODULEEnabled = True 419 | SCEMODULELevel = 4 420 | SCENETEnabled = True 421 | SCENETLevel = 4 422 | SCERTCEnabled = True 423 | SCERTCLevel = 4 424 | SCESASEnabled = True 425 | SCESASLevel = 4 426 | SCEUTILEnabled = True 427 | SCEUTILLevel = 4 428 | SCEMISCEnabled = True 429 | SCEMISCLevel = 4 430 | AUDIOEnabled = True 431 | AUDIOLevel = 2 432 | IOEnabled = True 433 | IOLevel = 2 434 | 435 | 436 | [PostShaderSetting] 437 | BloomSettingValue1 = 0.600000 438 | BloomSettingValue2 = 0.500000 439 | CartoonSettingValue1 = 0.500000 440 | ColorCorrectionSettingValue1 = 1.000000 441 | ColorCorrectionSettingValue2 = 1.000000 442 | ColorCorrectionSettingValue3 = 1.000000 443 | ColorCorrectionSettingValue4 = 1.000000 444 | ScanlinesSettingValue1 = 1.000000 445 | ScanlinesSettingValue2 = 0.500000 446 | SharpenSettingValue1 = 1.500000 447 | [PostShaderList] 448 | PostShader1 = Off 449 | -------------------------------------------------------------------------------- /consoles/files/dualJoy/ppsspp.ini.sdl: -------------------------------------------------------------------------------- 1 | [General] 2 | FirstRun = False 3 | RunCount = 51 4 | Enable Logging = False 5 | AutoRun = True 6 | Browse = False 7 | IgnoreBadMemAccess = False 8 | CurrentDirectory = /home/ark 9 | ShowDebuggerOnLoad = False 10 | CheckForNewVersion = False 11 | Language = en_US 12 | ForceLagSync = False 13 | DiscordPresence = False 14 | NumWorkerThreads = 8 15 | AutoLoadSaveState = 0 16 | EnableCheats = True 17 | CwCheatRefreshRate = 60 18 | ScreenshotsAsPNG = False 19 | UseFFV1 = False 20 | DumpFrames = False 21 | DumpAudio = False 22 | SaveLoadResetsAVdumping = False 23 | StateSlot = 0 24 | EnableStateUndo = True 25 | RewindFlipFrequency = 0 26 | GridView1 = True 27 | GridView2 = True 28 | GridView3 = False 29 | ComboMode = 0 30 | ReportingHost = default 31 | AutoSaveSymbolMap = False 32 | CacheFullIsoInRam = False 33 | RemoteISOPort = 0 34 | LastRemoteISOServer = 35 | LastRemoteISOPort = 0 36 | RemoteISOManualConfig = False 37 | RemoteShareOnStartup = False 38 | RemoteISOSubdir = / 39 | RemoteDebuggerOnStartup = False 40 | InternalScreenRotation = 1 41 | PauseWhenMinimized = False 42 | DumpDecryptedEboots = False 43 | MemStickInserted = True 44 | ForceLagSync2 = False 45 | UISound = True 46 | CwCheatScrollPosition = 0.000000 47 | DumpVideoOutput = False 48 | ShowRegionOnGameIcon = False 49 | ShowIDOnGameIcon = False 50 | GameGridScale = 1.000000 51 | RightAnalogUp = 0 52 | RightAnalogDown = 0 53 | RightAnalogLeft = 0 54 | RightAnalogRight = 0 55 | RightAnalogPress = 0 56 | RightAnalogCustom = False 57 | LoadPlugins = False 58 | GameListScrollPosition = 0.000000 59 | ShowOnScreenMessage = True 60 | EnablePlugins = True 61 | [CPU] 62 | CPUCore = 1 63 | SeparateSASThread = True 64 | SeparateIOThread = True 65 | IOTimingMethod = 0 66 | FastMemoryAccess = True 67 | FuncReplacements = True 68 | HideSlowWarnings = False 69 | HideStateWarnings = False 70 | PreloadFunctions = False 71 | CPUSpeed = 333 72 | JitDisableFlags = 0x00000000 73 | FunctionReplacements = True 74 | [Graphics] 75 | EnableCardboard = False 76 | CardboardScreenSize = 50 77 | CardboardXShift = 0 78 | CardboardYShift = 0 79 | ShowFPSCounter = 2 80 | GraphicsBackend = 0 (OPENGL) 81 | FailedGraphicsBackends = 82 | VulkanDevice = 83 | RenderingMode = 0 84 | SoftwareRenderer = False 85 | HardwareTransform = True 86 | SoftwareSkinning = True 87 | TextureFiltering = 1 88 | BufferFiltering = 1 89 | InternalResolution = 0 90 | AndroidHwScale = 1 91 | HighQualityDepth = 1 92 | FrameSkip = 0 93 | FrameSkipType = 0 94 | AutoFrameSkip = False 95 | FrameRate = 0 96 | FrameRate2 = 0 97 | FrameSkipUnthrottle = True 98 | ForceMaxEmulatedFPS = 30 99 | AnisotropyLevel = 0 100 | VertexDecCache = True 101 | TextureBackoffCache = True 102 | TextureSecondaryCache = False 103 | FullScreen = True 104 | FullScreenMulti = False 105 | SmallDisplayZoomType = 2 106 | SmallDisplayOffsetX = 0.500000 107 | SmallDisplayOffsetY = 0.500000 108 | SmallDisplayZoomLevel = 1.000000 109 | ImmersiveMode = False 110 | SustainedPerformanceMode = False 111 | TrueColor = True 112 | ReplaceTextures = True 113 | SaveNewTextures = False 114 | IgnoreTextureFilenames = True 115 | TexScalingLevel = 1 116 | TexScalingType = 3 117 | TexDeposterize = False 118 | VSyncInterval = True 119 | DisableStencilTest = False 120 | BloomHack = 3 121 | TimerHack = False 122 | SplineBezierQuality = 0 123 | HardwareTessellation = False 124 | PostShader = Off 125 | MemBlockTransferGPU = True 126 | DisableSlowFramebufEffects = True 127 | FragmentTestCache = True 128 | LogFrameDrops = False 129 | EnableCardboardVR = False 130 | DisabledGraphicsBackends = 131 | CameraDevice = 132 | UnthrottleMode = CONTINUOUS 133 | IgnoreScreenInsets = True 134 | TexHardwareScaling = False 135 | TextureShader = Off 136 | InflightFrames = 2 137 | RenderDuplicateFrames = True 138 | ShaderChainRequires60FPS = False 139 | ClearFramebuffersOnFirstUseHack = False 140 | UnthrottlingMode = CONTINUOUS 141 | [Sound] 142 | Enable = True 143 | AudioBackend = 1 144 | AudioLatency = 0 145 | ExtraAudioBuffering = True 146 | SoundSpeedHack = False 147 | AudioResampler = False 148 | GlobalVolume = 10 149 | AltSpeedVolume = 5 150 | AudioDevice = rockchip,rk817-codec, 151 | AutoAudioDevice = False 152 | [Control] 153 | HapticFeedback = False 154 | ShowTouchCross = True 155 | ShowTouchCircle = True 156 | ShowTouchSquare = True 157 | ShowTouchTriangle = True 158 | ComboKey0Mapping = 0 159 | ComboKey1Mapping = 0 160 | ComboKey2Mapping = 0 161 | ComboKey3Mapping = 0 162 | ComboKey4Mapping = 0 163 | ShowTouchPause = False 164 | ShowTouchControls = False 165 | DisableDpadDiagonals = False 166 | GamepadOnlyFocused = False 167 | TouchButtonStyle = 1 168 | TouchButtonOpacity = 65 169 | TouchButtonHideSeconds = 20 170 | AutoCenterTouchAnalog = False 171 | ActionButtonSpacing2 = 1.000000 172 | ActionButtonCenterX = 0.937500 173 | ActionButtonCenterY = 0.900000 174 | ActionButtonScale = 1.150000 175 | DPadX = 0.074479 176 | DPadY = 0.760000 177 | DPadScale = 1.150000 178 | ShowTouchDpad = True 179 | DPadSpacing = 1.000000 180 | StartKeyX = 0.559896 181 | StartKeyY = 0.942500 182 | StartKeyScale = 1.150000 183 | ShowTouchStart = True 184 | SelectKeyX = 0.500000 185 | SelectKeyY = 0.942500 186 | SelectKeyScale = 1.150000 187 | ShowTouchSelect = True 188 | UnthrottleKeyX = 0.440104 189 | UnthrottleKeyY = 0.942500 190 | UnthrottleKeyScale = 1.150000 191 | ShowTouchUnthrottle = True 192 | LKeyX = 0.035937 193 | LKeyY = 0.635833 194 | LKeyScale = 1.150000 195 | ShowTouchLTrigger = True 196 | RKeyX = 0.964063 197 | RKeyY = 0.635833 198 | RKeyScale = 1.150000 199 | ShowTouchRTrigger = True 200 | AnalogStickX = 0.074479 201 | AnalogStickY = 0.923333 202 | AnalogStickScale = 1.150000 203 | ShowAnalogStick = True 204 | fcombo0X = 0.571875 205 | fcombo0Y = 0.500000 206 | comboKeyScale0 = 1.150000 207 | ShowComboKey0 = False 208 | fcombo1X = 0.631771 209 | fcombo1Y = 0.500000 210 | comboKeyScale1 = 1.150000 211 | ShowComboKey1 = False 212 | fcombo2X = 0.691667 213 | fcombo2Y = 0.500000 214 | comboKeyScale2 = 1.150000 215 | ShowComboKey2 = False 216 | fcombo3X = 0.571875 217 | fcombo3Y = 0.333333 218 | comboKeyScale3 = 1.150000 219 | ShowComboKey3 = False 220 | fcombo4X = 0.631771 221 | fcombo4Y = 0.333333 222 | comboKeyScale4 = 1.150000 223 | ShowComboKey4 = False 224 | Speed1KeyX = 0.440104 225 | Speed1KeyY = 0.885000 226 | Speed1KeyScale = 1.150000 227 | ShowSpeed1Key = False 228 | Speed2KeyX = 0.500000 229 | Speed2KeyY = 0.885000 230 | Speed2KeyScale = 1.150000 231 | ShowSpeed2Key = False 232 | XInputAnalogSensitivity = 1.000000 233 | AnalogLimiterDeadzone = 0.600000 234 | UseMouse = False 235 | MapMouse = False 236 | ConfineMap = False 237 | MouseSensitivity = 0.100000 238 | MouseSmoothing = 0.900000 239 | ComboKey0Toggle = False 240 | ComboKey1Toggle = False 241 | ComboKey2Toggle = False 242 | ComboKey3Toggle = False 243 | ComboKey4Toggle = False 244 | AnalogAutoRotSpeed = 15.000000 245 | TouchSnapToGrid = False 246 | TouchSnapGridSize = 64 247 | RightAnalogStickX = 0.875000 248 | RightAnalogStickY = 0.856250 249 | RightAnalogStickScale = 1.150000 250 | ShowRightAnalogStick = False 251 | RapidFireKeyX = 0.619792 252 | RapidFireKeyY = 0.784375 253 | RapidFireKeyScale = 1.150000 254 | ShowRapidFireKey = False 255 | AnalogRotationCWKeyX = 0.500000 256 | AnalogRotationKeyCWY = 0.676562 257 | AnalogRotationKeyCWScale = 1.150000 258 | ShowAnalogRotationCWKey = False 259 | AnalogRotationCCWKeyX = 0.380208 260 | AnalogRotationKeyCCWY = 0.676562 261 | AnalogRotationKeyCCWScale = 1.150000 262 | ShowAnalogRotationCCWKey = False 263 | [Network] 264 | EnableWlan = False 265 | EnableAdhocServer = False 266 | proAdhocServer = myneighborsushicat.com 267 | PortOffset = 0 268 | MinTimeout = 1 269 | TCPNoDelay = False 270 | EnableUPnP = False 271 | UPnPUseOriginalPort = True 272 | EnableNetworkChat = False 273 | ChatButtonPosition = 0 274 | ChatScreenPosition = 0 275 | EnableQuickChat = True 276 | QuickChat1 = Quick Chat 1 277 | QuickChat2 = Quick Chat 2 278 | QuickChat3 = Quick Chat 3 279 | QuickChat4 = Quick Chat 4 280 | QuickChat5 = Quick Chat 5 281 | ForcedFirstConnect = False 282 | [SystemParam] 283 | PSPModel = 0 284 | PSPFirmwareVersion = 660 285 | NickName = PPSSPP 286 | proAdhocServer = black-seraph.com 287 | MacAddress = 4e:7a:78:d9:49:32 288 | PortOffset = 0 289 | Language = 1 290 | TimeFormat = 1 291 | DateFormat = 1 292 | TimeZone = 0 293 | DayLightSavings = False 294 | ButtonPreference = 1 295 | LockParentalLevel = 0 296 | WlanAdhocChannel = 0 297 | WlanPowerSave = False 298 | EncryptSave = True 299 | SavedataUpgradeVersion = True 300 | ParamTimeFormat = 0 301 | ParamDateFormat = 0 302 | MemStickSize = 16 303 | [Debugger] 304 | DisasmWindowX = -1 305 | DisasmWindowY = -1 306 | DisasmWindowW = -1 307 | DisasmWindowH = -1 308 | GEWindowX = -1 309 | GEWindowY = -1 310 | GEWindowW = -1 311 | GEWindowH = -1 312 | ConsoleWindowX = -1 313 | ConsoleWindowY = -1 314 | FontWidth = 8 315 | FontHeight = 12 316 | DisplayStatusBar = True 317 | ShowBottomTabTitles = True 318 | ShowDeveloperMenu = False 319 | SkipDeadbeefFilling = False 320 | FuncHashMap = False 321 | DrawFrameGraph = False 322 | [Upgrade] 323 | UpgradeMessage = 324 | UpgradeVersion = 325 | DismissedVersion = 326 | [Theme] 327 | ItemStyleFg = 0xffffffff 328 | ItemStyleBg = 0x55000000 329 | ItemFocusedStyleFg = 0xffffffff 330 | ItemFocusedStyleBg = 0xffedc24c 331 | ItemDownStyleFg = 0xffffffff 332 | ItemDownStyleBg = 0xffbd9939 333 | ItemDisabledStyleFg = 0x80eeeeee 334 | ItemDisabledStyleBg = 0x55e0d4af 335 | ItemHighlightedStyleFg = 0xffffffff 336 | ItemHighlightedStyleBg = 0x55bdbb39 337 | ButtonStyleFg = 0xffffffff 338 | ButtonStyleBg = 0x55000000 339 | ButtonFocusedStyleFg = 0xffffffff 340 | ButtonFocusedStyleBg = 0xffedc24c 341 | ButtonDownStyleFg = 0xffffffff 342 | ButtonDownStyleBg = 0xffbd9939 343 | ButtonDisabledStyleFg = 0x80eeeeee 344 | ButtonDisabledStyleBg = 0x55e0d4af 345 | ButtonHighlightedStyleFg = 0xffffffff 346 | ButtonHighlightedStyleBg = 0x55bdbb39 347 | HeaderStyleFg = 0xffffffff 348 | InfoStyleFg = 0xffffffff 349 | InfoStyleBg = 0x00000000 350 | PopupTitleStyleFg = 0xffe3be59 351 | PopupStyleFg = 0xffffffff 352 | PopupStyleBg = 0xff303030 353 | [Recent] 354 | MaxRecent = 30 355 | FileName0 = /roms2/psp/Ultimate Ghosts 'n Goblins (USA) (PSP) (PSN).iso 356 | [Log] 357 | SYSTEMEnabled = True 358 | SYSTEMLevel = 4 359 | BOOTEnabled = True 360 | BOOTLevel = 4 361 | COMMONEnabled = True 362 | COMMONLevel = 4 363 | CPUEnabled = True 364 | CPULevel = 4 365 | FILESYSEnabled = True 366 | FILESYSLevel = 4 367 | G3DEnabled = True 368 | G3DLevel = 4 369 | HLEEnabled = True 370 | HLELevel = 4 371 | JITEnabled = True 372 | JITLevel = 4 373 | LOADEREnabled = True 374 | LOADERLevel = 4 375 | MEEnabled = True 376 | MELevel = 4 377 | MEMMAPEnabled = True 378 | MEMMAPLevel = 4 379 | SASMIXEnabled = True 380 | SASMIXLevel = 4 381 | SAVESTATEEnabled = True 382 | SAVESTATELevel = 4 383 | FRAMEBUFEnabled = True 384 | FRAMEBUFLevel = 4 385 | SCEAUDIOEnabled = True 386 | SCEAUDIOLevel = 4 387 | SCECTRLEnabled = True 388 | SCECTRLLevel = 4 389 | SCEDISPEnabled = True 390 | SCEDISPLevel = 4 391 | SCEFONTEnabled = True 392 | SCEFONTLevel = 4 393 | SCEGEEnabled = True 394 | SCEGELevel = 4 395 | SCEINTCEnabled = True 396 | SCEINTCLevel = 4 397 | SCEIOEnabled = True 398 | SCEIOLevel = 4 399 | SCEKERNELEnabled = True 400 | SCEKERNELLevel = 4 401 | SCEMODULEEnabled = True 402 | SCEMODULELevel = 4 403 | SCENETEnabled = True 404 | SCENETLevel = 4 405 | SCERTCEnabled = True 406 | SCERTCLevel = 4 407 | SCESASEnabled = True 408 | SCESASLevel = 4 409 | SCEUTILEnabled = True 410 | SCEUTILLevel = 4 411 | SCEMISCEnabled = True 412 | SCEMISCLevel = 4 413 | AUDIOEnabled = True 414 | AUDIOLevel = 2 415 | IOEnabled = True 416 | IOLevel = 2 417 | [PostShaderSetting] 418 | BloomSettingValue1 = 0.600000 419 | BloomSettingValue2 = 0.500000 420 | CartoonSettingValue1 = 0.500000 421 | ColorCorrectionSettingValue1 = 1.000000 422 | ColorCorrectionSettingValue2 = 1.000000 423 | ColorCorrectionSettingValue3 = 1.000000 424 | ColorCorrectionSettingValue4 = 1.000000 425 | ScanlinesSettingValue1 = 1.000000 426 | ScanlinesSettingValue2 = 0.500000 427 | SharpenSettingValue1 = 1.500000 428 | [PostShaderList] 429 | PostShader1 = Off 430 | -------------------------------------------------------------------------------- /consoles/files/noneJoy/controls.ini: -------------------------------------------------------------------------------- 1 | [ControlMapping] 2 | Up = 1-19,10-19 3 | Down = 1-20,10-20 4 | Left = 1-21,10-21 5 | Right = 1-22,10-22 6 | Circle = 10-189 7 | Cross = 10-190 8 | Square = 1-29,10-188 9 | Triangle = 1-47,10-191 10 | Start = 1-62,10-197 11 | L = 1-45,10-193 12 | R = 1-51,10-192 13 | An.Up = 1-37,10-4003 14 | An.Down = 1-39,10-4002 15 | An.Left = 1-38,10-4001 16 | An.Right = 1-40,10-4000 17 | Analog limiter = 1-60 18 | RapidFire = 1-59 19 | Unthrottle = 1-61 20 | SpeedToggle = 1-68 21 | Pause = 10-4010:10-4008 22 | Rewind = 1-67 23 | Save State = 10-107 24 | Load State = 10-106 25 | Select = 10-196 26 | Exit App = 10-196:10-197 27 | -------------------------------------------------------------------------------- /consoles/files/noneJoy/drastic.cfg: -------------------------------------------------------------------------------- 1 | frameskip_type = 2 2 | frameskip_value = 1 3 | safe_frameskip = 0 4 | show_frame_counter = 0 5 | screen_orientation = 0 6 | screen_swap = 0 7 | savestate_number = 0 8 | fast_forward = 0 9 | enable_sound = 1 10 | clock_speed = 0 11 | threaded_3d = 1 12 | mirror_touch = 0 13 | compress_savestates = 1 14 | savestate_snapshot = 1 15 | unzip_roms = 0 16 | preload_roms = 0 17 | backup_in_savestates = 1 18 | ignore_gamecard_limit = 0 19 | frame_interval = 0 20 | trim_roms = 0 21 | fix_main_2d_screen = 0 22 | disable_edge_marking = 0 23 | interframe_blend = 0 24 | hires_3d = 0 25 | use_rtc_custom_time = 0 26 | rtc_custom_time = 0 27 | rtc_system_time = 0 28 | slot2_device_type = 0 29 | rumble_frames = 3 30 | firmware.username = Dr DraStic 31 | firmware.language = 1 32 | firmware.favorite_color = 0 33 | firmware.birthday_month = 1 34 | firmware.birthday_day = 1 35 | enable_cheats = 1 36 | controls_a[CONTROL_INDEX_UP] = 1217 37 | controls_a[CONTROL_INDEX_DOWN] = 1153 38 | controls_a[CONTROL_INDEX_LEFT] = 1216 39 | controls_a[CONTROL_INDEX_RIGHT] = 1152 40 | controls_a[CONTROL_INDEX_A] = 1025 41 | controls_a[CONTROL_INDEX_B] = 1024 42 | controls_a[CONTROL_INDEX_X] = 1026 43 | controls_a[CONTROL_INDEX_Y] = 1027 44 | controls_a[CONTROL_INDEX_L] = 1028 45 | controls_a[CONTROL_INDEX_R] = 1029 46 | controls_a[CONTROL_INDEX_START] = 1037 47 | controls_a[CONTROL_INDEX_SELECT] = 1036 48 | controls_a[CONTROL_INDEX_HINGE] = 104 49 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_UP] = 1219 50 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 1155 51 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 1218 52 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 1154 53 | controls_a[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1039 54 | controls_a[CONTROL_INDEX_MENU] = 109 55 | controls_a[CONTROL_INDEX_SAVE_STATE] = 318 56 | controls_a[CONTROL_INDEX_LOAD_STATE] = 320 57 | controls_a[CONTROL_INDEX_FAST_FORWARD] = 8 58 | controls_a[CONTROL_INDEX_SWAP_SCREENS] = 65535 59 | controls_a[CONTROL_INDEX_SWAP_ORIENTATION_A] = 97 60 | controls_a[CONTROL_INDEX_SWAP_ORIENTATION_B] = 100 61 | controls_a[CONTROL_INDEX_LOAD_GAME] = 65535 62 | controls_a[CONTROL_INDEX_QUIT] = 65535 63 | controls_a[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 64 | controls_a[CONTROL_INDEX_UI_UP] = 338 65 | controls_a[CONTROL_INDEX_UI_DOWN] = 337 66 | controls_a[CONTROL_INDEX_UI_LEFT] = 336 67 | controls_a[CONTROL_INDEX_UI_RIGHT] = 335 68 | controls_a[CONTROL_INDEX_UI_SELECT] = 13 69 | controls_a[CONTROL_INDEX_UI_BACK] = 8 70 | controls_a[CONTROL_INDEX_UI_EXIT] = 27 71 | controls_a[CONTROL_INDEX_UI_PAGE_UP] = 331 72 | controls_a[CONTROL_INDEX_UI_PAGE_DOWN] = 334 73 | controls_a[CONTROL_INDEX_UI_SWITCH] = 481 74 | controls_b[CONTROL_INDEX_UP] = 1032 75 | controls_b[CONTROL_INDEX_DOWN] = 1033 76 | controls_b[CONTROL_INDEX_LEFT] = 1034 77 | controls_b[CONTROL_INDEX_RIGHT] = 1035 78 | controls_b[CONTROL_INDEX_A] = 65535 79 | controls_b[CONTROL_INDEX_B] = 65535 80 | controls_b[CONTROL_INDEX_X] = 65535 81 | controls_b[CONTROL_INDEX_Y] = 65535 82 | controls_b[CONTROL_INDEX_L] = 65535 83 | controls_b[CONTROL_INDEX_R] = 65535 84 | controls_b[CONTROL_INDEX_START] = 13 85 | controls_b[CONTROL_INDEX_SELECT] = 538 86 | controls_b[CONTROL_INDEX_HINGE] = 65535 87 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_UP] = 65535 88 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 65535 89 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 65535 90 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 65535 91 | controls_b[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1039 92 | controls_b[CONTROL_INDEX_MENU] = 1036 93 | controls_b[CONTROL_INDEX_SAVE_STATE] = 65535 94 | controls_b[CONTROL_INDEX_LOAD_STATE] = 65535 95 | controls_b[CONTROL_INDEX_FAST_FORWARD] = 65535 96 | controls_b[CONTROL_INDEX_SWAP_SCREENS] = 1031 97 | controls_b[CONTROL_INDEX_SWAP_ORIENTATION_A] = 1030 98 | controls_b[CONTROL_INDEX_SWAP_ORIENTATION_B] = 65535 99 | controls_b[CONTROL_INDEX_LOAD_GAME] = 65535 100 | controls_b[CONTROL_INDEX_QUIT] = 65535 101 | controls_b[CONTROL_INDEX_FAKE_MICROPHONE] = 65535 102 | controls_b[CONTROL_INDEX_UI_UP] = 1032 103 | controls_b[CONTROL_INDEX_UI_DOWN] = 1033 104 | controls_b[CONTROL_INDEX_UI_LEFT] = 1034 105 | controls_b[CONTROL_INDEX_UI_RIGHT] = 1035 106 | controls_b[CONTROL_INDEX_UI_SELECT] = 1025 107 | controls_b[CONTROL_INDEX_UI_BACK] = 1026 108 | controls_b[CONTROL_INDEX_UI_EXIT] = 1024 109 | controls_b[CONTROL_INDEX_UI_PAGE_UP] = 1028 110 | controls_b[CONTROL_INDEX_UI_PAGE_DOWN] = 1029 111 | controls_b[CONTROL_INDEX_UI_SWITCH] = 1038 112 | -------------------------------------------------------------------------------- /consoles/files/ogage.happy5.conf: -------------------------------------------------------------------------------- 1 | # MYMINI键值 2 | # 上 BTN_DPAD_UP 3 | # 下 BTN_DPAD_DOWN 4 | # 左 BTN_DPAD_LEFT 5 | # 右 BTN_DPAD_RIGHT 6 | # B BTN_SOUTH 7 | # A BTN_EAST 8 | # X BTN_NORTH 9 | # Y BTN_WEST 10 | # L BTN_TL 11 | # L2 BTN_TL2 12 | # R BTN_TR 13 | # R2 BTN_TR2 14 | # L3 BTN_THUMBL 15 | # SELECT BTN_TRIGGER_HAPPY1 16 | # SATRT BTN_TRIGGER_HAPPY2 17 | # VOLUMEUP KEY_VOLUMEUP 18 | # VOLUMEDOWN KEY_VOLUMEDOWN 19 | 20 | # K36S|R36T 21 | # FN BTN_MODE 22 | 23 | # 热键:原来硬编码是 BTN_TRIGGER_HAPPY5 24 | HOTKEY=BTN_TRIGGER_HAPPY5 25 | # 亮度调节 26 | BRIGHT_UP=BTN_DPAD_UP 27 | BRIGHT_DOWN=BTN_DPAD_DOWN 28 | # 音量调节 29 | VOL_UP=BTN_DPAD_RIGHT 30 | VOL_DOWN=BTN_DPAD_LEFT 31 | VOL_UP2=BTN_TR 32 | VOL_DOWN2=BTN_TL 33 | # 备用亮度调节键(部分手柄额外的 Trigger Happy 键) 34 | BRIGHT_DOWN2=BTN_TRIGGER_HAPPY3 35 | BRIGHT_UP2=BTN_TRIGGER_HAPPY4 36 | # 系统音量按键(裸按即可,不需要热键) 37 | VOLUME_UP=KEY_VOLUMEUP 38 | VOLUME_DOWN=KEY_VOLUMEDOWN 39 | # 静音切换 40 | MUTE=KEY_PLAYPAUSE 41 | -------------------------------------------------------------------------------- /consoles/files/ogage.select.conf: -------------------------------------------------------------------------------- 1 | # MYMINI键值 2 | # 上 BTN_DPAD_UP 3 | # 下 BTN_DPAD_DOWN 4 | # 左 BTN_DPAD_LEFT 5 | # 右 BTN_DPAD_RIGHT 6 | # B BTN_SOUTH 7 | # A BTN_EAST 8 | # X BTN_NORTH 9 | # Y BTN_WEST 10 | # L BTN_TL 11 | # L2 BTN_TL2 12 | # R BTN_TR 13 | # R2 BTN_TR2 14 | # L3 BTN_THUMBL 15 | # SELECT BTN_TRIGGER_HAPPY1 16 | # SATRT BTN_TRIGGER_HAPPY2 17 | # VOLUMEUP KEY_VOLUMEUP 18 | # VOLUMEDOWN KEY_VOLUMEDOWN 19 | 20 | # K36S|R36T 21 | # FN BTN_MODE 22 | 23 | # 热键:原来硬编码是 BTN_TRIGGER_HAPPY5 24 | HOTKEY=BTN_TRIGGER_HAPPY1 25 | # 亮度调节 26 | BRIGHT_UP=BTN_DPAD_UP 27 | BRIGHT_DOWN=BTN_DPAD_DOWN 28 | # 音量调节 29 | VOL_UP=BTN_DPAD_RIGHT 30 | VOL_DOWN=BTN_DPAD_LEFT 31 | VOL_UP2=BTN_TR 32 | VOL_DOWN2=BTN_TL 33 | # 备用亮度调节键(部分手柄额外的 Trigger Happy 键) 34 | BRIGHT_DOWN2=BTN_TRIGGER_HAPPY3 35 | BRIGHT_UP2=BTN_TRIGGER_HAPPY4 36 | # 系统音量按键(裸按即可,不需要热键) 37 | VOLUME_UP=KEY_VOLUMEUP 38 | VOLUME_DOWN=KEY_VOLUMEDOWN 39 | # 静音切换 40 | MUTE=KEY_PLAYPAUSE 41 | -------------------------------------------------------------------------------- /consoles/files/option-gamelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ./Advanced 5 | 高级功能 6 | 7 | 8 | ./Clone 9 | 克隆设备专用脚本 10 | 11 | 12 | ./DeviceType 13 | 机器类型 14 | 15 | 16 | ./Advanced/NDS Overlays 17 | NDS遮罩管理 18 | 19 | 20 | ./Advanced/Video Boot 21 | 开机启动视频 22 | 23 | 24 | ./Tools 25 | 工具软件 26 | 27 | 28 | ./Tools/Gamma 29 | Gamma值调整 30 | 31 | 32 | ./Tools/Gamma/Adjust Gamma (temporary) 33 | 临时设置gamma值 34 | 35 | 36 | ./Tools/Gamma/Set Panel1.sh 37 | Panel1屏幕推荐值设置 38 | 39 | 40 | ./Tools/Gamma/Set Panel4.sh 41 | Panel4屏幕推荐值设置 42 | 43 | 44 | ./Tools/Gamma/Enable Gamma Correction.sh 45 | 开启gamma修改 46 | 47 | 48 | ./Tools/Gamma/Disable Gamma Correction.sh 49 | 关闭gamma修改 50 | 51 | 52 | ./Tools/Gamma/View Test Images.sh 53 | 查看测试图 54 | 55 | 56 | ./Tools/ES Logo Changer.sh 57 | 改变ES Logo 58 | 59 | 60 | ./Tools/Plymouth Theme Changer.sh 61 | 改变主题 62 | 63 | 64 | ./Tools/ThemeMaster.sh 65 | 主题大师 66 | 67 | 68 | ./Tools/PortMaster.sh 69 | 进入PM 70 | 71 | 72 | ./Clone/Toggle Audio.sh 73 | 声音调整 74 | 75 | 76 | ./Clone/joyled.sh 77 | 摇杆灯控制 78 | 79 | 80 | ./351Files.sh 81 | 351文件管理器 82 | 4 83 | 20210501T020326 84 | 85 | 86 | ./Bluetooth.sh 87 | 蓝牙管理 88 | 4 89 | 20210501T020326 90 | 91 | 92 | ./Change Time.sh 93 | 修改时间 94 | 95 | 96 | ./Set Launchimage to ascii or pic.sh 97 | 修改启动图从ascii或pic 98 | 99 | 100 | ./Set Launchimage to vid.sh 101 | 修改启动图为vid 102 | 103 | 104 | ./Wifi-Toggle.sh 105 | wifi开关 106 | 107 | 108 | ./Remove ._ Files.sh 109 | 移除 ._ 文件 110 | 4 111 | 20210501T020326 112 | 113 | 114 | ./MSDOS - Show zip games.sh 115 | MSDOS - 显示 zip 格式的游戏 116 | 4 117 | 20210501T020326 118 | 119 | 120 | ./MSDOS - Hide zip games.sh 121 | MSDOS - 隐藏 zip 格式的游戏 122 | 4 123 | 20210501T020326 124 | 125 | 126 | ./PS1 - Show all games.sh 127 | PS1 - 显示所有游戏 128 | 4 129 | 20210501T020326 130 | 131 | 132 | ./PS1 - Show only m3u games.sh 133 | PS1 - 只显示 m3u 文件的游戏 134 | 4 135 | 20210501T020326 136 | 137 | 138 | ./PS1 - Generate m3u files.sh 139 | PS1 - 生成 m3u 文件 140 | 4 141 | 20210501T020326 142 | 143 | 144 | ./PS1 - Delete m3u files.sh 145 | PS1 - 删除 m3u 文件 146 | 4 147 | 20210501T020326 148 | 149 | 150 | ./Change LED to Green.sh 151 | 切换 LED 为绿色 152 | 4 153 | 20210501T020326 154 | 155 | 156 | ./Change LED to Red.sh 157 | 切换 LED 为红色 158 | 4 159 | 20210501T020326 160 | 161 | 162 | ./Enable Remote Services.sh 163 | 启用远程服务 164 | 4 165 | 20210501T020326 166 | 167 | 168 | ./Change Password.sh 169 | 更改密码 170 | 4 171 | 20210501T020326 172 | 173 | 174 | ./Disable Remote Services.sh 175 | 禁用远程服务 176 | 4 177 | 20210501T020326 178 | 179 | 180 | ./File Manager.sh 181 | 文件管理器 182 | 4 183 | 20210501T020326 184 | 185 | 186 | ./Network Info.sh 187 | 网络信息 188 | 4 189 | 20210501T020326 190 | 191 | 192 | ./Switch Launchimage to ascii.sh 193 | 切换启动画面为 ASCII 模式 194 | 4 195 | 20210501T020326 196 | 197 | 198 | ./Switch Launchimage to jpg.sh 199 | 切换启动画面为图片模式 200 | 4 201 | 20210501T020326 202 | 203 | 204 | ./Update.sh 205 | 升级系统 206 | 4 207 | 20210501T020326 208 | 209 | 210 | ./USB Drive Mount.sh 211 | 挂载 USB 设备 212 | 4 213 | 20210501T020326 214 | 215 | 216 | ./USB Drive Unmount.sh 217 | 卸载 USB 设备 218 | 4 219 | 20210501T020326 220 | 221 | 222 | ./Wifi.sh 223 | Wifi 设置 224 | 4 225 | 20210501T020326 226 | 227 | 228 | ./Advanced/Backup Settings.sh 229 | 备份设置 230 | 3 231 | 20210501T203120 232 | 233 | 234 | ./Advanced/Disable Wifi.sh 235 | 关闭 Wifi 236 | 3 237 | 20210501T203120 238 | 239 | 240 | ./Advanced/Enable Wifi.sh 241 | 开启 Wifi 242 | 3 243 | 20210501T203120 244 | 245 | 246 | ./Advanced/Fix Global Hotkeys.sh 247 | 修复全局快捷键 248 | 3 249 | 20210501T203120 250 | 251 | 252 | ./Advanced/Switch to SD2 for Roms.sh 253 | 切换使用 TF2 内游戏 254 | 3 255 | 20210501T203120 256 | 257 | 258 | ./Advanced/Switch to main SD for Roms.sh 259 | 切换使用 TF1 内游戏 260 | 3 261 | 20210501T203120 262 | 263 | 264 | ./Advanced/Restore Default Retroarch32 Core Settings.sh 265 | 恢复默认的 Retroarch 32位核心设置 266 | 3 267 | 20210501T203120 268 | 269 | 270 | ./Advanced/Restore Default Retroarch32 Settings.sh 271 | 恢复默认的 Retroarch 32位设置 272 | 3 273 | 20210501T203120 274 | 275 | 276 | ./Advanced/Restore Default Retroarch Core Settings.sh 277 | 恢复默认的 Retroarch 核心设置 278 | 3 279 | 20210501T203120 280 | 281 | 282 | ./Advanced/Restore Default Retroarch Settings.sh 283 | 恢复默认的 Retroarch 设置 284 | 3 285 | 20210501T203120 286 | 287 | 288 | ./Advanced/Restore Settings.sh 289 | 恢复设置 290 | 3 291 | 20210501T203120 292 | 293 | 294 | ./Advanced/Clear Last Played Collection.sh 295 | 清除上次玩过的收藏游戏 296 | 3 297 | 20210501T203120 298 | 299 | 300 | ./Advanced/Screen - Switch to Original Screen Timings.sh 301 | 屏幕 - 切换到原始屏幕时序 302 | 3 303 | 20210501T203120 304 | 305 | 306 | ./Advanced/Screen - Switch to Tony Screen Timings.sh 307 | 屏幕 - 切换到 Tony 屏幕时序 308 | 3 309 | 20210501T203120 310 | 311 | 312 | ./Advanced/Reset Retroarch32 Core Settings.sh 313 | 恢复默认的 Retroarch 32位核心设置 314 | 3 315 | 20210501T203120 316 | 317 | 318 | ./Advanced/Reset Retroarch32 Settings.sh 319 | 恢复默认的 Retroarch 32位设置 320 | 3 321 | 20210501T203120 322 | 323 | 324 | ./Advanced/Restore Default Drastic Settings.sh 325 | 恢复默认的 Drastic 设置 326 | 3 327 | 20210501T203120 328 | 329 | 330 | ./Advanced/Restore Default PPSSPP Controls.sh 331 | 恢复默认的 PPSSPP 设置 332 | 3 333 | 20210501T203120 334 | 335 | 336 | ./Advanced/Reset Retroarch Core Settings.sh 337 | 恢复默认的 Retroarch 核心设置 338 | 3 339 | 20210501T203120 340 | 341 | 342 | ./Advanced/Reset Retroarch Settings.sh 343 | 恢复默认的 Retroarch 设置 344 | 3 345 | 20210501T203120 346 | 347 | 348 | ./Advanced/Backup ArkOS Settings.sh 349 | 备份 ArkOS 设置 350 | 3 351 | 20210501T203120 352 | 353 | 354 | ./Advanced/Disable Low Battery Warning.sh 355 | 关闭低电量警告 356 | 3 357 | 20210501T203120 358 | 359 | 360 | ./Advanced/enable low battery warning.sh 361 | 开启低电量警告 362 | 3 363 | 20210501T203120 364 | 365 | 366 | ./Advanced/ES FullScreen.sh 367 | 切换 ES 沉浸模式 368 | 3 369 | 20210501T203120 370 | 371 | 372 | ./Advanced/ES Header.sh 373 | 切换 ES 标题模式 374 | 3 375 | 20210501T203120 376 | 377 | 378 | ./Advanced/Fix ExFat Partition.sh 379 | 修复 ExFat 分区 380 | 3 381 | 20210501T203120 382 | 383 | 384 | ./Advanced/Restore ArkOS Settings.sh 385 | 恢复设置 386 | 3 387 | 20210501T203120 388 | 389 | 390 | ./Advanced/Triggers -- Enable OGA 1.1 Version.sh 391 | 触发器-启用 OGA 1.1 版本 392 | 3 393 | 20210501T203120 394 | 395 | 396 | ./Advanced/Triggers -- Enable RGB10 Version.sh 397 | 触发器-启用 OGA 1.0 版本 398 | 3 399 | 20210501T203120 400 | 401 | 402 | ./Advanced/Enable Developer Mode.sh 403 | 启用开发者模式 404 | 3 405 | 20210501T203120 406 | 407 | 408 | ./Advanced/wifioff.sh 409 | 关闭 WIFI 410 | 3 411 | 20210501T203120 412 | 413 | 414 | ./Advanced/wifion.sh 415 | 开启 WIFI 416 | 3 417 | 20210501T203120 418 | 419 | 420 | ./Advanced/Screen - Switch to Original Screen Timings.sh 421 | 屏幕-切换到原始屏幕时序 422 | 3 423 | 20210501T203120 424 | 425 | 426 | ./Advanced/Screen - Switch to Tony Screen Timings.sh 427 | 屏幕-切换到 Tony 屏幕时序(60Hz) 428 | 3 429 | 20210501T203120 430 | 431 | 432 | ./Advanced/Sleep - Switch to Deep sleep support.sh 433 | 待机-切换到深度睡眠模式 434 | 3 435 | 20210501T203120 436 | 437 | 438 | ./Advanced/Sleep - Switch to Light sleep support.sh 439 | 待机-切换到轻度睡眠模式 440 | 3 441 | 20210501T203120 442 | 443 | 444 | ./Advanced/Enable Experimental Touch support.sh 445 | 启用实验性触摸支持 446 | 3 447 | 20210501T203120 448 | 449 | 450 | ./Advanced/Disable Experimental Touch support.sh 451 | 禁用实验性触摸支持 452 | 3 453 | 20210501T203120 454 | 455 | 456 | ./Advanced/Enable Quick Mode.sh 457 | 启用快速模式 458 | 3 459 | 20210501T203120 460 | 461 | 462 | ./Advanced/Disable Quick Mode.sh 463 | 禁用快速模式 464 | 3 465 | 20210501T203120 466 | 467 | 468 | ./Advanced/Restore Default GZdoom Settings.sh 469 | 恢复默认的 GZdoom 设置 470 | 3 471 | 20210501T203120 472 | 473 | 474 | ./Advanced/Restore Default LZdoom Settings.sh 475 | 恢复默认的 LZdoom 设置 476 | 3 477 | 20210501T203120 478 | 479 | 480 | ./Advanced/Controller Tester.sh 481 | 控制器测试 482 | 3 483 | 20210501T203120 484 | 485 | 486 | ./Advanced/Fix Audio.sh 487 | 音频修复 488 | 3 489 | 20210501T203120 490 | 491 | 492 | ./Advanced/Change Ports SDL.sh 493 | 更改 Ports SDL 494 | 3 495 | 20210501T203120 496 | 497 | 498 | ./Advanced/Reset EmulationStation Controls.sh 499 | 重置ES控制器 500 | 501 | 502 | ./Advanced/Restore ECWolf Joystick.sh 503 | 重置ECWolf控制器 504 | 505 | 506 | ./Advanced/NDS Overlays/Disable NDS Overlays.sh 507 | 关闭nds遮罩 508 | 509 | 510 | ./Advanced/NDS Overlays/Enable NDS Overlays.sh 511 | 开启nds遮罩 512 | 513 | 514 | ./Advanced/Video Boot/Disable Video Boot.sh 515 | 关闭视频启动 516 | 517 | 518 | ./Advanced/Video Boot/Enable Video Boot.sh 519 | 开启视频启动 520 | 521 | 522 | -------------------------------------------------------------------------------- /consoles/hg36/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-hg36-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/hg36/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/hg36/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/hg36/rk3326-hg36-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/hg36/rk3326-hg36-linux.dtb -------------------------------------------------------------------------------- /consoles/k36p4/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-k36p4-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/k36p4/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p4/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/k36p4/rk3326-k36p4-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p4/rk3326-k36p4-linux.dtb -------------------------------------------------------------------------------- /consoles/k36p7/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-k36p7-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/k36p7/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p7/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/k36p7/rk3326-k36p7-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p7/rk3326-k36p7-linux.dtb -------------------------------------------------------------------------------- /consoles/k36p8/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-k36p8-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/k36p8/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p8/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/k36p8/rk3326-k36p8-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36p8/rk3326-k36p8-linux.dtb -------------------------------------------------------------------------------- /consoles/k36s/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-k36s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/k36s/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36s/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/k36s/rk3326-k36s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/k36s/rk3326-k36s-linux.dtb -------------------------------------------------------------------------------- /consoles/kenrel/common/Image: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/kenrel/common/Image -------------------------------------------------------------------------------- /consoles/kenrel/panel5/Image: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/kenrel/panel5/Image -------------------------------------------------------------------------------- /consoles/logo/480P/logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/logo/480P/logo.bmp -------------------------------------------------------------------------------- /consoles/logo/720P/logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/logo/720P/logo.bmp -------------------------------------------------------------------------------- /consoles/logo/720P/logo.bmp.bak: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/logo/720P/logo.bmp.bak -------------------------------------------------------------------------------- /consoles/logo/768P/logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/logo/768P/logo.bmp -------------------------------------------------------------------------------- /consoles/mymini/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-mymini-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/mymini/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/mymini/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/mymini/rk3326-mymini-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/mymini/rk3326-mymini-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 0/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 0/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb.orig -------------------------------------------------------------------------------- /consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb.tony: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 0/rk3326-rg351mp-linux.dtb.tony -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 1/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 1/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb.orig -------------------------------------------------------------------------------- /consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb.tony: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 1/rk3326-rg351mp-linux.dtb.tony -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 2/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 2/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb.orig -------------------------------------------------------------------------------- /consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb.tony: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 2/rk3326-rg351mp-linux.dtb.tony -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 3/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 3/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb.orig -------------------------------------------------------------------------------- /consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb.tony: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 3/rk3326-rg351mp-linux.dtb.tony -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 4/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 4/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb.orig -------------------------------------------------------------------------------- /consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb.tony: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 4/rk3326-rg351mp-linux.dtb.tony -------------------------------------------------------------------------------- /consoles/origin r36s panel 5/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r35s-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/origin r36s panel 5/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 5/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 5/rg351p-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 5/rg351p-kernel.dtb -------------------------------------------------------------------------------- /consoles/origin r36s panel 5/rk3326-r35s-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/origin r36s panel 5/rk3326-r35s-linux.dtb -------------------------------------------------------------------------------- /consoles/r36max/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r36max-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/r36max/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36max/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/r36max/rk3326-r36max-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36max/rk3326-r36max-linux.dtb -------------------------------------------------------------------------------- /consoles/r36pro/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-xf36pro-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/r36pro/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36pro/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/r36pro/rk3326-xf36pro-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36pro/rk3326-xf36pro-linux.dtb -------------------------------------------------------------------------------- /consoles/r36splus/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r36plus-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/r36splus/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36splus/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/r36splus/rk3326-r36plus-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36splus/rk3326-r36plus-linux.dtb -------------------------------------------------------------------------------- /consoles/r36ultra/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r36ultra-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/r36ultra/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36ultra/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/r36ultra/rk3326-r36ultra-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r36ultra/rk3326-r36ultra-linux.dtb -------------------------------------------------------------------------------- /consoles/r46h/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=/dev/ttyFIQ0 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-r46h-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/r46h/rg351mp-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r46h/rg351mp-kernel.dtb -------------------------------------------------------------------------------- /consoles/r46h/rk3326-r46h-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/r46h/rk3326-r46h-linux.dtb -------------------------------------------------------------------------------- /consoles/rx6h/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-rx6h-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/rx6h/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/rx6h/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/rx6h/rk3326-rx6h-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/rx6h/rk3326-rx6h-linux.dtb -------------------------------------------------------------------------------- /consoles/xf35h/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-xf35h-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/xf35h/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf35h/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/xf35h/rk3326-xf35h-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf35h/rk3326-xf35h-linux.dtb -------------------------------------------------------------------------------- /consoles/xf40h/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-xf40h-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/xf40h/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf40h/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/xf40h/rk3326-xf40h-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf40h/rk3326-xf40h-linux.dtb -------------------------------------------------------------------------------- /consoles/xf40v/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-xf40v-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/xf40v/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf40v/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/xf40v/rk3326-xf40v-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xf40v/rk3326-xf40v-linux.dtb -------------------------------------------------------------------------------- /consoles/xgb36/boot.ini: -------------------------------------------------------------------------------- 1 | odroidgoa-uboot-config 2 | 3 | ######################################################################## 4 | # Changes made to this are overwritten every time there's a new upgrade 5 | # To make your changes permanent change it on 6 | # boot.ini.default 7 | # After changing it on boot.ini.default run the bootini command to 8 | # rewrite this file with your personal permanent settings. 9 | ######################################################################## 10 | 11 | # Boot Arguments 12 | setenv bootargs "root=UUID='e139ce78-9841-40fe-8823-96a304a09859' rootwait rw fsck.repair=yes net.ifnames=0 fbcon=rotate:0 console=ttyS0,115200 quiet splash plymouth.ignore-serial-consoles consoleblank=0" 13 | 14 | # Booting 15 | setenv loadaddr "0x02000000" 16 | setenv initrd_loadaddr "0x01100000" 17 | setenv dtb_loadaddr "0x01f00000" 18 | 19 | load mmc 1:1 ${loadaddr} Image 20 | load mmc 1:1 ${initrd_loadaddr} uInitrd 21 | 22 | load mmc 1:1 ${dtb_loadaddr} rk3326-xgb36-linux.dtb 23 | 24 | booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr} 25 | 26 | -------------------------------------------------------------------------------- /consoles/xgb36/rg351v-kernel.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xgb36/rg351v-kernel.dtb -------------------------------------------------------------------------------- /consoles/xgb36/rk3326-xgb36-linux.dtb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/consoles/xgb36/rk3326-xgb36-linux.dtb -------------------------------------------------------------------------------- /dtb_selector_macos_apple: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/dtb_selector_macos_apple -------------------------------------------------------------------------------- /dtb_selector_macos_intel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/dtb_selector_macos_intel -------------------------------------------------------------------------------- /dtb_selector_win32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/dtb_selector_win32.exe -------------------------------------------------------------------------------- /go_build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo Building DTB Selector for all platforms... 3 | 4 | echo Building Windows 32-bit... 5 | set GOOS=windows 6 | set GOARCH=386 7 | go build -ldflags="-s -w" -o dtb_selector_win32.exe dtb_selector.go 8 | 9 | @REM echo Building Windows 64-bit... 10 | @REM set GOOS=windows 11 | @REM set GOARCH=amd64 12 | @REM go build -ldflags="-s -w" -o dtb_selector_win64.exe dtb_selector.go 13 | 14 | echo Building macOS Intel... 15 | set GOOS=darwin 16 | set GOARCH=amd64 17 | go build -ldflags="-s -w" -o dtb_selector_macos_intel dtb_selector.go 18 | 19 | echo Building macOS Apple Silicon... 20 | set GOOS=darwin 21 | set GOARCH=arm64 22 | go build -ldflags="-s -w" -o dtb_selector_macos_apple dtb_selector.go 23 | 24 | @REM echo Building Linux 64-bit... 25 | @REM set GOOS=linux 26 | @REM set GOARCH=amd64 27 | @REM go build -ldflags="-s -w" -o dtb_selector_linux dtb_selector.go 28 | 29 | echo. 30 | echo Build completed! 31 | echo. 32 | echo Generated files: 33 | echo dtb_selector_win32.exe - Windows 32-bit 34 | echo dtb_selector_win64.exe - Windows 64-bit 35 | echo dtb_selector_macos_intel - macOS Intel 36 | echo dtb_selector_macos_apple - macOS Apple Silicon 37 | echo dtb_selector_linux - Linux 64-bit -------------------------------------------------------------------------------- /grow_p2_plus.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | # ============ 配置 ============ 5 | ADD_MB=2536 # 追加容量(MiB),当前约 +2.48 GiB 6 | P3_FS="ntfs" # 可选: ntfs | exfat 7 | P3_LABEL="data" # 新的分区3卷标 8 | TMP_DIR="$(pwd)/tmp" # 备份/恢复目录;脚本会创建、用完后删除 9 | # ============================= 10 | 11 | if [[ $# -lt 1 ]]; then 12 | echo "用法: $0 <镜像文件路径>" 13 | exit 1 14 | fi 15 | IMG="$1" 16 | [[ -f "$IMG" ]] || { echo "找不到镜像: $IMG"; exit 1; } 17 | 18 | # 运行期资源(挂载点等) 19 | P3_OLD_MNT="$(mktemp -d -t p3_old.XXXXXX)" 20 | P3_NEW_MNT="$(mktemp -d -t p3_new.XXXXXX)" 21 | LOOP="" 22 | 23 | settle() { 24 | # 等待内核/udev 创建设备节点;在 WSL 等无 udev 环境用 sleep 兜底 25 | if command -v udevadm >/dev/null 2>&1; then 26 | sudo udevadm settle || true 27 | else 28 | sleep 1 29 | fi 30 | } 31 | 32 | cleanup() { 33 | set +e 34 | mountpoint -q "$P3_OLD_MNT" && sudo umount "$P3_OLD_MNT" 35 | mountpoint -q "$P3_NEW_MNT" && sudo umount "$P3_NEW_MNT" 36 | [[ -d "$P3_OLD_MNT" ]] && rmdir "$P3_OLD_MNT" || true 37 | [[ -d "$P3_NEW_MNT" ]] && rmdir "$P3_NEW_MNT" || true 38 | # 解绑当前 loop 39 | if [[ -n "${LOOP:-}" ]] && losetup -a | grep -q "^$LOOP:"; then 40 | sudo losetup -d "$LOOP" || true 41 | fi 42 | } 43 | trap cleanup EXIT 44 | 45 | # 解除所有已映射到该镜像的 loop(如果存在) 46 | echo "== 解除旧 loop(如果存在) ==" 47 | while read -r dev; do 48 | [[ -n "$dev" ]] && sudo losetup -d "$dev" || true 49 | done < <(losetup -j "$IMG" | cut -d: -f1) 50 | 51 | # 映射镜像到 loop(同时启用分区扫描),原子返回唯一设备名 52 | echo "== 映射镜像到 loop(带分区) ==" 53 | LOOP="$(sudo losetup --find --show -P "$IMG")" 54 | settle 55 | echo "使用 loop: $LOOP" 56 | 57 | # 扇区信息 58 | SECTOR_SIZE="$(sudo blockdev --getss "$LOOP")" # 常见 512 59 | ADD_BYTES=$(( ADD_MB * 1024 * 1024 )) 60 | ADD_SECTORS=$(( ADD_BYTES / SECTOR_SIZE )) 61 | 62 | # 工具函数:检查 p3 是否存在(机器可读模式) 63 | has_p3() { 64 | sudo parted -sm "$LOOP" unit s print | grep -qE '^3:' 65 | } 66 | 67 | # 读取 p2 结束扇区(机器可读更稳) 68 | CUR_END="$(sudo parted -sm "$LOOP" unit s print | awk -F: '$1=="2"{gsub(/s/,"",$3); print $3}')" 69 | [[ -n "${CUR_END:-}" ]] || { echo "未能读取到分区2信息,退出。"; exit 1; } 70 | echo "当前 p2 End: $CUR_END" 71 | echo "扇区大小: ${SECTOR_SIZE} B,扩容扇区数: ${ADD_SECTORS}" 72 | 73 | # ======= 第一步:备份 p3 到 TMP_DIR(若存在) ======= 74 | if has_p3; then 75 | echo "检测到 p3,准备备份到 $TMP_DIR" 76 | mkdir -p "$TMP_DIR" 77 | P3_DEV="${LOOP}p3" 78 | 79 | echo "挂载旧 p3 到 $P3_OLD_MNT(优先只读)" 80 | if ! sudo mount -o ro "$P3_DEV" "$P3_OLD_MNT"; then 81 | echo "只读挂载失败,尝试普通挂载" 82 | sudo mount "$P3_DEV" "$P3_OLD_MNT" 83 | fi 84 | 85 | echo "备份 p3 -> $TMP_DIR(rsync -aH --delete,保证 tmp 为“镜像一致”)" 86 | sudo rsync -aH --delete --info=progress2 "$P3_OLD_MNT"/ "$TMP_DIR"/ 87 | 88 | echo "卸载旧 p3 挂载点" 89 | sudo umount "$P3_OLD_MNT" 90 | else 91 | echo "未发现 p3,跳过备份。" 92 | fi 93 | 94 | # ======= 第二步:删除 p3 分区(必须清路) ======= 95 | echo "== 删除旧的分区3 ==" 96 | if sudo parted -s "$LOOP" rm 3 2>/dev/null; then 97 | echo "已删除 p3(如果原本存在)" 98 | else 99 | echo "未能删除 p3(可能原本就不存在),继续。" 100 | fi 101 | 102 | # 再次校验,若仍存在 p3 则终止 103 | if has_p3; then 104 | echo "错误:p3 仍存在,无法继续扩容。请检查分区表后重试。" 105 | sudo parted "$LOOP" unit s print || true 106 | exit 1 107 | fi 108 | 109 | # ======= 第三步:扩展镜像文件并扩 p2 ======= 110 | echo "== 扩大镜像 +${ADD_MB}MiB ==" 111 | truncate -s +"${ADD_MB}"M "$IMG" 112 | 113 | echo "== 刷新 loop 大小 ==" 114 | sudo losetup -d "$LOOP" 115 | LOOP="$(sudo losetup --find --show -P "$IMG")" 116 | settle 117 | echo "loop 已刷新: $LOOP" 118 | 119 | # 重新读取 p2 End(以防 parted/内核刷新导致边界变化) 120 | CUR_END="$(sudo parted -sm "$LOOP" unit s print | awk -F: '$1=="2"{gsub(/s/,"",$3); print $3}')" 121 | [[ -n "${CUR_END:-}" ]] || { echo "刷新后未能读取到分区2信息,退出。"; exit 1; } 122 | NEW_END=$(( CUR_END + ADD_SECTORS )) 123 | echo "将 p2 结束扇区扩到: $NEW_END" 124 | 125 | echo "== 扩展 p2 到指定扇区(非100%) ==" 126 | sudo parted -s "$LOOP" unit s "resizepart 2 ${NEW_END}s" 127 | sudo partprobe "$LOOP" || true 128 | settle 129 | 130 | echo "== 扩展 p2 内文件系统(自动检测 ext4 / f2fs) ==" 131 | P2_DEV="${LOOP}p2" 132 | P2_FS="$(blkid -s TYPE -o value "$P2_DEV" || true)" 133 | case "$P2_FS" in 134 | ext4|"") 135 | sudo e2fsck -fy "$P2_DEV" 136 | sudo resize2fs "$P2_DEV" 137 | ;; 138 | f2fs) 139 | sudo fsck.f2fs -f "$P2_DEV" || true 140 | sudo resize.f2fs "$P2_DEV" 141 | ;; 142 | *) 143 | echo "警告:未知/不支持的 p2 文件系统类型:$P2_FS" 144 | echo "请手动扩展 p2 文件系统后再继续。" 145 | ;; 146 | esac 147 | 148 | # ======= 第四步:重建 p3(p2 尾后到盘尾) ======= 149 | echo "== 计算新 p3 起始扇区(p2 End + 1) ==" 150 | P2_END_NOW="$(sudo parted -sm "$LOOP" unit s print | awk -F: '$1=="2"{gsub(/s/,"",$3); print $3}')" 151 | [[ -n "${P2_END_NOW:-}" ]] || { echo "未能读取最新 p2 End,退出。"; exit 1; } 152 | P3_START=$(( P2_END_NOW + 1 )) 153 | echo "p2 End: $P2_END_NOW" 154 | echo "p3 Start: $P3_START" 155 | 156 | echo "== 在尾部重建 p3 ==" 157 | sudo parted -s "$LOOP" unit s "mkpart primary ${P3_START}s 100%" 158 | sudo partprobe "$LOOP" || true 159 | settle 160 | 161 | echo "== 格式化新的 p3 ==" 162 | P3_DEV="${LOOP}p3" 163 | if [[ "$P3_FS" == "ntfs" ]]; then 164 | sudo mkfs.ntfs -F -L "$P3_LABEL" "$P3_DEV" 165 | elif [[ "$P3_FS" == "exfat" ]]; then 166 | sudo mkfs.exfat -n "$P3_LABEL" "$P3_DEV" 167 | else 168 | echo "不支持的 P3_FS: $P3_FS" 169 | exit 1 170 | fi 171 | 172 | # ======= 第五步:恢复数据(镜像一致) ======= 173 | if [[ -d "$TMP_DIR" ]] && [[ -n "$(ls -A "$TMP_DIR" 2>/dev/null || true)" ]]; then 174 | echo "== 恢复数据(镜像一致):$TMP_DIR -> 新 p3 ==" 175 | sudo mount "$P3_DEV" "$P3_NEW_MNT" 176 | sudo rsync -aH --delete --info=progress2 "$TMP_DIR"/ "$P3_NEW_MNT"/ 177 | sync 178 | sudo umount "$P3_NEW_MNT" 179 | echo "恢复完成。" 180 | else 181 | echo "没有找到备份内容,跳过恢复。" 182 | fi 183 | 184 | # ======= 第六步:可选检查输出 ======= 185 | echo "== 最终分区布局(MiB) ==" 186 | sudo parted "$LOOP" unit MiB print || true 187 | 188 | # ======= 第七步:删除 tmp 并解绑 loop ======= 189 | echo "== 删除备份目录 $TMP_DIR ==" 190 | sudo rm -rf "$TMP_DIR" 191 | 192 | echo "== 解绑 loop 设备 ==" 193 | sudo losetup -d "$LOOP" || true 194 | LOOP="" 195 | 196 | echo "✅ 完成:已按顺序【备份p3→删除p3→扩p2→重建p3→恢复→清理tmp→解绑loop】" 197 | -------------------------------------------------------------------------------- /replace_file/atomiswave.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ESUDO="" 4 | 5 | if [[ $1 == "retroarch" ]]; then 6 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 7 | elif [[ $1 == "retroarch32" ]]; then 8 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 9 | elif [[ $1 == "standalone" ]]; then 10 | if [ ! -f "/usr/local/bin/flycastsakeydemon.py" ]; then 11 | sudo cp -fv /usr/local/bin/ti99keydemon.py /usr/local/bin/flycastsakeydemon.py 12 | sudo chmod 777 /usr/local/bin/flycastsakeydemon.py 13 | sudo sed -i 's/pkill ti99sim-sdl/sudo kill -9 \$(pidof flycast)/' /usr/local/bin/flycastsakeydemon.py 14 | fi 15 | sudo /usr/local/bin/flycastsakeydemon.py & 16 | rm -rf "/home/ark/.local/share/flycast" 17 | directory=$(dirname "$2" | cut -d "/" -f2) 18 | ln -sf "/$directory/bios/dc" "/home/ark/.local/share/flycast" 19 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 20 | sdl_controllerconfig="03000000091200000031000011010000,OpenSimHardware OSH PB Controller,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0~,lefty:a1~,leftstick:b8,lefttrigger:b10,rightstick:b9,back:b7,start:b6,rightx:a2,righty:a3,righttrigger:b11,platform:Linux," 21 | elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then 22 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then 23 | sdl_controllerconfig="190000004b4800000010000001010000,GO-Advance Gamepad (rev 1.1),a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftx:a0,lefty:a1,back:b12,leftstick:b13,lefttrigger:b14,rightstick:b16,righttrigger:b15,start:b17,platform:Linux," 24 | else 25 | sdl_controllerconfig="190000004b4800000010000000010000,GO-Advance Gamepad,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftx:a0,lefty:a1,back:b10,lefttrigger:b12,righttrigger:b13,start:b15,platform:Linux," 26 | fi 27 | elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then 28 | sdl_controllerconfig="190000004b4800000011000000010000,GO-Super Gamepad,x:b3,a:b0,b:b1,y:b2,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b14,rightstick:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 29 | elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then 30 | sdl_controllerconfig="190000004b4800000111000000010000,retrogame_joypad,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,rightstick:b12,leftstick:b11,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 31 | else 32 | sdl_controllerconfig="19000000030000000300000002030000,gameforce_gamepad,leftstick:b14,rightx:a3,leftshoulder:b4,start:b9,lefty:a0,dpup:b10,righty:a2,a:b0,b:b1,guide:b16,dpdown:b11,rightshoulder:b5,righttrigger:b7,rightstick:b15,dpright:b13,x:b3,back:b8,leftx:a1,y:b2,dpleft:b12,lefttrigger:b6,platform:Linux," 33 | fi 34 | LD_LIBRARY_PATH=/opt/flycastsa/libs/ SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig" /opt/flycastsa/flycast "$2" 35 | sudo killall python3 36 | sudo systemctl restart oga_events & 37 | elif [[ $1 == "retrorun" ]]; then 38 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 39 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 40 | #echo 'creating fake joypad' 41 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 42 | #sleep 0.2 43 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 44 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 45 | #sleep 0.2 46 | ESUDO="sudo --preserve-env=DEVICE_NAME" 47 | DEVICENAME="RG351V" 48 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 49 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 50 | then 51 | DEVICENAME="RG353V" 52 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 53 | then 54 | DEVICENAME="RG353M" 55 | else 56 | DEVICENAME="RG503" 57 | fi 58 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 59 | DEVICENAME="RG351MP" 60 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 61 | DEVICENAME="RG351MP" 62 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 63 | DEVICENAME="RGB10" 64 | elif [ -f "/boot/.console" ]; then 65 | DEVICENAME="RG351MP" 66 | else 67 | DEVICENAME="RG351P" 68 | fi 69 | export DEVICE_NAME="${DEVICENAME}" 70 | 71 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 72 | 73 | #if [[ ${DEVICENAME} == "RG503" ]]; then 74 | #if [[ ${CURRUMBLESET} != "event" ]]; then 75 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 76 | #fi 77 | #else 78 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 79 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 80 | #fi 81 | #fi 82 | 83 | directory=$(dirname "$3" | cut -d "/" -f2) 84 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 85 | if [[ "${CURDIRECTORYSET}" != "${directory}/atomiswave" ]]; then 86 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/atomiswave" /home/ark/.config/retrorun.cfg 87 | fi 88 | 89 | $ESUDO /usr/local/bin/retrorun -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/atomiswave -d /$directory/bios /home/ark/.config/retroarch/cores/"$2"_libretro.so "$3" 90 | 91 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 92 | #sleep 0.5 93 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 94 | #sudo kill $(pidof rg351p-js2xbox) 95 | #fi 96 | printf "\033c" >> /dev/tty1 97 | else 98 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 99 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 100 | #echo 'creating fake joypad' 101 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 102 | #sleep 0.2 103 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 104 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 105 | #sleep 0.2 106 | ESUDO="sudo --preserve-env=DEVICE_NAME" 107 | DEVICENAME="RG351V" 108 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 109 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 110 | then 111 | DEVICENAME="RG353V" 112 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 113 | then 114 | DEVICENAME="RG353M" 115 | else 116 | DEVICENAME="RG503" 117 | fi 118 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 119 | DEVICENAME="RG351MP" 120 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 121 | DEVICENAME="RG351MP" 122 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 123 | DEVICENAME="RGB10" 124 | elif [ -f "/boot/.console" ]; then 125 | DEVICENAME="RG351MP" 126 | else 127 | DEVICENAME="RG351P" 128 | fi 129 | export DEVICE_NAME="${DEVICENAME}" 130 | 131 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 132 | 133 | #if [[ ${DEVICENAME} == "RG503" ]]; then 134 | #if [[ ${CURRUMBLESET} != "event" ]]; then 135 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 136 | #fi 137 | #else 138 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 139 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 140 | #fi 141 | #fi 142 | 143 | directory=$(dirname "$3" | cut -d "/" -f2) 144 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 145 | if [[ "${CURDIRECTORYSET}" != "${directory}/atomiswave" ]]; then 146 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/atomiswave" /home/ark/.config/retrorun.cfg 147 | fi 148 | 149 | $ESUDO /usr/local/bin/retrorun32 -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/atomiswave -d /$directory/bios /home/ark/.config/retroarch32/cores/"$2"_libretro.so "$3" 150 | 151 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 152 | #sleep 0.5 153 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 154 | #sudo kill $(pidof rg351p-js2xbox) 155 | #fi 156 | printf "\033c" >> /dev/tty1 157 | fi 158 | -------------------------------------------------------------------------------- /replace_file/dreamcast.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo chmod 666 /dev/tty1 4 | ESUDO="" 5 | 6 | if [[ $1 == "retroarch" ]]; then 7 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 8 | elif [[ $1 == "retroarch32" ]]; then 9 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 10 | elif [[ $1 == "standalone" ]]; then 11 | if [ ! -f "/usr/local/bin/flycastsakeydemon.py" ]; then 12 | sudo cp -fv /usr/local/bin/ti99keydemon.py /usr/local/bin/flycastsakeydemon.py 13 | sudo chmod 777 /usr/local/bin/flycastsakeydemon.py 14 | sudo sed -i 's/pkill ti99sim-sdl/sudo kill -9 \$(pidof flycast)/' /usr/local/bin/flycastsakeydemon.py 15 | fi 16 | sudo /usr/local/bin/flycastsakeydemon.py & 17 | rm -rf "/home/ark/.local/share/flycast" 18 | directory=$(dirname "$2" | cut -d "/" -f2) 19 | ln -sf "/$directory/bios/dc" "/home/ark/.local/share/flycast" 20 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 21 | sdl_controllerconfig="03000000091200000031000011010000,OpenSimHardware OSH PB Controller,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0~,lefty:a1~,leftstick:b8,lefttrigger:b10,rightstick:b9,back:b7,start:b6,rightx:a2,righty:a3,righttrigger:b11,platform:Linux," 22 | elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then 23 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then 24 | sdl_controllerconfig="190000004b4800000010000001010000,GO-Advance Gamepad (rev 1.1),a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftx:a0,lefty:a1,back:b12,leftstick:b13,lefttrigger:b14,rightstick:b16,righttrigger:b15,start:b17,platform:Linux," 25 | else 26 | sdl_controllerconfig="190000004b4800000010000000010000,GO-Advance Gamepad,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftx:a0,lefty:a1,back:b10,lefttrigger:b12,righttrigger:b13,start:b15,platform:Linux," 27 | fi 28 | elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then 29 | sdl_controllerconfig="190000004b4800000011000000010000,GO-Super Gamepad,x:b3,a:b0,b:b1,y:b2,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b14,rightstick:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 30 | elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then 31 | sdl_controllerconfig="190000004b4800000111000000010000,retrogame_joypad,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,rightstick:b12,leftstick:b11,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 32 | else 33 | sdl_controllerconfig="19000000030000000300000002030000,gameforce_gamepad,leftstick:b14,rightx:a3,leftshoulder:b4,start:b9,lefty:a0,dpup:b10,righty:a2,a:b0,b:b1,guide:b16,dpdown:b11,rightshoulder:b5,righttrigger:b7,rightstick:b15,dpright:b13,x:b3,back:b8,leftx:a1,y:b2,dpleft:b12,lefttrigger:b6,platform:Linux," 34 | fi 35 | LD_LIBRARY_PATH=/opt/flycastsa/libs/ SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig" /opt/flycastsa/flycast "$2" 36 | sudo killall python3 37 | sudo systemctl restart oga_events & 38 | elif [[ $1 == "retrorun" ]]; then 39 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 40 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 41 | #echo 'creating fake joypad' 42 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 43 | #sleep 0.2 44 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 45 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 46 | #sleep 0.2 47 | ESUDO="sudo --preserve-env=DEVICE_NAME" 48 | DEVICENAME="RG351V" 49 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 50 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 51 | then 52 | DEVICENAME="RG353V" 53 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 54 | then 55 | DEVICENAME="RG353M" 56 | else 57 | DEVICENAME="RG503" 58 | fi 59 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 60 | DEVICENAME="RG351MP" 61 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 62 | DEVICENAME="RG351MP" 63 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 64 | DEVICENAME="RGB10" 65 | elif [ -f "/boot/.console" ]; then 66 | DEVICENAME="RG351MP" 67 | else 68 | DEVICENAME="RG351P" 69 | fi 70 | export DEVICE_NAME="${DEVICENAME}" 71 | 72 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 73 | 74 | #if [[ ${DEVICENAME} == "RG503" ]]; then 75 | #if [[ ${CURRUMBLESET} != "event" ]]; then 76 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 77 | #fi 78 | #else 79 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 80 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 81 | #fi 82 | #fi 83 | 84 | directory=$(dirname "$3" | cut -d "/" -f2) 85 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 86 | if [[ "${CURDIRECTORYSET}" != "${directory}/dreamcast" ]]; then 87 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/dreamcast" /home/ark/.config/retrorun.cfg 88 | fi 89 | 90 | $ESUDO /usr/local/bin/retrorun -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/dreamcast -d /$directory/bios /home/ark/.config/retroarch/cores/"$2"_libretro.so "$3" 91 | 92 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 93 | #sleep 0.5 94 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 95 | #sudo kill $(pidof rg351p-js2xbox) 96 | #fi 97 | printf "\033c" >> /dev/tty1 98 | else 99 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 100 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 101 | #echo 'creating fake joypad' 102 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 103 | #sleep 0.2 104 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 105 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 106 | #sleep 0.2 107 | ESUDO="sudo --preserve-env=DEVICE_NAME" 108 | DEVICENAME="RG351V" 109 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 110 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 111 | then 112 | DEVICENAME="RG353V" 113 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 114 | then 115 | DEVICENAME="RG353M" 116 | else 117 | DEVICENAME="RG503" 118 | fi 119 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 120 | DEVICENAME="RG351MP" 121 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 122 | DEVICENAME="RG351MP" 123 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 124 | DEVICENAME="RGB10" 125 | elif [ -f "/boot/.console" ]; then 126 | DEVICENAME="RG351MP" 127 | else 128 | DEVICENAME="RG351P" 129 | fi 130 | export DEVICE_NAME="${DEVICENAME}" 131 | 132 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 133 | 134 | #if [[ ${DEVICENAME} == "RG503" ]]; then 135 | #if [[ ${CURRUMBLESET} != "event" ]]; then 136 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 137 | #fi 138 | #else 139 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 140 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 141 | #fi 142 | #fi 143 | 144 | directory=$(dirname "$3" | cut -d "/" -f2) 145 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 146 | if [[ "${CURDIRECTORYSET}" != "${directory}/dreamcast" ]]; then 147 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/dreamcast" /home/ark/.config/retrorun.cfg 148 | fi 149 | 150 | $ESUDO /usr/local/bin/retrorun32 -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/dreamcast -d /$directory/bios /home/ark/.config/retroarch32/cores/"$2"_libretro.so "$3" 151 | 152 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 153 | #sleep 0.5 154 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 155 | #sudo kill $(pidof rg351p-js2xbox) 156 | #fi 157 | printf "\033c" >> /dev/tty1 158 | fi 159 | -------------------------------------------------------------------------------- /replace_file/es_input.cfg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /replace_file/n64.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -f "/boot/rk3326-rg351v-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ] || [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-gameforce-linux.dtb" ] || [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ] || [ -f "/boot/.console" ] ; then 4 | xres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f1)" 5 | yres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f2)" 6 | else 7 | xres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f2)" 8 | yres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f1)" 9 | fi 10 | 11 | if [ "$#" -gt 2 ]; then 12 | game="${3}" 13 | else 14 | game="${2}" 15 | fi 16 | 17 | # The standalone mupen64plus emulator doesn not support 7z or zip archive files. We'll take care of that here 18 | ext="${game##*.}" 19 | if ([[ "${ext,,}" == "zip" ]] || [[ "${ext,,}" == "7z" ]]) && [[ $1 == *"standalone"* ]]; then 20 | if [ ! -d "/dev/shm/n64roms" ]; then 21 | mkdir -p /dev/shm/n64roms 22 | else 23 | rm -rf /dev/shm/n64roms/* 24 | fi 25 | # game variable will be updated with the file that is found in the 7z or zip archive 26 | ROM="$game" 27 | if [[ "${ext,,}" == "zip" ]]; then 28 | unzip -qq -o "$ROM" -d /dev/shm/n64roms/ 29 | else 30 | 7z e "$ROM" -bd -aoa -o/dev/shm/n64roms/ 31 | fi 32 | if [ $? != 0 ]; then 33 | printf "\nCouldn't decompress $ROM\nSomething seems to be wrong with this archive." > /dev/tty1 34 | sleep 5 35 | printf "\033c" > /dev/tty1 36 | exit 37 | fi 38 | 39 | for CART in z64 Z64 n64 N64 v64 V64; do 40 | game=`find /dev/shm/n64roms/ -iname "*.${CART}" | tac | head -n 1` 41 | if [ ! -z "$game" ]; then 42 | break; 43 | fi 44 | done 45 | if [ -z "$game" ]; then 46 | printf "\nCouldn't find a compatible rom of type .z64 .Z64 .n64 .N64 .v64 .V64 in $ROM\n" > /dev/tty1 47 | sleep 5 48 | printf "\033c" > /dev/tty1 49 | exit 50 | fi 51 | fi 52 | 53 | if [[ $1 == "standalone-Rice" ]]; then 54 | if [[ $2 == "Widescreen_Aspect" ]]; then 55 | /opt/mupen64plus/mupen64plus --resolution "${xres}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-rice.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 56 | else 57 | ricewidthhack=$(((yres * 4) / 3)) 58 | /opt/mupen64plus/mupen64plus --resolution "${ricewidthhack}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-rice.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 59 | fi 60 | elif [[ $1 == "standalone-Glide64mk2" ]]; then 61 | if [[ $2 == "Widescreen_Aspect" ]]; then 62 | /opt/mupen64plus/mupen64plus --set Video-Glide64mk2[aspect]=1 --resolution "${xres}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-glide64mk2.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 63 | else 64 | /opt/mupen64plus/mupen64plus --set Video-Glide64mk2[aspect]=-1 --resolution "${xres}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-glide64mk2.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 65 | fi 66 | elif [[ $1 == "standalone-GlideN64" ]]; then 67 | if [[ $2 == "Widescreen_Aspect" ]]; then 68 | /opt/mupen64plus/mupen64plus --set Video-GLideN64[ThreadedVideo]=True --set Video-GLideN64[UseNativeResolutionFactor]=1 --set Video-GLideN64[AspectRatio]=3 --resolution "${xres}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-GLideN64.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 69 | else 70 | /opt/mupen64plus/mupen64plus --set Video-GLideN64[ThreadedVideo]=True --set Video-GLideN64[UseNativeResolutionFactor]=1 --set Video-GLideN64[AspectRatio]=1 --resolution "${xres}x${yres}" --plugindir /opt/mupen64plus --gfx mupen64plus-video-GLideN64.so --corelib /opt/mupen64plus/libmupen64plus.so.2 --datadir /opt/mupen64plus "$game" 71 | fi 72 | else 73 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 74 | fi 75 | 76 | -------------------------------------------------------------------------------- /replace_file/naomi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ESUDO="" 4 | 5 | if [[ $1 == "retroarch" ]]; then 6 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 7 | elif [[ $1 == "retroarch32" ]]; then 8 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 9 | elif [[ $1 == "standalone" ]]; then 10 | if [ ! -f "/usr/local/bin/flycastsakeydemon.py" ]; then 11 | sudo cp -fv /usr/local/bin/ti99keydemon.py /usr/local/bin/flycastsakeydemon.py 12 | sudo chmod 777 /usr/local/bin/flycastsakeydemon.py 13 | sudo sed -i 's/pkill ti99sim-sdl/sudo kill -9 \$(pidof flycast)/' /usr/local/bin/flycastsakeydemon.py 14 | fi 15 | sudo /usr/local/bin/flycastsakeydemon.py & 16 | rm -rf "/home/ark/.local/share/flycast" 17 | directory=$(dirname "$2" | cut -d "/" -f2) 18 | ln -sf "/$directory/bios/dc" "/home/ark/.local/share/flycast" 19 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 20 | sdl_controllerconfig="03000000091200000031000011010000,OpenSimHardware OSH PB Controller,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0~,lefty:a1~,leftstick:b8,lefttrigger:b10,rightstick:b9,back:b7,start:b6,rightx:a2,righty:a3,righttrigger:b11,platform:Linux," 21 | elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then 22 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then 23 | sdl_controllerconfig="190000004b4800000010000001010000,GO-Advance Gamepad (rev 1.1),a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftx:a0,lefty:a1,back:b12,leftstick:b13,lefttrigger:b14,rightstick:b16,righttrigger:b15,start:b17,platform:Linux," 24 | else 25 | sdl_controllerconfig="190000004b4800000010000000010000,GO-Advance Gamepad,a:b0,b:b1,x:b3,y:b2,leftshoulder:b4,rightshoulder:b5,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftx:a0,lefty:a1,back:b10,lefttrigger:b12,righttrigger:b13,start:b15,platform:Linux," 26 | fi 27 | elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then 28 | sdl_controllerconfig="190000004b4800000011000000010000,GO-Super Gamepad,x:b3,a:b0,b:b1,y:b2,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b14,rightstick:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 29 | elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then 30 | sdl_controllerconfig="190000004b4800000111000000010000,retrogame_joypad,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,rightstick:b12,leftstick:b11,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," 31 | else 32 | sdl_controllerconfig="19000000030000000300000002030000,gameforce_gamepad,leftstick:b14,rightx:a3,leftshoulder:b4,start:b9,lefty:a0,dpup:b10,righty:a2,a:b0,b:b1,guide:b16,dpdown:b11,rightshoulder:b5,righttrigger:b7,rightstick:b15,dpright:b13,x:b3,back:b8,leftx:a1,y:b2,dpleft:b12,lefttrigger:b6,platform:Linux," 33 | fi 34 | LD_LIBRARY_PATH=/opt/flycastsa/libs/ SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig" /opt/flycastsa/flycast "$2" 35 | sudo killall python3 36 | sudo systemctl restart oga_events & 37 | elif [[ $1 == "retrorun" ]]; then 38 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 39 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 40 | #echo 'creating fake joypad' 41 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 42 | #sleep 0.2 43 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 44 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 45 | #sleep 0.2 46 | ESUDO="sudo --preserve-env=DEVICE_NAME" 47 | DEVICENAME="RG351V" 48 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 49 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 50 | then 51 | DEVICENAME="RG353V" 52 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 53 | then 54 | DEVICENAME="RG353M" 55 | else 56 | DEVICENAME="RG503" 57 | fi 58 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 59 | DEVICENAME="RG351MP" 60 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 61 | DEVICENAME="RG351MP" 62 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 63 | DEVICENAME="RGB10" 64 | elif [ -f "/boot/.console" ]; then 65 | DEVICENAME="RG351MP" 66 | else 67 | DEVICENAME="RG351P" 68 | fi 69 | export DEVICE_NAME="${DEVICENAME}" 70 | 71 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 72 | 73 | #if [[ ${DEVICENAME} == "RG503" ]]; then 74 | #if [[ ${CURRUMBLESET} != "event" ]]; then 75 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 76 | #fi 77 | #else 78 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 79 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 80 | #fi 81 | #fi 82 | 83 | directory=$(dirname "$3" | cut -d "/" -f2) 84 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 85 | if [[ "${CURDIRECTORYSET}" != "${directory}/naomi" ]]; then 86 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/naomi" /home/ark/.config/retrorun.cfg 87 | fi 88 | $ESUDO /usr/local/bin/retrorun -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/naomi -d /$directory/bios /home/ark/.config/retroarch/cores/"$2"_libretro.so "$3" 89 | 90 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 91 | #sleep 0.5 92 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 93 | #sudo kill $(pidof rg351p-js2xbox) 94 | #fi 95 | printf "\033c" >> /dev/tty1 96 | else 97 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 98 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 99 | #echo 'creating fake joypad' 100 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 101 | #sleep 0.2 102 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 103 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 104 | #sleep 0.2 105 | ESUDO="sudo --preserve-env=DEVICE_NAME" 106 | DEVICENAME="RG351V" 107 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 108 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 109 | then 110 | DEVICENAME="RG353V" 111 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 112 | then 113 | DEVICENAME="RG353M" 114 | else 115 | DEVICENAME="RG503" 116 | fi 117 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 118 | DEVICENAME="RG351MP" 119 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 120 | DEVICENAME="RG351MP" 121 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 122 | DEVICENAME="RGB10" 123 | elif [ -f "/boot/.console" ]; then 124 | DEVICENAME="RG351MP" 125 | else 126 | DEVICENAME="RG351P" 127 | fi 128 | export DEVICE_NAME="${DEVICENAME}" 129 | 130 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 131 | 132 | #if [[ ${DEVICENAME} == "RG503" ]]; then 133 | #if [[ ${CURRUMBLESET} != "event" ]]; then 134 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 135 | #fi 136 | #else 137 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 138 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 139 | #fi 140 | #fi 141 | 142 | directory=$(dirname "$3" | cut -d "/" -f2) 143 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 144 | if [[ "${CURDIRECTORYSET}" != "${directory}/naomi" ]]; then 145 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/naomi" /home/ark/.config/retrorun.cfg 146 | fi 147 | 148 | $ESUDO /usr/local/bin/retrorun32 -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/naomi -d /$directory/bios /home/ark/.config/retroarch32/cores/"$2"_libretro.so "$3" 149 | 150 | #if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 151 | #sleep 0.5 152 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 153 | #sudo kill $(pidof rg351p-js2xbox) 154 | #fi 155 | printf "\033c" >> /dev/tty1 156 | fi 157 | -------------------------------------------------------------------------------- /replace_file/ogage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lcdyk0517/arkos4clone/65f794eef9ed32a7d1960d80f209948aabf6000b/replace_file/ogage -------------------------------------------------------------------------------- /replace_file/pico8.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | res="480,320" 4 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 5 | param_device="anbernic" 6 | if [ -f "/boot/rk3326-rg351v-linux.dtb" ]; then 7 | res="640,480" 8 | fi 9 | elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then 10 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then 11 | param_device="oga" 12 | else 13 | param_device="rk2020" 14 | fi 15 | elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then 16 | param_device="ogs" 17 | res="854,480" 18 | if [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 19 | res="640,480" 20 | fi 21 | elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then 22 | param_device="rg503" 23 | xres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f1)" 24 | yres="$(cat /sys/class/graphics/fb0/modes | grep -o -P '(?<=:).*(?=p-)' | cut -dx -f2)" 25 | res="${xres},${yres}" 26 | else 27 | param_device="chi" 28 | res="640,480" 29 | fi 30 | if [[ -f "/boot/.console" ]]; then 31 | CUR_VAL="$(tr -d '\r\n' < "/boot/.console" || true)" 32 | if [[ "$CUR_VAL" == "r36max" || "$CUR_VAL" == "xf40h" || "$CUR_VAL" == "xf40v" || "$CUR_VAL" == "r36ultra" || "$CUR_VAL" == "r36splus" ]]; then 33 | res="720,720" 34 | elif [[ "$CUR_VAL" == "r46h" ]]; then 35 | res="1024,768" 36 | else 37 | res="640,480" 38 | fi 39 | fi 40 | 41 | directory="$(dirname "$2" | cut -d "/" -f2)" 42 | basefile="$(basename -- "$2")" 43 | basefilenoext="${basefile%.*}" 44 | 45 | . /usr/local/bin/buttonmon.sh 46 | 47 | if [[ ! -f "/$directory/pico-8/sdl_controllers.txt" ]]; then 48 | echo "19000000030000000300000002030000,gameforce_gamepad,leftstick:b14,rightx:a3,leftshoulder:b4,start:b9,lefty:a0,dpup:b10,righty:a2,a:b1,b:b0,guide:b16,dpdown:b11,rightshoulder:b5,righttrigger:b7,rightstick:b15,dpright:b13,x:b2,back:b8,leftx:a1,y:b3,dpleft:b12,lefttrigger:b6,platform:Linux, 49 | 190000004b4800000010000000010000,GO-Advance Gamepad,a:b1,b:b0,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:b7,dpleft:b8,dpright:b9,dpup:b6,leftx:a0,lefty:a1,guide:b10,leftstick:b12,lefttrigger:b11,rightstick:b13,righttrigger:b14,start:b15,platform:Linux, 50 | 190000004b4800000010000001010000,GO-Advance Gamepad (rev 1.1),a:b1,b:b0,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,leftx:a0,lefty:a1,guide:b12,leftstick:b14,lefttrigger:b13,rightstick:b15,righttrigger:b16,start:b17,platform:Linux, 51 | 190000004b4800000011000000010000,GO-Super Gamepad,x:b2,a:b1,b:b0,y:b3,back:b12,start:b13,dpleft:b10,dpdown:b9,dpright:b11,dpup:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b14,rightstick:b15,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux, 52 | 03000000091200000031000011010000,OpenSimHardware OSH PB Controller,a:b1,b:b0,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftstick:b14,lefttrigger:b13,rightstick:b15,righttrigger:b16,leftx:a0~,lefty:a1~,start:b6,platform:Linux, 53 | 190000004b4800000111000000010000,retrogame_joypad,a:b1,b:b0,x:b2,y:b3,back:b8,start:b9,rightstick:b12,leftstick:b11,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Linux," > /$directory/pico-8/sdl_controllers.txt 54 | fi 55 | 56 | if [[ -f "/$directory/pico-8/pico8_64" ]]; then 57 | pico8executable=pico8_64 58 | elif [[ -f "/$directory/pico-8/pico8_dyn" ]]; then 59 | pico8executable=pico8_dyn 60 | fi 61 | 62 | LaunchFake08() { 63 | 64 | if [[ ! -f "/$directory/pico-8/fake08.gptk" ]]; then 65 | cp /opt/fake08/fake08.gptk /$directory/pico-8/fake08.gptk 66 | fi 67 | if [[ ${basefilenoext,,} == "zzzsplore" ]]; then 68 | printf "\033c" >> /dev/tty1 69 | printf "\033[1;33m" >> /dev/tty1 70 | printf "\n Sorry, splore is not available with the Fake08 emulator." >> /dev/tty1 71 | sleep 5 72 | printf "\033[0m" >> /dev/tty1 73 | printf "\033c" >> /dev/tty1 74 | exit 1 75 | fi 76 | 77 | 78 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]] || [[ -e "/dev/input/by-path/platform-gameforce-gamepad-event-joystick" ]]; then 79 | export HOTKEY="l3" 80 | fi 81 | 82 | sudo chmod 666 /dev/uinput 83 | cd /opt/fake08 84 | 85 | sudo systemctl stop pico8hotkey 86 | export FAKE08_HOME="/home/ark/.config" 87 | export FAKE08_PICO8DIR="/$directory/pico-8" 88 | export SDL_GAMECONTROLLERCONFIG_FILE="./gamecontrollerdb.txt" 89 | ./gptokeyb -1 "fake08" -c "/$directory/pico-8/fake08.gptk" & 90 | ./fake08 "$1" 91 | unset SDL_GAMECONTROLLERCONFIG_FILE 92 | sudo kill -9 $(pidof gptokeyb) 93 | sudo systemctl restart oga_events & 94 | printf "\033c" >> /dev/tty1 95 | exit 0 96 | } 97 | 98 | if [[ $1 == "retroarch" ]]; then 99 | if [[ ${basefilenoext,,} == "zzzsplore" ]]; then 100 | printf "\033c" >> /dev/tty1 101 | printf "\033[1;33m" >> /dev/tty1 102 | printf "\n Sorry, splore is not available with the Fake08 retroarch emulator." >> /dev/tty1 103 | sleep 5 104 | printf "\033[0m" >> /dev/tty1 105 | printf "\033c" >> /dev/tty1 106 | exit 1 107 | fi 108 | filename="$2" 109 | ext="${filename##*.}" 110 | if [[ "$ext" == "png" ]] || [[ "$ext" == "PNG" ]]; then 111 | sed -i '/builtin_imageviewer_enable \= "true"/c\builtin_imageviewer_enable \= "false"' /home/ark/.config/retroarch/retroarch.cfg 112 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/fake08_libretro.so "$2" 113 | else 114 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/fake08_libretro.so "$2" 115 | fi 116 | exit 0 117 | fi 118 | 119 | if [[ $1 == "fake08" ]]; then 120 | LaunchFake08 "$2" 121 | elif [[ ! -f "/$directory/pico-8/$pico8executable" ]] && [[ "$1" != *"retroarch"* ]]; then 122 | printf "\033c" >> /dev/tty1 123 | printf "\033[1;33m" >> /dev/tty1 124 | msgbox "I don't detect a pico8_dyn or pico8_64 file in the /$directory/pico-8 folder. \ 125 | Please place your purchased pico-8 files in this location and try to launch your cart \ 126 | again. For now, this game will be launched using the Fake08 emulator. Press A to continue." 127 | printf "\033[0m" >> /dev/tty1 128 | LaunchFake08 "$2" 129 | elif [[ ! -f "/$directory/pico-8/pico8.dat" ]] && [[ "$1" != *"retroarch"* ]]; then 130 | printf "\033c" >> /dev/tty1 131 | printf "\033[1;33m" >> /dev/tty1 132 | msgbox "I don't detect a pico8.dat file in the /$directory/pico-8 folder. Please place \ 133 | your purchased pico-8 files in this location and try to launch your cart again. For now, \ 134 | this game will be launched using the Fake08 emulator. Press A to continue." 135 | printf "\033[0m" >> /dev/tty1 136 | LaunchFake08 "$2" 137 | fi 138 | 139 | sudo /opt/quitter/oga_controls $pico8executable $param_device & 140 | 141 | if [ ! -d "/opt/pico-8/bbs" ]; then 142 | mkdir -p /opt/pico-8/bbs 143 | fi 144 | 145 | unlink /opt/pico-8/bbs/carts 146 | if [[ "/opt/pico-8/carts" == "$(realpath --canonicalize-existing /opt/pico-8/carts)" ]]; then 147 | rm -rf /opt/pico-8/carts 148 | fi 149 | unlink /opt/pico-8/carts 150 | ln -sf /$directory/pico-8/favourites.txt /opt/pico-8/favourites.txt 151 | ln -sf /$directory/pico-8/sdl_controllers.txt /opt/pico-8/sdl_controllers.txt 152 | ln -sf /$directory/pico-8/carts /opt/pico-8/bbs/carts 153 | ln -sf /$directory/pico-8/carts /opt/pico-8/carts 154 | 155 | Test_Button_B 156 | if [ "$?" -eq "10" ]; then 157 | printf "\n Starting splore. Please wait..." >> /dev/tty1 158 | touch /dev/shm/Splore_Loaded 159 | if [[ $1 == "float-scaled" ]]; then 160 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 161 | elif [[ $1 == "pixel-perfect" ]]; then 162 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -pixel_perfect 1 163 | elif [[ $1 == "full-screen" ]]; then 164 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -draw_rect 0,0,$res 165 | fi 166 | rm /dev/shm/Splore_Loaded 167 | 168 | printf "\033[0m" >> /dev/tty1 169 | #mv -f /$directory/pico-8/bbs/carts/*.png /$directory/pico-8/carts/ 170 | #mv -f /$directory/pico-8/bbs/carts/*.PNG /$directory/pico-8/carts/ 171 | #mv -f /$directory/pico-8/bbs/carts/*.p8 /$directory/pico-8/carts/ 172 | #mv -f /$directory/pico-8/bbs/carts/*.P8 /$directory/pico-8/carts/ 173 | 174 | if [[ ! -z $(pidof oga_controls) ]]; then 175 | sudo kill -9 $(pidof oga_controls) 176 | fi 177 | sudo systemctl restart oga_events & 178 | exit 0 179 | fi 180 | 181 | if [[ $1 == "float-scaled" ]]; then 182 | if [[ ${basefilenoext,,} == "zzzsplore" ]]; then 183 | touch /dev/shm/Splore_Loaded 184 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 185 | rm /dev/shm/Splore_Loaded 186 | else 187 | /$directory/pico-8/$pico8executable -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -run "$2" 188 | fi 189 | elif [[ $1 == "pixel-perfect" ]]; then 190 | if [[ ${basefilenoext,,} == "zzzsplore" ]]; then 191 | touch /dev/shm/Splore_Loaded 192 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -pixel_perfect 1 193 | rm /dev/shm/Splore_Loaded 194 | else 195 | /$directory/pico-8/$pico8executable -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -pixel_perfect 1 -run "$2" 196 | fi 197 | elif [[ $1 == "full-screen" ]]; then 198 | if [[ ${basefilenoext,,} == "zzzsplore" ]]; then 199 | touch /dev/shm/Splore_Loaded 200 | /$directory/pico-8/$pico8executable -splore -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -draw_rect 0,0,$res 201 | rm /dev/shm/Splore_Loaded 202 | else 203 | /$directory/pico-8/$pico8executable -home /opt/pico-8/ -root_path /$directory/pico-8/carts/ -joystick 0 -draw_rect 0,0,$res -run "$2" 204 | fi 205 | fi 206 | 207 | if [[ ! -z $(pidof oga_controls) ]]; then 208 | sudo kill -9 $(pidof oga_controls) 209 | fi 210 | sudo systemctl restart oga_events & 211 | 212 | #mv -f /$directory/pico-8/bbs/carts/*.png /$directory/pico-8/carts/ 213 | #mv -f /$directory/pico-8/bbs/carts/*.PNG /$directory/pico-8/carts/ 214 | #mv -f /$directory/pico-8/bbs/carts/*.p8 /$directory/pico-8/carts/ 215 | #mv -f /$directory/pico-8/bbs/carts/*.P8 /$directory/pico-8/carts/ 216 | 217 | -------------------------------------------------------------------------------- /replace_file/saturn.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ESUDO="" 4 | 5 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 6 | param_device="anbernic" 7 | elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then 8 | if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then 9 | param_device="oga" 10 | else 11 | param_device="rk2020" 12 | fi 13 | elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then 14 | param_device="ogs" 15 | elif [[ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ]]; then 16 | param_device="rg503" 17 | else 18 | param_device="chi" 19 | fi 20 | 21 | if [[ $1 == *"standalone"* ]]; then 22 | directory=$(dirname "$2" | cut -d "/" -f2) 23 | if [[ ! -d "/$directory/saturn/yabasanshiro" ]]; then 24 | mkdir /$directory/saturn/yabasanshiro 25 | fi 26 | cd /opt/yabasanshiro 27 | if [[ ! -f "input.cfg" ]]; then 28 | if [[ -f "keymapv2.json" ]]; then 29 | rm -f keymapv2.json 30 | fi 31 | cp -f /etc/emulationstation/es_input.cfg input.cfg 32 | fi 33 | sudo /opt/quitter/oga_controls yaba $param_device & 34 | if [[ $1 == "standalone-bios" ]]; then 35 | if [[ ! -f "/$directory/bios/saturn_bios.bin" ]]; then 36 | printf "\033c" >> /dev/tty1 37 | printf "\033[1;33m" >> /dev/tty1 38 | printf "\n I don't detect a saturn_bios.bin bios file in the" >> /dev/tty1 39 | printf "\n /$directory/bios folder. Either place one in that" >> /dev/tty1 40 | printf "\n location or switch to the standalone-nobios emulator." >> /dev/tty1 41 | sleep 10 42 | printf "\033[0m" >> /dev/tty1 43 | else 44 | ./yabasanshiro -r 3 -i "$2" -b /$directory/bios/saturn_bios.bin 45 | fi 46 | else 47 | ./yabasanshiro -r 3 -i "$2" 48 | fi 49 | if [[ ! -z $(pidof oga_controls) ]]; then 50 | sudo kill -9 $(pidof oga_controls) 51 | fi 52 | sudo systemctl restart oga_events & 53 | cd ~ 54 | elif [[ $1 == "retroarch" ]]; then 55 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 56 | elif [[ $1 == "retroarch32" ]]; then 57 | /usr/local/bin/"$1" -L /home/ark/.config/"$1"/cores/"$2"_libretro.so "$3" 58 | elif [[ $1 == "retrorun" ]]; then 59 | directory=$(dirname "$3" | cut -d "/" -f2) 60 | if [[ ! -f "/$directory/bios/saturn_bios.bin" ]]; then 61 | printf "\033c" >> /dev/tty1 62 | printf "\033[1;33m" >> /dev/tty1 63 | printf "\n I don't detect a saturn_bios.bin bios file in the" >> /dev/tty1 64 | printf "\n /$directory/bios folder. Either place one in that" >> /dev/tty1 65 | printf "\n location or switch to the standalone-nobios emulator." >> /dev/tty1 66 | sleep 10 67 | printf "\033[0m" >> /dev/tty1 68 | fi 69 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 70 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 71 | #echo 'creating fake joypad' 72 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 73 | #sleep 0.2 74 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 75 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 76 | #sleep 0.2 77 | ESUDO="sudo --preserve-env=DEVICE_NAME" 78 | DEVICENAME="RG351V" 79 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 80 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 81 | then 82 | DEVICENAME="RG353V" 83 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 84 | then 85 | DEVICENAME="RG353M" 86 | else 87 | DEVICENAME="RG503" 88 | fi 89 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 90 | DEVICENAME="RG351MP" 91 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 92 | DEVICENAME="RG351MP" 93 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 94 | DEVICENAME="RGB10" 95 | elif [ -f "/boot/.console" ]; then 96 | DEVICENAME="RG351MP" 97 | else 98 | DEVICENAME="RG351P" 99 | fi 100 | export DEVICE_NAME="${DEVICENAME}" 101 | 102 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 103 | 104 | #if [[ ${DEVICENAME} == "RG503" ]]; then 105 | #if [[ ${CURRUMBLESET} != "event" ]]; then 106 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 107 | #fi 108 | #else 109 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 110 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 111 | #fi 112 | #fi 113 | 114 | directory=$(dirname "$3" | cut -d "/" -f2) 115 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 116 | if [[ "${CURDIRECTORYSET}" != "${directory}/saturn" ]]; then 117 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/saturn" /home/ark/.config/retrorun.cfg 118 | fi 119 | 120 | $ESUDO /usr/local/bin/retrorun -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/saturn -d /$directory/bios /home/ark/.config/retroarch/cores/"$2"_libretro.so "$3" 121 | 122 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 123 | sleep 0.5 124 | sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 125 | sudo kill $(pidof rg351p-js2xbox) 126 | fi 127 | else 128 | directory=$(dirname "$3" | cut -d "/" -f2) 129 | if [[ ! -f "/$directory/bios/saturn_bios.bin" ]]; then 130 | printf "\033c" >> /dev/tty1 131 | printf "\033[1;33m" >> /dev/tty1 132 | printf "\n I don't detect a saturn_bios.bin bios file in the" >> /dev/tty1 133 | printf "\n /$directory/bios folder. Either place one in that" >> /dev/tty1 134 | printf "\n location or switch to the standalone-nobios emulator." >> /dev/tty1 135 | sleep 10 136 | printf "\033[0m" >> /dev/tty1 137 | fi 138 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 139 | #sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick || true 140 | #echo 'creating fake joypad' 141 | #sudo /usr/local/bin/rg351p-js2xbox --silent -t oga_joypad & 142 | #sleep 0.2 143 | #sudo ln -s /dev/input/event4 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 144 | #sudo chmod 777 /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 145 | #sleep 0.2 146 | ESUDO="sudo --preserve-env=DEVICE_NAME" 147 | DEVICENAME="RG351V" 148 | elif [ -f "/boot/rk3566.dtb" ] || [ -f "/boot/rk3566-OC.dtb" ]; then 149 | if test ! -z "$(grep "RG353V" /home/ark/.config/.DEVICE | tr -d '\0')" 150 | then 151 | DEVICENAME="RG353V" 152 | elif test ! -z "$(grep "RG353M" /home/ark/.config/.DEVICE | tr -d '\0')" 153 | then 154 | DEVICENAME="RG353M" 155 | else 156 | DEVICENAME="RG503" 157 | fi 158 | elif [ -f "/boot/rk3326-r33s-linux.dtb" ] || [ -f "/boot/rk3326-r35s-linux.dtb" ] || [ -f "/boot/rk3326-r36s-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 159 | DEVICENAME="RG351MP" 160 | elif [ -f "/boot/rk3326-gameforce-linux.dtb" ]; then 161 | DEVICENAME="RG351MP" 162 | elif [ -f "/boot/rk3326-odroidgo2-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo2-linux-v11.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ]; then 163 | DEVICENAME="RGB10" 164 | elif [ -f "/boot/.console" ]; then 165 | DEVICENAME="RG351MP" 166 | else 167 | DEVICENAME="RG351P" 168 | fi 169 | export DEVICE_NAME="${DEVICENAME}" 170 | 171 | #CURRUMBLESET="$(grep "retrorun_rumble_type = " /home/ark/.config/retrorun.cfg | cut -c24-)" 172 | 173 | #if [[ ${DEVICENAME} == "RG503" ]]; then 174 | #if [[ ${CURRUMBLESET} != "event" ]]; then 175 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= event" /home/ark/.config/retrorun.cfg 176 | #fi 177 | #else 178 | #if [[ ${CURRUMBLESET} != "pwm" ]]; then 179 | #sed -i "/retrorun_rumble_type \=/c\retrorun_rumble_type \= pwm" /home/ark/.config/retrorun.cfg 180 | #fi 181 | #fi 182 | 183 | directory=$(dirname "$3" | cut -d "/" -f2) 184 | CURDIRECTORYSET="$(grep "retrorun_screenshot_folder = " /home/ark/.config/retrorun.cfg | cut -d "/" -f2-3)" 185 | if [[ "${CURDIRECTORYSET}" != "${directory}/saturn" ]]; then 186 | sed -i "/retrorun_screenshot_folder \=/c\retrorun_screenshot_folder \= \/$directory\/saturn" /home/ark/.config/retrorun.cfg 187 | fi 188 | 189 | $ESUDO /usr/local/bin/retrorun32 -c /home/ark/.config/retrorun.cfg --triggers -s /$directory/saturn -d /$directory/bios /home/ark/.config/retroarch32/cores/"$2"_libretro.so "$3" 190 | 191 | if [[ -e "/dev/input/by-path/platform-ff300000.usb-usb-0:1.2:1.0-event-joystick" ]]; then 192 | sleep 0.5 193 | sudo rm /dev/input/by-path/platform-odroidgo2-joypad-event-joystick 194 | sudo kill $(pidof rg351p-js2xbox) 195 | fi 196 | fi 197 | -------------------------------------------------------------------------------- /sh/clone.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | # =============== DTB -> LABEL 映射(按你的表)=============== 5 | # 从 /boot/boot.ini 中匹配:load mmc 1:1 ${dtb_loadaddr} 6 | BOOTINI="/boot/boot.ini" 7 | DTB="" 8 | if [[ -r "$BOOTINI" ]]; then 9 | # 容忍失败:整条管道最后加 || true 10 | DTB="$(grep -oE 'load[[:space:]]+mmc[[:space:]]+1:1[[:space:]]+\$\{dtb_loadaddr\}[[:space:]]+[[:graph:]]+' "$BOOTINI" \ 11 | | awk '{print $NF}' | tail -n1 | xargs -r basename || true)" 12 | else 13 | warn "boot.ini not readable: $BOOTINI" 14 | fi 15 | declare -A dtb2label=( 16 | [rk3326-mymini-linux.dtb]=mymini 17 | [rk3326-xf35h-linux.dtb]=xf35h 18 | [rk3326-xf36pro-linux.dtb]=r36pro 19 | [rk3326-k36s-linux.dtb]=k36s 20 | [rk3326-hg36-linux.dtb]=hg36 21 | [rk3326-rx6h-linux.dtb]=rx6h 22 | [rk3326-r36max-linux.dtb]=r36max 23 | [rk3326-xf40h-linux.dtb]=xf40h 24 | [rk3326-xf40v-linux.dtb]=xf40v 25 | [rk3326-r36ultra-linux.dtb]=r36ultra 26 | [rk3326-k36p8-linux.dtb]=k36panel8 27 | [rk3326-r46h-linux.dtb]=r46h 28 | [rk3326-r36plus-linux.dtb]=r36splus 29 | [rk3326-k36p4-linux.dtb]=k36panel4 30 | [rk3326-k36p7-linux.dtb]=k36panel7 31 | [rk3326-a10mini-linux.dtb]=a10mini 32 | [rk3326-xgb36-linux.dtb]=xgb36 33 | ) 34 | declare -A console_profile=( 35 | [r36s]=480p 36 | [mymini]=480p 37 | [xf35h]=480p 38 | [r36pro]=480p 39 | [k36s]=480p 40 | [hg36]=480p 41 | [rx6h]=480p 42 | [r36max]=720p 43 | [xf40h]=720p 44 | [xf40v]=720p 45 | [r36ultra]=720p 46 | [k36panel8]=480p 47 | [r46h]=768p 48 | [r36splus]=720p 49 | [k36panel4]=480p 50 | [k36panel7]=480p 51 | [a10mini]=480p 52 | [xgb36]=480p 53 | ) 54 | declare -A joy_conf_map=( 55 | [r36s]=dual 56 | [mymini]=single 57 | [xf35h]=dual 58 | [r36pro]=dual 59 | [k36s]=single 60 | [hg36]=dual 61 | [rx6h]=dual 62 | [r36max]=dual 63 | [xf40h]=dual 64 | [xf40v]=dual 65 | [r36ultra]=dual 66 | [k36panel8]=dual 67 | [r46h]=dual 68 | [r36splus]=dual 69 | [k36panel4]=dual 70 | [k36panel7]=dual 71 | [a10mini]=none 72 | [xgb36]=single 73 | ) 74 | declare -A ogage_conf_map=( 75 | [r36s]=happy5 76 | [mymini]=select 77 | [xf35h]=select 78 | [r36pro]=happy5 79 | [k36s]=happy5 80 | [hg36]=happy5 81 | [rx6h]=select 82 | [r36max]=happy5 83 | [xf40h]=select 84 | [xf40v]=happy5 85 | [r36ultra]=happy5 86 | [k36panel8]=happy5 87 | [r46h]=select 88 | [r36splus]=happy5 89 | [k36panel4]=happy5 90 | [k36panel7]=happy5 91 | [a10mini]=happy5 92 | [xgb36]=happy5 93 | # 按需增删: [机型]=select|mode 94 | ) 95 | rk915_set=("xf40h" "xf40v" "xf35h" "r36ultra" "k36s") # 按需增删 96 | LABEL="${dtb2label[$DTB]:-r36s}" # 默认 r36s 97 | # =============== 路径配置(可按需调整)=============== 98 | QUIRKS_DIR="/home/ark/.quirks" # 目标机型库 99 | CONSOLE_FILE="/boot/.console" # 当前生效机型标记 100 | # =============== 小工具函数(英文输出 / 中文注释)=============== 101 | msg() { echo "[clone.sh] $*"; } 102 | warn() { echo "[clone.sh][WARN] $*" >&2; } 103 | err() { echo "[clone.sh][ERR ] $*" >&2; } 104 | 105 | # 如果源存在则复制;isfile=yes 时以文件目标安装(保持权限 0755) 106 | cp_if_exists() { 107 | local src="$1" dst="$2" isfile="${3:-no}" 108 | if [[ -e "$src" ]]; then 109 | if [[ "$isfile" == "yes" ]]; then 110 | mkdir -p "$(dirname "$dst")" 111 | # 保留属主/属组/时间戳等 112 | if cp -a "$src" "$dst" 2>/dev/null; then 113 | : 114 | else 115 | # 极端情况下的兜底:还用 install,但把所有权按源文件纠正回去 116 | install -m 0755 -D "$src" "$dst" 117 | sudo chown --reference="$src" "$dst" 2>/dev/null || true 118 | sudo touch -r "$src" "$dst" 2>/dev/null || true 119 | fi 120 | # 统一权限为 0755(不影响属主/属组) 121 | sudo chmod 0755 "$dst" || true 122 | else 123 | mkdir -p "$dst" 124 | cp -a "$src" "$dst/" 125 | fi 126 | msg "Copied: $src -> $dst" 127 | else 128 | warn "Source not found, skip: $src" 129 | fi 130 | } 131 | 132 | apply_hotkey_conf() { 133 | local dtbval="$1" kind ogage_conf ra_conf ra32_conf 134 | # 键不存在时,kind 为空串(避免 set -u 爆炸) 135 | kind="${ogage_conf_map[$dtbval]-}" 136 | 137 | case "$kind" in 138 | select) 139 | ogage_conf="$QUIRKS_DIR/ogage.select.conf" 140 | ra_conf="$QUIRKS_DIR/retroarch.select" 141 | ra32_conf="$QUIRKS_DIR/retroarch32.select" 142 | ;; 143 | happy5) 144 | ogage_conf="$QUIRKS_DIR/ogage.happy5.conf" 145 | ra_conf="$QUIRKS_DIR/retroarch.happy5" 146 | ra32_conf="$QUIRKS_DIR/retroarch32.happy5" 147 | ;; 148 | *) 149 | ogage_conf="" 150 | ra_conf="" 151 | ra32_conf="" 152 | ;; 153 | esac 154 | 155 | if [[ -n "$ogage_conf" ]]; then 156 | msg "change hotkey: $dtbval -> $(basename "$ogage_conf")" 157 | cp_if_exists "$ogage_conf" "/home/ark/ogage.conf" "yes" 158 | else 159 | msg "hotkey unchanged for: $dtbval (no mapping)" 160 | fi 161 | if [[ -n "$ra_conf" ]]; then 162 | msg "change hotkey: $dtbval -> $(basename "$ra_conf")" 163 | cp_if_exists "$ra_conf" "/home/ark/.config/retroarch/retroarch.cfg" "yes" 164 | else 165 | msg "hotkey unchanged for: $dtbval (no mapping)" 166 | fi 167 | if [[ -n "$ra32_conf" ]]; then 168 | msg "change hotkey: $dtbval -> $(basename "$ra32_conf")" 169 | cp_if_exists "$ra32_conf" "/home/ark/.config/retroarch32/retroarch.cfg" "yes" 170 | else 171 | msg "hotkey unchanged for: $dtbval (no mapping)" 172 | fi 173 | } 174 | 175 | adjust_per_joy_conf() { 176 | local dtbval="$1" kind conf 177 | # 键不存在时,kind 为空串(避免 set -u 爆炸) 178 | prof="${joy_conf_map[$dtbval]-}" 179 | case "$prof" in 180 | none|single) 181 | cp_if_exists "$QUIRKS_DIR/noneJoy/controls.ini" "/roms/psp/ppsspp/PSP/SYSTEM/controls.ini" "yes" 182 | cp_if_exists "$QUIRKS_DIR/noneJoy/ppsspp.ini" "/roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini" "yes" 183 | cp_if_exists "$QUIRKS_DIR/noneJoy/ppsspp.ini.sdl" "/roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl" "yes" 184 | cp_if_exists "$QUIRKS_DIR/noneJoy/drastic.cfg" "/opt/drastic/config/drastic.cfg" "yes" 185 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/noneJoy/controls.ini" "/roms2/psp/ppsspp/PSP/SYSTEM/controls.ini" "yes" || true 186 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/noneJoy/ppsspp.ini" "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini" "yes" || true 187 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/noneJoy/ppsspp.ini.sdl" "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl" "yes" || true 188 | ;; 189 | dual) 190 | cp_if_exists "$QUIRKS_DIR/dualJoy/controls.ini" "/roms/psp/ppsspp/PSP/SYSTEM/controls.ini" "yes" 191 | cp_if_exists "$QUIRKS_DIR/dualJoy/ppsspp.ini" "/roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini" "yes" 192 | cp_if_exists "$QUIRKS_DIR/dualJoy/ppsspp.ini.sdl" "/roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl" "yes" 193 | cp_if_exists "$QUIRKS_DIR/dualJoy/drastic.cfg" "/opt/drastic/config/drastic.cfg" "yes" 194 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/dualJoy/controls.ini" "/roms2/psp/ppsspp/PSP/SYSTEM/controls.ini" "yes" || true 195 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/dualJoy/ppsspp.ini" "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini" "yes" || true 196 | [[ -d "/roms2/psp" ]] && cp_if_exists "$QUIRKS_DIR/dualJoy/ppsspp.ini.sdl" "/roms2/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl" "yes" || true 197 | ;; 198 | *) msg "No profile assets for: $prof" ;; 199 | esac 200 | } 201 | 202 | 203 | # 依据 LABEL 执行“拷贝并运行 fix_pad” 204 | apply_quirks_for() { 205 | local dtbval="$1" 206 | local base="$QUIRKS_DIR/$dtbval" 207 | adjust_per_joy_conf "$dtbval" 208 | apply_hotkey_conf "$dtbval" 209 | copy_file 210 | } 211 | 212 | install_profile_assets() { 213 | local prof="$1" 214 | case "$prof" in 215 | 480p|720p|768p) 216 | cp_if_exists "$QUIRKS_DIR/$prof/351Files" "/opt/351Files" "no" 217 | cp_if_exists "$QUIRKS_DIR/$prof/drastic/TF1/libSDL2-2.0.so.0.3000.2" "/opt/drastic/TF1/" "yes" 218 | cp_if_exists "$QUIRKS_DIR/$prof/drastic/TF2/libSDL2-2.0.so.0.3000.2" "/opt/drastic/TF2/" "yes" 219 | cp_if_exists "$QUIRKS_DIR/$prof/drastic/bg" "/roms/nds" "no" 220 | [[ -d "/roms2/nds/bg" ]] && cp_if_exists "$QUIRKS_DIR/$prof/drastic/bg" "/roms2/nds" "no" || true 221 | ;; 222 | *) msg "No profile assets for: $prof" ;; 223 | esac 224 | } 225 | 226 | copy_file() { 227 | [[ -f "$CONSOLE_FILE" ]] && cur_console="$(tr -d '\r\n' < "$CONSOLE_FILE")" || cur_console="" 228 | [[ -n "$cur_console" ]] && install_profile_assets "${console_profile[$cur_console]}" 229 | } 230 | 231 | 232 | # =============== 执行开始 =============== 233 | msg "DTB filename: ${DTB:-}, LABEL: $LABEL" 234 | 235 | # 检测 /boot/fix_audio.sh 是否存在 236 | if [ -f "/boot/fix_audio.sh" ]; then 237 | mkdir -p /opt/system/Clone 238 | cp -f "/boot/fix_audio.sh" "/opt/system/Clone/Toggle Audio.sh" 239 | "/boot/fix_audio.sh" 240 | rm -rf "/boot/fix_audio.sh" 241 | echo "[boot] Copied fix_audio.sh -> /opt/system/Clone/Toggle Audio.sh" 242 | fi 243 | 244 | # 按规则处理 /boot/.console 245 | if [[ ! -f "$CONSOLE_FILE" ]]; then 246 | clear 247 | echo "===============================" 248 | echo " arkos for clone lcdyk ..." 249 | echo "===============================" 250 | sleep 2 251 | echo "$LABEL" > "$CONSOLE_FILE" 252 | msg "Wrote new console file: $CONSOLE_FILE -> $LABEL" 253 | apply_quirks_for "$LABEL" 254 | sleep 5 255 | else 256 | CUR_VAL="$(tr -d '\r\n' < "$CONSOLE_FILE" || true)" 257 | if [[ "$CUR_VAL" == "$LABEL" ]]; then 258 | msg "Console unchanged ($CUR_VAL); nothing to do." 259 | else 260 | ( 261 | # ==== 所有输出都到 tty1 ==== 262 | # 复位/清屏并回到左上角 263 | printf '\033c' 264 | echo "===============================" 265 | echo " arkos for clone lcdyk ..." 266 | echo "===============================" 267 | echo 268 | echo "[firstboot.sh] old config: ${CUR_VAL}" 269 | echo "[firstboot.sh] new config: ${LABEL}" 270 | echo 271 | # 顺序保持不变:先写 .console,再应用 quirks(避免重入时再次触发) 272 | echo "$LABEL" | sudo tee "$CONSOLE_FILE" > /dev/null 273 | apply_quirks_for "$LABEL" 274 | sleep 5 275 | ) > /dev/tty1 2>&1 276 | fi 277 | fi 278 | # 安装915wifi驱动 279 | if [[ -f "$CONSOLE_FILE" ]]; then 280 | cur_console="$(tr -d '\r\n' < "$CONSOLE_FILE")" 281 | for x in "${rk915_set[@]}"; do 282 | if [[ "$cur_console" == "$x" ]]; then 283 | msg "insmod rk915.ko: $cur_console" 284 | sudo insmod -f /usr/lib/modules/4.4.189/kernel/drivers/net/wireless/rk915.ko || true 285 | break 286 | fi 287 | done 288 | fi 289 | 290 | if [[ -f "/boot/.cn" ]]; then 291 | if grep -q "Language" /home/ark/.emulationstation/es_settings.cfg; then 292 | sed -i -e '/' /home/ark/.emulationstation/es_settings.cfg || true 293 | else 294 | sed -i '$a ' /home/ark/.emulationstation/es_settings.cfg || true 295 | fi 296 | cp_if_exists "$QUIRKS_DIR/option-gamelist.xml" "/opt/system/gamelist.xml" "yes" 297 | sudo rm -f /etc/localtime || true 298 | sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime || true 299 | sudo sed -i -e '/Language \= en_US/c\Language \= zh_CN' /opt/ppsspp/backupforromsfolder/ppsspp/PSP/SYSTEM/ppsspp.ini || true 300 | sudo sed -i -e '/Language \= en_US/c\Language \= zh_CN' /opt/ppsspp/backupforromsfolder/ppsspp/PSP/SYSTEM/ppsspp.ini.go || true 301 | sudo sed -i -e '/Language \= en_US/c\Language \= zh_CN' /opt/ppsspp/backupforromsfolder/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl || true 302 | sed -i -e '/Language \= en_US/c\Language \= zh_CN' /roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini || true 303 | sed -i -e '/Language \= en_US/c\Language \= zh_CN' /roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.go || true 304 | sed -i -e '/Language \= en_US/c\Language \= zh_CN' /roms/psp/ppsspp/PSP/SYSTEM/ppsspp.ini.sdl || true 305 | sed -i -e '/user_language \= \"/c\user_language \= \"12\"' /home/ark/.config/retroarch32/retroarch.cfg || true 306 | sed -i -e '/user_language \= \"/c\user_language \= \"12\"' /home/ark/.config/retroarch/retroarch.cfg || true 307 | sed -i -e '/user_language \= \"/c\user_language \= \"12\"' /home/ark/.config/retroarch32/retroarch.cfg.bak || true 308 | sed -i -e '/user_language \= \"/c\user_language \= \"12\"' /home/ark/.config/retroarch/retroarch.cfg.bak || true 309 | sed -i -e '/menu_driver \= \"/c\menu_driver \= \"ozone\"' /home/ark/.config/retroarch32/retroarch.cfg || true 310 | sed -i -e '/menu_driver \= \"/c\menu_driver \= \"ozone\"' /home/ark/.config/retroarch/retroarch.cfg || true 311 | sed -i -e '/menu_driver \= \"/c\menu_driver \= \"ozone\"' /home/ark/.config/retroarch32/retroarch.cfg.bak || true 312 | sed -i -e '/menu_driver \= \"/c\menu_driver \= \"ozone\"' /home/ark/.config/retroarch/retroarch.cfg.bak || true 313 | fi 314 | 315 | msg "Done." 316 | exit 0 317 | -------------------------------------------------------------------------------- /sh/expandtoexfat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo umount /roms 3 | #sudo ln -s /dev/mmcblk0 /dev/hda 4 | #sudo ln -s /dev/mmcblk0p3 /dev/hda3 5 | sudo chmod 666 /dev/tty1 6 | export TERM=linux 7 | height="15" 8 | width="55" 9 | if [ -f "/boot/rk3326-rg351v-linux.dtb" ] || [ -f "/boot/rk3326-rg351mp-linux.dtb" ] || [ -f "/boot/rk3326-gameforce-linux.dtb" ] || [ -f "/boot/rk3326-odroidgo3-linux.dtb" ] || [ -f "/boot/rk3566.dtb" ]; then 10 | sudo setfont /usr/share/consolefonts/Lat7-Terminus20x10.psf.gz 11 | height="20" 12 | width="60" 13 | fi 14 | 15 | if [ ! -f /boot/doneit ]; then 16 | sudo echo ", +" | sudo sfdisk -N 3 --force /dev/mmcblk0 17 | sudo touch "/boot/doneit" 18 | dialog --infobox "EASYROMS partition expansion and conversion to exfat in process. The device will now reboot to continue the process..." $height $width 2>&1 > /dev/tty1 19 | sleep 5 20 | sudo reboot 21 | fi 22 | 23 | maxSize=$(lsblk -b --output SIZE -n -d /dev/mmcblk0) 24 | 25 | newExtSizePct=$(printf %.2f "$((10**4 * 11000000000/$maxSize))e-4") 26 | newExtSizePct=$(echo print 1-$newExtSizePct | perl) 27 | ExfatPctToRemain=$(echo print 100*$newExtSizePct | perl) 28 | 29 | #echo "$ExfatPctToRemain" > /home/ark/growpercentage.log 30 | 31 | # # Expand the ext4 partition if possible to make room for future update needs 32 | if [ $ExfatPctToRemain -lt "100" ]; then 33 | printf "d\n3\nw\n" | sudo fdisk /dev/mmcblk0 34 | sudo growpart --free-percent=$ExfatPctToRemain -v /dev/mmcblk0 2 35 | sudo resize2fs /dev/mmcblk0p2 36 | ext4endSector=$(sudo sfdisk -l /dev/mmcblk0 | grep mmcblk0p2 | awk '{print $3}') 37 | exfatstartSector=$(echo print 1+$ext4endSector | perl) 38 | printf "n\np\n3\n$exfatstartSector\n\nt\n3\n11\nw\n" | sudo fdisk /dev/mmcblk0 39 | fi 40 | 41 | # Keep root (p2) as is (~6.5G), just recreate p3 using the remaining space 42 | # printf "d\n3\nw\n" | sudo fdisk /dev/mmcblk0 43 | # ext4endSector=$(sudo sfdisk -l /dev/mmcblk0 | awk '/mmcblk0p2/ {print $3}') 44 | # exfatstartSector=$((ext4endSector + 1)) 45 | # printf "n\np\n3\n$exfatstartSector\n\nt\n3\n11\nw\n" | sudo fdisk /dev/mmcblk0 46 | 47 | sudo mkfs.exfat -s 16K -n EASYROMS /dev/mmcblk0p3 48 | sync 49 | sleep 2 50 | sudo fsck.exfat -a /dev/mmcblk0p3 51 | sync 52 | printf "t\n3\n7\nw\n" | sudo fdisk /dev/mmcblk0 53 | 54 | sudo mount -t exfat -w /dev/mmcblk0p3 /roms 55 | exitcode=$? 56 | sleep 2 57 | sudo tar -xvf /roms.tar -C / 58 | sync 59 | sudo rm -rf -v /roms/themes/es-theme-nes-box/ 60 | # Setup swapfile 61 | #printf "\n\n\e[32mSetting up swapfile. Please wait...\n" 62 | #printf "\033[0m" 63 | #sudo dd if=/dev/zero of=/swapfile bs=1024 count=262144 64 | #sudo mkswap /swapfile 65 | #sudo swapon /swapfile 66 | sudo mv -f -v /tempthemes/* /roms/themes 67 | sync 68 | sleep 1 69 | sudo rm -rf -v /tempthemes 70 | sleep 2 71 | #sudo umount /roms 72 | sudo cp /boot/fstab.exfat /etc/fstab 73 | sync 74 | sudo rm -f /boot/doneit* 75 | if [ ! -f "/boot/rk3326-rg351v-linux.dtb" ] && [ ! -f "/boot/rk3326-rg351mp-linux.dtb" ]; then 76 | sudo rm -f /roms.tar 77 | fi 78 | sudo rm -f /boot/fstab.exfat 79 | # Disable and delete swapfile 80 | #sudo swapoff /swapfile 81 | #sudo rm -f -v /swapfile 82 | if [ $exitcode -eq 0 ]; then 83 | dialog --infobox "The expansion of the EASYROMS partition and conversion to exFAT have been completed. The system will now enter ArkOS Clone adjustment." $height $width 2>&1 > /dev/tty1 | sleep 3 84 | /boot/clone.sh >/dev/tty1 2>&1 || true 85 | # systemctl disable firstboot.service 86 | # sudo rm -v /boot/firstboot.sh 87 | sudo cp /boot/clone.sh /boot/firstboot.sh 88 | sudo rm /boot/clone.sh 89 | sudo rm -v -- "$0" 90 | dialog --colors --infobox \ 91 | "Clone adjustment completed. The system will now reboot. 92 | 93 | \Z1\ZbNote:\Zn On the first boot, PortMaster will install some dependencies. This may take a few minutes, so please be patient." \ 94 | $height $width 2>&1 > /dev/tty1 | sleep 10 95 | reboot 96 | else 97 | dialog --infobox "EASYROMS partition expansion and conversion to exfat failed for an unknown reason. Please expand the partition using an alternative tool such as Minitool Partition Wizard. System will reboot and load ArkOS now." $height $width 2>&1 > /dev/tty1 | sleep 10 98 | /boot/clone.sh >/dev/tty1 2>&1 || true 99 | # systemctl disable firstboot.service 100 | # sudo rm -v /boot/firstboot.sh 101 | sudo cp /boot/clone.sh /boot/firstboot.sh 102 | sudo rm /boot/clone.sh 103 | sudo rm -v -- "$0" 104 | sleep 3 105 | reboot 106 | fi 107 | -------------------------------------------------------------------------------- /sh/fix_audio.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Audio Toggle Script 3 | 4 | # Get current numeric value 5 | CURRENT=$(amixer cget name="Playback Path" | grep ": values=" | awk -F'=' '{print $2}' | xargs) 6 | 7 | if [ "$CURRENT" -eq 1 ]; then 8 | # SPK → switch to HP 9 | NEW_INDEX=2 10 | NEW_NAME="HP" 11 | printf "Switching from Speakers to Headphones\n" 12 | 13 | elif [ "$CURRENT" -eq 2 ]; then 14 | # HP → switch to SPK 15 | NEW_INDEX=1 16 | NEW_NAME="SPK" 17 | printf "Switching from Headphones to Speakers\n" 18 | 19 | elif [ "$CURRENT" -eq 3 ]; then 20 | # SPK+HP → default to HP (change to SPK if you prefer) 21 | NEW_INDEX=2 22 | NEW_NAME="HP" 23 | printf "Switching from Both (SPK+HP) to Headphones\n" 24 | 25 | else 26 | # OFF or unknown → default to SPK 27 | NEW_INDEX=1 28 | NEW_NAME="SPK" 29 | printf "Current value is '%s', defaulting to Speakers\n" "$CURRENT" 30 | fi 31 | 32 | # Apply new setting 33 | amixer cset name="Playback Path" "$NEW_INDEX" 34 | sudo alsactl store 35 | printf "Audio path set to: %s\n" "$NEW_NAME" 36 | -------------------------------------------------------------------------------- /sh/joyled.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Joystick LED Controller (multi-device, dialog-based) 3 | # Author: lcdyk 4 | # 5 | # Backends: 6 | # - mcu_led : (xf35h / xf40h) GPIO65 + UART(/dev/ttyS2) + mcu_led chgmode 7 | # - mymini : (mymini) Linux LED class (/sys/class/leds/*/brightness) 8 | # - ws2812 : (xf40v / xf35v) 外部 ws2812ctl 包装器(可自带 glibc 启动) 9 | # 10 | # 约定: 11 | # * 首次进入不改变 LED 状态 12 | # * 选择项立即生效,成功静默,失败弹框 13 | # * 未支持机型:展示 /boot/.console 后直接退出 14 | # 15 | # 依赖:dialog, sudo, tee 16 | # 可选:/opt/inttools/gptokeyb(用摇杆导航菜单) 17 | 18 | # ====================== 19 | # 配置区(便于集中修改) 20 | # ====================== 21 | MCU_LED_BIN="${MCU_LED_BIN:-/usr/bin/mcu_led}" # 或 /usr/local/bin/mcu_led 22 | WS2812CTL_BIN="${WS2812CTL_BIN:-/usr/bin/ws2812ctl}" # ws2812 启动包装器 23 | GPTOKEYB_BIN="${GPTOKEYB_BIN:-/opt/inttools/gptokeyb}" 24 | SDL_DB_PATH="${SDL_DB_PATH:-/opt/inttools/gamecontrollerdb.txt}" 25 | KEYS_GPTK_PATH="${KEYS_GPTK_PATH:-/opt/inttools/keys.gptk}" 26 | CONSOLE_FONT="${CONSOLE_FONT:-/usr/share/consolefonts/Lat7-Terminus16.psf.gz}" 27 | 28 | # 设备与 GPIO/UART(mcu_led 后端) 29 | UART_DEV="${UART_DEV:-/dev/ttyS2}" 30 | GPIO_NUM="${GPIO_NUM:-65}" 31 | 32 | # mymini LED 节点 33 | LED_BLUE="${LED_BLUE:-/sys/class/leds/blue:joy/brightness}" 34 | LED_GREEN="${LED_GREEN:-/sys/class/leds/green:joy/brightness}" 35 | LED_RED="${LED_RED:-/sys/class/leds/red:joy/brightness}" 36 | 37 | # 运行时与状态 38 | CURR_TTY="${CURR_TTY:-/dev/tty1}" 39 | STATE_DIR="${STATE_DIR:-/var/lib/joyled}" 40 | STATE_FILE="${STATE_FILE:-${STATE_DIR}/state}" 41 | 42 | # ====================== 43 | # 基本守护 44 | # ====================== 45 | if [ "$(id -u)" -ne 0 ]; then 46 | exec sudo -- "$0" "$@" 47 | fi 48 | set -euo pipefail 49 | export TERM=linux 50 | 51 | # 机型识别 -> 后端 52 | MODEL="$(cat /boot/.console 2>/dev/null || echo unknown)" 53 | detect_backend() { 54 | case "${MODEL}" in 55 | xf35h|xf40h|k36s) echo "mcu_led" ;; 56 | mymini|r36ultra|xgb36) echo "gpio" ;; 57 | xf40v|xf35v) echo "ws2812" ;; 58 | *) echo "unsupported" ;; 59 | esac 60 | } 61 | BACKEND="$(detect_backend)" 62 | 63 | # UI 初始化(不改 LED) 64 | printf "\033c" > "$CURR_TTY" 65 | printf "\e[?25l" > "$CURR_TTY" 66 | [ -f "$CONSOLE_FONT" ] && setfont "$CONSOLE_FONT" || true 67 | printf "\033c" > "$CURR_TTY" 68 | 69 | # ----------------------- 70 | # Helpers 71 | # ----------------------- 72 | tee_root() { sudo tee "$1" >/dev/null; } 73 | have_cmd() { command -v "$1" >/dev/null 2>&1; } 74 | set_kv() { if have_cmd set_setting; then set_setting "$@" || true; fi; } 75 | 76 | fatal_missing_backend() { 77 | # 显示提示并在确认后退出 78 | local msg="$1" 79 | if have_cmd dialog; then 80 | dialog --msgbox "$msg" 7 68 > "$CURR_TTY" 81 | else 82 | echo "$msg" 83 | read -r -p "Press Enter to exit..." _ 84 | fi 85 | printf "\e[?25h" > "$CURR_TTY" 86 | exit 0 87 | } 88 | 89 | # 启动前后端自检:缺失即提示并退出 90 | backend_precheck() { 91 | case "$BACKEND" in 92 | mcu_led) 93 | if [ ! -x "$MCU_LED_BIN" ] && ! have_cmd mcu_led; then 94 | fatal_missing_backend "摇杆灯控制程序未找到:\n${MCU_LED_BIN}\n并且 'mcu_led' 不在 PATH。\n请安装后重试。" 95 | fi 96 | ;; 97 | ws2812) 98 | if [ ! -x "$WS2812CTL_BIN" ]; then 99 | fatal_missing_backend "摇杆灯控制程序未找到:\n${WS2812CTL_BIN}\n请安装后重试。" 100 | fi 101 | ;; 102 | esac 103 | } 104 | 105 | # 菜单项(按后端裁剪) 106 | build_menu_items() { 107 | case "$BACKEND" in 108 | mcu_led) 109 | cat <<'EOF' 110 | off Turn off LED 111 | battery Battery service control 112 | red Solid Red 113 | green Solid Green 114 | blue Solid Blue 115 | orange Solid Orange 116 | purple Solid Purple 117 | cyan Solid Cyan 118 | white Solid White 119 | breath_red Breathing Red 120 | breath_green Breathing Green 121 | breath_blue Breathing Blue 122 | breath_orange Breathing Orange 123 | breath_purple Breathing Purple 124 | breath_cyan Breathing Cyan 125 | breath_white Breathing White 126 | breath Breathing (generic) 127 | flow Flow effect 128 | EOF 129 | ;; 130 | gpio) 131 | cat <<'EOF' 132 | off Turn off LED 133 | battery Battery service control 134 | red Solid Red 135 | green Solid Green 136 | blue Solid Blue 137 | white Solid White 138 | orange Solid Orange 139 | yellow Solid Yellow 140 | purple Solid Purple 141 | EOF 142 | ;; 143 | ws2812) 144 | cat <<'EOF' 145 | off Turn off LED 146 | scrolling Scrolling effect 147 | breathing General breathing 148 | breathing_red Breathing Red 149 | breathing_green Breathing Green 150 | breathing_blue Breathing Blue 151 | breathing_blue_red Breathing Blue+Red 152 | breathing_green_blue Breathing Green+Blue 153 | breathing_red_green Breathing Red+Green 154 | breathing_red_green_blue Breathing RGB 155 | red_green_blue Solid RGB (white-ish) 156 | blue_red Solid Magenta 157 | blue Solid Blue 158 | green_blue Solid Cyan 159 | green Solid Green 160 | red_green Solid Yellow/Orange-ish 161 | red Solid Red 162 | EOF 163 | ;; 164 | esac 165 | } 166 | 167 | choice_exists_in_menu() { 168 | local target="$1" 169 | mapfile -t LINES < <(build_menu_items) 170 | for ((i=0; i<${#LINES[@]}; i++)); do 171 | local tag="${LINES[$i]%% *}" 172 | [[ "$tag" == "$target" ]] && return 0 173 | done 174 | return 1 175 | } 176 | 177 | # ----------------------- 178 | # Backend: mcu_led 179 | # ----------------------- 180 | GPIO_BASE="/sys/class/gpio" 181 | GPIO_DIR="${GPIO_BASE}/gpio${GPIO_NUM}" 182 | 183 | ensure_gpio() { 184 | if [[ ! -d "${GPIO_DIR}" ]]; then 185 | echo "${GPIO_NUM}" | tee_root "${GPIO_BASE}/export" 186 | fi 187 | if [[ -w "${GPIO_DIR}/direction" ]]; then 188 | echo out | tee_root "${GPIO_DIR}/direction" 189 | fi 190 | } 191 | gpio_on() { echo 1 | tee_root "${GPIO_DIR}/value"; } 192 | gpio_off() { echo 0 | tee_root "${GPIO_DIR}/value"; } 193 | 194 | mode_code_mcu() { 195 | case "$1" in 196 | battery) echo 3 ;; 197 | red) echo 3 ;; 198 | green) echo 1 ;; 199 | blue) echo 2 ;; 200 | white) echo 7 ;; 201 | orange) echo 5 ;; 202 | purple) echo 6 ;; 203 | cyan) echo 4 ;; 204 | breath_red) echo 19 ;; 205 | breath_green) echo 17 ;; 206 | breath_blue) echo 18 ;; 207 | breath_white) echo 23 ;; 208 | breath_orange) echo 21 ;; 209 | breath_purple) echo 22 ;; 210 | breath_cyan) echo 20 ;; 211 | breath) echo 24 ;; 212 | flow) echo 8 ;; 213 | *) echo "" ;; 214 | esac 215 | } 216 | 217 | run_mcu_led() { 218 | local mode="$1" 219 | if [ -x "$MCU_LED_BIN" ]; then 220 | "$MCU_LED_BIN" "${UART_DEV}" chgmode "${mode}" 1 221 | else 222 | mcu_led "${UART_DEV}" chgmode "${mode}" 1 223 | fi 224 | } 225 | 226 | apply_choice_mcu() { 227 | local name="$1" 228 | LAST_CHOICE="$name" 229 | 230 | if [[ "$name" == "off" ]]; then 231 | ensure_gpio 232 | gpio_off 233 | set_kv led.color "$name" 234 | mkdir -p "$STATE_DIR" && : > "$STATE_FILE" 2>/dev/null || true 235 | return 0 236 | fi 237 | 238 | local code; code="$(mode_code_mcu "$name")" 239 | if [[ -z "$code" ]]; then 240 | dialog --msgbox "Unknown mode: $name" 6 34 > "$CURR_TTY" 241 | return 1 242 | fi 243 | 244 | ensure_gpio 245 | gpio_on 246 | 247 | if run_mcu_led "$code"; then 248 | set_kv led.color "$name" 249 | mkdir -p "$STATE_DIR"; echo "$name" | sudo tee "$STATE_FILE" >/dev/null || true 250 | if [[ "$name" == "battery" ]] && have_cmd systemctl; then 251 | sudo systemctl restart batteryledstatus.service || true 252 | fi 253 | else 254 | dialog --msgbox "Failed to apply: $name (code $code)" 6 48 > "$CURR_TTY" 255 | return 1 256 | fi 257 | } 258 | 259 | # ----------------------- 260 | # Backend: gpio (LED class) 261 | # ----------------------- 262 | led_disable_triggers() { 263 | for t in /sys/class/leds/*/trigger; do 264 | [ -w "$t" ] && echo none | sudo tee "$t" >/dev/null 265 | done 266 | } 267 | led_on_value() { 268 | local node="$1" 269 | local maxf="${node%/brightness}/max_brightness" 270 | if [ -r "$maxf" ]; then cat "$maxf"; else echo 1; fi 271 | } 272 | led_write() { echo "$2" | sudo tee "$1" >/dev/null; } 273 | led_off_all() { 274 | [ -w "$LED_BLUE" ] && led_write "$LED_BLUE" 0 275 | [ -w "$LED_GREEN" ] && led_write "$LED_GREEN" 0 276 | [ -w "$LED_RED" ] && led_write "$LED_RED" 0 277 | } 278 | led_set_BGR() { 279 | [ -w "$LED_BLUE" ] && led_write "$LED_BLUE" "$1" 280 | [ -w "$LED_GREEN" ] && led_write "$LED_GREEN" "$2" 281 | [ -w "$LED_RED" ] && led_write "$LED_RED" "$3" 282 | } 283 | 284 | apply_choice_mymini() { 285 | local name="$1" 286 | LAST_CHOICE="$name" 287 | 288 | led_disable_triggers 289 | 290 | local B_ON G_ON R_ON 291 | B_ON="$(led_on_value "$LED_BLUE")" 292 | G_ON="$(led_on_value "$LED_GREEN")" 293 | R_ON="$(led_on_value "$LED_RED")" 294 | 295 | case "$name" in 296 | off) led_off_all ;; 297 | battery|green) led_set_BGR 0 "$G_ON" 0 ;; 298 | blue) led_set_BGR "$B_ON" 0 0 ;; 299 | red) led_set_BGR 0 0 "$R_ON" ;; 300 | white) led_set_BGR "$B_ON" "$G_ON" "$R_ON" ;; 301 | orange|yellow) led_set_BGR 0 "$G_ON" "$R_ON" ;; 302 | purple) led_set_BGR "$B_ON" 0 "$R_ON" ;; 303 | *) dialog --msgbox "Unknown/unsupported: $name" 6 50 > "$CURR_TTY"; return 1 ;; 304 | esac 305 | 306 | set_kv led.color "$name" 307 | mkdir -p "$STATE_DIR"; echo "$name" | sudo tee "$STATE_FILE" >/dev/null || true 308 | 309 | if [[ "$name" == "battery" ]] && have_cmd systemctl; then 310 | sudo systemctl restart batteryledstatus.service || true 311 | fi 312 | return 0 313 | } 314 | 315 | # ----------------------- 316 | # Backend: ws2812 317 | # ----------------------- 318 | 319 | # 将菜单 tag 映射为 ws2812ctl 的精确模式名 320 | ws2812_mode_arg() { 321 | case "$1" in 322 | off) echo "OFF" ;; 323 | scrolling) echo "Scrolling" ;; 324 | breathing) echo "Breathing" ;; 325 | breathing_red) echo "Breathing_Red" ;; 326 | breathing_green) echo "Breathing_Green" ;; 327 | breathing_blue) echo "Breathing_Blue" ;; 328 | breathing_blue_red) echo "Breathing_Blue_Red" ;; 329 | breathing_green_blue) echo "Breathing_Green_Blue" ;; 330 | breathing_red_green) echo "Breathing_Red_Green" ;; 331 | breathing_red_green_blue) echo "Breathing_Red_Green_Blue" ;; 332 | red_green_blue) echo "Red_Green_Blue" ;; 333 | blue_red) echo "Blue_Red" ;; 334 | blue) echo "Blue" ;; 335 | green_blue) echo "Green_Blue" ;; 336 | green) echo "Green" ;; 337 | red_green) echo "Red_Green" ;; 338 | red) echo "Red" ;; 339 | *) echo "" ;; 340 | esac 341 | } 342 | 343 | # 杀掉已在运行的 ws2812ctl(若有) 344 | kill_ws2812ctl_if_running() { 345 | # 根据二进制路径精确匹配 346 | pkill -f "^${WS2812CTL_BIN} " >/dev/null 2>&1 || true 347 | } 348 | 349 | # 杀掉已在运行的 ws2812ctl(若有) 350 | kill_ws2812ctl_if_running() { 351 | # 根据二进制路径精确匹配 352 | pkill -f "^${WS2812CTL_BIN} " >/dev/null 2>&1 || true 353 | } 354 | 355 | # 以非阻塞方式启动 ws2812ctl;若有 coreutils 的 timeout 就用它 356 | start_ws2812ctl_async() { 357 | local arg="$1" 358 | 359 | # 先清旧 360 | kill_ws2812ctl_if_running 361 | 362 | if command -v timeout >/dev/null 2>&1; then 363 | # 给个极短的启动窗口,避免阻塞当前脚本 364 | # 有些实现会在收到参数后自行常驻,这里用 timeout 让前台立刻返回 365 | timeout 0.3s "$WS2812CTL_BIN" "$arg" >/dev/null 2>&1 || true 366 | # 若还需要后台守护(部分实现会在 timeout 后退出),再补一手纯后台 367 | nohup "$WS2812CTL_BIN" "$arg" >/dev/null 2>&1 /dev/null 2>&1 /dev/null 2>&1 || true 377 | } 378 | 379 | 380 | apply_choice_ws2812() { 381 | local name="$1" 382 | LAST_CHOICE="$name" 383 | 384 | local arg; arg="$(ws2812_mode_arg "$name")" 385 | if [[ -z "$arg" ]]; then 386 | dialog --msgbox "Unknown/unsupported: $name" 6 40 > "$CURR_TTY" 387 | return 1 388 | fi 389 | 390 | if [[ "$arg" == "OFF" ]]; then 391 | # 关灯:直接杀旧实例;如有需要,再发一次 OFF(后台瞬发) 392 | kill_ws2812ctl_if_running 393 | nohup "$WS2812CTL_BIN" "OFF" >/dev/null 2>&1 /dev/null || true 402 | return 0 403 | } 404 | 405 | 406 | # ----------------------- 407 | # Unsupported / Precheck 408 | # ----------------------- 409 | unsupported_device_flow() { 410 | local tmpf="/tmp/console_model.txt" 411 | echo "---- /boot/.console ----" > "$tmpf" 412 | cat /boot/.console 2>/dev/null >> "$tmpf" || echo "(file missing)" >> "$tmpf" 413 | 414 | if have_cmd dialog; then 415 | dialog --backtitle "Joystick LED Controller - by lcdyk" \ 416 | --title "Device Model" \ 417 | --textbox "$tmpf" 12 60 > "$CURR_TTY" 418 | else 419 | cat "$tmpf" 420 | read -r -p "Press Enter to exit..." _ 421 | fi 422 | printf "\e[?25h" > "$CURR_TTY" 423 | exit 0 424 | } 425 | 426 | # 可选摇杆导航与退出处理 427 | ExitMenu() { 428 | printf "\033c" > "$CURR_TTY" 429 | printf "\e[?25h" > "$CURR_TTY" 430 | pkill -f "gptokeyb -1 joyled.sh" >/dev/null 2>&1 || true 431 | exit 0 432 | } 433 | trap ExitMenu EXIT SIGINT SIGTERM 434 | 435 | if [ -x "$GPTOKEYB_BIN" ]; then 436 | [[ -e /dev/uinput ]] && chmod 666 /dev/uinput 2>/dev/null || true 437 | export SDL_GAMECONTROLLERCONFIG_FILE="$SDL_DB_PATH" 438 | pkill -f "gptokeyb -1 joyled.sh" >/dev/null 2>&1 || true 439 | "$GPTOKEYB_BIN" -1 "joyled.sh" -c "$KEYS_GPTK_PATH" >/dev/null 2>&1 & 440 | else 441 | dialog --infobox "gptokeyb not found. Keyboard only." 5 50 > "$CURR_TTY" 442 | sleep 1 443 | fi 444 | 445 | # 未支持机型:展示后退出 446 | if [[ "$BACKEND" == "unsupported" ]]; then 447 | unsupported_device_flow 448 | fi 449 | 450 | # 二进制缺失:提示后退出 451 | backend_precheck 452 | 453 | # ----------------------- 454 | # Main Menu 455 | # ----------------------- 456 | LAST_CHOICE="" 457 | if [[ -s "$STATE_FILE" ]]; then 458 | LAST_CHOICE="$(sudo cat "$STATE_FILE" 2>/dev/null || true)" 459 | choice_exists_in_menu "$LAST_CHOICE" || LAST_CHOICE="" 460 | fi 461 | 462 | MainMenu() { 463 | while true; do 464 | mapfile -t LINES < <(build_menu_items) 465 | MENU_OPTS=() 466 | for ((i=0; i<${#LINES[@]}; i++)); do 467 | local tag desc 468 | tag="${LINES[$i]%% *}" 469 | desc="${LINES[$i]#* }" 470 | MENU_OPTS+=("$tag" "$desc") 471 | done 472 | 473 | if [[ -n "$LAST_CHOICE" ]]; then 474 | CHOICE=$(dialog --output-fd 1 \ 475 | --backtitle "Joystick LED Controller - by lcdyk | Model: ${MODEL} | Backend: ${BACKEND}" \ 476 | --title "LED Mode Selection" \ 477 | --default-item "$LAST_CHOICE" \ 478 | --menu "Select LED color/effect" 20 60 12 \ 479 | "${MENU_OPTS[@]}" 2>"$CURR_TTY" || true) 480 | else 481 | CHOICE=$(dialog --output-fd 1 \ 482 | --backtitle "Joystick LED Controller - by lcdyk | Model: ${MODEL} | Backend: ${BACKEND}" \ 483 | --title "LED Mode Selection" \ 484 | --menu "Select LED color/effect" 20 60 12 \ 485 | "${MENU_OPTS[@]}" 2>"$CURR_TTY" || true) 486 | fi 487 | 488 | [[ -z "${CHOICE:-}" ]] && ExitMenu 489 | 490 | case "$BACKEND" in 491 | mcu_led) apply_choice_mcu "$CHOICE" || true ;; 492 | gpio) apply_choice_mymini "$CHOICE" || true ;; 493 | ws2812) apply_choice_ws2812 "$CHOICE" || true ;; 494 | esac 495 | done 496 | } 497 | 498 | printf "\033c" > "$CURR_TTY" 499 | printf "Joystick LED Controller\nPlease wait..." > "$CURR_TTY" 500 | printf "\n\nScript by lcdyk\nModel: %s\nBackend: %s" "$MODEL" "$BACKEND" > "$CURR_TTY" 501 | sleep 0.25 502 | printf "\033c" > "$CURR_TTY" 503 | MainMenu 504 | --------------------------------------------------------------------------------