bsnes v0.033 released

Archived bsnes development news, feature requests and bug reports. Forum is now located at http://board.byuu.org/
Locked
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

byuu wrote:New WIP posted.
Awesome! Congrats on finally getting that.

Regarding the Tribal Tap, it looks like a goofy unlicensed knock-off. No SFC seal. The addition of an extra port (which no game apparently uses) seems like marketing one-uppance. Both the Hori and Hudson 5-port multitap boxes have the SFC seal on them. I know there were a ton of unlicensed multitaps, I'm not sure what the point would be in emulating them all. You may as well be emulating the FC Twin, or the hundreds of third-party controllers with macro buttons and turbo sliders, etc...

Anyone know what the leftmost port is for on the first Hudson 5-porter? Looks like infrared or something.
Image
byuu wrote:multitap
I don't like where the controller selection is placed. Here's why.

System functions:
loading/power on
reset
connecting controllers

Emulation/tv functions:
muting the audio
skipping frames
filtering/resizing image
increasing/decreasing clockspeed

Other than that, I noticed you've made it possible to put a multitap on the first port. Did a multitap actually function in the first port of the system? I always see diagrams placing it in the second, and the labels on the multitaps were always 2-5, not 1-4.
Last edited by FitzRoy on Tue Jul 29, 2008 6:34 am, edited 1 time in total.
neviksti
Lurker
Posts: 122
Joined: Thu Jul 29, 2004 6:15 am

Post by neviksti »

