We're using cookies to ensure you get the best experience on our website. More info
Understood
1,430 Replies made

Wow, so… out of 1100 registered users, twenty-nine people voted in the compo?! And (presumably) seven of those were the authors themselves!

I’ve heard of “lurking” on a forum (and I do it myself on a few) but come on!

Seems to be happening to me, too. Nothing I type appears in the box, and there’s no cursor. I always just use the “Wand” to login anyway, and that still works (using Opera 11, BTW). Maybe it just looks like nothing is happening… *shrug*

HorvatM wrote:
…were carefully cut to allow looping…

…compressed to MP3…

This pretty much destroys the repeatability because of the first “frame” getting silence added by the encoder. Distributing as FLAC might be the best way to go, at least until we get an emulated sound capture format.

Off to give them a listen, now! 😀

http://www.planetvb.com/modules/news/article.php?storyid=307

Welcome to the site and to the wonderful world of Virtual Boy!

BTW, other than the missing “w” in the title, a superfluous “to”, and not capitalizing “English”, your English is fine. :thumpup:

I agree; quite clever and not half as annoying as most homemade music videos on YouTube.

A belated “thank you” to my friend across the pond!

Cheers, mate! 😉

VirtualJockey wrote:
Do you guys think I should remove the Killer Instinct pin off the vest? It obviously didn’t come with it, but it also has history being that a Nintendo rep had it on there. I kinda’ feel like the Killer Instinct badge takes away from the 100% VB awesomeness.

By “Nintendo rep” you mean “College kid making minimum wage” right? 😛

I would definitely take the pin off, and probably sell it to one of the two KI fans 😀

They don’t really count as separate systems, but you could also try to find some of the home-computer-like “Famiclones“.

DogP wrote:
And yep… I believe BH did use MML, which of course is great, except how do we generate MML? My skill level is in line with placing Smiley Faces, Marios, Cats, Dogs, etc on a Mario Paint screen 😉 .

Heh, that’s me, too 😛 But, there are open-source clones of Mario Paint, so, why not make one that saves MML? Actually, the Windows one I use (Mario Sequencer) saves a fairly simple file format that could be converted pretty readily, plus the sounds are all .WAV files in a folder, so they can be changed out to match the actual VB “instruments”. It would at least get programmers started with a way to make a prototype of what they want the music to sound like, which then gets handed off to an actual musician for polish.

I think the thing about Grit is just getting it set up in a makefile…

Wait… you’re saying to convert files with Grit on the fly, rather than just using it as a tool to create graphics .h files? That’s an interesting thought, though I kinda like to have real-time control (like in VIDE I usually end up converting my files several times to get the brightness/contrast levels correct to make a good conversion, as well as visually seeing that I’m making efficient use of chars… which is why I’d like a nice GUI for tweaking).

Yes, that’s actually what it was designed for, I think. It has a staggering array of command-line options, plus it can take configuration options from files, so it can do different things based on the folder the images are in. I understand what you mean by wanting to “tweak” the results, but that’s what I meant by getting a “work-flow” in place; one that starts with making images ready to be converted, using the right settings for Grit, etc.

I’ve got a working, albeit not comprehensive, version I split into .C and .H files. I’ve been slowly cleaning it up and adding to it. It might be a good base to work from.

Yeah, if you’ve got a good base, please post it here, or you could email to me if you’d prefer.

It’s attached. I’m still not a very good C programmer, so the two .h files is all I could come up with to solve some cryptic compiler errors. You can probably eliminate the hack, for which I would be grateful.

I’ve started work on a “virtual timer” library that allows a number of “events” to be triggered at different times by a free-running timer kernel based on the timer interrupt…

Cool, yeah… that’s one thing I was thinking would be good for the timer… basically creating periodic functions, so one “function” doesn’t hog the only timer. I use those in RTOSes, though I’m not sure how many things need to be periodic on the VB. Sound is really the one that comes to mind, though I’m unsure that it needs more than 50Hz update (a 20ms note is pretty short). A lot of the periodic things really could (and probably should) be synced to the game frames. Like controller reads, graphics drawing, game timers, etc.

But yeah, that’d be nice to be able to basically “add” a periodic function… just tell it how many ticks and pass a pointer to the function to call.

I agree about most things probably only needing to be synched to game frames, especially animation. I’m pretty sure music/audio could be, too. I started making the virtual timer thing as part of that chorded text input system I told you about. I need short duration (ie. a few ms) timers to allow for “human slowness” in pressing and releasing key combos. Although… now that I think about it, maybe just counting keypad reads/interrupts would be sufficient…

