Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zlib.error Error -3 while decompressing data #9

Closed
LioMajor opened this issue Jun 21, 2019 · 26 comments
Closed

zlib.error Error -3 while decompressing data #9

LioMajor opened this issue Jun 21, 2019 · 26 comments

Comments

@LioMajor
Copy link

LioMajor commented Jun 21, 2019

  • pylivemaker version: 0.11 / 0.12
  • Python version: 3.7.0
  • Operating System: Windows 10 / 7
  • LiveMaker game:

Description

I want to decrypt game.ext / game.dat / game.001 's lsb files, currently it's
not supported to decrypt or patch splittet vff using pylivemaker.

What I Did

exvff works and i got my lsb files, is it possible to add the support for it
including utf-8 support like in tinfoil's irl honoring japanese?

C:\temp>lmar x game.ext
Traceback (most recent call last):
  File "C:\python\Scripts\lmar-script.py", line 11, in <module>
    load_entry_point('pylivemaker==0.1.2.dev0', 'console_scripts', 'lmar')()
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\cli.py", line 76, in x
    lm.extract(info, output_dir)
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\archive.py", line 592, in extract
    self._extract(name, path)
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\archive.py", line 571, in _extract
    data = self.read(entry)
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\archive.py", line 658, in read
    data = zlib.decompress(data)
zlib.error: Error -3 while decompressing data: incorrect header check

Another question would be to add an easier way to edit lsb files. To work with hundreds
.lns is a lot extra work. It would be nice to have a way to lsb <> xml like lmcompiler.py allows.
lmcompiler.py doesn't work for this game :/

@pmrowla
Copy link
Owner

pmrowla commented Jun 21, 2019

For the split archive decompression, I did not have any samples to test with, so like you said it's unsupported right now. If you are willing to share your original game's files (you can just email me [email protected]) I can take a look at fixing the split archive handling next week.

I'm confused by your utf-8 question, whenever pylivemaker dumps anything as text it should be doing it as utf-8. All of the relevant command line tools have -e/--encoding options that allow you to specify either utf8 or cp932 and the default should be utf8.

For the lsb editing question, yes that's definitely an issue. At the very least, you can dump lsb files to XML to make looking at them easier with

lmlsb dump --mode=xml 0001.lsb > 0001.lsb.xml

But there's currently no way to read an edited version of that xml back into pylivemaker. At some point, I would like to build support for reading actual livemaker XML and text lsc files into pylivemaker, (and I think there's a lot of commented out code still left in pylivemaker related to this) but doing so will require implementing a parser for livemaker's conditional expression syntax, which is why this never made it into the initial release.

@LioMajor
Copy link
Author

LioMajor commented Jun 21, 2019

lsb > xml didn't work

C:\Temp\Extracted\tools\1>lmlsb dump --mode=xml 00000A45.lsb > 00000A45.lsb.xml
Label lookup not yet implemented.
Label lookup not yet implemented.
Label lookup not yet implemented.
Traceback (most recent call last):
  File "C:\python\Scripts\lmlsb-script.py", line 11, in <module>
    load_entry_point('pylivemaker==0.1.2.dev0', 'console_scripts', 'lmlsb')()
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Python\lib\site-packages\click-7.0-py3.7.egg\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\cli.py", line 243, in dump
    root = lsb.to_xml()
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\lsb\lmscript.py", line 293, in to_xml
    command.append(c.to_xml())
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\lsb\command.py", line 345, in to_xml
    x = v.to_xml()
  File "C:\Python\lib\site-packages\pylivemaker-0.1.2.dev0-py3.7.egg\livemaker\lsb\novel.py", line 787, in to_xml
    xml = '<![CDATA[\n{}\n]]>'.format(dec.decompile())
TypeError: decompile() missing 1 required positional argument: 'tpword'

As for utf8, pylivemaker doesn't extract japanese files/folders and the name is garbled when region is not set to japanese, but tinfoil irl does.

For the other, i'll send you a mail shortly, thank you.

@pmrowla
Copy link
Owner

pmrowla commented Jun 21, 2019

I pushed a change just now that should fix the xml dump error.

I also received your mail, thanks for the sample. I should have some free time next week to look into the split archive extraction issue as well as your filename encoding issue.

@LioMajor
Copy link
Author

LioMajor commented Jun 21, 2019

Thank you a lot. I hope extracting these lsb will work and i can tl it :)

lsb > xml works now, but i can see why it's difficult to use:

&lt;TXSPN&gt;いいえ&lt;PG&gt;&#13;

@pmrowla
Copy link
Owner

pmrowla commented Jun 26, 2019

