Plombo's to-do list

SimonSmith said:
That is a great feature .
Please add this feature to drawsprite.
That is much more versatile..

Drawsprite already works with sprites that use alpha masks.  Just load the mask along with the sprite (i.e.,
Code:
loadsprite(path, maskpath)
) and drawsprite will use it just fine.  Related:

SimonSmith said:
I found loadsprite has 2 parameters: loadsprite(path,maskpath)
And I don't know how to make it work.
I tested the 2nd parameter and gave it a mask file.
But it didn't work properly... :'(

I just tested it and it works, so your mask is probably malformed.  Alpha masks in OpenBOR have to be grayscale images following very specific rules:
[quote author=the linked wiki page]
  • The mask must have exactly the same width and height as its corresponding sprite.
  • The transparent pixels in the sprite must match exactly with the fully transparent (grayscale value 0) pixels in the mask. Any transparent pixels in one image that aren't transparent in the other will cause undefined behavior - anything from the mask not working to a complete engine crash.
[/quote]
 
I was able to fix the Ogg Vorbis memory leak after running OpenBOR through valgrind. However, this revealed several other places where we're leaking memory, so fixing those leaks is a new entry on the list.

*Edit* The other memory leaks are now fixed.
 
I'll also commit my hardware buttons fix after yours. DC should also release an updated version for Windows and others so that they would benefit from this.

BTW, how do you use Valgrind? I want to try using it on Android since they supported Android as well.
 
Great job! :D
Thank you Plombo!

I have a request...
I want OpenBOR draw faster(already fast but not enough for HD Mods...).
Is it possible?
 
Aside from that, it would also be nice if the graphics could also have some good frame management, the extreme case is frameskips.

But from what I could gather, drawing faster could not work if the engine is not done a complete overhaul of its graphics pipeline, trimming the fat and stuff. Like in android with the OpenGL pipeline, where the other shaders were removed in favor of just the bare essentials and billinear, which is already great in its purpose.

I just compiled my own copy and some unoptimized games could jump from the tens to 15’s. still a long way, but that's significant. Still, it varies from device to device and it's still not as tested enough, so time will tell.
 
SimonSmith said:
Great job! :D
Thank you Plombo!

No problem, thanks for finding the Ogg Vorbis memory leak!

SimonSmith said:
I have a request...
I want OpenBOR draw faster(already fast but not enough for HD Mods...).
Is it possible?

Not really.  Problem is, there's no fat left to trim.  OpenBOR's CPU-based rendering works extremely well for low-resolution stuff, which is what most people use it for.  But as you up the resolution and/or pile on the graphical effects, you start to reach the performance limits of software rendering.  For this reason, OpenBOR will probably never be well-optimized for HD content.

CRxTRDude said:
Aside from that, it would also be nice if the graphics could also have some good frame management, the extreme case is frameskips.

OpenBOR is coded in such a way that the game speed is independent of the frame rate, i.e., the game shouldn't slow down when the framerate drops.  The only time this falls apart is at extremely low framerates where the game would be unplayable anyway.  So "frame management" would only exchange one unplayable experience for another.


CRxTRDude said:
But from what I could gather, drawing faster could not work if the engine is not done a complete overhaul of its graphics pipeline, trimming the fat and stuff. Like in android with the OpenGL pipeline, where the other shaders were removed in favor of just the bare essentials and billinear, which is already great in its purpose.

Like I said to Simon earlier in this post, there's not really any fat to trim.  Any attempt at a "complete overhaul" would only run into the same limitations we already have.
 
I unserstand that man, that's what I said before on my post, the fact that there's nothing else left to optimize (i was about to say optimize, btw) and also the fact that frame rate is already independent in video and logic, then that's to say that's already it's capabilities through and through.

If we wanted HD content, we would need to change the way openbor is rendered and go HD, but I'm sure there will be a lot to do and dunno if DC would tackle hardware rendering in the next openbor.

Sorry if that's incoherent to you guys, unfortunately I done this without a cup of coffee.
 
Today I looked further into WebM support, by which I mean I wrote a working standalone WebM player that I hope to integrate into OpenBOR at some point. ;) It only supports VP8/Vorbis for now, though it wouldn't be too hard to add VP9/Opus support somewhere down the line.  Anyway, here are the conclusions I came to about WebM support in OpenBOR.

First of all, it's definitely viable.  It's not too much of a performance burden for videos encoded at the low resolutions that most OpenBOR mods are made at.  However, decent performance on a given platform requires the presence of some manner of hardware YUV overlay support.

