Перейти к содержимому


Фотография

Моддинг ChinatownWars


Сообщений в теме: 203

#1 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 06 August 2010 - 05:10

Это тема для обсуждения статьи: Моддинг ChinatownWars
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#2 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 06 August 2010 - 05:24

Все игровые ресурсы (за исключением звуков и видео) содержатся в двух файлах: GAME.PAK и ROM.WAD.

GAME.PAK пока что особо не смотрел. Можно навскидку сказать, что там находятся шрифты, много других текстур и неизвестных сжатых данных.
ROM.WAD содержит файлы, выровненные на 2048 байт. Кроме того еще есть ROM.TOC, содержащий таблицу данных для ROM.WAD.

Структура ROM.TOC достаточно проста:
typedef struct item{
	DWORD dwUnknown;  //вероятнее всего хеш имени
	DWORD dwItemPtr;  //указатель на объект
	DWORD dwItemSize; //размер объекта
};

struct ctwTOC{
	item m_item[(FileSize())/sizeof(item)];
}m_ctwTOC;
По этой таблице можно извлечь все данные из ROM.WAD. Например, тексты gxt. Формат новый (имеет сигнатуру "DS_GXT"), никаких блоков TKEY и TDAT там нет. Каждый gxt-файл - отдельная секция, представляющая простые unicode-строки, идущие по порядку (null-terminated). Что, собственно, в этом всем хорошего - так это достаточно простая "табличная" упаковка ROM.WAD. Теперь совсем не обязательно беспокоиться о размере файлов и стараться уложиться в текущий сектор 2048 байт. Достаточно просто изменить размер файла и пересчитать все указатели в ROM.TOC. Единственный нюанс - имена файлов отсутствуют, есть только хеши.

Собственно, интересна кому-нибудь дальнейшая распаковка ресурсов? (с целью локализации или модифицирования)
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#3 lupus

lupus

    Участник

  • Пользователи
  • PipPip
  • 26 сообщений

Отправлено 06 August 2010 - 10:00

если разобрать версию для i-девайсов или ром для nds, там тоже есть эти самые rom.wad, rom.toc и data.pak Так что, думаю, разобравшись с псп версией потом вполне можно будет портировать перевод и на другие платформы.

#4 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 06 August 2010 - 10:09

I'm interested again. I could try searching some stuff in files myself, I know how to read bytes in hex, but that's pretty much it, is there any guides or something to understand this all better?

#5 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 06 August 2010 - 17:41

Arvis
Very nice that you are interested. Probably I will publish some more file formats documentation (or some not-researched files from the game) - it will be very nice if somebody will also research them (or try to research). Currentrly I am working on text decoding (and texteres are the next step). So, I think that it is hard for you to read Russian form, should I stick on English in my messages?

lupus
А ты смотрел файлы для Apple-устройств и DS? Формат графики там точно другой.

Пока что разобрал новый формат gxt с сигнатурой "DS_GXT" (видимо был придумал специально для DS, а потом использован на PSP). Как оказалось, там используются не null-terminated strings, а чуть более сложная система со специальными полями, в которых задается количество строк в файле и количество символов в каждой строке (символ занимает два байта - это unicode).

Теперь можно собрать программку, которая извлекала бы все тексты в обычный *.txt-формат (минуя *.ds_gxt) и собирала обратно.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#6 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 06 August 2010 - 17:48

Learning russian for me would be huge benefit for 2 next years and future unless I decide to go somewhere abroad. But better keep the most important stuff English if possible, thank you. :) I could try to help with research, maybe I find something.

#7 listener

listener

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 356 сообщений
  • Пол:Мужчина
  • Город:Ft.Lauderdale


Отправлено 06 August 2010 - 21:06

кому-нибудь нужно? (Архив-приложение - 232М)
Archive:  GTA_ CTW 1.1.0.ipa
 Length	Date	Time	Name
 ------	----	----	----
	  0  03-28-110  23:11   Payload/
	  0  03-28-110  23:10   Payload/RslP1.app/
	  0  03-22-110  16:56   Payload/RslP1.app/_CodeSignature/
   5093  03-28-110  23:10   Payload/RslP1.app/_CodeSignature/CodeResources
 256133  03-22-110  16:48   Payload/RslP1.app/airport_dry.caf
 260529  03-22-110  16:48   Payload/RslP1.app/airport_wet.caf
