MairwunNx / SacredUtils

Configuration utility for Sacred & Sacred Underworld with Material Design. Abandoned 05/07/2020.
Apache License 2.0
32 stars 5 forks source link

Missing text strings after rebuild of global.res #5

Open Hexaae opened 6 days ago

Hexaae commented 6 days ago

Describe the bug

Missing text strings once I rebuild it\global.res

Steps to reproduce the behavior

Extract global.res and rebuild it, without modifications. Go to Extras from Main Menu. 'Back' button (Indietro) is missing.

Expected behavior

Back button should be visible.

Screenshots

Missing Back (Indietro) button under mouse pointer: Sacred 13_10_2024 17_41_58

Environment information

Sacred Gold 2.28 SacredUtils-1.2.4.3-010219-release-1-official Windows 11 23H2 (22631.4317) .NET Framework version 1.1.4322 and .NET Runtime 6.0.16 x64

Additional context

If you need I can share italian global.res. Before you ask, there are no diff if I launch the non-PureHD version.

Hexaae commented 6 days ago

Aargh! Confronting the files (original and rebuilt) with a hex-editor the last one is truncated!

Looking at the truncated string in the extracted CSV there's a problem in the next line (to the truncated one) too long (column 4010+!) and with wrong chars at the end:

2143510844          Durata dei tentacoli    
2143536689          Codice d'onore di Sacred<n><n>Benvenuto al mondo di Ancaria. Se vuoi diventare un vero eroe e entrare a far parte della leggenda, devi rispettare il nostro codice d'onore. I codice è stato creato per garantire che le forze del male vengano sconfitte in base a principi di nobiltà e dignità che caratterizzano i veri eroi. Leggi attentamente il codice, perché ti farà scoprire la differenza tra un vero eroe e un vile. E non dimenticare mai che gli dei di Ancaria sorvegliano costantemente il loro regno e giudicano: coloro che rispetteranno il codice verranno ricompensati; chi lo infrangerà, invece, sarà castigato...<n><n>Principi generali<n><n>Durante il tuo viaggio per il mondo di Ancaria incontrerai molti altri eroi. Sarete voi a modellare il mondo con le vostre azioni, ma se seguirete questi semplici e logici principi tutti i giocatori godranno di mutuo rispetto, e si eviteranno inutili conflitti.<n><n>-<t>Non è permesso minacciare o importunare altri giocatori, né realizzare alcuna azione di natura minacciosa o intimidatoria.<n>-<t>Non è permesso utilizzare un linguaggio sessualmente esplicito, abusivo o offensivo, né diffondere materiali di tale natura attraverso i diversi canali di comunicazione di Sacred. È assolutamente proibito applicare ai personaggi nomi insultanti o osceni, così come mandare messaggi e commenti basati su pregiudizi razziali, sessuali, etnici o religiosi.<n>-<t>Non è permesso farsi passare per dipendenti di Ascaron Entertainment o FX Interactive.<n>-<t>Non è permesso fare uso dei server o dei siti web di Sacred per vendere, richiedere o promuovere alcun prodotto o servizio, comprese attività come marketing piramidale, catene e scambi di materiale per adulti.<n>-<t>Non è permesso modificare, alterare o sabotare nessun elemento del server o delle pagine web di Sacred.<n>-<t>Non è permesso usare i server o le pagine web di Sacred per il trasferimento di software pirati o illegali o di qualsiasi genere di contrabbando.<n>-<t>Non è permesso organizzare o partecipare a nessun gruppo o squadra all'interno di Sacred che promuova o sia basato in filosofie dal contenuto razzista, sessista, antireligioso, xenofobo o omofobo.<n>-<t>Non è permesso fornire informazioni false o nascondere intenzionalmente alcuna informazione tra quelle richieste per registrare un account in Sacred.<n>-<t>Non è permesso mandare, comunicare o trasmettere i dati personali di nessuna persona attraverso il servizio o pagina web di Sacred senza l'autorizzazione scritta della persona in questione.<n>-<t>Non è permesso usare il servizio o la pagina web di Sacred per trasmettere nessun tipo di materiale protetto da diritti d'autore di cui non si posseggano tutti i diritti, a meno che non si disponga del permesso scritto dell'autore o proprietario del copyright.<n>-<t>Non è permesso interferire, sabotare o decifrare alcuna trasmissione dal o verso il server o il cliente di Sacred senza un consenso scritto di Ascaron Entertainment.<n>-<t>Non è permesso trarre alcun beneficio da possibili errori di programma di Sacred, né comunicare o diffondere tali errori per permettere ad altri di trarne beneficio. Inoltre, la scoperta di eventuali errori dovrà essere comunicata il prima possibile a sacredonline@fxinteractive.com.<n>-<t>Non è permesso realizzare o partecipare a alcuna azione che sia dannosa per Sacred o per gli utenti del gioco.<n>-<t>Non è permesso trasmettere a terzi informazioni sui dipendenti di Ascaron o FX. Questo divieto include la pubblicazione di nomi di account di amministratori o supervisori del servizio.<n><n><n>Sanzioni<n>L'uso di strumenti altrui, "hacks" di memoria o qualsiasi altro mezzo che permetta di essere in vantaggio su altri giocatori o di leggere dati del gioco è assolutamente proibito, a meno che sia dimostrato che si tratta di caratteristiche predisposte dal gioco o che siano strumenti permessi da Ascaron e FX.<n><n>Nel caso in cui esistesse un numero sufficiente di indizi riguardo l'infrazione del codice d'onore di Sacred o il non rispetto delle norme e lo spirito del gioco da parte di un giocatore, Ascaron e FXڙЁĆ̌Ÿ6Ÿ6

image

The next line begins with strange syntax (not Unicode "...00+char+00") indeed:

image

... there are 1157 matches for $26$20 from the hex-editor!

Here is the file: https://1drv.ms/u/s!ApMUGr0cuN39g-xP2w9n-hTxjwScpA?e=IfQdUZ (link expires at the end of November 2024)

Hexaae commented 6 days ago

Ouch! It seems the original Italian global.res is broken :( After further analysis with the hex editor the long string starting with "Sacred Code of Honor" (Codice d'onore di Sacred) in the english global.res looks like this:

image

... while the italian globall.res has a much bigger garbage gap after it with $00$00 and other broken bytes:

image

... But this is another story.

Hexaae commented 6 days ago

CONFIRMED BUG

In the meanwhile I've just found how to definitely reproduce the bug in the rebuild process of the global.res. I tested the english version: us\global.res, extracted it, and rebuilt it without modifications, and it truncated some bytes at the end of the new global.res file! If you repeat this process it will truncate even more bytes and strings backwards every time!

EDIT: as a temp workaround, add 2 bytes at the end of global.csv: "...Wachholz(TAB)" --> "...WachholzAA(TAB)", and only then rebuild with the Pack global.res file button! This will generate a correct global.res binary (correctly ending with "...Wachholz(TAB)").