Pavel3333 Posted March 24, 2017 Share Posted March 24, 2017 (edited) Распаковщики-экстрималы, блин. Поживем - увидим) Я пока тебе на битбакет залезу и попробую в запись готового чанка с .xml-структурой. Edited March 24, 2017 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 (edited) Что еще надо разобрать? Скинь архив с temps/*.chunk, пожалуйста. Я в Дмитрове, есть два свободных дня. Железо поменялось, соотв-нно движка, питона и клиента 0.9.10 нет. Есть hex-редактор. Вот цены б не было Kaitai... если б он не привязывал переведенный .py-код к своему классу KaitaiStruct. Вычищаю раздутый код. BSMA decoder 'bsma.py' import struct def decode_bsma_section(_io): material_descr_size = struct.unpack('<I',_io.read(4)) material_descr_num = struct.unpack('<I',_io.read(4)) material_descr_list = [None] * (material_descr_num) for i in range(material_descr_num): material_descr_list[i] = MaterialDescr(_io) fx_size = struct.unpack('<I',_io.read(4)) fx_num = struct.unpack('<I',_io.read(4)) fx_list = [None] * (fx_num) for i in range(fx_num): fx_list[i] = struct.unpack('<I',_io.read(4)) prop_descr_size = struct.unpack('<I',_io.read(4)) prop_descr_num = struct.unpack('<I',_io.read(4)) prop_descr_list = [None] * (prop_descr_num) for i in range(prop_descr_num): prop_descr_list[i] = PropDescr(_io) matrix_descr_size = struct.unpack('<I',_io.read(4)) matrix_num = struct.unpack('<I',_io.read(4)) matrix_list = [None] * (matrix_num) for i in range(matrix_num): matrix_list[i] = Matrix4x4(_io) vector_descr_size = struct.unpack('<I',_io.read(4)) vector_num = struct.unpack('<I',_io.read(4)) vector_list = [None] * (vector_num) for i in range(vector_num): vector_list[i] = Vector4(_io) return [material_descr_list, prop_descr_list, matrix_list, vector_list] def MaterialDescr(_io): key_fx = struct.unpack('4s',_io.read(4)) key_from = struct.unpack('4s',_io.read(4)) key_to = struct.unpack('<I',_io.read(4)) return [key_fx, key_from, key_to] def Vector4(_io): row0 = [None] * (4) for i in range(4): row0[i] = struct.unpack('<f',_io.read(4)) return row0 def Matrix4x4(_io): row0 = [None] * (4) for i in range(4): row0[i] = struct.unpack('<f',_io.read(4)) row1 = [None] * (4) for i in range(4): row1[i] = struct.unpack('<f',_io.read(4)) row2 = [None] * (4) for i in range(4): row2[i] = struct.unpack('<f',_io.read(4)) row3 = [None] * (4) for i in range(4): row3[i] = struct.unpack('<f',_io.read(4)) return [row0,row1,row2,row3] def PropDescr(_io): key = struct.unpack('<I',_io.read(4)) value_type = struct.unpack('<I',_io.read(4)) _on = value_type if _on == 2: value = struct.unpack('<f',_io.read(4)) else: value = struct.unpack('<I',_io.read(4)) return [key, value_type, _on] Edited March 25, 2017 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 (edited) @Pavel3333, что-то написать на питоне вообще не проблема. Не нужно на этим заниматься. Тем более испольовать для этого выхлоп kaitai... Нужно анализировать секции и смотреть за что они отвечают. Пока это важно. В BWAL загадки присутствуют. Нам бы пустой space.bin создать, без материалов и моделей... Для питон части у меня есть идея создать ассемблер/дизассемблер json<->space.bin Edited March 25, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 @SkepticalFox, у меня нет клиента и соответственно space.bin тоже. Я работаю на другом компьютере. Будь добр, залей space.bin или его чанки. Разберу с удовольствием. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 (edited) Будь добр, залей space.bin или его чанки. Разберу с удовольствием.мне сейчас слишком лень что-то заливать... отдохнуть нужно. Edited March 25, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 (edited) Для питон части у меня есть идея создать ассемблер/дизассемблер json<->space.bin зачем создавать то, что уже создано? Я про ту замечательную штуку, которой ты поделился в личке. Нам бы пустой space.bin создать, без материалов и моделей... с hex-редактором это можно сделать. долго, потно и нудно, но можно. и без всяких декомпиляторов. помнишь, я скрины кидал с измененной bwlc? Edited March 25, 2017 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 с hex-редактором это можно сделать. долго, потно и нудно, но можно. и без всяких декомпиляторов.А я скажу, что не нужно тратить силы на монотонную ерунду. Если у нас будет ассемблер, то нам не нужно будет его писать) Ассемблер это круто) @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 (edited) А я скажу А я и не спорю. Ассемблер так-то уже у нас есть. Осталось только дописать распаковщики и написать скрипт, который записывает в 0000000о.chunk в формате xml данные, которые обязан понять ассемблер для клиента 0.9.10. Хотя знаешь, ты прав. Ассемблер для 0.9.10 не робит без клиента 0.9.10. Я только за идею с json форматом. json я освоил, так что могу тебе потом помочь. А сейчас осталось найти клятый space.bin у себя в закромах. Edited March 25, 2017 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 (edited) Ассемблер для 0.9.10 не робит без клиента 0.9.10.И space.bin созданный им не откроется клиентом 0.9.14+ А уже 0.9.17.1 на дворе. WG не спит и меняет все там с каждой обновой. Edited March 25, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 И space.bin созданный им не откроется клиентом 0.9.14+ О_О Я за json. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 (edited) Я за json.В итоге должно получится что-то вроде: { "BWAL" : { }, "BWLC" : { }, "BSMA" : { }, ... }Там тоже будут сырые данные и это будет не совсем дизассемлер, но для начала подойдет. Edited March 25, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 В итоге Угу, знаю. Уже использовал его в Ракознаках. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 25, 2017 Author Share Posted March 25, 2017 (edited) @Pavel3333, я начал возвращать наработки по некоторым секциям в питон из kaitai. Конвертер в json прикольная штука получилась... space_bin.zip Теперь можно проводить тесты на большом количестве space.bin-файлов... На bitbucket пока ничего не залью. Надо причесать кое-что.. Edited March 25, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 25, 2017 Share Posted March 25, 2017 Отлично. Я продолжу работу в понедельник. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted March 27, 2017 Author Share Posted March 27, 2017 (edited) @Pavel3333, залил все что было на bitbucket... Проводил тесты только на одном space.bin Нужно больше автоматизации и скриптов! Edited March 27, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted March 27, 2017 Share Posted March 27, 2017 Я вчера поздно приехал, времени не было. Сегодня зайду, потестю. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted April 1, 2017 Author Share Posted April 1, 2017 Распаковщик space.bin готов! С первым апреля. @ Quote Link to comment Short link Share on other sites More sharing options...
Xotabych Posted April 1, 2017 Share Posted April 1, 2017 Шутник однако. @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted April 1, 2017 Share Posted April 1, 2017 Клёвая шутейка. Времени нет, извини. Сегодня в шесть свяжемся. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted April 1, 2017 Author Share Posted April 1, 2017 Клёвая шутейка. Времени нет, извини. Сегодня в шесть свяжемся. Сегодня и у меня нет времини.Нужно добавить ассемблер space_bin.json -> space.bin это будет довольно сложно... @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.