One of the first things I thought of upon seeing Fwirt’s BGMap pixel routines was making a variable-width font renderer (with a compressed, i18n-compatible font format, of course ;-)).

¿qué? I’m just thinking something like what we have with bgmap_print() and itoa(), but with a smaller font table and more friendly usage (annoyances like negative numbers show up as really large numbers, then when you go back positive, it only overwrites the characters used, leaving a mess). I’ve made quick hacks to some of these functions for specific purposes, but something a little more standard would be nice.

Oh, I didn’t know you weren’t using dasi’s port of that printf routine. It works great with bgmap_print type stuff. But, I wasn’t really talking about debugging. For that, I think we should work on a link-port option.

No, I was talking about text output in an actual game, such as an RPG, inventory adventure, etc. I would especially like to work on features like those found in the Paper Mario games, like “shaking” text for scared people, different sizes for yelling and whispering, etc.

Fwirt wrote:
Graphics:
I’ve never used Grit, how does it work? It looked to me like a “dumb” tool that would just convert an image into something that can be used in VRAM. I’d like something that gives you full control over VRAM tiles. The problem with VIDE is that it’s really clunky when it comes to Chars. You can’t even move them around once you’ve placed them. If you look at the Mandelbrot explorer source folder, you can see that I was actually using the GIMP to lay out tiles, and then just using VIDE as a go-between. Another thing (sorry, I’m on a rant) is that VIDE “links” BGMaps to CharSets, and limits BGMaps to the Chars in that set, when a BGMap tile actually has access to all the tiles in Char RAM. I’d like to write a utility if I get the time.

Grit is definitely not “dumb”. I don’t even fully grasp all the powers it has, yet. I do know that it can make multiple BGMaps using one common set of chars, and that it doesn’t artificially limit the number of chars in a BGMap. I really think it’s going to make the difference between us making something and this whole project falling apart. VIDE is great for what it is, but it’s just not suitable for a big project like DogP’s proposing.

Objects:
I actually prefer objects over BGMaps because of their versatility, but they are a bit of a pain to manage. If you want to “generalize” object management, you have to come up with some way of allocating objects, and then keeping track of them. This should be easy, but might have some nasty overhead. I have my own more hackish solutions to this problem…

Hackish or not, I would like to see what you’ve come up with; is it included in something you’ve already released? You’re right about the overhead possibly being a killer here, though. Too bad we can’t use that extra bit in each OBJ… unless it works fine and the IntSys doc is being overly cautious. @DanB: did you actually test the use of the extra bit in a BGMap cell? If that works, the one in the OBJs probably works, too, since the doc says the same thing about them being “indeterminate when read”.

As a parting note, I would prefer it if whatever gets added to the pool is not tied down to an IDE. Personally, I develop in Vim and terminal, so having to use an IDE would be frustrating for me.

I don’t think anyone’s talking about restricting development to within an IDE, just providing one to help people get started. I know that the FlashDevelop IDE definitely got me working in Flash/Flex much faster than if I had been forced to use an editor+command-line system… Auto-complete and function synopsis tool-tips, FTW!

Attachments:

DogP wrote:
Well… not so much interested in an actual IDE… but more in what tools/libraries/etc are missing from being able to have a collection of software that someone could use to create a complete commercial quality game… without needing to write tools themselves, or knowing every single detail of the hardware/memory map like the back of their hand.

This is going along the same lines as creating a community game, though I think that may be a little bit ambitious at the moment, because of what I’m looking to discuss in this thread.

I think we need a good base for building a game before just jumping in. I’d like to work that out here… gather useful snippets of code, work out a common library (Ha! I know 😉 ), figure out what’s difficult to use (and why), what tools are needed to make our job easier, etc.

So… I’m gonna start listing stuff that I can think of… feel free to jump in and add comments, suggestions, and ideas.

Tools:
Audio Converter
-from what format?
-how to audio people make actual sounds before conversion to VB (programs, converters, etc)?

That depends on whether you’re talking about sound effects or music. For sound effects, I’d like something like SFXr that generates VSU code like your non-real-time emulator. Music should obviously be synthesized by the VSU, so you have to start with a “music language” of some kind. A member named “mic_” posted about adding VB support to his MML compiler. Then there’s DanB’s unreleased MIDI playing code. Also, I’ve chatted a bit with Kitaro (who helped get Bound High working) about music playing on the VB. I seem to recall him saying something about having VB code that can play music in a format similar to that used in Bound High (which I believe is also a version of MML).

