Lameboy

From PHWiki

Lameboy is a Gameboy and Gameboy Color emulator for the DS by nutki. Originally a PC-side emulator coded in C, Nutki decided to port it to the DS because Goomba Color was for the GBA only and therefore was unavailable to slot-1 users. As of June 2007, it is the most usable GB/GBC emulator for the DS. If Goomba Color is ported to the DS, however, this may change.

While originally Lameboy did not restrict games to 60 frames per second, making some games run too fast, version 0.7 added frame limiting in addition to "fast mode" with L, which removes the fps limit and adds a frameskip of 7 (renders every 8th frame).

Lameboy currently is able to emulate preliminary sound, which sounds remarkably good considering that it takes the approach of emulating all sound in software. Goomba Color does not emulate sound in software like this because it passes all audio commands to the programmable sound generator (PSG) that is present in all revisions of the Game Boy, GBC, and GBA (and the DS when in GBA mode). However, this Game Boy PSG is not accessible in DS mode, and the PSG in DS mode has significantly different behavior from the Game Boy PSG, so hardware audio emulation would not be as easy for Lameboy.

Lameboy previously had issues with some save files, most notably the Pokemon games, but these appear to have been worked out. RTC has been implemented and was released in version 0.9.

Since version 0.10, Lameboy now also supports Super Gameboy Borders, SGB Color Palettes and other new Features (see Features List above).

Other ideas that may or may not appear in future versions include IR/link port emulation, and Gameshark/GameGenie support.

The current version of Lameboy as of April 19, 2008 is v0.11

Contents

Features

  • High compatibility
  • Full speed for many games
  • Support for large games greater than 2 MB in size
  • Zipped ROM support for games smaller than 2 MB
  • "Fast Mode" with L-trigger
  • Preliminary sound support
  • Auto save on exit to menu
  • RTC emulation
  • Pseudo bilinear upscaling mode
  • Super Game Boy borders and coloring support
  • Rumble emulation with slot 2 devices with rumble
  • Green color scheme option emulating original Game Boy color palette (green to very light green)
  • Configurable X/Y Keys
  • Save states
  • Main menu

Installation

  1. Patch lameboy.nds file with proper DLDI file for your device.
  2. Copy the patched lameboy.nds to any folder on your media card.
  3. Copy your GB/GBC roms to your device. The default location is a folder called "lameboy" on the root of your card, but the games can be located anywhere on the card because Lameboy includes a file browser.

Key Mappings

When in the file browser menu:

  • Up and Down - scroll through the files one at a time
  • Left and Right - scroll through the files one page at a time
  • A - run selected game

When in-game:

  • Up, Right, Left, Down, A, B, Start, Select - mapped to GB keys
  • X - (configurable) save contents of battery RAM to .sav file (without returning to ROM selection menu)
  • Y - (configurable) toggle between normal mode / full screen upscaling mode / pseudo bilinear upscaling mode
  • L + R - save contents of battery RAM to .sav file and return to rom selection menu
  • Hold L - fast mode

Change Log

v0.11

   * changed: optimized software renderer
   * changed: optimized cpu core
   * fixed: multiplayer pad reading in SGB games (Battle Arena Toshinden and others)

v0.10

   * changed: updated devkitARM and associated libraries to r21
   * fixed: STOP opcode (fixes Konami Collection 2 JP & 4 JP)
   * fixed: found and reverted patch that caused problem with pumpkin level in Mario Land 2
   * fixed: another change in interrupt handling to fix Monster Rancher Explorer
   * fixed: palette change effects
   * fixed: interrupt enable register, fixes graphic glitches in Pokemon Pinball and Donkey Kong
   * fixed: DAA opcode flags
   * added: Super GameBoy borders and coloring support
   * added: rumble emulation with slot 2 rumble pak
   * added: menu
   * added: green color scheme for classic gb
   * added: configurable x/y key functions
   * added: save states

v0.9

   * fixed: joypad register emulation (fixes Wario Blast)
   * fixed: GBC hdma (fixes Pokemon Crystal graphics)
   * fixed: interrupt flags emulation (fixes Bouble Bobble)
   * fixed: V-blank interrupt timing (fixes Altered Space)
   * fixed: split window emulation (fixes Donkey Kong graphics)
   * fixed: GB timer initialization (fixes Pokemon Pinball)
   * added: fake serial interrupts (fixes many early games)
   * added: RTC emulation
   * added: pseudo bilinear upscaling mode

v0.8

   * fixed: GBC speed change did not work for some games (like Mario Bros Deluxe)
   * fixed: interrupt priority
   * fixed: corrected timers interrupt frequency
   * fixed: tile in foreground color 0 is transparent
   * added: preliminary sound emulation
   * added: auto save on exit to rom menu

v0.7

   * fixed: less interscreen video glitches
   * fixed: correct flag bits locations, helps Zelda Oracle of Ages
   * fixed: window size overflow, helps with menu in both Zelda Oracles
   * added: 60fps emulation speed sync
   * added: fast mode with L button
   * added: cpu emulation optimizations, more games run fullspeed

v0.6

   * fixed: 32k save (helps Pokemon S/G/Y, Dragon Warrior III)
   * added: supports roms larger than 2MB (only unzipped - .gbc)
   * fixed: directory browsing history

v0.5

   * changed: new faster display method (with triple buffering), may cause visual
     glitches with games using pallette based effects
   * added: fps display
   * fixed(?): video modes emulation, helps for some games but messes with others
   * added: rom selection menu sorting, key repeat and position history
   * fixed: inverted GBC sprite priorities

v0.4

   * fixed: Zelda Oracle hang after first screen
   * added: implemented GBC tile in foreground priority attribute

v0.3

   * added: "ADD SP, #xx" instruction fix, (helps many games compatibility including Pokemon Card 2 and DK Land)
   * fixed: CGB HDMA bug
   * fixed: MBC type 0x13 correctly recognized (now save works in Pokemon Red/Green/Blue)
   * added: powersaving when NDS closed during emulation

v0.2

   * added: Zipped rom support

v0.1 (Initial Release)

Messaged posted by Nutki originally from DS-Scene forum thread:

   Hi all at DS Scene

   About 5 years ago I have wrote partial gameboy emulator in C purely for fun, so it never gone public. To try some NDS programming I have just ported it NDS. As there is no DLDI emu realesed for NDS I decided to add support for it and release here. Rom selection menu is based on work done for StellaDS by spathi-wa from r4ds forums.

   Some emulator (mis)features:
   - no sound emulation
   - no or incorrect serial/ir/dma/cpu emulation
   - no realtime sync, game will go as fast as it can
   - full speed for games that use less than about 50% of GB CPU
   However some games are playable anyway.

   How to use:
   - copy rom files to /lameboy/ dir on your flash card
   - run lameboy.nds and select rom
   - in game keys:
   -- L+R - back to rom select
   -- Y - switch fullscreen upscaling on/off
   -- X - save persistant ram to .sav file
 
   Note that this is compatible with DLDI, and that the download below is prepatched with just the R4 DLDI file. Patch it for your specific device before loading it onto your card.

See Also

GNUboy DS, Goomba, Goomba Color

Links