zodttd / gameboy4iphone
- Source
- Commits
- Network (5)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Tree:
d25b16a
gameboy4iphone / README
| d25b16ad » | zodttd | 2008-04-28 | 1 | ||
| bf4e5121 » | ME | 2008-04-28 | 2 | GNUBOY README | |
| 3 | |||||
| 4 | |||||
| 5 | INTRO | ||||
| 6 | |||||
| 7 | Welcome to gnuboy, one of the few pieces of Free Software to emulate | ||||
| 8 | the Game Boy handheld game console. Written in ANSI C with a few | ||||
| 9 | optional assembler optimizations for particular cpus, gnuboy supports | ||||
| 10 | a wide range of host systems, and has been tested successfully on: | ||||
| 11 | |||||
| 12 | GNU/Linux | ||||
| 13 | FreeBSD | ||||
| 14 | OpenBSD | ||||
| 15 | BeOS | ||||
| 16 | Linux/390 (IBM S/390 Mainframe) | ||||
| 17 | SunOS/Sun Ultra60 | ||||
| 18 | IRIX/SGI O2 | ||||
| 19 | IRIX/SGI Indy | ||||
| 20 | AIX/Unknown | ||||
| 21 | DR-DOS | ||||
| 22 | MS-DOS | ||||
| 23 | Windows DOS box | ||||
| 24 | Windows 9x/NT/2k | ||||
| 25 | |||||
| 26 | Additionally, gnuboy should run on any other *nix variants that have | ||||
| 27 | ANSI C compilers and that are remotely POSIX compliant. As gnuboy is | ||||
| 28 | Free Software, you're welcome to fix any problems you encounter | ||||
| 29 | building it for a particular system, or to port it to entirely new | ||||
| 30 | systems. | ||||
| 31 | |||||
| 32 | |||||
| 33 | EMULATION | ||||
| 34 | |||||
| 35 | gnuboy emulates nearly all aspects of the (Color) Gameboy, including | ||||
| 36 | all of the following and much more: | ||||
| 37 | |||||
| 38 | Full GBZ80 instruction set. | ||||
| 39 | Scanline-based LCD engine. | ||||
| 40 | Ten sprites per scanline limit. | ||||
| 41 | Support for all CGB graphics extensions. | ||||
| 42 | Sprite DMA, HDMA, and GDMA. | ||||
| 43 | All four sound channels including digital samples. | ||||
| 44 | MBC1, MBC2, MBC3 (including clock), and MBC5 mappers. | ||||
| 45 | Wave pattern memory corruption when sound channel 3 is played. | ||||
| 46 | Pad, timer, divide counter, and other basic hardware registers. | ||||
| 47 | CGB double-speed CPU mode. | ||||
| 48 | |||||
| 49 | Aspects not emulated at this time include: | ||||
| 50 | |||||
| 51 | * Serial IO (link cable). | ||||
| 52 | Undocumented 'extra' ram in OAM space on Gameboy Color. | ||||
| 53 | All Super Gameboy extensions. | ||||
| 54 | * GBC, HuC1, and HuC3 IR ports. | ||||
| 55 | * Obscure mappers such as TAMA5. | ||||
| 56 | Sorting sprites by X coordinate in DMG mode. | ||||
| 57 | HALT instruction skipping in DMG mode. | ||||
| 58 | CPU stalls during HDMA and GDMA. | ||||
| 59 | |||||
| 60 | Only the two marked by * are known to affect the playability of | ||||
| 61 | actual games or demos; the rest are just listed for completeness' | ||||
| 62 | sake. | ||||
| 63 | |||||
| 64 | |||||
| 65 | FEATURES | ||||
| 66 | |||||
| 67 | In addition to basic emulation, gnuboy provides the following | ||||
| 68 | features: | ||||
| 69 | |||||
| 70 | Highly flexible keybinding and configuration subsystem. | ||||
| 71 | State saving and loading at any point. | ||||
| 72 | Very precise timing/synchronization, preserved across save/load. | ||||
| 73 | Joystick support on Linux, DOS, and all SDL-based ports. | ||||
| 74 | Fully customizable palettes for DMG games. | ||||
| 75 | Screen scaling by a factor of 2, 3, or 4 in all ports. | ||||
| 76 | Hardware-based screen scaling on platforms where it's available. | ||||
| 77 | Debug traces to stdout. | ||||
| 78 | Dynamic palette allocation when run in 256-color modes... | ||||
| 79 | OR simulated 3/3/2 bits per channel in 256-color modes. | ||||
| 80 | |||||
| 81 | For information on configuring and using these features, see the | ||||
| 82 | additional documentation in the "docs" directory. | ||||
| 83 | |||||
| 84 | |||||
| 85 | COMPATIBILITY | ||||
| 86 | |||||
| 87 | Out of over 300 results reported by testers, all games are known to | ||||
| 88 | work perfectly on gnuboy with the following exceptions: | ||||
| 89 | |||||
| 90 | Fighting Phoenix (Japanese) may or may not work since it uses the | ||||
| 91 | HuC1 memory controller, which is not implemented properly. There has | ||||
| 92 | been no report either way so far. | ||||
| 93 | |||||
| 94 | Pocket Bomberman (Japanese version, which uses HuC1) runs, but can | ||||
| 95 | be made to crash if the player jumps into the ceiling in the first | ||||
| 96 | level. It's not clear whether this bug is MBC-related, something | ||||
| 97 | else, or an actual bug in the original game. | ||||
| 98 | |||||
| 99 | Monster Go! Go! Go! (Japanese) is unplayable. The cause of the | ||||
| 100 | problem is not fully known, but it's either a very bad dump or it's | ||||
| 101 | using some sort of specialized MBC that's not documented. | ||||
| 102 | |||||
| 103 | Final Fantasy Adventure has visual problems with the fade between | ||||
| 104 | screens. Does not affect gameplay. | ||||
| 105 | |||||
| 106 | Bubble Bobble 2 has some minor tile glitches right before gameplay | ||||
| 107 | actually begins. Cause unknown. Does not affect gameplay. | ||||
| 108 | |||||
| 109 | Alone in the Dark is reported to have minor visual glitches. I | ||||
| 110 | haven't seen it myself so I can't judge their severity. | ||||
| 111 | |||||
| 112 | Both new Zelda games are reported to have a visual glitch at the | ||||
| 113 | beginning of the game, and on certain other screens. I haven't seen | ||||
| 114 | the problem myself, but supposedly it impacts gameplay to some | ||||
| 115 | extent. | ||||
| 116 | |||||
| 117 | Please report any other incompatibilities discovered directly to | ||||
| 118 | gnuboy@unix-fu.org, so that they can be documented and hopefully | ||||
| 119 | fixed. | ||||
| 120 | |||||
| 121 | |||||
| 122 | FUTURE / WISHLIST | ||||
| 123 | |||||
| 124 | Here's a brief list of what may appear in gnuboy in the future: | ||||
| 125 | |||||
| 126 | Screenshots. | ||||
| 127 | Integrated debugger. | ||||
| 128 | Super Gameboy support. | ||||
| 129 | Serial link over the internet. | ||||
| 130 | Serial link to a real Gameboy with a custom cable. | ||||
| 131 | Configurable color filters to provide more authentic LCD look. | ||||
| 132 | Custom colorization of DMG games on a per-tile basis. | ||||
| 133 | Support for more colorspaces in the hardware scaler. | ||||
| 134 | Recording audio. | ||||
| 135 | GBS player built from the same source tree. | ||||
| 136 | Full recording and playback of emulation. | ||||
| 137 | So-called "high level emulation" of certain typical dumb loops. | ||||
| 138 | |||||
| 139 | Features that are not likely to appear soon or at all include: | ||||
| 140 | |||||
| 141 | Rumble support - this would be nice, but SDL doesn't seem to support | ||||
| 142 | force-feedback yet. We'll see about it in the long-term though. | ||||
| 143 | |||||
| 144 | Eagle/2xSaI/etc. - probably not feasible since these libraries don't | ||||
| 145 | appear to be compatible with the terms of the GPL. We might work on | ||||
| 146 | our own interpolation engine eventually, but that's low priority. | ||||
| 147 | |||||
| 148 | GUI/GUI-like features - such things are best handled by external | ||||
| 149 | front-ends. We might eventually add a mechanism for external | ||||
| 150 | programs to communicate with gnuboy and reconfigure it while it's | ||||
| 151 | running, however. | ||||
| 152 | |||||
| 153 | Plugins - NO! The way I see it, plugins are just an attempt to work | ||||
| 154 | around the GPL. In any case, even if you are adding plugin support | ||||
| 155 | yourself, you are bound by the terms of the GPL when linking ANY | ||||
| 156 | code to gnuboy, including dynamic-linked modules. However we'd | ||||
| 157 | rather not deal with this mess to begin with. | ||||
| 158 | |||||
| 159 | Compressed ROMs/Saves - this one is very iffy. On most systems, this | ||||
| 160 | is redundant; *nix users can just pipe the rom through a | ||||
| 161 | decompression program, and Windows users can just double-click or | ||||
| 162 | drag files from their favorite GUI unzipper program. Linking to zlib | ||||
| 163 | isn't really acceptable since it's massively bloated and we don't | ||||
| 164 | want to include it with gnuboy or add external dependencies. We may, | ||||
| 165 | however, write our own tiny decompressor to use at some point. | ||||
| 166 | |||||
| 167 | Ideas and suggestions for other features are welcome, but won't | ||||
| 168 | necessarily be used. You're of course also free to add features | ||||
| 169 | yourself, and if they fit well into the main tree they may eventually | ||||
| 170 | get included in the official release. See the file HACKING for more | ||||
| 171 | details on modifying and/or contributing. | ||||
| 172 | |||||
| 173 | |||||
| 174 | THANKS | ||||
| 175 | |||||
| 176 | Thanks goes out to everyone who's expressed interest in gnuboy by | ||||
| 177 | writing -- users, porters, authors of other emulators, and so forth. | ||||
| 178 | Apologies if we don't get a personal response out to everyone, but | ||||
| 179 | either way, consider your feedback appreciated. | ||||
| 180 | |||||
| 181 | |||||
| 182 | EPILOGUE | ||||
| 183 | |||||
| 184 | OK, that looks like about it. More to come, stick around... | ||||
| 185 | |||||
| 186 | |||||
| 187 | |||||
| 188 | -Laguna <laguna@aerifal.cx> | ||||
| 189 | |||||
| 190 | |||||
| 191 | |||||
| 192 | |||||
| 193 | |||||
| 194 | |||||
| 195 | |||||
| 196 | |||||
| 197 | |||||
| 198 | |||||
| 199 | |||||

