translated the remaining german notes, python comments, help and messages to english (in-game strings, parsed report lines and cli values stay german)

This commit is contained in:
MineTec committed 2026-11-07 10:51:14 +01:00
1 parent 86fe26d786
commit 526f6072f6
36 files changed
+1553 -1544

No files matched your search

+39 -39
View File
@@ -1,51 +1,51 @@
# TEXT-Chunk (Texturen)
# TEXT chunk (textures)
Quelle: groove.exe `FUN_004067b0` (Größenlauf), `FUN_004071d0` → `FUN_00406880` (Paletten),
`FUN_00406ab0` (Seiten), `FUN_00406a10` (RLE), `FUN_00406d30` (Texturliste),
`FUN_00406e40` (Texturanimationen), `FUN_00407240`/`FUN_00408470` (Upload/Konvertierung).
Werkzeug: `tools/textchunk.py`, `tools/text_export.py`. Parse + Neuaufbau ist für **alle
Level-WADs byte-identisch** (auch der RLE-Encoder erzeugt exakt die Originaldaten).
Source: groove.exe `FUN_004067b0` (size pass), `FUN_004071d0` → `FUN_00406880` (palettes),
`FUN_00406ab0` (pages), `FUN_00406a10` (RLE), `FUN_00406d30` (texture list),
`FUN_00406e40` (texture animations), `FUN_00407240`/`FUN_00408470` (upload/conversion).
Tools: `tools/textchunk.py`, `tools/text_export.py`. Parse + rebuild is **byte-identical
for all level WADs** (the RLE encoder also reproduces the original data exactly).
## Aufbau
## Layout
```
u32 nPal (in allen WADs 0)
nPal × { u32 id, u32 n, u16 farbe[n], u8 extra[n] }
u32 nSeiten (13–22 je Level, alle 256×256)
nSeiten × { u32 flags, u32 w, u32 h, Daten }
flags == 0 : w·h Byte (8 Bit, Palette) – unbenutzt
flags & 0x80 : u32 Länge, RLE16 – alle Originalseiten
sonst : w·h u16 roh
u32 nPal (0 in all WADs)
nPal × { u32 id, u32 n, u16 colour[n], u8 extra[n] }
u32 nPages (13–22 per level, all 256×256)
nPages × { u32 flags, u32 w, u32 h, data }
flags == 0 : w·h bytes (8 bit, palette) – unused
flags & 0x80 : u32 length, RLE16 – all original pages
otherwise : w·h u16 raw
u32 nTex (~180–1260)
nTex × 8 Byte { u16 flags, u8 seite, u8 clut(0xff), u8 x0, u8 x1, u8 y0, u8 y1 } (Kanten inklusive)
nTex × 8 bytes { u16 flags, u8 page, u8 clut(0xff), u8 x0, u8 x1, u8 y0, u8 y1 } (edges inclusive)
u32 nAnim
nAnim × { u16 texIndex, u8 typ, Nutzdaten je typ }
typ 1,2 : 3 Byte typ 7,9 : u16,u16,u8,u8
typ 8 : u8, u8 nFrames, u8, nFrames × u16 texIndex (Daumenkino)
typ 10,11: u8,u8,u8,u8 n, n × u16 texIndex
nAnim × { u16 texIndex, u8 type, payload per type }
type 1,2 : 3 bytes type 7,9 : u16,u16,u8,u8
type 8 : u8, u8 nFrames, u8, nFrames × u16 texIndex (flipbook)
type 10,11: u8,u8,u8,u8 n, n × u16 texIndex
```
RLE16: Folge von s16 n; n>0 → n Literal-u16; n<0 → nächstes u16 (−n)-mal.
RLE16: sequence of s16 n; n>0 → n literal u16; n<0 → next u16 repeated (−n) times.
## Pixel
16 Bit **PS1-Reihenfolge**: Bits 0–4 R, 5–9 G, 10–14 B, Bit 15 = STP.
`0x0000` = durchsichtig (Konverter schreibt 0 für Pixel 0, alles andere wird umgerechnet).
STP=0 bei Farbe≠0 tritt auf Seiten mit Blendmodus auf (halbtransparente Pixel).
Export: Alpha 0 = 0x0000, Alpha 128 = STP 0, Alpha 255 = STP 1.
## Pixels
16 bit **PS1 order**: bits 0–4 R, 5–9 G, 10–14 B, bit 15 = STP.
`0x0000` = transparent (the converter writes 0 for pixel 0, everything else is converted).
STP=0 with colour≠0 occurs on pages with a blend mode (semi-transparent pixels).
Export: alpha 0 = 0x0000, alpha 128 = STP 0, alpha 255 = STP 1.
Seiten-flags & 0x7f = Format/Blendklasse (Tabelle 0x570370, je 0x20 Byte):
1 = opak, 2 = eigener Konverter (0x409640), 3 = opak+Flag, 4/7 = Alpha (Blend 1),
5 = Blend 3, 6 = wie 1. (Modi 1/2/3 ≈ PS1-Halbtransparenz-Modi; Details offen.)
Page flags & 0x7f = format/blend class (table 0x570370, 0x20 bytes each):
1 = opaque, 2 = own converter (0x409640), 3 = opaque+flag, 4/7 = alpha (blend 1),
5 = blend 3, 6 = same as 1. (Modes 1/2/3 ≈ PS1 semi-transparency modes; details open.)
## Texturliste
Faces der Modelle (TRAK/STPC, Face+8 u16) verweisen auf den Index in der Texturliste;
Eintrag = Rechteck auf einer Seite. `flags`-Lowbyte 4/5/6/0xc6, Highbyte 1/4/17/20/36/…
(Bedeutung offen; vermutl. Blend/Größenklasse). Fürs Ersetzen: Liste unverändert lassen
und nur Pixel in den Seiten tauschen → keine Querverweise betroffen.
## Texture list
Model faces (TRAK/STPC, face+8 u16) reference an index into the texture list;
entry = rectangle on a page. `flags` low byte 4/5/6/0xc6, high byte 1/4/17/20/36/…
(meaning open; probably blend/size class). For replacing: leave the list unchanged
and only swap pixels in the pages → no cross references affected.
## Export / Ersetzen
## Export / replace
```
text_export.py export level.wad ordner # pageNN_fXX.png + texinfo.txt (≈370 KB je Level)
text_export.py import level.wad ordner neu.wad
text_export.py export level.wad folder # pageNN_fXX.png + texinfo.txt (≈370 KB per level)
text_export.py import level.wad folder new.wad
```
Import ändert nur Pixel, deren RGBA vom Export abweicht → unveränderte Seiten bleiben
bitgenau. Größe muss 256×256 bleiben. Neue Seiten/Texturen anhängen ist möglich
(nTex/nSeiten erhöhen), dann müssen aber Faces in TRAK/STPC die neuen Indizes verwenden.
Import only changes pixels whose RGBA differs from the export → unchanged pages stay
bit-exact. Size must stay 256×256. Appending new pages/textures is possible
(increase nTex/nPages), but then faces in TRAK/STPC must use the new indices.