Question about BOR source code

13 Sep 2010 01:42
Specifically, it's about the video_clearscreen() function.  In terms of a double-buffered modern graphics setup, what exactly would it clear?  Does it clear the render buffer, both framebuffers, or only the next framebuffer?

This problem applies to the Wii and OpenGL video backends for OpenBOR.  I've looked in the BOR source code, but my search quickly led to some x86 assembly dealing with VGA monitors, which I don't care to decode.

Quote
Senile Team Big Cheese
Avatar
13 Sep 2010 06:48
I don't know that code by heart any more, but I took a quick look for you.

As you probably already know, the video rendering in original BOR works like this:
1. The image is rendered in a buffer in main RAM (the "backbuffer" a.k.a. "virtual screen").
2. The backbuffer is copied to video RAM during the vertical retrace, making it visible on the screen.

video_clearscreen() clears video RAM, i.e. the actual screen and not the backbuffer (although in BOR the backbuffer is stored in a structure called "s_screen" which may be considered a bit of a misnomer). This is evident from the C code, by the way, so you didn't need to look at the ASM code at all to figure it out.

Since the Wii's "modern" setup uses almost the exact same method to render its images (rendered in the embedded frame buffer, then copied to the external frame buffer) you should be able to apply the same functionality quite easily.

Quote
13 Sep 2010 21:52 / last edited 13 Sep 2010 22:01
Roel wrote:
I don't know that code by heart any more, but I took a quick look for you.

As you probably already know, the video rendering in original BOR works like this:
1. The image is rendered in a buffer in main RAM (the "backbuffer" a.k.a. "virtual screen").
2. The backbuffer is copied to video RAM during the vertical retrace, making it visible on the screen.

video_clearscreen() clears video RAM, i.e. the actual screen and not the backbuffer (although in BOR the backbuffer is stored in a structure called "s_screen" which may be considered a bit of a misnomer). This is evident from the C code, by the way, so you didn't need to look at the ASM code at all to figure it out.

Since the Wii's "modern" setup uses almost the exact same method to render its images (rendered in the embedded frame buffer, then copied to the external frame buffer) you should be able to apply the same functionality quite easily.

OK, that makes sense...so I'd only need to clear the external frame buffer that will be used next on the Wii, and the next framebuffer in OpenGL.

Unfortunately, rendering on the Wii with libogc is not that simple - the s_screen has to be swizzled and copied to texture memory, then the texture is rendered onto the embedded frame buffer, then the embedded frame buffer is copied to one of two external frame buffers, a pointer to which is passed to libogc so that it knows which frame buffer to send to the TV.

But that's already implemented.  I just wasn't sure what video_clearscreen() meant.  Although it is interesting to find out that the s_screen structure was originally a backbuffer copied directly to video RAM.

Quote
Julian W.
Guest
18 Oct 2010 03:05
Hello I was wondering if its possible to make a Fighter using the Beats of Rage Mod?
Something like Street Fighter, King of Fighters and/or Guilty Gear?
I am interested in attempting to make one.

Thanks in Advance.

Quote
18 Oct 2010 04:59
That's possible but you need to use OpenBoR cause there are so many required 1vs1 features which could be made with OpenBoR.

Quote
Julian W.
Guest
19 Oct 2010 06:11
OK Thanks Bloodbane 

Also I completely forgot about OpenBoR I will use that then.

Thanks Again.

Quote
Julian W.
Guest
19 Oct 2010 06:14
Sorry for double post but a quick question?

Which version(s) is best for using OpenBoR for DreamCast and Psp?

Thanks Again.

Quote
03 Nov 2010 00:41
Stick with whatever the latest build is, but don't use build 2851!

Also, does your question have anything to do with the original topic of this thread?

Quote
Copyright © Senile Team. All rights reserved. | About Senile Team | Contact us
Wii and WiiWare are trademarks of Nintendo. © 2012 Nintendo.
Dreamcast™ is a registered trademark of SEGA Corporation.