bsnes v0.038 released

Archived bsnes development news, feature requests and bug reports. Forum is now located at http://board.byuu.org/
Locked
Thristian
Hazed
Posts: 76
Joined: Tue Feb 07, 2006 11:02 am

Post by Thristian »

Jipcy wrote:
FitzRoy wrote:What do you suggest we come up with to identify these files? Is there an existing hash method with which you wouldn't be able to do what you just did?
Wait until SHA-3 comes out?
Why do we have to pick one hashing algorithm for all time? Why can't we just record all the hashes we happen to know for any given ROM, and add more hashes as they're invented?
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

How about something simpler? Let's use the fingerprint (as in real human finger) to verify that the dumper is who he claims. Or a photo of the dumper holding the cart (bag with question mark on head optional)?
In the end, what it all boils down to is trust.

It is the same deal as with paintings, you can prove when the painting was painted, but not by who. Maybe some old painter promoted some pictures made by his students? Maybe they defaced the picture and it ended up looking better and no one felt like saying that it happened?

Maybe all history for a country was made up by the last guy who took leadership?

We can only prove that a copy of the information is indeed a copy of the same information, we can not prove the accuracy of the information.

Sure, you could redump the game yourself, if you can find the cart. But that only proves that the cart you dumped is the same as the publicly known copy of the game. Maybe someone forged the cart?

Add enough paranoia and you can not be sure that yesterday was what you think it is. It is a matter about trust.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

Thristian wrote:Why do we have to pick one hashing algorithm for all time? Why can't we just record all the hashes we happen to know for any given ROM, and add more hashes as they're invented?
First, nothing is permanent. If SHA-2 eventually became really easy to spoof, we could change to something else. Second, we have to be practical, there's no chance in hell I'm maintaining 5000 entry database files with 10 different checksum columns per entry.
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

I know how we can archive the games for the future: let's stop with all these hashes that can be collided, just do it like those book libraries does: they actually keep the real books around.
Thanks to copyright laws, I should be able to legally share some snes games just before I die.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

I know how we can archive the games for the future: let's stop with all these hashes that can be collided, just do it like those book libraries does: they actually keep the real books around.
Thanks to copyright laws, I should be able to legally share some snes games just before I die.
A fingerprint system with wide distribution is far more robust than a system that forsakes it in favor of one storage house and a guard. Suppose that one site gets shut down. Suppose its maintainer leaves or dies. Suppose the security for the storage house is compromised and someone vandalizes a file very subtly. Suppose someone from within gets pissed about something and decides to exact vengeance. How will we know it was even done? How will we know which one if we did? If you don't fingerprint the files, if you just treat their surface existence in some idealist door and key storage system as evidence of their integrity, you've simplified the trust model to a point where vandalism would be far simpler and have a much smaller chance of being noticed.

Once again, the best system weighs the motivation of performing a forced collision against the difficulty of doing it. It doesn't matter that there is no perfect, uncrackable hash method. I can't believe that someone would regard a hash that hasn't been cracked under any application as insufficient against a low-to-none motivator that will always be a low-to-none motivator. This argument is surreal. Show me these magical creatures that get off on stringing together supercomputers to pollute distribution channels with fake versions of free, ancient games.
Last edited by FitzRoy on Thu Jan 08, 2009 5:23 pm, edited 1 time in total.
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