8671321  03-22-110  16:48   Payload/RslP1.app/Anvil.caf
  27531  03-22-110  16:48   Payload/RslP1.app/Busted.caf
 319188  03-22-110  16:48   Payload/RslP1.app/chan_tune_4096.caf
6409317  03-22-110  16:48   Payload/RslP1.app/Chinese.caf
 291311  03-22-110  16:48   Payload/RslP1.app/City_LongLoop8bit.caf
 294962  03-22-110  16:48   Payload/RslP1.app/City_LongLoop8bit_WithRain.caf
   1366  03-22-110  16:48   Payload/RslP1.app/close.png
   1189  03-22-110  16:48   Payload/RslP1.app/closeHi.png
	 28  03-28-110  23:10   Payload/RslP1.app/CodeResources
10118172  03-22-110  16:48   Payload/RslP1.app/CTW_iPhone_intro.mp4
8193352  03-22-110  16:48   Payload/RslP1.app/CTW_iPhone_outro.mp4
	  0  03-22-110  16:48   Payload/RslP1.app/de.lproj/
  38644  03-22-110  16:48   Payload/RslP1.app/de.lproj/Default.png
	180  03-22-110  16:48   Payload/RslP1.app/de.lproj/Localizable.strings
7391494  03-22-110  16:48   Payload/RslP1.app/DFA.caf
 241223  03-22-110  16:48   Payload/RslP1.app/Dragon_loop.caf
	  0  03-22-110  16:48   Payload/RslP1.app/en.lproj/
  34533  03-22-110  16:48   Payload/RslP1.app/en.lproj/Default.png
	101  03-22-110  16:48   Payload/RslP1.app/en.lproj/Localizable.strings
	 62  03-22-110  16:48   Payload/RslP1.app/entitlements.plist
	  0  03-22-110  16:48   Payload/RslP1.app/es.lproj/
  36195  03-22-110  16:48   Payload/RslP1.app/es.lproj/Default.png
	198  03-22-110  16:48   Payload/RslP1.app/es.lproj/Localizable.strings
  94370  03-22-110  16:48   Payload/RslP1.app/Flatliner_4096.caf
	  0  03-22-110  16:48   Payload/RslP1.app/fr.lproj/
  37672  03-22-110  16:48   Payload/RslP1.app/fr.lproj/Default.png
	174  03-22-110  16:48   Payload/RslP1.app/fr.lproj/Localizable.strings
523169906  03-22-110  16:49   Payload/RslP1.app/game.pak
 244622  03-22-110  16:48   Payload/RslP1.app/Heston_tune_4096.caf
 319271  03-22-110  16:48   Payload/RslP1.app/Hsin_tune_4096.caf
   9082  03-22-110  16:48   Payload/RslP1.app/icon.png
	814  03-22-110  16:48   Payload/RslP1.app/Info.plist
1934800  03-22-110  16:48   Payload/RslP1.app/INTRO1.caf
 640101  03-22-110  16:48   Payload/RslP1.app/INTRO2.caf
	  0  03-22-110  16:48   Payload/RslP1.app/it.lproj/
  35565  03-22-110  16:48   Payload/RslP1.app/it.lproj/Default.png
	171  03-22-110  16:48   Payload/RslP1.app/it.lproj/Localizable.strings
 270010  03-22-110  16:48   Payload/RslP1.app/Kenny_tune_4096.caf
7654617  03-22-110  16:48   Payload/RslP1.app/Khalil.caf
 242085  03-22-110  16:48   Payload/RslP1.app/Leerock_tune_4096.caf
   1192  03-22-110  16:48   Payload/RslP1.app/MainWindow.nib
  63917  03-22-110  16:48   Payload/RslP1.app/MissionComplete_16k.caf
	  8  03-22-110  16:48   Payload/RslP1.app/PkgInfo
7006303  03-22-110  16:48   Payload/RslP1.app/Radio1.caf
5087114  03-22-110  16:48   Payload/RslP1.app/Radio2.caf
4598166  03-22-110  16:48   Payload/RslP1.app/Radio3.caf
8517228  03-22-110  16:48   Payload/RslP1.app/Radio4.caf
7584816  03-22-110  16:48   Payload/RslP1.app/Radio5.caf
	250  03-28-110  23:10   Payload/RslP1.app/ResourceRules.plist
  34692  03-22-110  16:48   Payload/RslP1.app/ROM.TOC
