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.

Possible next features of QuickBMS

Featured Replies

  • Author
  • Localization

beedy, posted Sat Jul 06, 2019 9:12 am (49166)


I think this has been asked before but is there any possibilities to run XMemCompress with quickbms compiled on mac? I have extraction tool which execute quickbms.exe to compress files and I can run it on terminal typing /Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin/wine --cx-app quickbms.exe when I set crossover wine bottle to default. That's enough for me but it's easier and quickbms launch faster if it's possible to run XMemCompress native on mac.
  • Replies 679
  • Views 56
  • Created
  • Last Reply

Top Posters In This Topic

  • Author
  • Localization

aluigi, posted Thu Sep 26, 2019 2:09 am (50893)


@Delutto
I need the source code of the compression algorithm for adding it.
LZ77 and LZ78 have thousands of different implementations, quickbms already support the most used ones.

@GHFear
Eh no, only integers are supported.

@Shokoniraya
Please check the C/C reference guides for info about the *printf outputs:
http://www.cplusplus.com/reference/cstdio/printf/

@beedy
Eh no :)

@chrrox
Ok, noted
  • Author
  • Localization

aluigi, posted Thu Oct 03, 2019 10:21 am (51308)


@chrrox
Both chacha20 and poly1305 are already implemented in tomcrypt which is used by quickbms.
  • Author
  • Localization

aluigi, posted Fri Oct 04, 2019 11:32 am (51323)


ok chacha20 will be available since the one in tomcrypt isn't the simple stream cipher.

I'm working on quickbms 0.10.1 and I will release it as soon as possible, so this is the moment for reporting issues and new features!
  • Author
  • Localization

aluigi, posted Sat Oct 05, 2019 11:56 am (51332)


Quickbms 0.10.1 will have python support :D
Just finished implementing it (obviously without python27.dll import, so no need of Python installed if not used) and it works great:
Code:
set MEMORY_FILE string "
def multiply(a,b):
    print \"Will compute\", a, \"times\", b
    c = 0
    for i in range(0, a):
        c = c b
    return c
"

calldll MEMORY_FILE "multiply" "python" RET 123 456
print "RESULT %RET%"
  • Author
  • Localization

Manuel120M, posted Sat Oct 05, 2019 10:45 pm (51343)


HELLO aluigi can you please help me with this ...

ASSETS.GFC ASSETS.GOB From what I have found so far, the GFC file is the "map" of where the files are in the GOB files. Within the GOB files, there are "fragments" of data that start with STBL and end with ENBL (over_the_hedge.bms) is not valid for reimportation (because it contains the instructions "* log NAME" with MEMORY_FILEs) ... it does not generate any change when reimporting the modified data to the gfc / gob files .. Someone to help me .. Here I leave a picture I mark (2092 files found in 36 seconds) successful extraction: https://www.mediafire.com/view/sxs70pv2djn49pq Here I leave you a successful reimportation photo but it really does not generate any change to the game it marks me (0 files reimported in 45 seconds) I believe that it does not reimport successfully by name (MEMORY_FILEs) (Name): https://www.mediafire.com/view/uwruc9798crql8c
  • Author
  • Localization

aluigi, posted Sun Oct 06, 2019 5:16 am (51346)


@Manuel120M
First of all you are off-topic here, second you are using an old version of quickbms.
  • Author
  • Localization

shekofte, posted Thu Oct 10, 2019 9:17 pm (51443)


aluigi wrote:
Quickbms 0.10.1 will have python support :D
Just finished implementing it (obviously without python27.dll import, so no need of Python installed if not used) and it works great:
Code:
set MEMORY_FILE string "
def multiply(a,b):
    print \"Will compute\", a, \"times\", b
    c = 0
    for i in range(0, a):
        c = c b
    return c
"

calldll MEMORY_FILE "multiply" "python" RET 123 456
print "RESULT %RET%"


CONGRATULATION ! and thanks a lot !
I have little knowledge about python but I know many huge text processing offered in python ...
I am good in regular expression pattern matching too If you please make an introduction on advantages of supported python in quickbms and highlight them by yourself , we can pay attention ?
also whether as in your example Mathematical functions improvement expected too ?
your sincerely F.S
  • Author
  • Localization

aluigi, posted Sat Oct 12, 2019 12:37 pm (51473)