Being able to verify that all dumps originate from physical copies is a nice bit of extra security, but there's more than security to consider here. What if part of the database gets corrupted and you don't realize it? (even if it's only a bit here and there) Having hashes allows you to quickly verify the original data is still intact, even after the physical copies cease to work.

For that matter, could we store the roms in a format that allows some form of error correction?
kick
Trooper
Posts: 550
Joined: Wed Mar 01, 2006 8:47 pm

Post by kick »

Found a nasty bugger in the latest version of bsnes:

Ongaku Tsukuru Kanaderu (J)

Load the cartridge and start the game.Navigate to the menubar,click on "Jukebox" and then select "Load".Select a song to load and press the play [>] button.

Some of the things you'll experience: garbled graphics,totally FUBAR'd song names,no sound on playback and a nice freeze/lockup on your attempt to exit from jukebox mode.

Exclusive screenshots of the cockroach in action:

bsnes 0.17 a.k.a. 'speedy gonzales' is in fact the more accurate one:
Image

bsnes 0.38 a.k.a. 'slowpoke rodriguez' fails the acid test:
Image
[i]Have a nice kick in da nutz[/i] @~@* c//
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

I am sorry, but the acid test name is not a generic term, it is a set of three quite specific test sets.
Gil_Hamilton
Buzzkill Gil
Posts: 4294
Joined: Wed Jan 12, 2005 7:14 pm

Post by Gil_Hamilton »

henke37 wrote:I am sorry, but the acid test name is not a generic term, it is a set of three quite specific test sets.
Actually, you're wrong.

http://en.wikipedia.org/wiki/Acid_test_(gold)

That's THE acid test.

Acid test IS a generic term for anything that separates the good shit from the shitty shit, and originated from that.

The Acid browser tests are named after the old miner test, or more likely the generic term.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

kick wrote:Found a nasty bugger in the latest version of bsnes:

Ongaku Tsukuru Kanaderu (J)
SHVC-ZMCJ-JPN catalog number, that's a slotted cartridge. Maybe the wrong mapping is being assigned to it. .17 was on the old database system I think.
byuu

Post by byuu »

Probably a mapping issue. Wish we could've spotted it less than 21 versions ago, would've been easier to find the regression. Ah well, at least we found it now.

New WIP completes the multi-part cheat codes. I changed the file format, and it may change again, so backup your old .cht files first.

Went with the unified textbox thing to allow infinite number of codes per cheat item, though the textbox itself will stop parsing after 1,024 bytes at the moment. Really ... you're doing something wrong if you need more than ~120 parts for one cheat code entry.

It will parse and treat spaces, +&|,;{tab} and {linefeed} as separators for codes. You will lose the space formatting after you okay the code and go back to edit it again.

Also one glitch if you toggle cheat status, it won't clip the extra cheat parts as it should. Will fix it later, ran out of time. Don't try multi-line descriptions or commas for separators just yet. Need to iron proof that so it won't corrupt the file format.

Any testing of this new feature would be greatly appreciated.

Design questions:

- should we change the order of desc/code/enablestate on either the main cheat window or the cheat sub-editing window? If so, why? Be verbose, use examples.
- should we change the .cht file format? Again, please clarify what the advantage would be.
- should we change the text labels for the sub cheat editor to something more clear?
- should the default separator be changed from " + " to something else? Maybe linefeed?
Jonas Quinn
ZSNES Developer
ZSNES Developer
Posts: 115
Joined: Thu Jul 29, 2004 9:51 pm
Location: Germany

Post by Jonas Quinn »

byuu wrote:Probably a mapping issue. Wish we could've spotted it less than 21 versions ago, would've been easier to find the regression. Ah well, at least we found it now.
It broke in bsnes 0.37.
byuu

Post by byuu »

Jonas Quinn wrote:
byuu wrote:Probably a mapping issue. Wish we could've spotted it less than 21 versions ago, would've been easier to find the regression. Ah well, at least we found it now.
It broke in bsnes 0.37.
Thank you very much.

The difference is v036 and below are loading the game using load_cart_normal() (with BSCHiROM layout), whereas v037 and above have Nach's BS-X slot detection and are loading it with load_cart_bsc() (also with BSCHiROM layout).

So yes, essentially a memory mapping problem somewhere.
Verdauga Greeneyes
Regular
Posts: 347
Joined: Tue Mar 07, 2006 10:32 am
Location: The Netherlands

Post by Verdauga Greeneyes »

byuu wrote:New WIP stuff
1.) The font seems big enough to allow 4 lines of cheats at a time, but maybe it would look better if the edit box for cheats was say, 50% taller? It just feels strange that the description box is as big as the box for the actual cheats.
2.) Could you display a vertical scrollbar in the cheat code edit box when necessary?
3.) The description for the second box could simply be 'Cheat Codes:' to be in line with the first. I think it's clear enough.
4.) Descriptions in the main cheat window concatenate multiple lines with no regard for linefeeds. Perhaps '[first line] ...' would be better?
5.) Descriptions with linefeeds aren't currently loaded properly (only the first line is loaded). Perhaps store them with '\n' instead for readability?

As for separators, I guess I prefer commas or semicolons. Considering how the .cht files are ordered, commas would still work. If you surround the description in quotes, they could work there as well.

Other than that, I think it all works properly, but I haven't tested any real codes (just random numbers)
byuu

Post by byuu »

My mistake, supposed to access BS-X slotted carts from the menu to get load_cart_bsc() for v036 and earlier. Meh.

