FPGA discussion split from Analogue Pocket thread

A place where you can chat about anything that isn't to do with games!
User avatar
Austin
Posts: 1266
Joined: Sun Aug 29, 2010 6:32 pm
Location: Fairfax, VA
Contact:

Re: FPGA discussion split from Analogue Pocket thread

Post by Austin »

donluca wrote:I'll never get tired of repeating this over and over again:

build yourself a damn emulation box, a PC dedicated to JUST ONE THING.

You can even use old windows XP which will let you do anything you want without getting in the way, just make sure not to give the machine access to the internet.

This way you can get way better performance and much faster boot times (you can even hide all the windows interface and boot straight to your launcher of choice).
I second this. The great thing is you don't even have to go back that far now to have a relatively cheap (yet beefy) system for the purpose.

I had a spare AMD FX CPU, some RAM and a motherboard laying around, so I went out and picked up a PSU, case and low/mid range GPU to purpose it into a dedicated emulation rig. It's been a beast for that and handles everything up through Dreamcast pretty much as well as you would want. It's my main MAME machine now and since it's slightly newer hardware, I play all of my Steam shmups (and other slightly older games) on it as well.
User avatar
it290
Posts: 2544
Joined: Thu Mar 17, 2005 1:00 am
Location: polar malortex, illinois

Re: FPGA discussion split from Analogue Pocket thread

Post by it290 »

The issue I have with a dedicated emulation solution like that is the controller interfaces. So many games are reliant on the industrial design of the controller itself that in many cases the feeling is just completely destroyed when having to deal with mapping controls to something else, not to mention the configuration hassles involved. For many games on the Dreamcast, having sensitive analog triggers is important. How many controllers have those? Not many. How many emulators support configuring them painlessly? None or very few that I'm aware of. I'm slightly less of a stickler for display fidelity than I used to be (audio is another story), but having physical controls that don't jive with what the game expects just ruins the experience for me.

On top of that, you have the issue of button names/labels—although I personally can generally deal with a game saying 'press A to jump' and translating that to a Dualshock's 'O' button (or whatever controller I happen to be using), explaining that mapping to a whole group of people in a multiplayer setting is a completely different scenario. With an FPGA solution and appropriate controller ports this is a nonissue—you can just plug in the controllers and go and everyone gets the same experience. I realize this is possible with software emulation but it requires a hell of a lot of configuration and can be pretty fragile.

All of these complaints have more to do with the interface between the player and the machine than they do with the underlying emulation tech (software vs. FPGA), but FPGA solutions just tend to make these things a whole lot easier due to the way they're implemented and the single purpose nature of commercial products like Analogue's. It's definitely possible to do the same with software emulation but it would require much more rigorous autodetection of input devices on a per system basis and a better UI for configuring them.

The 'virtual gamepad' approach taken by the likes of Retroarch et al is a good start but what we really need is a user interface specific to the hardware/system being emulated that automates as much of the configuration as it can (using a database of USB device IDs), and what can't be automated should be manually configured by the user using a graphical UI that displays the physical relationship of buttons and other inputs on the original controller, explains the type of input required (digital or analog) and allows the user to map accordingly and then remembers those hardware-specific settings for every additional device of the same ID plugged in.

As an example, if I have a Saturn->USB adapter plugged in and I'm running a Saturn emulator, the system should ideally:

1. Inspect some existing database of USB device IDs and determine if a mapping exists for said adapter. If it does, map the buttons for the controller automatically. If it doesn't:
2. Let me configure the buttons for the Saturn emulator using a graphical display with an image of the original controller and positions and labels for each button. Once I've configured one controller using this hardware setup:
3. When I plug in a second adapter with the same ID, automatically map the buttons using the previously defined configuration and let me assign the newly plugged in adapter to the P1 or P2 side.

If all of the above were implemented, software would be totally awesome control-wise, but doing all of that requires a hell of a lot of code and data, and in reality it's much easier to bulid a standardized, single-platform control interface that expects certain inputs from a given controller on certain pins. Every 3-button Mega Drive controller signals a B button press in exactly the same way, so if you build an FPGA platform that emulates the Mega Drive and has a DB9 input, you have no need to configure the B button differently, and from the player side every controller will have the B button in the middle between A and C so there's no confusion with what button does what in-game or how things are laid out ergonomically.

