diff --git a/UnRLE/0160_/0160_08_0_8_U b/UnRLE/0160_/0160_08_0_8_U new file mode 100644 index 0000000..e93aabd Binary files /dev/null and b/UnRLE/0160_/0160_08_0_8_U differ diff --git a/UnRLE/0713_CITY_SCENERY/0714_19_19_2048_U.txt b/UnRLE/0713_CITY_SCENERY/0714_19_19_2048_U.txt index 53d9062..0ce51f3 100644 --- a/UnRLE/0713_CITY_SCENERY/0714_19_19_2048_U.txt +++ b/UnRLE/0713_CITY_SCENERY/0714_19_19_2048_U.txt @@ -364,11 +364,11 @@ [22] [col=yellow]Студент[col=white] Бууу![pause][8] Что за чудеса творятся?! - Я видел бабулю, которая бегает 100км\ч. - Но это ещё не всё![EOw][col=yellow]Студент[col=white] - Я слышал, что где-то есть, который умеет - бегать 200км\ч! Мне явно стоит больше - тренироваться~ [pause][15]Бууу![EOD] + Я видел бабулю, которая бегает на скорости + 100км\ч. Но это ещё не всё![EOw][col=yellow]Студент[col=white] + Я слышал, что где-то есть дед, который умеет + бегать со скоростью 200км\ч! + Мне явно стоит больше тренироваться~ [pause][15]Бууу![EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]College Student[white] \\ Hooya!05120800 So you've finally exposed diff --git a/UnRLE/0713_CITY_SCENERY/0715_19_19_2048_U.txt b/UnRLE/0713_CITY_SCENERY/0715_19_19_2048_U.txt index ee756b9..f1f80e0 100644 --- a/UnRLE/0713_CITY_SCENERY/0715_19_19_2048_U.txt +++ b/UnRLE/0713_CITY_SCENERY/0715_19_19_2048_U.txt @@ -54,9 +54,9 @@ \\ 061102110311 [2] [col=yellow]Молодая девушка[col=white] - По телевизору только и говорят об этом Джокере. + По телевизору только и говорят о Джокере. Даже выступление моей любимой группы "Музы" - прервали гадалкой.[EOw][col=yellow]Молодая девушка[col=white] + прервали выступлением гадалки.[EOw][col=yellow]Молодая девушка[col=white] Убийства - это, конечно, плохо, но настоящее преступление - превращать телевидение вот в это. Надеюсь, скоро всё наладится.[EOD] @@ -71,11 +71,12 @@ \\ 061102110311 [3] [col=yellow]Молодая девушка[col=white] - 講宙会が流行ってるみたいなんだけどお、 - ちょっと行く気がしないのよねー - 私、人に説教されるのって好きじゃないし。[EOw][col=yellow]Молодая девушка[col=white] - やっぱ生き方にポリシー持ってるっていうの? - 私って、人とは違うんだよね。[EOD] + Кажется, эти семинары сейчас очень популярны, + но~ Почему-то я не хочу идти на них. + Не люблю, когда мне читают нотации.[EOw][col=yellow]Молодая девушка[col=white] + Стоит ли мне вообще ходить на них? + Я прекрасно знаю, чего хочу от жизни. + И этим отличаюсь от всех вокруг~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ I've been having strange dreams. What I'm @@ -87,12 +88,12 @@ \\ 061102110311 [4] [col=yellow]Молодая девушка[col=white] - なんか最近、変な夢ばっかみんのよね。 - やってることはあんま変わんないんだけど、 - 夢の中で私のイメージが違うのよ。[EOw][col=yellow]Молодая девушка[col=white] - ありがちな女で無垚任な事ばっかり - 言ってるんだけど、なんかやな感じよねー - 夢とはいえ自分なんだし·[EOD] + Почему-то в последнее время вижу только + странные сны. Хоть я и делаю там то же, что и + раньше, но изменилось моё восприятие себя.[EOw][col=yellow]Молодая девушка[col=white] + Несу там какую-то обычную женскую чушь~ + Такое неприятное чувство~ + Хоть это и сон, но ведь это всё-таки я~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ NWO or WNO or whatever they are, what the @@ -104,12 +105,12 @@ \\ 061102110311 [5] [col=yellow]Молодая девушка[col=white] - しんせいじゅく、だか、じんせいらく、 - だか知んないけど、いったい何考えてる訳? - 穢れだとか、再生だとか言っちゃってさ。[EOw][col=yellow]Молодая девушка[col=white] - 価值観なんて人それぞれなんだし、 - 世の中、今のままでじゅーぶんイケてるじゃん。 - あとは黒気さえ良くなればいいと思うな。[EOD] + О чём эти из МироНовопорядка или + НовоМиропорядка вообще говорят? + Какие-то Кегарэ, воскрешения и прочая чушь.[EOw][col=yellow]Молодая девушка[col=white] + У всех свои ценности и мир прекрасен там, + какой он есть. Убрать бы из него всего эти + непонятные штуки~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Big earthquake, huh? @@ -120,11 +121,11 @@ \\ 061102110311 [6] [col=yellow]Молодая девушка[col=white] - さっきの地震、マジ、デカかったよね· - やっぱヤバイのかな? どう思う?[EOw][col=yellow]Молодая девушка[col=white] - 念のため貯金おろしといたけどー· - 街がぶっ飛んだらお金、意味ないよねー - 誰か何とかしてくんないかなぁ。[EOD] + Землетрясение? + Думаете это плохо?[EOw][col=yellow]Молодая девушка[col=white] + Я сняла все свои сбережения~ Хотя, если с + городом что-то случится, то они будут не особо + нужны. Надеюсь, кто-нибудь нам поможет.[EOD][EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Ruins were found in a subway construction @@ -135,12 +136,11 @@ \\ They just do whatever they want.061102110311 [7] [col=yellow]Молодая девушка[col=white] - 鳴海区の地下鉄工事現場で、 - 例の遺跡、見つかったって。 - ほら、テレビでやってたやつ。[EOw][col=yellow]Молодая девушка[col=white] - え? 見てない? - 新世墊が掘ってたらしいよ。 - もうやりたい放題だよね。[EOD] + По ТВ сказали, что на месте постройки метро в + метро в Наруми раскопали какие-то руины.[EOw][col=yellow]Молодая девушка[col=white] + Что? Вы не видели? Сейчас их раскапывает + Новый Миропорядок. + Пусть делают, что хотят.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ The city is flying in the sky and it feels @@ -151,12 +151,11 @@ \\ 061102110311 [8] [col=yellow]Молодая девушка[col=white] - 街が空飛んでるのに、当たり前な気がする。 - 頭の中にさ、なんかイメージがあるのよ。 - これ、デジャ・ヴュっていうやつ?[EOw][col=yellow]Молодая девушка[col=white] - 今にもっと悪い事が起こるよ。 - きっと、テレビでやってたやつも全部、 - 本当になっちゃうよ。[EOD] + Знаете, почему-то летающий в воздухе город не + кажется чем-то~ необычным. + Такое ощущение, что я уже такое переживала.[EOw][col=yellow]Молодая девушка[col=white] + И я чувствую, что скоро сбудутся те ужасные + вещи, о которых говорят на ТВ.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ It's all over anyway, right? @@ -165,9 +164,9 @@ \\ 061102110311 [9] [col=yellow]Молодая девушка[col=white] - どうせもうだめなんでしょ? - だったら一気に楽にしてよって感じ。 - 私、もう疲れちゃった。[EOD] + Что-либо делать уже бесполезно, да? + Пусть это всё закончится~ + Я так устала~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ I heard the inside of Club Zodiac is a big @@ -175,9 +174,9 @@ \\ 061102110311 [10] [col=yellow]Молодая девушка[col=white] - クラブ・ゾディアックの中が迷路だって - 聞いたンだけどー - 私、步き回るのって婔なのよねー[EOD] + Я слышала, что в клубе Зодиак есть какой-то + лабиринт. + Если честно, я ненавижу блуждать без цели.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Sumaru Castle has reappeared. @@ -189,11 +188,11 @@ \\ 061102110311 [11] [col=yellow]Молодая девушка[col=white] - 珠間瑠城が復活したじゃん。 - あの城ってかなりオカルト入ってるらしいよ。 - いろいろ聞いたもん。[EOw][col=yellow]Молодая девушка[col=white] - 澄丸 清忠とか天野 舞姫とか。 - あんまり近づかないほうがいいよね。[EOD] + Снова появился Замок Сумару. + Я слышала, что там появляются всякие + древние оккультные штуки~[EOw][col=yellow]Молодая девушка[col=white] + ~Типа Киётады Сумару и Майхиме Амано. + Лучше держаться от него подальше.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ That haunted... I mean Sumaru Castle, @@ -206,12 +205,14 @@ \\ 061102110311 [12] [col=yellow]Молодая девушка[col=white] - 例のオカルト城·じゃなくて珠間瑠城、 - 実はラブ口マンスの舞台だったんだね。[EOw][col=yellow]Молодая девушка[col=white] - 澄丸 清忠とかっていう城主をやっつけたのは、 - 辰之進と天野 舞姫って - カップルなんだって。[EOw][col=yellow]Молодая девушка[col=white] - ハッピーエンドだったらもっとよかったのにね。[EOD] + Опять он~ Я про Замок Сумару. + Слышала, что однажды там даже была любовная + история.[EOw][col=yellow]Молодая девушка[col=white] + Говорят, что те, кто победил владельца этого + замка, Киётаду Сумару, были счастливая пара + Тацуносин [surname] и Майхиме Амано.[EOw][col=yellow]Молодая девушка[col=white] + Было бы здорово, если и сейчас был бы такой же + хэппи-энд~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Sumaru Castle has reappeared. @@ -223,11 +224,11 @@ \\ 061102110311 [13] [col=yellow]Молодая девушка[col=white] - 珠間瑠城が復活したじゃん。 - あの城ってかなりオカルト入ってるらしいよ。 - いろいろ聞いたもん。[EOw][col=yellow]Молодая девушка[col=white] - 澄丸 清忠とか 辰之進とか。 - あんまり近づかないほうがいいよね。[EOD] + Снова появился Замок Сумару. + Я слышала, что там появляются всякие + древние оккультные штуки~[EOw][col=yellow]Молодая девушка[col=white] + ~Типа Киётады Сумару и Тацуносина [surname]. + Лучше держаться от него подальше.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ That haunted... I mean Sumaru Castle, @@ -240,12 +241,14 @@ \\ 061102110311 [14] [col=yellow]Молодая девушка[col=white] - 例のオカルト城·じゃなくて珠間瑠城、 - 実はラブ口マンスの舞台だったんだね。[EOw][col=yellow]Молодая девушка[col=white] - 澄丸 清忠とかっていう城主をやっつけたのは、 - 天野 舞姫と 辰之進って - カップルなんだって。[EOw][col=yellow]Молодая девушка[col=white] - ハッピーエンドだったらもっとよかったのにね。[EOD] + Опять он~ Я про Замок Сумару. + Слышала, что однажды там даже была любовная + история.[EOw][col=yellow]Молодая девушка[col=white] + Говорят, что те, кто победил владельца этого + замка, Киётаду Сумару, были счастливая пара + Тацуносин [surname] и Майхиме Амано.[EOw][col=yellow]Молодая девушка[col=white] + Было бы здорово, если и сейчас был бы такой же + хэппи-энд~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ They say the flowers in Aoba Park talk. @@ -254,9 +257,9 @@ \\ 061102110311 [15] [col=yellow]Молодая девушка[col=white] - 書葉公園の花って、話すんだって。 - オウムみたいでいいよねー - 今度、取って帚ろうかな。[EOD] + Говорят, что цветы в парке Аоба умеют говорить. + Прямо как попугаи. + Пожалуй, схожу туда за цветочками.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ I've heard that an experienced blacksmith @@ -268,11 +271,11 @@ \\ 061102110311 [16] [col=yellow]Молодая девушка[col=white] - アサノタクミって武器職人が - いるらしいんだけどさぁ、なんか凄腕らしいよ。[EOw][col=yellow]Молодая девушка[col=white] - 伝説の武器職人なんていわれてるみたいだもん。 - 日本刀とかつくるんでしょ? - あれって髙いんだよねー[EOD] + Я слышала, что у кузнеца Такуми Асано золотые + руки.[EOw][col=yellow]Молодая девушка[col=white] + Его называют Легендарным Кузнецом. + А он может сделать катану? + Должно быть, у него очень высокие цены~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Ku, Kudan is that... @@ -280,8 +283,8 @@ \\ 061102110311 [17] [col=yellow]Молодая девушка[col=white] - く、くだんってさ、アレよね· - ダメ! [pause][15]これ以上はとても言えないわ。[EOD] + Э~ Это был Кудан~ + Нет! [pause][15]Я не смогу больше ничего говорить.[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ Hey, hey, 05120F00is it true that the Haunted @@ -291,11 +294,10 @@ \\ 061102110311 [18] [col=yellow]Молодая девушка[col=white] - ね、ね、[pause][15]ムー大陸に呪いのタクシーが - 現れたって木ントなのかな?[EOw][col=yellow]Молодая девушка[col=white] - あたしさー、ちょっと前にあの辺りでタクシー - 乗ってたんだよ。 - 危機一髪じゃん。[EOD] + Эй, эй, это правда, что перед Континентом Му + видели Проклятое Такси?[EOw][col=yellow]Молодая девушка[col=white] + Я как раз недавно поймала там машину. + Ох, похоже, что чуть не попалась на него~[EOD] \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ [yellow]Young girl[white] \\ You remember the 100km/h Hag, right? diff --git a/UnRLE/0741_DungPack1/0741_01_0_1_U b/UnRLE/0741_DungPack1/0741_01_0_1_U new file mode 100644 index 0000000..ab6355a Binary files /dev/null and b/UnRLE/0741_DungPack1/0741_01_0_1_U differ diff --git a/UnRLE/0741_DungPack1/0741_02_0_3586_U.png b/UnRLE/0741_DungPack1/0741_02_0_3586_U.png new file mode 100644 index 0000000..8770121 Binary files /dev/null and b/UnRLE/0741_DungPack1/0741_02_0_3586_U.png differ diff --git a/UnRLE/0749_/0749_00_0_0_U b/UnRLE/0749_/0749_00_0_0_U new file mode 100644 index 0000000..62b6d82 Binary files /dev/null and b/UnRLE/0749_/0749_00_0_0_U differ diff --git a/UnRLE/0749_/0749_01_0_1_U b/UnRLE/0749_/0749_01_0_1_U new file mode 100644 index 0000000..5556ad3 Binary files /dev/null and b/UnRLE/0749_/0749_01_0_1_U differ diff --git a/UnRLE/0749_/0749_02_0_3842_U b/UnRLE/0749_/0749_02_0_3842_U new file mode 100644 index 0000000..8b1a004 Binary files /dev/null and b/UnRLE/0749_/0749_02_0_3842_U differ diff --git a/UnRLE/0749_/0749_02_0_3842_U.png b/UnRLE/0749_/0749_02_0_3842_U.png new file mode 100644 index 0000000..ac6e0b7 Binary files /dev/null and b/UnRLE/0749_/0749_02_0_3842_U.png differ diff --git a/UnRLE/0750_/0750_02_0_4354_U b/UnRLE/0750_/0750_02_0_4354_U new file mode 100644 index 0000000..7764e22 Binary files /dev/null and b/UnRLE/0750_/0750_02_0_4354_U differ diff --git a/UnRLE/0750_/0750_02_0_4354_U.png b/UnRLE/0750_/0750_02_0_4354_U.png new file mode 100644 index 0000000..7339fdd Binary files /dev/null and b/UnRLE/0750_/0750_02_0_4354_U.png differ diff --git a/UnRLE/0751_/0751_00_0_0_U b/UnRLE/0751_/0751_00_0_0_U new file mode 100644 index 0000000..51fa5bf Binary files /dev/null and b/UnRLE/0751_/0751_00_0_0_U differ diff --git a/UnRLE/1118_/1118_00_0_0_clut0_U.png b/UnRLE/1118_/1118_00_0_0_clut0_U.png new file mode 100644 index 0000000..7ecb3f4 Binary files /dev/null and b/UnRLE/1118_/1118_00_0_0_clut0_U.png differ diff --git a/UnRLE/1118_/1118_00_0_0_clut0_U2222.png b/UnRLE/1118_/1118_00_0_0_clut0_U2222.png new file mode 100644 index 0000000..dfee22c Binary files /dev/null and b/UnRLE/1118_/1118_00_0_0_clut0_U2222.png differ diff --git a/UnRLE/151.bin b/UnRLE/151.bin new file mode 100644 index 0000000..9cc671a Binary files /dev/null and b/UnRLE/151.bin differ diff --git a/UnRLE/d_texture.py b/UnRLE/d_texture.py new file mode 100644 index 0000000..8d81413 --- /dev/null +++ b/UnRLE/d_texture.py @@ -0,0 +1,157 @@ +import struct +import sys +import os +from PIL import Image + +def read_u32(f): + data = f.read(4) + if len(data) < 4: + return None + return struct.unpack('> 15) & 0x1 + r = ((color >> 10) & 0x1F) << 3 + g = ((color >> 5) & 0x1F) << 3 + b = (color & 0x1F) << 3 + return (r, g, b, 255 if a else 0) if a else (r, g, b) + +def process_texture_file(input_file): + with open(input_file, 'rb') as f: + # Читаем адреса текстурных блоков + texture_addresses = [] + first_address = read_u32(f) + if first_address is None: + print("Error: Invalid file format (cannot read first address)") + return + + texture_addresses.append(first_address) + print(f"First texture block at: 0x{first_address:08X}") + + # Читаем адреса до достижения позиции first_address + while f.tell() < first_address: + addr = read_u32(f) + if addr is None: + break + texture_addresses.append(addr) + + print(f"Found {len(texture_addresses)} texture blocks") + + # Создаем изображение 2048x512 + img = Image.new('RGBA', (2048, 512)) + pixels = img.load() + + for addr in texture_addresses: + if addr >= os.path.getsize(input_file): + print(f"Warning: Invalid texture address 0x{addr:08X}, skipping") + continue + + f.seek(addr) + + # Читаем параметры текстуры + clut_mode = read_u32(f) + image_mode = read_u32(f) + + if clut_mode is None or image_mode is None: + print(f"Warning: Invalid texture header at 0x{addr:08X}, skipping") + continue + + print(f"Processing texture at 0x{addr:08X}, clut_mode={clut_mode}, image_mode={image_mode}") + + # Обрабатываем CLUT чанк + clut_size = read_u32(f) + if clut_size is None: + print(f"Warning: Invalid CLUT size at 0x{addr:08X}, skipping") + continue + + clut_x = read_u16(f) * 2 # Умножаем только позицию на 2 + clut_y = read_u16(f) + clut_w = read_u16(f) + clut_h = read_u16(f) + + if None in (clut_x, clut_y, clut_w, clut_h): + print(f"Warning: Invalid CLUT header at 0x{addr:08X}, skipping") + continue + + print(f"CLUT: pos=({clut_x},{clut_y}), size=({clut_w},{clut_h})") + + clut_data_size = clut_size - 12 + clut_data = f.read(clut_data_size) + if len(clut_data) < clut_data_size: + print(f"Warning: CLUT data truncated at 0x{addr:08X}, skipping") + continue + + # Создаем CLUT палитру + clut = [] + if clut_mode == 16: + for i in range(0, min(len(clut_data), clut_w*clut_h*2), 2): + color = struct.unpack('= len(tex_data): + continue + color_idx = tex_data[idx] + if color_idx >= len(clut): + continue + # Координаты текстуры (x-позиция уже умножена на 2) + px = tex_x + x + py = tex_y + y + if 0 <= px < 2048 and 0 <= py < 512: + pixels[px, py] = clut[color_idx] + + # Сохраняем PNG + output_file = os.path.splitext(input_file)[0] + '.png' + img.save(output_file) + print(f"Image saved to {output_file}") + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python texture_converter.py ") + sys.exit(1) + + input_file = sys.argv[1] + if not os.path.exists(input_file): + print(f"Error: File {input_file} not found") + sys.exit(1) + + process_texture_file(input_file) \ No newline at end of file