Okay, the problem was with the changed Cartridge::read_header() function. It was bailing out on BS-X slotted carts without parsing the save RAM size. Thus, it wasn't mapping any SRAM for those games. A quick fix of making it check SRAM there fixes the game, but I'll need some time to do it right. Consider it fixed now, though.
2.) Could you display a vertical scrollbar in the cheat code edit box when necessary?
It does just that on Linux. ES_AUTOVSCROLL apparently means "never actually show the scrollbar" to Windows. Sigh.
WS_VSCROLL makes it always visible, and no flag makes it impossible to exceed the window size. No idea how apps like Firefox get the dynamic scrollbar on Windows. Guess we'll have to make it always visible, unless someone knows the right flags to pass to an "EDIT" class control?
Linefeed description stuff
Right, I don't parse the stuff safely yet for the config file. Ran out of time again.
Other than that, I think it all works properly, but I haven't tested any real codes (just random numbers)
Appreciate it.

I was able to set up a 60-part code and it detected the 60th entry right, so I think it's okay. Just need to do a bunch of silly things like adding dozens of codes, editing and deleting them randomly, try and forcefully desync the various UI windows, etc.

EDIT: this works for VSCROLL, at least. What a pain in the ass.

Code: Select all

  if(msg == WM_COMMAND) {
    if(LOWORD(wparam) == 100) {
      if(HIWORD(wparam) == EN_CHANGE) {
        //we can cache this part on font change + resize + creation, at least.
        RECT rc;
        SendMessage(edit, EM_GETRECT, 0, (LPARAM)&rc);
        unsigned height = rc.bottom - rc.top;

        HDC hdc = GetDC(edit);
        DrawText(hdc, "Try", -1, &rc, DT_CALCRECT);
        ReleaseDC(edit, hdc);
        unsigned lineheight = max(1, rc.bottom - rc.top);

        //but not this part
        unsigned linecount = SendMessage(edit, EM_GETLINECOUNT, 0, 0);
        ShowScrollBar(edit, SB_VERT, linecount > (height / lineheight));
      }
    }
  }
No idea how I can adapt that for horizontal scroll, short of getting the length of every single line of text in the control. But then that would throw off the vertical height if the horizontal bar was visible, meh. Is there an easier way to do this?
neo_bahamut1985
-Burninated-
Posts: 871
Joined: Mon Sep 10, 2007 11:33 pm
Location: Unspecified

Post by neo_bahamut1985 »

Yeah, I had a question about loading BS-X carts in Bsnes; why do I have to select a base cart to load a game? Why can't I simply select the game and have it just boot? In SnesGT, I just choose the game and that's it.
俺はテメエの倒す男だ! 宜しく! お前はもう死んでいる...
byuu

Post by byuu »

neo_bahamut1985 wrote:Yeah, I had a question about loading BS-X carts in Bsnes; why do I have to select a base cart to load a game? Why can't I simply select the game and have it just boot? In SnesGT, I just choose the game and that's it.
Because bsnes != SNESGT?

Rather than put the BS-X BIOS selection in the config window somewhere, I give you a pop-up window to select it. It saves the setting so you only have to pick it once.

Usage scenario: a new user loads a BS-X game, but doesn't know what it is. In SNESGT, you get a black screen. In bsnes, you get an option to specify the BIOS.

A better question, why not auto-load once a BIOS is specified? Two reasons:
1) what if you pick the wrong BIOS the first time? How would you clear it out?
2) how would you load two-part Sufami Turbo carts without a popup menu? It would be inconsistent for ST to show a menu with the BIOS option, but not BS-X. No, multi-select in the file open dialog just for ST games is not going to happen.

It's only a single extra click.
grinvader
ZSNES Shake Shake Prinny
Posts: 5632
Joined: Wed Jul 28, 2004 4:15 pm
Location: PAL50, dood !

Post by grinvader »

byuu wrote:bsnes != SNESGT ? post() : ポスト();
皆黙って俺について来い!!

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
byuu

Post by byuu »