It's just a way for easily supporting another programming language and python can be used for many things that are currently impossible in quickbms
  • Author
  • Localization

michalss, posted Sun Oct 13, 2019 7:24 am (51487)


aluigi wrote:
It's just a way for easily supporting another programming language and python can be used for many things that are currently impossible in quickbms


NIce what about .NET core ?? Most common this days...
  • Author
  • Localization

aluigi, posted Sun Oct 13, 2019 11:01 am (51491)


Embedding .NET/Mono is madness, but I can check if it's easy to embed Lua
  • Author
  • Localization

aluigi, posted Tue Oct 15, 2019 8:24 am (51533)


Just finished to implement Lua.

The QuickBMS variables are visible in both python and lua, not sure if this is good or not.

Obviously this is just the first implementation and it will probably need improvements in the future.
For sure there is some memory leak because memory (Python) and stack (Lua) aren't clear for some reasons:
- Py_DECREF is a complex macro and not a function to call, I had to use python without any link to the dll
- returned pointer and strings in Lua may be removed by GC if we use lua_pop
  • Author
  • Localization

chrrox, posted Tue Oct 15, 2019 8:45 am (51534)


Would it be possible to setup a variable in python like a dict {}
and use that in quickbms.
or would I need to handle everything in the python side.
It would be nice to have a function that creates an empty dictionary
and be able to access and add to it in quickbms.
It will be great having python in quickbms.
Its hard to believe how useful quickbms has become. :D
  • Author
  • Localization

aluigi, posted Tue Oct 15, 2019 8:58 am (51537)


That's too much for quickbms :)
It simply allows to call functions and reading their return value (integer or string).
  • Author
  • Localization

aluigi, posted Sun Oct 20, 2019 6:34 pm (51649)


QuickBMS 0.10.1 is now available
  • Author
  • Localization

Shokoniraya, posted Fri Oct 25, 2019 8:41 am (51729)


thank you sir aluigi,
you made a Worthful program and that's great
i want to say thank you for everything and i hope quickbms turn to biggest programming tool

bms is a file scripting language and it's fast, clear, and have more possibility that other ones don't know and thank you for make it possible

best regards, who Believe in future of your work

i wish sir aluigi get too many success in his life and some day make quickbms studio to compile bms to exe based on main quickbms.exe parts

sorry for my bad grammar
  • Author
  • Localization

aluigi, posted Thu Nov 07, 2019 1:24 pm (51943)


Thanks! :D

In theory bms files can already be embedded in quickbms.exe, it's a feature I introduced some versions ago.
It's not like compiling the script but it worked well.
For info search the following section in quickbms.txt:
Quote:
C] Modkit distribution of quickbms.exe
  • Author
  • Localization

Shokoniraya, posted Fri Nov 08, 2019 7:12 am (51959)


i have a idea!
maybe you can make a QuickBMS runtime!

first, download this zip file: DOWNLOAD

in zip file, there is two exe file (TellTale_export_landb.exe & TellTale_import_landb.exe)
and there is a bms_runtime.exe for installing and a choice_notification_english.landb for test
before you click on bms_runtime.exe, click on TellTale_export_landb.exe and it will gives you a error!
if you install bms_runtime.exe, it will extract quickbms in appdata folder
and test the tools aftert installing and it will extract text .landb file and TellTale_import_landb.exe will create a new one!


and creating a batch file with -s script line, and compile it to exe can works like a tool with a runtime
if you create a studio with this idea, it will possible to create tools with QuickBMS Runtime! you can make a runtime!
note: bat files compiled with Bat To Exe Converter
  • Author
  • Localization

ducan012456, posted Sun Dec 01, 2019 2:36 pm (52333)


When I use reimport2, the SIZE_TEXT doesn't divided by 2.
How can I solve this problem ?
Here is my example script.

Code:
xmath SIZE_TEXT "SIZE_TEXT*2"
slog NAME OFF_TEXT SIZE_TEXT unicode
  • Author
  • Localization

Shokoniraya, posted Sun Dec 01, 2019 7:25 pm (52341)


ducan012456 wrote:
When I use reimport2, the SIZE_TEXT doesn't divided by 2.
How can I solve this problem ?
Here is my example script.

Code:
xmath SIZE_TEXT "SIZE_TEXT*2"
slog NAME OFF_TEXT SIZE_TEXT unicode


