Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

R3Ddragon 3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 2: Line 2:
|title=r3Ddragon
|title=r3Ddragon
|image=r3Ddragon-01.jpg
|image=r3Ddragon-01.jpg
|description=A Virtual Boy emulator for the 3DS.
|description=A Virtual Boy emulator for the N3DS.
|author=mrdanielps
|author=mrdanielps
|lastupdated=2017/02/03
|lastupdated=2017/02/03
Line 8: Line 8:
|version=0.87
|version=0.87
|license=MIT
|license=MIT
|download=https://dlhb.gamebrew.org/3dshomebrew/r3Ddragon-v0.87-3DS.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/r3ddragon.7z
|website=https://github.com/mrdanielps/r3Ddragon
|website=https://github.com/mrdanielps/r3Ddragon
|source=https://github.com/mrdanielps/r3Ddragon
|source=https://github.com/mrdanielps/r3Ddragon
}}
}}
<youtube>xJ9323yaQJY</youtube>
r3Ddragon is a WIP Virtual Boy emulator for the N3DS based on Reality Boy/Red Dragon. There's an experimental dynarec implemented but it still needs optimizing.


==r3Ddragon==
You can see the current progress [https://github.com/mrdanielps/r3Ddragon/wiki/Current-progress here].


A WIP Virtual Boy emulator for the 3DS based on Reality Boy / Red Dragon. You can see the current progress
==Installation==
[here](https://github.com/mrdanielps/r3Ddragon/wiki/Current-progress) and a video of it working
Available in 3DSX and CIA formats.
* CIA - Install the .cia with the CIA manager of your choice.
* 3DSX - Use the .3dsx provided with the Homebrew Launcher.


There's an experimental dynarec implemented but it still needs optimizing.
You can place place ROMs in /vb/.
 
==Usage==


You can place place ROMs in /vb/.
If it doesn't exist, rd_config.ini will be created. Some relevant options you can change are:
* maxcycles - A lower value will improve compatibility, but it will run slower.
* frmskip - Number of frames to skip before drawing.
* debug - If set to 1, prints debug info.
* sound - Enables sound.
* dynarec - If set to 0, tries to load the dynarec cache from a file instead of recompiling.


If it doesn't exist, `rd_config.ini` will be created. Some relevant options you can change are:
===User guide==
You can download VB homebrew games from [https://www.virtual-boy.com/homebrew Planet Virtual Boy].


* _maxcycles_: A lower value will improve compatibility, but it will run slower.
ROM compatibility list ca be found [https://github.com/mrdanielps/r3Ddragon/wiki/ROM-Compatibility here] (outdated).
* _frmskip_: Number of frames to skip before drawing.
* _debug_: If set to 1, prints debug info.
* _sound_: Enables sound.
* _dynarec_: If set to 0, tries to load the dynarec cache from a file instead of recompiling.


The 3dsx will only work on exploitable system versions (<=11.2) after running [fasthax](https://github.com/nedwill/fasthax/releases).
===FAQ===
'''Q. Why would you make a Virtual Boy emulator? Nobody asked for it.'''


==FAQs==
The 3DS is the perfect system to faithfully emulate the Virtual Boy.


'''Why would you make a Virtual Boy emulator? Nobody asked for it.'''
They have similar screen resolutions, the 3D effect is better and it's actually portable.


The 3DS is the perfect system to faithfully emulate the Virtual Boy. They have similar screen resolutions, the
'''Q. OK, but wasn't the Virtual Boy, like, the worst console ever?'''
3D effect is better and it's actually portable.


'''OK, but wasn't the Virtual Boy, like, the worst console ever?'''
There were many reasons why it was commercial failure. That doesn't mean the console is bad, or the games aren't worth playing.


There were many reasons why it was commercial failure. That doesn't mean the console is bad, or the games
It's definitely received way more hate than it deserved.
aren't worth playing. It's definitely received way more hate than it deserved.


Plus, it has a nice homebrew scene with gems such as Hyper Fighting, Snatcher and many more.
Plus, it has a nice homebrew scene with gems such as Hyper Fighting, Snatcher and many more.


'''Do I need a new 3DS to run this?'''
'''Q. Do I need a new 3DS to run this?'''
 
Unfortunately, yes. The old 3DS is too slow to run it at a playable speed. That might change in the future,
but it's unlikely.
 
'''Where can I download it?'''
 
You can find the latest release [here](https://github.com/mrdanielps/r3Ddragon/releases).
 
==Current Progress==
'''Update 9/9/2015:''' I have some good news for 9.3+ N3DS users. I've been working on making the dynarec generated code relocatable. Without going into details, this means that you can generate it once, bundle it with the executable and run it on newer systems (where we can't set executable memory on the fly) in a similar fashion to a static recompiler. It's much less convenient than the normal dynarec, but it makes it possible for ninjhax2/ironhax/tubehax users to play VirtualBoy games at a decent framerate.
 
'''Update 18/7/2015:''' Since the last update I optimized it a bunch and now it runs at 15-50 fps, depending on the complexity of the ROM and the amount of frameskip. I also got Mario's Tennis booting up, but it's not showing any graphics in-game.
 
On another note, I was looking forward to Ninjhax 2.0 to make it playable on N3DS, but HB_ReprotectMemory isn't available. It's a bummer because Mednafen VB got a 3X speed boost (from 8 to 25 fps) and the dynarec [https://youtu.be/xJ9323yaQJY could benefit] '''a lot''' from it.
 
'''Update 25/3/2015:''' I decided to look at [http://pandorawiki.org/Mupen64plus_dynamic_recompiler how] other emulators implemented their recompilers and got some ideas on what I should do next. I've been experimenting with some of the stuff and I feel like I'm going to have to make some big changes to the dynarec before anything else. The thing is, that will break everything and bring new issues that will have to be fixed, and that sounds boring. Like, super boring. I was going to be busy for the next few weeks anyway with exams and a project, so I guess I'll be more motivated when I come back.
 
'''Update 1/2/2015:''' I've pushed my changes to the [https://github.com/mrdanielps/r3Ddragon/tree/dynarec dynarec branch]. Don't expect anything too efficient for now, but it seems about twice as fast as the interpreter in the Reality Boy Demo (which is the only working ROM at the moment).
 
'''Update 29/1/2015:''' I've been working on the dynamic recompiler and after a lot of painful debugging it managed to run a homebrew demo. Nothing else works, mainly because almost half of the instructions aren't implemented. It only works on 3dmoo at the moment and it might need some changes before it runs on a real 3DS, but it's a good start. With CPU emulation not being that big of a bottleneck, the next step would be to rewrite the display functions to use hardware rendering, but that probably won't be happening until the dynarec works well enough.
 
'''Update 10/1/2015:''' I continued working on the assembly interpreter up to the point where it follows the same path as the old core (but it doesn't output any graphics) and the speed increase is minimal (about 3 fps from what I've tested), although it could still be optimized a little bit more. I don't think it's worth it to continue at this point, so I should start thinking on that dynarec...
 
'''Update 27/12/2014:''' After spending several days rewriting most of the interpreter core in assembly I noticed it wasn't giving that much of a speed boost (although I'm not sure yet because it's not working properly), so I wondered if it was worth it to continue with it or whether I should start thinking of writing a dynamic recompiler. If I do, that will probably take a lot of time (and I'm going to be busy these days). Besides, my 3DS just broke and if I take it to repair I won't be getting it back until at least mid-January.
 
'''Original text:'''
 
Thanks to some awesome people at GBAtemp, r3Ddragon has been tested on real 3DSs and it managed to run some homebrew, although there are some issues that need to be fixed.
 
Commercial roms [[img/screenshot3.png|seem]] to [[img/screenshot4.png|work]]. [[img/screenshot5.png|Teleroboxer]] loads the menu but crashes when [[img/screenshot6.png|starting a game]] (there's a memory read/write error that shouldn't be too hard to debug once I actually get some free time...)
 
The framerate is too low to be playable and it still needs to be optimized a lot.


Now works on Ninjhax.
Unfortunately, yes. The old 3DS is too slow to run it at a playable speed.  


If you want to try it out, you might want to change some configuration options in [https://github.com/mrdanielps/r3Ddragon/blob/master/source/vb_set.c vb_set.c]:
That might change in the future, but it's unlikely.
 
* Changing DSPMODE to DM_3D (or adjusting the slider in the menu) enables 3D (but runs slower).
* Changing FRMSKIP enables frameskip.
* Setting PALMODE to PAL_RED (or pressing L/R in the menu) enables the red palette (for those who like to [http://youtu.be/OyVAp0tOk5A?t=10m46s play golf in red fields]. Just like in real life, right?)


==Screenshots==
==Screenshots==
https://dlhb.gamebrew.org/3dshomebrew/r3Ddragonscreenshot7.png
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon3.png
https://dlhb.gamebrew.org/3dshomebrew/r3Ddragonscreenshot8.png
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon4.png
https://dlhb.gamebrew.org/3dshomebrew/r3Ddragonscreenshot12.png
https://dlhb.gamebrew.org/3dshomebrew/r3Ddragonscreenshot9.png


==Building==
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon5.png
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon6.png


Once you have [ctrulib installed](http://3dbrew.org/wiki/Setting_up_Development_Environment), you can choose
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon7.png
between four different make targets:
https://dlhb.gamebrew.org/3dshomebrews/r3ddragon8.png


* **`make release`** adds `-O3` to CFLAGS. It's meant to be run on an actual 3DS and will output basic debug info to stdout only if enabled in `rd_config.ini`.
==Media==
* **`make testing`** adds `-O3` to CFLAGS. It's meant to be run on an emulator (citra or 3dmoo). It will output basic debug info to the terminal.
'''r3Ddragon - new 3DS improvements (Virtual Boy emulator)''' ([https://www.youtube.com/watch?v=xJ9323yaQJY danielps]) <br>
* **`make debug`** adds `-g -O0` to CFLAGS. It builds without optimizations so it can be debugged with gdb.
<youtube>xJ9323yaQJY</youtube>
* **`make slowdebug`** adds `-g -O0` to CFLAGS. It will output a lot of debug information, which will slow emulation down but might be helpful to debug game-specific issues.


For easier debugging, you can build it for arm-linux (tested on a Raspberry Pi) with `make -f Makefile.linux` or for android using `ndk-build`.
==Known issues==
* Low compatibility.
* Glitchy graphics on some commercial games.
* Frame limiting is broken when frameskip is enabled.
* Some menu options aren't implemented.
* To change ROMs you have to exit first (touchscreen->File->Exit).


== License==
==Changelog==
 
'''v0.87'''
Some of the code is distributed under the MIT License (check source files for that) but, since
* Removed libhax. Homebrew launcher users will have to run a kernel exploit (like fasthax) first.
this is a port of Reality Boy, here is (part of) the original readme:
* Added settings for frameskip, maxcycles, sound and debug output.
 
* Implemented floating point instructions.
This Reality Boy emulator is copyright (C) David Tucker 1997-2008, all rights
reserved.   You may use this code as long as you make no money from the use of
this code and you acknowledge the original author (Me).  I reserve the right to
dictate who can use this code and how (Just so you don't do something stupid
with it).
Most Importantly, this code is swap ware.  If you use It send along your new
program (with code) or some other interesting tidbits you wrote, that I might be
interested in.
This code is in beta, there are bugs!  I am not responsible for any damage
done to your computer, reputation, ego, dog, or family life due to the use of
this code.  All source is provided as is, I make no guaranties, and am not
responsible for anything you do with the code (legal or otherwise).
Virtual Boy is a trademark of Nintendo, and V810 is a trademark of NEC.  I am
in no way affiliated with either party and all information contained hear was
found freely through public domain sources.
 
==Acknowledgments:==
 
Frostgiant, Parasyte, and DogP (and the rest of people that have contributed
to the VB sceen in the last five years) - Their work on Red_Dragon has been a
real inspiration. Its amazing how far they have gone with so little to start
with.
 
Bob VanderClay - most of the original code is based off
of his VB disassembler.
 
Ben Haynor - Provided me with a much better understanding of
the VB internals.
 
Joseph LoCicero, Dave Shadoff - I stole the jump table ideas from their tg16
disassembler, thanks guys.
 
Neill Corlett - took many ideas (and some code)
from his Starscream CPU core
 
Kevin Banks - for donating a very nice pair of Frenzle 3D
viewers, and being an all around great guy.
 
Megan Tucker - For putting up with my tinkering all night, and resisting the
urge to toss all my video games out the window.
 
v810 is a trademark of NEC co.
Virtual Boy is a trade mark of Nintendo
Reality Boy is in no way affiliated with either of these parties


==Credits==
==Credits==
Acknowledgments:
* Frostgiant, Parasyte, and DogP (and the rest of people that have contributed to the VB sceen in the last five years) - Their work on Red_Dragon has been a real inspiration. Its amazing how far they have gone with so little to start with.
* Bob VanderClay - most of the original code is based off of his VB disassembler.
* Ben Haynor - Provided a much better understanding of the VB internals.
* Joseph LoCicero, Dave Shadoff - Stole the jump table ideas from their tg16 disassembler, thanks guys.
* Neill Corlett - took many ideas (and some code) from his Starscream CPU core.
* Kevin Banks - For donating a very nice pair of Frenzle 3D viewers, and being an all around great guy.
* Megan Tucker - For putting up with my tinkering all night, and resisting the urge to toss all my video games out the window.
* v810 is a trademark of NEC co. Virtual Boy is a trade mark of Nintendo. Reality Boy is in no way affiliated with either of these parties.


Thanks to:
* Everyone mentioned in the license. Without Reality Boy and Red Dragon it wouldn't have been possible.
* Everyone mentioned in the license. Without Reality Boy and Red Dragon it wouldn't have been possible.
* smealum and contributors - ctrulib.
* smealum and contributors - ctrulib.
Line 170: Line 104:
* danielps - 3DS port and V810 dynarec.
* danielps - 3DS port and V810 dynarec.


==Changelog:==
==External links==
* Removed libhax. Homebrew launcher users will have to run a kernel exploit (like fasthax) first.
* GitHub - https://github.com/mrdanielps/r3Ddragon
* Added settings for frameskip, maxcycles, sound and debug output.
* GBAtemp - https://gbatemp.net/threads/wip-r3ddragon-virtual-boy-emulator.397411
* Implemented floating point instructions.
* GBAtemp - https://gbatemp.net/threads/red-dragon-3ds-nintendo-virtual-boy-emulator-port.374558


===Known Issues:===
[[Category:3DS homebrew emulators]]
* Low compatibility.
[[Category:Homebrew handheld emulator on 3DS]]
* Glitchy graphics on some commercial games.
* Frame limiting is broken when frameskip is enabled.
* Some menu options aren't implemented.
* To change ROMs you have to exit first (touchscreen->File->Exit).

Revision as of 14:54, 3 Ocak 2022

r3Ddragon
File:R3Ddragon-01.jpg
General
Authormrdanielps
TypeHandheld
Version0.87
LicenseMIT License
Last Updated2017/02/03
Links
Download
Website
Source

r3Ddragon is a WIP Virtual Boy emulator for the N3DS based on Reality Boy/Red Dragon. There's an experimental dynarec implemented but it still needs optimizing.

You can see the current progress here.

Installation

Available in 3DSX and CIA formats.

  • CIA - Install the .cia with the CIA manager of your choice.
  • 3DSX - Use the .3dsx provided with the Homebrew Launcher.

You can place place ROMs in /vb/.

If it doesn't exist, rd_config.ini will be created. Some relevant options you can change are:

  • maxcycles - A lower value will improve compatibility, but it will run slower.
  • frmskip - Number of frames to skip before drawing.
  • debug - If set to 1, prints debug info.
  • sound - Enables sound.
  • dynarec - If set to 0, tries to load the dynarec cache from a file instead of recompiling.

=User guide

You can download VB homebrew games from Planet Virtual Boy.

ROM compatibility list ca be found here (outdated).

FAQ

Q. Why would you make a Virtual Boy emulator? Nobody asked for it.

The 3DS is the perfect system to faithfully emulate the Virtual Boy.

They have similar screen resolutions, the 3D effect is better and it's actually portable.

Q. OK, but wasn't the Virtual Boy, like, the worst console ever?

There were many reasons why it was commercial failure. That doesn't mean the console is bad, or the games aren't worth playing.

It's definitely received way more hate than it deserved.

Plus, it has a nice homebrew scene with gems such as Hyper Fighting, Snatcher and many more.

Q. Do I need a new 3DS to run this?

Unfortunately, yes. The old 3DS is too slow to run it at a playable speed.

That might change in the future, but it's unlikely.

Screenshots

r3ddragon3.png r3ddragon4.png

r3ddragon5.png r3ddragon6.png

r3ddragon7.png r3ddragon8.png

Media

r3Ddragon - new 3DS improvements (Virtual Boy emulator) (danielps)

Known issues

  • Low compatibility.
  • Glitchy graphics on some commercial games.
  • Frame limiting is broken when frameskip is enabled.
  • Some menu options aren't implemented.
  • To change ROMs you have to exit first (touchscreen->File->Exit).

Changelog

v0.87

  • Removed libhax. Homebrew launcher users will have to run a kernel exploit (like fasthax) first.
  • Added settings for frameskip, maxcycles, sound and debug output.
  • Implemented floating point instructions.

Credits

Acknowledgments:

  • Frostgiant, Parasyte, and DogP (and the rest of people that have contributed to the VB sceen in the last five years) - Their work on Red_Dragon has been a real inspiration. Its amazing how far they have gone with so little to start with.
  • Bob VanderClay - most of the original code is based off of his VB disassembler.
  • Ben Haynor - Provided a much better understanding of the VB internals.
  • Joseph LoCicero, Dave Shadoff - Stole the jump table ideas from their tg16 disassembler, thanks guys.
  • Neill Corlett - took many ideas (and some code) from his Starscream CPU core.
  • Kevin Banks - For donating a very nice pair of Frenzle 3D viewers, and being an all around great guy.
  • Megan Tucker - For putting up with my tinkering all night, and resisting the urge to toss all my video games out the window.
  • v810 is a trademark of NEC co. Virtual Boy is a trade mark of Nintendo. Reality Boy is in no way affiliated with either of these parties.

Thanks to:

  • Everyone mentioned in the license. Without Reality Boy and Red Dragon it wouldn't have been possible.
  • smealum and contributors - ctrulib.
  • Vappy, Team Fail, HtheB, hippy dave and kane159 on GBAtemp - early testing.
  • benhoyt - inih.
  • Myria - libkhax
  • thunderstruck - CIA banner sound (taken from Fishbone).
  • nop90 - Reality Boy backports and fixes.
  • danielps - 3DS port and V810 dynarec.

External links

Advertising: