Forum Replies Created
-
AuthorPosts
-
03/16/2015 at 02:54 in reply to: Easiest way to pull unstable branch of ES into existing RetroPie? #91550sselphParticipant
Did you ever figure this out? I tested it on my rpi2 and cmake worked. Still waiting for the make command to complete. The error makes it sound like your compiler is missing.
Edit:
The make worked. I haven’t run the binary since I didn’t want to have it converting my xml’s in to sqlite, etc.sselphParticipantYou could see if there is anything in ~/.emulationstation/es_log.txt
sselphParticipantI remember reading in another forum post, there can be issues with the amount of RAM required and the number of emulators ES is loading. There was a recent change to reduce the size of background images to reduce the amount required so you could try upgrading it to see. But you’d expect the problem to get better with the rpi2 since it has more RAM.
sudo ~/RetroPie-Setup/retropie_packages.sh emulationstation install_bin sudo ~/RetroPie-Setup/retropie_packages.sh esthemesimple
sselphParticipantIs it possible to symlink the same save for each disk?
$ ln -s rom-disc1.srm rom-disc2.srm $ ln -s rom-disc1.srm rom-disc3.srm
sselphParticipantThere isn’t a way for the script to pull different boxart. The options are pull the image from thegamesdb or use the one available locally. As Floob mentioned, if you are able to get a good set of PAL images you can name them to match the pattern the scraper is using and when it scrapes it will see that the image already exists and skip downloading it.
sselphParticipantThink I found the issue. SMD are supposed to have a 512 byte header but might not always have one. I went ahead and refactored the logic for MD to simplify it and hopefully make it a little more robust. The new version is being deployed now.
sselphParticipantThink I found the issue. SMD are supposed to have a 512 byte header so it shouldn’t be divisible by 16384. I went ahead and refactored the logic for MD. I read the file’s content to try and determine the formatting instead of relying on the extension and make the 512 byte header optional.
Thanks again for testing this.
sselphParticipantI’ve gotten this report from another user with megadrive smd files inside zip files. I’ll investigate it.
sselphParticipantI’m assuming these are .SMD since .MGD aren’t accepted by the emulator.
This could occur if the file’s size wasn’t an increment of 16kB. The SMD file format breaks the file in to blocks of 16k then swaps bits around so that all the even bits are at the beginning of the block and odd bits at the end. So I read the file in chunks of 16k assuming it is possible since all no-intro entries except a couple prototypes have sizes divisible by 16384.
The other possibility is there is a bug. I’ll read over the code and write some tests. In the meantime, do you mind checking the size of a couple of these to confirm they are indeed divisible by 16384.
sselphParticipantI have written a scraper that could do this. The default behavior is to download metadata and use the No-Intro name and existing image if available, but you could trick it in to just generating a xml with the file name and image.
I’ll give the instructions for the rpi if you have a rpi2 just replace rpi with rpi2 in the first 2 commands. Also replace snes with whatever system you want to work with:
wget https://github.com/sselph/scraper/releases/download/v0.6.5-beta/scraper_rpi.zip $ sudo unzip scraper_rpi.zip scraper -d /usr/local/bin/ $ touch /tmp/hash.csv $ cd ~/RetroPie/roms/snes $ mkdir images
Copy all your images into this images folder. The script assumes the file names will be .jpg. If you don’t want to have all your images in the rom folder you can pass the desired image path to both the -image_dir and -image_path parameters.
$ scraper -hash_file /tmp/hash.csv -add_not_found -image_suffix=""
You will see tons of log entries about not finding any hashes. That is expected. When it is finished you should have a gamelist with just the file, image, and name which is the file name minus the file extension. I haven’t tested this but it should work.
sselphParticipantkiller101:
Thanks for testing. I obviously didn’t think this change through all the way. I’ve updated the change so that if something is being written to XML with empty image lines, it will check to see if they exist and add them. This will hopefully cover all the different options.vretro:
My initial thought is that Amiga seems difficult. The hash data I’ve found is for the ipf formatting not the adf formatting and it doesn’t seem possible to convert from one to the other. The HOL site has the best set of data but nothing is keyed off file name. So would end up relying on search similar to the built in scraper which would have similar issues of being unreliable. I’ll continue to look in to it.sselphParticipantAh sorry, my mame handling is completely separate from the console handling. I just implemented the console part. I’ll go back in this evening to add similar code to mame.
sselphParticipantEmulationStation only shows emulators that have ROMs in their folders with the correct extension. So you just need to copy them over and it should work for SNES and N64. The easiest way for me is to just use the windows file shares that the retropie creates. So just browse the network and drop the roms in one of the snes/n64 folders.
The expected extensions are in /etc/emulationstation/es_systems.cfg:
SNES .smc .sfc .fig .swc .zip
N64 .z64 .n64 .v64 zipA few other things:
it issudo apt-get install lxde
it is /etc/network/interfaces
sselphParticipantI added checks to see if the file exists locally even if there isn’t a file on the server. Also added a -download_images flag that you can set to false to force it to only look locally. It is in the process of pushing the new release now.
sselphParticipantAh okay. Let me make a few tweaks to fix that.
sselphParticipantThe scraper will skip the image download if it sees a file named the same as the one it would save so if you have a rom roms/nes/rom.nes and a image named rom.jpg you could place the images in roms/nes/images and add the flags -image_suffix=”” -no_thumb
the suffix defaults to “-image” (rom-image.jpg) which i think I copied from ES’s scraper. no_thumb says skip a thumbnail which isn’t used by ES i just include it since it is part of the gamelist spec. I always convert the image to jpg and don’t include an option to change it right now so if you have png’s you could convert or i can expose a flag to choose the image format.
sselphParticipantthat package is using cmake so you’d have to do:
$ cd vbam-libretro $ cmake .
That should get you going down the right track but I’m sure there will be other issues to resolve like missing package, etc.
sselphParticipantceuse:
I’ve got an open issue on github to allow appending to an existing gamelist and if I get than implemented it will have options on how to handle conflicts.I have a tool that will report missing rom data and create a CSV. If I modified that slightly to add allow you to add your own ID information, that could be used as input to the script to fetch the missing data for those files. It has the side effect of allowing you to send it to me so that I could improve my DB in the future.
zbh23:
Nice I hadn’t seen that. I wrote this because the older version of that script and the ES scraper weren’t very good unless you manually chose everything. Maybe people can use it to find things my scraper doesn’t know about.02/25/2015 at 21:28 in reply to: Easiest way to get different emulationstation branch on RetroPie #89128sselphParticipantThink you’d need to modify it to:
gitPullOrClone “$md_build” “https://github.com/Aloshi/EmulationStation” “gamelistdb”From looking at
https://github.com/retropie/RetroPie-Setup/blob/2ea2182b647c86d2a63266ed61bc057cd6183f67/scriptmodules/helpers.sh#L242Branch defaults to master if it isn’t supplied.
sselphParticipantBasically. I sha1 hash the local rom data after extracting it from the rom files. Not as simple as a hash of the entire file for some systems like nes which has headers and megadrive/n64 which have byte swapping going on. That hash is looked up in a csv I maintain of hash to ID in thegamesdb.
sselphParticipantJust a guess but maybe try __platform=rpi2 sudo ~/RetroPie-Setup/retropie_setup.sh to remind it that you are using a rpi 2.
EDIT:
I just looked on my rpi2 and this variable is already set to rpi2 so probably not that.sselphParticipantGreat to see you got everything working, that is half the fun. Well more than half the fun for me since I end up writing more code to make it “quicker” to setup and maintain my retropie than I do actually playing.
I write the script that does the scraping. An easier method that doesn’t involve filezilla is probably to just download it directly to the pi. This will get the current version for the rpi2 and extract it to the path.
$ wget https://github.com/sselph/scraper/releases/download/v0.6.3-beta/scraper_rpi2.zip $ sudo unzip scraper_rpi2.zip scraper -d /usr/local/bin/
Then you can just cd to the rom folder and run scraper:
$ cd ~/RetroPie/roms/snes $ scraper -thumb_only
sselphParticipantQuestions?
Is the windows machine on wired or wireless?
Are the wired and wireless router the same device?
What is the ip of the windows machine?
Is the pi connected to any kind of guest wireless network?
Do you have issues connecting to/from other devices on the wireless network?Traffic doesn’t seem to be passing to/from the windows machine and the pi. My thinking is they are isolated somehow, either physically or logically.
If your access point and wired router are different devices and you have different subnets, you’ll want to switch your wireless router to bridge mode and disable its DHCP server.
If they are the same device your router may be have some option to disable isolation or bridge the two networkssselphParticipantAlso on my 310 I had to have the switch on the back set to X. I did that a long time ago so I don’t know if that is still the case.
sselphParticipantYou could connect a keyboard and try entering the command
$ emulationstation
If that works then it just isn’t booting to ES and you could fix it by doing:
$ sudo ~/RetroPie-Setup/retropie_setup.sh
Under Setup there is an option to Auto-Start EmulationStationsselphParticipantMy assumptions from reading the previous posts. If they are wrong let me know.
- SSH works when you have a wired connection
- SSH doesn’t work over a wireless connection
- The wireless device can access the internet
- You can’t ping the pi over a wireless connection
Questions:
Is the computer attempting to connect to the pi wired or wireless?Things to Check:
You can try checking your routers settings. Some routers are able to isolate each wifi client from each other and the lan. Look for something mentioning isolation.sselphParticipantOne option that might work is to symlink the ~/RetroPie/roms directory to the usb drive’s roms directory.
something like:$ sudo rm -rf ~/RetroPie/roms $ ln -s /media/usb/roms ~/RetroPie/roms
There is also a USB ROM service under in the setup script
sudo ~/RetroPie-Setup/retropie_setup.sh
Under setup you’ll see the option. This appears to install a hook into the usbmount service so that when you plug in a usb drive it attempts to sync that with your local roms directory. I haven’t used it so don’t know how well it works and it isn’t quite what you wanted.sselphParticipantI don’t want to derail the topic too much but the only things I can think of are that the permissions on the image folders is messed up or there is possibly some odd file naming I am not handling correctly. You can run
sudo ~/RetroPie-Setup/retropie_setup.sh
and under setup there is an option reset ownership/permissions of roms. If that doesn’t work, you could send me a private message with a snippet of your gamelist.xml so I can see a few of the image lines. Also a snippet of the results ofls ~/RetroPie/roms/<emulator>/images
so I can see how the file actually appear in the filesystem.sselphParticipantsudo ~/RetroPie-Setup/retropie_setup.sh
The under Setup there is an option to autostart emulationstationsselphParticipantIn the bash script you’d do:
your_script.py set $command eval $command your_script.py clear
You might have to do
your_script.py set "$command"
Then in your python script you do something like this. sys.argv[1] has the action and sys.argv[2] has the full command in it. So you’d need to try and extract the rom file name off the end but since it could contain spaces the split is tricky. Then you could optionally look up the pretty name from the gamelist. There might be a better way to do the xml look up and there are bound to be typos or errors but you get the idea.
import sys from os import path from AndyPi_LCD import AndyPi_LCD import lxml.etree as ET # Clear the screen if sys.argv[1] == "clear": lcd=AndyPi_LCD() lcd.lcd_init() lcd.led(512) lcd.static_text(1,"c","RetroPie v.2.6.0") lcd.static_text(2,"c","") return 0 # Assume the command was set. command = sys.argv[2] file_path = command.replace('\ ', '___').split()[-1].replace('___', ' ') dir, file_name = path.split(file_path) root = ET.parse('%s/gamelist.xml' % dir) namelcd = file_name for game in root.iter('game'): if game.find('path').text == './%s' % file_name: namelcd = game.find('name').text break lcd=AndyPi_LCD() lcd.lcd_init() lcd.led(512) lcd.static_text(1,"c","Playing:") lcd.static_text(2,"c",namelcd)
sselphParticipantYou have to add the -mame flag, if you are scraping mame to tell it to use that logic vs the original hashing logic. The original script attempts to locate the rom data and hash the contents even inside zip files but with mame I just look at the name of the zip.
sselphParticipantES currently checks the rom folder first. So you can place the gamelist in the same folder as the roms themselves and it should work. The images can be anywhere as long as the gamelist is referencing the correct location. So you’d need to do some find and replace foo in the existing gamelist if you wanted to move images.
The default behavior of my scraper is to run it inside the rom directory and it creates the images and gamelist in that folder so the entire thing can be moved together. This was the opposite of the ES approach where he wanted to keep the rom folder free of extra stuff.
sselphParticipantThe error seems to be because it can’t open
/home/pi/.emulationstation/downloaded_images/fba/1944-image.jpg for writing.
There could be a few causes. You can check to see if the folders exist. It should create them for you but if the folder didn’t exist you’d get an error like that. You could also check the permissions of the folders to ensure that everything is writable by pi.I didn’t specifically add FBA support but if it is in the mamedb.com it might work with the -mame flag.
sselphParticipantIf this approach works a simplification could be to pass $command in the bash script to your script. Since the command typically has the rom path as the last argument you should be able to parse it to extract the currently playing game. Might be easier than trying to figure out which gamelist was updated last. This would be before the eval $command which actually starts the emulation. Then after that you can add a call to the script to update the screen to remove the currently playing game since you have exited.
sselphParticipantThe Emulators are started with the command listed in /etc/emulationstation/es_systems.cfg
You’ll see each system listed with a command that is invoked.
<system> <fullname>Nintendo Entertainment System</fullname> <name>nes</name> <path>~/RetroPie/roms/nes</path> <extension>.nes .NES .zip .ZIP</extension> <command>/opt/retropie/supplementary/runcommand/runcommand.sh 4 "/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/neslibretro/fceumm_libretro.so --config /opt/retropie/configs/all/retroarch.cfg --appendconfig /opt/retropie/configs/nes/retroarch.cfg %ROM%" "neslibretro"</command> <platform>nes</platform> <theme>nes</theme> </system>
So you might be able to modify this script to invoke your script. /opt/retropie/supplementary/runcommand/runcommand.sh
-
AuthorPosts