damdara 0.5.1

Dragon Quest Core Module, created in Rust.
Documentation

๐Ÿฐ Damdara ๐Ÿฆ€

Rust crate docs Forks Stars License

Damdara is a logic crate for retro fantasy that can be built in Rust, while fully reproducing the "Fukkatsu no Jumon" system of the NES version of Dragon Quest, Damdara is a logic crate for retro-fantasy, which can be built in Rust for elements such as status generation based on the player's name, item equipping, and battle processing.

Table of Contents

Features

  • Generate resurrection "Fukkatsu no Jumon" from parameters ๏ผˆParameters to Password๏ผ‰
  • Parameters generated from resurrection "Fukkatsu no Jumon" (Password to Parameters)
  • Calculate parameters enhanced by name
  • See list of monsters
  • Refer to any monster information
  • See parameter list
  • Refer to any parameter
  • See list of Item
  • Refer to any Item information
  • See list of Weapon
  • Refer to any Weapon information
  • See list of Armor
  • Refer to any Armor information
  • See list of Shield
  • Refer to any Shield information
  • Reproduction of battle scenes
  • See list of Town
  • Refer to any Town information
  • Refer to any World information
  • See list of Message
  • Explore the field
  • Explore the Town

Bit configuration mapping table for password generation.

Byte Index Field Description Bits (from MSB to LSB)
0 Checksum (CRC-8) [7:0]
1 Experience (lower 8 bits) [7:0]
2 Pattern[2] (1) + Necklace (1) + Name[2] (6) [7], [6], [5:0]
3 Item[3] + Item[2] [7:4], [3:0]
4 Gold (lower 8 bits) [7:0]
5 Name[0] (6) + Golem (1) + Pattern[1] (1) [7:2], [1], [0]
6 Item[7] + Item[6] [7:4], [3:0]
7 Pattern[0] + Dragon (1) + Name[3] (6) [7], [6], [5:0]
8 Weapon (3) + Armor (3) + Shield (2) [7:5], [4:2], [1:0]
9 Gold (upper 8 bits) [7:0]
10 Keys + Herbs [7:4], [3:0]
11 Item[5] + Item[4] [7:4], [3:0]
12 Experience (upper 8 bits) [7:0]
13 DragonScale (1) + Name[1] (6) + WarriorRing (1) [7], [6:1], [0]
14 Item[1] + Item[0] [7:4], [3:0]

Installation

Cargo

cargo install damdara

Add to project

cargo add damdara

Brew

brew tap webcyou-org/tap
brew install damdara

Usage

cargo run <input>

or

damdara <input>

If input is not present, the default brave value is returned.

cargo run

player name: ใ‚†ใ†ใฆใ„
summary: PlayerSummary { name: "ใ‚†ใ†ใฆใ„", level: 1, hp: 15, mp: 3, gold: 0, experience: 0 }
strength_status: StrengthStatus { level: 1, strength: 4, agility: 6, max_hp: 15, max_mp: 3, attack_power: 4, defense_power: 3, weapon: "ใชใ—", armor: "ใชใ—", shield: "ใชใ—" }

The name can be specified by giving -n

cargo run -- -n ใ ใ„

player name: ใŸใ‚›ใ„
summary: PlayerSummary { name: "ใŸใ‚›ใ„\u{3000}", level: 1, hp: 14, mp: 0, gold: 0, experience: 0 }
strength_status: StrengthStatus { level: 1, strength: 4, agility: 4, max_hp: 14, max_mp: 0, attack_power: 4, defense_power: 2, weapon: "ใชใ—", armor: "ใชใ—", shield: "ใชใ—" }

Mode

You can specify the mode by giving --mode or the shortcut -m.

cargo run -- --mode <input>
cargo run -- -m <input>
Mode Name Description
start Calculate enhanced parameters from name only
save Generate "Fukkatsu no Jumon" from arbitrary parameters (e.g. exp, gold, etc.)
load Restore name/parameters from the "Fukkatsu no Jumon"
display Supports list and individual display of master data

โ–  Start Mode

Generate parameters from the names of brave men

example

player name: ใŸใ‚›ใ„
summary: PlayerSummary { name: "ใŸใ‚›ใ„\u{3000}", level: 1, hp: 14, mp: 0, gold: 0, experience: 0 }
strength_status: StrengthStatus { level: 1, strength: 4, agility: 4, max_hp: 14, max_mp: 0, attack_power: 4, defense_power: 2, weapon: "ใชใ—", armor: "ใชใ—", shield: "ใชใ—" }

The default setting of the mode is here, so if you omit it, the default brave will be generated

example

