bsnes v0.038 released

Archived bsnes development news, feature requests and bug reports. Forum is now located at http://board.byuu.org/
Locked
sweener2001
Inmate
Posts: 1751
Joined: Mon Dec 06, 2004 7:47 am
Location: WA

Post by sweener2001 »

what was ever stopping it from being distributed via torrent?
[img]http://i26.photobucket.com/albums/c128/sweener2001/StewieSIGPIC.png[/img]
byuu

Post by byuu »

I left untranslated strings because of my lack of programming experience. If someone has the knowledge, feel free to modify my locale file.
No problem, I don't expect anyone to use those options anyway. Thank you and everyone else very much for the locales :D

I'm sure it's a pain given how fast I post new releases all the time, heh.
what was ever stopping it from being distributed via torrent?
I meant the executable is distributed like uTorrent. Eg on their download page, it's a direct link to an executable. You run it and that's the program. That's what I'm doing now, rather than putting the program inside a ZIP archive.
diminish

Post by diminish »

polish locale
Sorry for using polish file hosting service (to download press POBIERZ PLIK), but rapidshare says file can be downloaded only 10 times (free upload, I don't have any kind of premium account). Gratz and thanks for new version.
DataPath
Lurker
Posts: 128
Joined: Wed Jul 28, 2004 1:35 am
Contact:

Post by DataPath »

sinamas wrote:If possible, use a single counter and a single "next necessary update count" variable to batch updates. A hierarchical event system may be even better.
When I had to simulate a circuit we were designing in college, I tried to do it with a hierarchal event system. I found it harder to debug, but that may have had more to do with my level of experience and limited time.

What you describe with a single counter and a single "next necessary update count" variable sounds a lot like a delta queue, which could actually be pretty cool.

If you kept a single central counter/clock and event queue, and then a couple accessor methods for adding events based on the clock speed of the source, it should be pretty readable. And most likely very compatible with byuu's current architecture.
ZH/Franky

Post by ZH/Franky »

Ugh, those games have horrible Huffman tables.
If you have the time, could you explain to me what a "huffman table" is?
creaothceann
Seen it all
Posts: 2302
Joined: Mon Jan 03, 2005 5:04 pm
Location: Germany
Contact:

Post by creaothceann »

diminish wrote:Sorry for using polish file hosting service (to download press POBIERZ PLIK), but rapidshare says file can be downloaded only 10 times (free upload, I don't have any kind of premium account).
Rapidshare has a free account system - go to "Free Zone" | "Collector's Zone Login". Once logged in you can also manage the files you have uploaded.

@byuu:
Maybe bsnes is small enough (455 KB when compressed with WinRAR) to not invoke a download delay counter...
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
Nach
ZSNES Developer
ZSNES Developer
Posts: 3904
Joined: Tue Jul 27, 2004 10:54 pm
Location: Solar powered park bench
Contact:

Post by Nach »

Code: Select all

#define forever for(;;)

...

forever
{
  do_stuff();
}
Don't limit yourself to the language you're using.
May 9 2007 - NSRT 3.4, now with lots of hashing and even more accurate information! Go download it.
_____________
Insane Coding
h4tred

Post by h4tred »

If you have the time, could you explain to me what a "huffman table" is?
http://en.wikipedia.org/wiki/Huffman_coding

That article should explain the concept of Huffman encoding nicely, as well as Huffman trees.
h4tred

Post by h4tred »

Yeah, we really don't have a sweet spot between portability, compatibility and speed right now. 9x uses an older opcode-based model, ZSNES uses x86 assembler and SNESGT is closed source.

I'd really like to team up with some other people (maybe AamirM? ;) and work on something like that once I finish the cycle renderer. Would be fun working in a group via SVN or something.
That certainly ain't a bad idea. hiro, nall and ruby are certainly nice libraries, and it would be very nice to see something like SNESGT, but with it being open source for the Linux/MacOSX people. To be quite honest, if I decide (and if I am motivated), to get back into emu stuff, I might help you guys out :).

PS: Sorry for not being my chirpy, and pleasant self lately :(. I didn't mean to turn into such a big asshole. Looking back, I feel absolutely terrible how I acted, and I guess I will take Aamir's advice and give peace a chance.
byuu

Post by byuu »

When I had to simulate a circuit we were designing in college, I tried to do it with a hierarchal event system.

What you describe with a single counter and a single "next necessary update count" variable sounds a lot like a delta queue, which could actually be pretty cool.

If you kept a single central counter/clock and event queue, and then a couple accessor methods for adding events based on the clock speed of the source, it should be pretty readable.
I have no idea what you're talking about, but delta queue sounds badass. Care to elaborate, or are you going to make me use a search engine? ;_;
If you have the time, could you explain to me what a "huffman table" is?
How the script in the game is encoded. See h4tred's link.
Maybe bsnes is small enough (455 KB when compressed with WinRAR) to not invoke a download delay counter...
Yuck. I'd rather host it locally than send people to an ad farm. I'll buy the bandwidth if I need it.
To be quite honest, if I decide (and if I am motivated), to get back into emu stuff, I might help you guys out
Sounds awesome to me. The more, the merrier. Plus you can't complain about if you worked on it :P

Man, I wish I wasn't so busy with all the bsnes stuff and the upcoming FEoEZ translation ... it'd be so much fun to start on this right now, heh.
That certainly ain't a bad idea. hiro, nall and ruby are certainly nice libraries
I'm a big fan of ruby and nall, but hiro's extremely limited. Qt would've been so much better, if only it were licensed under the LGPL.
PS: Sorry for not being my chirpy, and pleasant self lately
I'm used to it </rimshot> :P
Nah, you had me riled up and acting the same way, sadly. Lesson learned.

Seriously, I completely respect your opinion to disagree. Just please don't bring it up on these two specific boards. It forces me to respond, and that just creates all kinds of unnecessary drama that I want to avoid.
Jipcy
Veteran
Posts: 768
Joined: Thu Feb 03, 2005 8:18 pm
Contact:

Post by Jipcy »

byuu wrote:Yuck. I'd rather host it locally than send people to an ad farm. I'll buy the bandwidth if I need it.
http://aws.amazon.com/s3/
http://jungledisk.com/

I've been using Jungle Disk (which uses Amazon S3) for backup and shared drive, and I like it pretty well. Reliable file serving, only pay for what you use, and no limit.
[url=http://zsnes-docs.sf.net]Official ZSNES Docs[/url] | [url=http://zsnes-docs.sf.net/nsrt]NSRT Guide[/url] | [url=http://endoftransmission.net/phpBB3/viewtopic.php?t=394]Using a Wiimote w/ emulators[/url]
creaothceann
Seen it all
Posts: 2302
Joined: Mon Jan 03, 2005 5:04 pm
Location: Germany
Contact:

Post by creaothceann »

I didn't notice any advertising on rapidshare, just counters. Meh.
vSNES | Delphi 10 BPLs
bsnes launcher with recent files list
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

byuu wrote:I have no idea what you're talking about, but delta queue sounds badass. Care to elaborate, or are you going to make me use a search engine? ;_;
I didn't either, but it was actually very easy to find: http://compilers.cs.ucla.edu/avrora/api ... Queue.html

Completely off-topic, but maybe you guys can help me with this. I'm trying to do something like the following:
(x-a)³ = (x³ - 3ax² + 3a²x - a³)
However, the moment I do this the compiler completely explodes.
Last edited by Verdauga Greeneyes on Wed Dec 17, 2008 2:43 am, edited 2 times in total.
byuu

Post by byuu »

I didn't either, but it was actually very easy to find:
Oh wow, yeah. That's actually exactly what my CPU core needs.

I currently schedule IRQ and NMI hold delays, but I will also need to schedule ALU events, joypad polling steps, etc in the future.

If I'm able to compact the IRQ and NMI to a single test, then it'll actually be faster, despite testing even more things.

If it weren't such an amazing PITA to calculate how many cycles in the future were needed to trigger a given IRQ, and for all the crazy edge cases and race conditions, that would be a great way to implement range testing, too. I've tried doing that in the past, sans the delta queue part.

Way cool, thanks.
Completely off-topic, but maybe you guys can help me with this. I'm trying to do something like the following:
(x-a)³ = (x³ - 3ax² + 3a²x - 3a³)
o.O

Never seen an algebraic transformation like that before -- almost looks like the crap the FOIL method spits out.

... you want help implementing the math algorithm ... or?
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

byuu wrote:
(x-a)³ = (x³ - 3ax² + 3a²x - a³)
o.O

Never seen an algebraic transformation like that before -- almost looks like the crap the FOIL method spits out.
Really? (x-a)³ = (x-a)*(x² - 2ax + a²) = (x³ - 3ax² + 3a²x - a³)
I need it so I can split the a from the x. Anyway I've implemented the maths, but I'm still working on my problem.

Good grief. Okay, whatever the problem is, it's caused by Direct3D9's CreateDevice. It returns successfully so I don't know what's going on, but in a greatly reduced testcase I was able to observe that (x-a)³ and (x³ - 3ax² + 3a²x - 3a³) are equivalent (as they should be) when I leave the call out.

Here is the call in question:

Code: Select all

memset(&presentation, 0, sizeof(presentation));
presentation.SwapEffect           = D3DSWAPEFFECT_FLIP;
presentation.hDeviceWindow        = (HWND)param;
presentation.Windowed             = true;
presentation.Flags                = D3DPRESENTFLAG_VIDEO;
presentation.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (HWND)param, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &presentation, &device);
I don't think I'm doing anything strange there - param is the client rect hwnd and rendering seems to work fine.

I've fully reinstalled MinGW and gotten the latest DirectX SDK - no luck.
Last edited by Verdauga Greeneyes on Wed Dec 17, 2008 2:42 am, edited 1 time in total.
Jonas Quinn
ZSNES Developer
ZSNES Developer
Posts: 115
Joined: Thu Jul 29, 2004 9:51 pm
Location: Germany

Post by Jonas Quinn »

Verdauga Greeneyes wrote:
byuu wrote:
(x-a)³ = (x³ - 3ax² + 3a²x - 3a³)
o.O

Never seen an algebraic transformation like that before -- almost looks like the crap the FOIL method spits out.
Really? (x-a)³ = (x-a)*(x² - 2ax + a²) = (x³ - 3ax² + 3a²x - 3a³)
I need it so I can split the a from the x. Anyway I've implemented the maths, but I'm still working on my problem.

Good grief. Okay, whatever the problem is, it's caused by Direct3D9's CreateDevice. It returns successfully so I don't know what's going on, but in a greatly reduced testcase I was able to observe that (x-a)³ and (x³ - 3ax² + 3a²x - 3a³) are equivalent (as they should be) when I leave the call out.

Here is the call in question:

Code: Select all

d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (HWND)param, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &presentation, &device);
I don't think I'm doing anything strange there - param is the client rect hwnd and rendering seems to work fine.

I've fully reinstalled MinGW and gotten the latest DirectX SDK - no luck.
It might help to replace the call with that:

Code: Select all

d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (HWND)param, D3DCREATE_FPU_PRESERVE | D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &presentation, &device);
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

Jonas Quinn wrote:It might help to replace the call with that:

Code: Select all

d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (HWND)param, D3DCREATE_FPU_PRESERVE | D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &presentation, &device);
Wow, you're absolutely right. Now that's something I never would have found out on my own. For the record, without that flag it also fails on MSVC. Thanks a million!
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

