View unanswered posts | View active topics It is currently Tue Nov 19, 2019 2:18 am



This topic is locked, you cannot edit posts or make further replies.  [ 125 posts ]  Go to page 1, 2, 3, 4, 5  Next
bsnes v0.042 released 
Author Message
Post bsnes v0.042 released
byuu.org wrote:
A new release quite a bit faster than I was expecting, but a lot has changed. Most importantly is a new Windows input driver, "RawInput". The downside is that this makes bsnes require at least Windows XP, as Windows 2000 and earlier lack RawInput support. The upside is that input from multiple keyboards and mice can be distinguished from each other — very useful for dual-Justifier support in Lethal Enforcers. Users of previous versions of bsnes will need to manually select the new driver via Settings->Configuration->Advanced->Input driver, and will need to re-map all assigned input keys, including the default user interface hotkeys. Or alternatively, delete the configuration file under %APPDATA%\.bsnes or ~/.bsnes.

Also new is an XInput driver, which avoids the DirectInput driver limitation of being unable to distinguish the two shoulder trigger buttons. This makes bsnes require DirectX 9.0c or later for the necessary drivers. Note that Windows Vista SP0 does not ship with these, so if you haven't installed it yet, you'll need to do so. This driver is part of the "RawInput" driver mentioned above.

This part is important: if you receive an error regarding xinput1_3.dll, you need to download and install the DirectX 9.0c run-time.

For those on Windows 2000, or without DirectX 9.0c, it is still possible to compile and run bsnes with the older DirectInput driver only; but I won't be providing a binary myself for this — at least not at this time.

More bad news for some: hiro, my Win32 / GTK+ API wrapper, has been discontinued and removed from the source tree for this release. Qt 4.5.0+ is now required for the user interface. Very sorry to the Linux distros that do not have packages for QT 4.5 yet. You'll need to continue with v041 for now.

Changelog:
* Fixed a bug that was preventing BS-X carts from loading and mapping properly
* Fixed a bug with mapping joypads after the first
* Improved window centering code to reduce flickering, still a bit volatile on Linux due to Qt/X11 limitations
* Minor cleanup work on S-PPU BG renderer
* Improved mouse axis / button mapping
* Added proper support for analog joypad inputs: both sticks and triggers are now fully supported
* Windows: added RawInput support, allows up to 16 keyboards + mice to be mapped independently
* Windows: added XInput support, allows Xbox 360 controller triggers to operate independently
* Windows and Linux: Screen saver and monitor power saving disable re-added

Many thanks to tukuyomi for generously offering to host this download!


tukuyomi, if bandwidth gets to be too much (I averaged 650MB/day), feel free to delete the files. No need to check with me first or anything like that.

Everyone else, please do thank him for me :)
At the current bandwidth usage rate, I wouldn't have been able to post this new release.


Mon Mar 30, 2009 10:36 am
Hazed

Joined: Tue Jan 16, 2007 5:32 pm
Posts: 54
Post 
Is it possible to somehow, um... disable the menu in fullscreen mode? The alt button is pretty much unusable as it is now. And no, hiding the menu isn't helping.


Mon Mar 30, 2009 2:43 pm
Profile
Veteran
User avatar

Joined: Thu Feb 03, 2005 8:18 pm
Posts: 768
Post 
bsnes works for me now. I'll test input stuff later.

_________________
Official ZSNES Docs | NSRT Guide | Using a Wiimote w/ emulators


Mon Mar 30, 2009 3:00 pm
Profile WWW
Lurker

Joined: Mon Mar 10, 2008 11:36 pm
Posts: 199
Post 
bsnes v0.042 without upx compress released

Page is also updated.

I found no issues at my end.

_________________
Window Vista Home Premium 32-bit / Intel Core 2 Quad Q6600 2.40Ghz / 3.00 GB RAM / Nvidia GeForce 8500 GT


Mon Mar 30, 2009 3:19 pm
Profile
Rookie

