Release VisualBoyAdvance port


Zink

Member
Joined
Mar 8, 2012
Messages
170
Let's begin with why I decided to do it in the first place...


Only recently I discovered this project, and I fell in love in it almost from the first glance. This is what I dreamed of (though more likely with an x86 processor, but the cons of such solution were overwhelming - I've read the FAQ and took the point), this little device turned out to have almost everything I wanted in an ideal device, and even more. So I decided that I want the Pandora, and I also made it an excuse to learn more Linux programming.


I don't have Pandora yet. I haven't even preordered, because of some financial issues I'm going through now, but everything seems to be going the right track, and I should be able to preorder next week. Earlier I thought there was an VBA port on Pandora, as the wiki emulators page stated. Most console games I like to play are Zelda series for GameBoy (played all Zeldas for GBColor), and I was happy to know that VBA works fine on Pandora. But while reading the forums I stumbled upon this thread: http://boards.openpa...lost-pnd-thread, and found out that VBA has got some licensing issues and is unlikely to be available. Someone also said that probably it could be recreated with a minor effort. This inspired me to actually do it, first to learn how to port things to Pandora, second to have working VBA for my Panda when I finally get it (I know there are other good GB emulators, but I particularly like VBA), and third to make a contribution to the community.


Porting indeed required only minor effort (one missing include declaration and some invalid const char* to char* assignments), but it took me a lot of time to make the actual toolchain working :) . On this board I haven't found solution to most of the problems I had, and even one guy wrote that he tried to do similar thing and gave up - I'm not surprised, I almost gave up several times :) . I used the Ivanovic toolchain, as it seemed to be the most up to date. If anyone would like a small tutorial, I can write one.


Now after this too-long introduction, here is the beta:


http://kazekr.net/pnd/VBA-kk.pnd - the link has been updated - it's the newest version


It is an executable only, no PND yet. I would first like to test the executable for flaws, before packaging it to PND that may have flaws on itself (because of my lack of knowledge about PND making). If it is not acceptable, then I will make the PND.
 
Last edited by a moderator:
Unusual that you didn't get any responses. People often keep walking if they can't just download and run the PND, but still, a release like this usually gets a few bites. All I can suggest is that the Rebirth entries have drawn everybody's attention for the past week.


I'll give it a test when I get home from work. :)
 
Thanks. Maybe the problem is that I haven't packaged it in PND yet (it's bare executable), and it requires more effort to run?
 
That does limit how many people will grab it, but lots of betas are presented that way so it's not a problem. Don't read too much into it - as mentioned there is lots of other stuff going on this week, and we're just at the tail end of a holiday weekend in many places too.
 
It works fine. :) I don't have many games on hand but tried a couple in .zip and .gba format, no problems. Sound is a little choppy, and overall performance could probably be better, although I am not one of the most astute observers when it comes to frame rates etc. Once you have a PND together you will start to get more feedback in this area, although I guess it'll be tough to work on until you get some hardware.


Screenshot:


yDyfr.png



After taking this shot I edited my config like this for fullscreen mode, with 3x scaling:



Code:
# Video setting. 0=1x, 1=2x, 2=3x, 3=4x.

video=2


# Use fullscreen mode. 0=false, any other value means true

fullScreen=1
It worked nicely. When you package the PND, these would probably be good defaults to use. Mapping to gaming controls (ABXY) in the next version would be good too (note: the d-pad already works fine). This page should help if you haven't seen it already: http://www.pandorawiki.org/Keyboard
 
I haven't tried this yet for two reasons: I always wait for a pnd and I already have a vba.pnd on my Pandora that works very nicely...


I'm interested in what you're doing and want to say well done for starting this project, but i'm going to wait untill it's a little further along and in pnd format before I give it a try. :)


Then i'll let you know how the two pnds compare to each other.


It will be nice to have a version of vba that's being supported...


Keep up the good work! :)


Sent from my HTC Sensation Z710e using Tapatalk
 
Also I think it would be worth a try to render at 1x resolution and let notaz sdl do the upscaling for better performance.
 
Thanks for the feedback. It's great that it works :) . Yes, it would be far better if I had some hardware, but this one was mostly a test. I wanted to see how hard it would be to make such thing. For the next weeks I will be very busy earning money for my own Pandora :D , so I will probably have some time to make PND, but not for any performance improvements. Later on, when I have more time, I will work on this and make your suggestions.