I have a wild guess why the performance hit exists. Cpu instruction caches. It might possibly have been short enough to fit in one transfer or something like that. But yeah, I am just guessing here.
franpa
Gecko snack
Posts: 2374
Joined: Sun Aug 21, 2005 11:06 am
Location: Australia, QLD
Contact:

Post by franpa »

Would the memory controller being integrated into the CPU chip affect it at all? the new i7 Intel CPU's and most of AMD's do that.
Core i7 920 @ 2.66GHZ | ASUS P6T Motherboard | 8GB DDR3 1600 RAM | Gigabyte Geforce 760 4GB | Windows 10 Pro x64
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

By the way, for those of you who might be interested in the details of my problem, Direct3D was forcing my calculations into single precision and I was doing a summation that really needed double. I could have mitigated the effects of this with Kahan Summation, had I known of its existence at the time - but of course finding an actual solution is even better.

Edit: actually I just tried it, and even using Kahan Summation it completely fails. So yeah, I don't know what's up with this flag or the behaviour without it, but I guess I'm using it.
grinvader
ZSNES Shake Shake Prinny
Posts: 5632
Joined: Wed Jul 28, 2004 4:15 pm
Location: PAL50, dood !

Post by grinvader »

Jonas has a gift for that kind of stuff


he is a great voodoo expert
皆黙って俺について来い!!

