Если в файле не находятся коды кнопок (скорее они завуалированы), то вполне возможно, что игра использует языковые нормы. Если выставлено на японию, то и кнопки будут браться в соответствии с японской раскладкой.
Можно попробовать наобум поменять региональность. Возможно япония - это 0х1, а россия 0х8
0x0000C7E0: 0x3C050001 '...<' - lui $a1, 0x1
Попробовать по адресу 0х0000C880 сменить 1 на 8.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
А-ха-ха , при нажатии на кнопку раньше на японском предлагалось выйти по кнопке
А теперь написано по-русски "Выйти из игры" - "Да - Нет" и выходит по
Но в самой игре кнопки так и остались.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 04.02.2015 в 15:06.
ErikPshat, выпиши, пожалуйста, какие там точно оффсеты в EBOOT'е поменять, пригодится, однозначно. У меня просто самой PSP нет, даже не проверить что там по нажатию HOME выскакивает. Не то может чего поменяю и даже не пойму получилось или нет
Короче для игры таки придётся какой-то хитрый план реализовывать. Кто раскурит процедуру опроса кнопок для riku? Это ерунда с языком влияет только на экран выхода.
Короче для игры таки придётся какой-то хитрый план реализовывать. Кто раскурит процедуру опроса кнопок для riku? Это ерунда с языком влияет только на экран выхода.
Да, тут все грустно. Во многих других играх зато эта ерунда на все остальное тоже влияет, но тут не судьба
Эмм, странно. У меня так и осталось move. Только регистр сменился с $zr на $t0.
Это просто твой дебаггер по-своему коррелирует функцию, хотя мы меняем действительно сам номер функции, а не её значение.
Пользуйся лучше PRXTool, это же специально для PSP разработанный дебаггер, а то мы разговариваем на разных языках.
По идее у тебя адрес правильно указывает.
0x0000C7D0 + 0x08804000 = 0x088107D0 - по этому адресу меняем на значение 25200001
0x0000C7D8 + 0x08804000 = 0x088107D8 - по этому адресу меняем на значение 25280001
Эмм, странно. У меня так и осталось move. Только регистр сменился с $zr на $t0.
Это просто твой дебаггер по-своему коррелирует функцию, хотя мы меняем действительно сам номер функции, а не её значение.
Пользуйся лучше PRXTool, это же специально для PSP разработанный дебаггер, а то мы разговариваем на разных языках.
По идее у тебя адрес правильно указывает.
0x0000C7D0 + 0x08804000 = 0x088107D0 - по этому адресу меняем на значение 25200001
0x0000C7D8 + 0x08804000 = 0x088107D8 - по этому адресу меняем на значение 25280001
Насчет дебаггера ты прав, в нетронутом оригинале он у меня так показывает:
Там явно $move должен стоять.
Но в посте по предыдущей ссылке написано, что с 'move $a1, $at' хоть и работает, но нестабильно и может проблемы вызывать:
now, you can patch it to english simply by navigating to the address of $a1 and setting it to 0100, however this method is prone to errors as it may conflict with previous instructions used elsewhere. This method patches the $zero value from register $a1 to $at and it just so happens that $at seems to nearly always have a value of 1. However this method causes some odd behavior as it patches both language and button mapping to 1 somehow overwriting the setting of register $a0.
Поэтому и решил сделать как там и заменить его на $li, ну и код языка, тоже, Русский вместо английского.
Сейчас посмотрел - процедура, в которой sceCtrlReadBufferPositive используется у Sharin no Kuni точно такая же, как в другой 5pb игре - Corpse Party BoS... но у той игры есть английская версия с крестиком в качестве выбора. Не знаю, может поможет если на различия посмотреть (в английской они есть).
Ну надо скачать эту корпсе парти, посмотреть. Качается с нитроромов, осталось 16 часов
Но эти изменения мне напоминают просто включение подсветки, если долго ничего не нажимаешь. Вот скачаю и точно скажу. Ну или сам всё занули, чтобы стало как в японской версии - если не начнет работать как японская, значит это не оно.
Похоже с кнопками труба. Читать массивы асма замучаешься, но при сильном желании можно
Что могу ещё предложить, так это подписать EBOOT.BIN оригинальной родной подписью (во вложении)
Ложим декриптованный EBOOT.prx, запускаем батник, получаем подписанный EBOOT.BIN
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Короче скачалась игра, эти изменения - это не оно. Если их занулить и сделать процедуру как в японской версии - ничего не меняется. Где-то в проверке считанных данных это всё устанавливается, в общем. А не в читалке (что в принципе логично). Это просто в Ever17 была тупая читалка, где можно было другое значение легко подсунуть. А тут приходит сразу битмаска. В принципе есть мысль, взять в j ra воткнуть j моя процедура, а там в процедуре уже сделать анализатор - если нажали кружок - выключаем бит кружка и включаем бит крестика и наоборот.
Блин, вот почему дебаггер не может мне в определенном диапазоне указать, какие ячейки памяти менялись во время процедуры Логирование же наше всё.
Последний раз редактировалось Scorpeg; 05.02.2015 в 10:39.
Yoti, могу тебе скрипт дать на php, который расширяет ELF-файлы и вставляет новые секции (иначе зачем тебе размеры хедеров?). Я правда только для Ever17 его тестировал. И он говнокод И я его решил не использовать в финальной версии, а досунуть свой код после шрифта просто. Он же всегда в памяти.
Erik, ну я все ссылки видел по Ever17. Как бы я с dsp (переводчик Ever17 и автор AE) общался как раз по поводу его перевода.
Scorpeg добавил 05.02.2015 в 12:11
Сообщение от ErikPshat
Это хреново, что дебаггер не отлавливает нажатия клавиш. Может они в SYSTEM.CFG находятся?
Не, 99% что нет. Можешь для теста поменять от какой-нибудь игры сустем с сустем от этой - он вроде только на инфу в XMB влияет.
Scorpeg добавил 05.02.2015 в 12:32
Короче, план такой.
По адресу 088A1108 (сразу через 1 инструкцию после jal zz_sceCtrlReadBufferPositive) встраиваю j XXXX
По адресу XXXX размещаю чето типа:
lw a0,0x4(sp) - это в a0 битовая маска нажатых клавиш
andi a1,a0,4000
je a1,4000,x1 - прыгаем если 4000 (хз есть ли такая команда, я пишу из головы)
andi a1,a0,2000
je a1,4000,x2 - прыгаем если 2000 (4000 точно не нажат)
j return
x1 // тут у нас значит установлен 4000, значит надо поставить 2000
// однако 2000 тоже может быть установлен, поэтому надо сначала это проверить
andi a1,a0,2000
je a1,2000,return // это означает что оба два у нас установлены, поэтому менять нечего
// иначе это значит, что 2000 не нажат, а 4000 нажат
// убираем 4000 и ставим 2000
xori a0,a0,4000
ori a0,a0,2000
j return
x2 // тут у нас значит 4000 не нажат, а нажат только 2000
xori a0,a0,2000
ori a0,a0,4000
j return
Как план?
Последний раз редактировалось Scorpeg; 05.02.2015 в 13:29.
Причина: добавил, подумав