61811200  03-22-110  16:49   Payload/RslP1.app/ROM.WAD
5688384  03-22-110  16:56   Payload/RslP1.app/RslP1
 253482  03-22-110  16:48   Payload/RslP1.app/Rudy_tune_4096.caf
	  0  03-28-110  23:10   Payload/RslP1.app/SC_Info/
  42372  03-28-110  23:11   Payload/RslP1.app/SC_Info/RslP1.supp
  17910  03-22-110  16:48   Payload/RslP1.app/SILENCE.caf
  64008  03-22-110  16:48   Payload/RslP1.app/sinking_car.caf
8333669  03-22-110  16:48   Payload/RslP1.app/Tortoise.caf
  30423  03-22-110  16:48   Payload/RslP1.app/Wasted.caf
 312766  03-22-110  16:48   Payload/RslP1.app/Water_LongLoop8bit.caf
7630288  03-22-110  16:48   Payload/RslP1.app/Wonderwheel.caf
 244775  03-22-110  16:48   Payload/RslP1.app/Xin_tune_4096.caf
 233294  03-22-110  16:48   Payload/RslP1.app/Zhou_tune_4096.caf
   2815  07-16-10  21:11   iTunesMetadata.plist
   1032  07-16-10  21:11   Payload/RslP1.app/SC_Info/RslP1.sinf
  81996  07-16-10  21:11   iTunesArtwork
 ------					-------
694887482					72 files

Сообщение отредактировал listener: 06 August 2010 - 21:08

You think your day was surreal? Try mine.

#8 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 06 August 2010 - 21:20

Iphone version also got these files, then I guess if any format get's cracked, then on 3 platforms in a row, good :o

#9 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 07 August 2010 - 09:19

Файл EBOOT.BIN (PSP ELF-executable) расшифрован, в перспективе его можно и дизассембелировать... Беглым взглядом нашел там много разных имен файлов, теперь осталось только понять какому названию какой хеш соответствует (и какой вообще алгоритм хеширования используется). Также в PSP-версии есть файл под названием OVERLAYS.PAK, в котором содержатся запакованные обычным zlib-ом файлы (возможно, это скомпилированные скрипты, все файлы - ELF-executable).

Arvis
Well, hope that you can understand Russian a bit. Probably I will publish some info in English, but currently it can be useless because I can not see so much gamers from different countries who are interested in console GTA researching. By the way, what version of the game do you have?
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#10 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 07 August 2010 - 09:35

I have PSP version.

#11 solom

solom

    Активный участник

  • Пользователи
  • PipPipPip
  • 267 сообщений
  • Пол:Мужчина


Отправлено 07 August 2010 - 14:53

dageron при изучений gta chinatown wars с ним не будут трудности как со сторизами?

#12 lupus

lupus

    Участник

  • Пользователи
  • PipPip
  • 26 сообщений

Отправлено 07 August 2010 - 16:06

Согласен, что из всех версий CW для psp наиболее актуальнА, хотя ДС эмулируется на довольно высоком уровне и вполне можно тестировать на эмуляторе, если вдруг будет мысль и до неё добраться. На всякий случай упомяну, что у меня в наличии есть iPhone 3g 16gb, поэтому и тут тестировать можно. Если интересно, то могу дать линк на i-девайс версию cw, разобрать на файлы не сложно - достаточно винрара.

#13 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 07 August 2010 - 17:20

So well, I'm probably bad searcher, but I looked into GAME.PAK, so it got some first bytes same as OVERLAYS.PAK, I guess that's the header for PAK files, also it got some bytes same and repeating in files at some spots. GAME.PAK contains something related to vehicles and peds, it got some "paths" to files with .vehicle extensions and 1 path to .ped extension. So any ideas what should I do in hex editor to get some deeper/more useful info and did anything of what I found actually make any sense?

#14 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 August 2010 - 16:21

Совершенно безыдейно пока что то, как поступать с именами. Алгоритм хеширования мне неизвестен, известно лишь то, что в *.toc все указатели на объекты *.wad отсортированы по возрастанию. Кроме того *.wad тоже имеет какой-то странный заголовок с массивом неизвестных значений, после которого уже идут все объекты, "объявленные" в *.toc.

Скриншот того, что удалось-таки разобрать/извлечь:
Изображение

Файлы с текстом *.ds_gxt на данном этапе определяются за счет проверки сигнатуры. В их внутренней структуре, как оказалось, разработчики отказались от использования тегов вообще. Вместо это теперь используются байты-определители и их очень много. Например, $FF12 значит ~y~, а $FF09 - ~b~. Есть байты, которые определяют цвета и кнопки - в общем, все то, что в старых частях определялось именно тегом.

