Поднимать старый код на новых компиляторах это жопа полная, особенно в Сях, где что угодно и как угодно пишется. В MovieToStream в итоге надо всю работу с файлами переписывать. Не ясно, что было в их QuickTime библиотеке, но есть Create (создать файл) и FSOpen (открыть файл), их почему-то в библиотеке qtmlclient.dll нет (пробовал скачать новую и ту, что ты мне дал, из них импортировать файл *.lib) и получается надо на обычные вызовы переделывать. Пока финиш.
Добавлено спустя 56 минут 9 секунд: EXTERN_API( OSErr ) Create( ConstStr255Param fileName, short vRefNum, OSType creator, OSType fileType);
/* * Create() * * Availability: * Non-Carbon CFM: in InterfaceLib 7.1 and later * CarbonLib: not available * Mac OS X: not available */
в файле Files.h ... как они это компилировали, если нужна какая-то InterfaceLib 7.1 да ещё и под непонятно что за CFM. Если бы ещё знать, что именно сделает этот Create.
Вот его вызов Create(filmFileName,0,'CYBD','FILM'); тип файла FILM, создатель CYBD...ничего не понятно.
Versus, я на _fsopen заменил. А инклуды типа stdio,stdlib ты откуда использовал? Ну и главный вопрос, что создаёт Create. Ясно, что файл, но записывает он туда что-нибудь или нет. Зачем передавать FILM, CYBD? Может там заголовок какой-то должен сформироваться.
Убрал пока Create, подсунул qtmlclient.dll экзешнику. Прога зависла на проверке, установлен ли QuickTime вызывав if ( ( status = Gestalt( gestaltQuickTime, &result ) ) != noErr )
Author Вечером посмотрю. Также выложу исходники своего makerez, который получился из старых Ребекки. Посмотришь, что именно я там поменял. Менял немного, и, кстати, там тоже нужно было выборочно свопить или нет отдельные данные. Помню, что удивлялся, почему наоборот прога действует.
Добавлено спустя 10 минут 59 секунд:
Author писал(а):
А инклуды типа stdio,stdlib ты откуда использовал?
Виндовские. Оттуда, кстати и fopen.
Добавлено спустя 5 часов 3 минуты 33 секунды: Author Исходники makerez выложил в теме про Doom.
Где ты это нашел? Че-то я потерялся... Не знаю, важно или нет, но файл qtmlclient.dll нашелся в установленном QuickTime C:\Program Files\QuickTime\QTSystem.
Народ, а кто замечал такую хрень? 1. Достаешь cel прогой 3DOResExplorer004a.exe; 2. Сохраняешь как BMP. - Потом если эту BMP сжимаешь обратно в cel без изменений, то cel получается куда большего размера, чем оригинальная. А если еще что-то дорисовываешь/перерисовываешь - вообще пипец, потом обратно не засунешь, если половину картинки не убрать. Короче, больше получается, чем была, раза в 1,5! 3. Самое интересное. Если в первый раз сжатую cel, но размером больше, чем нужно, пусть даже не измененную, а просто сковерченную в BMP, а потом обратно - взять и открыть в 3DOResExplorer004a и снова конвертнуть в BMP, а потом снова в cel - она становится уже годного размера. То есть, после двойной конвертации: Оригинальная cel => BMP = cel => BMP = итоговая cel. Тогда размер уже удобоваримый. И если по ходу двойной конвертации открывать HEX-редактором получающиеся cel, то видно, что с каждым разом, данные уже плотнее сидят. При этом, при многократной ковертации, в cel ничего не теряется. Я на каждом этапе, BMP фотошопом с пипеткой проверял.
Я вот, мучился с cel-ками Uncoced 16, имеющими пикселы всего 4-х цветов. Сама картинка ничего не меняется, все пикселы на месте и их цвета те же, а с каждой переконвертаций и повторными пересжатиями - cel весит всё меньше и данные внутри пакуются всё плотнее.
Думаю, что это смотря чем пересохранять. Если утилитами cdoty, то вряд ли это хороший способ. Я сконверченную cel пересохранял маковским фотошопом. В зависимости от выставленных параметров меняется и размер итоговой cel.
Маковским фотошопом пользуюсь, конечно, в том и дело.
Добавлено спустя 1 минуту 51 секунду: Утилита cdoty слишком "вонючая" - ей BMP нужен определенной палитры, плюс она может жать BMP в cel, только если ширина картинки BMP (cel) - чётная , и т.п. Говно - утилита, в общем.
- Потом если эту BMP сжимаешь обратно в cel без изменений, то cel получается куда большего размера, чем оригинальная. А если еще что-то дорисовываешь/перерисовываешь - вообще пипец, потом обратно не засунешь, если половину картинки не убрать. Короче, больше получается, чем была, раза в 1,5!
Вне зависимости от выбранных параметров сохранения?
aspyd писал(а):
То есть, после двойной конвертации: Оригинальная cel => BMP = cel => BMP = итоговая cel. Тогда размер уже удобоваримый.
Осмелюсь предположить, что это как при сохранении в jpg. Если много раз пересохранять одно и то же, то размер будет постепенно сокращаться.
Вне зависимости от выбранных параметров сохранения?
Я же говорю - достаем cel из игры. Она пожата в Uncoded 16 с Pack Cel Data. Всё. Чтобы игра её приняла обратно - надо жать её так же. Никакие там параметры крутить нельзя. Ковертишь ее в BMP прогой 3DOResExplorer, затем, ничего не трогая и не перерисовывая, конвертишь эту BMP обратно в cel. Из-под фотошопа под MAC, 3DO Cel Writer-ом. Выбрав Uncoded 16 и Pack Cel Data, иначе игра её не сожрет.
В итоге получается cel, но почему-то бОльшего размера, которую не запихнешь обратно в игру.
Потом эту "непригодную" cel снова открываешь 3DOResExplorer, снова в BMP, потом опять => в cel, из фотошопа, 3DO Cel Writer-ом, Uncoded 16, Pack Cel Data, то есть, точно так же. Теперь размер становится меньше, и она уже куда ближе к оригинальной. Может обратно в игру даже и влезть (а может, всё равно, не влезть).
А вот если в третий раз так же переконвертировать - уже не прокатывает, итоговая cel больше не уменьшается.
Versus писал(а):
Осмелюсь предположить, что это как при сохранении в jpg. Если много раз пересохранять одно и то же, то размер будет постепенно сокращаться.
А между тем кто-то продолжает клепать хоумбрюшки для 3DO. Во тут кто-то недо Tetris склепал (2015 год). "Недо" потому что падают одни только Z-ки (глюк эмулятора?) От этого же автора есть некий эмулятор NES для 3DO с сырцами! Надо бы поизучать :)
Появился вопрос - как позицию по осям координат для текстурки перевести в пикселы? Например, в заголовке вижу позицию по оси X = 1E. Сколько это пикселов нужно отсчитать, чтобы прикинуть её позицию на экране и откуда считать пикселы?
Вне зависимости от выбранных параметров сохранения?
Я же говорю - достаем cel из игры. Она пожата в Uncoded 16 с Pack Cel Data. Всё. Чтобы игра её приняла обратно - надо жать её так же. Никакие там параметры крутить нельзя. Ковертишь ее в BMP прогой 3DOResExplorer, затем, ничего не трогая и не перерисовывая, конвертишь эту BMP обратно в cel. Из-под фотошопа под MAC, 3DO Cel Writer-ом. Выбрав Uncoded 16 и Pack Cel Data, иначе игра её не сожрет.
В итоге получается cel, но почему-то бОльшего размера, которую не запихнешь обратно в игру.
Потом эту "непригодную" cel снова открываешь 3DOResExplorer, снова в BMP, потом опять => в cel, из фотошопа, 3DO Cel Writer-ом, Uncoded 16, Pack Cel Data, то есть, точно так же. Теперь размер становится меньше, и она уже куда ближе к оригинальной. Может обратно в игру даже и влезть (а может, всё равно, не влезть).
А вот если в третий раз так же переконвертировать - уже не прокатывает, итоговая cel больше не уменьшается.
Versus писал(а):
Осмелюсь предположить, что это как при сохранении в jpg. Если много раз пересохранять одно и то же, то размер будет постепенно сокращаться.
Не знаю. Потому и спрашиваю.
Кстати если все делать с помощью маковского фотошопа и установленных в нем 3до расширений,то в принципе файлы получались правильного формата и размера, а вот при использовании программ 3DOResExplorer расширение файла менялось((( также вроде в фотошопе можно было создавать файлы формата photocd, но к сожалению добиться полноценного результата проигрывания на приставке не удалось(((
Всем доброго времени суток. Я разработчик, в данный момент занимаюсь портами старых игр. (Если интересно - текущая платформа с основой stm32 мк). Если очень интересно - вот линк на то что у меня есть : https://github.com/cornway?tab=repositories По сути : Я хочу проделать то же с легендарной игрой - killing time. И мне нужна ваша помощь. Любая мелочь, я не спешу. Заранее всех благодарю. Пс : Я понимаю что мне потребуется емулировать хардвар, - на этот случай будет достаточно ресурсов. Пс2 : Я согласен даже на декомпиляцию.
Может я вконец отупел.... никак не могу понять, почему расчёт количества страниц видеопамяти для хранения битмапа рассчитывается именно по такой формуле: ScreenPageCount = (width*2*height+GrafBase->gf_VRAMPageSize-1)/GrafBase->gf_VRAMPageSize; Умножение на 2 - это 16-битный цвет каждой точки. Но для чего здесь добавляется размер одной страницы - 1? Upd: разобрался.. предположим, нам нужно выделить память под маленький кусочек битмапа,размером 100*100. Он займёт 100*100*2=200 байт. Размер одной страницы VRAM = 2048 байт. Получается, что при округлении до целого числа получится что под 200 байт нужно 0 страниц памяти вот поэтому и добавляется размер одной страницы памяти, чтобы получился не ноль, а 1. А минус один делаем, чтобы в случае выделения 2048 байт ровно у нас не получилось две страницы VRAM, а 1,99, т.е. 1 страница. PS: и правда отупел.. в который раз убеждаюсь - когда что-то непонято, начни объяснять это другому человеку, и тут же разберёшься PSS: это я тут сижу исходники Дума ковыряю (и не только Дума). Давненько я 3DO не занимался...
Никто случаем не знает как к бинарнику подключить символьный файл .sym (какой-то старый аналог PDB-файлов)? Ida автоматом его не подцепляет((
Забавно, но спустя 12 лет после своего вопроса я нашёл описание спецификации этих файлов. Почему я не нашёл его 13 лет назад? Да потому что этот сайт в упор не ищется в Гугле, а находится только Яндексом бывает же такое... Вот ссылка на описание: https://web.archive.org/web/20010811061 ... /asdtf.txt (сайт находится в архиве). Почитал, всё более-менее понятно и совпадает с файлами из игр 3DO. Кроме последнего раздела FileInfo. Его формат я тоже почти понял, но не на 100% Там инфа о том сколько байт кода сколько СТРОК кода на языке C формируют Но как использовать этот файл, не написав своего парсера я так и не понял.. ну теперь в теории это возможно.
Нужна помощь Собрал из исходников cdrom.image как его перевести в формат.iso,может кто сталкивался. Либо как правильно записать данный формат программой Alcohol
Нужна помощь Собрал из исходников cdrom.image как его перевести в формат.iso,может кто сталкивался. Либо как правильно записать данный формат программой Alcohol
Просто расширение файла меняешь на cdrom.iso, и всё. Формат этого файла полностью соответствует обычному 3DO ISO (Mode1/2048).
- Образ cdrom.iso после сборки "laytool <" из-под SDK — с помощью утилиты 3DOEncrypt (от cdoty) подписать нельзя. - Работать будет только на эмуляторе с "patched BIOS" либо на консоли-тестере. - Прожигать на CD-R можно любой программой.
Если прямо нужна подпись для запуска на реальной консоли, то полученный cdrom.iso из под 3DO SDK — разобрать программой Альтмера "OperaFS[De]Compiler", затем снова собрать ею же — тогда он подпишется утиилитой "3DO Encrypt".))
Спасибо, будем пробовать ещё разок. Это всё я уже провернул, так и не прошла демка 3DO_Orbit. Может и по созданию.make файла сможешь что нибудь подсказать? Так его сделать и не смог. А демка собралась без проблем только не запускается.
Добавлено спустя 18 минут 12 секунд: И есть ли разница как вытаскивать файл из МАСа? Я .image просто скопировал из рабочего стола МАСа. Оперой диск разобрался и собрался и подписался.
Может и по созданию.make файла сможешь что нибудь подсказать? Так его сделать и не смог. А демка собралась без проблем только не запускается.
Нет, нет такого опыта.(( Я не знаю языков программирования, поэтому пытаться скомпилировать пример из Examples — смысла нет, это не превратишь во что-то играбельное.
В этой теме Versus пошагово вроде описывал, как скомпилировать демку из Examples с помощью MPW Shell — и у него, и у Руслана (nikk) оно работало. (Где-то у меня валяются в компах их ISO-шки (может, в теме они живы)).
Подожди aliast-а, ну либо в личку попробуй его "потолкать" — он на этом собаку съел.
Спасибо за огромную поддержку. Но оказывается, что уже почти все сделано под Windows, МАС и не сильно нужен, только для видео и для спецзадач. Пока разбираюсь со всем. Если есть программа ARM250 то это облегчит задачу. Так как зарубежные сайты заблокированы то скачать ничего не возможно. 3dodev.com тут она есть, но забрать не могу.
Спасибо за огромную поддержку. Но оказывается, что уже почти все сделано под Windows, МАС и не сильно нужен, только для видео и для спецзадач. Пока разбираюсь со всем. Если есть программа ARM250 то это облегчит задачу. Так как зарубежные сайты заблокированы то скачать ничего не возможно. 3dodev.com тут она есть, но забрать не могу.
Да, есть — я сейчас поищу... Мне Костя (aliast) давал, т.к. я сам когда-то хотел поковыряться (но перехотел). Нашёл! На его же "Google-диске" ещё живо...
Ну всё. Немного разобрался в сборке исходников под 3DO. Рассказываю: https://3dodev.com/software/sdks здесь нашёл ссылку на: https://github.com/trapexit/3do-devkit. Скачал, установил на диск c:\ Там же можно скачать и ARM SDK 250, необходим для сборки исходников 3do-devkit-master\bin\buildtools\win\setup-3do-devkit-master.bat здесь выполнится настройка. Сразу скажу у меня из двух компов нормально прописалась только на одном. Очень много времени потратил с этой настройкой. Всё можно приступить к сборке. Берём свой проект в формате c# (.c, .h) и кидаем в папку scr В папке take me ничего не меняем, добавляем свои "подготовленные" рисунки BannerScreen можно заменить на свой. Для подготовки рисунков необходимо использовать программы в папке bin\tools\win BMPTo3DOAnim.exe для создания анимации BMPTo3DOCel.exe для спрайтов BMPTo3DOImage.exe для фона (могу и ошибаться) MakeBanner.exe для создания начальной заставки Все программы необходимо запускать через cmd Для справки ввести - - help
Все исходники у меня собрались и работали Не собрались только некоторые проекты которые использовали дополнительные ресурсы longtris-3do, либо я что то не так делаю. Вот и всё можно писать игры.
Добавлено спустя 19 минут 56 секунд: В дополнение: Исходники Doom от Versus запускаются идеально на любом компе На счёт создания исходников специально не полез в дебри, что и как делается. Для начала компиляции необходимо запустить make.bat на выходе получим папку с iso файлом с названием Hello World. Что бы изменить название необходимо редактировать Makefile: NAME = своё имя файла. И ещё мог быть не точен в папке есть файл banner.png, скорее всего он и будет файлом bannerscreen
Добавлено спустя 27 минут: Может есть у кого спрайты от игры "чёрный плащ"?
Года 1,5...2 назад — кто-то уже искал там ассеты для ЧП с целью "пилить" очередной "римейк" (под комп). И вообще, такое творчество активизируется периодически, так что там реально много всего — можно наковырять идей.