Воскресенье | 22.12.2024 |14:33
Приветствую Вас Гость Мира Спайро | RSS
Модератор форума: nihonjin, aleksusklim, alteya, Томас  
Перевод Spyro 3: Взлом и программы
aleksusklimСообщение # 1 Воскресенье, 26.06.2011, 14:19
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Работа с текстовой частью перевода введётся на code.google.com/p/spyro3-rus, обсуждение перевода (а не взлома) В темеПеревод Spyro 3: Текст
В этой теме происходит обсуждение перевода, а также создание софта для потрошения игры.
Важные сообщения: Структура WAD-файлов Спец. символы и File Paint 1 | Извлечение и добавление текста | О звуке | В продолжение о звуке | Вариант перевода Buzz's Dungeon и Midday Gardens


Сообщение отредактировал aleksusklim - Среда, 29.04.2015, 19:51
 
aleksusklimСообщение # 481 Вторник, 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
 
DrWhoСообщение # 482 Вторник, 03.09.2013, 03:58
Аватар DrWho
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
Это как обычно, если похимичить, то эту защиту можно выпилить. Можно для сравнения взять какую-нибудь обычную лицензионную игру, потом взять фикс от brill'a и в обоих образах сравнивать, что изменено. Там brill эту самую инфу о модифицированной консоли выпиливал, чтобы играть можно было спокойно.
Но мне кажется это скорее проблемы приставок, чем самого образа. Оригинал идет спокойно безо всяких заиканий, во всяком случае на образ на рутрекере никто не жаловался в этом плане. Если б были жалобы, уже бы и проверку эту кто-нибудь, да выпилил.




Сообщение отредактировал DrWho - Вторник, 03.09.2013, 04:01
 
steeldragonСообщение # 483 Вторник, 03.09.2013, 15:37
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Цитата (aleksusklim)
Тревога!

Суть вашей проблемы, грубо говоря, в том, что приставка "чипованная", т.е. проигрывает не только оригинальные диски (я те диски вообще только на картинках видел).
В более ранних играх же как было? Приставка проверяет диск с игрой. В более поздних еще и диск с игрой проверяет приставку на лицензионность (вроде как такая функция входит в LibCrypt).
Новые ModChip-ы проверку могут и пройти. А вот старые - нет.
Эмуляторам всё равно.
============================
Здесь есть патч (MODPASS.XPS Patch #2), отключающий такого рода проверку на японской версии Spyro 1 (и ещё нескольких).
Там объясняется, как работает защита. (очень кратко)
Патча для Spyro 3 GH я пока не нашёл. (Тут есть патчи, но я не уверен, сработают ли они на GH)


Сообщение отредактировал steeldragon - Вторник, 03.09.2013, 18:31
 
aleksusklimСообщение # 484 Пятница, 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
 
DrWhoСообщение # 485 Пятница, 06.09.2013, 02:02
Аватар DrWho
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
Цитата (aleksusklim)
А ещё у меня есть пиратский сборник «DUNE 2000, Red Alert 1-2, War Zone 2100» (где я ещё говорил, что последняя не проходима на третьем или каком там уровне), который очень странно загружается на PlayStation: вместо «PS» там играет музыка (колокольный звон на разные лады) несколько минут, прежде чем запускается игра. Ни Epsxe, ни XEBRA, ни pSX_1_13 её не повторяют, лишь показывают пустое лого, как если бы образ был из-под CdGenPS2. Так музыка что, не из диска, а из биоса консоли?

Раз уж об этом пошел разговор, расскажу какую ситуацию я встретил:
Есть у меня диск с антологией 5 в 1 (на нем: Break Out, Kurushi, Turnabout, Swing, Arkanoid R 2000). Так вот, в 1й, 3й и 4й игре хоть и играет одна и та же музыка (это нормально для антологий), но меня удивил следующий факт:
Если запускать на реальном железе или на эмуляторе, все в порядке, композиция нормально проигрывается (есть одна такая, про нее я и расскажу ситуацию). А вот когда попытался снятый образ, который позже сконвертировал под PSP, запустить на PSP, ситуация была следующая:
Со всеми играми все в порядке, все работают. А вот когда запускаю, например, в Turnabout 1-10 уровень, там 18 минут издается непонятный треск. Ну я сначала подумал, что это так снялся у меня образ, ан нет. Я залез внутрь образа и попробовал запустить первую композицию, и что я вижу: тот же треск, состоящий из 18ти минут, воспроизводится. Далее идет тут же нормальная композиция. Я хотел попробовать подкорректировать, но у меня ничего не вышло. Я плюнул на это и забил. Решил если что, на пк через эмулятор сыграю.
Даже странно, на реальном железе проигрывается нормально, на эмуляторе тоже все нормально, а через по сути тот же эмулятор, только на PSP, проигрывается треск первые 18 минут.

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

Давайте тогда без вшивания патча. Я не имею в виду вообще не патчить образ, я имею в виду, что кто захочет - поиграет на ePSXe. А кто захочет 100% безопасности в плане запуска на реальной консоли - поставит патч и запишет на болванку игру или поиграет через psx_1_13 или XEBRA (мне оба не нравятся, потому я только за ePSXe).


 
steeldragonСообщение # 486 Пятница, 06.09.2013, 15:26
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Цитата (aleksusklim)
Патч выкладывать?
Обязательно. В отличие от DrWho, мне pSX 1.13 очень даже нравится.

Цитата (aleksusklim)
Эх, как бы мне свой сдампить…
Зачем дампить? Посмотрите по дате выпуска и скачайте нужный биос.

Цитата (aleksusklim)
Кстати, кажется есть возможность поменять загрузочный PS экран (не надпись, а картинку!). Думаю, там 16 цветов. Формат пока не знаю, но видел диски, на которых она изменена.
Пираты даже программу для этого сделали... Кстати, картинка на самом деле - TMD модель.
А на что менять будем?
 
DrWhoСообщение # 487 Пятница, 06.09.2013, 18:03
Аватар DrWho
Мудрый Дракон
Почетный Житель
«1371»
Где: Не в городе Драконов
Цитата (steeldragon)
В отличие от DrWho, мне pSX 1.13 очень даже нравится.

pSX 1.13 хоть и не надо настраивать, но на нем работает меньше игр, чем на ePSXe. А ePSXe легко настраивается и работает с практически всеми играми. Чисто свое мнение.


 
olejikaСообщение # 488 Понедельник, 09.09.2013, 10:15
Стрекоза
Новопоселенец
«0»
Где: Не в городе Драконов
Раз уже давно можно скачать 3D-модели букв из Spyro the Dragon, то почему так и никто не сделал по ним ttf-формат шрифта?

нескажу
 
gitgegСообщение # 489 Понедельник, 09.09.2013, 15:47
Аватар gitgeg
Взрослый Дракон
Житель Города
«408»
Где: Не в городе Драконов
ttf это, я так понимаю, просто печатный шрифт? Вроде есть такой, Lithos Pro называется. Некоторые буквы похожи на буквы из 1 части.
http://www.identifont.com/samples/adobe/LithosProBlack.gif


 
aleksusklimСообщение # 490 Среда, 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
 
steeldragonСообщение # 491 Четверг, 12.09.2013, 13:32
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Цитата (aleksusklim)
ЧТО МНЕ ДЕЛАТЬ!?

Хм.
Посмотрите этот документ, может, там есть ответ, почему ваш код на реальной Playstation не работает?


Сообщение отредактировал steeldragon - Четверг, 12.09.2013, 13:34
 
aleksusklimСообщение # 492 Четверг, 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
 
steeldragonСообщение # 493 Пятница, 13.09.2013, 16:59
Аватар steeldragon
Старейшина Драконов
Редактор
«422»
Где: Не в городе Драконов
Цитата (aleksusklim)
...почему нормальные эмуляторы не повторяют «дословно» этот процесс?
А на PCSX-Reloaded тоже проверяли?

Цитата (aleksusklim)
Есть уже скаченная копия? Мне выдаёт «403 Forbidden on File: 127»
Да, вот: https://dl.dropboxusercontent.com/u....%29.txt
 
MrModezСообщение # 494 Пятница, 13.09.2013, 18:33
Аватар MrModez
Дракон Подросток
Житель Города
«611»
Где: Не в городе Драконов
Ребят, всех с Днём Программиста! :)

I'm MrModez
Мои новые треки в стиле Спайро:
Desolate Forest Skate Park - Spyro Custom Track
Lofty Farms - Spyro Custom Track
Gleaming Coast - Spyro Custom Track
 
aleksusklimСообщение # 495 Воскресенье, 06.10.2013, 00:23
Аватар aleksusklim
фдулыгылдшь
Редактор
«1066»
Где: Не в городе Драконов
Цитата (steeldragon)
может, там есть ответ, почему ваш код на реальной Playstation не работает?


Не-а. Сказано только про задержку на jump.

Цитата (steeldragon)
А на PCSX-Reloaded тоже проверяли?


Ух-ты, эмулятор мне понравился. Его можно заставить вести себя как Epsxe, но при включении «интерпретации» (или чего там) его поведение на моём коде подчинялось рассудку ещё меньше. Короче, результаты отличаются даже от XEBRA. И далеки от реального PlayStation.
На версии с исправленным кодом работает безошибочно.

Цитата (MrModez)
Ребят, всех с Днём Программиста! :)


Всё, выкладываю свой CastleSkatepark:
http://klimaleksus2.ucoz.ru/Files/2/castleskatepark1v1.rar

Работы в него вложено нереально много. Если соберусь с духом, то попробую описать хоть что-нибудь, что пока не забыл…


but nobody came
 
Поиск:

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

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