Неплохо бы на каких-нибудь других форумах рассказать про всю идею разбора ресурсов CTW и локализации...

Arvis
If you want to help, please, can you stick on "common" *.pak researching? I mean file table structure and/or dictionary structure (if it exists). I want to stick on *.wad/*.toc and so it will be very nice if somebody works on *.pak. So, I worked on CTW *.ds_gxt file format and can say, that R* invented some more rather interesting things like binary tags (for example, tag ~y~ now has $FF12 binary code).
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#15 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 08 August 2010 - 16:56

Yes, sure, but any tips of what exactly methods I should use for finding out things? I mean I read some documentation of 010 editor, should I use scripts? If yes then which? Or just read random bytes in hope to find something. My experience is like zero, that's why these silly questions.

#16 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 08 August 2010 - 17:11

Using 010 binary templates makes hex research easier, but it is just only an additional to basic skills. So, study, read documentation and probaply that will be very useful. Asking questions is normal (even how "silly" they can be), I always try to help everybody who is interesting in something I know. By the way, in *.pak files zlib compression algorithm is widely used.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#17 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 08 August 2010 - 20:06

Well I know how to use 010 editor, read bytes, floats, strings, ints and all that. But the most important thing I don't know is: you open completely unknown file, what do you look for first? Okay let's say I've found short, 2 chars and a float in beginning in both files, but they don't make any sense.
The float is at offset 4h, but it also has value in int, so no idea which one means anything.
I'm interested in understanding process how do you find the data you need, learn formats and such
I read some parts of documentation, but I kinda doubt that kind of stuff is covered
And zlib is a black image for me I guess

So let me show something from what I checked to build basic template
struct FILE {
		struct HEADER {
			short   unknownnumber; //same for both pak files
			char	K; //same ^
			char	P; //same ^
			float   unknownfloat; //not same
		} header;

	} file;
No idea what I've found, and how to make use of it
I'm just confused

and just checked your structure in rom.toc

DWORD dwUnknown; //вероятнее всего хеш имени
^So how did you find that this is the hash name? It's values in data inspector don't seem to tell anything
DWORD dwItemPtr; //указатель на объект
DWORD dwItemSize; //размер объекта
^same with these values, how to find out what they actually mean?

Сообщение отредактировал Arvis: 08 August 2010 - 20:13


#18 Dageron

Dageron

    Активный участник

  • Пользователи
  • PipPipPip
  • 1130 сообщений
  • Пол:Мужчина
  • Город:Пермь


Отправлено 09 August 2010 - 08:03

I understand that working with hex is a complicated procedure for beginners - maybe it will be better for you if you will work with already researched files later. I mean that you should wait a bit while I research them and write some useful tool or publish any useful information. I dont want you to force on working with binary files, so just only wait till I write something which can be helpful... If you really want to help, please, can you tell somewhere on the abroad international forums about the Chinatown Wars researches and provide a link to this topic? I think that there are some people who can be interested. So, what *.pak and *.wad have in common? Some unknown array at the begining of file. This array has "symmetrical" values and I dont know what they mean. As I mentioed above, *.wad contain game files and it has a special filetable for them in *.toc. But anyway *.wad also has header and some not-researched data segment in front of file segment. I attempted to research and typify it, but that segments appointment is unknown for me. It contains two arrays, array items count are values in header. То же, но по-русски. Итак, что есть общего между *.pak и *.wad? Неизвестный массив в начале файла. Значения этого массива можно назвать "симметричными", но вот смысл их непонятен. Как писал выше, в *.wad хранятся игровые файлы, таблица которых находится в *.toc. Но, как оказалось, *.wad имеет свой заголовок и неизвестный сегмент данных перед сегментом файлов, который содержит два массива, количество элементов указывается в заголовке.
в проекте gtamodding.ru: декабрь 2008 - декабрь 2012

#19 Arvis

Arvis

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 09 August 2010 - 12:26

I could make topic in GTAF, since topic which requests your unbanning seems to be ignored by staff

#20 Джамбо

Джамбо

    Активный участник

  • Пользователи
  • PipPipPip
  • 136 сообщений
  • Пол:Мужчина

Отправлено 09 August 2010 - 14:24

если следующий перевод коснется этой игры, тоя обеими руками "ЗА", потому что эта часть замечательна своим незабываемым геймплеем и большими возможностями. И кстати это первая GTA на PSP в которой можно свободно заменить радио на свое



Ответить



  


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных