Воскресенье | 06.07.2025 |01:37
Приветствую Вас Гость Мира Спайро | RSS
Результаты поиска
aleksusklimСообщение # 346 | Тема: Перевод Spyro 3: Взлом и программы Вторник, 13.08.2013, 00:46
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Испытал на Spyro2. Иногда с водой кажущиеся проблемы:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_19.jpg
Невероятно, но они и в игре тоже:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_20.jpg

Иногда неверный цвет раскраски:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_21.jpg
Если захотеть, то всё можно увидеть:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_22.jpg
(мало того, так там ещё на одном полигоне она «течёт» вверх!)

На спидвеях странные цвета:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_23.jpg
Тёмные и светлые участки как будто это тени, но тенями их назвать сложно:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_24.jpg
(Кстати да, на светотеневой модели без текстур «вода» теперь отображается полупрозрачно. И это просто альфа = 0.5 без всяких смешиваний, обычная прозрачность)

Иногда с водой чего-то перемудрили:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_25.jpg
Но и в игре так – тусклые и яркие участки + выпадающие треугольники:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_26.jpg

Ещё немного перекрывающихся полигончиков:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_27.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_28.jpg
Неверная раскраска:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_29.jpg

Spyro1, неверная текстура:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_30.jpg
И перекрывающиеся тоже есть:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_31.jpg

С водой из сценки замка вообще интересно получилось: для Spyro2 она полупрозрачная и нормально выглядит, а для Spyro3 она осталась такой же чёрной, как в первой версии программы.
Но в Spyro2-таки это вода:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_32.jpg

Выяснилось, что нулевой байт перед «FF» разделителем в заголовке куска – ещё не окончательный факт того, что данный кусок именно движущаяся поверхность воды, и что ещё высоту надо делить на четыре.
Просто оба туманных уровня из Spyro2 оказались сплющены и разбиты. Так там вообще во всех кусках модели (LOD нет) перед «FF» стояли нули. На уровне из третьего мира есть движущаяся вода, но там тоже был ноль, как и на всей остальной модели.
Получилось, что либо вода будет летать в воздухе, либо два уровня из Spyro2 будут ужасно выглядеть…
Нет уж, беру третий вариант! Ноль перед FF – это лишь подозрение на то, что данный кусок может быть поверхностью воды, и требует дальнейшего исследования. А оно весьма простое: у реальной поверхности воды для всех полигонов четыре байта с девятого по двенадцатый всегда нулевые. Ну полигон задаётся четырьмя квартетами, и если третий совсем нулевой (при том что в заголовке перед FF тоже ноль) для каждого полигона этого кусочка, то тогда да – это поверхность воды. Иначе это обычный кусок модели, и высоту нужно не делить на 4, а умножать на 2.
Модифицировал программу, и всё заработало без проблем.

..Но вода в этом уровне всё равно странная:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_33.jpg
Хорошо что так не везде, а только на втором этаже этого фонтана.

Кстати, хоть Game Maker и отображает прозрачные части модели, он делает это очень неаккуратно (о чём я ранее предупреждал). Когда вы смотрите через стекло (или воду и так далее) на непрозрачную землю или небо – всё отрисовывается нормально. Но стоит поставить камеру так, чтобы через стекло было видимо другое стекло или вода – неизбежны ошибки. Произойдёт одно из трёх: либо (о чудо) всё нарисуется правильно, либо вторая прозрачная поверхность будет не видна (словно вы смотрите через волшебные очки в параллельную реальность), либо ещё хуже – какие-то полигоны будут нарисованы, а какие-то нет.
И с изнаночной стороной тоже ошибки: в игре часто вода видима с обеих сторон. Это флаг на полигоне, разрешающий обе стороны. Я его в OBJ передать не смог, и просто транслирую как два полигона (с теми же цветами и текстурой на тех же вершинах), один из которых лицом в одну сторону, а другой в другую. Всё было чудно, пока не появилась полупрозрачность. Теперь при отключённом «culling» отрисовываются обе стороны обоих полигонов, из-за чего поверхность воды становится вдвое непрозрачнее и следовательно, ярче. Но действует только на «обоюдовидимые» участки воды, поэтому включая и выключая изнанку, будет подсвечиваться не вся вода, а только двойная. Полезный глюк…

Зато из-за выравнивания воды и ватерлинии теперь никак не отделяются те поверхности, которые работают как «движущиеся». Например в бонусном уровне Spyro2 в самом начале (где нам надо дракону хвост приделать…) возле одного буя есть водяной прямоугольничек, который стоит и не колышется вместе с остальной водяной гладью.
Потому что он не принадлежит движущимся поверхностям, и система его игнорирует. Зато он позиционирован правильно, и посему его легко увидеть в старой версии вьювера.
Но сейчас вся движимая вода тоже позиционируется правильно, и в новой версии этот полигон уже ничем не отличается от нормальных собратьев. Да, я начинаю понимать, почему разработчики допустили эту ошибку – её видно только в игре! Не знаю, сможем ли мы и её исправить – даже если переместить полигон в другую часть модели (пересортировав всё содержимое), станет ли игра его колыхать? А вдруг указатели колыхания прописаны где-то ещё и в явном виде? А может и нет – игра рассчитает их сама и будет нормально колыхать всё, что обнаружит…

Заметил в Spyro2 два уровня, небо в который не соответствует указанному на портале:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_34.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_35.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_36.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_37.jpg

И да – это те же самые уровни, небо для которых не совпадало и в сценках. Так, надо бы пачку небосводов тоже проверить…

Mad-извлечение запрограммировал. Пришлось указать обоим SpyroWorld_SpyroX, что если при извлечении чего угодно размер вдруг превысил 16 мегабайт, то надо отменять все операции! А то он чуть ли не весь WAD мне вместо модели копировал.
Ограничение слабое (можно до двух мегабайт сбросить, но тогда лучше сделать отдельную опцию для mad-режима, а новый аргумент вводить в командную сроку по таким пустякам не хочу), но действенное для Spyro1 и Spyro3 – извлекается только то что нужно, ну максимум пару пустых моделей.
Для Spyro2 гораздо хуже, там посерёдке выходит куча мусора, которая как-то прорвалась через ограничения. Выглядит примерно так:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_38.jpg
Ну вряд ли найдутся люди, думающие что это модель из игры? Но всё равно, mad-mode это крайняя мера, если на руках уж очень экзотическая версия Spyro.

Ещё хочу в статистику вьювера (кроме статуса и типа модели, которые уже добавил) добавить перечисление опций на «вкл/выкл», чтобы можно было легко понять, включено ли небо, вода, изнанка, координаты, смешивание, сетка.




Цитата (steeldragon)
Давайте выкладывайте. Полупрозрачность в Spyro 1 никуда не убежит, верно?


Хороший аргумент.

Цитата (steeldragon)
EDIT2: По смещению j2 хранятся


У «j2» нет смещения, есть «j1» и «j1+j2», «j1+j2+j3»…
Или вы имеете в виду то место, где задаётся j2?

Цитата (steeldragon)
хранятся какие-то данные об отображении участков земли. Зануление приводит к исчезновению этих участков с экрана, но поверхности остаются на месте.


!?

С «j2» начинается САМА модель, а именно – указатели на части (в файле локальные (0x0000XXXX), в памяти абсолютные (0x800XXXXX)). Вы ещё скажите, что если занулить все, кроме одного, запомнив один из удалённых, а потом вместо последнего вписать запомненный, то появится прежний участок земли?
Ну а при забивании мусором игра вылетает, верно?



Я вам предлагаю исследовать физические поверхности в тот момент, когда мы точно знаем, что и где поменялось. Например после некоторых сделок с Толстосумом.
Или в японской и обычной версиях Spyro1 – там где мы визуально знаем, что именно поменялось. Сравните файлы какого-нибудь уровня, где был отмасштабирован один уступчик (без добавления полигонов – чистое изменение координат вершин).
Потом найдите отличающийся участок (в вашей подозрительной области), и если привести его в обычной к виду как в японской – то в игре уступ тоже должен стать крупнее (дракон будет ходить по воздуху).

Цитата (nihonjin)
Допустим, я исправлю все извлечённые SWV'ом текстурки.


Are you crazy!?

…О чём я толкую, это ОДИН бит в двоичных данных модели, VRAM вообще трогать не придётся!

Цитата (nihonjin)
"motion sickness".


А-а-а)))

Цитата (nihonjin)
Вообщем, имя Zoe имеет греческое происхождение, где означало "жизнь":


А вы знаете, что значит «Z.O.E.», ведь знаете?

Цитата (nihonjin)
И раз уж пошли жалобы... то я скажу, что сомневаюсь в необходимости "Перевод игр о Спайро – графика + общие вопросы". Ведь всем этим можно было заниматься и тут, а предназначение(подпись) - "Сборы художников, а также место для любых советов или идей" как-то идилична и могла бы быть воплощена в... остальных темах.


Если вы серьёзно, то я готов хоть все четыре темы в одну слить. Или разбить каждую ещё на десять. Мне пофиг, где писать.

Цитата (nihonjin)
Видят. Что значит присутствуют? Если в сценках, то нет. Это типа как закадровое комментирование.


А что для них сама сценка?

Цитата (nihonjin)
Была только одна версия.


А мне кажется, было две… По крайней мере на моём сайте два файла, один с приставкой «_beta»

Цитата (nihonjin)
Что же это баг или фишка?


Издеваетесь? Оно такое красивое!


but nobody came
 
aleksusklimСообщение # 347 | Тема: Перевод Spyro 3: Взлом и программы Среда, 14.08.2013, 19:10
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
По совету Альтеи я опционально восстановил в новой версии вьювера отображение текстуры без двойной отрисовки, чтобы работало быстрее, как в первой версии.
«Быстрое» и «правильное» умножение – теперь две части общего списка типов-режимов: (и кешируются по отдельности) «L,F,M,T» – стало что-то вроде «L,F,M,T1,T2», и переключает тот же Ctrl+Shift. Ещё и сравнивать цвета удобно.
Минус – повторное открытие, считывание и обработка BMP-файла текстуры при каждом обращении к любой текстурированной модели (раньше запоминал текущую текстуру до перехода к другой модели или текстуры высокого разрешения).
HD-текстуры вызываются тем же методом Hold Ctrl + Hold Shift, однако именно это нажатие отобразит двойную отрисовку, а вот Hold Shift + Hold Ctrl её снимает (для HD).
Чтобы на удержание Shift камера тоже не двигалась (как при Ctrl), я добавил форс-стоп всех перемещений камеры и гравитации (до следующего касания мыши или любой стрелки) через двойное нажатие Ctrl подряд.
Отображение чистой текстуры через Alt+Space по-прежнему работает, но для обоих режимов быстрого и двойного рисования отображается одинаково (и по скорости). На HD-текстуре в любом виде Alt+Space блокирован, зато по Shift+Ctrl теперь не вываливаешься на светотеневую модель.
WASD сдублировал на стрелки.
Также решил, чтобы в программе можно было «хоть кое-как» работать и без мыши. Для этого отдублировал «Num 0» и «Num /» как левую кнопку мыши, «Num .» и «Num *» как правую, а «Num -» и «Num +» – как среднюю. Колёсико сдублировано на PageUp и PageDown. Перемещение мышки – все «Num» цифры (ну направления понятны), кроме «Num 5».
Из-за глюка Windows, что при удержании Shift вся Num-клавиатура перестаёт посылать нормальные состояния клавиш, а работает так словно NumLock отключён, я ещё и сам Shift сдублировал на ApplicationKey (контекстное меню), однако ради интуитивно удобного Ctrl+Shift+Num0 (выбор модели), я ещё раз сдублировал левую и правую кнопки мыши соответственно на Insert и Delete. Но всё равно из-за того же глюка (если пользоваться Shift, управляя через Num) некоторые кнопки могут «провиснуть» и обрабатываться как нажатые, хотя отпущены. Камера словно перестаёт слушаться и летает сама – для этого я и приберёг «Num 5» – его нажатие сбрасывает состояния абсолютно всех клавиш, и камера снова переходит в полное подчинение.

Всё сказанное выше никак не влияет на обычное использование программы – мышь по-прежнему в почёте и рекомендована к применению!

Зато теперь, хоть и с трудом, но программу стало возможно полноценно использовать и не имея мышку (хотя как же вы будете WAD на батники перетаскивать…)

Открылась проблема: при выводе диалога, чтобы получить цвет от пользователя (Hold Ctrl + Left и Hold Ctrl + Up – цвет сетки и цвет фона), главное окно программы теряет фокус, а модельное окошко Color Dialog его почему-то не получает…
С мышкой всё просто – достаточно кликнуть. Но с одной клавиатурой ничего не реагирует ни на какие клавиши (Esc, Space, Tab), только на Alt+F4 (да, закрывает диалог).
Чтобы суметь-таки выбрать цвет, нужно дважды нажать Alt+Tab – перейти в любое другое окно и вернуться обратно.
Хотел что-то сделать, чтобы клавиатурный фокус был изначально (убрать полный экран, перенести поверх всех окон, сменить стиль окна через user32.dll и WinAPI – читал MSDN но ни чего не понял…), но окно упорно создаётся без фокуса.
Помогло разве что полное скрытие основного окна программы – тогда остаётся лишь диалог, и фокус на нём, после Enter или Esc он пропадает, а главное окно появляется. Но… Я хотел, чтобы в главном окне было видно СТАРЫЙ цвет изменяемого параметра, чтобы глядя на него можно было установить новый. А полное исчезновение всего окна может дезориентировать пользователя (он подумает, что программа вылетела и закрылась, а диалог не заметит).
Контроля над дефалтным (ну как сказать… вообще то он не совсем дефалтный, а из WindowsDialogs стандартного пакета расширения, но отличается лишь тем, что «определённые пользователем цвета» в палитре сохраняются между вызовами этого диалога в пределах одной сессии) диалогом выбора цвета у меня нет – после вызова Game Maker останавливается и не возвращается до его закрытия.

Итак, что мне делать? Три варианта:
1) Ничего. Написать в справке, что без мыши потребуется двойной Alt+Tab.
2) Скрывать главное окно до окончания выбора цвета.
3) Создать свою .dll или .exe, чтобы показывать свой диалог с исправленным фокусом.

…И нашёл ещё один полигон с неверным порядком вершин:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_39.jpg




Цитата (steeldragon)
Я имел в виду, по смещению j1+j2.


А-а-й, дайте скрин WinHex, я не пойму про что вы говорите…
Если это начало модели – то да, зануление делает части невидимыми, но это совсем неудивительно.
А если то, что следует после модели – так я занулял, и это ничего не изменило…

Цитата (steeldragon)
(Хотя я уже ничему не удивляюсь, после того, как неправильная S3M-модель испортила вообще все текстуры на уровне)


Это «взрыв», такое происходит часто. Например, если у цветов вершин четвёртый байт будет больше нуля. Появляются непонятные линии, которые пересекают экранную область и портят VRAM. Если посмотреть на него (в отладочном режиме Epsxe на софтовом плагине с нужной галочкой в настройках) нажатием цифры «0», то видно, что куски полигонов, линий или просто обрывки изображения копируются «как есть» не в левую половину VRAM, а во все его части.

Цитата (nihonjin)
Пришлось постараться чтобы понять и заметить.


И что вы об этом думаете?

Цитата (nihonjin)
Это может стать аргументом в пользу того, что так и надо переводить


Ну отлично!

Цитата (nihonjin)
Мне не очень нравится когда в теме по одной части обсуждают особенности другой


А разве у вас на данный момент уже есть тема «Перевод Spyro and Sparx: Tondemo Tours?»

Цитата (nihonjin)
сомневаюсь в необходимости "Перевод игр о Спайро – графика + общие вопросы".


Да кто ж виноват, что нас кинули абсолютно все художники, кроме одного.

Цитата (nihonjin)
Ведь всем этим можно было заниматься и тут, а предназначение(подпись) - "Сборы художников, а также место для любых советов или идей" как-то идилична и могла бы быть воплощена в... остальных темах.


Только из-за этой формальности в скобках? То что она не исполнилась и не исполняется ещё не значит что исполнятся не будет.

Что уж, давайте тогда весь Гугль-проект грохнем – он всё равно никем не используется, тексты мы редактируем здесь, там никто ничего кроме нас самих же не комментирует, а голосования проводим вКонтакте.

Цитата (nihonjin)
Да, я понимаю вашу логику "мол тут и там одна тема", но на мой взгляд это был двойной вред.


АМС не нужно было, блин, делить единственную тему в самый первый раз, когда об этом никто и не просил.

Цитата (nihonjin)
Это вот как то, что вы описывали взломы(хоть и по звуку) в теме озвучивания.


Тему озвучивания вообще я создал, и предназначается она не только для одного озвучивания. Ну и работы по дублёжке, сбору актёров, обсуждение программ для записи/редактирования звука.
Вспомните, что мы там делали за всё время? Агитировали, учили, спорили, соперничали, даже австралийский сериал чуть не перевели (до пони хоть доберёмся?).
Или вы что, хотите, чтобы я десять тем сделал, по более узкоспециализированной тематике? Да сдохнут они все и сразу…

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

(хотел тут процитировать кое-что из темы Озвучивания, но пыхх.. не нашёл нужного комментария… Так что мысль останется незаконченной)

Цитата (nihonjin)
I. Программу MegaTextRip из сообщения #399 можно настроить на экстракцию текста из Spyro2(в т.ч. jap)?


Ну по-идее её надо направить на эту игру, потом понять почему она не работает, потом взломать систему объектов в Spyro2 и что-то исправить. Ладно, потом попробую.

Цитата (nihonjin)
II. Более важное. Когда вы расскажете о методике расширения субфайлов? Скажите хотя бы насколько это будет сложно.


Ну..
AWM повязан на структурированности, поэтому наворачивать его бесполезно.
Я делал новый SWM – SmartWadManager на Delphi, и он будет работать в табличном режиме.
Он сканирует заголовок (будут несколько возможных режимов) и виртуально разбивает весь файл на кусочки:

http://klimaleksus2.ucoz.ru/Files/S/SWM.png

Кусочек может принадлежать субфайлу целиком – это нормальный субфайл (отмечен зелёным кружком), может содержать в себе части нескольких субфайлов (пересекающиеся или вложенные) – это неправильный субфайл (отмечен красным), а может оказаться и бесхозным (голубой). Однако на протяжении всего кусочка принадлежности субфайлам постоянны, то есть если первый от 100 до 200, а второй от 150 до 300, то разбиение файла размером 500 будет как:

* От 0 длиной 16 – заголовок;
* От 16 длиной 84 – пустота;
* От 100 длиной 50 – только первый;
* От 150 длиной 50 – первый и второй;
* От 200 длиной 100 – только второй;
* От 300 длиной 200 – пустота.

При выделении сведений о субфайле в левой части подсвечиваются справа жёлтым все кусочки, которые ему принадлежат.

Пустая область внизу окна – там будут основные кнопки типа экспорт/импорт, извлечение всего, добавление, и так далее (надо ещё подумать).
Ну и новые функции, типа прямое изменение указателя/размера, перемещение субфайла, реорганизация (удаление пустого пространства), расширение файла и создание новых субфайлов.
Для нашего случая нужно просто расширить WAD, выделить пустое место в конце и перенести в него нужный субфайл, после чего задать новый размер (скорее всего автоматически при импорте – будет опция вроде «увеличить размер субфайла за счёт следующего за ним неиспользуемого пространства»). Можно попробовать «раздвижением» всего содержимого, но чую что игра не выдержит. А вот перенос любого субфайла в конец я уже проверял, и это работает!

Также можно будет выгружать отдельно области (в том числе пустые, возможно сделаю проверку на «реальную пустоту» или функцию анализатора как в WinHex).
…Но я уже очень давно не возвращался к дописыванию это проги.


but nobody came

Сообщение отредактировал aleksusklim - Среда, 14.08.2013, 19:28
 
aleksusklimСообщение # 348 | Тема: Перевод Spyro 3: Взлом и программы Среда, 14.08.2013, 23:34
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (aleksusklim)
Итак, что мне делать? Три варианта:


Взял третий! Но не ради одного диалога.

Просто в режиме карты управлять мышью при помощи Numpad-клавиатуры было слишком долго. Понадобилась клавиша, временно ускоряющая влияние на мышку. А все приемлемые кнопки я уже истратил. Биндить на символьные клавиши нельзя (мешает одновременному нажатию), на тот же Shift нельзя из-за глюка, на «Num_Enter» я не могу (он приравнивается к обычному Enter и делает скриншот…), на сам «NumLock» тоже не выход. AppKey теперь занята дублем Shift, а на WinKey мне система не позволяет, параллельно открывая меню Пуска…

Давно я хотел хоть где-нибудь хоть для чего-нибудь использовать Scroll Lock! И хотя повода никогда не было, подходящий функционал я нашёл давно, но ещё не применял его.
Через Win32 API можно спокойно определить, включён или нет сейчас ScrollLock (изменять его состояние сложнее, но получать элементарно).
Вот я и написал маленькую DLL на SPHINX C-- , которая будет проверять состояние ScrollLock при попытке управления мышью (не столько мышью, сколько поворотом камеры) с клавиатуры. И теперь при включённом ScrollLock воздействие станет сильнее.
Ещё сделал вариант очистки .tmp кеша при запуске – если ScrollLock включён, то программа предлагает очистить кеш (а заодно переключиться на LOD-версию первой модели без неба). Это вместо бывшего F12.
Но F12 теперь будет просто закрывать программу с очисткой кеша (а заодно переключит на текстурированную версию первой модели с небом), и не моментально, а тоже с вопросом.

Ну и вот, чтобы моя DLL не была нужна из-за одной лишь функции, всунул туда ещё инициализацию да показ моего собственного диалога выбора цвета (тот же стандартный из WinAPI). Мне повезло сразу – не знаю почему, но глюк с потерянным фокусом исчез, и после открытия можно было без мышки выбрать любой цвет. А в дополнение я нашёл опцию открытия сразу полноценного диалога с радугой (которую обычно можно отобразить только нажатием «Определить цвет»). Хотел ещё в палитру «дополнительные цвета» сливать все когда-либо выбранные (а также получать и предлагать фоновый цвет самого неба; а вообще неплохо бы сделать экранную пипетку, чтобы подбирать цвета прямо из главного окна), но возится уже неохота.
Единственный недостаток – диалог почему-то появляется не в центре экрана, а с левого верхнего угла. Но он такой большой, что не заметить его нельзя!




Цитата (nihonjin)
Нелогично потому что в оригинале(яп) по-другому или сама фраза/перевод странная?


«Этот электрический удар записывает твоё состояние.»

Обычно выделяются существительные или глаголы, может словосочетания. А тут основа – и существительное (с определением) и глагол. Выделятся должно так, что если прочитать только выделенное, то читатель не должен впадать в ступор!

Тут логичней сделать:
«Этот электрический удар записывает твоё состояние
, разве нет?

Цитата (DrWho)
Нормальная цитата. Что вам в ней не понравилось?


В цитате сказано: «Теперь буду исправлять кучу побочных багов, которые я успел наделать…» и относится это исключительно к моей программе просмотра моделей, а ваше сообщение гласит: «+ можно каких-нибудь бонусов добавить в игру…»

И вопрос: причём здесь вообще какие-то бонусы!?


but nobody came
 
aleksusklimСообщение # 349 | Тема: Перевод Spyro 3: Взлом и программы Пятница, 16.08.2013, 02:02
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Так-с, кажется, готово!

Вот новая версия, и её снова необходимо проверить (желательно тщательно) :


На этом пора заканчивать. И поменять аватарку обратно, скину-ка сюда их копии на память:





Цитата (DrWho)
Просмотра моделей.. так вот зачем эта программа написана?


And what in tarnation does that mean?

Ну в смысле…
А вы что, так до сих пор и не опробовали мою чудную программу?
Но почему же?

Цитата (steeldragon)
Ошибся я, с кем не бывает...


Да там не мудрено заблудится в этих jump-ах, мне столько раз приходилось возвращаться в начало и прыгать снова, чтобы понять, где же я нахожусь…

Цитата (steeldragon)
...за некоторое время до этого...


Он же сказал, программистская Х и та.

Цитата (steeldragon)
Кусочек поверхности под водой после изменения данных ведёт себя так же, как и земля без воды.


А может.. вы просто удалили саму воду? Осталась только нормальная земля под ней.

Цитата (steeldragon)
(ну или не совсем вершины)


Я вот не знаю, вид такой, будто там просто флаги типов поверхностей. Но с другой стороны, физика НИКАК не связана с графикой, но при этом на 100% дублирует её где надо. Там должны быть вершины…

Цитата (steeldragon)
(смещение в японской версии Spyro2 - 11123842, прямо в .bin - образе диска):


Воу, я надеюсь вы не в образе проводили эксперименты?
Надо прямо в Epsxe.

Открываете нужный субфайл в WinHex.
Запускаете Epsxe в окне на софтовом плагине (окошко можете сделать «поверх всех окон» если у вас есть сторонние средства для этого, я использую AnVir TaskManager).
Open RAM в WinHex, берите только память самого EXE без всяких там DLL (и не Primary memory!).
Выделяете кусок данных субфайла, копируете «Copy Hex Values».
Переходите в память Epsxe и делаете «Find Hex Values» на эти данные.
Если смещение не выровнено между окнами, придётся добавить несколько нулей в начало вашего субфайла.
А потом команда «synchronize & compare», да радуетесь!
Редактируйте прямо память эмулятора, «применить» – колёсико мышки туда-сюда. Изменения вступают в силу моментально, что можно увидеть в окне Epsxe.
Делайте сохранения F1 перед изменением, чтобы всегда можно было загрузиться обратно.
(Правда окно «поверх всех» часто захватывает мышку при щелчке по панели задач, что меня постоянно раздражает…)

Добавлено (16.08.2013, 02:02)
---------------------------------------------
...А в пачке небосводов Spyro2 были те небеса, которые в уровнях, а не те, что на порталах...

Значит портальное небо остаётся неразгаданным.

И чёрт, забыл написать в инструкции к SpyroWorld как правильно визуализировать модели в 3DsMax.


but nobody came
 
aleksusklimСообщение # 350 | Тема: Перевод Spyro 3: Взлом и программы Воскресенье, 18.08.2013, 01:46
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Ух, а вы правы! Только там вообще не «небо», а некая другая специфика. Оно не круглое, это не полусфера.
Если походить возле портала, то станет ясно, что портальное небо – просто прямоугольник. С какой бы стороны к нему не подойти – это один и тот же прямоугольник.
Все портальные небеса сложены вместе и описываются вместе. Так я мог быстренько повесить небо Cloud Spires на портал для Sunny Villa.
А мог и сделать так, чтобы Sunny Villa вёл в Cloud Spires.

Или в любой другой уровень…

…А может и не уровень:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_40.jpg

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

Да, сейчас я наконец начинаю ощущать то, что почувствовал Yams при виде моего Вихря.

Потрясающе.

Только Спаркс немного испугался, побледнел:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_41.jpg
Мерцает, почернел:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_42.jpg

(А было бы неплохо послать Спайро сюда каким-нибудь порталом из Супер-Бонуса)

Но что меня реально удивляет, так это то, что все стены, пол, и даже портреты Колдуньи полностью материальны:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_43.jpg

…Я достиг Дао, ухожу в Нирвану…

Добавлено (18.08.2013, 01:46)
---------------------------------------------
http://klimaleksus2.ucoz.ru/Files/NEXT/next_44.jpg

Всё до чёртиков материально. Верхушки деревьев, двери, купола…

А в сценках, которые основаны на частях уровней, оказывается, присутствуют почти все живые объекты:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_45.jpg

Но они мертвы:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_46.jpg

Не движутся и нематериальны:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_47.jpg

Лава – убьёт! Не дракона так эмулятор. Как и любая другая жидкость:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_48.jpg

Изучить бы расположение псевдо-объектов повнимательнее:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_49.jpg

Даже этот стоит:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_50.jpg

А тут сразу трое: яичко, мишка да воришка:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_51.jpg

Не на любой индекс можно попасть (10 – Sunrise Spring, 11 – Sunny Villa … ; 19 – нет, 20 – Midday Gardens … 29 – нет … … 50 или 51 – Super Bonus; сценки начинаются от 60 или 80…)

Бывало и такое:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_52.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_53.jpg

Но куда чаще так:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_54.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_55.jpg

Портальное небо изучено, осталось доломать до конца:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_56.jpg
Там сначала перечисляются все вершины, потом все цвета, а за ними сразу все полигоны.




Немного поизучал суб-субфайлы, нашёл где наши все 3D модели хранятся – третий суб-субфайл. Но! В подуровнях они занимают первую половину нечётного субфайла. Того же где модель земли, просто вместо текстурных индексов.
А помните странные данные в шапке субфайла-уровня? Это как раз ссылки на какие-то части третьего суб-субфайла. А для подуровней они ровно перед моделью земли, и указывают на первую половину текущего (нечётного).

Насчёт объектов тоже поработал. Они накрепко привязываются к третьему суб-субфайлу (в подуровнях – к первой половине нечётного), и «тип» объекта как-то определён там. И он недействителен в других уровнях или подуровнях.
Таким образом, каждый подуровень делит со своим родительским уровнем ТОЛЬКО текстурные индексы (ну и почти всю видео-память), а все 3D персонажи скопированы ещё раз.




…А спорим, что мне сейчас завидует каждый скейтбордист?

http://klimaleksus2.ucoz.ru/Files/NEXT/next_57.jpg

«Вот как я провёл это лето», так сказать:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_58.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_59.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_60.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_61.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_62.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_63.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_64.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_65.jpg

…А если никому не интересно, то буду один там кататься))


but nobody came
 
aleksusklimСообщение # 351 | Тема: Перевод Spyro 3: Взлом и программы Вторник, 20.08.2013, 01:03
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (steeldragon)
И те подозрительные данные там тоже присутствуют...


Ну как вы могли понять из последних скринов, мне удалось скопировать физику мира.
Сначала я хотел скопировать скейт, но беда в том, что все скейтпарки располагаются в подуровнях, а мой замок – как «уровень». А чтобы вытащить объекты, мне нужно копирнуть в третий суб-субфайл половину, и направить на неё указатели из заголовка, но сколько я не бился над этим – либо не заходит в уровень, либо не живёт в нём дольше пары шагов.
Тогда я решил выкопировать всю модель земли заместо нормальной модели, благо известно как: удалить старую, вставить новую и прописать её размер как соответствующий jump.
Но не вышло (хотя я пробовал только один раз), видимо где-то ещё есть указатели на что-то за моделью, и при раздвижении файла они стали указывать не туда.
Тогда проверенный метод – тупо записать свою модель поверх существующей, ничего не раздвигая. Но это возможно только если новая модель по размеру не превосходит имеющуюся, в связи с этим я и воспользовался вторым большим скейтпарком (что видно по красному шару на скрине), а не первым.
Без особых проблем я нашёл и заменил и физику игры. Она следовала сразу после графической модели (не вот прям сразу, но большой объём данных ДО неба).
Всё почти что хорошо.

Чуть больше меня удивило то, что я не смог найти физику в самом уровне Enchanted Towers! Там за моделью идёт сразу небо. И я пробовал заменить полностью второй суб-субфайл уровня вторым же из сценки с замком – модель поменялась, а физика нет. Значит физика тоже в третьем суб-суфайле, но надо бы для других уровней попроверять… Я уже на глаз могу различать видимую модель, индексы текстуры, стандартное небо, графические данные, программный код и теперь и физику мира.

Вот что я знаю сейчас:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_01.png

Ну вверху ясно что – суб-субфайлы: смещения и размеры.

Примерно так (грубо) :
Первый – текстуры и звуки;
Второй – модель земли (плюс индексы текстур и небо);
Третий – типы живых объекты;
Четвёртый – перечисление экземпляров объектов;
Пятый – типы живых объектов и модель для первого подуровня;
Шестой – перечисление экземпляров объектов для первого подуровня;
Седьмой и восьмой – как пятый и шестой для второго подуровня (до трёх подуровней максимум).

А что на скрине выделено?
Ну знаете да – яйца. Модели, текстуры и анимация вылупляющихся дракончиков. Их шесть по количеству яиц, внутреннюю структуру ещё никогда не исследовал, но их можно спокойно заменять принудительно или редактировать указатели.

Интереснее то, что идёт ниже них. Много, много указателей. Размеров нет, только сами указатели.
Адресация – относительно всего этого субфайла, то есть обращаться к ним надо напрямую, ничего не прибавляя. Сейчас попрыгаем…

А вот то что ниже – я не знаю что такое! На указатели не похоже, слабое изменение не даёт видимых эффектов, а сильное просто выбивает из уровня (менять надо прожигая образ, в памяти эмулятора будет игнорироваться – значит используется только на загрузке уровня).

Ладно, берём первый из указателей (тех что под выделенным) и прыгаем:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_02.png

Выделено место приземления, и если всмотреться, то заметно, что сверху и снизу разные данные – вверху много повторений (как у текстур или физики мира), а внизу полный бардак.
На самом деле это часть третьего субфайла. Прыгнем в его начало:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_03.png

Видно два потенциальных прыжка – первый сразу же, и с четвёртого байта за ним.
Прыгнем по первому (относительно текущей позиции) :

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_04.png

Ставим метку, возвращаемся и прыгаем по второму варианту снова относительно «текущей» позиции, НЕ начала субфайла (будет начало + 4) :

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_05.png

Во-от, то что ниже очень похоже на «физику мира».
Ясно, что по «+4» мы упрёмся в «FE-FF=FF-FF», а это тупик. Зато дальше (по +8) идёт очередной прыжок – встанем на него и воспользуемся (от «текущей») :

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_02.png

(Да, это копия скриншота, нет смысла делать другой)
Снова те данные, которые мы получили по первому указателю из шапки. Игнорируем 4 байта, и рассматриваем следующие четыре как новый прыжок (от текущего) :

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_06.png

Курсор показывает, куда я приземлился, а выделено то, что хочу использовать.
В общем, на смещении +8 виден новый прыжок. По нему:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_07.png

Принцип снова тот же: на +8 очередной прыжок. Если прыгнуть, то там на +8 снова будет прыжок, и так много раз (вот например озёра «7C», про которые я говорил:
http://klimaleksus2.ucoz.ru/Files/NEXT/jump_08.png
), до тех пор, пока:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_09.png

Всё, конец, допрыгались. Это были какие-то структуры, их бы неплохо по файлам нарезать, а потом между разными уровнями одинаковые поискать…

Теперь попробуем взять второй указатель из шапки:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_10.png

Хо-па! Мы прямо сюда и попали (на выделенный «не прыжок»). То есть первый указатель в шапке был каким-то сборником. И состоял из нескольких блоков, по которым надо прыгать.
Но второй указатель на него уже не похож, а прыгать некуда.
Вот что по третьему:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_11.png

Прыгать опять некуда, соседние смещения ничего полезного не дают. И вроде бы, все остальные указатели из шапки ведут себя абсолютно также – приводят к нескольким FF в ряд, а потом всё.

Вот ткнём в предпоследний:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_12.png

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

Ладно, вот куда ведёт последний указатель из шапки:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_04.png

И да, это снова копия прошлого скрина с зелёной меткой – на конец. Конец всего третьего суб-субфайла.

Правда это не совсем конец, ведь вот с чего начинается четвёртый:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_13.png

А вот что за мусор перед ним я так и не понял, но это точно не то, что я искал…

Теперь прыгнем в пятый суб-субфайл:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_14.png

Я утверждаю, что его начало (первая половина) – это тоже своего рода «третий суб-субфайл». Но сначала первый же прыжок (от «текущего», как и все предыдущие) :

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_15.png

Во, самый класс! Попали в четыре нуля, но это разделение: всё что выше – как бы «третий суб-субфайл», всё что в самом низу (с «рК») – узнали? – это 3D модель. Подуровня, естественно, а далее вниз будет весь типа «второй суб-субфайл».

А вот что же в середине? Одинокими строчками над моделью – та же дребедень, которая в шапке всего уровня находится (возможно, немного отличается); а сразу после курсора – те самые указатели из шапки, но уже для подуровня! И адресация, ух, относительно текущего (пятого) суб-субфайла. Поэтому прыгать жутко неудобно, надо сначала весь пятый отдельно выгрузить, или копировать смещение прыжка и ставать в начало субфайла (по mark position).

Вот что получаем по первому:
http://klimaleksus2.ucoz.ru/Files/NEXT/jump_16.png

Вполне возможно, что отсчитывать надо и не начала всего суб-субфайла, а с его логической части (как третьего), то есть +4, тогда бы мы ещё и на «01-00=00-00» точно попали.
И на самом деле это был не первый указатель, а второй. Первый – это и есть «00-00=00-00», на котором мы стояли. По этому нулю попадаем просто на +4, а там как и для первого указателя основного уровня – ещё +4 и будет прыжок. По прибытию – ещё +8 и новый прыжок. Ну всё ясно же?

А вот что будет, если я прыгнуть через 3D модель:
http://klimaleksus2.ucoz.ru/Files/NEXT/jump_17.png

Ну что за мусор, кто мне объяснит… И это не физика мира, потому что она дальше:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_18.png

И это доказано.
Если сделать ещё три прыжка (ну первые два слабоваты), то вылетаем в конец:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_19.png

То что сверху и похоже на графические текстуры, кажется, окончание физики.
Ещё ниже – опять бредятина:

http://klimaleksus2.ucoz.ru/Files/NEXT/jump_20.png

…Правда она весьма структурированная, и в каждой структуре либо 64, либо 16 байт.

Цитата (steeldragon)
Данные после основного неба вроде как разбиваются jump-ами на четыре области.


Так странно, когда они то большие (под «+20 000»), то изничтоженные до «+4»…

Цитата (steeldragon)
Вот эта область к небу порталов, я так понимаю, не относится?


Не знаю, где вы это откопали, но всё что я могу сказать – немного похоже на физику мира…

Цитата (steeldragon)
Очень интересно. Получается, мы можем поменять 3д-модель персонажа на (почти) любую другую, но только в пределах уровня/подуровня?


А вот нет. Как-то превратил Хантера в скейтборд, но при разговоре вылетал эмулятор; однажды превратил все алмазики в эти синие штуки, из которых можно достать скейт (они тогда даже кружились как бриллианты), но вылетало как только Спаркс пытался их подобрать.
Это получалось, когда я менял два указателя из шапки местами.
Но обычно (если изменять содержимое по указателям или пытаться скрестить объекты из разных уровней) игра просто вылетает – то со стандартным «opcode» (недействительный код операции ассемблера), то «dma 4 not supported», то зависал, то просто выключался без сообщений, а иногда было и стандартное исключение в стиле «Майкрософт просит извинения за неудобства…».
Графических «взрывов» и слезающих текстур никогда не было, видимо данная часть не работает с графикой напрямую.
Мне кажется, там не только 3D анимированные модели живых объектов, но и их полный «дефинишн», то есть действия. Должен быть и код! Но кода там явно нет…
А где же он? В EXE? Но тогда бы все объекты игры были стандартизированы. А судя по четвёртому суб-субфайлу – идентификатор одних и тех же объектов может менять от уровня к уровню. Ну алмазики всегда «1» вроде бы. Смена идентификатора любого объекта на «1» заставляет Спаркса подобрать его (результат непредсказуем!); сам Спаркс – тоже объект, в ресурсах отсутствует, но в памяти его видно (дописывается в конец), можно даже сделать себе несколько стрекоз, но только одна из них будет «главной», иметь свечение и реагировать на нажатие паузы. Объекта «Спайро» нет НИГДЕ.
Короче, даже имея на руках сколько-то объектов в третьем суб-субфайле, их нельзя ВСЕ увидеть в игре «просто так». По трём причинам:
1) Не все 88 байт, описывающих экземпляр объекта, играют одну и ту же роль для разных вещей – да, координаты, масштаб и поворот у всех, но всё остальное весьма различается.
2) Каждый экземпляр выделяет себе память (хотя бы 4 байта) и хранит там свои личные данные. Они могут быть любой длинны и структуры, например Вихрь имеет высоту, ширину и флаг камеры, яйца – номер вылупляющегося дракончика, а «говорящие» персонажи – весь свой текст! А текст, как мы знаем, повязан на указателях. И даже если мы создадим новый пустой экземпляр говорящего объекта, но не поставим его личный указатель на правильно отформатированную и размеченную память (а для всех типов объектов она разная), то в лучшем случае объект просто не будет функционировать, но скорее всего он даже останется невидимый, а может быть и эмулятор тотчас же вылетит.
3) Долбанные номера типов объектов раздаются как-то рандомно от 1 до 65535. И (навскидку) менее 255 из них используются, то есть все остальные цифры приведённого диапазона НЕ являются нормальными объектами, и при установке обычно сразу же вешают эмулятор.
Поэтому есть взять любой объект и тупо пытаться угадать новый номер типа для него, то с высокой вероятностью мы попадём в неиспользуемое число, и игра упадёт (а это сильно замедляем процесс перебора).
Если же игре не упала, то вероятность того, что объект будет видимый крайне мала, ибо мы не знаем что это за объект, и уж тем более, какие переменные ему требуются.
А если игра всё-таки упала, то есть также вероятность того, что этот тип существовал, но его личный указатель был направлен на неправильно оформленную память (элементарно – там мог быть прыжок на текст, а исходный объект сохранил туда какой-нить флаг использования, и естественно прыжок на ячейку, не кончающуюся на «80» (старший байт) – гарантированный access violation).

Зато если мы сможем хотя бы видеть анимированные 3D модели, мы будем соображать примерно, что же нужно объекту. А вдруг в DinoMines есть этот пропавший динозавр на арене? Данных там много, но вызвать и посмотреть так просто не получается.
А если вспомнить видео (в этой теме, очень давно) на Scorch’s Pit, то ясно же, что в игре осталась куча неудалённого мусора, и в первую очередь это 3D модели. Они забыты, у них утеряны индексы, но они есть!

Ещё бы помогло какое-то определение, как индексы типов сопоставляются с самими типами. Таблица распиновки…

Цитата (steeldragon)
А на нормальных "живых" объектах работает?


Хочу попробовать сделать из подуровня цельный уровень, то есть переадресовать всё из шапки. Но что со второй половиной данных делать…

Цитата (steeldragon)
А что такое (а самое главное - где) эти индексы вы нам объясните?


Да, наверно пока нет.
О, слушьте, помогите решить одну головоломку, уже несколько дней над ней бьюсь:
Вот у нас есть наша 3D модель любого уровня. У неё ж вначале указатели на кусочки, верно? И эти кусочки равноправны между собой, так?
И если мы поменяем местами два куска, то ничего не должно измениться, согласны?

Так вот, я упёрся в беду: если настойчиво перемешать все указатели между собой, то возникнут глюки.
Попробуйте! Можно прямо в памяти (тогда это будет абсолютные адреса). Почиркайте их (можно сразу блоками переставлять). Потом походите по уровню и посмотрите, нет ли чего необычного. Если нет, то попереставляйте тщательней, и посмотрите ещё раз.

Вот глюки:
1) Вода и подводный мир – возможны неправильные цвета (но мне неважно).
2) Взрывы – все модели могут облысеть, а текстуры сорваться (но мне снова неважно, в моём случае такого нет)
3) Некоторые части модели могут исчезать в зависимости от угла и направления камеры.
Вот это и самое главное. Словно кто-то отслеживает с какой стороны надо смотреть на определённый кусок модели, но запоминается не внутри куска, а лишь по его номеру. Поэтому переставление двух кусков меняет их «углы видимости», и они начинают ни с того ни с сего пропадать…

Пробовал удвоить кол-во кусков, продублировать их, а первую половину занулить. Итог – вся модель становится невидимой одновременно под определённым углом зрения и координатами камеры. Надо это исправить…

О, и кстати: там у меня в документации оказывается ошибка – от всех указателей на куски надо отнять 8 – а в заголовках будет на 8 байт больше. Эти восемь байт отвечают за видимость куска и угол обзора (но блин, это не то, иначе бы от последовательности не зависело), а также есть флаг «плоской воды» и деления на 4 вместо умножения на 2. Но это не так важно… Хочу нереально классное видео снять, как я по куполам замка на скейте рассекаю, но это дурацкое моргание модели весь смак отобьёт
Цитата (steeldragon)
Протестировал новую версию SWV. На WAD от Spyro3 v1.0 работает превосходно.


Ну не совсем уж и идеально – просветка перекрывающихся полигонов, ближняя отсечка, да воду сквозь воду не видать.
Надо бы попробовать рисовать тексутрированную модель поверх LOD модели, ведь та обычно содержит далёкие фоны уровня…

Цитата (steeldragon)
На WAD от Spyro3 v1.0


Какая версия?

Цитата (steeldragon)
Только есть одно небольшое "но":


В смысле что у модели отломан край, или что вода чёрная?

Оба – не моя вина. Край отломан везде, но по-разному, а вода – да, это не вода, а земля (и скейт по ней едет как по земле). И цвет там на светотеневой модели абсолютно чёрный – а как я сказал, вода бы стала полностью прозрачной. Прозрачность текстуры отсутствует.

Другое дело Spyro2! Найдите там этот замок – там вода будет как нормальная вода. (Надо бы на нём тоже попробовать покататься…)

Цитата (steeldragon)
Теперь все уровни выглядят просто великолепно (особенно для игры более чем десятилетней давности!).


А я тем временем ломанул координаты объектов:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_66.jpg

Кто-кто там метки заказывал?

Это сразу все объекты – не только видимые, но и вспомогательные, и детекторные, и звуковые (на деревьях видите? Эти птицы! Которые поют. А на воде – это «звук воды»…)

Цвета – псевдоцветные. HSV, оттенок – примерный коэффициент между 0 и 255, условно показывает тип. Если тип только один – будет красный; если два – красный и голубой, если три – красный, зелёный и синий (по цветовому кругу-радуге).
В разных уровнях одинаковые цвета обозначают разные объекты, я вообще тип никак не проверял, просто сравнивал на одинаковый/другой, чтобы посчитать общее количество типов и выбрать цвет исходя из него. Единственное, чему удовлетворяют цвета – от красного по радуге вверх (до хм… красного) – индексы по возрастанию.

Итак, сейчас объясню, как достать координаты и объекты.
Берём четвёртый суб-субфайл (или 6,8,10 для подуровней). Прыгаем на 48 вперёд.
Теперь будем считывать 4 байта и делать прыжок вперёд (поскольку четыре уже считаны, надо вычесть 4).
Таких прыжков надо совершить ровно 12 штук!
После этого вы окажитесь в области описания экземпляров. Заголовок: 4 байта – размер всех, 4 байта – количество изначально имеющихся объектов (в памяти они дописываются, но это число более не меняется).
Далее – столько-то структур по 88 байт, считываем так:
1) Пропускаем 12 байт.
2) Загружаем ещё 12 как Х, Y и Z (четырёхбайтовые).
3) Пропускаем 30 байт.
4) Загружаем 2 байта как тип объекта (от 0 до 65535).
5) Пропускаем оставшиеся 32 байта.

Внимание, каждую координату надо разделить на 16 !

Таким макаром извлекаются координаты объектов для абсолютно всех уровней:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_67.jpg

Даже для некоторых сценок (но не у всех есть объекты) :

http://klimaleksus2.ucoz.ru/Files/NEXT/next_68.jpg

А здесь даже видно три бочки с бабочками на острове, которого нет:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_69.jpg

Для Spyro2 всё почти также, только в начале надо прыгнуть не на 48, а на 44 байта; а потом совершить не 12, а 8 прыжков подряд:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_70.jpg

Для Spyro1 ещё не пробовал…

Зато взломал камеру в титрах!! Там вместо третьего и четвёртого субфайлов – перечисление характеристик (по 2 байта) : позиция X,Y,Z и три поворота по осям – не знаю, глобальным (Эйлеровы) или локальным (долгота, широта, крен).

Пока что выгрузил только сами координаты пути (от кучи направлений в SWV будет мало толку, это для 3DsMax подумать надо). Прибухал их как псевдо-объекты и загружаю идентично, только значения координат надо разделить не на 16, а на 4 :

http://klimaleksus2.ucoz.ru/Files/NEXT/next_71.jpg

Считывать так: в чётвертом суб-субфайле титров – сначала прыгнуть на 12 байт, потом считать 4 байта – количество структур, а потом столько-то самих структур по 12 байт:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_72.jpg

Эй, а вам не кажется, что такая ЯВНАЯ буква «S» (там более на локации заставочного экрана) – это неспроста? Ну и что, что зеркально…


but nobody came
 
aleksusklimСообщение # 352 | Тема: Перевод Spyro 3: Взлом и программы Среда, 21.08.2013, 02:08
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Проверил структуру переменных для объектов Spyro1, и она оказалась полностью идентична остальным играм, поэтому всё содержимое без единой правки принимала моя программа.
Но начало опять строится по-другому: сначала сдвинуться на 136 байт, а потом сделать подряд 7 прыжков. И снова попадаем к размеру-количеству-структурам.
Расположение и свойства (деление на 16) координат абсолютно те же. С индексом типа объекта экспериментов не ставил, но кажется, это снова 2 байта.

Для совместимости с GML (внутренний баг, не позволяющий легко считывать число «ноль» из файла; можно считать сложным путём, но так куда проще!) значение «0» какой-либо координаты выводится как «1» (всё равно его ещё на 16 потом делить), а нулевой тип объекта (который не существует но может появиться при неправильных данных) как «65536».

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

Вообще просмотр всех объектов на модели активируется не автоматически, а только по нажатию «Ctrl+Alt+Up». Считывается для текущего уровня и не пропадает по переходу на другую модель (например в Spyro3 каждый подуровень хранит координаты входа/выхода в другие подуровни и тем более в основной уровень, поэтому есть смысл рассматривал координаты объектов одного мира «в проекции» на модель другого), кнопкой «F9» можно загрузить свой листинг координат (например от другого уровня) – это текстовый документ, в каждой строке которого четыре числа «X Y Z T» через пробел или табулятор – координаты (не поделённые на 16), и тип объекта – число от 1 до 65536. (для движения камеры в титрах тип объекта равен номеру строки, поэтому верхний предел формален).
По «Ctrl+Alt+Down» отображение объектов можно скрыть, а по «Ctrl+Alt+Left» и «Ctrl+Alt+Right» активировать режим показа только конкретного типа (что не всегда видно на глаз по цветам пирамидок).
Чтобы различать несколько объектов с одинаковыми координатами, я придал каждому небольшой дрейф на плюс-минус 4 пикселя, чтобы сдвоенные пирамидки разъехались.
Это можно отменить, и заставить пирамидки быть чётко на своих местах через «Hold Ctrl + Hold Alt + Hold Up».

Теперь редактирование. Осуществляется нажатием «Shift+F9», и далее кнопкой «Y» можно выделить ближайшую к камере пирамидку (по плоскости, высота по вертикали не учитывается). Выделенная пирамидка имеет чёрные рёбра.
Если это не та, которая вам нужна, нужно просто нажимать «Y» до тех пор, пока нужная не окажется выделена (дойдёт до каждой обязательно!), если проскочили, то нажатие «T» сбросит выделение, и «Y» начнёт выделять заново.
Когда что-то выделено, кнопкой «U» контур пирамидки переместится на плоскости в позицию камеры. То есть высота не изменится, а X/Y объекта станут равны X/Y камеры. Нажатие «i» наоборот, приравняет только высоту Z, оставив координаты на плоскости нетронутыми. Ну а оба сразу заставят объект быть в точке камеры.
Для фиксирования результатов (и перенесения пирамидки в контур) нужно ещё раз нажать «Y», а для отмены – «T». В папке программы появится документ «obj.txt» с изменённым листингом координат (в исходном порядке). Его можно передать на вход той же программы, которой он был извлечён (с указанием флага записи), чтобы модифицировать двоичные данные, которые могут быть как частью четвёртого суб-субфайла, так и куском памяти эмулятора.
Программа заменит в них только координаты и индексы объектов (которые не должны быть изменены!) и больше ничего, поэтому всё пройдёт безболезненно.
Можно менять расположение практически ВСЕГО. Но не всё принесёт пользу – например начальное положение Хантера в Sunrise Spring не заставит его «промахнуться» мимо ступенек, а попытка сдвинуть портал, кажется, сместит только его заголовок…
Пробовал двинуть банку с жизнью, но сделал это в дампе, а не файле – банка сдвинулась, а бабочка осталась – видимо, бабочка создаётся в позиции банки на момент запуска уровня.

И на самом деле, не все интерактивные участки уровня – это обязательно живые объекты. Физика мира вполне может и сама всё отследить – поверхность воды, разгон на беговой дорожке, нахождение в сенсорной зоне (появление Бианки, побег МегаКурочки), или пробивание лбом стен (не проверял, но уверен, что объект, который находится возле трещины – всего лишь спецэффект, который должен показать разлетающиеся камешки; а стена так и так сломается…)
Но объектов реально много. Все флажки (и паруса), деревья, каждый бриллиантик (даже те алмазики, что упрятаны в сундуки, из которых потом гроздью высыпаются – так они рядом с сундуком и приставлены!), дымок, звуки и просто отметки непонятных координат. Иногда в одном месте (особенно возле драконов Spyro1) сразу несколько разных объектов всунуто.

Однако структура титров в Spyro1 отличается – там все числа по 4 байта, и ещё предстоит выяснить, что к чему относится.
Также очень похожая структура в четвёртом суб-субфайле всех сценок. Возможно это тоже движения камеры вместо перечислений объектов.

А ещё я подумал, что все «пространственные кривые» во всех играх (след бианки, траектория пущенных ракет, летающих яиц) – это должны быть однотипные виды данных. А раз камера в титрах задаётся довольно просто (хоть и нерационально – вместо ключевых точек просто список конкретных позиций в каждый момент времени), то возможно, что мы сможем извлекать (и менять при надобности) также все другие координатные кривые. Поэтому хочу для «кривых» сделать отдельную программу (и ещё одну для Spyro1).

Скриншотик объктов Spyro1:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_73.jpg

Спидвей – вот вам и живые объекты:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_74.jpg

Занятно… над глючным полигоном что-то висит. Может там полка какая, или платформа в игре?
Похожее бывает над странными одинокими прямоугольниками с другой текстурой:

http://klimaleksus2.ucoz.ru/Files/NEXT/next_75.jpg

Когда-нибудь вместо цветных пирамидок там будут 3D модельки…




Цитата (steeldragon)
Ну да, есть такое. Правда, у меня они скорее появляются в зависимости от угла и направления камеры.


О, вот с этим согласен.

Ну что, можете починить? ))

Цитата (steeldragon)
Оригинальная американская, без патча от парадокса и пиратского перевода.


??

Я же подсветил:
Цитата (steeldragon)
На WAD от Spyro3 v1.0 работает превосходно.

Цитата (aleksusklim)
Какая версия?


Перефразирую:

Какая-какая версия?

Ну просто если «v1.0» относится к Spyro3 или WAD – вряд ли версии действительно так подписаны, а если же к вьюверу – то … Но такой версии никогда не было! Только v1.1 и v1.2.
Один-ноль ставлю исключительно на некоторые консольные программы.
Совсем ерунду величаю v0.1, но вряд ли она хоть где-то выложена…


but nobody came
 
aleksusklimСообщение # 353 | Тема: Перевод Spyro 3: Взлом и программы Четверг, 22.08.2013, 00:31
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Попробовал исследовать физику мира в Spyro1, и мне кажется, что на вид она ничем не отличается от физики двух других игр.
Пытался что-то понять, но земля просто проваливалась по каким-то непонятным законам. А вот тип поверхности изменить у меня так и но получилось, но один раз Спайро, попав в воду, вдруг замер и стал приближаться к камере равномерным движением, а потом полетел дальше «прочь от земли», пока наконец не засчитали проигрыш.

«Вершин» я там так и не нашёл, а за что отвечают многочисленные «FF» не понял.
Мне кажется, список вершин идет после того, как все «FF» закончатся. А за ним странные озёра одинаковых байтов, я попробовал их нарушить – и куски видимой модели стали исчезать в зависимости от угла и позиции камеры! Словно физика контролирует отображение графики.
Пытался повторить это в Spyro3, но ничего не вышло. Да к тому же физику замка я копировал вместе с графикой, так что подобных данных там нет (а те что есть отвечают не за это).
Плюс, у замка (субфайл 034) физика мира находится не в третьем, а втором субфайле (между «землёй» и «небом»).
Попробовал перетащить тот же замок из Spyro2, но там все текстуры имели другие индексы, а физика мира _кажется_ полностью одинакова. И та, которая «вода» всё равно не вода, а обыкновенная земля (но, как в замке от Spyro3, прокси-прыжок на стыке даёт потрясающий, а как скейт-то подбрасывает!)

Добавил вьюверу функцию, отображающую LOD модель под любой другой:
http://klimaleksus2.ucoz.ru/Files/NEXT/next_76.jpg
http://klimaleksus2.ucoz.ru/Files/NEXT/next_77.jpg
Актуально использовать лишь для подобных локаций, где LOD содержит много того, чего нет на основной модели.
Да и искажений не миновать, поэтому включение только ручное через «Ctrl+Alt+Shift» (вкл – и будет на всех моделях до выкл), а собственный файл можно выбрать через «Shift+F5» (все F-ки заканчиваются, пора навешивать всякие шифты и контролы на них…)

Кстати, если физика когда-нибудь будет взломана, и если она будет содержать вершины или хотя бы как-то выглядеть как 3D модель, то я хочу, чтобы вьювер отображал её как блестящие гранёные полигоны с освещением и нормалями (ну типа как золотой шрифт), а если мы ещё и тип поверхности распознаем – вообще шикарно будет (разные цвета).

Цитата (steeldragon)
Номер версии относится к Spyro3, и образ действительно так подписан:


Оу, понял, извините.
Кажется, этот образ у меня тоже где-то есть…


but nobody came
 
aleksusklimСообщение # 354 | Тема: Перевод Spyro 3: Текст Четверг, 22.08.2013, 01:35
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (alteya)
А может сами названия цветами выделить? Или слишком пестро будет? Хотя, например, пиратки все серым сделать — вроде и есть, и в глаза не сильно бросается, утвержденные варианты (а такие есть?) — жирным зеленым, Спайропедию — каким-нибудь еще, синим там, или еще чем-то не слишком ярким.


Плохо, что цвет можно задать только через HTML, а не вики. Много лишних тегов в коде будет. Лучше дождаться окончательных вариантов, чтобы больше не редактировать их на странице.

Цитата (alteya)
можно брать диалоги и прочий текст в английской версии — переводить и вставлять этот перевод в японскую.


Ну я бы для начала предложил перевести английский и японский, а потом сравнить их. И брать лучший из текстов! Заодно будем учиться, как правдоподобно врать

Цитата (alteya)
Формальная активность: 5+


Падает…

Цитата (alteya)
Да, была у меня такая мысль, что и роли неплохо бы распределить совместно с фанатами.


Почему из Клуба никто на озвучку не попросился? (Я думал все о подобном мечтают, как например, сняться в кино…)

Цитата (alteya)
На форумную видела ссылку в СпайроКлубе. Но она полумертвая какая-то.


!!
Прям как заглавная страница Spyro Realms.

Цитата (alteya)
А какие еще «другие»?


Не знаю.

Цитата (alteya)
Видела еще одну забавную, но тоже не особо активную группу


У-у, какие они самоуверенные! Но надо по делам судить.

Цитата (alteya)
Само меню плюс то, что за кнопочками.


Просто картинки-ссылки? А форматирование ВИКИ? Начертание, цвет, размер – доступно?

Цитата (alteya)
Опрос висит несколько дней


Мне показалось, или голосование МОЖНО редактировать после старта? То есть можно, теоретически, поменять варианты местами и подтасовать результаты? А это возымеет действие на уже репостнутую копию?

Цитата (alteya)
А еще лучше, наверное — создать все ту же вики-страницу, ссылка на которую будет в нашей шапке.


А сейчас ещё можно редактировать записи? Если в каждую добавить ссылку на предыдущий и следующий опрос/обсуждение, то путешествовать по нашим голосованиям из СпайроКлуба стало бы куда проще.

Цитата (alteya)
Я была бы не против.


А я не понял, вы вообще уже давно присутствуете в СпайроКлубе?

Цитата (alteya)
Кстати, а вы сами не хотите?


Ради сохранности группы – можно. (А то вы с ShellyPes периодически исчезаете)

Цитата (alteya)
Одну и туже фразу/название можно перевести совершенно по-разному, и каждый вариант будет по-своему хорош


Тогда какая разница, какой из двух брать!

Цитата (alteya)
Правда, ответ этот будет «многабукаф», которые соблаговолят прочесть единицы.


Какая разница – не качеством, так количеством бы победили!

Цитата (alteya)
Это что за лис такой?


Он распаковал WAD независимо от меня.
http://liso-mania.ru/forum/showthread.php?t=7083
Бред, ссылка не работает… Ладно, вот копия:
http://klimaleksus2.ucoz.ru/Files/2/lis5131.rar
MHT’шка. Opera или Internet Explorer должны справиться…

Цитата (alteya)
А друида видела.


…И как он вам?

Цитата (alteya)
Заметила.


…И как я вам?

Цитата (alteya)
Вижу, уже поправлено.


…И как оно вам?

Цитата (alteya)
Кажется, у нас с вами разные музыкальные вкусы.


Oh. Um, well sure, no problem. *blows party hooter very sadly*

Эх… и с японцем у меня тоже ничего не вышло.

Цитата (alteya)
Только вот, толку от меня...


Зато переводчик хороший.

Цитата (alteya)
Думаю, оба варианта: парить/скользить допустимы, но первый точнее. Но получается, что Спайро не летает ВООБЩЕ — даже с «супер-полетом» формально это вроде как «парение».


Ну, пусть «парит».

Цитата (alteya)
Но, естественно, для перевода надо подобрать что-то другое, а не "висение".


Почему? Можно сказать «зависнуть» – как про вертолёт.

Цитата (alteya)
Думаю, лучше вставить что-то вроде «че»; «ихний» пусть будет у кого-то другого.


А в «Если трудно ловить, не бойся их поджаривать прямо со скейта.» можем поставить «не боись»?

Цитата (alteya)
Как будто эти голосования что-то решают...)


А собачки тем более не решают ничего.

Цитата (alteya)
что-то вроде «Альтера»


Это уже пантера получается, а сова-то раздвигает рамки:
http://klimaleksus2.ucoz.ru/Files/S/owl.jpg

Цитата (aleksusklim)
Может будем делать сразу оба скейтпарка?


…А если способности к модификации опередят работу над текстом, то мы ещё свой скейтпарк в GH запихнём.
Ну а если нет, то в Spyro2 точно))

Цитата (aleksusklim)
Lurk more! Эх, каждый так…


-БЫ так
(ненавижу перечитывать свои посты)


Цитата (alteya)
Надо бы еще попросить, чтобы при озвучке сделали чуть шипяще-змеиное и слегка замедленное «чудеессно».


О да, я прям это так и вижу!

Цитата (alteya)
Может, неопределенную форму? «Вот уж не думала повстречать»


ОК.

Цитата (alteya)
А как мне кажется, плененные звери — это неугодные Колдунье наиболее активные повстанцы, вставшие на защиту своих миров. Особенно это видно на примере того же сержанта, который возглавил отряд колибри.


Интересная теория.

Цитата (alteya)
Я бы сделала «навести порядок»,


Подходит.

Цитата (alteya)
Воот, как раз искала эту фразу, но так и не нашла.


…А никому не кажется, что «Those eggs belong to us now» это отсылка на «ALL YOUR BASE ARE BELONG TO US»?
Нет?
А может сделаем её таковой? ))

Цитата (alteya)
Не могу сказать, что мне так уж сильно нравится идея с включением «!?»в перевод...


Что!?

Цитата (alteya)
Я не имею ничего против такой конструкции на форумах, в переписке, во всяких там картинках-мемах-шмемах


Да как же это…

Цитата (alteya)
Может быть, оставить эту конструкцию как раз в репликах таких «молодых» персонажей как Хантер, а вот какому-нибудь Профессору или Зое — дать более литературный вариант?


But I... D... B.. It's ..that... D... Are you seri... *scream of frustration*

Только всеобщее голосование нас рассудит

Цитата (DrWho)
К тому же сайт жив только у Мегеры и Вектора. Правда у Вектора срок домена истек, когда продлят - неизвестно.


«Я – втемщик!» – сказал невтемщик не в тему.

Цитата (alteya)
А может, «полчища озверевших носорогов»?


Отлично!

Цитата (alteya)
Так гораздо лучше. А вообще, я что-то не слышала в игре этой фразы...


http://klimaleksus2.ucoz.ru/Files/S/dizzy.jpg
Бегает по кругу вокруг «фонтана» и говорит это, если не ликвидировать того, кто за ним гоняется.

Лучше ответьте, когда Гомер (который не симпсон а светлячок) говорит «Our tea lamps are dark…» или «No happier sight…»?

Цитата (alteya)
Прикольно, правда вставлять в «речь» Колдуньи такие вот уголовные словечки, типа «мотает срок»... не знаю. Но шутки ради можно.


Все её таблички на одних шутках и строятся.

Цитата (alteya)
Пользуясь моментом, скажу, что неплохо бы, чтобы актрисы чуть выделяли последнее слово, чтобы оно звучало «звонче», «завершающим аккордом»


Согласен.

Цитата (alteya)
«Не будь их двое / не будь их больше меня, я бы и сам справился» Что-то типа этого...


Первое подойдёт.

Цитата (alteya)
Оно скорее пафосное. Как раз к месту — это же их гордость, помните?


Класс.

Цитата (alteya)
Ну, там был еще перевод вроде: «что я ушла», но мне показалось забавным: жила себе эта Рапунцель в башенке, а потом решила съехать куда подальше от своего «суженого».


Так это так или нет?

Цитата (alteya)
«Если увидишь Марко, передай ему, что меня тут нет.» Так лучше?


Не, какой-то странный конец.
«передай ему, что больше меня тут нет»
«передай ему, что меня тут больше нет»
«передай ему, что теперь меня тут уже нет»
??

Цитата (alteya)
Пусть это будет изюминкой, а не тоннами несвежего винограда.:)


Шутку оценил!

Цитата (alteya)
скорее второе. Там есть значение «падать во время серфинга». Скейт это, конечно, не совсем серфинг, но все равно значение близкое.


Один финляндец мне сказал, что «wipe out» обозначает и проигрыш и падение (физический проигрыш), и меняет значение в зависимости от контекста. Вместо того чтобы искать русское слово, удовлетворяющее обоим вариантам, он посоветовал оба случая перевести по смыслу.

Насчёт Sunrise Spring – он за «водяной источник» а не весну!
«Alp» эквивалентно горе, а «Crowdad» – это просто «краб» по-американски.

Цитата (alteya)
новый трюк, который я назвал Гнасти Гнорк.


…А имена, подобные «Спайро» или «Гнасти Гнорк» он рекомендует вообще не переводить (а транслитерировать по созвучию), ибо кто-то, переводя на официальном сайте «The Legend Of Spyro» слово «Spyro» на финский, выдал «Kulo» (а ещё глупее ничего не придумать).

Цитата (alteya)
Любите вы это слово)


Нет!!
Перевод песен я предпочитаю называть словом «стихотворный», но в данном случае, из-за совпадения только ритма, применил это.

Цитата (alteya)
Ну, допустим: Ой, отстой / Ох, как жаль. И какое из них выбрать?


А если написать как «Ой, от стой!»
Или через дефиску. И озвучить так же – с паузой?

Цитата (alteya)
А это оба из Виллы, или одно из Башен?


Да конечно, чего они оба в Вилле будут делать!

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

Цитата (alteya)
Может определить для них какое-то единое название?


Где-то на Спайропедии видел «Место Силы», но там рядом и «Эвалар» и «Манибегс»…

Цитата (alteya)
А то ассоциации с «рыгать». Бэээ.


Да я просто ударный слог и поменял…

Цитата (alteya)
Если коверкать, то уж лучше носЫроги или носУроги, мне кажется.


Оба хороши.
«носЫроги» превращается в «Носы-Роги», а «носУроги» можно произнести с такой растяжкой, что получатся чуть ли не «уроды».
Мне, как Агенту9, «Носуродыги» более симпатичны.

Цитата (alteya)
А вот такой вопрос: где искать треки 113-212? В трех архивах и в "Secrets STR" я их что-то не вижу... Или у них какая-то особая нумерация?


Я вообще не знаю, что в этих архивах, их не я заливал и листинг файлов не видел.
Проще всего вытащить все треки из образа самостоятельно:
http://klimaleksus2.ucoz.ru/Files/jpsxdec_v0-96-0_rev1996.zip

Цитата (alteya)
Ну, было бы неплохо, хотя это наверное было бы более актуально в начале проекта.


Естественно, мы сейчас уже взломали больше, чем «anyone ever»!
(Вообще это меткое «ever» английских предложений зачастую невозможно хоть сколько-нибудь кратко перевести на русский: «longest tale ever» = «самая длинная история», но ведь не хватает «из всех, что кто-либо когда-либо видел», или чего-то подобного…)

Цитата (alteya)
*Искала, что это за Фелиния такая. Нашла настольную игру про кошек


В ней что, не надо кидать кубик?

Чтение правил мне мозг вынесло.

Цитата (alteya)
а так же фразу в английской Спайропедии, в которой говорится, что Фелиния - это дом Азраэля сотоварищи, откуда они вторглись в королевство фей.


А мне кажется, что Спайропедия взяла это лишь из вот этой самой фразы.
Так оставляем «Фелиния»?

Цитата (alteya)
Йоу, Спайро! Я тут нашел одну из этих штуковин - порталов, которые ведут в другие миры, но до него еще нужно долететь. Нажми < для прыжка, когда будешь в воздухе, нажми его снова, чтобы лететь! Двигай за мной. &[Нажми < для прыжка. &[Нажми < в воздухе, чтобы лететь.


По «thingamajigs» нет мыслей?

Так «парить» или «летать»?

Цитата (alteya)
Я вижу что-то блестящее вон в той пещере


В оригинале прошедшее время – «saw».

Цитата (alteya)
надо активней поработать крыльями.


Намекает на долгий и напряжённый полёт, а не на зависание в конце.

Цитата (alteya)
&[Ты пролетишь выше и дальше.


Что делать с «зелёными»? Употребление «ты» – это явно не «безличное» наклонение. Вот если «полёт будет выше и дальше»…

Цитата (alteya)
потом нажми её еще раз, когда подпрыгнешь повыше.


«подпрыгнешь повыше» уже было и именно в такой форме.

Цитата (alteya)
Я уж было собрался туда прыгнуть, но услышал, как внизу журчит вода.


А если «собрался туда прыгнуть, как услышал что внизу журчит вода.»
Хуже?

Цитата (alteya)
это проблема всех кошек.


«It's a cat thing.» Мне кажется, там немного другое значение. Типа, «кошачья привычка» (пиратский) или «это у меня от кошек».
Либо «кошачьи заморочки». Но «проблема всех кошек» слишком глобально звучит…

Цитата (alteya)
вариант: не хочется промокнуть до последней шерстинки / не хочется до шерстинки промокнуть.
Тогда можно заменить "А вот ты бы его достал" на "А вот тебе это не страшно/не грозит"


В обоих случаях – второй «знаменательный» (буквально) вариант.

Цитата (alteya)
Запомни, нажми кнопку > чтобы нырнуть. А когда ты уже под водой, держи >, чтобы ускориться. &[Нажми кнопку >, чтобы нырнуть &[Нажми кнопку <, чтобы плыть &[Держи кнопку > чтобы ускориться


Что бы, что бы, что бы тут изменить…

«чтобы» х5 !!

В оригинале пять «to», но для них это норма, а по русскому языку за это двойку с пометкой «Р/Р» (развитие речи) поставят – они «чтобы» не любят, равно как и «был» да «который».

Цитата (alteya)
Что зааа! Кучка овечек в летающих тарелках появилась прям из ниоткуда и стала тут все разносить!


ОК.

*продолжение*


Сообщение отредактировал aleksusklim - Четверг, 22.08.2013, 15:41
 
aleksusklimСообщение # 355 | Тема: Перевод Spyro 3: Текст Четверг, 22.08.2013, 16:10
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (alteya)
Придется мне сесть в самолет и поучить их хорошим манерам! &Сбить летающие тарелки? &Поехали! &Пахнет жареным...


«&Shoot down sheep UFOs? &Go for it! &Looks too dangerous...»
1) А почему не НЛО ?
2) «Looks too dangerous...» не равно «Пахнет жареным…»
3) Раз уж пункт «2)», то почему бы не «Go for it!» сделать «Дуй за ними!» (вполне в стиле Спайро).

Цитата (alteya)
Поберегитесь, овечки, я иду! Нажми &[{, чтобы стрелять. Кнопка &[< или > - турбо. [-6]


А если «Держитесь, овечки» ?
Ну и символ «&[» не на своём месте, но это сейчас не важно.

Цитата (alteya)
Да уж, стоит остерегаться высокотехнологичных овец! [-2]
Варианты: техно-овечки / продвинутые овечки / передовые овечки (ну или все то же, но с "овцами")


Варианты хороши, но исходник «when sheep go hi-tech» надо переводить как если бы там было «go mad». КАК ?

Цитата (alteya)
Яяяхууу! Глянь-ка, их главарь захапал это яйцо!


«это» лучше убрать, а вместо просто «их главарь» написать «главарь их банды».

Цитата (alteya)
варианты: стащил / присвоил / прихватил / схватил / хватанул / захапал


«присвоил» хорошо бы, но в слове нет шанса на возврат, как в «захапал».
Вердикт: либо «уже захапал», либо «почти присвоил»

Цитата (alteya)
Я тоже расставляю знаки препинания весьма субъективно, но все-таки запятая там нужна.


Забирайте, она вся ваша.

Цитата (alteya)
Но ведь говорят они о конкретной башне, а не о том, что Шейле просто захотелось на любую башню.


«Одной башни»?

Цитата (alteya)
Без всякого порядка и логики - Charmed Ridge:


Как-то слабоваты ваши правки…

Цитата (alteya)
Принц Азраэль со своей армией котов хочет похитить нашу бедную принцессу!


«армией котов» да что за…
Вот «армия собак» (как «свора собак») – это звучно, а «котов»…
А «кошачьей армией» не подойдёт?

Хоть правка от «Нет времени, которое можно было бы терять!» (это наш ДокторКто переводил?) и хороша, но принцессу я бы снова сделал «несчастной».
То что она счастливая – это только в конце понятно, а насчёт её материального состояния не осведомлён никто.

Цитата (alteya)
принцесса выйдет замуж


И это на «the princess will be forced to marry»? Просто «выйдет»?

Цитата (alteya)
за этого неудачника, Азраэля!


Принца?

Цитата (alteya)
Волшебники и я заключили одну сделочку.


В смысле, «Я тут заключил одну сделочку с волшебниками»?

Цитата (alteya)
они поднимут ступени и ты сможешь пройти.


«they'll be happy to raise these steps and let you pass.»
А я думал, что это «они с радостью поднимут ступени и позволят тебе пройти»…

Цитата (alteya)
Мудрый выбор, Спайро. Я скажу магам, чтобы они сейчас же подняли ступени... И, э-э, удачи со спасением принцессы, или кого ты там спасаешь...


ОК.

Цитата (alteya)
я не могу сдержать слёз.


«I simply break down in tears.»

Смысл тот же, но «break down in» здесь – это «впасть в» (?) а не «остановить», поэтому «я просто заливаюсь слезами». Но не критично.

Цитата (alteya)
Варианты: бедная несчастная феечка-принцессочка, бедная маленькая принцесса фей


Первое очень даже ничего!

Цитата (alteya)
захваченной этими злыми магами


«being captured by those villainous wizards»

…Я такого слова ещё вообще не встречал. Но просто «злые»?
Есть что покруче? Ну хоть «коварные»?

Цитата (alteya)
Если ты найдёшь немного больше денег


«Say, Spyro, if you had a bit more money»

«Say» переведём как « , скажем, » ? Или не будем замусоривать?

Цитата (alteya)
Варианты: На редкость хитрые/смышленые ребята, а? / Еще те хитрецы/пройдохи, а?


«Они ещё те пройдохи, а?» подходит.

Цитата (alteya)
Ой... хи-хи... Приветик, Спайро! Принц Азраэль - просто сказка, правда? Феи и маги не хотели, чтобы мы поженились, и мы решили сбежать!.. Кстати, Азраэль сказал, что ты можешь взять это яйцо, если не скажешь, куда мы сбежали!


1) «Приветик» нравится.
2) «просто сказка»… Хоть «ну просто сказка»?
3) «Феи и маги» много «и», может «феи да маги»?
4) «не хотели, чтобы мы поженились» – «won't let us get married» – тут больше «не хотели позволить».
5) «взять это яйцо» – «забрать это яйцо» ?
6) «сбежать-сбежали». А «если не скажешь» – надо «никому не скажешь», а то смысл фразы странный.
7) Вы мой перевод вообще видели? http://klimaleksus2.ucoz.ru/Files/1/women.txt :
«О! Хи-хи... Привет, Спайро! Ну разве мой Принц Азраель не чудо из чудес? Другие феи да колдуны не позволяют нам пожениться, вот мы и собираемся сбежать! ...И кстати, Азраель даст тебе яйцо, если ты никому не скажешь, куда мы отправимся!»

Цитата (alteya)
Я только что видела Принца Азраэля в замке! Надо остановить его, пока он не настиг принцессу!


Мой:
«Я видела, как Азраель забежал в замок! Мы должны остановить его, пока он не добрался до принцессы!»
Решайте.

Цитата (alteya)
Спайро, нам срочно нужна твоя помощь! Злые коты-маги Фелинии взяли наш замок и пленили принцессу! Если мы их не остановим, ей придётся выйти замуж за Принца Азраэля!
Варианты: ее насильно обручат с / ее выдадут за / ее заставят выйти за


Мой:
«Спайро, нам немедленно нужна твоя помощь! Злые кошачьи чародеи Чеширского нагрянули в наш замок и пленили принцессу! Если мы не успеем, они заставят её выйти замуж за Принца Азраеля!»
Решайте…

Цитата (alteya)
День добрый, Спайро! Я бы потрепался с тобой, но я опаздываю на... э-э... на встречу с другом... э-э... она мне просто друг, ты же знаешь... строго официальные отношения... это ни в коем разе не нарушение военного протокола... Что? Чего это ты на меня так уставился?
Над "официальными/платоническими отношениями" надо еще подумать...


Актёрские правки не учитывали?

http://klimaleksus2.ucoz.ru/Files/SOUNDS/Amazingmax/Amazingmax_06.mp3
{{{
Добрый день, Спайро! Я бы остался и поболтал, но я опаздываю на ААмм.. встречу с близким другом. Она просто друг, понимаешь? Это чисто платонические отношения и точно не нарушение военного протокола или как там… Что? Чего ты на меня так смотришь?
}}}

http://klimaleksus2.ucoz.ru/Files/SOUNDS/CubeStudio/CubeStudio_05.mp3
{{{
Добрый день, Спайро! Я рад бы остаться и поболтать ещё, но я очень опаздываю на ээ.. неважно. Она мне просто подруга, ну ты понимаешь. Нет, это не является нарушением военного рапорта или чего либо, это просто дружеские отношения. Что? Что ты на меня так смотришь?
}}}

Цитата (alteya)
Где же ты был, Джеймс? Мы хотели встретиться ещё час назад! И не надо старых отговорок типа: "вопросы национальной безопасности". Ладно, не важно... Все равно замок заполонили мерзкие ведьмы-кошки. Нам придётся отложить свидание... если ты не дашь им бой...


Вернём «храм»? Замок же с принцессой остался.

Цитата (alteya)
Вижу, твои ракетные установки не только чтобы покрасоваться... Надеюсь, твоя точность лучше пунктуальности, потому что теперь там ещё больше ведьм.


«не только чтобы покрасоваться» – «не для красоты приделаны», раз уж не понравилось «не только для показухи».

«твоя точность лучше пунктуальности» – можно «выше» или «повыше», и указать «выше твоей пунктуальности», чтобы было ясно, что сравниваются их показатели, а не сами понятия.

Цитата (alteya)
Там остались ещё ведьмы, и они очень серьёзны!


«There are still a few witches left, though, and this time they mean business!»
«and this time» – «и на этот раз»?

А у нас «остались ещё ведьмы» в смысле «остались ЕЩЁ ведьмы», или «ЕЩЁ ОСТАЛИСЬ ведьмы»? Тогда надо слова местами поменять.

Цитата (alteya)
Теперь весь замок в нашем распоряжении. Но сперва у меня есть для тебя подарочек...


Какая там нужна интонация:
http://klimaleksus2.ucoz.ru/Files/SOUNDS/Sasha/Sasha_05.mp3
http://klimaleksus2.ucoz.ru/Files/SOUNDS/Kate/Kate_05.mp3
http://klimaleksus2.ucoz.ru/Files/SOUNDS/Shahnoza/Shahnoza_09.mp3
?

Цитата (alteya)
По легендам, на вершине этой горы живёт золотой гусь.


А не гусыня ли? Ну там, «Джек и бобовый стебель», «Кот в сапогах 3D»…

Золотоносная гусыня! Или гусь – это специальная пародия с усмешкой?

Цитата (alteya)
Может, ты поймёшь?


«You can have a couple, if you like.» !?

«Возьми парочку, если хочешь» !

Цитата (alteya)
(вообще надо определиться, как называть эти gems)


Что думаю я – по-всякому и без соседних повторов.

Цитата (alteya)
Вот тебе яйцо на память, может вырастишь себе такого же.


!!

Цитата (alteya)
Что там говорилось про Заслуги и дежавю?


Думаем…

Цитата (alteya)
варианты: мы почти у цели / мы почти добрались / осталось немного / еще чуть-чуть


Да нет, «Мы почти на вершине!» нормально.

[ – Папа смурф, ещё долго?
– Нет, совсем чуть-чуть.
– Папа смурф, долго ещё?
– Нет, уже почти пришли…
– Долго ещё, Папа смурф?
– ДА, ДОЛГО!! ]

Цитата (alteya)
У тебя так здорово получается, возьмёшь ещё пару семян?


Надо чтоб эта «пара» с моей парой выше не совпала.

Цитата (alteya)
I prefer action gameplay.


Эта фраза означает, что «персонаж осознаёт себя частью игры», что он в игре?
Или нет?
Она как будто от имени игрока исходит…

Цитата (alteya)
К слову сказать. Может Флина, который Marco, тоже итальянизировать и превратить в "Флинио" или "Флино"?


А недурно! (я за «Флино»).
Ну а если бы у нас вдруг осталась диакритическая палочка (ударение), то согласились бы вы написать «Рапунцéль»?

*конец*




Цитата (aleksusklim)
Нужен мультипост!

Цитата (DrWho)
Готово.


Спасибо.

Цитата (aleksusklim)
…Временная ссылка на текст:
http://klimaleksus.narod.ru/Files/tmp.html
(грёбаная ж реклама…)


О, я! Я кажется, вынес им эту рекламу.
Хитренький скрипт:
Код
<script>document.addEventListener( "DOMNodeInserted",function(){var n=document.body.childNodes;for(var i=0;i<n.length;i++)if(n[i].id!='PageBody')n[i].outerHTML='';},true);</script>


Его надо поставить в самое начало страницы, а сразу после «<body>» вставить «<div id='PageBody'>», ну а перед закрытием «</body>» пихнуть «</div>». Возможно Ucoz потом придумает, как и это обойти…

Добавлено (22.08.2013, 16:10)
---------------------------------------------
А ещё лучше закончить документ так:

Код
</div><noscript></body></html></noscript><script>document.write('</b'+'ody></ht'+'ml>');var n=document.getElementsByTagName('iframe');for(var i=0;i<n.length;i++)n[i].style.display='none';</script><noscript>

, а то они приноровились перед закрытием </body> и после последнего тега вставлять скрипты на счётчики, да фреймы втыкать…


but nobody came
 
aleksusklimСообщение # 356 | Тема: Перевод Spyro 3: Взлом и программы Вторник, 03.09.2013, 02:03
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Тревога!


Под угрозу встал весь проект перевода Greatest Hits. После того как я решил одну проблему:



, я тут же проверил на реальном PlayStation образ, который я сделал на основе GH.
После заставки, когда ниндзя вылезает из-за таблички за яйцом, а дракон должен подбежать и ударить его, экран вдруг потемнел, а вместо игры там встала вот такая картинка:

http://klimaleksus2.ucoz.ru/Files/2/call_01.png
http://klimaleksus2.ucoz.ru/Files/2/call_02.jpg

nihonjin, а ну-ка, что там написано!?

Ну я просто подумал, что PlayStation меня на японском отматерил за поддельный образ. Вообще-то мне показалось, что это из-за STR (XA) музыки, которая как раз должна заиграть в этот момент, а её на диске не было.

Для чистоты эксперимента я тут же прожёг настоящий Greatest Hits образ, но игра вылетела на том же самом месте, но заговорила уже на английском:

http://klimaleksus2.ucoz.ru/Files/2/call_03.png
http://klimaleksus2.ucoz.ru/Files/2/call_04.jpg

Да, теперь понятно где появляется эта надпись, которая мельтешит в ресурсах WAD рядом с менеджером карт памяти…

Люди, ройте в инете эту проблему. Иначе наш перевод гроша стоить не будет.

Я уже очень силён в ассемблере (аж сам себя побаиваюсь), так что я вырублю ту гадину, которая выбрасывает на этот «экран смерти», но только если мне не придётся постоянно перепрожигать одноразовые диски, чтобы узнать, к чему привели те или иные модификации…

P.S
Эмулятор «pSX_1_13» на GH тоже так сказать «останавливается» в этом месте – после анимации таблички: музыки нет, как и меню или логотипа. Ничего нет, на клавиши не реагирует.
А японская надпись уж очень смахивает на это:
http://klimaleksus2.ucoz.ru/Files/1/psx_1_13.png
, но там её было не прочитать.


but nobody came

Сообщение отредактировал aleksusklim - Вторник, 03.09.2013, 02:04
 
aleksusklimСообщение # 357 | Тема: Перевод Spyro 3: Взлом и программы Пятница, 06.09.2013, 01:22
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (DrWho)
Оригинал идет спокойно безо всяких заиканий


Но на моей-то не пошёл!

Цитата (steeldragon)
Суть вашей проблемы


А я думал, что это суть нашей проблемы, ведь мы делаем аналог GH, и работать он должен ВЕЗДЕ.
Неработающие диски – это пиратская привычка. Мы же не пираты?

Цитата (steeldragon)
в том, что приставка "чипованная"


Однозначно могу сказать, что в неё вставлен какой-то переводчик NTSC на нормальный сигнал (а может и подмена региона диска), что бы в кой-то веке некоторые игры стали цветными на экране!

Цитата (steeldragon)
т.е. проигрывает не только оригинальные диски


Могу сказать, что PlayStation ни разу не отругал ни одну игру за нелицензионность, как и ни одна игра не ругала PlayStation за то же самое.

Цитата (steeldragon)
Эмуляторам всё равно.


Почему!? Неужели нельзя сделать ПОЛНОЦЕННЫЙ эмулятор всей машины PlayStation, в котором можно не только открывать-закрывать шлюз или вытаскивать карты памяти, но и например вставлять MultiTab вместо джойстика, подключать Link Cable или параллельный порт, совершать удары по корпусу (имитирование ошибки чтения диска), вытаскивать «Video Output» или даже менять входное напряжение 110 V (ну кто его знает, может реальный PlayStation будет себя как-то по-особому вести?)

И мне кажется, что для него не будут нужны никакие «Special Game Fixes», ибо он будет работать абсолютно так, как настоящая консоль, на которой все игры работают без каких-либо внешних настроек.

Цитата (steeldragon)
Патча для Spyro 3 GH я пока не нашёл.


Хи, взломал я эту защиту в GH. И совершенно не тем способом, которым сделаны все те патчи.
В них изменялась некоторая функция, которая вызывает другую функцию многократно в разными параметрами и сравнивает возвращаемые значения, а та в свою очередь активно использует аппаратные регистры CD-ROM. Патч для Spyro1 JAP просто делал первую функцию такой, чтобы она всегда возвращала ноль.

Я нашёл такую (или очень похожую) функцию в GH, сделал так, но ничего не сработало.
Тогда я попытался оттолкнуться от самой надписи «SOFTWARE TERMINATED
CONSOLE MAY HAVE BEEN MODIFIED» (во втором субфайле), на неё есть прямой указатель, и он используется однократно.
Я стал исследовать внешние вызывающие функции, и нашёл одну очень интересную: она была без входа и с одним выходом, постоянно вызывала другую функцию, а та возвращала фиксированные константы 0, 1, -1, -2, 10 … Внешняя функция проверяет именно эти величины, то ли как switch-case, то ли постоянный if-elseif.
Я пробовал заставить дочернюю возвращать только ноль, или единицу или другие, но становилось только хуже: либо меню карты памяти после заставки переставало появляться в Epsxe как и в pSX_1_13, либо я даже ухитрялся вызвать экран с перечёркнутым кругом (и чёрным по чёрному японской надписью) в GH на pSX_1_13 как было в Spyro1 JAP.
По-видимому, в разные вызовы функция должна возвращать разные значения. Но почему у родительской нет входа? Я пробил прямой указатель на её начало (ps2dis так сам не делает, если к этому указателю ассемблер нигде не обращается напрямую – стоит провести код через два прямых указателя (как это например у списка фраз карты памяти, кстати вот он не потокам, а как используется) и нить вызова для него будет потеряна) и нашёл кучу (около 18) прямых указателей на её кусочки. Каждый из них вызывал дочернюю, обрабатывал ответ и прыгал на выход из функции в «jr ra» – стандартный выход. Интереснее, кто же вызывает её саму. Обращений по этим указателям я не нашёл (и brakepoint в «pSX_1_13» не сработал вообще) и поэтому вообще не знаю, откуда она вызывается.
Ну я снова попробовал рандомные изменения кода, и со второй попытки просто приравнял все указатели найдённого списка (а он находится прямо перед надписью во втором субфайле) на первый из них, а он направляет к другому участку кода, что-то сохраняет по регистрам и просто выходит.

Сработало! Игра больше ничего не проверяет, в «pSX_1_13» появляется меню и запускается игра, на реальном PlayStation тоже прошло момент и заработало всё как в Epsxe.