Joined: Thu Dec 11, 2008 7:13 am
Posts: 18
Location: ON AIR
Post 
After getting the XINPUT1_3.dll and doing some key reassinging, the Satellaview/8M Memory Pack ROM Loading seems to work like it used to again. I loaded up Same Game with the Tengai Makyo Data, as well as Konae-Chan no DokiDoki Pengin Kazoku with the BIOs to check it. :D


Mon Mar 30, 2009 3:51 pm
Profile YIM WWW
Post 
Oh, speaking of which. Used --best so that it starts up faster per sinamas.

Quote:
Is it possible to somehow, um... disable the menu in fullscreen mode? The alt button is pretty much unusable as it is now. And no, hiding the menu isn't helping.


Well that's annoying. Wonder if it's a Qt or a Windows thing to activate hidden menus on alt press. If the former, I might be able to capture the key press / menu enter event and block it when it's hidden.

Quote:
After getting the XINPUT1_3.dll and doing some key reassinging


Are you able to use the RawInput driver just by stubbing in the xinput1_3.dll file alone? If so, I'll just upload that rather than the ~80MB DX9 run-time :D


Mon Mar 30, 2009 4:11 pm
Gecko snack

Joined: Sun Aug 21, 2005 11:06 am
Posts: 2372
Location: Australia, QLD
Post 
just upload the Direct x online updater o_o, it is only a few hundred kilobytes.

_________________
Core i7 920 @ 2.66GHZ | ASUS P6T Motherboard | 8GB DDR3 1600 RAM | Gigabyte Geforce 760 4GB | Windows 10 Pro x64


Mon Mar 30, 2009 5:02 pm
Profile WWW
Veteran

Joined: Wed Aug 04, 2004 5:43 pm
Posts: 861
Location: Sloop
Post 
Do directx runtime updates get included with service packs? I didn't have to download anything with Vista, but on my XP SP3 work computer, I did.


Last edited by FitzRoy on Mon Mar 30, 2009 5:06 pm, edited 1 time in total.



Mon Mar 30, 2009 5:05 pm
Profile
Zealot

Joined: Tue Nov 27, 2007 7:03 am
Posts: 1325
Post 
They don't, sadly.


Mon Mar 30, 2009 5:06 pm
Profile
Veteran

Joined: Wed Aug 04, 2004 5:43 pm
Posts: 861
Location: Sloop
Post 
I.S.T. wrote:
They don't, sadly.


What is their reason for that? If games or programs need to use them, why would they want to make people hunt down a package?


Mon Mar 30, 2009 5:10 pm
Profile
Post 
Hm, I forgot to mention the multi-assign option added in the changelog.

Quote:
I didn't have to download anything with Vista, but on my XP SP3 work computer, I did.


Vista SP0 needed it here, as did XP MCE 2005 edition.

Still, I think it's worth it for proper Xbox 360 controller support. Requiring DX is no different from any modern PC game.

And if it's a problem to anyone, I can make a bsnes_v042_lite.exe that has the old DirectInput driver only and runs on Win2k. Like hell if I'm profiling it though :P

(EDIT: moving window centering down below.)


Last edited by byuu on Mon Mar 30, 2009 5:27 pm, edited 3 times in total.



Mon Mar 30, 2009 5:11 pm
Veteran

Joined: Wed Aug 04, 2004 5:43 pm
Posts: 861
Location: Sloop
Post 
Quote:
Vista SP0 needed it here, as did XP MCE 2005 edition.


Okay, so they are at least included in Vista service packs. Maybe it's a space thing, or maybe XP SP3 is older than I think.


Mon Mar 30, 2009 5:17 pm
Profile
Zealot

Joined: Tue Nov 27, 2007 7:03 am
Posts: 1325
Post 
FitzRoy wrote:
I.S.T. wrote:
They don't, sadly.


What is their reason for that? If games or programs need to use them, why would they want to make people hunt down a package?


Good ol' stupidity. Infects everything even remotely big in scope.

XP SP3 came out after Vista SP1, BTW.


Mon Mar 30, 2009 5:46 pm
Profile
Post 
And if anyone can improve this, please do :D

