PS2 Ninattayo Dokuro Chan и эмулятор.

Тема в разделе "PlayStation 4", создана пользователем Zidane, 24 янв 2009.

  1. Zidane

    Zidane Well-Known Member

    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    51
    Захотелось помучать эту визуалку на эмуляторе, но столкнулся с проблемой - эмулятор не хочет грузить игру.
    Сначало проходит прогрузка модулей:
    Далее игра пытается считывать(присоединять ???) игровые файлы, и это у нее не получается, потому она уходит в бесконечный цикл:

    При этом считывание с дивидюка не происходит(4 мб кэш вырублен)

    Не знаю даже что и делать, толи сидеть и мучать функции загрузки этих UNI, или же мучать модули DVD...
     
  2. romka

    romka Очень главный

    Сообщения:
    4.459
    Симпатии:
    180
    Баллы:
    203
    Тут "фриз" или всегда -1 в регистре $v0 ?
     
  3. Zidane

    Zidane Well-Known Member

    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    51
    Вот "exe"
    SLPM_661.rar

    Точнее так - оно не выходит из функции sub_157510
    которая уходит в бесконечный цикл на таком участке

    где sub_156200


    возвращает ноль с прочтенного адреса 0x157E444 в памяти.
    при чтении 0x157E440 - считывается 1.



    аналогичная ситуация чуть ниже по коду

    где функция sub_156190 абсолютно схожа с sub_156200, отличие только в адресе 0x157E444, здесь этот адрес 0x157E448

    Да, возможно здесь косяк из-за того, что v1, равен 0, помойму. Во всяком случае, даже если занопить эти циклы, все равно не работает.
    Есть подозрение что это все из-за модулей, подгружаемых игрой.

    Это первая игра на PS2, с которой начал разбираться, так что ещё много по адресам и принципам работы PS2 не знаю.
     
  4. romka

    romka Очень главный

    Сообщения:
    4.459
    Симпатии:
    180
    Баллы:
    203
    Я поверхностно посмотрел, что там происходит и пришел к выводу, что приведенный код скорее всего взаимодействует с IRX через RPC. То есть я нашел там рядом набор вызовов пользовательского RPC-сервера (судя по логу в первом сообщении он находится в модуле MEDIA.IRX), но логику работы понять я сходу не смог.

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

    Вложения:

    • SLPM_66186.zip
      Размер файла:
      1,2 КБ
      Просмотров:
      36
  5. Zidane

    Zidane Well-Known Member

    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    51
    Т.е. получается что rpc-сервер работает некорректно, и должен оставлять данные по тем адресам, что читают функции в цикле? Если так, то становится интересна причина некорректной работы(не совсем корректная эмуляция вызовов, или способа подгрузки модулей, не соответствующая тому, как это происходит на PS2), или же тут возможна ситуация, когда на реальной железке какие-то части кода работают не так, как они описаны в документации.

    Кстати, могу создать и выложить торрент, если будет интересно, т.к. без всех файлов и модулей, что-то конкретное сложно сделать.

    Кстати, какой дебаг есть попродвинутей для ps2? Просто с PS1 было хороший дебаггер, в который ещё добавил всякие бряки по сидюку(сектору на диске) и т.п.
     
  6. romka

    romka Очень главный

    Сообщения:
    4.459
    Симпатии:
    180
    Баллы:
    203
    RPC - это высокоуровневая надстройка на SIF (Serial InterFace) и DMA, которые предают данные между процессорами и двумя блоками памяти. RPC-сервер действительно может писать данные в тот участок памяти, который проверяется в цикле, но делает он это через DMA-канал. RPC-сервер (внутри IRX-модуля), также как и клиент использует лишь стандартный набор функций, а вся работа с "железом" происходит внутри биоса и модулей из файла IOPRP280.IMG.

    Я врядли смогу особо помочь, так как свободного времени сейчас очень мало, и мне пришлось свернуть все свои исследования внутренностей PS2.


    Я им никогда не пользовался, так ps2-девкита у меня нет, а запустить эмулятор с нормальной скоростью я не могу, так как тормозит "графика".