Homebrew Emulation GameYob, a gameboy emulator for DS

dickfour

Banned!
Banned
Joined
Jun 20, 2011
Messages
581
Trophies
0
XP
164
Country
United States
Thanks for clarifying the GBC GB thing. I'm on an XL not a 3ds the slight banding is exclusive to the xl I tried the on my ds and there's no banding
 

dickfour

Banned!
Banned
Joined
Jun 20, 2011
Messages
581
Trophies
0
XP
164
Country
United States
There is a bug when running castlevania legends in SGB mode
There's an issue with the controls when starting the a and b buttons replace left and right on the d pad but after a about a minute the controls go back to normal. The colors are also scrambled. The game plays normal with SGB off
 

MarkDarkness

Nocturnal
Member
Joined
Dec 17, 2009
Messages
1,403
Trophies
2
XP
3,206
Country
Poland
Just a curiosity...
Which emulator is more energy efficient ..Lameboy or GameYob? ...maybe the code in Gameyob (or in the newgfx version) is cleaner, and it would use less battery overall ...or the difference would be irrelevant?
My DS Lite + Acekard has been seeing very little battery consumption with GameYob... can't really compare to LameBoy, but it's absurdly small. With illumination set to 2 or 3 I think you can easily cross the 12 hours barrier.
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
My DS Lite + Acekard has been seeing very little battery consumption with GameYob... can't really compare to LameBoy, but it's absurdly small. With illumination set to 2 or 3 I think you can easily cross the 12 hours barrier.
It would also depend on the game you're playing. Shantae consumes all of the DS's horsepower, whereas most non-gbc games have many spare cycles.
There is a bug when running castlevania legends in SGB mode
There's an issue with the controls when starting the a and b buttons replace left and right on the d pad but after a about a minute the controls go back to normal. The colors are also scrambled. The game plays normal with SGB off
Yeah I've noticed this. Sgb support is... definitely unfinished.
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
Would it be possible to play a game like Pokemon Yellow with GBC colors but with a SGB border?
Indeed. I actually finished implementing this a little over an hour ago. Much like Goomba Color, it briefly starts the game in SGB mode to retrieve the SGB border, then it restarts in GBC mode.
 

sverx

a DS homebrewer
Newcomer
Joined
Dec 23, 2008
Messages
32
Trophies
0
Website
adshomebrewersdiary.blogspot.com
XP
108
Country
Italy
I don't have a 3ds either but from what I've heard, the time is correct at the start. Thanks for clearing that up.
Thus it means you could remove initClockIRQ() from your ARM7 code and place a call to resyncClock() in your VBlank handler (always in your ARM7 code I mean).
BTW I really had a lot of fun playing the good old GameBoy Tetris yesterday eve, so thank you! :yaynds:
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
Thanks for this one. Just got a question though. How do you magnify the screen? I would like to run games at full screen like Lameboy does.

Thank again!
You don't... there's an experimental build in the first post which has the ability to scale, but it's not very usable yet. Corrupted graphics are common. In the meantime I'm working on custom borders to hopefully compensate for that.

But there's something interesting I've noticed, which may allow for scaling without the graphics engine rewrite. For the technically inclined, take a look at this. I'm wondering, maybe it would be possible to use this capture the backgrounds into a bitmap image, which can then be scaled? There would probably be an additional frame of input lag, but other than that... is it possible?
 

sverx

a DS homebrewer
Newcomer
Joined
Dec 23, 2008
Messages
32
Trophies
0
Website
adshomebrewersdiary.blogspot.com
XP
108
Country
Italy
[...] there's something interesting I've noticed, which may allow for scaling without the graphics engine rewrite. For the technically inclined, take a look at this. I'm wondering, maybe it would be possible to use this capture the backgrounds into a bitmap image, which can then be scaled? There would probably be an additional frame of input lag, but other than that... is it possible?

