Previous Page | Next Page

by Benjamin at 3:29 PM EDT on May 16, 2014
Are they a bit forward after the loop point? If so, they're probably the loop point plus the loop end. I think that's the sustain loop.
by Nisto at 3:26 PM EST on November 6, 2014
Updated the script. Just a small bugfix (nothing that affected the extraction process, just some undefined variables that were being passed to the custom error function), as well as an addition to the tested games. The link is the same.

If anyone has used it with any other games besides the ones listed in the script/usage instructions I'd appreciate it if you could document it here.
by Nisto at 10:41 PM EST on December 15, 2014
Started reverse engineering the game a few days ago.. Happy to say I am making progress in locating the various routines used to read the ALZ files (e.g. those in the "demo" folder). The value at 0x1 is a 32-bit little-endian value, which is the decompressed size. And I'm pretty sure at this point that the byte at 0x0 is a version byte or a decompression type/level, as each type (0, 1 and 2 that I can see so far) goes through separate branches.

However, now I've learned that the data in at least option_e.lz (option.lz on the Japanese release) might also be encrypted/encoded somehow. Here's a sample of the decompressed data (I just snagged this from RAM):

https://dl.dropboxusercontent.com/u/48454461/misc/option_e.lzd

For example, this:
15 34 2D 3A 33 31 47 3F 3B 41 3A 30 47 3F 31 40 40 35 3A 33 3F
Equals this:
Change sound settings

EDIT2: Oh, I'm dumb... It's not encoded! It's just custom code points for each character after all... But it didn't seem to make sense to me at first. Blah. Anyway, I will post a list of the codepoints later on. It's not related to any sound data, but hey, it might help in the future maybe.. I thought it'd be easier to first look for data that I know it'll read, and when it'll read it. Now it seems I just need to understand how the whole decompression routine works and perhaps write a script or something.

EDIT3: Here is a list of character codepoints: https://dl.dropboxusercontent.com/u/48454461/misc/bio0char.txt. Also, I just learned the hard way, that, even though there are a whole bunch of texture files containing glyphs, all characters (except in menus and whatnot) are actually hardcoded into the main executable! You can find the data at 0x258FCC in the executable of the US release. It seems they use a format similar to what is demonstrated in the Dolphin SDK.

edited 4:02 PM EST December 16, 2014
by Nisto at 3:56 PM EST on December 22, 2014
I have managed write a decoder for the format in Python, but... there's something wrong. Some codepoints (in the case of option_e.lz) are not in their right place and I have tried to locate the error in my code for hours without luck.

I am wondering if someone here is willing to have a look at the assembly code (PowerPC) and try to locate the error? I have an IDA Pro database file with lots of comments that I am willing to share, and I can share the Python script too.

To give a perspective, here is a comparison of the in-game decoded data (RAM) and the result of the Python script both converted from the original codepoints to ASCII text:

https://dl.dropboxusercontent.com/u/48454461/misc/bio0/option_e_dec_ram.txt (what it's supposed to look like)
https://dl.dropboxusercontent.com/u/48454461/misc/bio0/option_e_dec_py.txt (script result)
by Nisto at 7:06 AM EST on December 26, 2014
So I finally figured out why it didn't come out right. I hope I am not the only one excited for this, as it took me over a week of practically non-stop reverse engineering and coding. Oh yeah, and I should mention that right now it only supports type 2 ALZ files. I plan on implementing support for type 1 soon, don't worry (it doesn't seem like any ALZ file in Biohazard 0 is type 1 anyway).

https://dl.dropboxusercontent.com/u/48454461/misc/bio0/alzdec.zip


And for anyone interested, here is a Python converter for the custom codepoints (mainly seen in message.arc). It currently only supports ASCII characters, but anyone can feel free to add some of the remaining characters to it and post an update (although tedious, it should be easy to do even for non-programmers). Keep in mind that it does not expect any offsets at the beginning of the file (like option_e.lz has) though, so to get it to properly convert the codepoints you must trim any data that's not relevant from the beginning/end of the input file.

https://dl.dropboxusercontent.com/u/48454461/misc/bio0/bio0text.py

edited 12:41 PM EST December 26, 2014
by shenghua8848 at 9:42 AM EST on January 1, 2015
HI, Nisto, thank you very much and finally ALZ format Resident Evil 0 solved, I am waiting for more than four years time, but I want to change the enemy's data, there is a problem is that even though you can unlock tool ALZ file it can not be compressed back, very much hope that you can come up with a compression tool, once again thank you for your hard work.
by Nisto at 10:36 AM EST on January 1, 2015
@shenghua8848: I managed to get back in contact with Mark Grass (developer of "Biofat"). No promises, but I think if I shared my source code with him, that he might be able to write a compressor. Modding is not really my area of interest, so I am not motivated enough to figure out how to compress it back (it can't be as easy as doing everything in the reverse order? :P), but I think it is Mark's. As I mentioned on XeNTaX, I've never worked with compression algorithms before, so it's difficult for me. But fingers crossed. :)
by shenghua8848 at 8:07 PM EST on January 1, 2015
@Nisto£ºI know the compression process is difficult, but now no one except you and markgrass willing to do these, and I hope you can come up and markgrass compression tool, I have been waiting for a long time, your efforts we will not forget
by Nisto at 6:41 PM EST on January 5, 2015
Don't think there will be any use of it, and I haven't even been able to test it, but here is an update with support for type 1, and some code optimizations:

EDIT: removed -- 0.2 contains an integer reading bug, please see page 3 for a link to version 0.3!

Still no support for compression. Trying to get a response from Mark to see if he's willing to try.

edited 1:29 PM EST January 6, 2015
by shenghua8848 at 6:10 AM EST on January 6, 2015
@Nisto I run the alzdec02 prompt: ALZ size > decompressed size£¬what causes it

Previous Page | Next Page
Go to Page 0 1 2 3 4

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source