Homebrew Emulation GameYob, a gameboy emulator for DS

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
GameYob is an open-source Gameboy and Gameboy Color emulator, developed by me (Drenn), for the Nintendo DS. It has plenty of features that makes it a very complete application, like save states, mappable buttons, fast forwarding, rumble pak support and much more.
GameYob does not run Gameboy Advance games and never will - see here or here for GBA emulators.

See here for GameYob 3DS.

Downloads:
GameYob v0.5.2: Newest stable release. The FAQ below applies to this version.
GameYob Border Pack (last updated 26 Jan 2014): A collection of borders made by members of GBATemp! Extract to the root of your SD card.

Known Issues (v0.5.2)
- Having "autosaving" enabled (as it is by default) can cause lag in some games. You may want to disable this feature; if you do, you will need to exit out of the game before exiting GameYob itself, or you will lose your progress.
- When running as a CIA on a New 3DS, the "touch" input gets spammed automatically. Adjust the "Key Config" settings to disable touch input.
- The screen sometimes goes black after opening the menu or loading from a suspend state. Toggle the menu to fix it.

Changelog
Version 0.5.2

- Updated to DevkitARM r46 for better DSi support.
- Added an installable CIA file to run as DSiWare.
- Certain 3DS-side launchers such as TWLoader now work again.
- Added "touch" as a configurable button.
- When running as a CIA on the New 3DS, the "touch" input gets spammed for no reason.
It can now be disabled as a workaround.

Version 0.5.1:

- Savegame management has been modified to prevent corruption as reported by some.
- Autosaving is laggier due to the above. Consider turning it off.
- The configuration file has been moved from "gameyob.ini" to "gameyobds.ini" to prevent
conflicts with GameYob 3DS.
- A "single-screen mode" has been added.

Version 0.5:

- Added Gameboy Printer emulation
- Added GBS playback feature
- Added "scale" button
- Semi-overhauled menu: now colorized, and does not interrupt emulation.
- Improved Super Gameboy emulation
- Selectable custom borders
- Reduced autosaving lag (results may vary between flashcards and SD cards)
- Implemented the halt bug (fixes The Smurfs)
- Wram register has unused bits set (fixes Metal Gear Solid)
- More fixes to emulation accuracy, sound, etc
- Stability fixes (most notably for sleep mode), many other minor bugfixes

Version 0.4.1:

- Fixed "save" button (which was bugged) and reduced autosaving lag

Version 0.4:

