Pavel3333 1,148 #384115 Posted March 24, 2017 (edited) Распаковщики-экстрималы, блин. Поживем - увидим) Я пока тебе на битбакет залезу и попробую в запись готового чанка с .xml-структурой. Edited March 24, 2017 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384284 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 Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384307 Posted March 25, 2017 (edited) @Pavel3333, что-то написать на питоне вообще не проблема. Не нужно на этим заниматься. Тем более испольовать для этого выхлоп kaitai... Нужно анализировать секции и смотреть за что они отвечают. Пока это важно. В BWAL загадки присутствуют. Нам бы пустой space.bin создать, без материалов и моделей... Для питон части у меня есть идея создать ассемблер/дизассемблер json<->space.bin Edited March 25, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384308 Posted March 25, 2017 @SkepticalFox, у меня нет клиента и соответственно space.bin тоже. Я работаю на другом компьютере. Будь добр, залей space.bin или его чанки. Разберу с удовольствием. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384309 Posted March 25, 2017 (edited) Будь добр, залей space.bin или его чанки. Разберу с удовольствием.мне сейчас слишком лень что-то заливать... отдохнуть нужно. Edited March 25, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384311 Posted March 25, 2017 (edited) Для питон части у меня есть идея создать ассемблер/дизассемблер json<->space.bin зачем создавать то, что уже создано? Я про ту замечательную штуку, которой ты поделился в личке. Нам бы пустой space.bin создать, без материалов и моделей... с hex-редактором это можно сделать. долго, потно и нудно, но можно. и без всяких декомпиляторов. помнишь, я скрины кидал с измененной bwlc? Edited March 25, 2017 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384313 Posted March 25, 2017 с hex-редактором это можно сделать. долго, потно и нудно, но можно. и без всяких декомпиляторов.А я скажу, что не нужно тратить силы на монотонную ерунду. Если у нас будет ассемблер, то нам не нужно будет его писать) Ассемблер это круто) Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384314 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 Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384315 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 Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384316 Posted March 25, 2017 И space.bin созданный им не откроется клиентом 0.9.14+ О_О Я за json. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384317 Posted March 25, 2017 (edited) Я за json.В итоге должно получится что-то вроде: { "BWAL" : { }, "BWLC" : { }, "BSMA" : { }, ... }Там тоже будут сырые данные и это будет не совсем дизассемлер, но для начала подойдет. Edited March 25, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384318 Posted March 25, 2017 В итоге Угу, знаю. Уже использовал его в Ракознаках. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384378 Posted March 25, 2017 (edited) @Pavel3333, я начал возвращать наработки по некоторым секциям в питон из kaitai. Конвертер в json прикольная штука получилась... space_bin.zip Теперь можно проводить тесты на большом количестве space.bin-файлов... На bitbucket пока ничего не залью. Надо причесать кое-что.. Edited March 25, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384379 Posted March 25, 2017 Отлично. Я продолжу работу в понедельник. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384485 Posted March 27, 2017 (edited) @Pavel3333, залил все что было на bitbucket... Проводил тесты только на одном space.bin Нужно больше автоматизации и скриптов! Edited March 27, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384488 Posted March 27, 2017 Я вчера поздно приехал, времени не было. Сегодня зайду, потестю. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #384989 Posted April 1, 2017 Распаковщик space.bin готов! С первым апреля. Quote Share this post Link to post Short link Share on other sites
Xotabych 337 #384990 Posted April 1, 2017 Шутник однако. Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #384999 Posted April 1, 2017 Клёвая шутейка. Времени нет, извини. Сегодня в шесть свяжемся. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385003 Posted April 1, 2017 Клёвая шутейка. Времени нет, извини. Сегодня в шесть свяжемся. Сегодня и у меня нет времини.Нужно добавить ассемблер space_bin.json -> space.bin это будет довольно сложно... Quote Share this post Link to post Short link Share on other sites