Library and tool for generating progress passwords for old games
Project description
Retropass
An NES password generation tool
Retropass is a library and cli tool for generating passwords for NES-era video games. Yes, there's quite a few, but I had a few goals not shared (or at least not satisfied) by existing tools:
- Retropass is intended to support multiple games.
- Retropass can be incorporated into other generation tools. If you like writing UI's, you don't need to get bogged down in binary to get anywhere.
- Retropass's CLI is easily scriptable, if for whatever reason you want that.
- Retropass ships with machine- and human- readable specifications of the password formats. It can be used as a reference when developing other programs.
Status
Still beta. CLI and API details are subject to change. The following games are supported (so far):
- Mega Man 2
- Mega Man 3
- Metroid
- Kid Icarus
- Solar Jetman
- Battle of Olympus
Installation
- Install Python 3.6 or above.
- Install Pip, if needed. On windows platforms, Pip is included in the python installation.
- Run
pip install --user retropass
Usage (by players)
Retropass is intended as a library for use by other tools, but it has a command line interface as well. You feed it a file containing the options you want, and it generates a password that implements those options.
retropass --help
will print the available games and options.
An example, from metroid:
- Run
retropass metroid --dump > metroid.conf
to create the file. - Edit the file to set whatever options you want.
- Run
retropass metroid --conf metroid.conf
. It will print the corresponding password. - Enter it in your game of choice and play.
Usage (by developers)
The API is minimal. There is a Password class. It has subclasses for each game, and a .make classmethod that creates the appropriate type of object given the game's name. A list of available names is available via retropass.Password.supported_games()
The options available for a given password can be set either
attribute-style (pw.option = 1
) or dictionary-style (pw['option'] = 1
). You can get the available options and their current settings as a
dictionary with dict(pw)
, or as a pretty-printed string with
print(pw.dump())
. Stringifying or printing the password object will
produce the resulting password.
Usage example:
from retropass import Password
pw = Password.make('metroid')
pw.has_marumari = 1
pw.has_longbeam = 1
print(pw)
Known Issues
- There's no great way of handling lists of related bits, e.g. all the missile containers in Metroid
Extra Credits
The following links were instrumental, either as documentation or as reference implementations. Credit for figuring out the password mechanics belongs to these people, not me:
- Metroid Password Format Guide (John Ratliff)
- True Peace in Space (Alex Rasmussen)
- Solar Jetman Password Generator (CyberN)
- Battle of Olympus Password Generator (Steven Hicks)
- Mega Man 2 Password Mechanics (StrategyWiki, multiple authors)
- Kid Icarus Password Generator (KIP) (Parasyte? (no author listed, but see archive.org)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file retropass-0.6.1.tar.gz
.
File metadata
- Download URL: retropass-0.6.1.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f16705e4468cc4d5f48b0fa5959efe90ac28ca7896b292ace83a74b007d2484 |
|
MD5 | 46da4e9c3ad2d9eafa31fca067183952 |
|
BLAKE2b-256 | e8ac27f158a832cda38b0d430187e1b9a7c14d3b2fbd74c934a1c4c3ed415cb2 |
File details
Details for the file retropass-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: retropass-0.6.1-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaf0a922b7a1bd81c4cfee0f2712448b75f7e09cccae3698e7f8d0c0457494ac |
|
MD5 | e9eb1835d6eabbf7b0520ab8b43f7d5d |
|
BLAKE2b-256 | 3d0c142bb7255a3b1810e5bbcc1a4875103e94c88ed00d41830a1a64df0cb290 |