PSX Planet: SONY PlayStation Community

PSX Planet: SONY PlayStation Community (https://psxplanet.ru/forum/index.php)
-   (PSX) Platform (RU) (https://psxplanet.ru/forum/forumdisplay.php?f=58)
-   -   Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.] (https://psxplanet.ru/forum/showthread.php?t=27860)

DruchaPucha 25.06.2023 16:44

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Графики много не перерисовано, ещё и глюки с кнопками. А что хоть за формат тут такой? Нашёл только конвертер для ПК CAM>BMP и обратно, а вот про PS1 пишут что тут mdec. Нашёл только скрипт для питона, но что-то как-то не ясно.
Код:

"""
Extract PlayStation MDEC bitstreams from an Oddworld PlayStation .CAM file
(found in .LVL files) and converts those bitstreams to images with jPSXdec.
The resulting images will need to be stitched together for form a full frame.
Note that there is other data in .CAM files that this tool ignores.

Usage:
python cam2bs.py cam-file
"""

import sys, os, struct

# Customize the jPSXdec command with quality and output options (see manual)
JPSXDEC_COMMAND = "java -jar jpsxdec.jar -f {0} -static bs -dim {1}x{2}"

class CamFramePiece:
    '''
    One piece of a .CAM file frame.
    All pieces are 240 pixels high, and all but the
    last piece is 32 pixels wide.
    The last piece is 16 pixels wide.
    The piece format is simple:
        4 bytes (little-endian): size of the bitstream data
        bitstream data
    '''

    def __init__(self, iPiece, fileStream):
        self.iPiece = iPiece
        self.iFilePos = fileStream.tell()
        sbinPieceLen = fileStream.read(4)
        self.iPieceLen, = struct.unpack('i', sbinPieceLen)
        if self.iPieceLen <= 0:
            raise Exception('BAD: %s frame len <= 0' % self)
        self.bitstreamBytes = fileStream.read(self.iPieceLen)
        iMarker00, iMarker38 = struct.unpack('xxBB', self.bitstreamBytes[0:4])
        if iMarker00 != 0x00 or iMarker38 != 0x38:
            raise Exception('BAD: %s missing 0x0038' % self)

    def savePiece(self, sSrcFile):
        if self.iPiece == 11:
            self.iWidth = 16
        else:
            self.iWidth = 32
        self.sFileName = '%s_%02d_%dx%d.bs' % (sSrcFile, self.iPiece, self.iWidth, 240)
        print 'Saving %s piece %d as %s' % (sSrcFile, self.iPiece, self.sFileName)
        with open(self.sFileName, 'wb') as f:
            f.write(self.bitstreamBytes)

    def decodePiece(self):
        print 'Converting %s to image with jPSXdec' % self.sFileName
        sCmd = JPSXDEC_COMMAND.format(self.sFileName, self.iWidth, 240)
        print sCmd
        os.system(sCmd)

    def __str__(self):
        return '#%d @%d: Len=%d' % (self.iPiece, self.iFilePos, self.iPieceLen)
    def __repr__(self):
        return self.__str__()

class CamFile:
    '''
    Oddworld .CAM file.
    Contains 12 separate images (CamFramePiece).
    When combined together, forms a 368x240 frame.
    The header is unknown, and there are quite a few bytes at the end of the file that are unknown.
        8 bytes: unknown
        4 bytes (big-endian): string "Bits"
        4 bytes: unknown
        body (variable size): 12 frame pieces (see CamFramePiece)
        remaining (variable size): unknown
    '''
    def __init__(self, sFile):
        print 'Extracting bitstream pieces from %s' % sFile
        with open(sFile, 'rb') as fileStream:
            self.sSrcFile = sFile
            self.lstPieces = []
            fileStream.read(8) # unknown 8 bytes
            sBits = fileStream.read(4)
            if sBits != 'Bits':
                raise Exception(sBits+' != Bits')
            fileStream.read(4) # unknown 4 bytes
            for iPiece in xrange(12):
                self.lstPieces.append(CamFramePiece(iPiece, fileStream))

    def saveBitstreams(self):
        for piece in self.lstPieces:
            piece.savePiece(self.sSrcFile)

    def decodeBitstreams(self):
        for piece in self.lstPieces:
            piece.decodePiece()
            print

    def printInfo(self):
        for piece in self.lstPieces:
            print piece
           

def main(lstArgs):
    camFile = CamFile(lstArgs[0])
    camFile.printInfo()
    print
    camFile.saveBitstreams()
    print
    camFile.decodeBitstreams()
    return 0

if __name__ == '__main__':
    sys.exit(main(sys.argv[1:]))


DruchaPucha 29.06.2023 18:20

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Исправил текстуры на поледних локациях, там где не были видны платформы.

ViToTiV 29.06.2023 20:11

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
DruchaPucha, так ты разобрался как в mdec (bs) перегонять? можно тогда во второй части вставить всю графику из ПК от Фаргуса

DruchaPucha 29.06.2023 22:15

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Цитата:

Сообщение от ViToTiV (Сообщение 296655)
DruchaPucha, так ты разобрался как в mdec (bs) перегонять? можно тогда во второй части вставить всю графику из ПК от Фаргуса

Не, я из английской версии взял один файл и просто заново перепаковал R2.LVL. Пираты локацию перепутали, в общем взяли часть из одной и вставили в другую.
Golden Leon полность перерисовали всю графику в Exodus, но там была PAL версия, да и самого дампа не было в сети
http://rgdb.info/base/rus-00788

BS поддерживает Sony Movie Converter 3.1, но я что-то не смог открыть. Выше я скрипт для питона скинул, он в свзяке с jpsxdec работает, но я с этим питоном неочень дружен.

Tricker42 06.12.2023 08:18

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
С TerraBox не качает, перезалейте пожалуйста!

NightRaven 06.12.2023 11:45

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Цитата:

Сообщение от Tricker42 (Сообщение 299020)
С TerraBox не качает, перезалейте пожалуйста!

Всё качается, перезалив не нужен. Просто сохранить надо в своё хранилище аккаунта Терабокс и оттуда скачать выделив галочкой и нажав кнопку "скачать", после нажать "продолжить скачивание" игнорируя всё что связано с десктопом на ПК, который там предлагают. После скачивания просто удалишь из своего хранилища там же где и скачивал нажав "удалить" где "мусорная корзина".

Tricker42 06.12.2023 19:01

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Вложений: 1
Цитата:

Сообщение от NightRaven (Сообщение 299023)
Всё качается, перезалив не нужен. Просто сохранить надо в своё хранилище аккаунта Терабокс и оттуда скачать выделив галочкой и нажав кнопку "скачать", после нажать "продолжить скачивание" игнорируя всё что связано с десктопом на ПК, который там предлагают. После скачивания просто удалишь из своего хранилища там же где и скачивал нажав "удалить" где "мусорная корзина".

У меня открывается такая страничка, где тут чего сохранять?:

NightRaven 06.12.2023 23:08

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Цитата:

Сообщение от Tricker42 (Сообщение 299033)
У меня открывается такая страничка, где тут чего сохранять?:

Не знаю как у тебя, но я из шапки версию с фиксом спокойно скачал так как описал выше и только потом сообщение написал что всё качается. Так что проблема индивидуальна похоже. Просто нажал на ссылку Терабокс, там выделил галочкой чтобы скачать, нажал сохранить в мой Терабокс и т.д. Выше всё расписано. А на твоём скриншоте пусто всё кроме верхней строки. От чего и почему так я понятия не имею, но перезалив ничего не изменит, он не нужен. Я скачал и проблем не было.

Tricker42 07.12.2023 06:50

Ответ: Oddworld: Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Цитата:

Сообщение от NightRaven (Сообщение 299042)
Не знаю как у тебя, но я из шапки версию с фиксом спокойно скачал так как описал выше и только потом сообщение написал что всё качается. Так что проблема индивидуальна похоже. Просто нажал на ссылку Терабокс, там выделил галочкой чтобы скачать, нажал сохранить в мой Терабокс и т.д. Выше всё расписано. А на твоём скриншоте пусто всё кроме верхней строки. От чего и почему так я понятия не имею, но перезалив ничего не изменит, он не нужен. Я скачал и проблем не было.

Разобрался! Оказывается мой Яндекс-браузер чудит чего-то. Попробовал через другой браузер, и всё нормально скачалось!

1052 10.12.2023 07:17

Ответ: Oddworld Abe's Oddysee [SLUS-00190] [Russian] [Kudos/ViT Co.]
 
Обновил образ на версию от DruchaPucha.


Часовой пояс GMT +3, время: 01:43.

Перевод: zCarot
Права | Copyright ©
© PSX Planet Community 2003-2024