Crate momoden_password

source ·
Expand description

桃太郎伝説 (FC) パスワードライブラリ

パスワードとゲーム状態の相互変換を行う。

Example

//! パスワード「ふ」をロードする。

use momoden_password::*;

fn main() {
    let password = Password::parse("ふ").unwrap();
    let bytes = SerializedBytes::from_password(&password);

    if let Some(savedata) = bytes.to_savedata() {
        // 生のセーブデータ(装備インデックスが不正なまま)を出力する。
        println!("raw: {savedata:?}");
        // 実際にロードされるセーブデータ(装備が変化した後)を出力する。
        let savedata_norm = savedata.normalize();
        println!("normalized: {savedata_norm:?}");
    } else {
        // チェックサムが一致しない場合、to_savedata() は失敗する。
        println!("checksum mismatch");
    }
}
//! パスワード「ふ」をロードした直後の状態をパスワード化する。

use momoden_password::*;

fn main() {
    // パスワード「ふ」をロードし、実際にロードされるセーブデータを得る。
    let password = Password::parse("ふ").unwrap();
    let bytes = SerializedBytes::from_password(&password);
    let savedata = bytes.to_savedata().unwrap();
    let savedata = savedata.normalize();

    // このセーブデータに対応するパスワードを得る。
    // (パスワード「ふ」で始めてすぐ神主に話しかけたときのパスワードと一致するはず)
    let bytes = SerializedBytes::from_savedata(&savedata);
    let password = bytes.to_password();

    println!("{}", password.display_pretty());
}

License

GPLv3

Structs

ひえんブックマーク。
値域が MIN..=MAX に制限された u8
ゲーム状態をシリアライズしたバイト列のチェックサム。
装備。
イベント進行状態。
お供存在状態。
パスワード。
パスワードに記録されるゲーム状態。
ゲーム状態をシリアライズしたバイト列。
術習得状態。
宝物所持状態。

Enums

パスワード内の文字。
パスワードのパース時に発生しうるエラー。

Type Definitions

いでたち0インデックス (2bit)。
いでたち1インデックス (2bit)。
いでたち2インデックス (1bit)。
いでたち3インデックス (1bit)。
鎧インデックス (4bit)。
mod 64 加算によるチェックサム。
XOR によるチェックサム。
預金 (6bit)。
兜インデックス (2bit)。
インベントリ。
アイテムID (nonzero, 6bit)。
Password の内部バッファ。
復活地点ID (4bit)。
SerializedBytes の要素。
SerializedBytes の内部バッファ。
靴インデックス (3bit)。
武器インデックス (4bit)。