Jump to content
Visual Boy Advance-M
dualscreenman

Qt GUI feature suggestion thread

Recommended Posts

Wow!Even Windows CE.Very interesting!!!!Does that mean Windows Mobile 6 and 7 will be support ?

 

Hypothetically.

But I wouldn't hold my breath - mobile devices probably don't have enough horsepower to emulate GBA at usable speeds ...

Share this post


Link to post
Share on other sites

http://www.vampent.com/vbagdownload.htm

 

Actually they can play quite a few of them just fine. (Well the Nokia and Sony Erricson phones the emu is made for)

 

That is fully commerical software though by the way....the demo/free download only gives you five minutes.

 

My Nokia 6110 Navigator hardly has more power than a P1. It's a 233Mhz processor with 48MB RAM.

Share this post


Link to post
Share on other sites

Oh, OK. I was judging by the performance of VBA-M on my 1.7GHz P4 ... (with some filters and stretching and moderate quality sound and possibly somewhat more demanding games ...).

Share this post


Link to post
Share on other sites

I suppose it being a Java emulator aswell as the complete lack of filters as the screens are smaller than GBA screens aswell as most phones having fairly limited sound quality help somewhat.

 

I never used filters on my Celeron 1.7Ghz so I would not know how they affect performance...but I can tell you that without filters and stretching (or at least not more than 2x or 3x) even a P3 (never had a P2 to try...a P1 lags a fair bit though and it's somewhat frustrating playing on it) can handle VBA just fine. You have to have a somewhat decent Video renderer though (for that time...a TNT2 does the job just fine). I was so surprised when I got my Celeron 1.7Ghz with 256MB RAM which was double the power I had before...and VBA lagged....turns out the SiS650 onboard graphics card was so bad it could not even handle games which did not even require a propper video accelerator aswell...as soon as I stuck a GeForce 5200FX in there though everything was fine.

Share this post


Link to post
Share on other sites

Hm, I wonder if I should add a renderer that does not use real textures but rather just some surfaces in 2D.

Share this post


Link to post
Share on other sites

(snipped)

...

I never used filters on my Celeron 1.7Ghz so I would not know how they affect performance...

...

 

On my computer (1.7GHz celeron, 2G ram, radeon 9200SE), right now (megaman battle network 1, some battle, open custom screen):

x1 runs at 99% (192% with turbo)

x2 runs at 85% (185% with turbo)

SAIx2 79% (...)

superSAIx2 75%

superEagle 75%

pixelate 84%

advancedMAME 89%

bilinear 80%

bilinear+ 77%

scanlines 87%

TV mode 85%

lq x2 77%

hq x2 66%

x3 57%

hq x3 44%

x4 50%

hq x4 33%

 

That's with no interframe filter (blender?), which would give another unwelcome hit.

OpenGL stretching feels like a no-op on my box.

 

 

...

 

I should get to the "make ROMs run on Qt build" thing.

Share this post


Link to post
Share on other sites
Hm, I wonder if I should add a renderer that does not use real textures but rather just some surfaces in 2D.

 

QPainter.

 

Sinamas's emulator uses it. And is quite zippy with QPainter enabled.

Share this post


Link to post
Share on other sites

I was talking about the non-Qt build.

 

EDIT:

Just why was I talking about the non-Qt build in the Qt build thread o.O

Share this post


Link to post
Share on other sites

This does not work with the old QT dll files package on the server.

 

It crashes with : The procedure entry point _ZN8QSysInfo14windowsVersionEv could not be located in the dynamic link library QtCore4.dll

Share this post


Link to post
Share on other sites

This does not work with the old QT dll files package on the server.

 

It crashes with : The procedure entry point _ZN8QSysInfo14windowsVersionEv could not be located in the dynamic link library QtCore4.dll

 

Qt 4.4 is used. Thats why those errors occur. So I need to upload the new Qt runtimes.

 

It would be cool if you would upload the mingw runtime DLL to our file server as well and/or provide a link.

 

Okay.

Share this post


Link to post
Share on other sites

Thanks. That would be cool. Then I can also take a look at the Qt build, I must say I am rather curious.

 

The mingw runtime was available in the old package by the way.

Share this post


Link to post
Share on other sites

Some planning/ideas by me:

 

- Do not use any internal filters anymore, instead extend the Kega Fusion plugin support (15, 16, 32 bit filters) and port one or the other filter to it.

 

- Completely support 7z files with multiple ROMs in them, save & load them to/from the recent files list in Form "...\ROMs\Advance Wars 2.7z\Advance Wars 2 [EUR].gba"

 

- Always use tr("") from the beginning to ease later translations.

 

- Use as much eye candy as possible. The MFC build only has ONE icon, now THAT's boring

 

- Use Phonon for Audio/Video Recording. (I'm not sure if Phonon is just a decoder or more).

 

- Maybe use phonon for sound output as well, so we don't need a platform specifiy audio plugin?

 

- Make sure from the beginning that as much usage of threads as possible is made. Maybe we have to rewrite the current interface to the core using callbacks for that. I think it would be good to create a new branch on the SVN (even though I don't exactly know how that works). if we have to make some changes to the core for making the Qt build work better, it would be awful if we had to change all the other GUIs all the time or they would be broken. All of the current source code for the different GUIs will be obsolete as soon as Qt takes over anyway, so maybe we should just archive the current state as a branch or something like that.

Share this post


Link to post
Share on other sites
- Do not use any internal filters anymore, instead extend the Kega Fusion plugin support (15, 16, 32 bit filters) and port one or the other filter to it.

 

So your saying, port the Kega Fusion filter functionality to Linux? Well, KF plugins are just Win32 DLLs...so......

 

Always use tr("") from the beginning to ease later translations.

 

Thought I already did that with my options box :o

 

- Use as much eye candy as possible. The MFC build only has ONE icon, now THAT's boring

 

Thats what I am doing: Oxygen icons to me look pretty sexy. And TCOS is planning (IIRC) a new VBA icon that we can use. We could use a icon artist....:P

 

Use Phonon for Audio/Video Recording. (I'm not sure if Phonon is just a decoder or more).

 

Seems to be just a decoder framework. Not entirely sure though.

 

Make sure from the beginning that as much usage of threads as possible is made. Maybe we have to rewrite the current interface to the core using callbacks for that. I think it would be good to create a new branch on the SVN (even though I don't exactly know how that works). if we have to make some changes to the core for making the Qt build work better, it would be awful if we had to change all the other GUIs all the time or they would be broken. All of the current source code for the different GUIs will be obsolete as soon as Qt takes over anyway, so maybe we should just archive the current state as a branch or something like that.

 

Sounds like a perfect topic for IRC discussion.

Share this post


Link to post
Share on other sites

About Phonon. I am not a developer, so anyone who knows more can correct me. But as far as I understand, Phonon is a generic API for multimedia which makes use of so called backends, like VLC (not with GUI and everything), Gstreamer, Xine, Mplayer, DirectShow, etc. If there's a new hyper 1337 replacement for these backends, just use that instead (If Phonon supports it), and no modification is necessary for the individual programs that use Phonon. So as far as I know, if you developed multimedia for either of these backends before, it's better to use Phonon instead, so the user can easily choose what backend to use.

 

How did recording work before? Did it use DirectShow? If so, I think Phonon is a good idea.

 

BTW (maybe offtopic): Will you still develop the SDL version? I would like to continue using your emulator on Haiku, but there is no Qt there. (Even though I prefer GUIs and love Qt and enjoy it on Unix-like systems) VBA-M SDL version is still much better than BoyCottAdvance SDL version.

Share this post


Link to post
Share on other sites

The current AVIWrite class uses the Video for Windows (VfW) API, the thing back from the 16 bit Windows days ^^

 

EDIT:

OK, since the Kega Fusion system does not work directly for Windows, maybe we can port it? After all, Linux does support shared objects, so you would have to recompile the plugins for diferent systems.

 

Another possibility would be to use only OpenGL shaders for pixel filtering. I don't know much about that yet, but maybe it is possible to put them in OS-independant files and compile them at runtime before usage? Even though there might not be many of them around, I'm very sure many interested people will write them once the architecture for them stands.

 

 

Another vision:

- Do not internally work with VIDEO_1x/2x/3x/4x or whatever, just use either windowed or fullscreen mode, probably fullscreen being non-exclusive to make switching faster and to keep widgets.

Share this post


Link to post
Share on other sites

Ok, I don't know much about Video for Windows, sorry.

 

If you improve the filter approach so it's more portable, why not? Just make sure it's not x86-specific either please. The shader approach sounds fine to me too.

 

Ohh yeah. Please don't use Esc for exiting fullscreen. I prefer the Esc key make the menu bar appear/disappear, and switching to fullscreen with Ctrl + F. If you make it configurable though, that's also fine.

Share this post


Link to post
Share on other sites

OK, I just created a new branch of the /trunk directory in /branches/qt

 

http://vbam.svn.sourceforge.net/viewvc/vbam/branches/qt

 

When using TortoiseSVN, I had to run the SWITCH command from the right-click menu on my current /trunk dir and point to /branches/qt, so now my trunk is actually the branch.

 

 

In this branch, I will first remove everything not related to the Core or Qt, then I will do some restructuring. We can then finally go wild in there and do all the necessary changes to the core layout without having to worry about compatibility to CMake, GTK, SDL, MFC and whatever. Creative minds need some freedom, don't they?

Share this post


Link to post
Share on other sites
Another possibility would be to use only OpenGL shaders for pixel filtering. I don't know much about that yet, but maybe it is possible to put them in OS-independant files and compile them at runtime before usage? Even though there might not be many of them around, I'm very sure many interested people will write them once the architecture for them stands.

 

In MuNES (my own NES emulator), I have a rock solid pixel shader implementation in OpenGL 2.0. It uses ZERO outside dependancies apart from opengl32.dll itself.

 

Krom, from GBAdev.org, made some very nice shaders we could use. Sure, they aren't quadratic resamplers and stuff like that, but they are quite cool.

 

I am interested in redoing the shader support in VBA-M, if people want it.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×