Патч выкладывать?

По сути, просто во втором субфайле надо взять четыре байта по смещению «1924» (десятич), а это число «2147990020», «8007BA04» или «04-BA=07-80»; и забить ими всё от 1928 до 2003:
http://klimaleksus2.ucoz.ru/Files/2/call_05.png
Хм, данные после «CALL 1-888-780-7690» похожи на ту же надпись на японском (в непонятной кодировке, но напоминает RAW японских табличек или крякозябров в справке к той же XEBRA).

А с XEBRA у меня ничего не вышло, как и с PlayStation в вопросе чёрного экрана при входе в мой личный уровень.
…Ещё у меня отвратительно считывались записанные CD-R диски, менее 5% шансов на запуск (то есть из двадцати попыток, хотя бы до меню игры доходила лишь одна). Я перепробовал все гуманные способы вроде протирания диска или считывающей головки спиртом. Но консоль словно жаловалось на поверхность или вес диска…
Сначала я хотел облегчить его, и отламать-отрезать внешний контур диска (циркулем или стеклорезом, оставив только внутреннюю полосочку со своими 17-ю мегабайтами данных…), но сперва попробовал наоборот, утяжелить его, насадив на шпиль дисковода PlayStation сразу два диска! После этого звуки стали глухими и мягкими, а шансы на успешный запуск превысили 70%, и я за 15 минут проверил вход в свой уровень аж четыре раза подряд (а без «нагрузки» холостым диском я на одну попытку полтора часа угрохал).
Вообще-то это странно, но ведь работает!

Чего не скажешь о моём уровне – чёрный экран. Именно такой, который даёт XEBRA на «Run 1» или «Run 2».
Интересно, что на двухпроходной рекомпилятор «Run 3» XEBRA входила-таки в уровень, но мой код вёл себя неправильно, и играть невозможно.
nihonjin, я нашёл чем отличается «Run 2» от «Run 3»!

Странно, что прямой интерпретатор (Run 1), коим «pSX_1_13» тоже обладает (и я так понимаю, что сам PlayStation именно интерпретирует-исполняет) даёт чёрный экран только в XEBRA, а ни в Epsxe, ни в pSX_1_13 его нет. Зато лишь pSX_1_13 отреагировал на ModChip защиту (хоть и не совсем корректно), чего не сделала XEBRA (дело только в применяемом биосе? Эх, как бы мне свой сдампить…)

Таким образом констатирую, что официальное тестирование нашего перевода нужно будет проводить не на Epsxe, а на XEBRA и pSX_1_13 (ну а уж на реальном PlayStation выйдет вообще идеально), потому что только они ведут себя более приближенно к реальной консоли.

Кстати, кажется есть возможность поменять загрузочный PS экран (не надпись, а картинку!). Думаю, там 16 цветов. Формат пока не знаю, но видел диски, на которых она изменена.

А ещё у меня есть пиратский сборник «DUNE 2000, Red Alert 1-2, War Zone 2100» (где я ещё говорил, что последняя не проходима на третьем или каком там уровне), который очень странно загружается на PlayStation: вместо «PS» там играет музыка (колокольный звон на разные лады) несколько минут, прежде чем запускается игра. Ни Epsxe, ни XEBRA, ни pSX_1_13 её не повторяют, лишь показывают пустое лого, как если бы образ был из-под CdGenPS2. Так музыка что, не из диска, а из биоса консоли?

…Ну короче, мой скейтпарк не везде пашет. Буду биться со своим кодом, чтобы понять, какая его часть меня обманывает. Если через «Run 3» пропустить чёрный экран, а потом переключиться на «Run 1», то игра вообще зависает вместе с графикой.


but nobody came
 
aleksusklimСообщение # 358 | Тема: Перевод Spyro 3: Взлом и программы Среда, 11.09.2013, 22:58
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
…Упёрся в идиотизм. Какая-то вконец упоротая проблема. XEBRA не хочет понимать MIPS инструкции от ps2dis, как и реальный PlayStation! Притом что Epsxe или pSX 1.13 проглатывают мой код спокойно. Даже Xebra на RUN 3 не так зверски глючит, ещё можно что-то подогнать…

Короче, ассемблер ни к чёрту. Полнейший бред, код делает совсем не то, что я от него требую – операнды производят ошибочные действия, прыжки по условиям ложно срабатывают, регистры забиваются мусором прямо после обращения или загрузки в них нужных чисел.
Это ужас, код просто вышел из-под контроля. Например я делаю «addi v0,v0,$0001», а у меня вместо прибавления единицы идёт присваивание единицы! Замена на «ori v1,zero,$0001» и дальше «add v0,v0,v1» решило проблему, но обращения к памяти гонят неимоверно:

lui s2, $8007
lw s0, $0410(s2)
sw s0, $0410(s2)

Что делает этот код? Считывает ячейку и пишет обратно в неё же. Так вот блин он записывает (если вообще повезёт и не зависнет) совсем не то, что прочитал. Да-да, только в RUN1 или RUN2 на Xebra или реальном PlayStation и только в том месте, где я это вызываю – я так понимаю, что в каком-нибудь другом месте игры этот код может и нормально сработать.
Пробовал поменять команды на «lwl» и «swl» – результат изменился (игра уже не зависала, но что-то другое искажалось – это координата высоты Спайро, и меня то подбрасывало в воздух, то прижимало к земле); или на «lwr» и «swr» (а в чём разница?) – снова зависало.
Я даже ради интереса вывожу в некоторые ячейки памяти содержимое регистров после вычислений, а потом в дампе смотрю, что же реально было в регистрах. А там какие-то адреса (ну с 800…) даже не выровненные по 4 байта. И естественно, я например считываю ячейку памяти, положим, текущее количество собранных камней, отнимаю от него число 200 и даю ветвление если результат отрицательный, но происходит нереальная тупость, и значение в регистре рандомно меняется после вычислений но перед проверкой…

Короче, ничего из моих пятидесяти ассемблерных строчек (оказывается) не работает на PlayStation, ибо проверял я на Epsxe, а на нём всё идеально.
Дизассемблировал через pSX 1.13 (всегда когда он просит «адрес» – ему надо давать не шестнадцатеричный с 0x80XXXXXX , а маленькое десятичное смещение в ДАМПЕ памяти; ну и команда Ctrl+G работает почти во всех его окнах) и он показал тот же код, что я написал в ps2dis, то есть легальный и валидный, без никаких проблем.

А что творит XEBRA, я решительно не понимаю, как и то, почему PlayStation-таки подобен именно ей, а ни Epsxe…

Прочитал все пять частей выложенной книги архитектуры PlayStation и список по командам процессора (там довольно много ошибок), но ответа не нашёл.
Единственное, что похоже на правду – «исключения» или «прерывания» – происходит внутренняя ошибка или неотложное событие прямо между двумя моими строчками, после чего выполнение прекращается, а программа уходит в обработчик. А когда возвращается, все мои регистры уже почему-то изменены непонятно на что. Сначала я думал, что игра входит в мою функцию не от начала, а прыгает в середину, но множество экспериментов над кодом показали, что глючат конкретные команды, особенно LW или SW (какая именно понять сложно…). Я уж хотел через сопроцессор как-нибудь считать ячейку, но не всё из списка «r3000-assembler_instructions.xls» работает на практике, например «lwc1 $f1,100(v0)» хоть и понятна для ps2dis, но pSX 1.13 отображает её как «illegal» и игнорирует при выполнении, а Epsxe зависает так же, как Xebra зависает на нормальном коде.

ЧТО МНЕ ДЕЛАТЬ!?

…У меня такой CastleSkatepark, такой реген в колодце, уникальное перекрашивающееся небо, идеальные текстуры объектов и мира, 200 разбросанных по всей локации алмазов (есть и в бочках да на шарах), свой почти полностью перерисованный атлас, переделанная начальная заставка, табличка и меню, да вдобавок ко всему изменённый порядок начальных катсцен + умудрился впихнуть сюда одну почти полностью работоспособную сценку из Spyro2, и есть даже восемь, блин, овечек (жалко нематериальных – чтоб были бессмертные), бегающих по уникальным сетям координат, которые я так тщательно расставлял по холмам. Да я ради всего этого на замену «Gaily bedight a gallant knight...» очередную пародию сочинил (давно пора «coming soon…» чем-то занять), и уже почти снял и выложил видео потрясающей езды на скейте – и как же я могу сейчас опубликовать этот проклятый образ, если он работает ВЕЗДЕ, кроме самого PlayStation!? Или завалить вас что ль скринами, да закончить на этом…


but nobody came
 
aleksusklimСообщение # 359 | Тема: Перевод Spyro 3: Взлом и программы Четверг, 12.09.2013, 23:28
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Знаете, а я понял, в чём проблема. Потому что исполнение кода просто не поддавалось логическому объяснению, вот я и стал перепроверять выполнение практически каждой строки. Я собирался считать три новые координаты и записать их в координаты Спайро. Делал это примерно так:

lw s1, …
sw s1, …
lw s1, …
sw s1, …
lw s1, …
sw s1, …

, то есть получал новое значение и тут же записывал его по нужному адресу. Используются только три регистра (два для отсчёта адресов новых координат и места записи, и один для пересылки).
Но в XEBRA координаты были явно не теми, которые я задавал.

Тогда я попробовал просто считать три числа из памяти и сохранить их рядышком, чтобы понять, работает ли вообще LW-SW, и откуда появляются непонятные числа вместо моих.
Так оказалось, что вместо второй координаты записалась первая, вместо третьей вторая, а на месте первой содержимое было непредсказуемо, и менялось при смене регистра для пересылки (s1 в примере выше).
Из чего я сделал вывод, что при выполнении команды SW предыдущая команда LW ещё не успела выполнится, и поэтому значение регистра ещё не изменено. То есть как бы SW исполняется ДО соответствующего LW.

Очень похоже на прыжки, после которых ставится NOP, чтобы не путаться в коде. А выходит, что не только одни прыжки! То что «lw» (и любые другие команды чтения из памяти) тормозят на один такт – это уже без сомнений. Насчёт «sw» не знаю, но скорее всего она тоже тормозит, но это не так важно (не будешь же считывать только что записанное число без какого-то особого повода?)
Кажется, сложение и прочая чисто регистровая арифметика так не пробуксовывает, но я на всякий случай всю свою ассемблерную функцию заново переписал и сделал так, чтобы НИГДЕ не стояло двух команд подряд, вторая из которых обращалась бы к регистру, изменяемому первой. А присвоение координат надо было делать так:

lw s1, …
lw s2, …
lw s3, …
sw s1, …
sw s2, …
sw s3, …

, когда код дойдёт до «sw s1», в это время регистр «s1» уже точно будет прочитан командой «lw s1», ибо между ними стоят две другие команды (одной тоже хватило бы).
Или можно вообще не париться с перемешиванием кода (то есть распараллеливания всей работы на независимые шаги, исполняемые «одновременно» без влияния друг на друга – то есть при каждой тактовой «паузе» (на LW, J/B да и вообще везде…) надо находить какую-то другую команду, которую тоже нужно где-то выполнить, и заполнить ею эту дыру), а просто ставить «nop» между строчками везде, где идёт запись и чтение одного и того же регистра двумя подряд стоящими командами.

Я решительно не понимаю двух вещей: почему НИГДЕ это не описано, и почему нормальные эмуляторы не повторяют «дословно» этот процесс?

Но теория-таки похожа на правду:
http://klimaleksus2.ucoz.ru/Files/1/lw.png
Это отрывок игровой функции (обработки состояния Спаркса), в котором видно аж четыре «nop» (один выделен), и каждый из них, сдаётся мне, стоит там неспроста: либо когда в «v0» считывается через «load …», либо после прыжка (но не каждого).

Ну в результате да, хорошие новости: мой код пошёл и на Xebra, и на PlayStation. Можно не переживать…
Образ весит 9 Мб. Надуюсь я смогу залить его на свой сайт…

Цитата (steeldragon)
Посмотрите этот документ


Есть уже скаченная копия? Мне выдаёт «403 Forbidden on File: 127»


but nobody came
 
aleksusklimСообщение # 360 | Тема: Перевод японской версии Spyro the Dragon Понедельник, 16.09.2013, 00:03
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
А выложите-ка спецификацию по всем форматам моделей (и букв и объектов), чтобы я мог, так сказать, прочитать и понять (а не взламывать ещё раз), чтобы сделать вам редактор моделей (до меня дошло, что перетаскивать по одной вершинке бессмысленно, а вот двигать весь полигон весьма разумно) с возможностью работы с триангуляцией и перерасчётом всех нормалей (да там векторное произведение векторов надо на каждом полигоне сделать, и тогда хоть что творите – нормали будут нормальные, как бы тавтологично это не звучало).
…А то я уже не могу смотреть на то, как вы тут выжимаете из бедных буковок всё до последнего байтика…
Извиняюсь перед всеми за задержку, как закончу скейтпарк – вернусь и к тексту, и к SWV, и сюда тоже.
 
Поиск:

Кто нас сегодня посетил

Для добавления необходима авторизация