Yeah, right now the XML dump just stores the script text as CDATA, since there isn't really any other practical way to do it and still maintain valid XML output. Although, those tag characters probably don't need to be escaped.

As far as I can tell from playing around with my own test projects in LiveNovel, LiveMaker's actual XML-format .lsc project files don't contain the scenario scripts at all, they are stored as either the already converted binary (.lsb) data, or in their own .lns files, and I am trying to make pylivemaker's output align with LiveMaker's actual spec whenever possible.

@pmrowla
Copy link
Owner

pmrowla commented Jun 26, 2019

I pushed a change that should allow extracting split archives.

Also, as far as I can tell the UTF-8 filename issue isn't a bug, it's just a Windows CMD prompt thing. The default console font for Windows (Consolas on my fresh Win10 install) does not include support for Japanese characters. Pylivemaker is outputting UTF-8 filenames, and even though the characters are displayed as boxes in the terminal window, the actual UTF-8 Japanese filenames are being extracted properly, and can be seen correctly if you open the extracted directories in the Windows file explorer.

If you change the command prompt font to a font that supports Japanese characters (such as MS Gothic) the text will be displayed correctly in the terminal window, and you do not need to change the system locale. (But changing the system locale to Japanese also changes the default command prompt font to MS Gothic). I have tested this in both CMD prompt and Powershell on my Windows 10 machine.

lmar x -v -o game-dir game.ext output with default font:
powershell
cmd

With font set to MS Gothic (and default EN-US system locale)
cmd

@LioMajor
Copy link
Author

Wow, thanks. That's awesome.

Would there be a way to add a function that allows to edit none line options such as:

MesNew "メッセージボックス" "メッセージボックス土台" 10 10 GetProp("メッセージボックス土台", 5) - 10 - 10 GetProp("メッセージボックス土台", 6) - 10 - 10  1100   "MS ゴシック" 16 6 16777215 16711680 0 16776960 1  0 "ノベルシステム\メッセージボックス\再生中.lsc" "ノベルシステム\メッセージボックス\イベント.lsc"     "ノベルシステム\メッセージボックス\右クリック時.lsc"    "ノベルシステム\メッセージボックス\終了.lsc" "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0   "ノベルシステム\メッセージボックス\再生開始.lsc"  "ノベルシステム\メッセージボックス\アイドル時.lsc"     0 0 0    0    1 1 

In LiveMajer3 it defines how to handle text, font, color and so on.
Ex:
16 = Fontsize 16
6 = Linespacing
167XXXX = Color

Most important, is to turn the last 1 to 0 to allow non japanese chars without letter spacing in メッセージボックス作成.lsb
Secondary is to modify 初期化.lsb and プレビューメニュー処理.lsb to remove letter spacing in history (needs to add the missing option to disable it).

@LioMajor
Copy link
Author

I did a dirty hex edit to fix it for this game, worked on 2 lsb files, but on the third it failed. Would really help to have this.

@pmrowla
Copy link
Owner

pmrowla commented Jun 28, 2019

I pushed some changes:

  • the scenario script tag characters should be output correctly in XML mode for lmlsb dump now
  • lmlsb dump now has a -o/--output-file option so you don't have to pipe console output to a text file
  • there is now a very dumb and simple lmlsb edit command line tool that takes an LSB filename and a command line number.

At the moment can only you can only edit simple numeric fields in a specific set of command types, but this should at least allow you to edit the non-japanese character spacing parameter. pylivemaker uses the actual property names to identify the command parameters and not the ARG_### values from IRL, so you will want to set the PR_FONTCHANGEABLED field to 0.

It will prompt you to enter a value for each editable parameter, just press enter to keep the current value.

Ex (this is using the files you sent me, where I am assuming you had already patched that field to be 0?):

py:pylivemaker ❯ lmlsb edit メッセージボックス作成.lsb 36
36: MesNew "メッセージボックス" "メッセージボックス土台" 10 10 GetProp("メッセージボックス土台", 5) - 10 - 10 GetProp("メッセージボックス土台", 6) - 10 - 10
1100   "MS ゴシック" 16 6 16777215 16711680 0 16776960 1  0 "ノベルシステム\メッセージボックス\再生中.lsc" "ノベルシステム\メッセージボックス\イベント.lsc"
    "ノベルシステム\メッセージボックス\右クリック時.lsc"    "ノベルシステム\メッセージボックス\終了.lsc" "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0
  "ノベルシステム\メッセージボックス\再生開始.lsc"  "ノベルシステム\メッセージボックス\アイドル時.lsc"     0 0 0    0    1 0

Enter new value for each field (or keep existing value)
Name ["メッセージボックス"]: <skipping uneditable field>
PR_PARENT ["メッセージボックス土台"]: <skipping uneditable field>
PR_LEFT [10]:
PR_TOP [10]:
PR_WIDTH [GetProp("メッセージボックス土台", 5) - 10 - 10]: <skipping uneditable field>
PR_HEIGHT [GetProp("メッセージボックス土台", 6) - 10 - 10]: <skipping uneditable field>
PR_ALPHA []: <skipping uneditable field>
PR_PRIORITY [1100]:
...
PR_TAG []: <skipping uneditable field>
PR_CAPTURELINK [1]:
PR_FONTCHANGEABLED [0]: 0
PR_PADDINGLEFT []: <skipping uneditable field>
PR_PADDING_RIGHT []: <skipping uneditable field>
Backing up original LSB.
Wrote new LSB.

@LioMajor
Copy link
Author

LioMajor commented Jun 28, 2019

Thanks for adding the file output ^_^

In メッセージボックス作成.lsb there are more than one MesNew, some are set to 0 by default for system menu, and others for ingame text are set to 1.

lmlsb edit seems to still have a bug, the line to edit doesn't match.

Example from the files i gave to you: 初期化.lsb (renamed to 1.lsb to work without japanese region)

  63: If 1
  64:     Calc __fontname = StatusFontName
  65: Else
  66:     Calc __fontname = ""
  67: MesNew "履歴用メッセージボックス" "履歴用背景" 8 0 履歴用ボックス幅 - 16 履歴用ボックス高さ     __fontname 履歴用フォントサイズ 履歴用行間 履歴用フォント色 履歴用フォントリンク色 履歴用フォント縁色  履歴用アンチエイリアス  0            "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0 -1         履歴用フォント影色 履歴用フォント縁 履歴用フォント影    0      0 
  68: SetProp "履歴用シネマ" 3 @ScrWidth - GetProp("履歴用枠左上", 5) + 履歴用ボックス幅 + GetProp("履歴用スクロールバー", 5) + GetProp("履歴用枠右上", 5) / 2
  69: If Exists("タイトル背景")
  70:     Calc __y = 16
  71: Else
  72:     Calc __y = 0
  73: SetProp "履歴用シネマ" 4 __y + @ScrHeight - __y - GetProp("履歴用枠左上", 6) + 履歴用ボックス高さ + GetProp("履歴用枠左下", 6) / 2
  74: SetProp "履歴用シネマ" 5 GetProp("履歴用枠左上", 5) + 履歴用ボックス幅 + GetProp("履歴用スクロールバー", 5) + GetProp("履歴用枠右上", 5)
  75: SetProp "履歴用シネマ" 6 GetProp("履歴用枠左上", 6) + 履歴用ボックス高さ + GetProp("履歴用枠左下", 6)

image

As you can see, the file doesn't contain PR_FONTCHANGEABLED, but for this and プレビューメニュー処理.lsb it needs to be added.

Also there seems to be something off with プレビューメニュー処理.lsb, i can't use pylivemaker on it.
image

@pmrowla
Copy link
Owner

pmrowla commented Jun 28, 2019

lmlsb edit should allow you to set the properties you need for any MesNew command now even when the field was not set in the original lsb.

The problem with プレビューメニュー処理.lsb was a windows specific issue with the numpy float type used in pylivemaker, it should also be fixed now.

@LioMajor
Copy link
Author

LioMajor commented Jun 28, 2019

I can finally read the file ^_^

Inserting works, but it breaks the file because it adds " ___arg = ".

232: MesNew "履歴用メッセージボックス" GetProp("メッセージボックス", 1) GetProp("メッセージボックス", 3) GetProp("メッセージボックス", 4) GetProp("メッセージボックス", 5) GetProp("メッセージボックス", 6)  GetProp("メッセージボックス", 12) GetProp("メッセージボックス", 13) GetProp("メッセージボックス", 14) GetProp("メッセージボックス", 15) GetProp("メッセージボックス", 16) GetProp("メッセージボックス", 18) GetProp("メッセージボックス", 19) GetProp("メッセージボックス", 20) GetProp("メッセージボックス", 21) GetProp("メッセージボックス", 22) GetProp("メッセージボックス", 25) 0 0            "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0 -1         GetProp("メッセージボックス", 141) GetProp("メッセージボックス", 142) GetProp("メッセージボックス", 143)    0    0 ___arg = 0 0 

@pmrowla
Copy link
Owner

pmrowla commented Jun 28, 2019

The ___arg issue should be fixed now, you will probably have to revert to the original version (without inserted parameter) of the LSB file before running the most recent commits.

