@lilbud Do you know if retrofx is open source? I tried googling it but came up with a project that overrides graphics and sounds in ROMS instead of that launcher. I wanted to create a launcher using JavaFX too and I'm just curious to see how this guy did it.
The idea of coding in Java for the Pi is so much more appealing to me because you can compile on a PC and just upload the .jar files to the Pi, taking just a few seconds. Vs the 17 hours it's supposed to take to compile EmulationStation's C code...
jacobfk20 last edited by
@SimonBelmont On the pi3 it only takes about an hour to compile ES from scratch. Then after you have it built it will only recompile what has been changed. Build time is usually only twenty seconds for me. :)
@InsecureSpike Making System View more customizable would be nice. I may look into that in the future.
@ben_thatmustbeme I don't mind working together. I'll take a look at your fork as I'm looking through Retropie's fork. I'm currently getting up to date with Retropie's latest.
@jacobfk20 Well that's not bad at all then. As I mentioned in my first post, I was in the process of downloading the EmulationStation code just as you announced your version. I was in dependency hell, trying to find them all and download them. I kind of hate myself for saying this, but C needs a Maven equivalent. After I saw you had already done most of what I wanted to do I just gave up and downloaded your version :)
One feature you haven't added yet that I definitely wanted is to replace the XML "database" with a real database system. I think performance would greatly improve for people with large libraries.
ben_thatmustbeme last edited by
meleu last edited by
if anyone has any other things they want to note, please do so
did you see this thread?
@SimonBelmont if you look at the retropie fork there is a branch with a sqlite backend instead of xmls. Still needs testing but it's there if you want somewhere to start
@herb_fargus I will definitely check that out. Thanks!
InsecureSpike last edited by
@SimonBelmont From what I have seen. RetroFX died with the old forum. Nothing but concept art. But I wonder if that could now be achieved with this ES
@herb_fargus What is the difference between xml and sql?
@lilbud XML is a verbose data format. Because it is verbose it is easy for humans to read and understand, as far as data files go.
SQL is not a format, but rather a language that you use to look up information in a database. A database in its simplest can be thought of like a dictionary. Each row of data has indexes that allow you to more or less jump straight to it. Like if you want to look up "zebra" you know to jump to the back of the dictionary. You don't have to look at every word from A-Y beforehand.
XML is not ordered in any particular way. So if you wanted to find "zebra" it might be the first word, the last word, or any word in between! Worse than that, you first have to read in the whole XML file and load the contents in memory to be able to walk through the data. As you load more and more data into an XML file it takes longer to read, takes up more memory, and takes longer to walk through it and find data. Whereas with a database, whether you have one row of data or a million, the amount of memory it uses and the amount of time to find data remains fairly constant.
@SimonBelmont well not to split hairs but technically xml would be a language too as it stands for extensible markup language ;)
@herb_fargus Well you got me there. But the only time I would really consider XML a language is when it's an Ant script. :)
ben_thatmustbeme last edited by
@SimonBelmont definitely a language. But everything you said is accurate for any plaintext file. XML, html, yaml, CSV. It's really just a matter of plaintext format vs binary format. Binary let's you do things like jump around the file, create indexes, etc. But you sacrifice the ability to easily edit it by a simple text editor. There are other things like,you need to have more tooling for SQL (though that's arguable). Then there are problems of SQL version updates require database updates.
I wonder if it's realistic to use XML as the canonical format and then just do an md5 of the file. If the file has changed since last time ES ran, you parse it and rebuild the SQL db. It's a bit more work and a little slower on those initial loads, but does get benefits of both options.
mattrixk last edited by mattrixk
If it's not too forward, I actually have a list of feature requests or ideas that I want to put out there:
[I'm sorry, this ended up getting pretty long]
- We need to be able to set the Gamelist as lowercase. At the moment it's stuck in uppercase no matter what we choose (at least it is for me, I don't know if any other theme makers have been able to change that).
- Datetime metadata values can only be left aligned. I'd like center and right align to be available for them.
- alignment in general. You only get left, center or right, and if you choose center, if goes horizontal and vertical. I'd rather if you could choose X and Y alignment individually, maybe like this:
<text name="md_description">is used you can set a size of the text box and the content will scroll within the boundary of the box, but when you use a generic
<text name="blah">, the content will break the bounds of the box and show above and/or below it, instead of scrolling.
- It would be nice to have the option to output all the metadata into a single text field. That could make displaying it neatly much easier (alignment, line height, position, etc). Maybe add in options for bolding either the label or the value, or adding line breaks after each value, or after specific values, or even after each label as well as each value.
- More elements need the
<origin>property (text, textlist, ninepatch, rating, datetime).
[Some of these have probably been mentioned before, on this post or others]
- Setting favourites, then being able to view all favourites in a single list.
- Sorting options (view by genre, or number of players, favourites, etc).
- I'm wondering if it's possible to set up tags... basically create our own custom metadata, which we can then view in a big list. eg:
-- Create a tag called 2_Player_Brawler.
-- Add that tag to Alien vs Predator and The Punisher in Final Burn Alpha, Streets of Rage for Mega Drive and Turtles In Time for SNES (among others).
-- I can then sort for just that tag, and it will give me a list of all the games with that tag, no matter what System they are on.
-- You can then sort them by alphabetical or by system.
[The "front page" of Emulationstation so to speak]
- I'm like many other theme makers, and wish there was a way we could do something with the big white carousel (change the colour, size or position). I think the simplest option might be to make it so the carousel and the bar beneath it are changeable in the theme. Something like this:
<carousel name="system_logos"> <color>ffffff00</color> <size>1 0.2</size> <pos>0.5 0.5</pos> <origin>0.5 0.5</origin> </carousel>
- Maybe make it so you can choose how many systems show on screen at once (currently 3, but maybe make them smaller so 5 can show).
- Add the ability to change the carousel to a gameslist (I posted a picture of what that might look like in my last post on this thread).
- Someone mentioned earlier of making the whole thing more Kodi-like, and one thing that Kodi does well is being able to choose different layout views. Eg:
-- Wall is just a Grid View with large images with little space around them.
-- Info Wall is a Grid View, but 1/3 of the space shows the metadata for the selected file (image, description etc).
-- There are some different List Views, one like our current Emulationstation Detailed View, another which gives each file its own full width box with image on the left and file name and metadata on the right, and then lists those boxes down the page, fitting in maybe 6-8 boxes.
-- Carousel View with box art in the middle and metadata above/beneath.
- Could there be a way that when you hit the 'select' button when on a console page, there is the option to choose a layout for that console? The list would only show the layouts that the Themer has created, so that way the Themer could make as many or as few as they wished.
- Another thing I like that Kodi does is the big image background. If I'm in movies and I'm focused on Star Wars, it shows me the box art and metadata, but it also changes the background to a large screenshot or splashscreen of that movie. I know the Simple theme did this with big background images behind the Systems, but would whitescreen with more than 10 systems, but Kodi on RPi can do it, so I don't see why Emulationstation wouldn't be able to as well. (Also for this to happen, the scraper would need to scrape more than just box art.)
- Maybe it would be possible to have a Theme Options menu item in the RetroPie Settings, where you could set things like default layout, highlight colour, or choose between a System carousel or System gamelist.
- The Emulationstation menus don't cycle from top to bottom (ie: pressing up from the top menu item doesn't send you to bottom menu item). I would love it if they did. However, @Zigurana mentioned on this forum post that there would be some conflict with the controller input wizard.
- I use @meleu's RetroPie Joystick Selection because my plugged in keyboard/remote always takes first player away from my bluetooth PS3 controllers. I would love to see something like this become part of the core Emulationstation.
These are all I can think of for now, but I'm sure there are more. I'm not a developer, so I don't know how hard or easy any of these would be to implement, but I just wanted to have them down somewhere. Maybe they will spark some ideas for someone that knows how to do this kind of thing.
Edit: spelling and grammar.
Edit: added another idea or 2.
@mattrixk I would like this to become a possibility
mattrixk last edited by mattrixk
@lilbud So you'd just use up/down/left/right to highlight games, with background image changing depending on what game you have highlighted, and then when you want to change systems, you can eiter scroll to the top bar and use left/right, or just use the L1/R1?
You'd have to add in some form of text counter so if the file name became too long it would just turn into '...' instead of running over.
This just about does away with the need for a System View entirely, but I would still like to have it because I like the idea of seeing System information and images on the System View.
Edit: I just realised you would have to make the box art holder square to that it accommodates all 3 box art shapes: square, portrait and landscape. Or I suppose you could code 3 different layouts and use them for the specific systems, but that sounds like more work.
@ben_thatmustbeme I suppose it depends on how you view the Raspberry Pi. If it is a tiny Linux computer that you just happen to hook up to your TV, then using XML files makes sense. You're going to be viewing and updating them fairly often so it's important to be human-readable.
My dream for the Pi is as a customizable console. You edit some files initially to get it running, but from that point forward it's a console. 10 foot UI with no tiny text that you have to stand right next to the TV to even see. No keyboard to edit said tiny text. No ssh'ing into it to edit files. Maybe a web app that you access from your PC or tablet if you really have to edit data not conducive to a 10 foot UI.
I think there is a case to be made either way. The Pi is meant to be a project board after all. You are meant to tinker. But I don't want to... I'll gladly tinker in source code but once it is compiled and running I really don't want to be that close to the raw data. I just want to use it and play my retro games.
jacobfk20 last edited by
I just finished getting my ES fork caught up with RetroPie's. I have uploaded a test build you can grab. I must highly recommend you backup before copying it in though. Grab it from my google drive if you're brave enough to test. Please try to submit issues at github https://github.com/jacobfk20/EmulationStation-RPiE. You can just leave them here or email/pm me. Include that you're using the test build.
@lilbud This design reminds me of the xbox dashboard. I really like it. Does this already exist, or did you throw it together?
@mattrixk That is a long list! lol. No worries though, I love lists. Do you have this somewhere else so I can have it for reference? I'm currently trying to figure out my next step. Though adding tags and favorites could be it.
XML is a language too!
lilbud last edited by lilbud
@jacobfk20 someone posted it on the old forum. Said he was a Java developer interested in working with ES. Nothing came of it except for concept art.