![]() |
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) |
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 ![]() 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 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 ![]() #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 ![]() ![]() 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 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> 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 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 ![]() 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 ![]() 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 ![]() 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 ![]() 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 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 ![]() 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 ![]() RE: Integrated Video Game Emulators - garbear - 2013-02-20 Feed me debug logs! |