Original Post

Hello!

Over the last 6 weeks I’ve been writing a Virtual Boy game for the 2019 Dream Diary Game Jam, along with my friend, Nyrator. The result is Red Square, a short Yume Nikki Fan Game.

http://slum.online/vb/

The game is written entirely in assembly. Nyrator handled graphics while I handled the programming. The game doesn’t feature any sound, since I didn’t have enough time to write an assembly sound driver. The source code is also available for free on the website, licensed under the Zlib license. The source obviously contains spoilers, so don’t look into it if you’re planning on playing first. (Some of the code is atrocious due to time constraints, but over all I’m fairly proud of it)

The game is fairly simple. You walk around dream worlds collecting different effects. Once you’ve collected them all you’re able to play the ending. There’s no saving, so either use save states or complete it in one play through. (It’s really not too long)

Anyway, I thought I’d share, since it was suggested to me by a VB friend I know.

  • This topic was modified 4 years, 10 months ago by Kresna.
38 Replies

Oh wow, very interested to see this in action. What motivated you to make it for the Virtual Boy?

Very cool! Will be trying this on my VB for sure

Levine91 wrote:
What motivated you to make it for the Virtual Boy?

Initially it was a joke idea, but the more I thought about the VB the more I thought it would be a fun project. After talking to Nyrator about it over pizza we decided to go all in. It turned out that the hardware is really great to work with.

Aside from that, I enjoy writing assembly, and I’d never written any for a 32-bit RISC processor before this, so it presented a great opportunity to learn.

speedyink wrote:
Very cool! Will be trying this on my VB for sure

That’s flattering to hear! I hope you enjoy it! Let me know if you run into any problems on real hardware. I initialize the VB fairly rigorously so it should work. Mednafen caught a lot of my early mistakes. I don’t actually own a VB (yet?) so I wasn’t able to test it myself.

I wasn’t able to get it to run on my flashboy. Tried both with and without padder. But I’m probably doing something wrong. 😛

Kresna wrote:
That’s flattering to hear! I hope you enjoy it! Let me know if you run into any problems on real hardware. I initialize the VB fairly rigorously so it should work. Mednafen caught a lot of my early mistakes. I don’t actually own a VB (yet?) so I wasn’t able to test it myself.

Unfortunately I wasn’t able to get it to run on real hardware using the Flashboy cartridge. None of the padding options work. I want to try flashing it to a flashable cart but I gotta get my printer cable for my cart flasher back first.

Still very cool that you decided to make a more or less VB compatible game, it’s always fun to try out new stuff on this little oddity 🙂

Hmm, odd. I’ll have to look into what exactly might be causing the issue. It may take some time to debug, especially since I can’t test it, but I’ll see what I can do.

No worries at all.

Shoot me a PM if you want help with testing on hardware.

I went to the discord group and user jorgeche tested the rom on his flashboy, and it worked. There was a couple of issues, however. The first was an input bug related to a hardware edge-case (This has been fixed and the ROM updated on the website). The second is that the game’s frame rate suffers on a real VB. We discussed some likely causes and I’ll eventually look into the problem, but it won’t be until some time after the 7th of July.

This means that, though it does run on hardware, for the time being it’s probably best experienced through an emulator. When I get time to sus out the hardware speed issues I’ll post an update.

Well that’s embarrassing, I was using the padder wrong.

Reference for anyone else:
hold control while dragging the file onto the padder and choose padding option 3. (and default size option)

Yup, definitely works on real hardware. I see what you mean about the frame rate, hope it turns out to be what you guys figure.

Otherwise, this game looks great on hardware. Is this your first 3D game? You’ve done a great job making lots of use of it!
Definitely can’t wait to try this again once it gets sped up 🙂

speedyink wrote:
Well that’s embarrassing, I was using the padder wrong.

Reference for anyone else:
hold control while dragging the file onto the padder and choose padding option 3. (and default size option)

Yup, definitely works on real hardware. I see what you mean about the frame rate, hope it turns out to be what you guys figure.

Otherwise, this game looks great on hardware. Is this your first 3D game? You’ve done a great job making lots of use of it!
Definitely can’t wait to try this again once it gets sped up 🙂

Thanks, was doing the same thing wrong. 😛
Apart from that framerate issue it looks and feels great. Well done!

speedyink wrote:
Well that’s embarrassing, I was using the padder wrong.

Reference for anyone else:
hold control while dragging the file onto the padder and choose padding option 3. (and default size option)

Yup, definitely works on real hardware. I see what you mean about the frame rate, hope it turns out to be what you guys figure.

Otherwise, this game looks great on hardware. Is this your first 3D game? You’ve done a great job making lots of use of it!
Definitely can’t wait to try this again once it gets sped up 🙂

Thanks speedyink! Was running into the same mistake, that worked!

speedyink wrote:
Otherwise, this game looks great on hardware. Is this your first 3D game? You’ve done a great job making lots of use of it!
Definitely can’t wait to try this again once it gets sped up 🙂

