Original Post

As part of my masters in CS I have been approved to write a virtual boy emulator. It will end up as part of one of my larger projects (www.openemu.org) In the meantime I figured I’d introduce myself here and announce the project.

Current status is ~70% of the CPU instructions partially emulated. The one thing I’m looking for is more detailed documentation than the Unofficial Dev Guide that is up on this site. There was some mention somewhere about the official development manual, but I can’t seem to find a link. Any help?

– Josh

39 Replies

Welcome, jweinberg!

The end product won’t be of much use to me as I don’t own a Mac, but more power to you. I think there are membership duration and post count restrictions on accessing the devkit manuals and stuff. KR155E might waive the restriction if you ask nicely, though πŸ˜‰

Have you looked at the development wiki? Between it and the documents David Tucker has on his site (especially the datasheets from NEC) you should be able to get a lot of what you need.

Also, feel free to ask questions. There are still active members who’ve worked on some of the existing VB emulators.

Also, feel free to ask questions. There are still active members who’ve worked on some of the existing VB emulators.

and _O_ bless them all.

Welcome to PVB, Josh! Indeed, due to being Nintendo property, the access to the official programming documents is restricted to long time users. You got a PM, though. πŸ˜‰

Good luck with your project! I am looking forward to seeing it shape up. πŸ™‚

Just a little status update.

All instructions other than Floating Point and Bitstring ops have been implemented.
Exception handling is implemented.

Seem to be moving along at a nice clip πŸ™‚

Time for another small status update.

I’ve implemented all of the floating point instructions, as well as the custom instructions only used on the virtual boy. I need to take a step back and decide how I want to deal with the bit string operations (which are the only outstanding CPU instruction set)

Time for another status update. After fighting with a small bug (was using the wrong register in Add-Immediate) I have a ‘working’ CPU core. Next step is the VIP registers. I’m having a hard time finding any real documentation on how these registers are supposed to work though.

I was just able to successfully run the all the way through the Hello World demo rom and watch it spin the main loop. Next up is the rest of the VIP goo (OBJ, WORLDS and drawing)

jweinberg wrote:
I was just able to successfully run the all the way through the Hello World demo rom and watch it spin the main loop. Next up is the rest of the VIP goo (OBJ, WORLDS and drawing)

Yay! My baby runs on your emulator! πŸ˜€

Good work getting that far in such a short time! The rest should be a piece of cake, right? πŸ˜‰

I had to ‘cheat’ a little with the VIP loop and mirror the timing values from RealityBoy (Red Dragon and Mednafen seem to use the same code as well) It feels like a really nasty hack and it doesn’t look like it matches most of what I was able to glean from the VB Development Manual. I hope to revisit that later and attempt a more ‘proper’ VIP emulation.

I’ll just leave this here…

Attachments:

Which timing values?

I take that back, looks like you do it in a quite different way that attempts to properly emulate the VIP timing. I have a hard time following the flow of your code there though.

Now with support for Obj worlds and Normal mode BGs (including CHR flipping)

I’ve started using this thread as a bit of development log, if that is against forum rules, or is bothering anyone please let me know.

Attachments:

I’ve started using this thread as a bit of development log, if that is against forum rules, or is bothering anyone please let me know.

On the contrary, please continue showing us your progress! πŸ™‚

DanB wrote:

I’ve started using this thread as a bit of development log, if that is against forum rules, or is bothering anyone please let me know.

On the contrary, please continue showing us your progress! πŸ™‚

+1

In THAT case, let there be 3d!

Spent some time with getting timing working properly. I was able to optimize to the point where it’ll run at full speed on my machine. I have a lot more to optimize out though, need to get it to at least 25% of where its at before I’ll be happy though.

http://cl.ly/0v3m041h3F1g163h3e2i

I spent my time today optimizing, managed to cut CPU usage in half, need to get that in half again to be happy.

http://cl.ly/2i0v3F2g1e362s2O1J2Y

Decided to use all that extra room in my CPU time now to fix some drawing issues. Now support pretty much 100% of the features for normal BGs and OBJs.

http://cl.ly/0T0t1n3V2c440w1D0M0A

Need to reoptimize those routines now to bring the CPU back down to a sane level.

Ironed out more issues with the BGs, including the CPU usage problems. I’m not sure where the graphics glitch seen after the game starts is coming from. I’m likely clobbering the OAM somewhere along the line.

http://cl.ly/180k2l2k0Q1f3V2R0w3W

 

Write a reply

You must be logged in to reply to this topic.