Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No roms listed #4

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a01d547
Initial Commit
jshackles Jan 1, 2020
a6f9dd7
UPDATE: nes corrections
jshackles Jan 1, 2020
be5e23f
Update README.md
jshackles Jan 1, 2020
6620bb3
ADD: ps1 and psp
jshackles Jan 2, 2020
3d3f0ff
FIX: bug with psx and psp
jshackles Jan 2, 2020
2b956d4
ADD: sms and segag
jshackles Jan 2, 2020
7bfdb25
UPD: standardize naming
jshackles Jan 4, 2020
8a5b849
ADD: Sega CD and Sega Saturn
jshackles Jan 6, 2020
fa723a8
UPDATE: readme
jshackles Jan 6, 2020
e14066c
ADD: SEGA Dreamcast
jshackles Jan 12, 2020
fe6bf3f
FIX: Bug in SNES
jshackles Jan 17, 2020
083b82a
ADD: Atari 2600
jshackles Jan 24, 2020
95d8d7c
ADD: Atari Jaguar
jshackles Jan 24, 2020
ebc0499
ADD: Nintendo GameCube
jshackles Jan 24, 2020
8129bcd
ADD: Nintendo Wii
jshackles Jan 24, 2020
d80f88b
ADD: GB, GBC, GBA
jshackles Feb 17, 2020
b20a023
ADD: DS and 3DS
jshackles Mar 21, 2020
c5a712b
fix(plugin): add archive file support for each platform.
benjamin-allion Jun 13, 2020
6f88f52
refactor(plugin): fix indentation problem.
benjamin-allion Jun 13, 2020
1c1fb1b
Merge pull request #2 from benjamin-allion/fix/archive-support
jshackles Jul 20, 2020
17c193a
ADD: PlayStation 2 support
jshackles Aug 23, 2020
a13a526
ADD: 3DO Interactive
jshackles Aug 23, 2020
ea1b5da
ADD: PC Engine
jshackles Aug 23, 2020
91581d0
ADD: galaxy_api.zip
jshackles Aug 25, 2020
a7899e7
REMOVE: corrections feature
jshackles Aug 27, 2020
c69ad8c
BUILD: 0.3
jshackles Aug 27, 2020
b5847e5
FIX: a few config plugin suggestions
jshackles Aug 28, 2020
49a03be
ADD: Installation GUI
jshackles Aug 28, 2020
50b05f9
FIX: issue with selectbox
jshackles Aug 28, 2020
177fb3f
FIX: apostrophe parsing issue
jshackles Sep 2, 2020
d4b0319
Merge branch 'master' of https://github.com/jshackles/RetroGOG
jshackles Sep 2, 2020
5d4665f
ADD: program indexes for GBC and GBA
jshackles Sep 2, 2020
66a8ee0
FIX: selecting non-playlist files
jshackles Sep 2, 2020
962bc74
FIX: playlist iteration issues
jshackles Sep 2, 2020
512a566
BUILD: 0.4
jshackles Sep 2, 2020
8e39e24
REMOVE: RetroGOG.exe
jshackles Jan 3, 2021
93efae0
UPDATE: Galaxy API to 0.67
jshackles Apr 18, 2021
26ebab1
ADD: compiled binary
jshackles Apr 18, 2021
b59bf01
UPDATE: direct exe link
jshackles Apr 18, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bin
obj
*.suo
*.user
76 changes: 49 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,67 @@
# galaxy-integration-n64-RetroArch-
N64 RetroArch integration for GOG Galaxy 2.0
# Retro GOG
RetroArch integrations for GOG Galaxy 2.0

