Here’s something I just found out about that sounds like a great target for a new (or ported) VB emulator:
It’s kinda pricey, but if enough people buy them, the price might come down through volume.
There’s also the OLPC, which is already down to $200 (except that you have to buy one for a kid when you buy yours, so it’s really $400) and the specs are pretty impressive for the price (which is, incidentally, the same as the VB’s launch price ;-)).
Porting VB games to the DS might be cool, but it’s likely someone will eventually make a game that at least clones the core gameplay of each VB game–if they haven’t already. 😛
Why not get into VB dev’ing? It’s pretty fun and fairly easy on newbies, thanks to its relatively streamlined design. It’s also one of the best documented consoles in the homebrewing community.
Woot! I’m the first to download, and first to post! 😛
But, seriously, good job, MrSparkle!
Keep us updated!
I figured out why the front-end doesn’t work: the sound “volume” switch is missing.
Also, IMHO, invalid switches should not prevent the emulator from running. RB should just print an error message to the log/stdout and keep going.
Just send me one and I’ll test it under any OS you want 😉
First, thanks go to David and DogP for all their work to make such a great emulator!
David: I will send you my front-end code soon, but it’s not working with the new emulator and I don’t know why. I have VB ROMs associated with the emu in the registry, and that worked just by changing the executable path…
I’m also almost finished reworking and updating the html docs.
DogP (and others who hate VC7+ ;-)): I got RB to compile in VC6. It was quite difficult, since I also had to compile Allegro, which was in turn complicated by the fact that I had already built it under cygwin… In short, it was a pain! For example, Allegro wouldn’t link until I changed /dll to /DLL in the linker command line. 😕
Anyway… First, you have to convert the VC7 project with this tool. Then, allegro\cp_io.h must be edited as follows:
(Delete “” ones.)
. . . !> #define ALLEGRO_MSVC #include. . . typedef LONGLONG VB_INT64; //64 bit int typedef ULONGLONG VB_INT64U; //64 bit Unsigned //64 bit constants are not cross platform compatible #define sign_32(num) (((num) & 0x80000000) ? (VB_INT64)((num)|0xFFFFFFFF00000000I64) : (num))
I’m not sure if the “ALLEGRO_MSVC” line is necessary.
I also had to get “inttypes.h” and “stdint.h” but I can’t remember what was complaining about it…
Also, I don’t know if it’s necessary, but I recently upgraded my Platform SDK to the latest that works with VC6, which adds a lot of XP/2003 stuff. It’s the 300+MB of stuff found here: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm. If you use VC6 and can spare the time/bandwidth to download it, I recommend it.
And now, I must go to bed. 😛
I don’t want to discourage you, but the DS is far from the “ideal” platform for a VB emulator.
For starters, the screens are only 256 x 192. This is little more than half of the pixels on a VB screen. Even without rotating for side-by-side stereoscopy, the VB’s 384×224 images would have to be scaled. And if they were rotated/scaled, there would be hardly any picture left to see!
Then there are the CPUs. One is 67 MHz and the other is 33 MHz. RB runs barely adequately on my 2.4 GHz P4! This might be solvable with some serious CPU/VIP core optimization and by taking advantage of both CPUs and the T&L hardware, but it sounds like a lot of work that might not pay off…
I haven’t tried the PSP port of Red Dragon (since I don’t own one) but if you want a pocket VB, you may be better off working on that. (And if SofiyaCat is reading, it would be nice if we could get the source code or a patch…)
There are also the half-dozen or so systems being churned out by the Game Park company. One or more of those might be powerful enough to support VB emulation.
Then there are a number of “learning game” systems made by Leapfrog, V-Tech, and others that are looking pretty good, if they’re ever hacked for homebrew development.
The only thing these other systems lack is a second screen, and that can be made up for with anaglyph glasses or other techniques.
If you can do it, I’ll be very impressed, but I don’t think I would try it. I do look forward to others’ input on the subject, though.
Mednafen wrote:
The loading of the address into a register takes CPU cycles too, you know. 😉
Okay, 1) I knew that 😛 and 2) it only has to be done once, so I still don’t see the big improvement, but whatever… That’s far from being the only thing I don’t know, so let’s just leave it at that. 😉
AFAIK, the patch only adds files and modifies build scripts/makefiles, it doesn’t touch the V850 support at all.
That’s what I thought… Just too lazy to confirm it 😉
If you wanted to go REALLY long distances, you could get six op-amps and use differential signalling over some CAT-5 or other twisted-pair cable (see this patent for a schematic).
Yes, this post is somewhat in jest, but it would be possible (though overkill for just 3 meters) and you would actually have a use for the 5V supply at both ends 😉
Mednafen wrote:
-mzda=n forces all global and static data variables/structures <= n bytes in size to be located in the first 32KiB of the V810's address space, so that "offset[r0]" type of addressing can be used, for smaller and faster code in many cases. Also, for some reason, the linker scripts appear to start the ZDA at 0x160 instead of 0x0. Maybe to conform to NEC's (un?)published V810 ABI? (Random rants: the V810 doesn't really suck, but it really needs clever usage of its I/O and memory maps for optimal code, that the PC-FX lacks in several cases...and I wonder if NEC's proprietary V810 compilers take into account DRAM page change penalties...)
*whooooosh*
That was the sound of most of that going right over my head 😀
I’m pretty sure ZDA means “zero data area” but I don’t understand why accessing stuff at lower addresses speeds up or shrinks the code… Why couldn’t you just put an address in, e.g. R15 and then use “offset[R15]” to achieve the same effect?
I also understood: “the first 32KiB of the V810’s address space”. I know you’re more interested in the PC-FX, but I don’t think that would work on the VB, since that area is used by the VIP (specifically, one of the left frame buffers and the first 512 characters). The “work” RAM area is the 64K at 0x0500XXXX.
-mzda=n is an architecture-specific option, so it’s not a problem in the core of gcc. I don’t believe V810 support was ever included in mainline gcc, it has, AFAIK, simply existed as a patch(and some pre-patched unofficial tarballs, of course). V850 has and still is in gcc, though. I’ve made a list of major differences in the instruction sets between the two…
Actually, I misread an archived message from the newlib mailing list about dropping V810 support, but the anger still applies 😛
Anyway… Could one get the source for gcc 4.3.2 (http://ftp.gnu.org/gnu/gcc/gcc-4.3.2/) and apply (a modified version) of the V810 patch (from here)?
I.e. does that patch turn the V850 support into V810? Or does it not even care if the V850 support is there? If it adds it from scratch, the architecture may have changed enough that the whole patch will have to be made again…
I don’t know any specific reasons why I want a newer gcc. I just know that, generally (except in the case of Microsoft products :-P) a higher version number means a better program 😀
Well, I think it’s cool that you know enough Japanese to use the J. version of Windows. It’s a pretty intuitive program, maybe this is a good opportunity to learn some graphics terms…
On the other hand, the fact that it (mostly) auto-detects the system language tells me that it should be a relatively simple hack to enable the English interface. It could be as easy as using RegMon to see if it looks in the registry for the system language setting, and then faking it.
Maybe you could write to the author about installing a language switch option.
mathew wrote:
…gumpei yokoi…
http://en.wikipedia.org/wiki/Gunpei_Yokoi
what other games have spelling mistakes? i know virtual lab does, what words?
“Nintenndo” and “Ninntenndo” are printed on the Virtual Lab box, but I don’t know of any typos/mistakes inside the game. There really isn’t that much text in there. In fact, not many VB games have much text.
what way do you have the stand holding the virtual boy, it attatches both ways, i see pics where it is one way and then its facing the other way holding the virtual boy

http://www.vr32.de/modules/hardware/index.php?type=vb&sec=manuals
I think in pictures they tried to get the Nintendo logo facing the camera to “grow the brand”.
is it also common to get glitchy display in both eye peices, the right eye got mirrored images and my dad used a fine sandpaper to then be able to re solder it wich fixed it then i got horizontal lines and i thought it musta stuffed up but now this is in the left eye..
If it’s in the other eye, then it’s time to repair that one, too. There’s exactly the same probability of problems happening to either display, since they’re identical and under the same stresses.
and one more question… when your unscrewing the screws in the virtual boy (needing the modified screw peice to get them out, if you snap one of the screws inside how is it possible to get it out? as you would have no way of latching onto a broken tip and twisting it out… it hasnt happend to mine but it could happen
It would be next to impossible to snap off a screw in the VB, but if it happened, you could probably grab the remainder left in the hole with some pliers and unscrew it.
also i live in australia and got a ac adapter free with some games, just the attatchment for the controller… is it fine if i get a converter thing to plug it into a australian power point and does it run on 9 volts?
It will run fine on anything from 6 to 15 volts, as long as the polarity is correct and it gets at least 850mA of current.
Will virtual boys become that little bit rarer when time passes? as well as the games?
I don’t know of anyone destroying VB’s or games, but there is a finite number of them. Each one that gets sold and either kept, lost, destroyed, or thrown away will be one less for someone else to get.
Let me see if I have this right:
1. You’re running Japanese Windows.
2. You’re running English GaleGraphics.
3. GaleGraphics is trying to display English text (menus, etc.) but Windows is giving it Japanese characters, so it’s unreadable.
4. For some reason, you don’t want to use the Japanese version of GaleGraphics.
Do I have that right?
I have no experience with Japanese Windows, so I can’t give any specific help, but one solution would be to run an English copy of Windows in a virtual machine (like VMware or Virtual PC) but it seems like a lot of trouble for a simple paint program…
Sorry. That’s all I can think of. 😐
I don’t think there’s an option to change the language, since the English and Japanese versions have separate installers.
The copy I downloaded had an English installer and UI (except for the template list in the new file dialog, but you can still understand it).
Are you using a non-english version of Windows? If so, maybe it (wrongly) tries to auto-detect.
Is it possible that you downloaded the Japanese version by mistake? I downloaded setgalefreeus.exe from:
http://www.humanbalance.net/gale/us/download.html
I hope you can get it working…
Mednafen wrote:
I found another bug in the assembler, that will break(seg fault in gas called by gcc during compilation) the gcc optimization control argument “-mzda=n”. In binutils-2.10/gas/config/tc-v810.c:case AREA_SDA: if (sbss_section == NULL) { sbss_section = subseg_new (".sbss", 0); bfd_set_section_flags (stdoutput, sbss_section, applicable); seg_info (sbss_section)->bss = 1; } break; case AREA_ZDA: if (zbss_section == NULL) { zbss_section = subseg_new (".zbss", 0); bfd_set_section_flags (stdoutput, sbss_section, applicable); seg_info (zbss_section)->bss = 1; } break;bfd_set_section_flags() is called with the wrong section variable in case AREA_ZDA. Changing it to be zbss_section instead of sbss_section appears to fix the problem. Has anyone else encountered this bug?
Wow! Another great find from our new friend Mednafen! 😀
Well, since I hadn’t even heard of the flag “-mzda=n” before this post, I never actually experienced this bug.
I wonder if it (and/or the previous one) are bugs in gcc or in the v810 patch. I suppose someone(s) should be trying to get a more mature version of gcc to output v810 code… It still irks me that someone felt the need to actually remove that target from the compiler >:( I thought OSS was about gaining features, not losing them!
I was thinking of at least incorporating your fixes into the patch from http://hp.vector.co.jp/authors/VA007898/pcfxga/develop/gcc.html and I still might.
Thanks, Mednafen!
EDIT:
I found those two errors in the patch included in this: http://www.vr32.de/content/tech/utilities/gccvb/files/vb_v810_gcc_03.tar.gz and fixed them.
I wanted to attach the changed file, but it wouldn’t let me 😕 so, I guess I’ll continue my plan to make a new tarball of the compiler/utils/patches with your fixes (and hopefully some others).
-
This reply was modified 17 years, 8 months ago by
RunnerPack.
It’s you, NamelessPlayer. 😛
But seriously, it just depends on the person which one is easier. I think wall-eyed is more difficult for me since it’s so easy to do the opposite. I’ve been able (and willing ;-)) to cross my eyes since I was very young, and I’ve been free-viewing cross-eyed stereo images for at least a decade. It’s also how I run Reality Boy (when I’m too lazy for the shutter-glasses ;-)). Thus, when I try to see wall-eyed, I automatically revert to crossed… 🙁
@Fwow13:
How did you get the images into the PC? Based on the clarity, I’m guessing a transfer cable. Too bad you almost mucked them up with JPEG. 😉 *cough* PNG *cough*
Nice idea and pretty good execution! Personally, I would have edited the logo to read “Virtual Boy” and possibly changed it to red-scale, but that’s just me. 😉
DogP’s right. As the OP said, you have to “look through the screen” meaning it’s a “wall-eyed” or parallel view stereo pair. I find this very difficult to do on a computer monitor, although it’s not so bad with small pics like this. I still prefer cross-eyed pairs, though.
I’m not sure about his “2 colors” comment, though… The DMG Game Boy has four shades just like the VB. In fact, you can see them if you zoom in on this pic. I would still use different cameras, though. Or at least make new digitizer circuitry for the sensors from the GB cams…
It’s like springy Tinkertoys with magic motors!
I wish that big cloud menu didn’t pop up over everything. I want to watch what happens after I win. 😉
Great find, Jorge!
Edit:
I can’t figure out “Down Under”! Here’s my last attempt (I got closer before, then I broke it >:( )
http://FantasticContraption.com/?designId=3648670
Here’s what I have so far for “Awash”:
http://FantasticContraption.com/?designId=3649729
But I’m thinking of switching to a plain wedge.
Never mind! With a few tweaks this one works great!
http://FantasticContraption.com/?designId=3649935
Did I mention I love this game? 😉
-
This reply was modified 17 years, 9 months ago by
RunnerPack.
-
This reply was modified 17 years, 9 months ago by
RunnerPack.
-
This reply was modified 17 years, 9 months ago by
RunnerPack.
WOOT! Can’t wait to get my teeth into this one! 😉
Thanks so much jorgeche!
BTW, under XP at least (and probably Win9x, no idea about Vista) you can make a VBJAENGINE environment variable in Windows (System control panel, Advanced tab, “Environment Variables” button) and the Cygwin shell will automatically pick it up. You don’t even have to reboot.
Comes up in Google’s new “suggestion” list:
http://www.google.com/search?hl=en&q=gp2x+wiz
@xenon:
As of this posting, the official site still has the d-pad design.
dasi wrote:
I think this should fix the problem. However, copying vb.ld to /usr/local/v810/lib/ like it says in build.txt doesn’t override the default script.
All you have to do (if you don’t want to/can’t recompile the compiler) is add something like:
[font=Courier]-T/usr/local/v810/vb.ld[/font]
to the compiler command line.
I implemented this and it didn’t break my build process, but I don’t have any code that exhibits the problem, so I can’t say if it works. If it does, good job! 😀
In fact, you deserve kudos for even looking into the problem 😉
(BTW, I attached the edited file).