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.
- Host: GitHub
- URL: https://github.com/vriskaserket51/eastward.js
- Owner: VriskaSerket51
- License: gpl-3.0
- Created: 2024-08-23T07:11:02.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-09-19T08:53:55.000Z (9 months ago)
- Last Synced: 2024-09-19T09:26:01.435Z (9 months ago)
- Topics: asset-extraction, eastward, import-export, reverse-engineering, video-game
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/eastward.js
- Size: 676 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 typesawait 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 typesconst 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");
```