bsnes v0.037a released

Archived bsnes development news, feature requests and bug reports. Forum is now located at http://board.byuu.org/
Locked
byuu

Post by byuu »

Hmm, not seeing what you mean. Here's a mockup, point out the problem to me.
The Linux font is wider, but it looks really good with the Windows one.

I would also prefer that active appear somewhere in the line that specifies the current driver. That's why I didn't put the names at the top.

The listbox may not be a bad idea -- then we don't have to use grayed out text for the caps to keep people from thinking the boxes are checkable.

How about a list of "Capability" : "Status", eg:
"Video::Synchronize" "true" //or "Yes"
"Audio::Latency control" "false" //or "No"

Or if we could come up with better generic labels for the columns:
"Video::Active driver" "Direct3D"
Please don't.
I just wish I could make both of you happy. But there's never a correct answer -- it's all subjective.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

This is what I would do, move the capabilities of APIs to the readme, and put these buttons in, which consequently makes the note unnecessary. Hitting the apply button gives an "Are you sure?" verification.

Image

I'm looking at vex's linux font again, and it still doesn't look wide enough to be dangerous to me. We need a mockup of that. Maybe we should just change "driver" to "API"? Or just eliminate it entirely, it's a rather obvious implication from the highlighted section.
subjective.
I always assess objectively on facts, not personal feelings. I can objectively prove that either method I gave for exiting in fullscreen is easier than involving the menu. Even programs that don't have a real need for ever hiding the title bar put it in there, it's just an unthinking oddity of gui design.
Hunter
New Member
Posts: 9
Joined: Sat May 24, 2008 8:43 am

Post by Hunter »

Portuguese Brazilian locale for 0.037a. Sorry for the big delay, I was bit busy this week.
FirebrandX
Trooper
Posts: 376
Joined: Tue Apr 19, 2005 11:08 pm
Location: DFW area, TX USA
Contact:

Post by FirebrandX »

