BLOG > Zaurus / ARM > Zaurus 游戏模拟大全

Zaurus 游戏模拟大全

这又是一篇欠了两个星期的作业:),今天把它补上了吧。

由于使用了开放源代码的Linux作为操作系统,这使得Zaurus可以使用丰富的各种应用程序,当然也包括了各种家用游戏机的模拟器程序。我成功地在 Zaurus C3100上模拟了包括 NES、SNES、Sega MD 和 GBA 在内的家用游戏机。其中GBA模拟器令人印象深刻,和同级别CPU的Windows Mobile平台的PocketPC相比,性能好了不少。这也从一个侧面反映出了Zaurus的硬件性能和Linux地执行效率是有多么的好。

下面就说明一下如何使用这些模拟器:
  • NES模拟器:znester
  • SNES模拟器:snes9x
  • MD模拟器:DGen
  • GBA模拟器:gpSP
在安装使用这些模拟器之前,你必须安装SDL软件包和libz软件包。因为这些模拟器都使用SDL API来作为图形/声音/输入输出的接口的,而libz则提供了对直接读取Zip格式压缩的ROM文件的支持。

SDL软件包可以在 pdaXrom的官方feed 或者 tyrannozaurus的feed 找到下载(那些sdl开头的软件包以及libz)。

除了上面列出的几个软件包以外,这些模拟器还需要安装如下的其他软件包支持:
  • bzip2
  • libstdcxx5_compat_5.0.7
请同样到上述的两个feed中搜索并安装。

NES模拟器——znester



P_1170991409_1.JPG
NES: Super Mario Bros

znester可以完美的模拟NES游戏机,也就是任天堂经典的红白机FC。

安装znester后,使用如下命令启动模拟器:

# znester -fs -qv ROM文件名


-fs 参数是全屏, -qv 是放大屏幕到 320x240的QVGA模式

在游戏过程中:
  • 方向键 控制方向
  • X键 模拟 A键
  • Z键 模拟 B键
  • OK键 模拟 Start
  • 空格键 模拟  Select
  • 7键 保存进度
  • 0键 读入保存的进度 
  • Cancel键 退出

SNES模拟器——snes9x



P_1170991416_2.JPG
SNES: Final Fantasy 6

snes9x是大名鼎鼎的SNES模拟器,在各个操作系统平台都有移植。它能够完美的模拟SNES游戏机,也就是超级任天堂SFC。

安装 snes9x 后,使用如下命令启动模拟器可以全屏玩游戏:

# xrandr -s 1
# snes9x ROM文件名
# xrandr -s 0


在启动模拟器之前,使用xrandr -s 1命令将屏幕缩放成 320x200 的QVGA模式,游戏完成后再使用 xrandr -s 0 恢复成 640x480 的VGA模式,来达到全屏玩游戏的效果。

在游戏过程中:
  • 方向键 控制方向
  • D键 模拟 A键
  • C键 模拟 B键
  • S键 模拟 X键
  • X键 模拟 Y键
  • A键 模拟 L键
  • Z键 模拟 R键
  • OK键 模拟 Start
  • 空格键 模拟 Select
  • Cancel键 退出
  • 1-5的数字键 背景显示开关
  • 6-9的数字键 保存(4个存档栏)
  • Shift+ 6-9的数字键 读取存档
  • 0数字键 是否显示 FPS
  • Shift+r  Reset
  • Tab键  Turbo开关
游戏的存档文件会被放在用户目录下的.snes96_snapshots目录中。

Sega MD 模拟器——DGen



P_1170991422_3.JPG
Sega MD: 大航海时代2 中文版

dgen可以模拟Sega MD,在C3100上,CPU以 416Mhz运行时,X环境下略有跳帧。由于使用SDL,所以可以不进入X在纯文本模式下运行此模拟器,这时性能比在X下要好一些。基本都能流畅进行游戏(终于可以流畅的玩到大航海时代2的中文版啦!)。

使用如下命令可以全屏玩游戏:

# xrandr -s 1
# dgen -f ROM文件名
# xrandr -s 0


其中,-f 参数为打开全屏模式,如果模拟器无法自动进入全屏模式的话。按下 Alt + Enter可以手动进入全屏模式。

在游戏过程中:
  • 方向键 控制方向
  • A键 模拟 A键
  • S键 模拟 B键
  • D键 模拟 C键
  • Q键 模拟 X键
  • W键 模拟 Y键
  • E键 模拟 Z键
  • OK键 模拟 Start
  • Backspace键 模拟 Mode
  • Cancel键 退出
dgen的配置文件在用户目录下的.dgen/dgenrc

GBA模拟器——gbSP



P_1170991393_0.JPG
GBA: Zelda 神奇的缩小帽

本来我是想用VisualBoyAdvance这个GBA模拟器的,无奈它的性能太差,无法流畅的模拟GBA游戏。后来发现了这个gpSP模拟器,能够在C3100上关闭音频模拟的情况下不超频流畅玩GBA游戏,如果要打开声音模拟,则需要超频到614Mhz。

gpSP原本是为PSP开发的GBA模拟器,由于它是开源软件,所以被移植到了Linux上来了。要执行这个模拟器,你必须要有一个gba_bios.bin文件放在执行目录下才能够正常使用。

gpSP有自己的ROM选择界面,所以可以直接使用gpsp命令启动模拟器后选择ROM文件,也可以使用 gpsp ROM文件名 来直接运行ROM。

输入如下命令可以全屏启动gpsp:

# export GPSPKEYS=97,115,274,273,276,275,13,32,122,120
# xrandr -s 1
# gpsp
# xrandr -s 0


进入模拟器后,可以进入ROM选择界面:

P_1170991425_4.JPG

选中ROM后,按OK键启动ROM,这时如果按下Cancel键的话,可以进入设置界面。

P_1170991430_5.JPG

进入第一项图像和声音选项可以设置是否要模拟声音等开关。

P_1170991435_6.JPG

将声音模拟关掉,以便流畅的进行游戏,不过设定frameskip貌似没有任何效果。

gpSP的按键可以通过设置$GPSPKEYS这个环境变量来设置。
我们在进入gpSP模拟器之前输入如下的命令的话

# export GPSPKEYS=97,115,274,273,276,275,13,32,122,120


就指定了如下按键映射:
  • 方向键 控制方向
  • X键 模拟 A键
  • Z键 模拟 B键
  • C键 模拟 X键
  • D键 模拟 Y键
  • A键 模拟 L键
  • S键 模拟 R键
  • OK键 模拟 Start
  • 空格键 模拟Select
  • Cancel 退出模拟器
其他控制键:
  • 5 保存
  • 7 读入进度
  • Backspace 回到gpSP菜单
  • 1 nowait

你可以自己设定$GPSPKEYS这个环境变量中的键值来设置按键映射

# export GPSPKEYS=L,R,Down,Up,Left,Right,Start,Select,B,A



上面介绍了这四种游戏模拟器的使用办法。不过要实现全屏玩游戏的话,每次都得输入很多的命令。于是我写了一系列脚本来简化操作。

首先说明一下,我的脚本默认是认为你的所有游戏的ROM文件都是放在SD卡上的如下目录的:
  • NES ROM:  /mnt/card/roms/fc
  • SNES ROM:  /mnt/card/roms/sfc
  • Sega MD ROM:  /mnt/card/roms/md
  • GBA ROM:  /mnt/card/roms/gba
如果你的ROM不放在这些目录,则必须修改我的脚本中的 ROMPATH这个变量的值。

下面就看看这些脚本吧:

文件名:FC
BASH代码:
  1. #!/bin/bash
  2. ##############################
  3. # FC emulator script         #
  4. ##############################
  5. # by Wells Wang              #
  6. # 2007-02-10                 #
  7. ##############################
  8.  
  9. ROMPATH="/mnt/ide3/roms/fc"
  10. EMU="znester"
  11. ARGS="-fs -qv"
  12. PS3="Please select ROM file: "
  13.  
  14. echo "Your FC ROM folder is: "$ROMPATH
  15.  
  16. if [ -d $ROMPATH ]; then
  17.         echo "ROMPATH detected!"
  18. else
  19.         echo "WRONG ROM PATH! Please correct ROMPATH in `which FC` file."
  20.         exit 1
  21. fi
  22.  
  23. cd $ROMPATH
  24. echo "Please select a FC ROM file:"
  25. ROMS="`ls|sed -e 's/\\ /\\^/g' - `"
  26. #echo $ROMS
  27.  
  28. select ROM in $ROMS; do
  29.         if [ $ROM ]; then
  30.                 FILENAMECMD="echo \"$ROM\" |sed -e 's/\\^/\\ /g' -"
  31.                 FILENAME=`eval $FILENAMECMD`
  32.                 echo "You've selected $FILENAME"
  33.                 $EMU $ARGS "$FILENAME"
  34.                 break
  35.         else
  36.                 echo "Invalid selection, press [Ctrl + C] to quit."
  37.         fi
  38. done


文件名:SFC
BASH代码:
  1. #!/bin/bash
  2. ##############################
  3. # SFC emulator script        #
  4. ##############################
  5. # by Wells Wang              #
  6. # 2007-02-10                 #
  7. ##############################
  8.  
  9. ROMPATH="/mnt/ide3/roms/sfc"
  10. EMU="snes9x"
  11. ARGS=""
  12. PS3="Please select ROM file: "
  13.  
  14. echo "Your SFC ROM folder is: "$ROMPATH
  15.  
  16. if [ -d $ROMPATH ]; then
  17.         echo "ROMPATH detected!"
  18. else
  19.         echo "WRONG ROM PATH! Please correct ROMPATH in `which SFC` file."
  20.         exit 1
  21. fi
  22.  
  23. cd $ROMPATH
  24. echo "Please select a SFC ROM file:"
  25. echo "Press Fn+2 to enlarge screen in fullscreen mode."
  26. ROMS="`ls|sed -e 's/\\ /\\^/g' - `"
  27. #echo $ROMS
  28.  
  29. select ROM in $ROMS; do
  30.         if [ $ROM ]; then
  31.                 FILENAMECMD="echo \"$ROM\" |sed -e 's/\\^/\\ /g' -"
  32.                 FILENAME=`eval $FILENAMECMD`
  33.                 echo "You've selected $FILENAME"
  34.                 /usr/X11R6/bin/xrandr -s 1
  35.                 $EMU $ARGS "$FILENAME"
  36.                 /usr/X11R6/bin/xrandr -s 0
  37.                 break
  38.         else
  39.                 echo "Invalid selection, press [Ctrl + C] to quit."
  40.         fi
  41. done


文件名:SEGA_MD
BASH代码:
  1. #!/bin/bash
  2. ##############################
  3. # SEGA MD emulator script    #
  4. ##############################
  5. # by Wells Wang              #
  6. # 2007-02-10                 #
  7. ##############################
  8.  
  9. ROMPATH="/mnt/ide3/roms/md"
  10. EMU="dgen"
  11. ARGS="-f"
  12. PS3="Please select ROM file: "
  13.  
  14. echo "Your SEGA MD ROM folder is: "$ROMPATH
  15.  
  16. if [ -d $ROMPATH ]; then
  17.         echo "ROMPATH detected!"
  18. else
  19.         echo "WRONG ROM PATH! Please correct ROMPATH in `which SEGA_MD` file."
  20.         exit 1
  21. fi
  22.  
  23. cd $ROMPATH
  24. echo "Please select a MD ROM file:"
  25. echo "Press [Alt+Enter] to enable fullscreen mode."
  26. ROMS="`ls|sed -e 's/\\ /\\^/g' - `"
  27. #echo $ROMS
  28.  
  29. select ROM in $ROMS; do
  30.         if [ $ROM ]; then
  31.                 FILENAMECMD="echo \"$ROM\" |sed -e 's/\\^/\\ /g' -"
  32.                 FILENAME=`eval $FILENAMECMD`
  33.                 echo "You've selected $FILENAME"
  34.                 /usr/X11R6/bin/xrandr -s 1
  35.                 $EMU $ARGS "$FILENAME"
  36.                 /usr/X11R6/bin/xrandr -s 0
  37.                 break
  38.         else
  39.                 echo "Invalid selection, press [Ctrl + C] to quit."
  40.         fi
  41. done


