Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Как в Nuts & milk-е взломать кнопку select?
На страницу Пред.  1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг
Предыдущая тема :: Следующая тема  
Автор Сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Чт Дек 28, 2006 9:44 pm    Заголовок сообщения: Ответить с цитатой

Ещё маленький вопрос.... На титульном экране при входе играется музыка, а потом (после демонстрации) отсчитывается время ($A3-A5)), после которого опять идёт демонстрация. Хоть и известно, где оно хранится, я никак не смог найти место, где туда присваиваются начальные значения. Я хочу сделать время простоя на экране побольше.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
-=#Griever#=-
Гость





СообщениеДобавлено: Чт Дек 28, 2006 11:26 pm    Заголовок сообщения: Ответить с цитатой

Странно, что ты сам не заметил:
$ECFD:A9 04 LDA #$04
$ECFF:85 A3 STA $00A3 = #$00
$ED01:A9 00 LDA #$00
$ED03:85 A4 STA $00A4 = #$00
$ED05:A9 00 LDA #$00
$ED07:85 A5 STA $00A5 = #$00
$ED09:A9 00 LDA #$00
Простая загрузка из операндов...
Вернуться к началу
Тим
Гость





СообщениеДобавлено: Пт Дек 29, 2006 3:11 am    Заголовок сообщения: Ответить с цитатой

Молодцы!!

Когда сделаете, то отпишите в этой теме, где взять хак, а то хочется поглядеть...
Вернуться к началу
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вс Дек 31, 2006 3:36 am    Заголовок сообщения: Ответить с цитатой

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

Я уже в принципе всё доделал, но практика показывает, что каждый день, как я обращаюсь к этой игре, ПОСТОЯННО нахожу в своих уровнях то одну, то другую ошибку Shocked. Надо подождать, чтобы эта полоса прошла.
_________________
вот как-то рано поутру в пруду нашёлся полутруп