you have done two things wrong

wrong 1: in xmath, you should add a space between every variable and math glyph, which means you should write it like this: xmath SIZE_TEXT "SIZE_TEXT * 2"

wrong 2: in xmath, you will create a new variable, for such times, you should just use math, not xmath, because it should be in a direct math operation way, if you get a variable with available name again, your current variable will be lost and new variable will replace with old one, you should do it like this: math SIZE_TEXT * 2, beacuse you will get problem in reimporting
  • Author
  • Localization

ducan012456, posted Sun Dec 01, 2019 8:38 pm (52344)


Shokoniraya wrote:
ducan012456 wrote:
When I use reimport2, the SIZE_TEXT doesn't divided by 2.
How can I solve this problem ?
Here is my example script.

Code:
xmath SIZE_TEXT "SIZE_TEXT*2"
slog NAME OFF_TEXT SIZE_TEXT unicode


you have done two things wrong

wrong 1: in xmath, you should add a space between every variable and math glyph, which means you should write it like this: xmath SIZE_TEXT "SIZE_TEXT * 2"

wrong 2: in xmath, you will create a new variable, for such times, you should just use math, not xmath, because it should be in a direct math operation way, if you get a variable with available name again, your current variable will be lost and new variable will replace with old one, you should do it like this: math SIZE_TEXT * 2, beacuse you will get problem in reimporting

Thank you very much !! :D
  • Author
  • Localization

Shokoniraya, posted Mon Dec 02, 2019 6:36 am (52353)


Shokoniraya wrote:
ducan012456 wrote:
When I use reimport2, the SIZE_TEXT doesn't divided by 2.
How can I solve this problem ?
Here is my example script.

Code:
xmath SIZE_TEXT "SIZE_TEXT*2"
slog NAME OFF_TEXT SIZE_TEXT unicode


you have done two things wrong

wrong 1: in xmath, you should add a space between every variable and math glyph, which means you should write it like this: xmath SIZE_TEXT "SIZE_TEXT * 2"

wrong 2: in xmath, you will create a new variable, for such times, you should just use math, not xmath, because it should be in a direct math operation way, if you get a variable with available name again, your current variable will be lost and new variable will replace with new one, you should do it like this: math SIZE_TEXT * 2, beacuse you will get problem in reimporting
  • Author
  • Localization

cai_miao, posted Sun Dec 08, 2019 8:18 pm (52467)


Hello aluigi,
big thank you for your powerful tool.

I'm recently using ff4 ssam script to extract another *.mass archive from NDS game Avalon Code (using JP ver, also developed by Matrix software).
It's also a mixture of plain files and *.lz compressed files, and so far the file decompression is good,
but when I try to reimport, the game just don't recognize it and get crashed.

I did a simple inspect, vanilla header of compressed files (for example .NCGR.lz) starts with
Code:
10 B0 04 00 00 then `RGCN`

while reimport header is
Code:
40 B0 04 00 00 then `RGCN`

and I also tried:
1. Change the `comtype` to `lz77wii_raw10`, but it simply won't let me extract/import.
2. Change the header bit from `0x40` to `0x10`, same result in crashing the game. Only confirmed the algorithm QuickBMS defaultly used for lz77wii is imcompatible for my case.
3. Using `comtype NTCOMPRESS` (tried to get clue from src) but it just tell me
Code:
Error: unsupported compression -1 in reimport mode

4. Using CrystalTile2's embedded lz77 compress to get the file compressed, and directly overwrite to corresponding address of *.mass archive, and it simply works. (output file also with header bit 0x10) But that would be asspain if I want to do a massive import.

Based on my inspection, I'm here asking for help with:
1. A fix on the lz77wii compression
2. A temporary fix for the script to extract/import untouched/compressed *.lz files (raw out)

Sadly, I have limited ability on coding, and it is a bit complicated for me to understand the bms script. I tried to make a raw output script, but can't just get pass unknown errors.

Can you help me out? Ty in advance. I can send you related files through email.
  • Author
  • Localization

aluigi, posted Tue Mar 03, 2020 3:04 pm (54392)


The problem is that lz77wii is a container of N algorithms, in reimport mode it's not possible to know what algorithm was used during extraction and therefore quickbms selects just one of them hardcoded in the tool
Guest
This topic is now closed to further replies.

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.