GithubHelp home page GithubHelp logo

scottrice / ice Goto Github PK

View Code? Open in Web Editor NEW
833.0 833.0 95.0 11.07 MB

Application to automatically add ROMs to Steam

Home Page: http://scottrice.github.io/Ice/

License: MIT License

Python 100.00%

ice's People

Contributors

craigguest avatar geraldhumphries avatar justin8 avatar scottrice avatar sharkwouter avatar spongeroberto avatar y4le avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ice's Issues

Stop Ice from running if Steam is open

Ice wont work if Steam is open, and I can mention it again and again, but not everyone will read what I write (in fact, most WONT read what I write). So stop Ice from running if Steam is currently running.

Remove 'New User' setup

If an N64 game is run by someone who has never used Project64 before, a bunch of things happen. Most notably, their 'first use' wizard pops up and the user has to choose a language etc.

I need to streamline this process. I will try to set up defaults that Ice can use and have those entered into the registry if those values don't already exist (aka, if the first time the user uses Project64 is with Ice, then I will handle setting defaults. If the user has run Project64 before, then I won't do anything).

Reenable Wii support

Even though my main use case is with an Xbox 360 controller, I shouldn't ignore Wii games. There is no reason someone couldn't have a wiimote sitting next to their 360 controller in case they start playing Wii games. I should reenable adding Wii ROMs.

Search for Steam Installation Location

Search the user's filesystem for the Steam Installation Location. This is mainly a problem on Windows, when Steam stores the userdata directory INSIDE their install directory. For Mac, the userdata directory is always in the same location. Linux I am unsure of.

Pull artwork from the web

Set up Ice to pull artwork from a predetermined website. Maybe make the website something that is configurable?

Move creation of supported consoles array

When #27 is completed, the list of emulators will be determined at runtime. Things determined at runtime can have errors. Problems with configuration, problems with loading, etc.

The bottleneck of this process is the supported consoles array. This array is created when console.py is imported, not when any of its code is run. Because of this, throwing a ConfigError doesnt get caught by my main try/except in ice.py.

supported_consoles should be created at runtime to allow us to throw errors and such.

Add emulator download location (and folder information) in config.txt

Currently, the download location for emulators is set in the python file itself, and is a constant. The relative location of the executable inside the zip file is also a constant. Move these into config.txt, and let the user pick where to download them.

I think these should be set on a per emulator basis, so config.txt would have something like...

# The path components of relative-exe-path should be separated by commas, so
#   Winbsnes\bsnes.exe 
# should be represented as
#   Winbsnes,bsnes.exe
[Windows-bsnes]
location=http://somewhere.com
relative-exe-path=Winbsnes,bsnes.exe

Different 'patches' for different controllers

Ice was built with an Xbox 360 controller in mind. It is possible though that the user will want to use other controllers, and so I should let them download 'patches' that will update all of the emulators to use the correct control setup.

This will be difficult with something like Project64, which stores it's data in the registry. I also don't know how I will deal with emulators that keep it in a file. Maybe I can write some small scripts to go find and replace the text?

Use registry for Steam Location

According to a tip on Reddit (thanks Conk1!), Steam stores the path of the exe in the registry at
HKEY_CURRENT_USER\Software\Valve\Steam in a key called SteamPath. Use that instead of making the user do it.

Add Configuration File for Ice

Add a configuration file for Ice. There should be two files,

  • config.txt - Information on how Ice should run. Possible ideas for options would be users to run Ice for, web url to request images from, and emulators to use
  • controls.txt - stores the control scheme to set for the emulators (Ice should ship with a controls.txt suitable for an Xbox 360 controller)

Opens in Windowed Mode

I'm assuming this has to do with the registry, but during set_control_scheme, Project64 should also have its 'fullscreen' value set to true.

Make the 'Set Steam Installation Location' message not show up as an error

Currently, when the user hasn't set a correct Steam Location in config.txt (normally because they don't know they have to do that), it will show up as an error.

Having an error display for any user that has a non-default steam location seems like a pretty bad user experience. As such, I would like this message to not show up as an error.