grinvader wrote:
byuu wrote:bsnes != SNESGT ? post() : ポスト();
    Λ_Λ         Λ_Λ
   ./) ゚д゚)')       ('(゚д゚ (ヽ
(( /    / ))      ((ヽ    ) ))
  し―J             し―J
exdeath
New Member
Posts: 7
Joined: Fri Nov 09, 2007 9:06 pm

Post by exdeath »

byuu wrote:......how would you load two-part Sufami Turbo carts without a popup menu?.....

In the emulator menu.

Instead of having:

System
Load Catridge ...
Power > On
> OFF
Controller Port 1 > None
> Joypad
> Multitap
> Mouse
Controller Port 2 > None
> Joypad
> Multitap
> Mouse
> Super Scope
> Justifier
>Two Justifiers

You would have:

System
Load Cartridge ... > [no special cartridge] > Load Cartridge ...
> Sufami Turbo Cartridge ... > Load Slot A Cartridge ...
> Load Slot B Cartridge ...
> BS-X Cartridge ... > Load Cartridge ...
Power > On
> OFF
Controller Port 1 > None
> Joypad
> Multitap
> Mouse
Controller Port 2 > None
> Joypad
> Multitap
> Mouse
> Super Scope
> Justifier
>Two Justifiers

To load a cartridge you would need to click on [no special cartridge], or bs-x catridge, sufami turbo cartrige. When you click on sufami turbo or bs-x, a windows would open where you would go to where your bios file is and load the bios file. Then you would need to go in the load cartridge part of this type of cartridge and click on the load cartridge to and then select the rom you are gonna open.
For the sufami turbo you would need to load both cartridge (if you wanna play with 2 cartridges and then turn on the snes)

The sufami turbo would be a little more diffilcult, select the bios, "put" (load) a cartridge in slot A, then another in slot B, and then turn the console on the menu (or reset), but well snes is a acuracy emulator and this was the way the was in real snes.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

To load a cartridge you would need to click on [no special cartridge], or bs-x catridge, sufami turbo cartrige. When you click on sufami turbo or bs-x, a windows would open where you would go to where your bios file is and load the bios file. Then you would need to go in the load cartridge part of this type of cartridge and click on the load cartridge to and then select the rom you are gonna open.
For the sufami turbo you would need to load both cartridge (if you wanna play with 2 cartridges and then turn on the snes)

The sufami turbo would be a little more diffilcult, select the bios, "put" (load) a cartridge in slot A, then another in slot B, and then turn the console on the menu (or reset), but well snes is a acuracy emulator and this was the way the was in real snes.
That's incompatible with bsnes behavior, which is to power on as soon as a cartridge is loaded. Thus you can't have a load selection save to the menu in order for another load selection to be made. If you did, you'd make it impossible to load just the base cartridge or just the A slot filled.
exdeath
New Member
Posts: 7
Joined: Fri Nov 09, 2007 9:06 pm

Post by exdeath »

FitzRoy wrote:....Thus you can't have a load selection save to the menu in order for another load selection to be made. If you did, you'd make it impossible to load just the base cartridge or just the A slot filled.
No because, when you click on (an example) Sufami Turbo Cartridge ..., an window would appear to you load the bios file (like load rom window that appear when you click on load cartridge ... ), so if want just to load the bios without cartridges you can stop there.

If you want to load the Slot a or the slot B, now you would need to go again on System, then go again in Sufami turbo cartridge and then in Load Slot A Cartridge ...

Dont want to use the cartridge in slot b??
Stop here.
If you want to use it just do the same thing again, but now the user go the Load Slot A Cartridge ...

If wanted, buyu could make that, the Load Slot A Cartridge ... and Load Slot B Cartridge ... just show on UI when the user click (and load) on the Sufami turbo Cartridge part of the UI.
Byuu also could make that after the first time the user load the sufami turbo bios, the Load Slot A Cartridge ... and Load Slot B Cartridge will always show in the ui, if the user wants to load another bios file, or start snes only with the bios file, what he would need to do is only click on Sufami Turbo Cartridge ... on UI, and load the sufami bios again

FitzRoy wrote: That's incompatible with bsnes behavior, which is to power on as soon as a cartridge is loaded.
Even with this bsnes behavior (and with byuu not chanching this bsnes behaviour), this way of load cartridge would work.
Imagine a user want to play sufami with both cartridges
The user would load the sufami bios in the way i said before, and then the bsnes would start the bios.
Since he want to play with both cartridges he would load the slot A cartridge.
The bsnes would start the game in the slot A, but since the user want to load both slots he will not play the game and instead of this, he will load the slot B.
Then the bsnes will start the both cartridges. Now, the user can can play the game.
Last edited by exdeath on Sat Jan 10, 2009 5:57 pm, edited 1 time in total.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

After you load the base cartridge (what you're calling the BIOS), bsnes would run that cartridge with nothing in it. I don't believe you can insert or switch out add-on cartridges while the base cartridge is running. Same thing with the slots, you can't just choose between two A/B options, there has to be a way to load both simultaneously. Rather than try to represent every type of load combination in the menu, why not just have one load command that lets you select the slots you want filled/unfilled before running? That's what bsnes does.
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

Here is a simple solution: ask for the file to load, if it is a bios, ask for the sub cart to load, providing a cancel button.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

henke37 wrote:Here is a simple solution: ask for the file to load, if it is a bios, ask for the sub cart to load, providing a cancel button.
That's what bsnes does, except instead of cancel, you hit ok without selecting add-ons.
Locked