An open API service indexing awesome lists of open source software.

https://github.com/vriskaserket51/eastward.js

Library for export/import Eastward assets.
https://github.com/vriskaserket51/eastward.js

asset-extraction eastward import-export reverse-engineering video-game

Last synced: 6 months ago
JSON representation

Library for export/import Eastward assets.

Awesome Lists containing this project

README

        

# eastward.js

Typescript library for imort/export assets of the video game Eastward.

**No Browser Support**

## Installation into an existing project

To install `eastward.js` as a dependency of your Node.js project:

```sh
npm install eastward.js
```

`eastward.js` is made with TypeScript.

## How to use

### Command Line usage

`npx eastward --help` for help.

If you installed eastward.js globally,

```sh
npm install -g eastward.js
```

you can just use `eastward --help`

```
Usage: eastward [MODE] [OPTION]... [FILE]...
Mode and Option:
extract Extract all assets with types from game root directory to output directory. Without explicit --type option, all assets will be extracted.
--root game root directory
-T, --type asset type; eastward --help type to get list
--out output directory
unzip Extract data from .g files to output directory.
--out output directory
[FILE] .g files
zip Archive all data from root directory to output .g file.
--root root directory
--out output .g file
hmg2png Read hmg files and convert to png files.
-r Read recursive in directory
--in Input directory or file
--out Output directory or file
png2hmg Read png files and convert to hmg files.
-r Read recursive in directory
--in Input directory or file
--out Output directory or file
json2msg Read JSON files and convert to msgpack files.
-r Read recursive in directory
--in Input directory or file
--out Output directory or file
inject Read files from root and inject them into .g file.
--root Input directory
--in Input .g file
--out Output .g file
```

### Source code usage

Example for extract some assets from the root game folder.

```javascript
import { Eastward, registerAll } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
registerAll(eastward); // register all asset types

await eastward.extractTo("./extract");

console.log("extracting finished");
```

Or you can just extract some types of assets.

```javascript
import { Eastward, LocalePackAsset } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
eastward.registerAssetLoader("locale_pack", LocalePackAsset);

await eastward.extractTo("./extract_locale_pack");

console.log("extracting locale_pack finished");
```

Example for extract certain assets from the root game folder.

```javascript
import { Eastward, TextureAsset, registerAll } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
registerAll(eastward); // register all asset types

const texture = await eastward.loadAsset("texture/ui/icon/miniSam.png");
if (texture) {
await texture.saveFile("./miniSam.png")
}

console.log("extracting finished");
```

Example for reading asset from archive.

```javascript
import { GArchive } from "eastward.js";
import { writeFile } from "fs/promises";

const archive = new GArchive();
await archive.load(
"C:/SteamLibrary/steamapps/common/Eastward/content/game/locale.g"
);

const data = await archive.getFileData("1fbba5dfab829f507358f58c1c2dc59a");
if (data == null) {
process.exit(-1);
}
writeFile("./CH1.lua", data);
```

Example for writing asset to archive.

```javascript
import { GArchive } from "eastward.js";
import { readFile } from "fs/promises";

const archive = new GArchive();
await archive.load(
"C:/SteamLibrary/steamapps/common/Eastward/content/game/locale.g"
);
const data = await readFile("./CH1.lua");

await archive.setFileData("1fbba5dfab829f507358f58c1c2dc59a", data);

await archive.saveFile("./locale.g");
```