Unable to setup Project64

Right after Ice downloads Project64, it tells me:
[10/03/13 15:35:46] There was a problem with '[Windows Emulators] N64' in config.txt
[10/03/13 15:35:46] Could not load emulator. Check your spelling, and make sure the emulator is supported for your console
I cannot get past this, I have tried reinstalling ice several times.

'NoneType' object has no attribute 'exe'

Encountered this error with both the windows binary and running source:

[10/03/13 03:31:17] 'NoneType' object has no attribute 'exe'
Traceback (most recent call last):
File "ice.py", line 50, in
main()
File "ice.py", line 36, in main
rom_manager = IceROMManager(shortcuts_manager)
File "C:\Users\Meryl\Desktop\Ice-master\ice\rom_manager.py", line 49, in init
if self.is_managed_by_ice(shortcut):
File "C:\Users\Meryl\Desktop\Ice-master\ice\rom_manager.py", line 61, in is_managed_by_ice
return filesystem_helper.app_data_directory() in shortcut.exe
AttributeError: 'NoneType' object has no attribute 'exe'

Running on Windows 8.

Few other users on Reddit with the same issue: http://www.reddit.com/r/Steam/comments/1nmee5/was_looking_for_a_romemulator_frontend_for_steam/cck0b97

http://www.reddit.com/r/Steam/comments/1nmee5/was_looking_for_a_romemulator_frontend_for_steam/cck3403

http://www.reddit.com/r/Steam/comments/1nmee5/was_looking_for_a_romemulator_frontend_for_steam/cck2uw3

Can't Seem to get the Executable version of this application to work.

I have tried to get it operating but all i ever see is command prompt blink on quickly and then disappear just as quickly, i have set the roms up properly, and as far as i can tell it should work but when i open up steam it doesn't have the games added.

How do i get the ice.exe to operate correctly?

sorry for noob.

Remove region information from ROM name

Some ROMs contain region information at the end of the filename. For example, downloading Fire Emblem Path of Radiance might show up as something like

  • Fire Emblem Path of Radiance (USA)

The filename shouldn't change, but in Steam it should show up as

  • Fire Emblem Path of Radiance

Let user know if Grid Image Source is invalid

Before trying to download all of those images, check to see if the Grid Image Source is valid. I define a valid source as once that responds to requests. I dont know if I could ping the URL or something, but that would be ideal.

If the source isnt valid, dont bother attempting to download grid images.

Dolphin saves Memory Cards to my desktop

Dolphin's default save location is on my desktop. This is an inconvenience for me, but for other people, it would end up creating all of the subfolders (including a 'Scott.Scott-PC' folder inside of 'Users'). This is not visible at first, but could be EXTREMELY confusing for people. Plus, I'm sure people who delete it would be pretty pissed when they lose their save files.

Allow user to specify which emulator they want to use

For example, in config.txt you could have an 'emulators' section. This would let you specify which emulator the user wants to use for a system.

Example config.txt contents

[Emulators]
# Available Emulators: Nestopia, bsnes
NES=Nestopia
# Available Emulators: ZSNES, bsnes
SNES=ZSNES
etc...

Maximum Recursion Depth error with large romsets.

Python returns an error when working with particularly large filesets (over 1000).

error: maximum recursion depth exceeded while calling a python object

There is a limit on how far recursion can run in python (default is 1000).

I believe this is happening while it's parsing the steam shortcuts.

You can set recursion limit with sys.setrecursionlimit however a method that doesn't need this to be set would probably be best.

GBA Emulator issue

Retried the newest version, but I'm having a trouble with the last emulator.

LOG FILE

[10/03/13 12:08:17] =========================Starting Ice
[10/03/13 12:08:17] Downloading http://consolegrid.com/ice_emulators/Winbsnes.zip
[10/03/13 12:08:19] Finished downloading http://consolegrid.com/ice_emulators/Winbsnes.zip
[10/03/13 12:08:19] Unzipping c:\users\brad\appdata\local\temp\tmpsm2ua6.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:19] Found zip file Winbsnes.zip
[10/03/13 12:08:19] Downloading http://consolegrid.com/ice_emulators/WinProject64.zip
[10/03/13 12:08:22] Finished downloading http://consolegrid.com/ice_emulators/WinProject64.zip
[10/03/13 12:08:22] Unzipping c:\users\brad\appdata\local\temp\tmpktq8u7.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:22] Downloading http://consolegrid.com/ice_emulators/WinDolphin.zip
[10/03/13 12:08:33] Finished downloading http://consolegrid.com/ice_emulators/WinDolphin.zip
[10/03/13 12:08:33] Unzipping c:\users\brad\appdata\local\temp\tmppaxhkm.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:35] Configuration missing key for Wii on Windows
[10/03/13 12:08:35] Downloading http://consolegrid.com/ice_emulators/WinePSXe.zip
[10/03/13 12:08:36] Finished downloading http://consolegrid.com/ice_emulators/WinePSXe.zip
[10/03/13 12:08:36] Unzipping c:\users\brad\appdata\local\temp\tmphiz3x3.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:36] Downloading http://consolegrid.com/ice_emulators/WinPCSX2.zip
[10/03/13 12:08:45] Finished downloading http://consolegrid.com/ice_emulators/WinPCSX2.zip
[10/03/13 12:08:45] Unzipping c:\users\brad\appdata\local\temp\tmp7dtjot.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:45] Downloading http://consolegrid.com/ice_emulators/WinGens.zip
[10/03/13 12:08:49] Finished downloading http://consolegrid.com/ice_emulators/WinGens.zip
[10/03/13 12:08:49] Unzipping c:\users\brad\appdata\local\temp\tmpdgv4dh.zip to C:\Users\Brad\AppData\Local\Scott Rice\Ice\Emulators
[10/03/13 12:08:50] No user supplied name for Dreamcast
[10/03/13 12:08:50] Found zip file Winbsnes.zip
[10/03/13 12:08:50] !!!Error was Users' fault. Don't worry about it
[10/03/13 12:08:50] There was a problem with '[Windows Emulators] GBA' in config.txt
[10/03/13 12:08:50] Could not load emulator. Check your spelling, and make sure the emulator is supported for your console
[10/03/13 12:08:50] !!!

CONFIG FILE

Replaced # with * for formatting issues

[Storage]

  • The path to place your ROMs Directory. This can be in any drive or anywhere,
  • as long as the full path is specified. Use ~ to represent your home folder
  • (for example, C:\Users\Scott)
    *
  • Ice will place a folder called ROMs at the specified location.
  • Example:
  • ~ => C:\Users\ROMs
  • C:\ => C:\ROMs
  • C:\Program Files => C:\Program Files\ROMs
  • D:\Steam => D:\Steam\ROMs
  • D:\ROMs => D:\ROMs\ROMs <-- It will work, but looks awful
    ROMs Directory=~

[Grid Images]

  • The website listed should provide the grid images used by Ice. This URL will
  • most likely need to be provided by the website itself, as it is fairly specific.
    *
  • The default is ConsoleGrid (consolegrid.com/api/top_picture)
    *
  • If this field is left blank, Ice will not attempt to download images
    Source=consolegrid.com/api/top_picture

[Windows Emulators]

  • Available Emulators:
  • bsnes
    NES=bsnes
  • Available Emulators:
  • bsnes
    SNES=bsnes
  • Available Emulators:
  • Project64
    N64=Project64
  • Available Emulators:
  • Dolphin
    Gamecube=Dolphin
  • Available Emulators:
  • ePSXe
    PS1=ePSXe
  • Available Emulators:
  • PCSX2
    PS2=PCSX2
  • Available Emulators:
  • Gens
    Genesis=Gens
  • Available Emulators:
  • None
    Dreamcast=
  • Available Emulators:
  • bsnes
  • VisualBoyAdvance
    Gameboy=bsnes
  • Available Emulators:
  • VisualBoyAdvance
    GBA=VisualBoyAdvance

