batocera吧 关注:17,121贴子:34,620
  • 9回复贴,共1

batocera关于如何自动切换PS和PCenginecd的汉化BIOS的教程

只看楼主收藏回复

这个经验也是借鉴其他Emuelec来的,原理是一样的,但是执行起来因为我没找到先人的路线,所以折腾了几小时。
刚开始我尝试在emulatorlauncher.py用python修改,但是无果,我实在太挫,因为调试起来比较麻烦的原因啦。。
然后仔细看了代码,发现batocera在启动和终止ROM的时候,会去2个地方运行脚本,
路径如下:
/userdata/system/ scripts
/usr/share/batocera/configgen/scripts
所以答案来了,只要在share盘的system里新建有个scripts,在里面放一个bash就行,名字随便起,后缀是.sh
代码我已经写好了:
注意写的时候,用linux模式编辑(编辑器一般自带)
---------------------------------------------------------------------------------
#!/bin/bash
# Check for events
EVENT=$1
SYSTEM_NAME=$2
Absolute_path_rom=$5
ROM_NAME=${Absolute_path_rom##*/}
BIOS_SOURCE_DIR="/userdata/bios/$SYSTEM_NAME"
BIOS_DEST_DIR="/userdata/bios"
if [ "$EVENT" = "gameStart" ]; then
# ps拷贝bios
if [["${SYSTEM_NAME}" == "psx" ]]; then
if [ -f"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.bin" ]; then
# 复制BIOS文件到目标目录
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.bin""$BIOS_DEST_DIR/scph5500.bin"
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.bin""$BIOS_DEST_DIR/scph5502.bin"
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.bin""$BIOS_DEST_DIR/scph101.bin"
#echo "$BIOS_SOURCE_DIR/${ROM_NAME%.*}.bin" >>"/userdata/bios/$SYSTEM_NAME/1.txt"
else
cp -rf"$BIOS_SOURCE_DIR/scph5500.bin""$BIOS_DEST_DIR/scph5500.bin"
cp -rf"$BIOS_SOURCE_DIR/scph5502.bin""$BIOS_DEST_DIR/scph5502.bin"
cp -rf"$BIOS_SOURCE_DIR/scph101.bin" "$BIOS_DEST_DIR/scph101.bin"
#echo "拷贝PS原始BIOS" >>"/userdata/bios/$SYSTEM_NAME/1.txt"
fi
fi
# pcenginecd拷贝bios
if [["${SYSTEM_NAME}" == "pcenginecd" ]]; then
if [ -f"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.pce" ]; then
# 复制BIOS文件到目标目录
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.pce""$BIOS_DEST_DIR/syscard1.pce"
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.pce""$BIOS_DEST_DIR/syscard2.pce"
cp -rf"$BIOS_SOURCE_DIR/${ROM_NAME%.*}.pce""$BIOS_DEST_DIR/syscard3.pce"
#echo "$BIOS_SOURCE_DIR/${ROM_NAME%.*}.pce" >>"/userdata/bios/$SYSTEM_NAME/1.txt"
else
cp -rf"$BIOS_SOURCE_DIR/syscard1.pce""$BIOS_DEST_DIR/syscard1.pce"
cp -rf"$BIOS_SOURCE_DIR/syscard2.pce""$BIOS_DEST_DIR/syscard2.pce"
cp -rf"$BIOS_SOURCE_DIR/syscard3.pce""$BIOS_DEST_DIR/syscard3.pce"
#echo "拷贝PCE原始BIOS" >>"/userdata/bios/$SYSTEM_NAME/1.txt"
fi
fi
fi
if [ "$EVENT" = "gameStop" ]; then
# 运行完pcenginecd拷贝原始bios,防止pcengine游戏字错乱
if [["${SYSTEM_NAME}" == "pcenginecd" ]]; then
# 复制BIOS文件到目标目录
cp -rf"$BIOS_SOURCE_DIR/syscard1.pce""$BIOS_DEST_DIR/syscard1.pce"
cp -rf"$BIOS_SOURCE_DIR/syscard2.pce""$BIOS_DEST_DIR/syscard2.pce"
cp -rf"$BIOS_SOURCE_DIR/syscard3.pce""$BIOS_DEST_DIR/syscard3.pce"
#echo "还原PCE原始BIOS" >>"/userdata/bios/$SYSTEM_NAME/1.txt"
fi
fi
-----------------------------------------------------------------------------------------------------------------------
以上是代码。
这时候启动需要使用特殊bios的ROM时,会去/userdata/bios/psx,或者/userdata/bios/pcenginecd中找寻同名的BIOS,然后复制到/userdata/bios下,pcenginecd在退出时候会还原原版bios,以防pcengine的游戏出现问题。
1. 索尼PS:请在/userdata/bios/psx下放置和ROM名同名的汉化BIOS和原始的三个标准BIOS(文件名:scph5500、scph5502、scph101,)后缀均为.bin
2. Nec pcenginecd: 请在/userdata/bios/pcenginecd下放置和ROM名同名的汉化BIOS和原始的三个标准BIOS(文件名:syscard1.pce、syscard2.pce、syscard3.pce,)后缀均为.pce
最后,未解决问题:独立版鸭站似乎会校验BIOS,因此无法使用,PS模拟器请切ra核心。(有人知道解法的话,告诉我一下,我还是比较喜欢鸭站的)


IP属地:上海1楼2024-04-04 20:49回复
    好吧,显然直接贴代码偷懒是非常2B的一件事,因为百度把符号都吃光了。
    还是放附件吧,7天有效,不补,都是小玩意,不重要的。
    s/1LKNnQHo6ggxRmlBVMKcy-Q 码: dwws
    最后:忘记感谢隔壁emuelec吧的迷糊神了,他给我看了一眼emuelec的实现方法,3Q


    IP属地:上海3楼2024-04-04 21:46
    收起回复
      思路不错,就是有点费硬盘擦写寿命,可以参考我之前写的 “需要专用BIOS的汉化游戏添加方法” 这个贴子,操作门槛低很多。


      IP属地:广东4楼2024-04-04 22:30
      收起回复
        虽然不懂,但支持支持支持


        IP属地:山东来自Android客户端5楼2024-04-05 08:46
        回复
          来晚了,哪位大佬下载过能分享个链接吗


          IP属地:辽宁来自Android客户端6楼2024-05-19 08:55
          回复