文件名:GBA
BASH代码:
  1. #!/bin/bash
  2. ##############################
  3. # GBA emulator script        #
  4. ##############################
  5. # by Wells Wang              #
  6. # 2007-02-10                 #
  7. ##############################
  8.  
  9. ROMPATH="/mnt/ide3/roms/gba/"
  10.  
  11. echo "Your GBA ROM folder is: "$ROMPATH
  12.  
  13. if [ -d $ROMPATH ]; then
  14.         echo "ROMPATH detected!"
  15. else
  16.         echo "WRONG ROM PATH! Please correct ROMPATH in `which GBA` file."
  17.         exit 1
  18. fi
  19.  
  20. cd $ROMPATH
  21.  
  22. if [ -f "gba_bios.bin" ]; then
  23.         echo "GBA BIOS file detected!"
  24. else
  25.         if [ -f "~/.emu/gba_bios.bin" ]; then
  26.                 cp ~/.emu/gba_bios.bin .
  27.         else
  28.                 echo "Can not find GBA BIOS file, please download it and put it into GBA ROM folder."
  29.                 exit 1
  30.         fi
  31. fi
  32.  
  33. export GPSPKEYS=97,115,274,273,276,275,13,32,122,120
  34. /usr/X11R6/bin/xrandr -s 1
  35. gpsp
  36. /usr/X11R6/bin/xrandr -s 0


文件名:emu
BASH代码:
  1. #!/bin/bash
  2. ##############################
  3. # Emulator Launch Script     #
  4. ##############################
  5. # by Wells Wang              #
  6. # 2007-02-10                 #
  7. ##############################
  8.  
  9.  
  10. SCRIPTPATH="/mnt/ide/usr/local/bin/"
  11. EMUS="FC SFC SEGA_MD GBA"
  12. PS3="Please select an emulator: "
  13.  
  14. echo "Welcome to my GAME WORLD !"
  15. echo "Which emulator do you want to launch?"
  16.  
  17. select EMU in $EMUS; do
  18.         if [ $EMU ]; then
  19.                 $SCRIPTPATH$EMU
  20.                 break
  21.         else
  22.                 echo "Invalid selection, press [Ctrl + C] to quit."
  23.         fi
  24. done


把这些脚本放到/usr/local/bin目录下,并给它们可以执行的权限,这样,不管你在那个目录,只要输入一个emu命令,就能通过菜单选择的方式玩到你要玩的游戏了哦,而且,不进入X环境同样也能使用这个脚本哦。

脚本首先会问你要玩哪一种模拟器,选择后将列出你的卡上的该种模拟器的所有ROM文件供你选择。选择后便进入全屏模式玩游戏啦。

# emu
Welcome to my GAME WORLD !
Which emulator do you want to launch?
1) FC
2) SFC
3) SEGA_MD
4) GBA
Please select an emulator: 2
Your SFC ROM folder is: /mnt/ide3/roms/sfc
ROMPATH detected!
Please select a SFC ROM file:
Press Fn+2 to enlarge screen in fullscreen mode.
1) DarkHalf.zip            6) RoundTable.zip        11) ff5sc.zip
2) FF6.zip                 7) SecretOfEvermore.zip  12) tdcz.zip
3) FIFA^98.zip             8) ct.zip                13) zelda.zip
4) PaoPaoLong.zip          9) dhh2.zip
5) RomaceSaga3.zip        10) dq6cn.zip
Please select ROM file: 11


最后,为了方便大家,我把这些模拟器和我的脚本打成了一个ipk软件包,大家只要安装了这个软件包,就可以在终端下输入emu来方便的玩模拟器了:)

你可以到我的文件库下载我的 emu-package

如果您喜欢这篇文章,您可以点击下列链接收藏
Del.icio.us Yahoo书签 365Key网摘 天极网摘 我摘 POCO网摘 YouNote网摘 和讯网摘 博啦网
发布时间 发布于 2007-02-25 17:55:43 | 阅读次数 阅读过10362次 | 分类 Zaurus / ARM | 评论 9条评论