[OSX Emulators]

  • Available Emulators:
  • Mednafen
    NES=Mednafen
  • Available Emulators:
  • Mednafen
  • Snes9x
    SNES=Snes9x
  • Available Emulators:
  • None
    N64=
  • Available Emulators:
  • None
    Gamecube=
  • Available Emulators:
  • None
    PS1=
  • Available Emulators:
  • None
    PS2=
  • Available Emulators:
  • Mednafen
    Genesis=Mednafen
  • Available Emulators:
  • None
    Dreamcast=
  • Available Emulators:
  • Mednafen
    Gameboy=Mednafen
  • Available Emulators:
  • Mednafen
    GBA=Mednafen

[MacSnes9x]
download-location=http://consolegrid.com/ice_emulators/MacSnes9x.zip
relative-exe-path=MacSnes9x/Snes9x.app

[MacMednafen]
download-location=http://consolegrid.com/ice_emulators/MacMednafen.zip
relative-exe-path=MacMednafen/mednafen

[Winbsnes]
download-location=http://consolegrid.com/ice_emulators/Winbsnes.zip
relative-exe-path=Winbsnes\bsnes.exe

[WinProject64]
download-location=http://consolegrid.com/ice_emulators/WinProject64.zip
relative-exe-path=WinProject64\Project64-launcher.exe

[WinDolphin]
download-location=http://consolegrid.com/ice_emulators/WinDolphin.zip
relative-exe-path=Dolphin\Dolphin.exe

[WinePSXe]
download-location=http://consolegrid.com/ice_emulators/WinePSXe.zip
relative-exe-path=WinePSXe\ePSXe.exe

[WinPCSX2]
download-location=http://consolegrid.com/ice_emulators/WinPCSX2.zip
relative-exe-path=WinPCSX2\pcsx2-launcher.exe

[WinGens]
download-location=http://consolegrid.com/ice_emulators/WinGens.zip
relative-exe-path=WinGens\gens-launcher.exe

[WinVisualBoyAdvance]
download-location=http://consolegrid.com/ice_emulators/WinVisualBoyAdvance.zip
relative-exe-path=WinVisualBoyAdvance\VisualBoyAdvance.exeyAdvance.exe

Emulators do not appear to be downloaded correctly

When I try to run ice.exe, the following log is produced:

[10/03/13 11:48:26] Downloading https://dl.dropbox.com/u/2862706/ice_emulators/Winbsnes.zip
[10/03/13 11:48:27] Finished downloading https://dl.dropbox.com/u/2862706/ice_emulators/Winbsnes.zip
[10/03/13 11:48:27] Unzipping d:\temp\tmpe8mh8m.zip to C:\Users\Eric\AppData\Local\Scott Rice\Ice\Emulators

The file downloaded is only 1 KB and is never actually unzipped correctly.

It appears at this point that ice.exe terminates and does not continue operating successfully. No ROMs are scanned for and nothing is added to Steam upon starting it again.

Can't Seem to get the Executable version of this application to work.

I have tried to get it operating but all i ever see is command prompt blink on quickly and then disappear just as quickly, i have set the roms up properly, and as far as i can tell it should work but when i open up steam it doesn't have the games added.

How do i get the ice.exe to operate correctly?

sorry for noob.

Make a UI

Command line programs are fine for now, but I should really get a UI set up. For end users, opening an exe that just brings up the command prompt looks really shitty, and the command prompt can sometimes do a really bad job of displaying text. To start, the UI will probably just be another way to display the same text output that the command line does, but it will give me something to build off of if I ever want to make a full UI.

Add 'Rom Directory Location' to config.txt

Space on the C drive can be tight (especially for people like Dave with SSDs), and forcing them to put their (potentially) multi-gigabyte ROM library on there isn't fair. Allow the user to choose their ROM library location.

Explain the ESC key and exiting emulators

The one 'true' way of exiting Ice emulators is the escape key. Anything else and I don't guarantee the experience.