Ok after struggling to reach the hidden bsnes config file (Vista doesn't allow you to directly browse to the AppData folder), I finally managed to assign an exit button.

If possible, byuu, I think it would be a good idea to simply have the config file for bsnes be in the same folder as the exe. Is this possible or does the file have to be in the hidden AppData folder?
wertigon
Rookie
Posts: 46
Joined: Sat Aug 07, 2004 7:20 pm

Post by wertigon »

I believe bsnes puts the config file per default in the AppData folder (which is a sensible place to put it), but that it first checks it's own directory for a config file before checking the AppData folder. Thus one can have several versions of bsnes all using different config files on the same computer, but most users won't be fiddling directly with the config file so putting it in AppData makes sense...
franpa
Gecko snack
Posts: 2374
Joined: Sun Aug 21, 2005 11:06 am
Location: Australia, QLD
Contact:

Post by franpa »

that pretty much means, place a empty (or copy your current one) bsnes.cfg file in your bsnes folder. bsnes will still make a .bsnes folder in appdir but it wont make a configuration file there, it will instead use the one in the bsnes folder.
Core i7 920 @ 2.66GHZ | ASUS P6T Motherboard | 8GB DDR3 1600 RAM | Gigabyte Geforce 760 4GB | Windows 10 Pro x64
byuu

Post by byuu »

I'm not resizing the inner window part to 415px. It was 475px before, so I met in the middle and made it 451px (has to be 19 + a multiple of 12*) Any less and it's too cramped on Linux, where fonts are 20% wider. It looks really bad to me that way (the path textbox gets too short, the buttons on it get too short for translations with the " ..." appended, the driver caps get really, really close to each other ...) It also makes the window too tall and narrow. I like the "wide" style look we have now.

I clipped off ~15-20px from the listbox on the left, as well. That may grow if we ever get longer descriptions in there.

Old Linux:
http://byuu.cinnamonpirate.com/images/b ... 81102a.png
http://byuu.cinnamonpirate.com/images/b ... 81102b.png

New Linux:
http://byuu.cinnamonpirate.com/images/b ... 81102c.png
http://byuu.cinnamonpirate.com/images/b ... 81102d.png

New Windows:
http://byuu.cinnamonpirate.com/images/b ... 81102e.png
http://byuu.cinnamonpirate.com/images/b ... 81102f.png

You'll notice I rigged in a custom stylesheet and some padding blocks for the listbox. It's the best I can do. One listbox entry height is now the same as regular text; but it's still 4px taller than on Windows. So I'm not reducing the window height anymore, either. I don't want the user to have to scroll for basic joypad configuration (scrollbar is there for UI, once I have more than 12 options there.) I'll probably try adding some padding to the Windows port for consistency.

(* not that anyone cares, but you need 19 + 12n so that whether you have one control, two, three or four on a single line, the spacing between each will be 5px and all the controls can be exactly the same width with no rounding. Eg (width-5)/2==0 and (w-10)/3==0 and (w-15)/4==0. Yeah, I'm a perfectionist.)

If possible, I'd like to take a break from working on the GUI now. Getting kind of tiring.
Ok after struggling to reach the hidden bsnes config file (Vista doesn't allow you to directly browse to the AppData folder), I finally managed to assign an exit button.
Why don't you just use the GUI to assign the exit button? Go to settings->configuration->input and choose "user interface" from the first drop-down. You can assign the "exit emulator" key here.
Portuguese Brazilian locale for 0.037a. Sorry for the big delay, I was bit busy this week.
No worries, never any rush or obligations here. And thank you very much for the update!
FirebrandX
Trooper
Posts: 376
Joined: Tue Apr 19, 2005 11:08 pm
Location: DFW area, TX USA
Contact:

Post by FirebrandX »

Sorry about that, byuu. I was a bit confused and did not initially find the user interface selection in the gui. I assumed I was suppose to use the config file to do this, but I see now where it is in the gui thanks to your directions.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

I'd still rather have the capabilities for every API in the readme. You honestly think it's better to have to set an API and restart the emulator to know what its capabilities are? And risk people seeing them as the enablements themselves to boot?

There are a couple of minor problems with the Paths window. I think the name and order should change to this:

Game file path:
Save file path:
Patch file path:
Cheat file path:

I don't think the word "Default" makes any sense there. It obviously doesn't mean that every time the path is changed, that's the default, or there would be no point in a default button. Also, I think save files take more precedence than user created formats. Games and saves should be first on the list.
It also makes the window too tall and narrow. I like the "wide" style look we have now.

...I don't want the user to have to scroll for basic joypad configuration (scrollbar is there for UI, once I have more than 12 options there.)
I agree, but I moved the triple radio box thing to the advanced section with the other oddball input settings on my mockup to further shorten both ends for every section. You're pretty much stuck where you are for keeping it.

Guess the video stuff will have to wait.
creaothceann
Seen it all
Posts: 2302
Joined: Mon Jan 03, 2005 5:04 pm
Location: Germany
Contact:

Post by creaothceann »

If space is a problem, then how about several pages?

Image
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
byuu

Post by byuu »

It seems clicking the X on the input assign window assigns to mouse button 0. Not sure how we can get around that, and still let that window map mouse buttons based on clicks. I can't distinguish where the click occurred, and the mouse signal happens before the close signal.
Sorry about that, byuu. I was a bit confused and did not initially find the user interface selection in the gui.
No worries, just pointing it out. Hopefully I didn't come off negative or something.
I'd still rather have the capabilities for every API in the readme. You honestly think it's better to have to set an API and restart the emulator to know what its capabilities are? And risk people seeing them as the enablements themselves to boot?
It's a nice way to explain why the linear / point filtering setting is missing from the menu.

And the reason the options show up dynamically, and you can only see the active driver settings, is because for some of them you have to poll the driver first to see if the action is supported; eg X-Video vsync. You have to see if the XV_SYNC_TO_VBLANK atom exists first.

In technical terms, that requires the capabilities function to be non-static, requiring the driver class to be created before calling it.
There are a couple of minor problems with the Paths window. I think the name and order should change to this:
I ordered them as "ROM, thing that modifies ROM, RAM, completely optional thing" -- but yeah, I never liked the order. I'll swap them.
I don't think the word "Default" makes any sense there.
So what do you suggest? "Clear" doesn't convey what happens, either.
Guess the video stuff will have to wait.
I like sliders. They allow one to easily see changes in real-time.
I do not like the idea of combo boxes to control gamma, brightness, etc.
If space is a problem, then how about several pages?
I'll admit, that does look pretty.

But you sincerely underestimate the difficulty of getting something like that to work both on Windows and Linux :/
F-3582
Rookie
Posts: 40
Joined: Fri Jan 21, 2005 5:17 pm

Post by F-3582 »

RedDwarf wrote:It is supposed to allow any latency you need. It uses a big sound buffer but it can rewrite any part of it -> http://0pointer.de/blog/projects/pulse-glitch-free.html
But I'm not sure if you can specify your needed latency when using the ALSA API...
Mednafen does a pretty good job with the ALSA backend reducing latency to almost zero. Even with Pulseaudio enabled. The author probably did some profound research on ALSA and might be willing to share (Mednafen is GPL code, after all).

Anyway, as far as I remember Lennart is working on another library called libsydney that is supposed to act as another wrapper around Pulseaudio for applications, since he doesn't consider the Pulseaudio API itself final and doesn't recommend programming against it. I hope that he'll release it soon.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

byuu wrote: It's a nice way to explain why the linear / point filtering setting is missing from the menu.
Yeah, which is why I recommended moving them to the readme, where people can easily see exactly that from every API, not just the one selected, and never confuse a checkbox for the enablement. Nevermind the fact that Windows users would never need to know this stuff because the only thing that can't do that is DirectDraw and 1 in a thousand people are going to use it.
I ordered them as "ROM, thing that modifies ROM, RAM, completely optional thing" -- but yeah, I never liked the order. I'll swap them.
Yes, and forget the superfluous hardware acronym stuff. Just call them game file, save file, patch file, and cheat file.

Also, can you put "SFC" before "SMC" on the list of formats in the cart load window? If you're not going to kill off copier extensions, at least try giving the real ones precedence in people's minds.
So what do you suggest? "Clear" doesn't convey what happens, either.
I think you misread what I said. I'm talking about the "Default" in the pathbox names, not the button.
I like sliders. They allow one to easily see changes in real-time.
I do not like the idea of combo boxes to control gamma, brightness, etc.
I'm talking about the scale stuff with the aspect and resolution readouts. I don't really care what happens to the B/C/G sliders, make another raster section for them or something. Sliders for B/C/G are as meaningful as sliders for input resistance and gui opacity. Convenience needs frequency of use to matter.
byuu

Post by byuu »

Yeah, which is why I recommended moving them to the readme
Yeah, which is why I explained that the options are determined dynamically :P

I guess we can list the cap in the readme as "Yes / No / Maybe". And since we all know how many people read the readme files, that should work out great.

But then we have a ton of blank space on that driver screen and nothing to do with it.
Also, can you put "SFC" before "SMC" on the list of formats in the cart load window?
Sure.
I think you misread what I said. I'm talking about the "Default" in the pathbox names, not the button.
Alright, I guess that's fine then.
Anyway, as far as I remember Lennart is working on another library called libsydney that is supposed to act as another wrapper around Pulseaudio for applications, since he doesn't consider the Pulseaudio API itself final and doesn't recommend programming against it. I hope that he'll release it soon.
Speaking of which, can anyone please test the PulseAudio driver I added? :P
Panzer88
Inmate
Posts: 1485
Joined: Thu Jan 11, 2007 4:28 am
Location: Salem, Oregon
Contact:

Post by Panzer88 »

hey I have been LOVING the new super scope feature and it is good as it stands but I've been experimenting with a few things, namely interfacing my extra wiimote with my PC as a mouse. I was wondering if there would be any way to create an option to turn off the super scope cursor in bsnes as an alternative. This would help remember the old light gun feelings if you so desired, I might even dust off my old super scope and mount the wiimote to it. We shall see :D

also on a random note, have any of you guys looked at some of the crazy snes peripherals lately found here ?

I find the exertainment system quite funny, talk about a precursor to wii fit, and also being newly in the military it way my odd luck to be able to play on the MACS so that was cool.
[quote="byuu"]Seriously, what kind of asshole makes an old-school 2D emulator that requires a Core 2 to get full speed? [i]>:([/i] [/quote]
byuu

Post by byuu »

Been improving hiro::gtk this evening.

Before:
Image

After:
Image

Switched themes, which is a little unfair, but whatever. Original theme + after here.

First, notice the combo boxes. Before, it used this button-looking thing. Which was fine, but clicking on it shunted you to the middle of the list, which was kind of stupid. It didn't match Windows that way. And worse yet, a lot of themes tended to push the text down too far, so it was off-center. And in ~20% of my themes, the text got cut off. So making it Windows-style was pretty much a necessity; even though it looks a bit less stylish.

Second, the listbox column headers. In order to get the font size smaller, and consistent with everything else, I had to attach my own label controls into the column headers. But it works.

Third, I relaxed the listbox height crush somewhat. I still remove the vertical-separator, but I left the y-pad on the cell renderer, so that the text is centered. This caused the window to grow a bit, but it looks better that way. The bit of space after "Start" was left because some themes use a slightly larger column header. With that, all ~50 of my themes show all 12 items with no scrolling needed.

Fourth, I added word-wrap to the auto horizontal scroll mode to match Windows. Rewrote all the config file descriptions so that the wrap nicely on the advanced panel.

Fifth, I finally added file filter support to the file load / save dialogs. I must say, that turned out to be a lot easier than I thought it would be.

To do a lot of this, I'm having to override the user's GTK+ theme settings. I know that's frowned upon, but it's the only way to get real consistency between the two platforms. And without consistency, there's no point in a GUI wrapper. So it's really a necessary evil.

But damn, it's really starting to look good :D

FitzRoy's path "Default" + save/UPS swap + "sfc first" changes have been applied as well. If we can think of something to do with all the empty space, I'll consider removing the caps checkboxes. Otherwise, I think it should be a listbox.
I was wondering if there would be any way to create an option to turn off the super scope cursor in bsnes as an alternative.
The problem with that is that it polls the relative position of the mouse. I think you may end up losing the cursor position if you try that.

But, I suppose we could try it in a special WIP that disables the mouse cursor. I'll see about posting one sometime this week for you. Keep bugging me if I forget :P
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

byuu wrote:Yeah, which is why I explained that the options are determined dynamically :P
The capabilities of each API are set in stone. What I'm trying to get across is that if one wanted to know the limitations of a lesser API (as if you don't already if you're using one), right now, you have to set that API, restart the emulator, and look. That's a terribly inefficient way to reference or compare that information.

All you really have to do is cite all the APIs that have limitations and what they are in the readme. No need for a fullblown chart of capable/incapable for every one.
But then we have a ton of blank space on that driver screen and nothing to do with it.
What you have is a uniform area for every section, as small as it can be to accommodate the most demanding one. Unused space in this scenario is perfectly fine, it means you refrained from adding potentially confusing fluff just to aesthetically match the busyness of every section.
Third, I relaxed the listbox height crush somewhat.
You made it taller again? What the heck, it looked better in 37.03. Look at how spaced out your lines are now, it's like a college term paper.

ImageImage
Last edited by FitzRoy on Mon Nov 03, 2008 5:24 am, edited 1 time in total.
byuu

Post by byuu »

The capabilities of each API are set in stone.
For the third time now, no. They are not. Some features are only available with certain video card drivers.

So the only way I can tell if a given driver can support something is to initialize it. And I don't want to do that mid-program, because if the driver initialization crashes the emulator in the middle of someone's game ... they're going to be really pissed off.
Unused space in this scenario is perfectly fine, it means you refrained from adding potentially confusing fluff just to aesthetically match the content of every section.
And yet it still looks like crap with 90% of that window blank.
You made it taller again? What the heck, it looked better in 37.03. Look at how spaced out your lines are now, it's like a college term paper.
.04 (the orange version) looks much better to me. The text is properly centered.

What do others think?
franpa
Gecko snack
Posts: 2374
Joined: Sun Aug 21, 2005 11:06 am
Location: Australia, QLD
Contact:

Post by franpa »

proper vertical centering does indeed make it look better, the orange theme is also nice, maybe include both themes with bsnes?
Core i7 920 @ 2.66GHZ | ASUS P6T Motherboard | 8GB DDR3 1600 RAM | Gigabyte Geforce 760 4GB | Windows 10 Pro x64
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

The text is properly centered.
I'm not talking about that, more space has been added between them. The centering is fine.
byuu wrote:
The capabilities of each API are set in stone.
For the third time now, no. They are not. Some features are only available with certain video card drivers.
Well, how confusing is that? How do I know by looking at it if it's a driver or API deficiency? The whole thing is bork, you should just add a simple note. Because you already disable the options from being chosen, the only thing that could happen is confusion as to why. Gray out the options instead of removing them, and have a note that says:

Note: some options may become unavailable as a result of API or driver deficiencies.
And yet it still looks like crap with 90% of that window blank.
Looks good, newb presented with the simplest, non-limiting switchboard possible.
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

What was it that DirectDraw couldn't do again? Just curious.
franpa
Gecko snack
Posts: 2374
Joined: Sun Aug 21, 2005 11:06 am
Location: Australia, QLD
Contact:

Post by franpa »

FitzRoy wrote:I'm not talking about that, more space has been added between them. The centering is fine.
I like it like that, the improved spacing is a good thing.
Core i7 920 @ 2.66GHZ | ASUS P6T Motherboard | 8GB DDR3 1600 RAM | Gigabyte Geforce 760 4GB | Windows 10 Pro x64
F-3582
Rookie
Posts: 40
Joined: Fri Jan 21, 2005 5:17 pm

Post by F-3582 »

byuu wrote:Speaking of which, can anyone please test the PulseAudio driver I added? :P
I'll try it this afternoon. However, my version ain't glitch-free, yet, and I wasn't in the mood for letting Rawhide trash my laptop just for this ;) Maybe in two weeks when Fedora 10 will be out, I'll be able to truly test it.

And Ubuntu Intrepid doesn't have a glich-free version, either.
byuu

Post by byuu »

New WIP.

If anyone on Linux uses this one, be careful. I'm not entirely sure, but I think my style changes may be affecting the entire theme and not just bsnes. I looked at example code of other popular apps that do the same thing, though.

I'm not sure if it's just my imagination. Audacious' file open dialog seems narrower, but every app still has the menu-style combo-boxes ... so I don't know.

But if it is changing it -- I don't know how to revert it. Not like it's a major change, anyway.

F-3582, cool thanks. You have the WIP URL, right?

henke37, it can't do point filtering when upscaling the image (eg the image always gets blurry.)
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

franpa wrote:
FitzRoy wrote:I'm not talking about that, more space has been added between them. The centering is fine.
I like it like that, the improved spacing is a good thing.
You're both contradicting yourselves by wanting to add 25px of vertical empty space to four sections for absolutely no reason. I'm getting off this treadmill.
Locked