Code: Select all

<jmr> bsnes has the most accurate wiki page but it takes forever to load (or something)
Pantheon: Gideon Zhi | CaitSith2 | Nach | kode54
FirebrandX
Trooper
Posts: 376
Joined: Tue Apr 19, 2005 11:08 pm
Location: DFW area, TX USA
Contact:

Post by FirebrandX »

byuu, if you'd like an extra mirror to host the bsnes file, I can host it on my site. I pay for my site so there are no ads, and I have plenty of bandwidth per month.

Anyway, just want to say the new version works great on my Q6600 system. I did some testing and the speed hit was about 8%, though the lowest FPS was still well above 90, so I'm well in the clear of the 60 minimum I like to have.
byuu

Post by byuu »

byuu, if you'd like an extra mirror to host the bsnes file, I can host it on my site. I pay for my site so there are no ads, and I have plenty of bandwidth per month.
I should be okay, my site only draws ~10% of cinnamonpirate's traffic. The main limitation of my site is space, not bandwidth.

tukuyomi has a great archive that goes back pretty far. I used to have older ones all the way back to v002, but like an idiot I formatted the drive they were on by mistake.
I did some testing and the speed hit was about 8%, though the lowest FPS was still well above 90, so I'm well in the clear of the 60 minimum I like to have.
Darn, only 90. At least v036 or so's S-DSP state machine approach boosted it 10% before this hit; so we're back to the same performance as then. And hopefully the delta queue method will pan out for some extra speed.
deltaphc
New Member
Posts: 9
Joined: Mon Feb 25, 2008 5:21 am

Post by deltaphc »

byuu wrote:I'm a big fan of ruby and nall, but hiro's extremely limited. Qt would've been so much better, if only it were licensed under the LGPL.
One thing that a lot of people overlook about Qt's open-source license is that it has an exception:
http://doc.trolltech.com/4.4/license-gp ... tions.html

So, if I'm reading it correctly, Qt-based open-source software can use a non-GPL license just as long as it's one of the licenses listed there. So you probably can't use a custom license, but at the very least it doesn't have to be GPL.
funkyass
"God"
Posts: 1128
Joined: Tue Jul 27, 2004 11:24 pm

Post by funkyass »

should it not be

(x-a)³ = (x³ - 3ax² + 3a²x - a³)
Does [Kevin] Smith masturbate with steel wool too?

- Yes, but don’t change the subject.
Locked