IBoy

From wikiPodLinux

(Redirected from GB Emulator)
The title of this article should be iBoy. The initial letter is capitalized due to technical limitations.
iBoy
Gameboy and Gameboy Color emulator for the iPod
Image:Iboy.png
Category Emulator
Maintainer Various
Last updated 31 Jan 2007
Version 0.7.5.4
Runs on All iPods
Requires an iPod, legal obtained ROMs
Download .zip format
Support iBoy Talk Page and  (http://www.ipodlinux.org/forums)


Table of contents

Progress

Ducky and Fellni have been working on porting gnuboy to the iPod. They have made releases on their Project Page (https://sourceforge.net/projects/iboy) over at Sourceforge (https://sourceforge.net/).

Further information and discussion can be found in various forum topics.

Key Releases

The list below consists of key releases of iBoy (Both experimental and non-experimental versions)

Version # Features Compatible with Notes
0.7.5.4 Support for Mini 2G, Support for diagonal directions. Gameboy color fixes for iPod 4G (Color) and Nano 1G. Better color accuracy for iPod 5G/5.5G 3G, 4G (Grayscale)?, 4G (Color), 5G, 1G Nano, Mini 2G
0.7.5 Support for 5G again, Faster opcodes, new caching algorithms, Gameboy color support with new kernel 3G, 4G (Grayscale)?, 4G (Color), 5G, 1G Nano Not entirely based on 0.7. Colors for GameBoy Color games on 5G not correct. Gameboy Color games not supported on iPod 4G (Color).
0.7a-0.7h Gameboy color support with new kernel 3G, 4G (Grayscale)?, 4G (Color)?, 1G Nano?
0.5.3 color Support for color iPods Photo?, 4G (Color)?, 5G?, 1G Nano?
0.5.3 New Coprocessor Handling for graphical routines, Several Display modes (down-scaling, cropping), Choosable desired speed 50% - 200%, Background Palette fix, Configurable through menu 4G (Grayscale)
0.3.3 color Support for color iPods Photo?, 4G Color?, 5G?, 1G Nano?
0.3.3 Dynamic binary translation, coop support, sound 4G (Grayscale) Save/Load broken
0.1.3 Mini-1G, Mini-2G, 4G (Grayscale) Customized 1G, 2G, 4G (Grayscale) binaries

Gameboy Color Notes

Starting with version 0.7 of iBoy, iBoy supports GameBoy Color games. Each iBoy release consists of two builds:

  1. iboy_oldkern - This build of iBoy is for the standard Linux kernel. It does not support Gameboy Color games.
  2. iboy_newkern - This build of iBoy requires a customized Linux kernel (http://downloads.sourceforge.net/iboy/kernel_bin.tar.bz2?modtime=1155292738&big_mirror=0), available on the SourceForge Project Page (https://sourceforge.net/projects/iboy).

The custom Linux kern was created because the regular kernel eats up a huge amount (80kb) of SRAM for the audio buffer. To solve this, the iBoy developers patched the kernel to allow the user to manually set buffer size through a syscall. It should be fully backward compatible with the old kernel. You can download the patches here if you want to compile it yourself.

Update: Many people have had problems getting the customized kernel to work properly with 5.5G iPods, reporting a fs mount error. This is because this kernel doesn't contain the patches for 5.5G iPods. LAva from the iPL forums has compiled a kernel including the iBoy patches that allows you to play GBC games using iboy_newkern. It also contains a patch to fix a general volume bug for 5G and 5.5G iPods. Download lava_kernel.bin from here (http://www.ipodlinux.org/forums/viewtopic.php?t=25014), then rename it to iboy_kernel.bin, and use in place of the customized linux kernel in the following instructions.


After downloading the custom kernel, you can either replace your old one, or give the custom kernel a different name and place it on your iPod's Linux partition. If you are using the Loader2 to load iBoy, you can adjust the path in your loader.cfg file to point to the new kernel. For example, the following line could appear in your loader.cfg file:
iBoy 075 @ (hd0,1)/newkern.bin /bin/iboy

where hd0,1 corresponds to the FAT (Windows) partition of your iPod. If you do not install the custom Linux kernel, iboy_newkern may still work; however, many users have reported that if sound is enabled (via OSS_ENABLED setting), then ROMs will no longer work. To fix this problem, you must install the custom Linux kernel.

Limitations

  • Version 0.1.3 is only supported on: 4G, Mini-1G.
  • There are experimental versions for the 3G, Mini-2G, Nano, Color, Photo, and 5G(Video) -- Experimental builds for 0.3.3 (we are now up to 0.7.5) are in development for all color ipod versions.
  • 100% emulation speed with approx 85% of roms.
  • 44.1 KHz Stereo Sound.
  • Controls work by touching the wheel at different positions. This makes pressing two buttons (areas of the wheel) at the same time a problem.
  • In stretch mode, the screen is cropped, meaning pixels are lost around the edges. (Y-Axis toggle available)
  • Not all roms work; a status list of tested roms is available here
  • We now have Gameboy roms in full color on Nano's and Photos.

To be completed

  • Further optimization
  • Nano and 4G menu issue (sometimes, hold switch needs to be 'flicked' more than once)

Usage

Remember: these controls are set by default and can be changed via the iboy.cfg. Please see iBoy Configuration.

Use the hold switch to access the iBoy Menu.

Controls

Controls for all iPod's except the 1G-Mini are used by lightly touching different locations on the scroll wheel.

Touch the left side of the wheel Left
Touch the right side of the wheel Right
Touch the top of the wheel Up
Touch the bottom of the wheel Down
Touch the upper right corner of the wheel A
Touch the upper left corner of the wheel B
Touch the bottom right corner of the wheel Start
Touch the bottom left corner of the wheel Select

Mini-1G Controls

The Mini-1G uses a different type of wheel than the newer iPods, so most of the controlling is done using the buttons.

Previous Button Left
Next Button Right
Wheel Counter-Clockwise Up
Wheel Clockwise Down
Select Button A
Play / Pause B
Menu Start
No Default Specified Select

Downloads

Experimental Builds

Note: Experimental Versions use the standard style controls (touching the wheel at different positions), not the Mini-1G controls

  • Customized Linux Kernel (http://downloads.sourceforge.net/iboy/kernel_bin.tar.bz2?modtime=1155292738&big_mirror=0). This is required for the iBoy_newkern build included in iBoy 0.7 and 0.7.5, which allows one to play Gameboy Color games.
  • iBoy 0.7.5.4 (http://ipodlinux.org/Image:Iboy0754.zip) Better color accuracy for all Color iPods (GB grayscale games), Mini scaling improvements
  • iBoy 0.7.5.3 (http://ipodlinux.org/Image:Iboy0753.zip) Better color accuracy for iPod 5G/5.5G
  • iBoy 0.7.5.2 (http://ipodlinux.org/Image:Iboy0752.zip) Fixes for Nano 1G, iPod 4G (Color)
  • iBoy 0.7.5.1 (http://ipodlinux.org/Image:Iboy0751.zip) Support for Mini-2G. Also support for diagonal directions controlled via iboy.cfg.
  • iBoy 0.7.5 PAL (https://sourceforge.net/project/showfiles.php?group_id=144523&package_id=197970). Slightly different color palette than 0.7.5. This version is usually not preferred to 0.7.5.
  • iBoy 0.7.5 (https://sourceforge.net/project/showfiles.php?group_id=144523&package_id=197970)
  • iBoy 0.7.0b - 0.7.0f binaries (https://sourceforge.net/project/showfiles.php?group_id=144523&package_id=197970)
  • Experimental All Color iBoy Alpha 0.7.0 Binary (http://prdownloads.sourceforge.net/iboy/iboy-0.7.0-alpha-binary.tar.bz2?download). Customize even more, 3G support, color works, but is still in Alpha stage. Discussion for this is located on this page (http://ipodlinux.org/forums/viewtopic.php?t=15025)
  • Experimental All Color iBoy 0.5.3 Binary (http://brandon-holland.com/downloads/software/iboy-color-0.5.3-bin.tar.gz). Color support and a couple of bug fixes. Discussion for this is located on this page (http://ipodlinux.org/forums/viewtopic.php?t=13665)
  • Experimental All Color iBoy 0.3.3 Binary (http://brandon-holland.com/downloads/software/iboy-color-0.3.3-bin.tar.gz)

Experimental Source Code

Project

For newer builds of iBoy see "Experimental Builds".

Installation

General Tips

There are three recommended ways to run iBoy:

  1. From the Loader2 menu before Linux boots up. This is probably the easiest way to install iBoy on both Windows and Linux/Mac OS.
  2. From the External Application Launcher in Podzilla2
  3. From the File Browser in Floydzilla

If you have installed iPodLinux using the official installer, you can have Loader2 automatically installed on your iPod.

Unix/Mac OS X: Manual Installation for iBoy 0.7.5 or newer

These instructions are not relevant if you have Floydzilla installed. Floydzilla automatically installs iBoy for you, but it must be updated through a separate procedure.

  1. Download or build a recent version of iBoy that is compatible with your iPod
  2. Mount your iPod on your computer
  3. Copy the binaries (named "iboy_oldkern" and "iboy_newkern") to "/bin/"
    cp iboy_newkern iboy_oldkern /mnt/ipod/bin/
  4. Create the file "iboy.cfg" using your favorite text editor. Here is an example file:
    romdir=/home/roms/
    savedir=/home/saves/
  5. Copy the file "iboy.cfg" to "/etc/"
    cp iboy.cfg /mnt/ipodroot/etc/
  6. Create a Directory to put your ROMs and Save Files
    mkdir -p /mnt/ipod/home/roms
    mkdir -p /mnt/ipod/home/saves
  7. Copy your ROMs to the Directory "/home/roms/" on the ipod.
  8. If you want to play Gameboy Color games, you need to install the updated kernel. Copy it to /mnt/ipod/ as iboy_kernel.bin
  9. If you have Loader2 installed, edit or create a loader.cfg file and add the following lines.
    - iBoy new @ (hd0,2)/iboy_kernel.bin /bin/iboy_newkern
    - iBoy old @ (hd0,2)/linux.bin /bin/iboy_oldkern
  10. Unmount, Boot iPL, and Enjoy! iBoy should now be a menu option on Loader2. If you do not have Loader2 but have the External Application Launcher installed, you can use that to run iBoy.
  11. If you want to play Gameboy Color games, you will also need to install the updated kernel.

Windows: Manual Installation for iPod with Launcher2 for iBoy 0.7.5 or newer

By using Launcher2, you do not need to access your Linux ext2 partition while installing iBoy. Thus, this method is the one we recommend. These instructions are not relevant if you have Floydzilla installed. Floydzilla automatically installs iBoy for you, but it must be updated through a separate procedure.

  1. Download or build a recent version of iBoy that is compatible with your iPod
  2. Mount your iPod on your computer
  3. Create folders for your gameboy ROMs and saved games. e.g. gameboy/rom and gameboy/save.
  4. Copy the binaries (named "iboy_oldkern" and "iboy_newkern") to the root of your iPod Windows drive.
  5. Create the file "iboy.cfg" using your favorite text editor. Here is an example file:
    romdir=/hp/gameboy/rom/
    savedir=/hp/gameboy/save/
  6. Copy the file "iboy.cfg" to the root of your iPod drive.
  7. Copy all of your ROMs to the appropriate directory on your iPod drive. Make sure they all have the .gb or .gbc extension.
  8. If you want to play Gameboy Color games, you need to install the updated kernel. Copy it to the root of your iPod Windows Drive as iboy_kernel.bin
  9. To run iBoy from Launcher2, you must create or edit your loader.cfg file and add the following lines:
    - iBoy new @ (hd0,1)/iboy_kernel.bin /mnt/iboy_newkern
    - iBoy old @ (hd0,2)/linux.bin /mnt/iboy_oldkern
    You should place this file in the root directory of your iPod Windows partition. Now, upon booting up your iPod, you can immediately run iBoy, bypassing Podzilla entirely.


Testing

A status list for tested ROMs is available here.


Compiling iBoy

First, download the source code for iBoy. You will want to download the latest version that works on your iPod (see above).

Unix/Mac OS X

  • Compile for a 4G by simply typing:
make

or

  • Compile 0.1.3 for a Mini-1G by typing:
make IPOD_VERSION=IPOD_MINI

Windows

  • Compile for a 4G in cygwin by typing:
make

or

  • Compile 0.1.3 for a Mini-1G in cygwin by typing:
make IPOD_VERSION=IPOD_MINI

Screenshots

iBoy on a Linux Desktop
Enlarge
iBoy on a Linux Desktop
iBoy on a 4th Generation iPod.
Enlarge
iBoy on a 4th Generation iPod.
iBoy on an iPod Nano.
Enlarge
iBoy on an iPod Nano.


Screen Resolution Discussion

Gameboy and Gameboy Color have a 160x144 LCD. Gameboy supports 4 shades of gray whereas Gameboy Color supports ~56 colors.

Since there are many iPod models with different LCD resolutions, iBoy must be configured appropriately for your iPod. In recent builds, iBoy has supported different iPod screens through the LCD_MODE and the MINI_H_MODE settings. LCD_MODE implements vertical scaling and positioning and MINI_H_MODE implements horizontal scaling and positioning.

iPod Mini 1G/2G Because the iPod Mini has a 138x110 LCD, the Gameboy screen must be shrunk in both the horizontal and vertical direction. This is accomplished with the LCD_MODE (y-scaling) and MINI_H_MODE (x-scaling) settings. Set LCD_MODE to SCALE and MINI_H_MODE to X-SCALE.

iPod Nano 1G The iPod Nano has a 176x132 LCD, and thus shrinking is required in the y-dimension through use of the LCD_MODE=SCALE setting. The iBoy screen will be centered horizontally with a small border on left and right.

iPod 3G/4G (Grayscale) The iPod 3G and 4G (Grayscale) has a 160x128, and thus shrinking is required in the y-dimension through use of the LCD_MODE setting.

iPod 4G (Color) The iPod 4G (Color) has a 220x176 LCD, and thus no shrinking is required, but positioning is still possible. The iBoy screen is nominally centered in the LCD with a border around it.

iPod 5G The iPod 5G (Video) has a 320x240 LCD, and thus no shrinking is required, but vertical positioning is supported. The iBoy screen is nominally scaled by 2x in the x-direction to fill up the iPod LCD horizontally.

Videos

  • A video of Mario Deluxe on a nano (iboy 0.7.0) - Download (http://stud3.tuwien.ac.at/~e0302730/iboy_color_nano_test.avi)
  • A video of Super Mario Land on a nano (iBoy 0.7.5) - [1] (http://video.google.com/videoplay?docid=9096211073897377361)
  • A video of Mario on the iPod - Download (http://stud4.tuwien.ac.at/~e0325802/mario.avi)
Retrieved from "http://ipodlinux.org/IBoy"
Views