cargo run
player name: ใ‚†ใ†ใฆใ„
summary: PlayerSummary { name: "ใ‚†ใ†ใฆใ„", level: 1, hp: 15, mp: 3, gold: 0, experience: 0 }
strength_status: StrengthStatus { level: 1, strength: 4, agility: 6, max_hp: 15, max_mp: 3, attack_power: 4, defense_power: 3, weapon: "ใชใ—", armor: "ใชใ—", shield: "ใชใ—" }

โ–  Save Mode

Generates the "Fukkatsu no Jumon" from the parameters of the hero.

example

cargo run -- -n ใ ใ„ -m save
ใขใฐใ’ใžใงใถใ„ใพใ‚‚ใ‚‚ใ‚ŒใŽใ–ใžใงใถใ„ใ‚ˆใ”ใœ

โ–  Load Mode

Generates a brave man from the "Fukkatsu no Jumon" of fortune.

example

cargo run -- -m load -p ใขใฐใ’ใžใงใถใ„ใพใ‚‚ใ‚‚ใ‚ŒใŽใ–ใžใงใถใ„ใ‚ˆใ”ใœ

new_player from Password
player name: ใŸใ‚›ใ„
summary: PlayerSummary { name: "ใŸใ‚›ใ„\u{3000}", level: 1, hp: 14, mp: 0, gold: 0, experience: 0 }
strength_status: StrengthStatus { level: 1, strength: 4, agility: 4, max_hp: 14, max_mp: 0, attack_power: 4, defense_power: 2, weapon: "ใชใ—", armor: "ใชใ—", shield: "ใชใ—" }

โ–  Display Mode

cargo run -- -m display --view item
[Equipment { name: "ใชใ—", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใŸใ„ใพใค", price: 8, sell: 4, attack: 0, defense: 0 }, Equipment { name: "ใ›ใ„ใ™ใ„", price: 12, sell: 6, attack: 0, defense: 0 }, Equipment { name: "ใ‚ญใƒกใƒฉใฎใคใฐใ•", price: 24, sell: 12, attack: 0, defense: 0 }, Equipment { name: "ใ‚Šใ‚…ใ†ใฎใ†ใ‚ใ“", price: 20, sell: 10, attack: 0, defense: 2 }, Equipment { name: "ใ‚ˆใ†ใ›ใ„ใฎใตใˆ", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใ›ใ‚“ใ—ใฎใ‚†ใณใ‚", price: 0, sell: 0, attack: 2, defense: 0 }, Equipment { name: "ใƒญใƒˆใฎใ—ใ‚‹ใ—", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใŠใ†ใ˜ใ‚‡ใฎใ‚ใ„", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใฎใ‚ใ„ใฎใƒ™ใƒซใƒˆ", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใŽใ‚“ใฎใŸใฆใ”ใจ", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใ—ใฎใใณใ‹ใ–ใ‚Š", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใŸใ„ใ‚ˆใ†ใฎใ„ใ—", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใ‚ใพใใ‚‚ใฎใคใˆ", price: 0, sell: 0, attack: 0, defense: 0 }, Equipment { name: "ใซใ˜ใฎใ—ใšใ", price: 0, sell: 0, attack: 0, defense: 0 }]
cargo run -- -m display --view item 5
item: Equipment { name: "ใ‚ˆใ†ใ›ใ„ใฎใตใˆ", price: 0, sell: 0, attack: 0, defense: 0 }

Display Patterns

  • item
  • weapon
  • armor
  • shield
  • status
  • monster
  • town
  • message

Status Option

--option or the shortcut -o can be used to specify status options

cargo run -- -o <input>

example

cargo run -- -o max
player name: ใ‚†ใ†ใฆใ„
summary: PlayerSummary { name: "ใ‚†ใ†ใฆใ„", level: 30, hp: 15, mp: 3, gold: 65535, experience: 65535 }
strength_status: StrengthStatus { level: 30, strength: 140, agility: 120, max_hp: 210, max_mp: 183, attack_power: 182, defense_power: 110, weapon: "ใƒญใƒˆใฎใคใ‚‹ใŽ", armor: "ใƒญใƒˆใฎใ‚ˆใ‚ใ„", shield: "ใฟใ‹ใŒใฟใฎใŸใฆ" }

Format Option

The output format can be changed by giving the --format.

cargo run -- --format <input>
Format Name Description
print It will be a print statement output. This is the default setting.
json Output in JSON format

Example

Additional Resources

Contributing to Damdara

To contribute to Damdara, follow these steps:

  1. Fork this repository.
  2. Create a branch: git checkout -b <branch_name>.
  3. Make your changes and commit them: git commit -m '<commit_message>'.
  4. Push your changes to your branch: git push origin <branch_name>.
  5. Create a pull request.

Alternatively, consult the GitHub documentation on how to create a pull request.

References

License

This project is licensed under the MIT License. See the LICENSE file for details.

All monsters, images and other copyrights belong to Square Enix.

Author

Daisuke Takayama