EmulationStation mod
-
@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. :)
-
@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.
-
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]Theme Stuff
- 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:
<alignment>right top</alignment>
or
<alignment>center center</alignment>
- When
<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).
Sorting Stuff
[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.
System View
[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).
Layout Stuff
- 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.
Misc
- 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
-
@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.
-
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!
-
@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.
-
@lilbud Ah, I get ya. Making something like that wouldn't be hard from what I've already done. I may end up adding options for themers to add a system list (like the one in that pic) anywhere they want and give them more grid options such as grid tile spacing, changing the missing box art image, or force grid tile size.
-
@jacobfk20 would be best the other way around- rebasing your changes against the retropie fork rather than rebasing retropie's changes against your repo, that way a full history is retained rather than just 13 commits.
e.g. https://github.com/HerbFargus/EmulationStation/tree/gridview
-
@herb_fargus Yes, github still confuses me. Now it does a little less. Thank you.
-
@jacobfk20 Its always confusing at first - plenty of things about it still confuse me ;) always more to learn
-
@jacobfk20 Upon running your new test build, It deleted all of my game lists. But kept the images. making every entry in ES the default box art, (the nes cart that says ROM)
-
@jacobfk20 said in EmulationStation mod:
Do you have this somewhere else so I can have it for reference?
I have posted some ideas elsewhere, and gotten some ideas from other people, but I've been meaning to make a list like this for a little while now, and this post finally gave me the opportunity. It would be nice knowing how to code this stuff so I could give it go myself, but I'm going to stick with front end development for now.
-
@lilbud I'm sorry I just single handily destroyed your gamelists. That kinda bums me out but thank you for being brave and trying it. I'm going to try a fix it now.
-
@jacobfk20 I'm just lucky I put off moving my MAME roms on to the pi. Good thing I waited, I have a whole set of 1400-something
-
Why don't you just copy them onto your Pi instead of moving them?
That's what I do just in-case something bad happens, like having your gamelist deleted for instance...
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.