# [If you want the integration to work, please read the tutorial!](https://github.com/Riku55/galaxy-integration-n64-RetroArch-#tutorial)
## About
The goal of this project is to integrate all retro platforms that are supported by both [GOG Galaxy 2.0](https://www.gog.com/galaxy) and [RetroArch](https://retroarch.com/) so that games can easily be launched from GOG with minimal user configuration. GOG Galaxy will track user's play time as well as achievement status from [RetroAchievements.org](https://retroachievements.org). These integrations are designed for and have only been tested with Windows.

This integration is still work in progress, but it's core features are working and the worst bugs are removed, so try it out if you'd like to.
Thanks to AHCoder for using his PS2 integration as base for this one. Also thanks to several people on the GOG Discord for helping me out with some problems.
This project is currently a work in progress. Bugs may be present.

Created with the Galaxy API: https://github.com/gogcom/galaxy-integrations-python-api

Forked from Riku55's N64 Integration Plugin: https://github.com/Riku55/galaxy-integration-n64-RetroArch-

#### Working Features:
- Add N64 Roms into the galaxy 2.0 library
- Launch N64 Roms with RetroArch via Galaxy 2.0
- Add and launch retro games to your GOG Galaxy 2.0 library
- Import RetroArch Playtime
- Use Mupen64Plus_Next or ParaLLEl core, change it in user_config.py
- Configuration wizard for easy installation

#### Future Features:
- MacOS Support (help from MacOS Users would be appreciated)
- Add GUI (cef) for better usability
- Add retroachievements via API
- More launch options
- Support for various emulators (might be another repository then)
- Add more platforms supported by RetroArch (if Galaxy should support more than one platform per integration in the future. Currently working on PSX support in other repository, not quite usable right now though)
- Add achievements to GOG via web API


## Currently Supported Platforms
- 3DO Interactive
- Atari 2600
- Atari Jaguar
- Nintendo Entertainment System
- Super Nintendo Entertainment System
- Nintendo 64 (Riku55)
- Nintendo GameCube
- Nintendo Wii
- Nintendo Game Boy
- Nintendo Game Boy Color
- Nintendo Game Boy Advance
- Nintendo DS
- Nintendo 3DS
- SEGA Master System
- SEGA Genesis / Mega Drive
- SEGA CD
- SEGA Saturn
- SEGA Dreamcast
- PC Engine / Turobgrafx 16
- PlayStation
- PlayStation 2
- PlayStation Portable

![screenshot](https://imgur.com/A1Zk5Zt.png "Screenshot")

## Tutorial

### Setting up [RetroArch](https://retroarch.com/?page=platforms) (version 1.7.6 or higher required) - You need to repeat step 3 after adding new Roms to the path.
#### Setting up [RetroArch](https://retroarch.com/?page=platforms)
1. Open RetroArch.
2. Navigate to the left until you're at *Main Menu*, click on *Load Core* -> *Download a Core* and select *Nintendo - Nintendo 64 (Mupen64Plus-Next)*.
2. Navigate to the left until you're at *Main Menu*, click on *Load Core* -> *Download a Core* and download the core of your choice for the platform you want to integrate.
3. Navigate to the right until you're at *Import Content*, click on *Scan Directory*, navigate to the folder where your Roms are and click on *Scan this Directory*.
4. Navigate to *Settings*, click on *Saving*, go to the last option there *Save runtime log (aggregate)* and turn it on.

### Setting up the Integration:
1. Download the integration (use clone or download or download the *Source Code.zip* file in releases or just [click here](https://github.com/Riku55/galaxy-integration-n64-RetroArch-/archive/0.2.zip)).
#### Setting up RetroGOG:
1. Download [RetroGOG configuration wizard](https://github.com/jshackles/RetroGOG/raw/master/RetroGOG.exe)
2. Run the application and follow the on-screen instructions.
3. (Re)start Galaxy 2.0 and connect the integration.

#### Manual setup instructions:
1. Download the integration (use clone or download).
2. Extract the ZIP file.
3. Put it into your Galaxy plugin folder (standard is: *C:\Users\USERNAME\AppData\Local\GOG.com\Galaxy\plugins\installed*)
4. Open the file *user_config.py* with an editor.
5. Add your emulator and roms path as described in the file.
6. (Re)start Galaxy 2.0 and connect the integration.
_______________________________________________________________________________________________________________________________________

## If the integration doesn't work and you made sure that you set up everything correctly, here are some things that might fix it:
1. In RetroArch, go to Settings -> Playlist and make sure that *Save Playlist using old format* is NOT active.
2. More to be added
3. Copy the contents of the plugins folders to your Galaxy plugin folder (standard is: *C:\Users\USERNAME\AppData\Local\GOG.com\Galaxy\plugins\installed*)
4. For each integration, open the file *user_config.py* with an editor.
5. Add your emulator path, along with your preferred core as described in the file.
6. (Re)start Galaxy 2.0 and connect the integration.
Binary file added RetroGOG.exe
Binary file not shown.
12 changes: 0 additions & 12 deletions corrections.py

This file was deleted.

153 changes: 0 additions & 153 deletions galaxy/api/types.py

This file was deleted.

Binary file added galaxy_api.zip
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__path__: str = __import__('pkgutil').extend_path(__path__, __name__)
__path__: str = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ class Platform(Enum):
Playfire = "playfire"
Oculus = "oculus"
Test = "test"
Rockstar = "rockstar"


class Feature(Enum):
Expand All @@ -110,6 +111,12 @@ class Feature(Enum):
ImportFriends = "ImportFriends"
ShutdownPlatformClient = "ShutdownPlatformClient"
LaunchPlatformClient = "LaunchPlatformClient"
ImportGameLibrarySettings = "ImportGameLibrarySettings"
ImportOSCompatibility = "ImportOSCompatibility"
ImportUserPresence = "ImportUserPresence"
ImportLocalSize = "ImportLocalSize"
ImportSubscriptions = "ImportSubscriptions"
ImportSubscriptionGames = "ImportSubscriptionGames"


class LicenseType(Enum):
Expand All @@ -128,3 +135,30 @@ class LocalGameState(Flag):
None_ = 0
Installed = 1
Running = 2


class OSCompatibility(Flag):
"""Possible game OS compatibility.
Use "bitwise or" to express multiple OSs compatibility, e.g. ``os=OSCompatibility.Windows|OSCompatibility.MacOS``
"""
Windows = 0b001
MacOS = 0b010
Linux = 0b100


class PresenceState(Enum):
""""Possible states of a user."""
Unknown = "unknown"
Online = "online"
Offline = "offline"
Away = "away"


class SubscriptionDiscovery(Flag):
"""Possible capabilities which inform what methods of subscriptions ownership detection are supported.

:param AUTOMATIC: integration can retrieve the proper status of subscription ownership.
:param USER_ENABLED: integration can handle override of ~class::`Subscription.owned` value to True
"""
AUTOMATIC = 1
USER_ENABLED = 2
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def __init__(self, data=None):

class UnknownBackendResponse(ApplicationError):
def __init__(self, data=None):
super().__init__(4, "Backend responded in uknown way", data)
super().__init__(4, "Backend responded in unknown way", data)

class TooManyRequests(ApplicationError):
def __init__(self, data=None):
Expand Down
Loading