I'm not sure what you mean by shifted options for the other file? The strings in the entries for things like PR_FONTNAME and PR_FONTHEIGHT are livemaker engine variable names, so the font/fontheight/etc will be set to whatever that variable contains at runtime (and I would not recommend editing those fields right now).

__fontname refers to one of the arguments that will be passed into 初期化.lsb when some other lsb file runs it via a Call command (you can see where __fontname and some other script argument variables are defined at the start of 初期化.lsb). So the font for this message box should be specified by whatever lsb file is calling 初期化.lsb, and not in 初期化.lsb itself.

Basically for LiveMaker's .lsc project files, variable names are strings without quotes, and actual string values are anything inside "" quotes.

@LioMajor
Copy link
Author

Original line:

67: MesNew "履歴用メッセージボックス" "履歴用背景" 8 0 履歴用ボックス幅 - 16 履歴用ボックス高さ     __fontname 履歴用フォントサイズ 履歴用行間 履歴用フォント色 履歴用フォントリンク色 履歴用フォント縁色  履歴用アンチエイリアス  0            "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0 -1         履歴用フォント影色 履歴用フォント縁 履歴用フォント影    0      0 

It doesn't have all options as you can see in the screenshot.
PR_FONTHIGHT is 履歴用フォントサイズ
That's because for the use, there is no need to have a fontsize.

@pmrowla
Copy link
Owner

pmrowla commented Jun 28, 2019

Yes, PR_FONTHEIGHT is being set to the value stored in the system variable 履歴用フォントサイズ (historyfontsize). I still don't understand what you mean by "shifted" though? It looks to me like all of the default values for each field are lining up properly with what the original line contains.

@LioMajor
Copy link
Author

