some city text and exports

This commit is contained in:
sShemet
2025-08-06 23:24:21 +05:00
parent 80a2caf42c
commit d87b4cea49
16 changed files with 243 additions and 84 deletions

BIN
UnRLE/0160_/0160_08_0_8_U Normal file

Binary file not shown.

View File

@@ -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

View File

@@ -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?

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
UnRLE/0749_/0749_00_0_0_U Normal file

Binary file not shown.

BIN
UnRLE/0749_/0749_01_0_1_U Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

BIN
UnRLE/0751_/0751_00_0_0_U Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
UnRLE/151.bin Normal file

Binary file not shown.

157
UnRLE/d_texture.py Normal file
View File

@@ -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('<I', data)[0]
def read_u16(f):
data = f.read(2)
if len(data) < 2:
return None
return struct.unpack('<H', data)[0]
def rgb1555_to_rgb(color):
a = (color >> 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('<H', clut_data[i:i+2])[0]
rgb = rgb1555_to_rgb(color)
clut.append(rgb)
# Рисуем CLUT (x-координата уже умножена на 2)
px = clut_x + (i//2)
py = clut_y + ((i//2) // clut_w)
if 0 <= px < 2048 and 0 <= py < 512:
pixels[px, py] = rgb
# Обрабатываем текстуру
tex_size = read_u32(f)
if tex_size is None:
print(f"Warning: Invalid texture size at 0x{addr:08X}, skipping")
continue
tex_x = read_u16(f) * 2 # Умножаем только позицию на 2
tex_y = read_u16(f)
tex_w = read_u16(f) * 2
tex_h = read_u16(f)
if None in (tex_x, tex_y, tex_w, tex_h):
print(f"Warning: Invalid texture header at 0x{addr:08X}, skipping")
continue
print(f"Texture: pos=({tex_x},{tex_y}), size=({tex_w},{tex_h})")
tex_data_size = tex_size - 12
tex_data = f.read(tex_data_size)
if len(tex_data) < tex_data_size:
print(f"Warning: Texture data truncated at 0x{addr:08X}, skipping")
continue
if image_mode == 9 and clut_mode == 16 and clut:
for y in range(tex_h):
for x in range(tex_w):
idx = y * tex_w + x
if idx >= 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 <input_file>")
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)