Video Preview in EmulationStation
-
@fieldofcows I'm trying to compile to windows from Linux Lite (Ubuntu 16.04.1 LTS) using Mingw64.
First problem i encountered is Mingw64 can't find freeimage so i did this change on CMakeLists.txt:
#finding necessary packages
#-------------------------------------------------------------------------------
if(${GLSystem} MATCHES "Desktop OpenGL")
find_package(OpenGL REQUIRED)
else()
find_package(OpenGLES REQUIRED)
endif()
find_package(Freetype REQUIRED)
find_package(SDL2 REQUIRED)
find_package(Boost REQUIRED COMPONENTS system filesystem date_time locale)
find_package(Eigen3 REQUIRED)
find_package(CURL REQUIRED)
find_package(VLC REQUIRED)#add ALSA for Linux
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
find_package(ALSA REQUIRED)
endif()FIND_PATH( FREEIMAGE_INCLUDE_PATH FreeImage.h /usr/include /usr/local/include /sw/include /opt/local/include DOC "The directory where FreeImage.h resides") FIND_LIBRARY( FREEIMAGE_LIBRARY NAMES FreeImage freeimage libfreeimage libfreeimage-3.15.2 PATHS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /sw/lib /opt/local/lib DOC "The FreeImage library")
#-------------------------------------------------------------------------------
Now i have not freeimage error while compiling, but any message about freeimage. I'm sure latest version of freeimage is installed.
Now Mingw64 can't find vlc library, and i don't know what to do or where to point. I have installed libvlc-dev.
This is my Mingw64 script:
cmake -DFREETYPE_INCLUDE_DIRS=/usr/include/freetype2/ -DFREETYPE_LIBRARY=/usr/include/freetype2/ft2build.h -DFREEIMAGE_INCLUDE_DIRS=/usr/include/ -DFREEIMAGE_LIBRARY=/usr/include/FreeImage.h -DSDL2_INCLUDE_DIR=/usr/include/SDL2/ -DSDL2_LIBRARY=/usr/include/SDL2/SDL.h -DBOOST_LIBRARYDIR=/usr/lib/x86_64-linux-gnu/ -DCURL_LIBRARY=/usr/include/curl/curl.h -DVLC_INCLUDE_DIR=/usr/include/vlc/ -DVLC_LIBRARY=/usr/include/vlc/libvlc.h -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=/usr/bin/x86_64-w64-mingw32-c++
Any help whould be appreciate, thanx.
#-------------------------------------------------------------------------------
-
@Nismo Is MinGW64 a supported build environment for EmulationStation? I don't know much about it but I would have thought you would need to build all the dependencies (including libvlc) using the mingw64 toolchain for this to work rather than trying to build against the linux headers and libraries.
I was hoping to get a windows environment setup over the weekend but I didn't find much time. I did manage to get it nearly working though using Visual Studio 2015. It all builds but I'm getting link errors. It shouldn't take much to get it working except some of my time of which I don't have much!
-
@fieldofcows if you read about mingw64 it's not much difference about compiling for windows from ubuntu, anyway if you need a PC with windows to make test and make an windows environment setup i can let you use mine trought teamviewer. No problems with that. Mi PC is your PC. If i can contribute with my computer, i'm happy to help with the project.
intel core i7 4790k 8gb ram. Windows 10. You will work with an 250GB SSD because all my HDD are full.what do you think?
-
@Nismo That's a kind offer however I've got development systems coming out my ears! When working on EmulationStation I build on my Linux system before copying the source over to RPi and building on that. The only reason I'm trying to setup a Windows build is to provide a pre-built binary for anyone that wants to try it on Windows.
If you have an Ubuntu system, why don't you try building the native Linux version rather than waiting for a Windows build or messing about with MinGW?
As I said, I'm nearly there and will drop a some prebuilt binaries somewhere so people can pick them up and try out the video preview.
-
@fieldofcows I just install linux only for compiling... because for compiling in windows i need to install a lot of things, so i installed linux in a pendrive only for compiling but not successful.
Also I want to compile the program because i want to translate to my native languaje. Whould be great if ES can read strings from an strings.xml file so we can translate it for the kids.
The only reason i use windows is because of the games... you know... origin.. uplay... steam...
My pc is your pc if you need it. Regards.
-
@fieldofcows ok i finally managed to ming64 can find libs.
For who interested you need to replace FindFreeImage.cmake and FindVLC.cmake inside EmulationStation-master\CMake\Packages with the new ones i provide to you:
http://www.mediafire.com/file/moe07cryzc9i1ew/Findfreeimage_%26_findvlc.rar
Now finally starts compilling but lot of errors and no success. This is the console log:
http://www.mediafire.com/file/sbusqdaw19p3up9/console-log.txt
Any help would be appreciated.
-
@fieldofcows take a look at this source fork, this guy is mantaining support and has automated builds: https://github.com/Herdinger/EmulationStation maybe he can merge your commits and you don't need to compile anything and we can take advantage of the updated code.
I finally tried to compile emulationstation on windows, but i have a lot of errors when compiling:
EmulationStation-master\es-core\src\platform.cpp(87): error C3861: 'open': identifier not found
EmulationStation-master\es-core\src\platform.cpp(89): error C3861: 'close': identifier not foundEmulationStation-master\es-core\src\Util.cpp(105): error C2440: 'initializing' : cannot convert from 'const boost::filesystem3::path::value_type *' to 'std::basic_string<_Elem,_Traits,_Ax>'
4> with
4> [
4> _Elem=char,
4> _Traits=std::char_traits<char>,
4> _Ax=std::allocator<char>
4> ]
4> Ningún constructor ha podido aceptar el tipo de origen o bien la resolución de sobrecarga del constructor era ambigua
4>..............\EmulationStation-master\es-core\src\Util.cpp(106): error C2440: 'inicializando' : no se puede realizar la conversión de 'const boost::filesystem3::path::value_type *' a 'std::basic_string<_Elem,_Traits,_Ax>'
4> with
4> [
4> _Elem=char,
4> _Traits=std::char_traits<char>,
4> _Ax=std::allocator<char>
4> ]
4> No constructor could take the source type, or constructor overload resolution was ambiguous
4> HelpComponent.cppEmulationStation-master\es-core\src\Window.cpp(248): error C3861: 'round': identifier not found
EmulationStation-master\es-core\src\Window.cpp(249): error C3861: 'round': identifier not found
EmulationStation-master\es-core\src\Window.cpp(344): error C3861: 'count_if': identifier not foundAnd more similar errors.. i think the code needs to be a little modified to compile on windows, but i'm not a programmer so i'm stuck at this point.
I'm able to compile if the source code is ok.
I've uploaded the full log for who interested: http://www.mediafire.com/file/n974fz3sp7z2cq3/compilation-log.txt
-
@Nismo So this is the problem it seems with EmulationStation - Aloshi isn't maintaining it anymore and there are a number of branches, most of which have also been fairly static for a while. I chose to fork the RetroPie branch because I ultimately want this to work on raspberry pi. I guess that branch doesn't build on Windows.
I'm happy to submit the changes to the Herdinger fork but it seems like that one too hasn't been updated for a while.
-
Right - I have a working Windows build environment as well as Linux and RPi. I'll see if I can get some binaries built and put them somewhere for people to try shortly.
-
@fieldofcows Awesome!! Thank you very much for your effords.
I'm very curious to know how you finally make the code compile on windows without errors.
Thanks again, regards.
-
Indeed! If you have a nice list of actions you took in order to build on Windows, that would help me out tremendously!
-
@fieldofcows Please if you make a windows build doesn't use Herdinger's fork, use your own source,
because i was testing Herdinger's build and he made some commits where emulationstation save config files and now i can't run it portable from a pendrive, i need to go back to old exe.Said by Herdinger on 19 Feb:
"Right now I changed the config directory to something sensible on every platform (.config/emulationstation on linux, Appplication Support or .config/emulationstation on OSX and My Documents on Windows) so you have to move your config there if you want to use the fork."Source: https://github.com/Aloshi/EmulationStation/issues/563
So please use your own fork. Thanks.
-
@fieldofcows Ok no problem with the fork from Herdinger, seems i fixed the problem by editing es_settings. There are some flags there, one of them is for no splash screen... lol
Sorry for the inconvenience. -
@fieldofcows Any update? :D
-
@robertybob Hi, yes - I've been a bit busy with work and family stuff :) I've just finished setting up a Windows 10 VM from scratch and configured it for Windows builds of ES. If anyone is interested I'll start a new topic on how to do this and build my fork.
What is the next step? The video preview is working and in my github fork. I have it installed on my rPI with about 800 videos. I can build binaries for Windows, rPI and Linux if anyone is interested. What I may work on next is modifying the ES screensaver to pick and play a random video instead of just dimming the screen. Any requests for other similar changes?
I'm quite keen to keep working on ES now I've started but wish there was a common repository for everyone to work in. Does anybody have any idea what the way forward is for this? Herdinger's fork?
-
@fieldofcows I whould like to try the windows binary build.
And yes whould be nice if you have enought time to start a new topic on how to do this and build your fork.
The screensaver is a good idea.
Herdinger's fork is good because he implemented some good things and it's more updated, with the advantage that he said that keep in mind his code for cross compiling without headhaches.
Can emulationstation locate the videofiles with the same name than a rom and add it to gamelist automatically? for example place videos on :
home\emulationstation.emulationstation\downloaded_videos\snesOr did you add those 800 videos one by one????
I don't know if it's very difficult but i whould like the strings in a sepparate xml file for translation in other languages, so emulationstation easy to use for the kids. Almost all the strings are in "gui" folders in the source code, and not so much strings to translate.
Also i whould like (if it's possible) to get the music in menus fixed, till now only scrollsound is working, but no system sound or select sound, back sound, etc.
And one more thing, the scrapper "the archive" isn't working, could be changed for better one like www.screenscraper.fr?
Yeah, I know, too much wishes... I'm waiting for the windows build.
Thanks for your work.
-
@fieldofcows Do you think your build would be compatible with the grid-view one being worked on by @jacobfk20 ? Because I think his one is updated more frequently than any other (Herdinger's was last updated in JULY!) and also it would be a great combination (being able to choose between a video preview or a grid of artwork).
I'm happy to test a Windows build :) I'm on Win 7.
Edit on the topic of requests, this would be a big one of mine - the option to disable the Emulationstation splashscreen!
https://github.com/Aloshi/EmulationStation/commit/2dffd09f3a6074991f6c2ed290f8b226e20ded1b
..at least that's what I think it is. -
@Nismo @robertybob Right - I've built a Windows version and tested it on my system and it works fine. You can give it a go if you want. Download it from here:
https://github.com/fieldofcows/EmulationStation/releases/tag/v0.1-beta.1
A few things to note:
- It's getting a bit late so I haven't tested it on a non-dev system so it is possible I've missed a DLL or two out. Let me know what happens when you run it
- The unzipped directory contains the exe, all DLLs and a plugins subdirectory. The plugins directory contains VLC plugins that must be in a subdirectory from where emulationstation.exe lives (like it is when you unzip it).
- I've included a sample configuration directory. You'll need to move it in the right place for it to work, as per usual.
- Please don't try this on a configured system - it might destroy your gamelists.xml, etc. It's for testing only!
The videos and marquees should support relative pathnames from the ROMs directory (see the sample theme that I've included) however this doesn't seem to work properly on Windows at the moment so you need full paths. Relative paths work on Linux and raspberry pi. I'll try to fix this soon.
I generated my game list by writing a custom scraper from the Coin Ops distribution. I didn't have to set it all up by hand :D
-
@robertybob Herdinger's fork already have the option to disable emulationstation splashscreen.
Apart from that jacobfk20's fork can't work in windows, like he said here:
"This version of ES will not run on Windows, but it will run on ANY linux distro. I could make it run on Windows but will have to omit some features."
Source: https://retropie.org.uk/forum/topic/3121/emulationstation-mod/8
That's because i said to use herdinger's fork, because we all (windows, linux) can benefit from the code updates. If he can implement grid view in his code whould be good, but if not we still can receive more updates.
Regards.
-
@fieldofcows OMG!! thank you very much, whould be nice to have relative path because i use it portable, but no problem, i'll test.
Can you share your scrapper?
Thank you, thank you.
Edit: seems that relative path is working at first boot but when you exit emulationstation it overwrites the gamelist.xml with the absolute path for videos and marquees.
Videos still sound even if you start game but only for about 5 or 10 seconds.
Seems like if you go back to systems the video sound doesn't stop.
It's too late here, i'll test better tomorrow.
Thanks.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.