Code:
//show specified window in the center of the screen.
//"... because QWidget::showCentered() would be too easy."
void Utility::showCentered(QWidget *window) {
  QRect deskRect = QApplication::desktop()->availableGeometry(window);

  //place window offscreen, so that it can be shown to get proper frameSize()
  //only works on Windows, but only needed there
  //moving while minimized will put window at 0,0; so avoid that
  if(window->isMinimized() == false) {
    window->move(
      std::numeric_limits<signed>::max(),
      std::numeric_limits<signed>::max()
    );
  }
  window->showNormal();  //instead of show() in case it is minimized ...

  //force-resize window to be as small as minimumSize() will allow, and then center it
  //this is because if any controls were added / removed,
  //window size will remain the same as last show call otherwise
  window->resize(0, 0);
  window->move(
    deskRect.center().x() - (window->frameSize().width()  / 2),
    deskRect.center().y() - (window->frameSize().height() / 2)
  );

  #ifndef _WIN32
  //Xlib frame size (excluding inside) is QSize(0, 0) at first, wait for it to be valid
  for(unsigned counter = 0; counter < 4096; counter++) {
    if(window->frameSize() != window->size()) {
      //fix window centering, will cause slight flicker, but no choice ...
      window->move(
        deskRect.center().x() - (window->frameSize().width()  / 2),
        deskRect.center().y() - (window->frameSize().height() / 2)
      );
      break;
    }
    application.processEvents();
  }
  #endif

  //ensure window has focus
  //without processing events, Xlib sometimes throws XBadWindow errors
  //it still does with this, but very seldom
  application.processEvents();
  window->activateWindow();
  window->raise();
}


That's with about 4+ hours put into testing. Qt just absolutely hates centering windows.

I'm convinced QWidget::updateGeometry() does absolutely nothing.

Believe it or not, the counter reaches up to ~400 or so on my Xfce install. Adding usleep(n) where n is between 200 and 20000 doesn't lower the number much, and makes it take even longer.

If you're wondering why I don't subclass QWidget, it's because I use this function on a QMainWindow as well.

---

