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
- Metroid
- Kid Icarus
- Solar Jetman
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:
- Metroid Password Format Guide, John Ratliff.
- True Peace in Space, Alex Rasmussen.
- Kid Icarus Password Generator (KIP), author unknown. Once used the handle "Parasyte" according to archive.org.
- StrategyWiki's Mega Man 2 Password Mechanics page.
- Solar Jetman Password Generator, CyberN.
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
Hashes for retropass-0.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72c239231be00f1052585b749a76f24d330a0c98941bc712a4abc0c81a7c56a9 |
|
MD5 | dbe3c0ab6e53372aad5c0eaa253c5e65 |
|
BLAKE2b-256 | 5a09d7c3288de4daed21bdb1bfd71b70f95948104c82f58e192933e20d0a2e7b |