Graphics
-I’ve found Grit to be very powerful, but not very user friendly, so I always go back to VIDE, which has some limitations and annoyances. Is it possible for a VB version of WinGrit (or does it already exist)?

I think the thing about Grit is just getting it set up in a makefile and designing your code/work-flow around naming the input image files and using the generated variable/constant names. It should be a mostly hands-off process, where you just dump images in a folder with your code and have them converted when you rebuild.

Compiler:
What’s the latest version, any problems, how to install, creating makefiles, etc?

This is also a very confusing topic to me. Parasyte started working on a shell script that downloads, patches, and builds everything. That’s a good way to go for the Linux camp. I think the best distribution for Windows would be a set of pre-compiled, native win32 (and win64?) binaries, linked against only the MS run-times, so it can be used with the Mingw versions of make, etc. from the Windows command-line, or integrated into things like Notepad2, etc. We should also look into the Eclipse thing mbuchman mentioned, of course.

I currently use a version built in cygwin, which means I have to use the bash shell provided with cygwin to run it, instead of having it integrated into my text-editor. It’s just a bit less convenient than I’d like.

Code NOT in .h files
-While maybe it doesn’t matter, it has always bothered me that we include .h files, which has the code in it, rather than just function prototypes, and compiling the library source files seperately.

I’ve got a working, albeit not comprehensive, version I split into .C and .H files. I’ve been slowly cleaning it up and adding to it. It might be a good base to work from.

Code/library:
Audio Player
-I’ve used timer interrupts, though does audio normally need to change more than 50 times/sec? Could we just update between game frames? Of course depends on some sort of converter output

Game Frame stuff

Descriptive macros for common stuff
-Display sync
-Controller reads – yes, while(!(vbReadPad()&(K_ANY))); works… but why not WAIT_PAD_ANY; or something?
-Framebuffer control

Optimized chunks of commonly used code (that may need to be fast)
-memory copies
-framebuffer draws

Calibrated time delay functions
-We need to kill vbWaitFrame() :P. If we regularly use game frames, we shouldn’t need them to throttle main loops, but a calibrated wait would be nice for things like wave playback (short durations), forcing a screen to be read for a few seconds (long durations), etc.

I’ve started work on a “virtual timer” library that allows a number of “events” to be triggered at different times by a free-running timer kernel based on the timer interrupt. It’s a simple idea: set the timer to some fixed rate (that won’t take too much CPU time for servicing the interrupts) and then decrement a number of counters, calling function pointers when they reach zero.

Objects
-I personally find objects to be a pain to manage… is it just me? Is there a way we can make these easy?

I doubt if there’s any “boiler-plate” solution that would work for every situation. We should just make it easy to understand how the subsystem works, and make efficient access functions, constants, etc. with which to access them.

Text
-We have several functions, though they’re not great IMO… and I think the ASCII table uses too much char memory (with unneeded chars)

One of the first things I thought of upon seeing Fwirt’s BGMap pixel routines was making a variable-width font renderer (with a compressed, i18n-compatible font format, of course ;-)).

H-Bias, Affine
-We have some Affine code, but slow because floating point
-Is there any H-Bias lib code, or is it just so easy you do it manually?

Random Numbers
-make it simple so you can just do rand(), and is there a better random seed than CTA? Possibly user input, but that’s game specific.
-Probably should have a better PRN generator.

Using user input isn’t necessarily game-specific, as long as most games include some form of warning, IPD, and “activate auto-pause?” screens. If we standardize that code (while allowing custom imagery/text), we could incorporate a high-speed counter for random seeding.

Link
-I’m not sure that there’s really any helper functions written for using the link. While it’s pretty easy to use, a simple set_master(), send(), receive(), COMCNT_stat(), etc would be nice.

Definitely. Get to work on that 😉 j/k.

Basically, I think it’d be great to write a very clean example using all kinds of stuff from a new library, and using new tools. Maybe we could teach the new VB devs on that, and us old farts could work on making the transition. I’ve personally been stuck to my old ways, writing dirty code, and being limited to old tools for too long… I’m ready to make the step.

Here, here! We really need to blow the dust and cobwebs out of the whole works. With processor speeds skyrocketing, and OOP taking over everything, new programmers need places to learn how to “code to the bare metal”; and what better place than our beloved red friend? 😀

So… any comments? What do you think is most important? IMO, easy audio is the most lacking, though code cleanliness is important to keep large projects from becoming unworkable.