All of this rather long post is to say: how accurately the game is represented in terms of visuals, audio, input lag etc. are all incredibly important factors in terms of emulation/reproduction, but the way that the player actually interacts with the game is equally important and is an aspect that is generally better represented by FPGA solutions vs. software right now. It's possible that will change in the future, but because we're talking about reproducing dedicated platforms, dedicated solutions will always have the edge in terms of authenticity.
Image
We here shall not rest until we have made a drawing-room of your shaft, and if you do not all finally go down to your doom in patent-leather shoes, then you shall not go at all.
User avatar
Xyga
Posts: 7181
Joined: Tue Nov 05, 2013 8:22 pm
Location: block

Re: FPGA discussion split from Analogue Pocket thread

Post by Xyga »

donluca wrote:
Xyga wrote:As donluca said once iirc it is 'mame done right'
As much as I love and follow GM development, I don't think I've ever made such statement, LOL.
I've come across this today :mrgreen:

http://shmups.system11.org/viewtopic.ph ... 9#p1285949



@it290; your idea sounds like a dream but also like an incredibly high profile type of software, the likes that don't really happen through open source projects or rather that remain in development mess indefinitely when they do, never actually producing the fully satisfying experience end users expect.
Emulation will likely never have the means to offer an automatized-enough system like you describe, there are so many possibilities it makes one wonder if anything besides AI routines will ever be able to manage something so vast and complex.
Strikers1945guy wrote:"Do we....eat chicken balls?!"
User avatar
it290
Posts: 2544
Joined: Thu Mar 17, 2005 1:00 am
Location: polar malortex, illinois

Re: FPGA discussion split from Analogue Pocket thread

Post by it290 »

Yeah, since I posted that I've been participating in the MiSTer channels on the classic gaming discord quite a bit. I think what I want now that is more feasible is something more like this:

• When you plug in a new controller, you map it for the emulator/system UI, e.g. functions like menu navigation and OK/cancel.
• These settings are used as the defaults when a new core is loaded.
• When you open a new core, you get a prompt to map your controller, along with an image that shows the original controller or arcade hardware so that you can see where the buttons are physically located and map them as comfortably as possible to your controller.

I don't think this is that crazy, and would help a lot with configuring things properly the first time. For example, I was playing the MiSTer Double Dragon core earlier, and for that game it's imperative that Jump be in the middle and Punch/Kick on either side so that the jump kick works properly. This wouldn't be apparent from just configuring the controls via text, but an image makes it instantly intuitive where you should map buttons.
Image
We here shall not rest until we have made a drawing-room of your shaft, and if you do not all finally go down to your doom in patent-leather shoes, then you shall not go at all.
User avatar
donluca
Posts: 852
Joined: Sat Feb 28, 2015 8:51 pm
Location: Italy
Contact:

Re: FPGA discussion split from Analogue Pocket thread

Post by donluca »

Xyga wrote:
donluca wrote:
Xyga wrote:As donluca said once iirc it is 'mame done right'
As much as I love and follow GM development, I don't think I've ever made such statement, LOL.
I've come across this today :mrgreen:

http://shmups.system11.org/viewtopic.ph ... 9#p1285949
I stand corrected! :D (thanks to the mod who've moved this hardware thread to the off-topic section I've only seen it now)
Although, in my defense, I've specified "basically" which is not "actually", meaning there's still lots of improvement (especially in the usability front) to do.

Anyways, I've come back to resurrect this thread for this post: https://byuu.org/articles/edge-of-emulation

The Background and Whack-a-mole part in particular is exactly what I was referring to in my previous posts and what I was hoping it would not be done in FPGA emulation.

Looks like byuu confirms that it's still something which is being done, even today.

As always, YMMV. Here's hoping to proper and perfect FPGA emulation, especially in MiSTer.
Post Reply