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

aluigi, posted Sat Apr 27, 2019 11:27 am (47356)


Yes, there you have 'slog "" OFFSET SIZE unicode' so doesn't matter what bytes you have at SIZE 1, SIZE 2 and so on.

Anyway it was useful to spot a little rare thing.
Basically SLog works with text and it's possible to use non-printable bytes like 0x0d and 0x0a using \r and \n, while testing your file I noticed that \0 (the NUL byte) wasn't used because it was filtered by the function that converts utf8 data to unicode.
For example "asdf\x00asdf" in Slog unicode should produce a string of 4 1 4 characters while currently it produces 4 characters.
It's NOT a bug but I prefer to handle it in the final version released tomorrow and produce the 4 1 4 output... it's useless but who knows :)
  • Replies 679
  • Views 56
  • Created
  • Last Reply

Top Posters In This Topic

  • Author
  • Localization

aluigi, posted Sun Apr 28, 2019 6:26 am (47377)


QuickBMS 0.10.0 is out
  • Author
  • Localization

chrrox, posted Sun Apr 28, 2019 12:38 pm (47389)


was ALLZ compression added?
I can't seem to find it.
  • Author
  • Localization

aluigi, posted Sun Apr 28, 2019 1:35 pm (47393)


I guess you mean ALZSS
  • Author
  • Localization

Shokoniraya, posted Tue Apr 30, 2019 12:01 pm (47458)


aluigi, please make a quick update

there is a problem

if size is 0, then offset will set to 0? can you just set it to act like normal?
i want to make script for a text file with offset (no size)
if i remove a line, then offset will turn to 0
and game will read header as a text (because offset is 0 and just in one game)
if size is 0, then OFFSET must be act like normal! (like anyother size! not set to zero just because size is zero!)
this is a problem and some games will crash if text-offset turn to 0!
please fix it
  • Author
  • Localization

aluigi, posted Tue Apr 30, 2019 12:19 pm (47459)


What reimport mode are you using?
Do you have a sample for replicating the problem on the fly?
  • Author
  • Localization

Shokoniraya, posted Tue Apr 30, 2019 7:05 pm (47470)


another bug!
en.mo is a empty file (i wrote zero in every offset blocks)
and see what happening after importing!! (check in hex editor)

quickbms has bug in some cases, please accept it (same story in past months :cry: )

mo.zip

mo.zip

  • Author
  • Localization

Shokoniraya, posted Tue Apr 30, 2019 7:33 pm (47471)


a sample file uploded in this comment to prove it (tfo.zip)
in this file, i removed text and wrote zero in offset block, but offset must turn to 20 (and add a zero at end of text) not zero! if text is empty, then add new offset with one zero or two (its up to unicode)

tfo.zip

tfo.zip

  • Author
  • Localization

Shokoniraya, posted Fri May 03, 2019 11:07 am (47555)


some new features for quickbms

add UTF-32 support
add quiet mode
  • Author
  • Localization

aluigi, posted Fri May 03, 2019 4:52 pm (47560)


UTF-32? I don't see any need to use it, nobody use it.

For the quiet mode, have you tried -Q?

Regarding the other 2 posts I have not checked them yet.

Please note that there is a bug (I used atoi instead of myatoi) in -b, -b 0x2d doesn't work but -b works, so -b 0x20 doesn't while -b " " does.
  • Author
  • Localization

aluigi, posted Fri May 03, 2019 4:58 pm (47561)


Shokoniraya wrote:
another bug!
en.mo is a empty file (i wrote zero in every offset blocks)
and see what happening after importing!! (check in hex editor)

quickbms has bug in some cases, please accept it (same story in past months :cry: )

No, quickbms is correct, your script is wrong:
Code:
. 000003f4 get     LAST_OFF   0x00000a68 -2
. 000003f4 get     LENGHT     0x00000120 4
. 000003f8 get     OFFSET     0x00000000 4
  • Author
  • Localization

aluigi, posted Fri May 03, 2019 5:00 pm (47562)


Shokoniraya wrote:
a sample file uploded in this comment to prove it (tfo.zip)
in this file, i removed text and wrote zero in offset block, but offset must turn to 20 (and add a zero at end of text) not zero! if text is empty, then add new offset with one zero or two (its up to unicode)

Same as for the other sample, OFFSET is zero and FAKE_SIZE is not declared which means it's zero.
  • Author
  • Localization