FitzRoy wrote:Anyone know what the leftmost port is for on the first Hudson 5-porter?
It is not a port. It is a switch. For games that are not compatible with the multitap you can switch to "2 player mode", and just treat the leftmost connector as normal (for a controller at least, I don't remember if it passes all the lines through).
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

neviksti wrote:
FitzRoy wrote:Anyone know what the leftmost port is for on the first Hudson 5-porter?
It is not a port. It is a switch. For games that are not compatible with the multitap you can switch to "2 player mode", and just treat the second port as normal (for a controller at least, I don't remember if it passes all the lines through).
Ah, thank you. I couldn't tell from the dark image.
byuu

Post by byuu »

I don't like where the controller selection is placed.
I'll look into this more in the morning, then.
Other than that, I noticed you've made it possible to put a multitap on the first port. Did a multitap actually function in the first port of the system? I always see diagrams placing it in the second, and the labels on the multitaps were always 2-5, not 1-4.
Yes, the SNES can utilize a Multitap in either controller port. You can even use two at a time for eight players. neviksti wrote a proof-of-concept game that worked on real hardware.

You're right that virtually all Multitap games give you warnings about plugging it into port A. But I don't see any reason to disallow a valid hardware configuration just because of software limitations ...
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

byuu wrote: You're right that virtually all Multitap games give you warnings about plugging it into port A. But I don't see any reason to disallow a valid hardware configuration just because of software limitations ...
Oh, neat. I guess you'd never be able to see those warnings unless you allowed it.

Btw, I further recommend separating things by port in the mapping area. Right now it's ABAAAABBBB, I think it makes more sense as AAAAABBBBB.
byuu

Post by byuu »

I thought about that, but it seemed like configuring joypad 2 would be much more common than configuring multitaps, so having the more common peripherals topmost would be superior.

I also considered linking joypads 1-4 to multitap 1, and joypads 5-8 to multitap 2, but that causes problems when siwtching between 2-player and 5-player (the most common setup.) If we add support for this tribal tap though, I'll be sharing multitap 1-4 with tribaltap 1-4, and using a fifth slot for the last controller.

I also thought about having two combo boxes, the left could have "Port A / Port B / User Interface" and the right could sub-categorize from there. Would have to do something tacky like disable the right-side for the user interface shortcuts (or maybe add the debugging shortkeys as a separate option there). But it might look better than that ultra-wide combo box I have now.

Hmm, the menu ... I put controller settings under the settings menu to follow a structure:
Video <sep> Audio <sep> Input <sep> Misc
The configuration panels and the advanced options follow this pattern as well.

But I see your point as well ... I don't think it really matters a whole lot either way, given how minimalist the user interface already is. Unless you guys think it's more serious, then we can do a poll or something on menu layout.

---

Oh yeah, for your main bsnes thread. I should point out that the BS-X is actually partially emulated -- eg you can play the BS zelda 1 weekly games just fine. It's really just the base unit (modem and satellite stuff) that's completely untouched. The biggest problem is that I'm not too interested in using hacks to re-enable deleted games, and a large number of dumps out there have the "deleted" flag set on them.

A hex editor can change that, of course. But that's way beyond your average user. Not sure what I should do about that just yet. Maybe I'll give in and write a scanner to force enable all games in memory or something.

I'm also still missing important info and example data carts to enable writing to the flash carts.
neviksti
Lurker
Posts: 122
Joined: Thu Jul 29, 2004 6:15 am

Post by neviksti »

byuu wrote:Hard to say, but the adapters are dirt cheap on eBay. If someone really wants it figured out, cover the cost + shipping and I'll pick one up.
I'm fairly curious how in the world this thing works now. I'd gladly get you one to gain from your insight as well.

Also, while digging through stuff looking for the tribal tap I found another SF3 with a broken floppy drive. I really don't remember ordering that many SF3's, but I won't complain. I can't find the connector piece that goes between the main unit and the SNES at the moment, but it clearly has to be around here somewhere. It sounds like you may have already found another copier, but if not I can fix that up and send it to you as well.

Let me know.

EDIT: You'd have to get your own power supply though. If you happen to have one, the old sega genesis power adapters work well. If not, I'm sure you can find some generic power supply to fit.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

byuu wrote:I thought about that, but it seemed like configuring joypad 2 would be much more common than configuring multitaps, so having the more common peripherals topmost would be superior.
I simply see things divided by port in the main menu, and then expect it to mirror that in the selector. The first port of the multitaps "override" the first and second joypads respectively, and it' seems easier to remember this when they succeed them.
Hmm, the menu ... I put controller settings under the settings menu to follow a structure:
Video <sep> Audio <sep> Input <sep> Misc
I understand you have an order, but don't see how it fits into that category. Settings is for emulation extensions like input mapping and video filters, system is for system functions like what is plugged in or loaded. It was a good idea, but this confounds it.

In fact, consider changing "Settings" to "Emulator" to clarify this distinction once and for all.
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

Is there any reason not to do it like this:

Internally the Bsnes connects like this:

Port A > Multitap > controllers 1,6,7,8
Port B > Multitap > controllers 2,3,4,5

Or in case of the tribal

Port A > Multitap > controllers 1,7,8,9,10
Port B > Multitap > controllers 2,3,4,5,6


the user interface would just show controllers 1-8(10) in standard order.
Players would have to set the number of controllers wanted in the settings. 2 or lower would enable bypass of the multitaps (like the button on the hudson multitap), anything above 2 would set them to multitap mode.

(Also it would be great if these things where auto connected through information in the .pcb file ;) )

Ps am i right in assuming that special controllers will still work through the multitaps?

---------

about BS-X, that was already working a long time ago (just that a small handfull of games have messed up graphics/text)

We need to seriously talk about the BS-X dumps, as they are not regular dumps they have to be hex-edited one way or another. We might aswell go for a standard(as a standard can be always be changed later).

Ideally bsnes would emulate the satelite broadcast and display all the available games as downloads with their respective time limits, without actually effecting the game.rom. Also the whole thing could be emulated with the auto deletion and everything. Just that the satelite would always be broadcasting the same games regardless of real current time.

EDIT: fixed hardware controllers order, Secret of Mana gives an error when Port A is used for the multitap(i guess the mulation is pretty accurate).


EDIT2: Googling revealed that there are no licenced/commercial games that support more than 5 players. Also there are no licenced/commercial games that support a multitab in port A.
i did find that a GB game connected through the supergameboy supports the regular 4 player multitab, and thats the only way to access its multiplayer mode!, there are actually several GB games that only support 2 player mode with the supergameboy and there are even GB games that have full blown snes games inside them!
henke37
Lurker
Posts: 152
Joined: Tue Apr 10, 2007 4:30 pm
Location: Sweden
Contact:

Post by henke37 »

For the bs-x issue, just ask nach to add a flag to nsrt to clear the flag in the file.

For the idea of just letting the satellite broadcast the same games all the time, it's not that simple. There where specialy synchroniced events and stuff that depended on specific timing relative to the satelite feed. For example, the hardware had the ability to forward live audio feeds from the satelite.

What you need would be similar to a recording of a full broadcast. While technology has advanced, it's still going to be a lot of data. A lot of data that is probably lost forever unless Nintendo decides to relaunch this service, with or without the help of internet broadcasts.

So unless someone has a high quality recording of such a broadcast, the best we can do is to pretend that the satellite isn't broadcasting. And that is reality right now.

Long post short: get a recording of a broadcast and then we will worry about supporting it.
neviksti
Lurker
Posts: 122
Joined: Thu Jul 29, 2004 6:15 am

Post by neviksti »

tetsuo55 wrote:Is there any reason not to do it like this:

Internally the Bsnes connects like this:

Port A > Multitap > controllers 1,6,7,8
Port B > Multitap > controllers 2,3,4,5

Or in case of the tribal

Port A > Multitap > controllers 1,7,8,9,10
Port B > Multitap > controllers 2,3,4,5,6
The only reason emulators number controllers is because people want to have settings saved for each one (either a keymap, or what joystick to use, etc.).

It seems most intuitive to me to make this explicit by saving a list of keymaps A,B,C,D,whatever and computer joystick maps, etc. The user is presented with two SNES controller ports -- connect a device and apply the keymap/joystick/whatever you want for that, if it is a multitap there are now more ports which you can apply keymap/joystick/whatever to.

These kind of things are all just personal preferences of course and we could discuss UI layouts forever. So to each their own.
tetsuo55 wrote:Ps am i right in assuming that special controllers will still work through the multitaps?
What do you mean by "special"? You can't chain multitaps if that is what you are thinking, nor can you use a super scope, nor lethal enforcers gun, and while I can't remember the mice details at the moment, it's possible you can't use those either.
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

Your approach sounds nice too, maybe even more transparent and less cluttre. Also it forces the use of adding controller options to the pcb/xml file.

Thats exactly what i meant with special controllers
neviksti
Lurker
Posts: 122
Joined: Thu Jul 29, 2004 6:15 am

Post by neviksti »

tetsuo55 wrote:Also it forces the use of adding controller options to the pcb/xml file.
Nach added controller options to his rom format as a convenience. I don't see how we'd be in a situation which would force us to have such information in the cartridge format. Maybe I'm just misunderstanding what you mean here.
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

I misread your post.

You're saying that when a user enables the multi-tap options more options for controllers will appear.

I read that when the system detects a multi-tab game it will present the user with more options for controllers.

What nach did is great, but we are moving away from headers alltoghether, that means that that type of information must now be stored in the extra file that is added to the folder/zip where the rom is stored.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

tetsuo55 wrote: What nach did is great, but we are moving away from headers alltoghether, that means that that type of information must now be stored in the extra file that is added to the folder/zip where the rom is stored.
The SNES did not detect special controller support from any part of the cartridge and prompt users. You simply knew the game used it and set up your controllers accordingly. In fact, without the list, how the hell would you even remember what games used what even with this information inside a header or pcb file? You'd have to manually scan or open every archive like a bumbling idiot, it accomplishes nothing.
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

i would agree with you but....

What you are basically saying is just because in real life you had to unplug/replug some or all of the controlers depending on the game you wanted to play we have to do the same thing on emulators by chaninging the settings menu

You are right about one thing though, if the auto-configuration does get added, one should be able to turn it off completely.
Some people actually have 2 snes>usb ports on the pc, and if those are technically correct, the emulator should be able to tell that a physical multi-tap is being used instead of an emulated one.

However if we look at real life situations, most people will simply have a bunch of controllers/guns/mice hooked up to the pc all the time, all one needs to do is pick up a controller and play, for there situations it would be great if you didn't have to go into the settings menu every time you change controller types. (in my case everything just goes through a usb-hub and is permanently connected)

Our main difference in standpoints is that i would like the "Game container" to be the complete retail packadge with all the info and manual etc included.
Your view is that the "game container" should only contain the information needed for technically accurate emulation.

Imho thats a good thing, sometimes i get too carried away and then i read your posts and take a step back, but i also think that sometimes you disagree too much with little changes that have a big effect on user-friendlyness, eventhough its not 100% completely how it would be done in real life, but for the emulation process makes life a little easier


----

Luckily NSRT knows exactly which games used which controllers. There is no point in end users using the information. (unless someone made a homebrew game that supported anything beyond basic 2 players with joypads)
byuu

Post by byuu »

The SNES did not detect special controller support from any part of the cartridge and prompt users.
Well, I hear the prototype Super R.O.B. was able to auto-detect and plug in the appropriate controllers for you ... but I haven't emulated that yet. They're kind of difficult to obtain.

That's not to say I don't understand the convenience of auto-detection, just that I'm not personally interested in adding that. Yes, and yet I have things like video filters. I'm such a hypocrite :P

What I do plan to eventually allow is game-specific settings, so that one can specify the controller setup they want for a specific game, and it will automatically load that with the game. That way you only have to set the controller type one time per game.
Luckily NSRT knows exactly which games used which controllers
Neat, so which games utilize the Tribal Tap?
Just a joke, Nach :D
I'm fairly curious how in the world this thing works now. I'd gladly get you one to gain from your insight as well.
Well, they aren't too pricey. If you run out of ideas and we find a game that actually supports 6P, I'll pick one up.
Also, while digging through stuff looking for the tribal tap I found another SF3 with a broken floppy drive. I really don't remember ordering that many SF3's, but I won't complain.
I may have a source for another, but nothing concrete yet. I guess we can consider it if you like. Just please don't send one you or a friend need -- even as a backup, of course. I do technically have one now, so it's better we both have a working one than I have two or something.
FitzRoy
Veteran
Posts: 861
Joined: Wed Aug 04, 2004 5:43 pm
Location: Sloop

Post by FitzRoy »

tetsuo55 wrote:However if we look at real life situations, most people will simply have a bunch of controllers/guns/mice hooked up to the pc all the time, all one needs to do is pick up a controller and play, for there situations it would be great if you didn't have to go into the settings menu every time you change controller types. (in my case everything just goes through a usb-hub and is permanently connected)
I don't even understand what that means. How do you auto-configure optional controllers? If you start up Lord of the Rings, it shouldn't default to the mouse just because it supports the mouse. That's all auto-loading could accomplish, annoying the hell out of people by automatically switching to optional controllers in every game that supports them regardless of what you intend to use. I fail to see how this or having to "prepare" your roms with a program you probably have no idea exists is in any way a user-friendly solution.

And as far as I know, you can't really use justifiers or super scopes or actual snes mice. Someone correct me on that if I'm wrong, but I believe you'd need PC drivers, plus a CRT screen for the first two. What you can do is map a PC mouse to simulate them.
Our main difference in standpoints is that i would like the "Game container" to be the complete retail packadge with all the info and manual etc included. Your view is that the "game container" should only contain the information needed for technically accurate emulation.
No, I don't care what files you want to store with your stuff. My view is simply to prevent the representations of the rom and pcb from being modified to include things they didn't have. You can add external things all day long and I won't care. Otherwise, I'll dispatch zombies to your house one at a time, and something tells me you're no Jeremiah Johnson.
Luckily NSRT knows exactly which games used which controllers.
Not really, I doubt anyone has a complete list. I suspect there to be quite a few more Japanese multitap games we don't know about. And I don't even list weird crap like the Lasabirdie and Extertainment bikes, maybe I should.
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

Yeah. even original hardware would just be represented as a generic controller/lightgun/mouse to windows if you had the right connectors and drivers

The situation i meant was people just have a bunch of input devices installed and attached, in my case ps2 gamepads.

With autoconfiguration i was thinking more in the lines of:
Configure controllers that have no alternatives, for example a light gun only game that doesn't work with a regular controller. Or a game like Secret of Mana could configure 3 gamepads regardless of how many you actually decide to use. The cases where you can optionally select an alternative controller should remain default.

After writing that i now understand why auto-configuration can be a real pain in the ass if not executed correctly, i now also understand why people would want to edit the settings. Auto-configuration would only work in those cases where no alternatives are possible like secret of mana. Games like TG3000 have an alternative game mode if you insert a justifier into port B, but if that happened automatically you would be unable to play a 2 player game


---

So basically you want to keep PCB info and Game Data seperated from "the rest", So a container with "pcbname.pcb+game.rom+extra.info" would be okay with you.

This extra file could simply be mess/mame xml file, and byuu could happily keep ignoring that as long as the front-end reads it.(PS according to devs over at mess there are several plug in xml parsers with almost PD licences)

---
now that multi-tap support has been added we can test them! i tried a handfull that supposedly had 6 player support, but none of them supported more than 5
adventure_of_link
Locksmith of Hyrule
Posts: 3634
Joined: Sun Aug 08, 2004 7:49 am
Location: 255.255.255.255
Contact:

Post by adventure_of_link »

neviksti wrote:EDIT: You'd have to get your own power supply though. If you happen to have one, the old sega genesis power adapters work well. If not, I'm sure you can find some generic power supply to fit.
And of course, if he can't find the plug which plugs into the SF3, theres always desoldering the DC input on the SF3 then find a power supply which meets the needs of the SF3 then hardwire it to the PCB.
<Nach> so why don't the two of you get your own room and leave us alone with this stupidity of yours?
NSRT here.
neviksti
Lurker
Posts: 122
Joined: Thu Jul 29, 2004 6:15 am

Post by neviksti »

tetsuo55 wrote:Games like TG3000 have an alternative game mode if you insert a justifier into port B
Wait, what!?
I had never heard of that. Where did you learn about that?
tetsuo55 wrote:now that multi-tap support has been added we can test them! i tried a handfull that supposedly had 6 player support, but none of them supported more than 5
It is quite possible that no games support 6 players. But it is also possible that games would check for a multitap and only allow 6 players if a tribal tap was seen ... in which case you wouldn't be able to tell just by playing in an emulator.
byuu wrote:Well, they aren't too pricey. If you run out of ideas and we find a game that actually supports 6P, I'll pick one up.
I've resorted to looking for bizarre things in soccer games. Unfortunately, it's been long enough since I worked on snes stuff that a lot of this doesn't look familiar to me. For example in Heads on Soccer, I see:

Code: Select all

00844f jsr $8752  ;read joypads, if $0e is nonzero read multitap
008452 jsr $869f  ;read 8 bits from $4016/17 while latch held on,
                  ; then 8 bits while latch off, and sets $0e based on this
008455 lda $0e
008457 bit #$0080
00845a beq $846d
... junk and rts
00846d lda $0140
008470 pha
008471 jsr $848a
008474 jsr $849f
008477 jsr $84b4
...
008489 rts
It seems that it uses the routine at $869f to set bit 7 of $0e if there is a multitap in controller port 1, and sets bit 6 of $0e if there is a multitap in controller port 2. However I don't really understand the test, and it is probably this kind of info that is giving me trouble tracking down how the tribal tap works. What exactly is going here that lets one detect the multitap? Wouldn't reading with the latch set just be constantly checking the status of the B button?

I've tried similar stuff with the tribal tap and still have yet to find anything that distinguishes between the 5P and 6P setting on that thing.
byuu wrote:I may have a source for another, but nothing concrete yet. I guess we can consider it if you like. Just please don't send one you or a friend need -- even as a backup, of course. I do technically have one now, so it's better we both have a working one than I have two or something.
Well, just consider it an option if your other lead falls through I guess.
byuu

Post by byuu »

Wait, what!?
I had never heard of that. Where did you learn about that?
Perhaps he's being silly about the infamous "game with no guns on top of the cars" thing ... I certainly can't get the game to do anything with a justifier in port B ...
What exactly is going here that lets one detect the multitap? Wouldn't reading with the latch set just be constantly checking the status of the B button?
I saw Battle Cross read with the latch set eight times, then clear eight times. It only stored the data2 value, and it filled two bytes with those values. The first had to be #$ff, the second not #$ff. So I think if you were to hold down eight buttons on player 2 or whatever it would error out :P

But yeah, just reading and seeing data2=1,data1=0 should be enough for reliable multitap detection, unless the other peripherals do something similar ...
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

my applologies, the game i meant was "Lamborghini American Challenge"
d4s
Rookie
Posts: 28
Joined: Wed Sep 08, 2004 12:05 pm

Post by d4s »

tetsuo55 wrote:my applologies, the game i meant was "Lamborghini American Challenge"
And the peripheral you meant was the super scope, not the justifier, i guess. :roll:
tetsuo55
Regular
Posts: 307
Joined: Sat Mar 04, 2006 3:17 pm

Post by tetsuo55 »

d4s wrote:
tetsuo55 wrote:my applologies, the game i meant was "Lamborghini American Challenge"
And the peripheral you meant was the super scope, not the justifier, i guess. :roll:
their not the same thing???
**Bashes head against wall**


it seems a mouse works to not just the superscope

How do the super-scope and justifier differ other than their size?
Locked