Code:
    if(config.video.isFullscreen == false) {
      //get effective desktop work area region (ignore Windows taskbar, OS X doc, etc.)
      QRect deskRect = QApplication::desktop()->availableGeometry(winMain->window);

      if(winMain->window->isVisible() == false) {
        winMain->window->move(std::numeric_limits<signed>::max(), std::numeric_limits<signed>::max());
        winMain->window->showNormal();
        application.processEvents();
      }


That gets rid of the infinitesimal resize flash on Windows the first time you start the binary.


Mon Mar 30, 2009 5:49 pm
♥ Love Freak FlonneZilla ♥
User avatar

Joined: Sun Apr 01, 2007 12:59 am
Posts: 111
Location: USA
Post 
byuu wrote:
And if anyone can improve this, please do :D

Most of that is over my head (I'm terrible with graphical stuff), but I think you can change
Code:
      window->move(
        deskRect.center().x() - (window->frameSize().width()  / 2),
        deskRect.center().y() - (window->frameSize().height() / 2)
      );
to
Code:
window->move(deskRect.center() - window->rect().center());

This information comes from here.

I'm afraid I don't know how to test it, though. :oops:


Mon Mar 30, 2009 8:11 pm
Profile WWW
Post 
QWidget::rect() does not take frame geometry into account, so it would throw off vertical centering where the top and bottom frame borders are different heights. frameGeometry() itself includes x/y displacement information, so you'd have to use:
deskRect.center().x() - (window->frameGeometry().right() - window->frameGeometry().left() + 1), which really isn't any more terse.

I would be okay with completely ignoring frame geometry and being off-center by just a tad, but scale max in windowed mode (uses all available screen space so it has to touch the top and bottom work areas) has to be perfect or it looks terrible.


Mon Mar 30, 2009 9:06 pm
♥ Love Freak FlonneZilla ♥
User avatar

Joined: Sun Apr 01, 2007 12:59 am
Posts: 111
Location: USA
Post 
byuu wrote:
deskRect.center().x() - (window->frameGeometry().right() - window->frameGeometry().left() + 1)
Dear God that is terrible. I guess you should just leave those lines alone, then. :shock:


Mon Mar 30, 2009 9:13 pm
Profile WWW
Regular

Joined: Sat Mar 04, 2006 3:17 pm
Posts: 307
Post 
FitzRoy wrote:
I.S.T. wrote:
They don't, sadly.


What is their reason for that? If games or programs need to use them, why would they want to make people hunt down a package?


The extra/new dll's included with each update of directx are considered "runtime dll's"
These files are not added to the windows base and are distributed as needed only by the software maker that decides to use them.

Windows by default, also does not include the visual C redist dll's

Personally i agree with you that MS should include these updates on windows update and in servicepacks


Mon Mar 30, 2009 9:34 pm
Profile
Post 
Right now, if you plug in a HID device like the Xbox 360 controller, Win 7 automatically connects to Windows Update and downloads the necessary drivers. Instant support with no hassle.

If Microsoft wanted to truly innovate, they should detect linker errors, search Windows Update for the required DLLs, install them and then restart the application transparently. This would eliminate all xaudio_*, xinput_* and d3dx_* problems both developers and end-users contend with.


Mon Mar 30, 2009 10:07 pm
Trooper
User avatar

Joined: Tue Apr 19, 2005 11:08 pm
Posts: 376
Location: DFW area, TX USA
Post 
I'm unable to hide the menu in fullscreen, nor is f11 working for switching back and forth between modes. It seems like a bunch of stuff we all got used to using is now not working. What happened?

Edit: It seems to come from the cfg file as the new version retroactively affects previous versions of bsnes. I found escape and f11 were both deactivated for version 41 after using version 42. I had to delete the cfg to re-enable functions to version 41.

Edit 2: On a hunch, I deleted the cfg again and re-ran version 42. It now works. Byuu, I think you should turn bsnes into an installing exe that erases the previous cfg from older versions. This is what is causing problems.

_________________
NES NTSC palette file:

http://www.firebrandx.com/downloads/fbx2pal.zip


Tue Mar 31, 2009 12:19 am
Profile WWW
Post 
I mentioned this in the first paragraph of my release notes :P

Quote:
Users of previous versions of bsnes will need to manually select the new driver via Settings->Configuration->Advanced->Input driver, and will need to re-map all assigned input keys, including the default user interface hotkeys. Or alternatively, delete the configuration file under %APPDATA%\.bsnes or ~/.bsnes.


It was needed to support multiple keyboards and mice. Didn't feel like adding a version check thing to the config file just yet, so I default the old key mapping names to "none". Maybe next time.


Tue Mar 31, 2009 1:00 am
Trooper
User avatar

Joined: Tue Apr 19, 2005 11:08 pm
Posts: 376
Location: DFW area, TX USA
Post 
Ha, you know hardly anyone actually reads notes :P

Well at least I wasn't the only one that had problems. :oops:

_________________
NES NTSC palette file:

http://www.firebrandx.com/downloads/fbx2pal.zip


Tue Mar 31, 2009 1:21 am
Profile WWW
Hazed

Joined: Tue Dec 07, 2004 10:24 am
Posts: 68
Post 
byuu, could you consider linking to RPM Fusion as a place where folks can get pre-compiled packages for Fedora?


Tue Mar 31, 2009 11:52 am
Profile
Post 
Per: http://board.zsnes.com/phpBB2/viewtopic ... 403#191403
Seems we overlooked a minor path problem. Only affects UPS patches on the first load with no manual UPS path defined. So we shouldn't need a v042a release for this.

Quote:
byuu, could you consider linking to RPM Fusion as a place where folks can get pre-compiled packages for Fedora?


Certainly, but how would they go about finding it from the homepage? :P
http://rpmfusion.org/RPM%20Fusion?actio ... rch=Titles


Tue Mar 31, 2009 6:31 pm
Hazed

Joined: Tue Dec 07, 2004 10:24 am
Posts: 68
Post 
You are not supposed to look for specific package, you are supposed to add the repository to your configs and install the package with your package manager of choice ;)


Tue Mar 31, 2009 7:08 pm
Profile
Display posts from previous:  Sort by  
This topic is locked, you cannot edit posts or make further replies.   [ 125 posts ]  Go to page 1, 2, 3, 4, 5  Next

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software.