Shokoniraya, posted Fri May 03, 2019 5:34 pm (47565)


utf-32 used in some new games
like mortal kombat and some engine files
  • Author
  • Localization

aluigi, posted Fri May 03, 2019 5:42 pm (47566)


I will check what I can do about utf32.
I think Assetto Corsa (data.acd) uses it too, but they are really very very rare cases.
  • Author
  • Localization

Shokoniraya, posted Wed May 08, 2019 1:09 pm (47669)


aluigi, another problem, quickbms just can read Uint and why cant read same as normal int? its a problem in negative numbers bacause Uint doesnt have any negative number!

can you replace correct version of quickbms with a fixed version for that?
  • Author
  • Localization

aluigi, posted Sun May 19, 2019 2:06 pm (47827)


The story about unsigned int and int is complicated because for quickbms they are basically the same, the only difference is with "if", "math" and some other instructions.

If you use quickbms_4gb_files, EVERY 32bit field is unsigned because 0x00000000ffffffff is positive, while in quickbms it's 0xffffffff which is negative.

Long story short, if you want a signed 32bit use signed_long which is universally accepted:
Code:
get VAR signed_long
  • Author
  • Localization

Shokoniraya, posted Sat Jun 15, 2019 3:49 pm (48811)


sir aluigi, why its not possible to use float (single or 32 float) in putvarchr?

example code
Code:
get VAR float
putvarchr MEMORY_FILE1 0 VAR float MEMORY_FILE1

can i write(put) a float VAR in memory_file somehow?
  • Author
  • Localization

aluigi, posted Sat Jun 15, 2019 4:46 pm (48816)


floats aren't really supported. They are converted to integer and saved without the part after the comma.

Example:
"put 123.456 float MEMORY_FILE" -> 123.000 (00 00 f6 42)
if input is 79 e9 f6 42, "get DUMMY float" read 123

Long story short, do NOT use floats in quickbms.
  • Author
  • Localization

Shokoniraya, posted Sun Jun 16, 2019 11:46 am (48836)


but can you do something in future?
i know size and offset cant be float. but you can do rounding just in output file
i want to make a script for convert a xml font to template binary, it can help a lot to edit config files
  • Author
  • Localization

aluigi, posted Sun Jun 16, 2019 8:54 pm (48854)


No need to make any change.
Even now you can handle floats with some "creativity".

Example for input float (as string like in your xml) and output as float (32bit field "long"):
Code:
set VAR string "123.456"
string VAR s "%f" OUTPUT
print "%OUTPUT|x%"

log MEMORY_FILE 0 0
put OUTPUT long MEMORY_FILE
  • Author
  • Localization

Shokoniraya, posted Mon Jun 17, 2019 6:06 pm (48868)


thank you, that was exactly what i looked for

and just an other question, how can i read a float and dumped in txt?
i mean how can i convert long to a string float?

i tried this
Code:
goto 0
get POINT long
string NUMB p "%f" POINT
print "%NUMB%"


file is 82 E8 B1 3E
float32 is 0.34747701883316, but quickbms show 0.347477, last 8 number will not show, even in dumped txt
  • Author
  • Localization

aluigi, posted Mon Jun 17, 2019 7:20 pm (48869)


You can decide the precision by putting the number of digits after the dot, for example:
Code:
string NUMB p "%.14f" POINT
  • Author
  • Localization

Delutto, posted Thu Jun 27, 2019 2:26 am (49053)


What about support to standard LZ77 and LZ78 compression?
There's many of Super Nintendo (SNES) games that use standard LZ77, it'll help me a lot.
  • Author
  • Localization

GHFear, posted Thu Jun 27, 2019 4:44 pm (49062)


Is it not possible to multiply floats?
I have a 3D model archive that divides the number of 3D models, offset, size and every other important data by 256 for some reason.
So to get the correct offset, I need to multiply by 256, but when I do that I dont even get close to the correct number as it is right now.
  • Author
  • Localization

Shokoniraya, posted Tue Jul 02, 2019 1:57 pm (49114)


aluigi wrote:
You can decide the precision by putting the number of digits after the dot, for example:
Code:
string NUMB p "%.14f" POINT

sir aluigi, %.14 and done? but all of numbers after dot is not 14 always, what about them?
float is really matter for alot of things, like 3d objects, config files, fonts, and even more!

GHfrear, 256 or other numbers *256 or 1024 is just for more precisely
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.