I have some questions that may be obvious for Pandora owners, but not for me: How console programs, like this one, are supposed to be run? I mean, you cannot just double-click on it, because it needs a rom filename as a parameter. Is it possible to run PND with a parameter? Should I write a small gui for rom selection on run? How is it done in StreaK's version of VBA?


Gruso, do you also have StreaK's VBA? If yes, can you tell me whether they differ in performance?
 
Last edited by a moderator:
You can use for example picklelauncher, a frontend especially written for this task on Pandora.


http://pandorawiki.org/PickleLauncher


Also as said, for scaling you should use notaz hardware accelerated sdlversion, what gives scaling for free, instead of resourcecostly softwarescaling.
 
The PND is supposed to provide a graphical frontend that handle everything for you


EDIT :

Also as said, for scaling you should use notaz hardware accelerated sdlversion, what gives scaling for free, instead of resourcecostly softwarescaling.
for GB© games I'm far from against a little filtering before using linear scaling (the hardware scaller) espetially since we have this : http://boards.openpandora.org/index.php?/topic/7087-neon-scalers/
 
Last edited by a moderator:
Yes, thats true. But visualboy advance is not very performant...


Edit: If the neonscalers could be applied optionally, it would be great though. But if you use scale2x for example, you can still do the rest of the fullscreenscaling with notaz sdl.
 
Last edited by a moderator:
gpSP has issues with some games (GTA Advance doesn't work at all, and problems are also quite bad with Mario & Luigi RPG and Mario Party Advance). Personally, I would very much like a VBA port that runs at a decent speed with GBA games.

Okay, but why do you assume optimizing VBA to be fast enough on Pandora w/o frameskip is necessarily an easier problem than improving gpSP for some games? Both of these things represent real amounts of work..
 
I've experienced no problems at all with this version emulator except with GBA files (clocked at 800). Notably, I'm not having the sound issues mentioned by Gruso at all.


I also remapped the controls to buttons more suited to the Pandora's layout - the lines for the .cfg are spoilered below

Code:
Joy0_Left=0114

Joy0_Right=0113

Joy0_Up=0111

Joy0_Down=0112

Joy0_A=0119		# X Button

Joy0_B=0116		# A Button

Joy0_L=0129		# Left Shoulder

Joy0_R=0131		# Right Shoulder

Joy0_Start=0134		# Start Button

Joy0_Select=0132	# Select Button

Joy0_Speed=0020

Joy0_Capture=0125
 
gpSP has issues with some games (GTA Advance doesn't work at all, and problems are also quite bad with Mario & Luigi RPG and Mario Party Advance). Personally, I would very much like a VBA port that runs at a decent speed with GBA games.

Okay, but why do you assume optimizing VBA to be fast enough on Pandora w/o frameskip is necessarily an easier problem than improving gpSP for some games? Both of these things represent real amounts of work..

I can't say for certain which problem is harder (probably both tasks are quite difficult), but it appears that the Pandora currently is only slightly underpowered to run VBA comfortably with the games I have tested. I haven't tested many games but I know for example Zelda - Minish Cap seems to work perfectly at 1050Mhz using mednafen which is based on VBA.


gpSP is very impressive software and it is my first choice on the Pandora, but the compatibility is not as good as VBA. I think if VBA performance could be improved 15% or 20% (if thats possible) it would certainly be quite enjoyable to use.
 
Okay, but why do you assume optimizing VBA to be fast enough on Pandora w/o frameskip is necessarily an easier problem than improving gpSP for some games? Both of these things represent real amounts of work..

We're talking about an easy change that will improve performance at the cost of maybe looking not as good (using hardware scaling), not vague optimization.
 
Last edited by a moderator:
If it's just 15-20% then yeah, the scalar should help.. are we talking full speed w/o frameskip, then? Frameskip makes a really big difference for VBA, the renderer is really slow...
 
Last edited by a moderator:
If it's just 15-20% then yeah, the scalar should help.. are we talking full speed w/o frameskip, then? Frameskip makes a really big difference for VBA, the renderer is really slow...

Just to clarify what I was saying earlier about 15%-20%- I was testing Zelda Minish Cap using Mednafen which is based on VBA. This build already utilizes the hardware scaling from notaz' SDL. Also what I was describing as fullspeed at 1050Mhz was without frameskip.


I am curious what your opinion is on how much the VBA renderer could be improved. Would utilizing NEON possibly have a big impact?
 
Back
Top