Thanks! This is my first time making a game with any kind of 3D depth, I think it turned out okay too! The real praise goes to Nyrator if you enjoy the graphics, since he did almost everything you see.

I’ll be sure to post an update when I’ve fixed the framerate issue!

I’ll be sure to post an update when I’ve fixed the framerate issue!

I am looking forward to that! Thanks!

Kresna wrote:

Thanks! This is my first time making a game with any kind of 3D depth, I think it turned out okay too! The real praise goes to Nyrator if you enjoy the graphics, since he did almost everything you see.

I’ll be sure to post an update when I’ve fixed the framerate issue!

Well with the pair of you together it looks like you’ve churned out a very nice little game.

Definitely looking forward to any update builds 🙂

Looks pretty damn cool! Good work 🙂

Red Square has been updated and now works on real hardware. This has been tested by Jorgeche. For those of you who want to play it on your real Virtual Boy, now you can do that. The updated ROM is available from the official page. If you want to know what went into it, continue reading.

A lot of work went into debugging this issue from a lot of people, the following things about the game have changed on a technical level:

- Instruction Cache was enabled
- Wait Controller was configured
- VBlank period is now done via VIP interrupt
- VBlank interrupt is waited for using HALT
- Keypad polling was changed to initiate a hardware request at the start of a frame and poll the keys at the end of a frame
- FRMCYC was set to 0 on boot (as is done by commercial games) 

All of these changes didn’t fix the problem, but will provide a much greater battery life when playing the game. Specifically, changing the keypad polling method, and using HALT and the VIP interrupt. The real fix came from a very specific flag in the DPCTRL register.

The DPCTRL register has a flag called DPRST, which automatically resets the display (changing bits in INTPND and INTENB). I set this flag on hardware reset and never unset it. It turns out, this flag never gets unset. What happens when it remains set (it seems) is that every other frame is skipped because DPCTRL resets TIMEERR, FRAMESTART, GAMESTART, RFBEND, LFBEND and SCANERR in INTPND and INTENB. This was discovered when I was debugging retail games and found that their value for DPCTRL ($0302) did not match my value ($0303). My advice? Don’t set DPRST, manually write to INTCLR and INTENB instead of relying on DPRST, and if you do, unset it very shortly after.

A lot of community support went into narrowing down the problem and offering solutions for this bug. The people on the PlanetVB Discord server have been extremely helpful, and I’d like to thank Jorgeche in particular for his time, knowledge, and help in testing and offering solutions to the problem.

Wonderful news and great work. Will play it tonight! 🙂

Hi.
So, I got to a screen that said FIN after Nina jumped to what seemed like her death? Is this the ending?

I collected a bunch of items (pizza server, 3d glasses, a bike, a manga) but none of them seemed to do anything. The manga got me through a door, but I found nothing useful inside. The bike said it would make me go faster, but did not. I’m confused…

Is the point of the game to collect the items and then to make that jump or am I missing out on something?

I also wanted to ask, are there plans to add music or sound effects? I feel like both would greatly enhance the game.

I hope no one minds that I have attached a padded copy of the 7.19.19 ROM to this post. It was padded using method #3 with the default size (21 – 2MB) and has been confirmed to boot on actual hardware.

Thanks!

Lester Knight wrote:
Hi.
So, I got to a screen that said FIN after Nina jumped to what seemed like her death? Is this the ending?

I collected a bunch of items (pizza server, 3d glasses, a bike, a manga) but none of them seemed to do anything. The manga got me through a door, but I found nothing useful inside. The bike said it would make me go faster, but did not. I’m confused…

Is the point of the game to collect the items and then to make that jump or am I missing out on something?

Hello!

Yes, that’s the end of the game. Once you’ve collected all four effects and walked to the balcony, the game ends.

This might be the part where it’s a good idea to explain that the game is a satire on the Yume Nikki fan game concept; it’s a joke. Only one of the effects has a function (aside from opening a door), and the bike deliberately does not speed you up. The deeper meaning is simply what’s on the surface. Delicious.

Lester Knight wrote:
I also wanted to ask, are there plans to add music or sound effects? I feel like both would greatly enhance the game.

I hope no one minds that I have attached a padded copy of the 7.19.19 ROM to this post. It was padded using method #3 with the default size (21 – 2MB) and has been confirmed to boot on actual hardware.

Thanks!

I don’t have any plans to continue developing this game. As of now, it’s complete. My goal was to produce something playable for the Virtual Boy in 6 weeks, and I feel that adding content after would be dishonest to the spirit of the project. In future projects, where I can spend more of my own time, I’ll have sound and other features not present here.

As for uploading the ROM, I don’t mind, however I do encourage people to visit the site for the full experience, and for the source code (if interested).

camping right now in some lake in the middle of nowhere, but when i get back to civilization i’m definitely checking this out

 

Write a reply

You must be logged in to reply to this topic.