I totaly forgot about the historyfontsize, my mistake ^^'''

Now i know where my hexedit for 初期化.lsb went off and didn't work.

pmrowla you are great, thank you a lot!!!

@LioMajor
Copy link
Author

LioMajor commented Jul 12, 2019

@pmrowla

There is a problem to edit ingame menus because i can't change the content for
image
calc and jump lines. Could you add this please to the edit function?

@pmrowla
Copy link
Owner

pmrowla commented Jul 15, 2019

I should be able to add this, but might not be able to get to it until next week, been busy with some other work at the moment.

@pmrowla
Copy link
Owner

pmrowla commented Jul 30, 2019

Sorry for the delay, as I said I've been busy with some other work lately. I pushed a commit which allows editing specific Calc and Jump commands.

For Calc:

  • AddArray() can be edited as long as the array entry is a scalar value (or var name) and not a nested expression
  • To/Assignment (operator =) can be edited as long as the right hand side value is a scalar value. Not sure if your game uses this at all, but I've seen some LM games that use this to assign default values for some variables that may require translation (i.e. player character name, etc)

For Jump:

  • Any unconditional jump can be edited
  • Any jump with a conditional statement (==/!=/</>/<=/>=) can be edited as long as both sides of the statement are scalar values (or var names) and not nested expressions

@LioMajor
Copy link
Author

LioMajor commented Jul 30, 2019

Thanks a lot ^_^
image
It works well to edit.

Until now i did edit it via HexEditor and was a lot extra work (search&replace with japanese + fixing lenght).
Ex.
image
1C = Text lenght, without fixing it breaks the file and i forgot it sometimes.

Bokuyome was the first game where i was unable to use lmar for extraction / inject lsb files
image

PS: lmpatch doesn't honor splitted .dat files, ex.
game.ext game.dat game.001, injecting one lsb file creates a single file wich doesn't work to start the game
To make it work, you have to remove game.ext and split the new generated file at exact 1.073.741.824 bytes (new game.dat) and rest (new game.001).

@pmrowla
Copy link
Owner

pmrowla commented Jul 31, 2019

Yeah, I didn't update lmpatch to support split archives when I added the stuff for extracting them with lmar, but it's on my todo list.

@LioMajor
Copy link
Author

LioMajor commented Aug 2, 2019

There is a weird bug in injecting lns when there is just the label.

lns

{STOPMOVIE}

{CHANGECG "動画" "グラフィック\動画\みらい2\余韻.gal" "REPEAT" "1" "1000" "0" "0" "" "1"}

{PLAYSND "BGM\【緊張・不安・謎・不気味】緊張感のある感じ.wav" "BGM" "REPEAT" "400" "0"}

{PLAYSND "SE\余韻2.wav" "SE" "REPEAT" "800" "0"}

{PLAYSND "SE\フェラ-くちゅ+ぷちゅ.wav" "SE2" "REPEAT" "800" "0"}

{PLAYSND "VOICE\J06.wav" "VOICE" "REPEAT" "1000" "0"}

<TXSPN>Doctor"Haaa... That was great, Mirai-chan..."

But after injecting it is:

<TXSPN>{STOPMOVIE}{CHANGECG "動画" "グラフィック\動画\みらい2\余韻.gal" "REPEAT" "1" "1000" "0" "0" "" "1"}

EDIT:
Tryed to workaround it, but this breaks playing movie files as it removes {STOPMOVIE} when it is inside .lns

@pmrowla
Copy link
Owner

pmrowla commented Aug 6, 2019

The lns issue is an actual bug so I spun it off into it's own bug report.

For comment regarding bokuyome, LMCompression type 3 is LiveMaker Pro encryption, and isn't currently supported in pylivemaker (see #3) because I have no samples to test against.

Since the original problems w/unpacking split archives are fixed now, I'm going to close this issue. If you come across new issues specific to lmlsb edit, use #11.

@Quartzbell
Copy link

Quartzbell commented Jan 9, 2024

I pushed some changes:

  • the scenario script tag characters should be output correctly in XML mode for lmlsb dump now
  • lmlsb dump now has a -o/--output-file option so you don't have to pipe console output to a text file
  • there is now a very dumb and simple lmlsb edit command line tool that takes an LSB filename and a command line number.

At the moment can only you can only edit simple numeric fields in a specific set of command types, but this should at least allow you to edit the non-japanese character spacing parameter. pylivemaker uses the actual property names to identify the command parameters and not the ARG_### values from IRL, so you will want to set the PR_FONTCHANGEABLED field to 0.

It will prompt you to enter a value for each editable parameter, just press enter to keep the current value.

Ex (this is using the files you sent me, where I am assuming you had already patched that field to be 0?):

py:pylivemaker ❯ lmlsb edit メッセージボックス作成.lsb 36
36: MesNew "メッセージボックス" "メッセージボックス土台" 10 10 GetProp("メッセージボックス土台", 5) - 10 - 10 GetProp("メッセージボックス土台", 6) - 10 - 10
1100   "MS ゴシック" 16 6 16777215 16711680 0 16776960 1  0 "ノベルシステム\メッセージボックス\再生中.lsc" "ノベルシステム\メッセージボックス\イベント.lsc"
    "ノベルシステム\メッセージボックス\右クリック時.lsc"    "ノベルシステム\メッセージボックス\終了.lsc" "ノベルシステム\メッセージボックス\リンク.lsc" 1 4 0
  "ノベルシステム\メッセージボックス\再生開始.lsc"  "ノベルシステム\メッセージボックス\アイドル時.lsc"     0 0 0    0    1 0

Enter new value for each field (or keep existing value)
Name ["メッセージボックス"]: <skipping uneditable field>
PR_PARENT ["メッセージボックス土台"]: <skipping uneditable field>
PR_LEFT [10]:
PR_TOP [10]:
PR_WIDTH [GetProp("メッセージボックス土台", 5) - 10 - 10]: <skipping uneditable field>
PR_HEIGHT [GetProp("メッセージボックス土台", 6) - 10 - 10]: <skipping uneditable field>
PR_ALPHA []: <skipping uneditable field>
PR_PRIORITY [1100]:
...
PR_TAG []: <skipping uneditable field>
PR_CAPTURELINK [1]:
PR_FONTCHANGEABLED [0]: 0
PR_PADDINGLEFT []: <skipping uneditable field>
PR_PADDING_RIGHT []: <skipping uneditable field>
Backing up original LSB.
Wrote new LSB.

Thank you for the option to patch the lsb file.

Is there a way to enter the value directly via command line arguments instead of waiting for the prompt? Currently this is the only hurdle to tackle in my workflow to fully automate the translation process.
Probably something like the following command would be nice:

lmlsb edit メッセージボックス作成.lsb 36 --param PR_FONTCHANGEABLED 0

@Quartzbell
Copy link

Quartzbell commented Apr 4, 2024

I pushed a change that should allow extracting split archives.

@pmrowla
I noticed that the support for split archive has been implemented. But I don't find any documentation on how to do that.
I'm still having the problem :
image

@pmrowla
Copy link
Owner

pmrowla commented Apr 4, 2024

@pmrowla I noticed that the support for split archive has been implemented. But I don't find any documentation on how to do that.

@Quartzbell split archive extraction should work automatically. Does your game have a .ext file? If it does, you need to pass the .ext file into lmar instead of the .dat file. If it doesn't have a .ext file it's probably a bug specific to your game, in which case you will need to open a new bug report.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants