Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

Need help to open G1E file from koei tecmo engine

Featured Replies

  • 8 months later...
  • Localization

To answer your question directly: there is currently no public 3D/texture tool (like Noesis or G1Tool) that can open this .g1e file, because it does not contain models or textures.

In Koei Tecmo's KTGL engine, the G1 container family is modular. While G1M holds meshes and G1T holds textures, .g1e files are G1FX effect/particle emitter definitions.

I reverse engineered your sample (CE1_0101_ZOR_360POND.g1e) down to the byte. Here is the complete container layout and a Python tool to parse and dump its structure.


1. Header Layout (24 Bytes)

The header confirms the internal identity of the format:

Offset

Type

Value

Description

0x00

char[4]

XF1G

Stored magic (little-endian uint32 0x47314658 = logical FourCC G1FX)

0x04

char[4]

5200

Format version (ASCII representation)

0x08

u32

26416

Declared file size (strictly matches the actual 26 KB file size)

0x0C

u32

9

Section count

0x10

u32

1

Engine sub-version / constant flag

0x14

u32

24

Header length (0x18 = body start)


2. Block Grammar & The 9 Sections

Each chunk in the file follows a uniform 16-byte header:

u32 size        // Declared chunk size
u32 tag         // Chunk type ID
u32 paramX
u32 paramY

Alignment Rule: Every block occupies stride = round_up(size, 16) bytes, with trailing null bytes acting as alignment padding.

Using this grammar, the file tiles 100% continuously with zero gaps: 24 (Header) + 1,720 (Root Object) + 24,672 (9 Sections) = 26,416 bytes.

Section

Offset

Stride

Tag

Purpose / Contents

Root

0x018

1720 B

-

Transform root: contains two 4x4 identity matrices (0x18 & 0x2E0)

0

0x6D0

736 B

1

Setup block & index tables

1

0x9B0

96 B

9

Field descriptor table (typed 16-byte parameter schema)

2

0xA10

48 B

14

Particle state flags

3

0xA40

128 B

480

Emitter configuration A

4

0xAC0

128 B

481

Emitter configuration B

5

0xB40

672 B

0

Sub-block parameter tree

6

0xDE0

848 B

0

Nested timeline nodes

7

0x1130

14032 B

3

Primary payload (53% of file): Emitter layers 1-3

8

0x4800

7984 B

3

Secondary payload (30% of file): Emitter layer 4

Notice that over 83% of the entire file is located inside the two tag=3 sections (0x1130 and 0x4800).


3. What is Actually Inside This File?

An asset scan reveals:

  • No embedded textures: 0 G1T_, 0 DDS, and 0 PNG signatures. Textures for the water particles/ripples live in a companion .g1t file and are referenced strictly by index/ID.

  • No embedded meshes: 0 G1M_ blocks.

  • 4 Emitter Instances: There are four distinct emitter definitions (0x2E40, 0x3440, 0x3A70, 0x40B0) defining the visual layers of the 360POND effect (water body, rim shimmer, splashes, and foam).

  • Color Parameters: Decoded RGBA float32 curves:

    • 3 identical emitter tints: #7F0D7EFF (RGBA: 0.4994, 0.0493, 0.4949, 1.0)

    • 1 secondary tint: #726378FF (RGBA: 0.4478, 0.3887, 0.4720, 1.0)

  • UV Sub-rect Clamps: Explicit [0.01, 0.99] UV coordinate bounds in sections 7 and 8, confirming the particles use sub-rects of an external sprite atlas with 1% edge inset to avoid texture bleeding.


4. Inspection & Extraction Tool (g1e_parser.py)

I wrote a standalone Python 3 script (g1e_parser.py) that parses any G1FX .g1e file, extracts the root and 9 raw chunks into individual files, and outputs a complete JSON description of all vectors, colors, matrices, and descriptor tables.

Usage:

python g1e_parser.py CE1_0101_ZOR_360POND.g1e

Outputs:

  • CE1_0101_ZOR_360POND.dump.json (Full hierarchical breakdown)

  • CE1_0101_ZOR_360POND.report.txt (Structured text summary)

  • extracted/CE1_0101_ZOR_360POND/ (All 10 extracted .bin chunk payloads)

(Script is attached to this post).

G1FX_tool.zip

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.