Original Post

I am currently working on packaging up a complete, portable Virtual Boy development environment (“VBDE”) for Windows. Only download, unzip and start working, no installation, no hassle. It comes in the form of an editor (Notepad++) with shortcuts for compiling, running with Reality Boy or Mednafen and flashing to a FlashBoy. Also included will be example code which can be used as a starting base for new projects.

VBDE currently consists of:
– Cygwin with gccVB 2.95
– a portable Notepad++, with a few plugins and custom shortcuts
– a collection of development tools
– example code

Thank yous go to thunderstruck for helping me with tying this thing together. 🙂

I got this working on my machine, but still need to do some tests to see if it really is portable. 😛 If so, I will make a preview version available soon.

Hopefully, this project will finally end all the confusion newcomers to VB programming have to face and make setting up a development environment as easy as downloading and unzipping. Also, I hope the included example/base code can be used to hold a standardized library. A point to collect all the useful bits and bytes which are currently scattered in countless private versions of libgccvb, to give developers the best possible tools at hand to create amazing new homebrews for out beloved Virtual Boy.

66 Replies

I actually started developing a new game. To make things a bit easier I started extracting my image-converter code into its own library. Right now all of my projects use a custom version.

I then added a precompiler to vbde that converts all images in the directory “images” into bgmaps and charsets. I also extended libgccvb with a generic image loading code. The converted images come with a load function, so adding images to a game is now extremely easy.

I sill need to make a view tweaks but I will release a first version very soon. I’m also considering to make all of this open source.

OK, so there seems to be a problem with vbde. If I build the demos or any other project they look fine in the emulators but the graphics are all messed up on hardware. I remembered that I had the problem before and that I asked about it in my very first post: http://www.planetvb.com/modules/newbb/viewtopic.php?post_id=16936#forumpost16936

I noticed that vbde uses multiple versions of crt0.s and vb.ld. An older version for libgccvb projects and a newer version for vuengine projects. Using the newer versions in libgccvb does not fix the problem. However, if I use the newer vb.ld in combination with the crt0.o that dasi posted in the link above everything looks fine.

As the default makefile does not copy object files from the source directory I had to change the makefile to be able to compile everything properly.

I have to day that this is rather disappointing. I started converting all of my projects so that I can run them with all the compiler improvements and stuff. Now I had to switch back to older files.

Kr155e, maybe you can look into this?

Krisse and I debugged the problem. Seems like the crt0.o is no longer calling vbSetColTable(). I could fix the demos by simply calling the method from code before vbDisplayOn.

Attached are the newer libs that do to vbde\libs\libgccvb\compiler. They are essentially the same the vuengine is using.

The interrupt names change as well, so the interrupt.h has to look like this:
extern u32 keyVector;
extern u32 timVector;
extern u32 croVector;
extern u32 comVector;
extern u32 vpuVector;

Attachments:

So, the image converter is in a pretty solid state and works fine within vbde. I actually did the same for my Midi converter. Because the code was in a horrible state I rewrote most of it. I also added my music player to libgccvb so midi conversion and playing music is now rather easy as well. I will try to make a video to show what I’m talking about.

Next I will start making a smaller game to see how useful everything actually is.

I hope I’m not asking in a totally improper area, but I hoped to get some quick perspective from those much more experienced with this development system.

For someone who is reasonably comfortable with a few lighter scripting or coding languages, how long would you estimate the “learning” period before one could make a relatively simple working demo with this? Nothing too fancy, obviously, I find that once I have enough down that I can compile something interactive, that tends to fuel me toward digging in and learning much lore quickly. On the other hand, if it takes TOO long to get to any kind of results, that can be a bit discouraging and make it harder to get started (for me personally).

I’ve done bits of C# and C++, as well as Java, JavaScript (fully aware of just how different the two are), and LOTS of GML Script (which is essentially a modified version of C#). I’ve worked with a number of other languages mentioned, as I don’t believe they’re going to be super relevant to this. Again, I’m not claiming to be a veteran expert in these, but I’ve found my way around them well enough to serve my basic needs and to occasionally trouble shoot other existing code.

Dan, sorry for the delayed response!

The first choice to make is between using either plain libgccvb or VUEngine to build your project upon.

libgccvb is a light Virtual Boy hardware library. If you have worked with C before, you shouldn’t have problems getting used to it. But you’ll have to read up on how the Virtual Boy’s image processor (VIP) works in order to get stuff on screen. The basics (Worlds, Chars, BGmaps, etc) are pretty straight forward, so I think it will be a realtively short learning period before you can make a simple demo with this.

The other option, VUEngine, is a versatile and powerful game engine. It automates all the hardware management so you don’t have to know about the VB hardware to begin using it, at least basic knowledge will be required to max out its possibilities, though.

If you already have experience with other game engines like Unity 3D, it certainly helps to understand a lot of the concepts driving the VUEngine since they’re very similiar to modern engines. The difference to these is that the visual representation of objects is not 3D, but 2D sprites. So, levels are 3D, but visual objects in these are 2D.

The real hassle is the syntax I guess, and it may take a bit to get used to it, since the engine uses a set of macros for its OOP features.

All in all, libgccvb is probably recommended to get started. VUEngine has a much steeper learning curve than using plain libgccvb, but if you can get past that, it’s really powerful – I certainly don’t want to work without it anymore.

VBDE comes with a bunch of sample projects for both libgccv-based and VUEngine-based projects. A good way to get into it is to open one of these, compile, then modify, compile again and see what happens until you find your way around.

 

Write a reply

You must be logged in to reply to this topic.