I’m going to look around at some sample code/libraries and see if I can get some ideas, and maybe create what I’d call an “improved” library to post here for comment. Looking though the compo entries, DanB’s Hunter code looks nicely ordered, multiple c files, seperated library, makefile, etc. Nice job 🙂 .

DogP

I agree: audio is still very much a “black art” among most VB devs, and severely lacking in the existing homebrew library. I can somewhat grasp the basics of the VSU, but my complete lack of musical talent provides a rather large barrier to getting anything written. We need a way to let the “artistic” folks do their thing in a way that can be easily incorporated into a game.

That being said, you also have a point about a clean, easy to follow library/code-base to work from… And then there’s the compiler situation… Hmm, quite a lot to do before beginning the “uber homebrew project” 😉 but I think we’re up to it! :thumpup:

The VB doesn’t use NTSC. In fact, the scan rate is closer to PAL, but it doesn’t use that, either (it’s not color, remember?). The effect you’re seeing is a stroboscopic effect caused by the scan frequencies of the VB and your camera being nearly, but not quite, identical. With an NTSC camera, you’d still get the black bars, but they’d scan at a different speed and possibly in a different direction.

Just bug DogP to start selling his TV-converters 😉

I had another idea for a game-play element that could be used with good effect in many game genres: the “timed button sequences” of GoW or Heavy Rain. It could work well in platformers, action-RPGs (e.g. Zelda, Mario RPG), inventory adventures, and many others.

Discuss. 😉

Deadly-D wrote:
I really want to try this on my VB but i don’t want to be the first one too post “Hey don’t try it, it will burn up you’re flash cart and system!” Lol 😯

We just need Richard (or someone else who has access to the board artwork… KR155E? DogP?) to do a thermal simulation on the power trace(s) running from the USB connector to the VB cart edge to see how much current it/they can handle. Or, you could just measure the peak current draw of the cart and VB separately, and use an appropriate fuse on the USB cable.

Of course, you’re also up against the USB current limit, unless you make a custom cable and use a “wall charger” like UncleBob and e5frog suggest.

I would also like to know “why BASIC?” but also: what dialect of BASIC are you using?

Another cross-platform game programming environment (optionally with yet another language) is the Gosu library (http://www.libgosu.org/). It’s written in/for C++, but it also has Ruby bindings. It’s basically an object-oriented, 2-D graphics API on top of OpenGL, along with KB/joystick input and sound/music playing.

I find Ruby much more fun to write than BASIC (or C, for that matter) and it’s quite powerful, especially if your video card is doing all the heavy lifting, graphics-wise.

Mednafen wrote:
…and VB emulation will work on big-endian(PowerPC, SPARC, etc.) platforms now.

w00t! Time for somebody to make a GC/Wii port! 😎

(I would, but I don’t have a way to run stuff on my GC, and I don’t even own a Wii 🙁 I suppose I could test on Dolphin, but it doesn’t run GC games at full speed on my PC).

rubengar wrote:

A button= shoot “morcillas radiactivas”
B button= jump power “press more time the button to jump more”

I think you got those swapped as “A” is the jump and “B” is “throw” (which is the “correct” way to do it ;-)).

The progress is definitely going well, but I would really like to look at the code so I can help fix the “moving forward aborts the jump” bug. It’s probably a side-effect of putting in tests for other buttons besides “A”.

I’m proud of you! 😀 Keep up the good work! :thumpup:

Although my input doesn’t really matter, since I can’t justify the cost, I also think an all-black cable is the way to go.

Heh, blitter’s blitters… I love it 😀

But seriously, nice work! I also would like to see some benchmarks comparing this and the C and asm versions under various conditions (with and without cache enabled, wait-state settings, etc.), but whether they’re faster, slower, or the same speed, it’s still great to have a nice, straightforward example that demonstrates the use of movbsu and, by extension, the other bit-string opcodes for those times DogP mentioned when it’s useful to work with large chunks of (especially non-aligned) data.

I am definitely going to try the hli mode with my shutter-glasses when I regain access to a CRT with a higher-than-60Hz vertical refresh.

HorvatM wrote:
The last field of the serial number should be the country where it was made.

Actually, I’m pretty sure it means (or should be interpreted as) “country of release” or “country to be sold in.” I’m sure all of the physical carts were manufactured in Japan (Taiwan?), and many games are identical between their U.S. and Japanese versions, meaning even most “USA” labeled games were probably developed in Japan.

I don’t even think home-brew needs a full serial number, but even if (for whatever reason) you think you need one, it’s completely redundant to use “INT” or whatever at the end, since practically all home-brew is being released “world-wide” at this point.