The DS capture unit does a 'snapshot' of what the 2D/3D main core is generating and stores it in a 15bpp bitmap in VRAM... for instance this is used to generate 3D images for the 'other' screen.
I don't get what you would like to obtain using it. What you get on that screen capture it's the same you can get directly... :glare:
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
The DS capture unit does a 'snapshot' of what the 2D/3D main core is generating and stores it in a 15bpp bitmap in VRAM... for instance this is used to generate 3D images for the 'other' screen.
I don't get what you would like to obtain using it. What you get on that screen capture it's the same you can get directly... :glare:
I have 2 branches now. "master" and "newgfx". Master uses a goomba-style graphics engine: it uses the ds's tile-based background layers and sprites to emulate video. This is efficient but it was (I thought) impossible to scale. Then I started the "newgfx" branch, where the entire screen is drawn onto a single image. This image can be scaled. Newgfx has numerous problems and will never be quite as fast. But in the master branch, if I can capture each frame into a single bitmap image, then that image can be scaled... I'm going to start experimenting with this now.
 
  • Like
Reactions: zerofalcon

wzhy90

Member
Newcomer
Joined
Apr 24, 2013
Messages
19
Trophies
0
XP
112
Country
Switzerland
UPDATE: This project is now open-source! Source code is on github, as are stable binaries. You can also download it from filetrip.

A copy of the latest (possibly unstable) build of the "master" branch will always be available here.
Even more unstable is the WIP "newgfx" branch, which supports scaling. It is unfinished so don't make bug reports for this branch yet. Download its latest build here.

Bugs can be reported on github's issue tracker.
The latest stable version is v0.3. See the changelog:
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

Original-ish post:

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 are some highlights:

- Supports using the gameboy color bios for colorizing pre-color games. It looks for a file called gbc_bios.bin in the same directory as your rom (specifically, the same directory as the first rom you open).
- Emulates Pikachu's cry correctly.
- Allows you to "suspend" a game with temporary, automatically deleted save states like on the wii virtual console.

A few notes:

- Press R or touch the screen (by default) to open the menu.
- Saving isn't done automatically, so you must either press X to save the game or choose "Save and Exit" before turning the DS off. Or use a save state.
- It looks for roms in the "lameboy" directory by default, to make your life easier.
- Don't deactivate the "hblank" option. You've been warned.

How to use NiFi with Pokemon ?
 

Deleted member 319809

MAH BOI/GURL
Member
Joined
Dec 22, 2012
Messages
900
Trophies
0
XP
461
Country
Canada
read again, i've edited my previous post to explain things a bit clearer:
You need to do the following on both handhelds
The question did have some merit: Usually, in DS-to-DS transfers, a receiver needs to choose which sender they'd like to link with, like in DS Download Play and game lobbies. You need to have a host and a client; in some games, the distinction is minimal (like in New Super Mario Bros. where the distinction is the character you use), but you still need to look up your sender.

The question may have asked whether you needed to choose your sender. If GameYob accepts packets from any sender, then that could become a bit of a problem if there are two pairs of games going on.

Personally, I'd like an answer from Drenn about this.
 

Drenn

Well-Known Member
OP
Member
Joined
Feb 22, 2013
Messages
574
Trophies
0
XP
696
Country
Canada
I've had some success with scaling on branch master:



Having the second, unscaled image there is kind of necessary, since it needs to be captured. On my dsi the bottom backlight is disabled, rendering the bottom screen invisible. There may be other tricks to make it disappear, however console output won't work with scaling enabled, which means no FPS counter or time.
Also, just producing the scaled image each frame requires vram banks C and D. That's 256 kilobytes, and that doesn't include all the resources required to make the original image. Oh well. I think I can manage.
But thankfully, speed appears unchanged. A large amount of copying needs to be done, which I was able to offload to arm7, since vram banks C and D are accessible from there. So arm9 is free of that burden.

The question did have some merit: Usually, in DS-to-DS transfers, a receiver needs to choose which sender they'd like to link with, like in DS Download Play and game lobbies. You need to have a host and a client; in some games, the distinction is minimal (like in New Super Mario Bros. where the distinction is the character you use), but you still need to look up your sender.

The question may have asked whether you needed to choose your sender. If GameYob accepts packets from any sender, then that could become a bit of a problem if there are two pairs of games going on.

Personally, I'd like an answer from Drenn about this.
The nifi code is rather basic. GameYob will just send its packet out for any other GameYob in range to receive. This obviously won't work if more than 1 pair of people want to play multiplayer at once in the same place. Any "host/client" stuff is handled by the game itself.
the latest revision of the emulator acts like gbc_bios.bin doesn't even exsit. :/
I'll fix this momentarily... I changed something about bios loading behaviour in a stupid way and I don't even know why.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Maximumbeans @ Maximumbeans: butte