Последний раз редактировалось: Otter (Пн Апр 23, 2007 9:57 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Вс Дек 31, 2006 3:52 am    Заголовок сообщения: Ответить с цитатой

Ты бы дал кому-то свой хак на тестирование. Причём всё равно всех багов не откопаешь - особенно в таких паззлово-аркадных играх. Вон даже в Adventures of Lolo некоторые уровни можно пройти так, что у разработчиков волосы дыбом встали бы. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DimOK



Зарегистрирован: 12.11.2003
Сообщения: 93
Откуда: Воронеж - Уфа - Любляна - ???

СообщениеДобавлено: Вс Дек 31, 2006 10:27 am    Заголовок сообщения: Ответить с цитатой

Жжете, чуваки....
_________________
Reports of my death have been greatly exaggerated.
--- Mark Twain
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вс Мар 18, 2007 1:48 pm    Заголовок сообщения: Ответить с цитатой

Есть ещё 1 вопрос........................

В адресах 723, F23, 1723, 1F23 хранится координата x в уровне. Но почему на её чтение и запись не срабатывает прерывание? Она ведь постоянно меняется!!

И в принципе, можно ли как-нито указать платформе выводить спрайт левее точки x = 0? Ведь вроде я в каком-то имитаторе видел левее отображаемого "экрана" полосу в 8 чёрных точек. Может она для этого?
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Вс Мар 18, 2007 2:57 pm    Заголовок сообщения: Ответить с цитатой

Otter писал(а):
В адресах 723, F23, 1723, 1F23 хранится координата x в уровне. Но почему на её чтение и запись не срабатывает прерывание? Она ведь постоянно меняется!!


Ты о каком прерывании? Бряк срабатывает.
Вообще, ты ставь бряк только на 723, на НЕС реальная оперативка - до 7FFh, потом она ещё три раза повторяется (зеркало).


Otter писал(а):
И в принципе, можно ли как-нито указать платформе выводить спрайт левее точки x = 0? Ведь вроде я в каком-то имитаторе видел левее отображаемого "экрана" полосу в 8 чёрных точек. Может она для этого?


Нет, т.к. X спрайта - беззнаковое однобайтовое число, т.е. оно принимает только положительные значения от 0 до FF.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вс Мар 18, 2007 8:56 pm    Заголовок сообщения: Ответить с цитатой

Ухох-ты вот в чём прикол!.... Это не имитаторы рисуют чёрную линию слева, а игры некоторые! А milknuts этой линии не имеет, так как задействует все 256 точек.

Я-то думал, что может Dendy выводит графику начиная с координаты 8, то есть к этой переменной №723 прибавляется перед выводом 8, но не подумал, что разрешение-то 256 - это для правого конца потребовалось бы 263 записывать в порт. Хехе. Так что в натуре невозможно.

-----------------------------

Griever, слушай, прочитал я твой докуменд про палитры, но там в начале говорится, что опираться на 3 докуменда: М. Файзуллина, MiGeR-ы и номер 7 журнала. А потом вдруг в середине говорится, что поиск буфера по документу CAH4E3-а. Где его, собственно, брать-то? Ссылка в теме ДОка по ромхаку тут устарела.

-----------------------------

Тьфу ты блим, чо-то я воще. Нашёл короче.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Ср Мар 28, 2007 3:46 am    Заголовок сообщения: Ответить с цитатой

Сморите какой казус....

Есть такой эффект, что при долгом полёте персонаж шлёпается и экран весь прокручивается немного вниз и потом обратно вверх. При этом самая верхняя строка клеток (которую видно токо в 256*240) сдвигается вниз, а на её место откуда-то "сверху" выезжает мусор.

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

Как-нито можно в таком случае узнать, что собственно за мусор выезжает сверху, и заменить его на пробелы?
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вс Апр 01, 2007 2:07 am    Заголовок сообщения: Ответить с цитатой

Ауаааха! Ответьте кто-нито!! Неужто никто никода не боролся с мусором, выезжающим при прокрутке? [Конечно больш соблазн на вопрос заданный 01.04 ответить ложной информацией, но вы ему не поддавайтесь Smile]

В общем сморите:
Я понял, что байты, выезжающие сверху, это не что иное, как последние 32 байта текущей - $2000-$23FF (или текущей отражённой - $2800-$2BFF) таблицы имён. Заменить их на пробелы - значит запортить палитру уровня.

По идее, когда в текущий момент отображается таблица №2, сверху должны вылезать куски таблицы №0, ведь суть наличия 4-ёх таблиц в том, чтоб при прокрутке за конец одной - вылезало начало соседней. Но почему вылезает палитра, не должно ли быть так, чтоб вылезала сама клеточная карта, расположенная чуть ранее палитры?

И какая таблица тогда должна выезжать, если мы уходим за самый верх таблицы №0?


--------------------
В любом случае, наверно мне можно было бы избежать этого мусора, если переключить mirroring на горизонтальное, включить на отображение таблицу №2, а в палитру таблицы №0 (которая тогда будет выезжать) записать пробелы.

Но у меня не получается поставить таблицу №2! Я поднимаю бит 2 (первые 2 бита отвечают ведь за номер таблицы) во всех операндах перед записями в $2000, а в name table viewer-е у меня упорно включается таблица №0!!
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Djinn
RRC2008
RRC2008


Зарегистрирован: 16.03.2004
Сообщения: 633
Откуда: Москва

СообщениеДобавлено: Вс Апр 01, 2007 9:52 am    Заголовок сообщения: Ответить с цитатой

По-моему, это баг эмулятора. На приставке ничего не выезжало. Вроде.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вс Апр 01, 2007 2:24 pm    Заголовок сообщения: Ответить с цитатой

Но хотелось бы сделать версию, которая всё-таки работала и на имитаторах, просто потому, что подозрительно этот баг совпадает и на FCE, и на Virtua-е. На приставке ты разве играл в PAL-версию, где верхние 8 точек показывались?.... Потому что на SECAM-е-то и я помню, что не выезжало, но надо чтоб не выезжало на всех системах.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость






СообщениеДобавлено: Вс Апр 01, 2007 3:06 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
From: loopy <zxcvzxcv@netzero.net>

(more notes on ppu logic)

you can think of bits 0,1,2,3,4 of the vram address as the "x scroll"(*Cool
that the ppu increments as it draws. as it wraps from 31 to 0, bit 10 is
switched. you should see how this causes horizontal wrapping between name
tables (0,1) and (2,3).

you can think of bits 5,6,7,8,9 as the "y scroll"(*Cool. this functions
slightly different from the X. it wraps to 0 and bit 11 is switched when
it's incremented from _29_ instead of 31. there are some odd side effects
from this.. if you manually set the value above 29 (from either 2005 or
2006), the wrapping from 29 obviously won't happen, and attrib data will be
used as name table data. the "y scroll" still wraps to 0 from 31, but
without switching bit 11. this explains why writing 240+ to 'Y' in 2005
appeared as a negative scroll value.
Вернуться к началу
-=#Griever#=-
Гость





СообщениеДобавлено: Вс Апр 01, 2007 6:46 pm    Заголовок сообщения: Ответить с цитатой

Что-то не пойму : на PAL эта мусорная строка всегда присутствует - даже до прыжка. Это я под FCEu играл
Ты бы хоть два сейва выложил(до и после =))
ЗЫ: "а приставке ты разве играл в PAL-версию, где верхние 8 точек показывались?.... Потому что на SECAM-е-то и я помню, что не выезжало, но надо чтоб не выезжало на всех системах."
Секама нету =) есть NTSC.
Вернуться к началу
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вт Апр 03, 2007 12:46 am    Заголовок сообщения: Ответить с цитатой

До и после чего???? Не могу выложить, чо-то by.ru тупит, не пускает меня редактировать сайт.
В общем я смог докопаться вот до чего:

Таблицы имён зациклены, поэтому уход за верх №0 выведет отображение на низ №2. НО ТОКО если мы используем "положительные" значения регистра прокрутки 0-239. "Малые отрицательные" значения 240-255 зацикливают таблицу на саму же себя, причём вместе с палитрой (т. е. сверху она и выезжает), а в оригинале milk-nuts пихает в регистр как раз $F9-$FF. Более того, номинальное (когда никуда не падаем - стоим) значение регистра прокутки = $FF (это они сделали чтобы, храня в атрибутах спрайтов (а там ведь "Y - 1"!) кратные 16-и значения, иметь спрайты не на точку выше фона, а вровень. Поскольку они так "подровняли" фон, и вылезает этот 1 пиксел мусора даже при обычном стоянии (в PAL).

Решение проблемы мусорной строки витиевато:
Оставляем показываться таблицу №0, *НО* рисуем всё в таблицу №2 (разумеется, с горизонтальным зеркалированием) *И* выставляем регистр прокрутки в спокойном положении не на $FF, а на "максимальное положительное" $EF, что сведёт нас относительно $FF на 240 точек вниз - как раз на таблицу №2!

Проблема теперь у меня такая: оказывается (я-то долго не мог понять, почему я не могу переключить показываемую таблицу!) Famicom САМ переключает показываемую таблицу на ту, в которую произвелась запись через $2007!!!! А ведь игра-то печатает время и т. д., поэтому у меня каждый кадр таблица и выставляется на ту, куда печатаем.

А мне так нельзя, потому что чтоб мусор не въезжал, я по-любому должен задействовать прокрутку $E9-$EF, т. е. показывать не свою таблицу и по ней там крутиться. Единственный путь, который я вижу (может, сработает), это после всех записей в кадре выводить ещё 1 фиктивный символ в таблицу №0.
_________________
вот как-то рано поутру в пруду нашёлся полутруп


Последний раз редактировалось: Otter (Пн Апр 23, 2007 10:05 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
-=#Griever#=-
Гость





СообщениеДобавлено: Вт Апр 03, 2007 3:53 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
До и после чего????

В смысле до и после прыжка =)
Что-то не пойму: если мусорная строка присутствует в оригинале всегда(и до и после прыжка),
и это не баг, а даже наоборот - фича игры, то зачем её убирать?
Вернуться к началу
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вт Апр 03, 2007 11:37 pm    Заголовок сообщения: Ответить с цитатой

Да нет, я ж объясняю, мусорная строка это палитра текущей таблицы имён, вылазящая, потому что и до и после прыжка регистр прокрутки разработчиками поставлен в $F9-$FF. Это (согласно документу Loopy-а) ошибка nes-а. Да и nes-а ли, имитаторов ли, надо чтоб её не было, раз уж во всех имитаторах она повторяется. Где это видано, чтоб мусор был свойством игры Wink? Ну да ладно, читайте следующий позт.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Вт Апр 03, 2007 11:39 pm    Заголовок сообщения: Ответить с цитатой

Начнём с того, что я ошибся - не запись символа переключает таблицу, а запись в адрес $2006.

Фиктивная запись адреса на таблице №0 в $2006 (после всех печатаний в №2) не задерживает таблицу на №0 - она всё равно переводится на №2. Более того, если все стандартные записи в №2 *убрать*, а оставить токо эту фиктивную запись в №0, таблица всё равно переключается на №2.

Почему я сразу не допёр?!?! Если система по-левому переключает таблицы, на фиг пытаться по-левому переключить обратно?! Надо в каждом кадре не адрес записывать фиктивный, а напрямую писать в $2000 номер нужной таблицы 9)! Это действует!

Но метод отдаёт корявостью (к тому же появились мерцающие точки вверху в fceuxd), поэтому вопрос остаётся открытый.

----------
То есть как видим, моя гипотэза, что таблица переключается на ту, адрес на которой мы записываем в $2006, неправильная. Не могу понять, как он решает, *куда* переключиться, но понятно, что это происходит (не сразу) после записи в $2006.

Прочитал я 2 документа Loopy-а (skinny, skinnynt), но в них очень непонятно всё описано. Что это за битовые сопоставления, t, d????

АУ, гуруы nes-а??? - скажите, какими тонкостями обладает запись в $2005|6|7, и можно ли всё-таки как-то заставить его самого не переключать таблицу!?

----------
У меня подорзение, что $2005 тут тоже как-то задействован, так как при этой моей записи фиктивного адреса даже установка вертикального регистра в $5F (что должно ведь, какая бы таблица не показывалась, показывать пол-экрана пустым, пол-экрана уровень!) показывает ВЕСЬ чёрный экран.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость
Гость





СообщениеДобавлено: Ср Апр 04, 2007 2:53 pm    Заголовок сообщения: Ответить с цитатой

А почему ты эмуляторы называешь имитаторами?
Вернуться к началу
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Ср Апр 04, 2007 10:43 pm    Заголовок сообщения: Ответить с цитатой

Smile Ооой - да так круче звучит! Эта буква ль между гласными раздражает....

А слово эмулятор сродни слову симулятор, а их можно ещё называть имитаторами....
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Ср Апр 18, 2007 5:03 pm    Заголовок сообщения: Ответить с цитатой

Чо это за ТУПОСТЬ?

Во время vblank-а мы же можем писать в любое место таблицы имён. А когда происходит NMI, это как раз vblank. Стандартный его обработчик печатает, как и надо, символы очков и т. п. Но когда я сразу после печатания подставляю свою подпрограмму, которая тоже рисует в таблице имён, экран съезжает на фиг, как происходит если мы рисуем во время сканирования.

Просмотрел по шагам свою подпрограмму, name table viewer чётко показывает, что символы выводятся туда куда нужно, scanline всё это время "240". Но на следующем же кадре всё съезжает!
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2818

СообщениеДобавлено: Ср Апр 18, 2007 7:33 pm    Заголовок сообщения: Ответить с цитатой

Блин, я уже ничего не понимаю в этих диалогах Otter'а с самим собой! Surprised У меня только один вопрос, где обещаный суперхак с неплоходимыми паззлами?!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
org
Гость





СообщениеДобавлено: Чт Апр 19, 2007 1:03 am    Заголовок сообщения: Ответить с цитатой

А съезжает наверно всё потому что ты не сохраняешь регистры PPU 2000 и 2001 и не восстанавливаешь их в конце NMI.
Вернуться к началу
Otter



Зарегистрирован: 12.12.2006
Сообщения: 120
Откуда: Москва

СообщениеДобавлено: Пн Апр 23, 2007 1:58 am    Заголовок сообщения: Ответить с цитатой

АнС писал(а):
Блин, я уже ничего не понимаю в этих диалогах Otter'а с самим собой!


:huhu:
Да я и рад бы не с самим собой, да никто не помогает.

Отчитаюсь по прогрессу.... Ассемблерные изменения, которые ещё можно будет реализовывать, я НАДЕЮСЬ, никакие мне на мозг больше не придут, вроде всё уж чо можно подправил Surprised.

А вот уровни: токо 3 дня назад обнаружил ТАКУЮ ошибку в одном, что весь он чуть ли не вылетал в трубу! Пришлось воще делать новый уровень. Я хочу в общем-то сделать так. Когда хотя бы 10 дней постоянного обращения к игре я не буду обнаруживать ошибки, можно будет считать, что всё чо надо исправил, и выкладывать.

Если ведь я выложу неисправленные уровни - все их пройдут, не решая задуманную задачу (раз её можно обойти), и ВСЁ - пополнят свой "список пройденных рыг", и уже не заставишь проходить новую версию Smile. А "давать кому-то на тестирование" - вряд ли; пока разберутся, так, чтоб мизерные ошибки видеть, пройдут ещё месяцы.. Я освоил техники своих последних уровней токо собственно после 2'-ух лет их придумывания.

А насчёт "обещанный". Вроде и тея-то упрекают за "обещанные переводы" порой, странно, что ты это же делаешь. Я не *обещал* тода-то и тода-то, а говорил, что надо ждать, когда полоса ошибок в уровнях пройдёт. Она до сих пор идёт. Но я уже практически все мелкие детали уровней должен был покрыть, вряд ли она долго продлится.
_________________
вот как-то рано поутру в пруду нашёлся полутруп
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Экстремальный ромхакинг Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group