Kodi Community Forum
Integrated Video Game Emulators - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
+---- Forum: RetroPlayer Development (https://forum.kodi.tv/forumdisplay.php?fid=194)
+---- Thread: Integrated Video Game Emulators (/showthread.php?tid=146711)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44


RE: Integrated Video Game Emulators - matt77303 - 2013-02-19

Hi

I'm really interested in trying this.

However, I've never successfully managed to build something from source, so I'm stuck with pre-compiled builds.

I've tried the build for windows on page 20 but have a blank screen when adding emulators from the repo. It's my understanding from posts after that one that I need a newer compiled build.

Would anybody be kind enough to post a working build I could play with?

Thanks

Matt


RE: Integrated Video Game Emulators - garbear - 2013-02-19

@mwaterbu, DeathFire, thanks for the mockups and the Controls.dat link (should be handy). I like this idea of handling controller configuration. It'll have to be a python extension, and I'll make sure xbmc exposes all the necessary variables. As for the extension itself, python extensions aren't high on my long todo list, mostly because I hate duck typing, and also I figure i'll bust ass on the C++ part and let others step up to help in that area.

@Eldorado, the DVDPlayer core does the actual rendering, so all the usual aspect ratios should be available - fit to screen, zoom, stretch, original size. I think i might need to tweak the handling of the fullscreen game hotkeys, but you should be able to adjust this via menus at least.


And an anouncement: Just-in-time emulator installation is in Smile On a virgin install, hit enter on a rom, and XBMC will automatically install the emulator of your choice and launch the game without having to open the add-on manager.


RE: Integrated Video Game Emulators - sparklewind - 2013-02-19

Really awesome project, garbear. I'm a big fan of both libretro and XBMC, and I've been dreaming for some time about having them combined like this. So, about the design, I hope you will like what I suggest below.

First, a simple-ish system settings menu, that looks somewhat like this:

Screenshots directory:
Game folder
Retroplayer screenshots directory
Custom

Saves directory:
Game folder
Retroplayer saves directory
Custom

Savestates directory:
Game folder
Retroplayer savestates directory
Custom

Firmware directory:
Game folder
Retroplayer firmware directory
Custom

HLE BIOS:
Disabled
Enabled

Skip BIOS animation:
Disabled
Enabled

Import to Retroplayer:
Saves
Savestates
Firmware

Select default cores


I hope you can understand. These are all options/suboptions. If you click on for example "Screenshots directory" you can choose between the options "Game folder", "Retroplayer screenshots directory" and "Custom".

"Import to Retroplayer": This will let the user import saves, savestates and firmware to appropriate directories. This is useful if you don't want to search around the whole filesystem and you want to quickly import, say, a firmware file from external media. It should scan for usable files in a directory and rename them after copying if necessary.

If you click on "Select default cores", you will be taken to a core selection menu:

NES/Famicom:
Nestopia
QuickNES
FCEU
bNES

SNES/Super Famicom:
bSNES Performance
bSNES Balanced
bSNES Accuracy
Snes9x

GameBoy:
Gambatte

GameBoy Advance:
VBA-Next

Mega-Drive/Genesis:
Genesis Plus GX

Mega-CD/Sega-CD:
Genesis Plus GX

MasterSystem:
Genesis Plus GX

GameGear:
Genesis Plus GX

WonderSwan:
Mednafen WSwan

PC-Engine:
Mednafen PCEFast

PlayStation:
Mednafen PSX
PCSX ReARMed


Same principle here; clicking on "NES/Famicom" for example lets you choose between the options "Nestopia", "QuickNES", "FCEU" and "bNES". The idea with choosing default cores is that if the user loads a game and Retroplayer detects that it's an NES game, it will use the chosen default NES core, if it detects a PS1 game it will use the chosen default PS1 core, and so on, automatically.

When running a game, a video menu similar to the one we already have for videos, should be available, looking somewhat like this:

Vsync:
Enabled
Disabled

Bilinear filtering:
Enabled
Disabled

View mode:
Original
Ideal
Stretched 4:3
Stretched 16:9
Original Unscaled
Custom

Gamma ramp:
Disabled
Ideal
50%
100%
150%
Custom

Cg shader 1:
None
shader1.cg

Cg shader 2:
None
shader2.cg

Cg shader 3:
None
shader3.cg

Cg shader 4:
None
shader4.cg

Set as default for:
All games
This system
This core


Explanation of options:
"View mode: Ideal": Aspect ratio will be adjusted to what is most appropriate for a system. For all SD home console games, that should be 4:3 (unless it supports a 16:9 mode), whereas for all handheld games it should simply be the original aspect ratio.

"Gamma ramp": Implemented in bsnes some time ago. Same results can be achieved in mednafen through the use of palette files. Basically, it is an option to make sure the colours are well-balanced, so that whites are really whites and blacks are really blacks. Setting it to "Ideal" should give you the "ideal" option for each system.

Cg shaders: The cg shaders you can use in RetroArch.

Finally, the controller settings:

Controller profile:
Retropad
System specific

PS1 controller mode:
Digital
Dual Shock
Auto

D-pad mimic:
Enabled
Disabled

Map buttons

Set as default for:
All games
This system
This core


Explanation of options:

"Retropad": The global pad in RetroArch. This works pretty well as both NES, SNES, GB, GBA and PS1 controller buttons will be mapped correctly in the right place by mapping the buttons once.

"PS1 controller mode: Auto": This option will make use of a title ID database to determine whether the game can be played with a Dual Shock controller or not, and then choose the appropriate option automatically. RetroLaunch has such a database.

"D-pad mimic": If a game does not make use of any analog sticks natively, this will make the left analog stick mimic the d-pad directions, so that you can use both the d-pad and the left analog stick to move around. This is default behaviour on most emulators on the Wii for example.

Clicking on "Map buttons" will take you to a mapping screen, similar to what mwaterbu suggested here: http://forum.xbmc.org/showthread.php?tid=146711&pid=1341688#pid1341688


RE: Integrated Video Game Emulators - drivesoslow - 2013-02-19

When ever I try to launch a ROM I get prompted to install an emulator, which I do without any error through the GUI, but the logs show this:

Code:
12:53:19 T:3036968704   DEBUG: RetroPlayer: Installing game client gameclient.bnes
12:53:19 T:3036968704   DEBUG: RetroPlayer: Game client installation cancelled/failed
12:53:19 T:3036968704   ERROR: RetroPlayer: No game client
12:53:19 T:3036968704   DEBUG: CAnnouncementManager - Announcement: OnStop from xbmc
12:53:19 T:3036968704   DEBUG: GOT ANNOUNCEMENT, type: 1, from xbmc, message OnStop
12:53:19 T:3036968704   DEBUG: RetroPlayer: Closing file
12:53:19 T:3036968704   DEBUG: RetroPlayer: File closed

I manually compiled and installed the 32bit clients

UPDATE: I was running the XBMC install from the build directory to test, once I actually installed it and then ran it it quit doing this.


RE: Integrated Video Game Emulators - garbear - 2013-02-19

@driveslow, full debug log on www.xbmclogs.com please

sparklewind,

Your directory options are exactly the way it should be. Similar to how movie posters are cached on the hard drive, I see Retroplayer Savestates Directory as a directory that "just exists", and you can export savestates/savegames to the rom folders à la movies.

HLE BIOS and Skip BIOS Animation are emulator-side I think, but Themaister and I can add an XBMC setting that "hints" how the emu should treat the bios (who knows when/if emus will support it. maybe some already do)

Import to Retroplayer - Another great idea for an option! This will probably require quite a bit of white box reverse engineering on my part, but it's something I would like to do.

Select default cores - This is an area I disagree with you on. A category of settings should not be allowed to grow over time linearly with the number of platforms supported. The method for selecting a default emulator will be to simply disable unwanted ones in the add-on manager. Outside of that, this category can be boiled down to two options: "Remember my emulator choice" (default off), and "Reset emulator associations". When two emus are installed, XBMC current pops up a menu saying "Emu 1; Emu 2; Go To Add-on Manager". The first option hides this menu, the second option restores the hidden menus until they are hidden again.

Video menu - You're right, the menu is similar to the one we already have for videos. Some settings I might skip to avoid duplication. But Shaders are way popular and should be included. On the down side, these touch some pretty core rendering code and will greatly add friction to the merge with master. These will likely not be included for some time for that reason. It sounds like Gamma ramp has to be performed within the emulator. Themaister and I can tweak the libretro API, but like the bios options, it'll need support from the emulator client.

Controller settings - I still cling to the hope that a combination of joystick.xml settings and title databases will alleviate the needs of most and create the best OOBE possible. After crowdsourcing the edge cases, we're only left with personal preference. Hopefully an add-on can handle this, and if not it'll be trivial to enable customization via the respective joystick.xml's.

Thanks for your input! The opinions in this thread are literally what are building RetroPlayer.


RE: Integrated Video Game Emulators - drivesoslow - 2013-02-19

I solved my issue by installing xbmc rather than trying to run it from the build directory. Looks good. The issues I have seen now are:

#1 Not all of the emulators work. Some of them just display a black screen so you may have to try different emulators until you find one that works for you. Other have no sound, or choppy sound (this is under linux).

#2 I cannot seem to get my joystick to work. If I enable it under settings in XBMC I can navigate XBMC using it but I cannot control the emulators. I am using a Logitech gamepad so this may be part of the issue.


RE: Integrated Video Game Emulators - garbear - 2013-02-19

#1 - I disabled sound for a few problematic emulators. I have the fix, just haven't implemented it yet Smile I added an advanced setting called <audiobuffer> to fix choppy sound at the expense of audio delay. Note, I plan to let audio issues persist until XBMC 13.0 unless circumstances conspire otherwise.

#2 no axis support yet, only d-pad. I jacked a wii classic controller from my friend to get this working, but it hanged every linux box i tried it on Sad I did button and d-pad code completely blind, so there's hope for axis code soon. I'll PM when I need a tester Smile

Please upload your emulator findings here with full debug logs (xbmclogs.com). I would really like to start gathering data to get a repertoire of where I should focus my efforts.


RE: Integrated Video Game Emulators - drivesoslow - 2013-02-20

(2013-02-19, 23:24)garbear Wrote: #1 - I disabled sound for a few problematic emulators. I have the fix, just haven't implemented it yet Smile I added an advanced setting called <audiobuffer> to fix choppy sound at the expense of audio delay. Note, I plan to let audio issues persist until XBMC 13.0 unless circumstances conspire otherwise.

#2 no axis support yet, only d-pad. I jacked a wii classic controller from my friend to get this working, but it hanged every linux box i tried it on Sad I did button and d-pad code completely blind, so there's hope for axis code soon. I'll PM when I need a tester Smile

Please upload your emulator findings here with full debug logs (xbmclogs.com). I would really like to start gathering data to get a repertoire of where I should focus my efforts.

Perfect.

I'll try the audio fix when I get home

FWIW My Logitech has a d-pad and two axis on it. If I add the following to my joystick.xml I should be able to test it, correct?

Code:
<FullscreenGame>
    <joystick name="Logitech Logitech Cordless RumblePad 2">
      <altname>Logitech Cordless RumblePad 2</altname>
      <button id="1">JoypadA</button>
      <button id="2">JoypadB</button>
      <button id="3">JoypadX</button>
      <button id="4">JoypadY</button>
      <button id="5">JoypadL</button>
      <button id="6">JoypadR</button>
      <button id="9">JoypadSelect</button>
      <button id="10">JoypadStart</button>
      <button id="8">Stop</button>
      <hat id="1" position="up">JoypadUp</hat>
      <hat id="1" position="down">JoypadDown</hat>
      <hat id="1" position="left">JoypadLeft</hat>
      <hat id="1" position="right">JoypadRight</hat>
    </joystick>
</FullscreenGame>

I also have a Bluetooth adapter coming any day now so that I can use my Wiimotes on this same computer with Dolphin. So I'll have those for testing if you like too.

As far as logs go are you logging everything from the emulators to xbmc.log?


RE: Integrated Video Game Emulators - BLKMGK - 2013-02-20

(2013-02-19, 14:27)garbear Wrote: @BLKMGK, N3MIS15, I fixed the game launching issue

@BLKMGK, I'll get MAME working soon. XBMC only runs on 32-bit windows, so only 32-bit cores can be loaded

<snip>

Awesome, I'm compiling now! One quick question while I mention compiling - is it just me that has issues doing a multi-thread compile? It seems like each time I try to use 4 threads I fail but a single thread compile works fine. <shrug> Today 4 threads worked - yay! I'll try things out shortly.

MAME - just so I understand, because this only works on 32-bit windows there are limitations? I run on 64bit Linux currently, sounds like I've got a bigger issue. Or does this mean only 32bit ROMs can be run? That doesn't seem right so I suspect this is an OS issue. Hopefully Linux support won't be difficult at least, is there a path forward for 64bit eventually? Loading 32bit support, if it's not already there, on my Linux box would be a reasonable requirement - loading Windows would be icky Wink

As for interfaces, I think one of the more important things from a user's standpoint right now would be to have an option - much like Video and Music - that stood out to denote Games or Emulators. I honestly lean more towards Games in that it's more generic and less likely to get folks "upset" concerning support for game ROMs. Under that might be either a listing for games via a library browser or perhaps by platform. I for one am neutral so far as controller config, background music, and surround art mostly because I' ve got so little experience here and while I can understand the importance I've got no preferences. I suspect I'll be using an 360 controller (wireless I hope), a PS3 controller, or perhaps Wii. Some folks might want to use XBOX1 devices maybe. What other controllers might be supported or needed? Arcade controls via USB maybe? I like the idea of being able to visually see the controller for a platform and perhaps click a control for each of the pictured buttons to designate function maybe? I guess that's a slight leaning on how I'd think that might work but I'm far fro many sort of experienced user much less expert.

Logs, as asked above - everything dumps into XBMC.log? I haven't been running in debug lately, will that be needed? Would it make sense to have a log specifically for logging emulators for now?

Last but not least - I see you had to borrow a Wii controller for testing. Is there any hardware that you need to work on this? A wish list of sorts? You're in the States, as am I, and I might be willing to try and help out if there's things you need to help make this development easier. Wii controllers, PS3, 360 stuff is all pretty easy to get and not uber expensive so please speak up!


RE: Integrated Video Game Emulators - drivesoslow - 2013-02-20

(2013-02-20, 01:04)BLKMGK Wrote: Awesome, I'm compiling now! One quick question while I mention compiling - is it just me that has issues doing a multi-thread compile? It seems like each time I try to use 4 threads I fail but a single thread compile works fine. <shrug> Today 4 threads worked - yay! I'll try things out shortly.

I had this issue earlier this week, but when I pulled today I was able to compile with multiple threads too.


RE: Integrated Video Game Emulators - Bstrdsmkr - 2013-02-20

Python access to states?!? *sheds single manly tear*

If there's any hardware you need man, post it up, we'll make it happen.


RE: Integrated Video Game Emulators - garbear - 2013-02-20

drivesoslow, keymap contributions are appreciated by all who come after us Smile I don't know the buttons, but maybe map 11 and 12 to "FullScreen" and... something else useful? Eventually we can do "short press 12 to save state" and "long press 12 to load last state" or something.

Good luck with bluetooth, cwiid/wminput eventually hanged my OS on two different laptops, both running Ubuntu precise x64. I started a wminput config file, but gave up when it started crashing too much.

I don't log that much, just emulator and rom metadata, as well as some logic paths my code takes. Regardless, the info lets me see exactly the critical decisions my code is making, and I can almost always trace the flow of execution to the source of any issues. Basically, they're useful.


BLKMGK, i got the idea you were on win32, but MAME should work equally well (which is to say, not at all Smile ) on linux x64. I think I know the issue, but without a debug log I'm in the dark.

File manager will always be limited (clearly). For the full experience, you should use the bleeding edge dev branch of RCB (might even have to wait for malte to finish libretro integration, I think it's coming along well though). The key is to force RCB to launch the MAME rom using the right emulator, something filemanager can sometimes mess up on (again, debug logs let me see the trouble it is having). Visual feedback of controllers won't happen in XBMC core, when someone starts working on a python addon I'll co-author and be there to make sure it integrates smoothly.

Thanks for the offers, I'll keep you guys posted on hardware. PIVOS sent Team-XBMC memebers new xios boxes, so don't be surprised if a native android build pops up in the next few weeks Wink


RE: Integrated Video Game Emulators - drivesoslow - 2013-02-20

(2013-02-20, 02:46)garbear Wrote: drivesoslow, keymap contributions are appreciated by all who come after us Smile I don't know the buttons, but maybe map 11 and 12 to "FullScreen" and... something else useful? Eventually we can do "short press 12 to save state" and "long press 12 to load last state" or something.

I watch xbmc.log for the button presses so that I could map the buttons to the functions I like. So far the only button I have gotten to work is quit (mapped to button 7)

http://www.xbmclogs.com/show.php?id=1034


RE: Integrated Video Game Emulators - BLKMGK - 2013-02-20

I still think I'm off in the weeds. I am trying to run SNES ROMs from the file manager - no go. Is this even the correct way to run them? I have gone through the add-on repo (libretro) and added at least two emulators that should respond to SMC files but no-go. I have at least two loaded right now, should I stick to only one? I'm not running RCB at all currently. I guess I just get the sense that despite having compiled I may still have things wrong in my attempts to get things rolling.

Certainly willing to dump logs and turn on debug but I think I need more info on basics before I can be much help!

When it comes to MAME - I'm willing to wait. Lots of work to be done it seems and while I love the old arcade games it seems like that portion could take awhile and not be as high a priority. Plenty of other neat older console stuff to fool around with for sure. Hrm, wonder if we'll ever see an XBOX1 emu, I have PILES of those games around to say the least! Yard sales rock Smile

Appreciate the updates and assistance! if I can get things running I hope to be able to give feedback and provide logs of things you want us to try Smile


RE: Integrated Video Game Emulators - garbear - 2013-02-20

Feed me debug logs!