- New Icon by Corbin Davenport
- Implemented Super Gameboy support
- Implemented scaling (for those who don't like borders)
- Implemented custom borders (for those who don't like scaling)
- Implemented autosaving (causes lag in some games; off by default)
- Added "Detect GBA" option to access the advance shop in the Oracle games
- Added Fast Forward toggle button
- Added "Sound Fix" option for very accurate sound timing; it may use more power.
- Added Rumble Pak Support for Ez-3in1 and Warioware Twisted carts (thanks to windwakr)
- Added support for Gameshark and Game Genie codes (thanks to LemonBoy)
- Support for Rockman 8, HuC1/HuC3 mappers and Robopon games (thanks to LemonBoy)
- Second screen's backlight is disabled when not needed to save power
- (partial) Stereo sound emulation
- More improvements to emulation & sound accuracy

Version 0.3:

- Surpasses Lameboy in speed by about 10 FPS, thanks to optimizations by Nebuleon and myself
- Added fast forward mode (courtesy of Nebuleon)
- Added support for many exotic graphical effects & fixed screen-change graphical bugs
- Added MBC2 support (for Kid Icarus, Final Fantasy Adventure)
- Added save states and suspending (temporary states)
- Added option to save settings to gameyob.ini
- Added HIGHLY EXPERIMENTAL NiFi link cable emulation (works with Tetris, Dr. Mario, and Pokemon if you're lucky)
- Fixed various emulation bugs, increasing compatibility
- Fixed many causes of crashes (DSi mode works now)
- Soft resetting works (L+R+Start+Select)
- 100% remappable controls
- Sound bugfixes

Version 0.2:

- Fixed some sound emulation bugs
- Fixed sleep-mode crashes
- Fixed window behaviour when modified mid-frame (fixes text in Resident Evil Gaiden)
- Fixed interrupt behaviour (fixes boss intros in Megaman V & passes blargg's cpu test #2)
- Fixed crashes in some games without sram (Avenging Spirit)
- Set default # of ram banks to 4 (workaround for Japanese Crystal)
- Added GBC Bios support
- Added "B/Y" control option
- Added a little clock
- Capitalized rom extensions are detected properly

Version 0.1.2:

- Fixed Z flag for sla (hl) and rl (hl) opcodes

Version 0.1.1:

- Removed limit on number of files per directory
Frequently Asked Questions

How's the compatibility? What about Shantae?
The vast majority of Gameboy and Gameboy Color games run at fullspeed, including fan-favorite Shantae, and beta versions of Resident Evil. Sound is also pretty good, with support for Pikachus's cry or Warlocked voiced effects, for example.

How can I report a bug?
The preferred method to report bugs is to open an issue on github, or just make a post here on gbatemp.

How do I save?
Whenever you save in-game, the save file (or SRAM) must be copied to the SD card. There are a few ways to do this:

Method A) After saving in-game, press the X button (by default) to copy the SRAM to your SD. The "Exit" option also does this before exiting.
Method B) Enable autosaving. The SRAM on the SD card will be updated automatically, but this can cause lag in some games which use SRAM as extra memory.

It's highly recommended to at least try autosaving, for a more seamless experience. It's enabled by default as of v0.5.

NOTE: There is a bug in the Robopon games which requires you to use save states.

Are lameboy's save states compatible with gameyob?
Hard saves (like .sav files) can be used between gameyob, lameboy, and most GB/GBC emulators. Save-states, on the other hand, are unique to each one of them, and could be used on other emulators if they shared the method of creating and loading saves. Lameboy save states are unusable on other emulators because it's source is closed and never was released to anyone.

How do I set the default rom directory?
Fill in the “rompath” option in gameyob.ini to the directory of your choosing. For example,
Code:
rompath=/roms/gb/

Can I use the 3DS/DS fullscreen?
Yes, GameYob supports scaling and filtering. Go to the [Display] tab of options and you can select scaling options such as "Aspect" and "Full", and enable or disable the scaling filter.

Because I "cheated" by using both rendering engines to perform scaling, the bottom screen is always off when scaling is enabled.

Can I use cheats?
Gameshark and Game Genie codes are supported. In the [Settings] tab you can find the option "Manage Cheats". Gameyob supports BGB .CHT files, so you need to have them in your SD in order to access the option. They must be named identically to the rom, with the extension ".cht".

Here's some places where you can start to look:
Gameboy Cheat Files
Gameboy Color Cheat Files
How to Manually Create GameYob Cheat Files

Can I use Cable Link features?
Gameyob can use the ds's local wireless (sometimes called "nifi") for multiplayer functions. This feature is experimental, and only seems to work reliably with Tetris and Dr. Mario. Further improvements can be made, but they may be difficult to implement. Simply enable the "Wireless Link" option on both DS's to use link cable features.

What does "GBC Bios" mean?
If you have the corresponding "gbc_bios.bin" file in your ROM directory (you can find it on google), you can turn this option on to get colorized Gameboy games like you you would have if you were playing them on GBC hardware. The file's location can also be specified in “gameyob.ini”. A prime example is Metroid II: Return of Samus, which gets individual palettes for Samus, enemies and items instead of being monochromatic.

You can also pick different palettes by pressing the directional pad and the AB buttons while the boot up "GAME BOY" logo is flashing.

This is 100% optional and it has no affect on performance or emulation accuracy.

How do I use Custom Borders?
You need to have scaling off, and "Custom Borders" on. Then press "Select Border" in the menu to load the border. Press "Save Settings" for GameYob to auto-load the border next time.
If you want to make your own border, be sure to save it as a 256x192, uncompressed, 15bpp bitmap image.

What does "Detect GBA" mean?
Certain games can detect if they're being played on a GBA: they use lighter palettes which are easier to see on a GBA, the Zelda Oracle games have a special "Advanced" shop, Shantae has features like a unique NPC in Bandit Town, a new dance and more. This option toggles that.

What does "Sound Timing Fix" mean?
This option makes sound emulation more accurate, while potentially using more power. Most notably it fixes Pikachu in Pokemon Yellow / Pinball, but it also makes many subtle improvements to other sound effects. Results are optimal when scaling is disabled, but this is not a requirement. It's recommended to leave this option on.

If you experience slowdown when this option is enabled, be sure to disable the “Wait for Vblank” option in the debug settings.

Is it Sudokuhax compatible?
Yes, you can use the DSi's enhanced capabilities for full-speed in even the most intense games, and some crazy fast-forwarding. An installable CIA is also provided for hacked 3DS's.
 
Last edited by Drenn,

PJM

Well-Known Member
Newcomer
Joined
Apr 28, 2012
Messages
87
Trophies
1
Location
NS
XP
208
Country
Canada
Hello gbatemp, this is my first post here and I'd like to share with you a project I've been working on for... technically, almost 2 years. But the actual time spent on it was more like 6 months. I call it... GameYob. It emulates GB/GBC games on a ds (no SGB support yet). Here's a summary of what it can do:

- Runs most original gb games fullspeed, and a number of double-speed gbc games as well (Wario Land 3 is quite playable, and the oracle games... almost). It's not as fast as lameboy, yet.
- Supports sound, saving, real-time clock (same format as lameboy), and roms of any size.
- Sound emulation is hit-and-miss... some games, like pokemon RBY (even pikachu's cry!) and GSC, sound excellent, while others have various issues.

I know this will be a tough sell, since we already have lameboy, which I admit is mostly superior... for now. But, if for no other reason... do it for pikachu.

Download it here. A few notes:

- Press R to open the menu.
- Press X to save your data to the filesystem.
- When you choose the "Load ROM" option, your game is saved automatically.
- It looks for roms in the "lameboy" directory by default, to make your life easier.
- Games which don't run at full speed are more prone to graphical glitches. You can turn on "Wait for Vblank" to avoid this, but your FPS will drop to about 30. It's better to just leave it off.
- Don't deactivate the "hblank" option. You've been warned.
I'm a fan of lameboy, but I'm disappointed that it's been abandoned, and that no source is available. If this is actively worked on, some missing features from lameboy are implemented, and the source is eventually released, I'd see no more need for lameboy.

Will there be support for launching games via arguments on DSTwo? With lameboy when I choose a GBC game in BagPlug, it just loads the emulator, and I have to choose the game again from there.
 
  • Like
Reactions: Deleted-236924

Snailface

My frothing demand for 3ds homebrew is increasing
Member
Joined
Sep 20, 2010
Messages
4,324
Trophies
2
Age
40
Location
Engine Room with Cyan, watching him learn.
XP
2,255
I know this will be a tough sell, since we already have lameboy, which I admit is mostly superior... for now. But, if for no other reason... do it for pikachu.

Download it here. A few notes:
If you want to distinguish this program from lameboy almost instantaneously, please make your project open source.

The DS has a really sad tradition of closed-source emulators, it would be awesome if your emulator didn't add to it. :)
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
If you want to distinguish this program from lameboy almost instantaneously, please make your project open source.

The DS has a really sad tradition of closed-source emulators, it would be awesome if your emulator didn't add to it. :)
I think I will. The main reason I started this was because I wanted to improve lameboy, but it was dead with no source... it'd be ironic if I didn't provide the source myself. What would you recommend for version control software / hosting sites? I've never had to make that decision before.

Will there be support for launching games via arguments on DSTwo? With lameboy when I choose a GBC game in BagPlug, it just loads the emulator, and I have to choose the game again from there.
It doesn't sound hard, but I don't have a DSTWO. What exactly would my emulator be receiving as arguments? Just argc=2 and argv[1] = filename?
 
  • Like
Reactions: chyyran

chyyran

somehow a weeb now.
Developer
Joined
Dec 10, 2009
Messages
2,845
Trophies
1
Location
here
Website
ronnchyran.com
XP
1,076
Country
Canada
I think I will. The main reason I started this was because I wanted to improve lameboy, but it was dead with no source... it'd be ironic if I didn't provide the source myself. What would you recommend for version control software / hosting sites? I've never had to make that decision before.


It doesn't sound hard, but I don't have a DSTWO. What exactly would my emulator be receiving as arguments? Just argc=2 and argv[1] = filename?

Use GitHub or Google Code. Personally, I recommend GitHub, as it's much more developer friendly, and looks nicer too, and has a much larger community, however, you'll need to get acquainted with Git.
 
  • Like
Reactions: Snailface

Geren

Well-Known Member
Member
Joined
Aug 15, 2011
Messages
236
Trophies
0
Website
Visit site
XP
233
Country
Spain
Wow, I actually thought we would be stuck with lameboy forever given how the ds scene has been slowing down progressively in the last years. And open source to boot? you are a hero.
 
  • Like
Reactions: StrayGuitarist

pokefloote

Well-Known Member
Member
Joined
Mar 20, 2009
Messages
2,669
Trophies
2
XP
1,972
Country
United States
I'm with everyone above, I have high hopes for this emulator. Especially with it becoming open sourced, things will get done much quicker with a bunch of brilliant minds working on it. :)
 
  • Like
Reactions: StrayGuitarist

2ndApex

Well-Known Member
Member
Joined
Jul 12, 2012
Messages
677
Trophies
0
XP
419
Country
United States
Wow, I was literally just thinking about Lameboy today and when I saw this thread title on the front page I was almost praying that this wasn't a several year old bump. IDK where this sudden surge of DS homebrew is coming from but this is pretty awesome.

Some quick suggestions you probably thought of already:
-Redesigned menus from the atrocious Lameboy columns to NesDS/CATSFC style UIs
-More GB palette options
-Cheat support
-NesDS-like gestures
-NiFi Link cable support(?)
 

BassAceGold

Testicles
Member
Joined
Aug 14, 2006
Messages
496
Trophies
1
XP
441
Country
Canada
It doesn't sound hard, but I don't have a DSTWO. What exactly would my emulator be receiving as arguments? Just argc=2 and argv[1] = filename?

argv[0] is the path to the launched binary (path of the emulator binary) and argv[1] is the path to the file to launch. But you aren't specifically limited to just 2 arguments, you are free to add as many as you want if you don't feel like coding some options into a menu.

If you are looking for a place to host code, I would suggest bitbucket.org which supports Git or Mercurial (which ever you prefer), among many other features that Github may not provide for free that bitbucket does.
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
I'm going to go with Github, thanks for the suggestions.
Finally an open source Gameboy emulator for NDS. Is the cpu core coded in asm or C?
C++, not that it uses many C++ features. I have a half-finished asm core which can fall back to the c++ core for unfinished instructions... I stopped because I wasn't convinced my hand-made assembly would be any better than the compiler. But I might as well finish, I think there's just the bit-manipulation opcodes remaining.
Wow, I was literally just thinking about Lameboy today and when I saw this thread title on the front page I was almost praying that this wasn't a several year old bump. IDK where this sudden surge of DS homebrew is coming from but this is pretty awesome.

Some quick suggestions you probably thought of already:
-Redesigned menus from the atrocious Lameboy columns to NesDS/CATSFC style UIs
-More GB palette options
-Cheat support
-NesDS-like gestures
-NiFi Link cable support(?)
Actually I kind of like lameboy's brutalist approach to menus. Fancy UIs aren't really my thing, plus it's really quick to throw in some temporary debugging options this way... I could probably at least get a font that's nicer to look at. Cheats, palettes, and wifi linking are definitely on my to-do list.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    SylverReZ @ SylverReZ: Lol