Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - e2e41

Страницы: [1] 2 3 4 Далее
1
Просто линк оставить в профильной на эту тему, откровенно плагин удобный для некоторых моментов.

2
шрифт разве не в DPFONT? если там то кирилица уже вшита должна быть, жалко что все заглохло...
в текущих реалиях текст перевести не состовляет труда

7zG.exe не работает
7zFM.exe работает

3
This plugin can be used for Magic the Gathering DC???
там вреде deflate, хз не работает вроде

4
благодарю

5
Добрый день, нужна помощь с компрессорм-декомпрессором, платьформа sega dreamcast, игра deSpiria, контейнер *.cpr
оригинальный пост
Цитата
Цитата: kazetrigger post_id=203387 time=1785010755 user_id=22355
I made my own custom tool that incorporates the functionality found in the following projects:

https://github.com/VincentNLOBJ/pvr2image
https://github.com/VincentNLOBJ/PyPVR

You can probably get by with PyPVR for most cases. In the case of deSpiria, it has .CPR files which are LZSS compressed. You'll need to decompress them to PVR first. I found an algorithm to handle that and incorporated that.

The python code for it is as follows (Please note that this code assumes other parts of code are present such as PvrError, so you'll have to tweak the code a bit to get it work. This assumes you have some programming knowledge. If you don't want to raise that custom error, you can raise a standard error or just replace it with print() statements):
def lzss_decompress(data: bytes) -> bytes:
    if len(data) < 5:
        raise PvrError("LZSS input is too short")

    target_size = struct.unpack_from("<I", data, 0)[0]
    if target_size <= 0:
        raise PvrError(f"invalid LZSS decompressed size: {target_size}")

    ring = bytearray(4096)
    ring_pos = 0xFEE
    src_pos = 4
    out = bytearray()

    while src_pos < len(data) and len(out) < target_size:
        flags = data[src_pos]
        src_pos += 1

        for bit in range(8):
            if flags & (1 << bit):
                # Literal byte
                if src_pos >= len(data):
                    raise PvrError("truncated LZSS literal")

                value = data[src_pos]
                src_pos += 1

                out.append(value)
                ring[ring_pos] = value
                ring_pos = (ring_pos + 1) & 0xFFF

            else:
                # Two-byte back-reference
                if src_pos + 1 >= len(data):
                    raise PvrError("truncated LZSS back-reference")

                b0 = data[src_pos]
                b1 = data[src_pos + 1]
                src_pos += 2

                offset = b0 | ((b1 & 0xF0) << 4)
                length = (b1 & 0x0F) + 3

                for i in range(length):
                    value = ring[(offset + i) & 0xFFF]

                    out.append(value)
                    ring[ring_pos] = value
                    ring_pos = (ring_pos + 1) & 0xFFF

                    if len(out) >= target_size:
                        break

            if len(out) >= target_size:
                break

    if len(out) != target_size:
        raise PvrError(
            f"LZSS stream ended at {len(out):,} bytes; "
            f"expected {target_size:,}"
        )

    return bytes(out)

Input a CPR's data as bytes and get the bytes out which you can then export to a file.
распаковщик с помощья чата с Алиса ИИ создать удалосьimport struct
import sys

def lzss_decompress(data: bytes) -> bytes:
    print("  [LZSS] Checking input length...")
    if len(data) < 5:
        raise ValueError("LZSS input is too short")

    target_size = struct.unpack_from("<I", data, 0)[0]
    print(f"  [LZSS] Target size from header: {target_size} bytes")
    if target_size <= 0:
        raise ValueError(f"Invalid LZSS decompressed size: {target_size}")

    ring = bytearray(4096)
    ring_pos = 0xFEE
    src_pos = 4
    out = bytearray()

    print("  [LZSS] Starting decompression loop...")
    while src_pos < len(data) and len(out) < target_size:
        flags = data[src_pos]
        src_pos += 1

        for bit in range(8):
            if flags & (1 << bit):
                # Literal byte
                if src_pos >= len(data):
                    raise ValueError("Truncated LZSS literal")

                value = data[src_pos]
                src_pos += 1

                out.append(value)
                ring[ring_pos] = value
                ring_pos = (ring_pos + 1) & 0xFFF
            else:
                # Two-byte back-reference
                if src_pos + 1 >= len(data):
                    raise ValueError("Truncated LZSS back-reference")

                b0 = data[src_pos]
                b1 = data[src_pos + 1]
                src_pos += 2

                offset = b0 | ((b1 & 0xF0) << 4)
                length = (b1 & 0x0F) + 3

                for i in range(length):
                    value = ring[(offset + i) & 0xFFF]
                    out.append(value)
                    ring[ring_pos] = value
                    ring_pos = (ring_pos + 1) & 0xFFF

                    if len(out) >= target_size:
                        break

            if len(out) >= target_size:
                break

    if len(out) != target_size:
        raise ValueError(
            f"LZSS stream ended at {len(out):,} bytes; expected {target_size:,}"
        )

    return bytes(out)

def main():
    print("=== LZSS Decompressor started ===")
    if len(sys.argv) < 3:
        print("Usage: python lzss_decompress.py <input.cpr> <output.bin>")
        sys.exit(1)

    input_path = sys.argv[1]
    output_path = sys.argv[2]

    print(f"[MAIN] Input: {input_path}")
    print(f"[MAIN] Output: {output_path}")

    try:
        with open(input_path, "rb") as f:
            data = f.read()
        print(f"[MAIN] Read {len(data)} bytes from input file")
    except FileNotFoundError:
        print(f"ERROR: Input file not found: {input_path}", file=sys.stderr)
        sys.exit(1)
    except Exception as e:
        print(f"ERROR reading file: {e}", file=sys.stderr)
        sys.exit(1)

    try:
        decompressed = lzss_decompress(data)
        print(f"[MAIN] Decompressed to {len(decompressed)} bytes")
    except ValueError as e:
        print(f"LZSS decompression error: {e}", file=sys.stderr)
        sys.exit(1)
    except Exception as e:
        print(f"Unexpected error during decompression: {e}", file=sys.stderr)
        sys.exit(1)

    try:
        with open(output_path, "wb") as f:
            f.write(decompressed)
        print(f"[MAIN] Wrote {len(decompressed)} bytes to output file")
        print("=== Done ===")
    except Exception as e:
        print(f"Error writing output file: {e}", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()
неудается упаковать полученный *.pvr обратно, помогите если не сложно с реализацией

6
подниму тему https://rutube.ru/video/821dd85a6ff938816e108f706670c024/

7
Картриджи / диски / Re: Everdrive N8 (China ver) JACK DIY
« : 11 Апреля 2026, 20:59:00 »
Любопытно.
проверено это скам какой-то, функционал ограничен
по факту nesos-v1.25  с поддержкой 247.RBF(Battletoads & Double Dragon - On Ragnarok)
из минусов после резета черный экран, если уж так нужен этот хак правим MAPROUT.BIN
берем nesos-v1.26_vtx, правим MAPROUT.BIN по смещению 7 вместо 00 ставим F7(247 в десятичной системе), и скидываем в папку MAPS 247.RBF,
))))))))) реквизиты сбербанка писать не буду, XVortex спасибо...

8
1) Открыть *.AHF любым хекс редактором
2) найти текст RIFF(это начало заголовока аудио)
3) отрезаем лишнее и обзываем *.adp

ну а вообще в начале *.AHF есть таблица с названиями файлов и смещениями

для конвертации аудиодороги в формат понятный дриму нужен WAVCON.EXE

9
благодарю за помощь
теперь возник вопрос чем и как конвертить *.wav в *.adp(Xilam DERF 8-bit DPCM)

10
беда в том что этих блоков не один не два а 1-1,5к в отдельном файле, они могут чередоваться с блоками видео и меняется их размер
скрипт написать для меня проблематично, по сути нужно найти все блоки и извлечь без заголовков в общий raw, мне даже тяжело найти что то похожее для переделки под свои нужды не говоря о том чтобы написать скрипт с нуля.

11
Stupid Invaders
видеоролики в формате Xilam DERF video
хотелось бы извлечь из них аудио

12
Ромхакинг / Заказ хака за оплату
« : 06 Сентября 2024, 20:36:05 »
VAGp..........\А..]АЖvяяXў.4™Ю..PSX.AIFF.

14
перерисовал шрифт

15
А почему строчные Е и Ё и Ь с Ъ отличаются друг от друга? Ограничение по высоте какое-то или просто на скорую руку нарисованы?
оригинальный шрифт из игры, из строчных не хватало только А

Добавлено позже:
вроде разобрался с указателями, но без софта это все тихий ужас править

16
Например, Industrial Spy: Operation Espionage.
Спасибо что напомнил. Есть там шрифт с кирилицей, но к сожалению мне пока не понятно каким образом это реализовать, прогать я ничего не смогу(будем реалистами), процесс самого перевода с нуля даже с английского(круптар мне неудобен и непонятен) для меня душнина... В общем все против этих игр))))
буквально вчера узнал что у эмуляторов оказывается есть savestates, если бы до этого знал об этой функции ранее возможно допилил бы и другие шрифты из омикрона сразу, сейчас нет никакого желания.

UPD 1ST_READ.BIN за расстояние между буквами отвечает блок по смещению 29010(просто изменим 18 на 10)
нужно разобраться с указателями(не хватает места под текст).

17
Berserk - Sennen Teikoku no Taka-hen - Soushitsu Hana no Shou(вернее undub Sword of the Berserk - Guts' Rage )
кому интересен?

18
ковыряю Advanced Daisenryaku 2001 v1.008 (2001)(Sega)(JP)[!]
найден шрифт, как ни странно папка DPFONT, S18RM04P.DAT используется точно(с остальными не ясно), кому нибудь известны игры с переводом, которые используют данные шрифты? 
 :lol: что то я погорячился японская кодировка это дичь лютая o_0

19
А кто-нибудь ковырял Omikron: The Nomad Soul на возможность востановления? Да я знаю что уже есть версия с востановленными роликами и музыкой, но перевод почему-то выбрали с нечитаемым шрифтом.
UP подниму обсуждение

Озвучка портирована, забирать с рутрекера
up
все текстуры с VQ сжатеим
во вложении шрифт диалогов вектора
и моя поделка

20
Тем временем "портировал" перевод фаргуса в Dragon Riders: Chronicles of Pern, там ничего интересного просто замена PERNTEXT.ENG от ПК версии. Подопытный - версия от вектора, пересборка в GDI. Два вступительных ролика с озвучкой взял из оригинала. Текстуры оставил "векторовские".

magnet:?xt=urn:btih:FCC9672F3081AEDA7492F843B7D3017176E0B08F&dn=DragonRiders%20-%20Chronicles%20of%20Pern%20v1.002%20%282001%29%28Ubi%20Soft%29%28US%29%5b%21%5d&tr=http%3a%2f%2fbt.t-ru.org%2fann&tr=http%3a%2f%2fretracker.local%2fannounce&tr=wss%3a%2f%2ftracker.btorrent.xyz&tr=http%3a%2f%2fre.good73.net%3a2710%2fannounce

PS. Поправил ссылку на магнет

21
Wagyan Land  прекрасно работает на прошивке 1,10(эмулятор он и есть эмулятор, одно лечат другое калечат), если возникают какие то проблемы с определенными ромами используем другую прошивку.

22
если физически защитить sd карту от записи, карик не сможет грохнуть файловую систему флешки...
Wagyan Land работает неккорректно

23
стал обладателем сего чуда, прошивка 1,23(китайцы модифицировали оригинал в хекс редакторе)
рекомендую удалить весь мусор с флешки и поставить оригинальную прошивку https://krikzz.com/pub/support/everdrive-n8/original-series/OS/nesos-v1.23.zip ,
присутствует проблема с черным экраном после резета(известный баг прошивки N8, лечиться удалением содержимого папки SAVE), вот тут кроется нюанс если ваше железо не работает нормально с квиксейвами(зависит от ревизии фамика) то вы не словите черный экран после резета.

24
https://www.dreamcast-talk.com/forum/viewtopic.php?t=8493&start=10

силами фанатов появилась resident evil code veronica x
собственно теперь можно прикручивать русификаторы

26
блок питания хреновый, я брал 12v от бп компа и проверял

27
5 поколение / Чиповка PS1 NTSC-J
« : 22 Апреля 2018, 08:07:33 »
на пальцах:
1 для чиповки нужен модчип (12C607/P. или аналог они одноразовые, с буквой F многоразовые)
2 для модчипа нужна прошивка(зависит от модели приставки, PS1 Modchip Hex Pack v2 гуглиться на раз-два)
3 для того чтоб залить прошивку на модчип нужен программатор
4 для того чтоб поставить модчип нужен паяльник прямые руки и диаграмма(картинка куда чего паять)
5 проблемы с цветностью должен решить колорфикс
6 если напрягают иероглифы делайте биос мод
 

28
я ноктегрызкой изоляцию снимаю  :lol:

29
да робит у него все

30
6 поколение / Проблема с приводом PS2 90008
« : 27 Января 2018, 16:04:43 »
ну есть два варианта, первый купить карточку на алиэкспрессе с установленным фриэмсибутом, второй купить модбо 5 там поддержка usb встроена насколько помню, по ремонту привода дельного совета не смогу дать

Страницы: [1] 2 3 4 Далее