The hardware YUV situation looks like this for the different platforms:
  • SDL 1.2 in non-OpenGL mode has a planar YUV overlay feature, though it might fall back to software in some cases.
  • For SDL+OpenGL, it's a fairly simple matter of making three textures and using a shader to do the YUV->RGB conversion efficiently.
  • Things are a bit trickier on the Wii, but it's possible to do YUV->RGB conversion with the Wii's GPU using some TEV sorcery, as demonstrated by WiiMC.
  • I have no idea about the PSP.
  • I haven't checked, but I'm sure that there's some decent way to use YUV overlays in the Android port.

The hardest part of implementing a video player of this sort in OpenBOR will be getting it to play nicely with the sound mixer.  Audio in OpenBOR is always tricky, and this will likely be more involved than anything audio-related I've ever done before. :-\
 
I see that you're going to use Webm as the choice for video, that's not bad. It's something not seen before and if this is great, then it's good both to OpenBOR and possibly CC if DC agrees.

Since Android is using SDL+OpenGL, it's probably what you said before.

Since we already had OGG, Theora might be a good path though, but what kind of advantage does Opus have from Vorbis?
 
CRxTRDude said:
Since we already had OGG, Theora might be a good path though, but what kind of advantage does Opus have from Vorbis?

It seems logical that our existing Ogg support would make Theora easier, but that's actually not the case.  The Ogg Vorbis support in OpenBOR uses libvorbisfile, which is specifically for Ogg Vorbis audio, so it doesn't make Theora any easier.  I opted for WebM over Ogg because VP8 is a better, more modern codec than Theora, and WebM is a simpler container format to work with and understand.

Regarding Opus, it can apparently achieve somewhat better compression/quality than Vorbis.  But the real reason to support it is that it's supported by WebM, and wouldn't be too hard to add.  The limited number of codecs supported by the WebM format (VP8/VP9 for video, Vorbis/Opus for audio) makes it easy to support all of the different configurations, so there's no confusion over what files are supported.  The idea is that if it's a .webm file and it's at the right resolution, then it will work, no questions asked.

CRxTRDude said:
BTW, how do you use Valgrind? I want to try using it on Android since they supported Android as well.

Missed this question before.  On Linux, I just run "valgrind ./OpenBOR" in a terminal.  I'm sure it's more involved for Android, though, because everything is more complicated in mobile development. :-\
 
Valgrind is used in compiled applications right?

For WebM, I know a lot of people would like to add videos to their mods, so I hope you can do it and at least if it's done, I hope you can give some pointers on how it works and help me on the Android side. (If you could, at least update your todo list for this one ;))
 
CRxTRDude said:
Valgrind is used in compiled applications right?

Yeah, and you don't have to do anything special when compiling it, other than including debugging symbols if you want any useful information.  You just point Valgrind to a regular compiled binary and it works its magic from there.
 
K plombo, I'll try that on my phone and I'll give the results here. I'll also search for using valgrind in android on Google for details as well. Thanks for that!
 
Since my name as been brought up a time or two, I should say I have no issues with what you guys are doing.

Honestly, knock yourselves out. Low level programing is not my purview, and probably won't be for a couple more years. Even if I was a low level expert (and I'm not), I'd still prefer to deal with high level logic and otherwise act as a manager.

Just follow the rules (i.e. no nerd fighting or drastic functionality changes without consulting me) and you'll be golden. Plombo has been around plenty long enough to know what I mean, so if in doubt and I'm gone at the moment, ask him.

DC
 
Thanks DC, I'll keep your words in mind. Sorry to bring you too much on that.  :)

If there would be some drastic stuff, I'll do some chain of command type thing instead (Plombo first then you), that way we can have some branch of accountability for the devs in the project, whether it's me or someone new who would like to commit to the OpenBOR source. (Trying to remember my nursing management stuff now.  ;))
 
CRxTRDude said:
Valgrind is used in compiled applications right?

For WebM, I know a lot of people would like to add videos to their mods, so I hope you can do it and at least if it's done, I hope you can give some pointers on how it works and help me on the Android side. (If you could, at least update your todo list for this one ;))

I am one of those people. For sure we can use scripted cutscenes, but if we could use a video, it would be way easier.

btw, when we will have a new public release? Can you guys compile the current windows version?
 
If no one is going to compile it, perhaps I could, but on my account, the OpenBOR category in the file manager is empty and I can only compile Windows and Android, I got problems on others.
 
Could/would the video files also contain audio?  Because another big problem with cutscenes in openbor is syncing speech/sfx etc.  So if the video files can contain audio then there should be no issues after converting.

I've tested many times over... but simply converting a video capture from a game into openbor is incredibly tedious right now.  even if your video project is using exact audio format as openbor, once audio is converted to .OGG and video to .GIF nothing will be in sync anymore.  I suspect that even with a proper video format this would still be a pain in the ass making sure audio will sync 'perfectly'
 
Back
Top Bottom