Fyorl Posted December 24, 2007 Share Posted December 24, 2007 I'm not sure I can get it working. I downloaded the archive from the location the bigg linked me to and extracted the files to NI directory. Was I supposed to apply the diff at that point or is it just there for reference purposes? Either way, I re-archived the jar and ran it but there seems to be no change. NI still reports that it cannot locate the biffs. Would it be easier to write a script which lowercased all the names in the chitin.key? Link to comment
the bigg Posted December 24, 2007 Share Posted December 24, 2007 You need to recompile NI For Ubuntu, enable multiverse, then run the following: sudo apt-get install sun-java6-jdk make # extract the original NI jar file and the diff to a dir; from there: make list build jar java -jar NearInfinity.jar Link to comment
Fyorl Posted December 24, 2007 Author Share Posted December 24, 2007 Hmm, I installed the JDK RPM and messed around with $PATH for a bit to get it to use the right binaries (there was some stupid GNU Java stuff in the way). When I ran the make command however I got a few warnings and then the following error: java.lang.ClassCastException: java.io.File cannot be cast to sun.misc.JarIndex at sun.tools.jar.Main.update(Main.java:459) at sun.tools.jar.Main.run(Main.java:184) at sun.tools.jar.Main.main(Main.java:1022) make: *** [jar] Error 123 Is there anything I can do? Edit: It's ok, turned out it was just easier to go through chitin.key and make everything lowercase. Link to comment
psykotik Posted December 29, 2007 Share Posted December 29, 2007 Edit:It's ok, turned out it was just easier to go through chitin.key and make everything lowercase. How did you manage that? I can't open chitin.key on linux, and it is a mess on windows. Link to comment
Fyorl Posted December 29, 2007 Author Share Posted December 29, 2007 khexedit chitin.key & It's binary so a normal text editor will give you jargon. KHexEdit gives you the binary and the ASCII together. That's if you have KDE. I'm not sure what the GNOME/XFCE equivalent is, I'm sure there's some standalone linux hexeditors out there. Basically you need to get to the part of the file where you see a lot of DATA/FOO. The rest of the file lists all the files inside the biffs so you can ignore that. You can then go through and make all those filepaths lowercase. It takes a while... I find it's quicker if you skip all the areas because I never use NI for area editing. If I was really motivated I would write a script to do it automatically (it's only a case of finding the offsets for that DATA/FOO chunk and then shifting the byte values up by a fixed amount (can't remember what it is between upper and lowercase)) but that would require some research as I have very little experience with working with binary. Link to comment
psykotik Posted December 29, 2007 Share Posted December 29, 2007 thanks. I think I will wait for a script, because I don't want to edit so many entries; I've installed many (so many) mods, which means a huge multiplication of the entries to edit, but also I'm fed up with Baldur's modification Actually, I've been able to run Shadowkeeper (only by renaming CHITIN.KEY to chitin.key), which is not exactly the same program, but it could help also. Link to comment
Fyorl Posted December 29, 2007 Author Share Posted December 29, 2007 Yeah Shadowkeeper and DLTCEP will work because they're being run through Wine which will ignore case for you but NI is run natively via Java and so doesn't. The patch was supposed to fix that but I've been unable to get it to compile properly. Actually, unless you've biffed your override folder your chitin.key will stay exactly the same because the mods just stick stuff in the override and the vanilla biffs don't get touched (except for some mega-mods which automatically biff their files - although that's done via batch script which won't run on Linux). Once you ignore all the area biffs there really aren't that many things to make lowercase (the biff locations are a very tiny part of the chitin.key, the rest is biff contents which you don't need to worry about). If you really need to work with areas then it will take ages but otherwise it'll be a max of 10 mins I'd say. Link to comment
Fyorl Posted December 29, 2007 Author Share Posted December 29, 2007 OK, I wrote a PHP script for it: #!/usr/bin/php <?php function read_long($h, $offset) { fseek($h, $offset); $ar = unpack('L', fread($h, 4)); return (int) $ar[1]; } function read_short($h, $offset) { fseek($h, $offset); $ar = unpack('S', fread($h, 2)); return (int) $ar[1]; } $h = fopen('chitin.key', 'r+b'); $num_entries = read_long($h, 0x0008); $entries_offset = read_long($h, 0x0010); $start = ($num_entries * 12) + $entries_offset; $coff = $entries_offset; $total_len = 0; for($i = 0; $i < $num_entries; $i++) { $readfrom = $coff + 8; $total_len += read_short($h, $readfrom); $coff += 12; } fseek($h, $start); $data = strtolower(fread($h, $total_len)); fseek($h, $start); fwrite($h, $data); fclose($h); ?> Copy and paste that into a file called 'chitin-lower' and save it in your BG2 directory. Right-click the file, go to the Permissions tab and check the 'executable' box. Or open up a terminal and do: $ chmod +x chitin-lower Then you should just be able to do: $ ./chitin-lower Edit: Oh yeah, you'll need the CLI version of PHP installed but I think it's standard on most distros and if not there'll be a DEB/RPM out there for it. Oh and make a backup of your chitin.key file first >_<. I've tested it myself and it worked but I will not accept any responsibility for it running rampant and deleting all your system files. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.