Make this known to the user somehow. I think the README would be the best bet.

I also plan on having a JoyToKey configuration file set up for Xbox 360 controllers included when I distribute Ice. It will be up to the user to get their hands on JoyToKey though.

Ambiguity in setup

You market Ice as "easy to use" and requiring only one or two small configuration steps to get working. However, there is a great deal of ambiguity in how Ice works and how it's supposed to be configured.

For example:

"Using Ice:

  1. Add ROMs into the correct directory based on the console. For example, if you
    want to add Super Smash Bros, put the ROM into 'ROMs/N64'.
  2. Make sure Steam is closed. If Steam is open, then Ice will do nothing
  3. Run Ice again. Make sure that it finishes correctly.
  4. Open Steam, and enjoy playing some old games!"

That's all we get when it comes to actually making the program work.

  1. What is the "correct directory" for each console? How can I know these names? Is it Game Boy, Gameboy, or GB? What about Game Boy Color, is that a different handheld?

  2. Do we put the ROMs inside the folder ourselves, or does Ice scan for them and move the ROMs around? Does it search only the ROMs folder or the entire computer? This is unclear.

  3. In config.txt it's stated that Ice will create a ROMs folder inside a specified directory. But in my testing, the directory was never created at all. Even when I manually created a ROMs directory, the program did not function.

  4. Going on from 3, what exactly is the point of specifying and having Ice create a ROMs folder if the user has to manually put the ROMs into the correct location and sub-directories anyway?

Test emulators on a windows machine other than my own

Looking through some of the config files, I notice references to locations that I used in testing (like Dolphin has the location of the memory card set to C:\Users\Scott.Scott-PC..., which is clearly not ideal).

Test these emulators on machines other than my own, or hell even on other users on my own machine. I need to make sure the games save correctly.

Allow skipping of 'Download Image' step

Sometimes I dont want to bother trying to download images. There should be a way to turn this off.

My suggestion would be to make it so that if the Grid Image Source is blank in config.txt, then skip the step.

Remove circular import so I can add logging to filesystem helper

ice_logging currently relies on filesystem_helper. That means if I can't log things from filesystem_helper because importing ice_logging from filesystem_helper and import filesystem_helper from ice_logging will cause all SORTS of trouble.

Remove this, so I can log things in peace.

global name 'log_file' is not defined

Initial setup ran ok as far as I can tell. I placed the PS1 and PS2 bios in the respective rom folders and 1 ps2 iso in the ps2 rom folder. Upon running Ice again, I get the following:
(begin output)
=========================Starting Ice

An Error has occurred:
global name 'log_file' is not defined

Close the window, or hit enter to exit...
(end output)

Running Windows 7 Ultimate

Specify another folder to use other than Users

When Ice runs, it appears to create and use the following folder:

C:\Users\Username\AppData\Local\Scott Rice\Ice\Emulators

I am not a fan of programs cluttering up the Users folder with data, without being expressly made aware of it.

Furthermore, having the program extracted to one drive (i.e. D:) only to have it decide to use the system drive (C:) for some things, without alerting the user or even offering the choice to use another directory, is ridiculous.

There should be a configuration option to specify a working directory. Additionally, I think it would be better for ice.exe to use the same directory it is located in, rather than the Users directory, unless it is impossible to do so due to insufficient permissions.

Steam location missing from config.txt

The readme starts with this text:

"Setup:

Make sure that "[Steam] Location" in config.txt is correctly set to your Steam
installation directory.

Run Ice for the first time to add your ROMs directory and to download the
emulators."

However, there is no line in config.txt to specify the Steam location by default. Therefore your program is unusable for new users.

Bnes and .SMC(snes) files.

Bnes doesn't like .SMC files. not one bit.
But after converting them to .SFC files, which Bsnes should be able to read, ICE won't load them into my steam.

what do?

Make easy way to send log.txt to me

Currently, I need to tell people where the log file is, which is definitely not great cause its in a hidden folder. Make a way for Ice to copy the log file to the desktop so they can send it to me.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.