Makes sense… But why are you flipping BKCOL every 7 steps? Is that just demo code?
It looks like most of the stuff in there is advertising, trade show appearances, and interviews… How about “Press”? Or you could just shorten it to “Info”. I think the problem with “Information” is that it’s too generic; everything on the site is information.
Well, I don’t know about less work… The levels are procedurally generated, but there’s still graphics and music, and the class system and dungeon generation algorithms would take crazy amounts of planning and coding.
Right now, it seems like we have a lot of choices and good community support, but no real direction. I’ve been thinking it over, and in the past I’ve done some thinking about the kinds of VB games I’d personally like to see, and there’s one idea that sticks out in my mind. If I get some time in the next couple days, I’ll see if I can draw out a pencil/tablet and draw some diagrams that explain the mechanics that I think would be fun.
…Maybe the next PVB contest should be a game concept contest? 😛
Aha, I figured someone else had probably beat me to it. Well, at least it’s library-ized now.
Funny story, I just wrote my first raycaster in Java a few weeks ago and was wondering how slow it would be on VB… 😛
RunnerPack wrote:
I’ve experimented with using the VIP interrupt and the “display” and “expansion” status registers, but the docs are quite confusing in this area (at least to me).
No kidding… >:( The official Nintendo development manual talks about game frame timing in section 5-21-1. Apparently they intended you to use the refresh rate as the timer for your main loop, although I haven’t really had the time to get that figured out. However, the timer is pretty easy to understand and set to the correct speed for your game. Basically what I’m doing for main loop timing right now is setting up the timer before I get into the main loop, and then waiting for zero status every time I finish one iteration of my main loop. Something like this:
timer_freq(TIMER_100US); timer_set(TIME_MS(15)); timer_enable(1); for(;;) { timer_clearstat(); // Insert main routine here while(!timer_getstat()); }
Note that I use getstat differently, as I modified my version of libgccvb to be more true to the hardware so that getstat returns 1 when the timer is 0. The timer takes a few more instructions to set up, but it will make your program a lot more reliable.
RunnerPack wrote:
Oh, yeah… it’s a thrill-a-minute! 😛
Well when you zoom really deep, it might take it that long to render… 😀
I haven’t done any benchmarking, but the drawing code should be pretty efficient. The setup function is O(n) and the draw function is O(1). You could make the setup function faster if you commented out the part that clears all the chars, but the setup function is only run once at the beginning of your program, so that’s probably not an issue. The real time-hog is just the Mandelbrot routine, as it has to do a whole bunch of FLOPs per pixel rendered. At one point I was toying with fixed-point math, but it didn’t seem any faster.
But now that I think of it… the BGMap method probably is a lot slower than the framebuffer method in practical application (polygons, etc.), as you have to clear the screen manually.
BTW, giving credit where credit is due, this idea actually came from the official development manual:
Virtual Boy Development Manual, P. 2-6-1:
Another method to include polygons is to place characters in a row in the BG map or place OBJs in a row on display, and write the polygon characters in character RAM. When this method is used, display priorities can be readily assigned to the polygon characters and normal OBJ and BG characters.
Hey, thanks KR155E! I was kind of worried that people were going to think my entry was really boring…
wazzal wrote:
So I just tried this on a FlashBoy Plus, and it is rather buggy. There are vertical lines, and the graphics “shake” left and right. But regardless, I really like the concept!
Oooh, really? Sorry about that… It works flawlessly in mednafen. I wonder what’s causing the vertical lines… Where do they appear? Does the screen shake only when rendering or the whole time?
*ahem*
Also, I have the feeling that people aren’t reading README.TXT and consequently aren’t figuring out the controls… This is a note to people who skip the readme: The most important control for this app is holding A and dragging a box around someplace on the edge of that weird shape. The whole point of the Mandelbrot set is that you can zoom in forever. It’s kind of disappointing to me that the screenshot that KR155E chose for the front page only shows a zoom out… If you’ve never heard of the Mandelbrot set, here’s a Wikipedia page, and here are a ton of examples of the cool things you can see if you spend some time with a program like this one. Following this post are some screenshots of what you can see if you play around with the compo entry… (Note that I pressed Select to disable the cursor. I left the overlay on so you could see where I was, but you can also disable that by pressing L. Do I really have to tell you to go over the readme at this point? 😛 )
Attachments:
HorvatM wrote:
I would rather do a game that isn’t based on copyrighted content. This way we would avoid legal trouble. Plus, it would give graphic designers, story writers, etc. more creative freedom.
Of course! Just copying existing IP isn’t all that fun. Plus, if you come up with your own ideas, you can better tailor them to fit this unique platform.
KR155E wrote:
As for the possible type of community game, I’d love to see one of the following:
– Zelda
– Metroid
– Silent Hill (anyone ever played the SH2 demake?)
– Bangaioh
I’m glad there’s someone else out there who likes Bangaioh! I think a game in that style would be amazing on VB.
KR155E wrote:
I never managed a bigger software project (did anyone here?), but I imagine that, in order to get the project started, we need someone (DogP?) to lead it all and write a basic engine upon others can build. We need a good abstration first, which will then help developers to work in the same direction.While the engine is being written, non-developers could lay out a story, maps, dialogues, create graphic and sound assets. Eventually, we’d have to build the actual game upon the engine we developed using the assets and following the story and scripts created by our artists.
I think that we should divide writing the engine up between several people. Letting one person do all the work probably isn’t a great idea. Like DogP said, we should probably get something like a GitHub set up, assemble an engine programming team, and register the engine programmers as contributors. (Forgive me if my terminology is wrong, I’ve never used version control software.) Then we’d probably have to come up with a level format to work from, and write some kind of tool so that the community could contribute content. For graphics we have ViDE, although after working with it during the contest, I’ve found that it has some serious limitations and would like to write a better cross-platform VB tile editor. For music we might be able to use DanB’s midi converter…
At some point we should probably all get on IRC and hash out exactly what project we want to do, handle initial logistics, assemble teams, etc. Of course, the issue with that is that we’re all in different time zones… 😛
You know that might actually be a pretty cool effect. Most games have obvious borders around the edge of the screen, but really you could make the area you draw to any size/shape you want and the player wouldn’t notice. Full size, the VB screen has a 12:7 aspect ratio. I was thinking about this for direct BGMap drawing… If you drew to an area 36×27 chars wide, you’d get a 4:3 aspect ratio, and have enough chars to do two BGMaps for full stereo. Of course, there’s also the potential for other screen shapes entirely (circular screen anyone?) If the VB had survived longer we might’ve seen things like this.
Craby wrote:
Unfortunately, none of the Vb games uses that feature to its full potential (in my opinion); sprites or 3D objects emerging from nowhere and floating on a black background, never touching the limits of the screen and therefor giving the illusion that there’s really no screen :] (maybe a cool homebrew concept !)
Well, I don’t know about never touching the edges of the display… Things have to come from somewhere. Unless you could find a really smooth way to make things fade in, there would still be a hard border that things would have to cross as they come onto the screen.
Sorry if it’s already known, but the Vb’s display is not related to costs, it’s the only way to get a perfect black “screen”. Gunpei Yokoi wanted the Vb to be “fully immersive” and didn’t want the player to see a screen while playing. With a backlit lcd screen, you can’t obtain perfect black pixels so we would have seen the borders of the screen.
I also thought that they tried LCDs, but in all the tests the players just ended up seeing double instead of a stereoscopic image.
RPG/Zelda could be cool. A fighter wouldn’t be my first choice as 2-Player is limited and that’s one of the biggest highlights of fighting games. I don’t care for FPSes but that’s a personal preference. Personally, I like platformers, but we already have a few of those on VB so I don’t know how popular that would be with everyone else. I always thought that an idea that could work well on VB would be a shooter that uses two joysticks, like Robotron:2084 or Bangai-O, but there are lots of options.
I’d love to help out depending on what the project was. It would be pretty cool to make something that could rightly be called the unofficial 23rd Virtual Boy game. I’m not much of an artist (and I’m really not much of a coder compared to some of you guys…) but I could probably handle some of the programming.
Also, one of the big non-coding jobs you forgot: level design. You can have the best engine in the world, but crappy level design will kill your game.
Hmm… I guess I could have select bring up the instruction screen instead of hiding the cursor… But the problem with aborting a render would be that because of the way I have it drawing right now, if you stopped in the middle of the render, you would be halfway between two images. I guess I could keep track of the previous coordinates and just redraw the old screen at that point, but then you’d have to deal with the time that took, so it’s just a messy situation. I’d double buffer if I could, but there’s not enough char memory to double buffer a full screen with the BGMap direct draw method I’m showing off. (I talk about that problem in the readme.)
I’m glad you liked the Sierpinski, I had hoped that would be a nice surprise. 🙂
DogP wrote:
I also planned on having a foreground and background to jump between, but that would have required some smart level design for making that useful, as well as making the graphics so you could actually see blocks in the foreground and background at the same time.
Meh. It works alright in Wario Land, but just because you have real 3D doesn’t mean you have to use it for that. Personally, I think the whole foreground/background thing is way overrated. Just give me some nice parallax backgrounds anyday.
DogP wrote:
I also think a community game would be really fun… if we could break down a game into perfectly manageable parts, rather than everyone writing a short simple game, everyone writes/designs/creates small simple chunks… which get merged into a cool large project that people would actually want to play. Imaging an RPG where someone writes an overworld engine, someone writes a fight engine, someone writes the item, character, etc backend, someone makes the main menu stuff, someone designs characters, someone designs the overworld, someone makes music/sound effects… and so on. I think the most difficult part would be managing the whole thing, delegating responsibilities.
I completely agree. I was thinking during the last month, it would be nice to pool our skills and make something that doesn’t get tiring after 15 minutes. It would be a lot of fun except for the organization…
Also, that’s a nice collection of cabinets you have there. I never played arcade games as a kid, but I discovered this summer that Ground Kontrol is only about an hour away, and that place was pretty cool. After visiting that, I sure would like a Tempest cabinet…
/me facepalms
Sorry akumie… I guess when you hang around geeks all day you assume everyone knows how to use the command line. What version of Windows are you using? If you’re on XP, you should be able to find “Command Prompt” under Accesories in the start menu. On Vista or 7, I’ll bet you can search for it in that little box. (My hours logged on Vista and 7 are surprisingly below average, being a Linux user.) Once that’s open, you can use the command “dir” to list files in the current directory and “cd” to change directories. “cd ..” will take you up a level. I haven’t used the Windows version of mednafen, but you probably cd to the directory that mednafen.exe is in, and then type “mednafen.exe romname.vb” assuming that the rom is in the same directory as the exe. Or you could wimp out and find some kind of frontend…
Pretty impressive for a few hours of work. I think the main problem with it right now is collision detection, I can’t tell you how many times I’ve gotten near the top and randomly phased through one of the platforms.
You know, maybe we actually _should_ have a 48 hour VB coding comp sometime. A “Ludum Dare Puero Fere” if you will. 😀 (Just make sure it’s during the summer.)
…..And what is this about a basement arcade?
You know, I got 100% on normal difficulty (and listened to Totaka’s song at the end :-)) but I don’t think I ever finished it on the harder difficulty. I think I started, but it seemed like mostly the same game so I got bored… I think the thing about VB Wario Land is that it feels like one of the most “finished” VB games. The graphics are really nice, the 3D effects are cool, the music is fine, and the animations are pretty smooth. Basically the only hitch is that it’s too short. I have fond memories of spending hours trying to find all the secrets in the original Wario Land on Game Boy…
Protoman85 wrote:
I want screenshots!
You could just download the latest version and play it in mednafen… What do you need pictures for when you can have actual gameplay?
Akumie, you’re awfully eager for the contest to be over… I feel like you don’t appreciate how much work it takes to make a game. I’ve written 795 lines of code (which really isn’t much) for my entry in the last month and a half and I’m nowhere close to “finished” (although I will release something that I’ll be satisfied with for the compo) not to mention the time I spent planning the framework, rewriting broken code, making graphics, laying out tilesets… I won’t say it hasn’t been fun, but it’s not like you can just throw a bunch of pictures and sounds together and have an awesome game come out. I don’t mean to be rude, I’m just pointing out that we’re all doing our best here. I’m sure there will be some excellent entries by the deadline.
I think all that needs to be said is that this is really sad.
eBay policy says:
You’re not allowed to include conflicting or misleading product information in a listing. For example, if you’re offering a refurbished item, you can’t describe the condition as “New” in item specifics.
I think I’ll report them.
rubengar wrote:
when the caracter stop, how to stop always in the first frame of the animation??
That really depends on your code. The basic idea is that if the character is not moving, you set the sprite to the first frame. That means you have to keep track of whether the character should be moving, which could be as simple as checking if the player isn’t pressing anything. Some pseudocode for that would be:
if (left is pressed) move left update animation else if (right is pressed) move right update animation .... // More ifs else if (nothing is pressed) change the frame to the first one
…And then update the images onscreen. To be more efficient, you could even put the nothing pressed case at the top, and then your code wouldn’t have to check for any of the other cases. There are more complicated ways of doing this, but this simple way might work for you.