|
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 Заголовок сообщения: |
|
|
Можно не беспокоиться, я открою новую тему в разделе ромхакинг в России и ещё кое-где.
Я уже в принципе всё доделал, но практика показывает, что каждый день, как я обращаюсь к этой игре, ПОСТОЯННО нахожу в своих уровнях то одну, то другую ошибку . Надо подождать, чтобы эта полоса прошла. _________________ вот как-то рано поутру в пруду нашёлся полутруп
Последний раз редактировалось: Otter (Пн Апр 23, 2007 9:57 pm), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Вс Дек 31, 2006 3:52 am Заголовок сообщения: |
|
|
Ты бы дал кому-то свой хак на тестирование. Причём всё равно всех багов не откопаешь - особенно в таких паззлово-аркадных играх. Вон даже в Adventures of Lolo некоторые уровни можно пройти так, что у разработчиков волосы дыбом встали бы. |
|
Вернуться к началу |
|
|
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
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Вс Мар 18, 2007 2:57 pm Заголовок сообщения: |
|
|
Otter писал(а): | В адресах 723, F23, 1723, 1F23 хранится координата x в уровне. Но почему на её чтение и запись не срабатывает прерывание? Она ведь постоянно меняется!! |
Ты о каком прерывании? Бряк срабатывает.
Вообще, ты ставь бряк только на 723, на НЕС реальная оперативка - до 7FFh, потом она ещё три раза повторяется (зеркало).
Otter писал(а): | И в принципе, можно ли как-нито указать платформе выводить спрайт левее точки x = 0? Ведь вроде я в каком-то имитаторе видел левее отображаемого "экрана" полосу в 8 чёрных точек. Может она для этого? |
Нет, т.к. X спрайта - беззнаковое однобайтовое число, т.е. оно принимает только положительные значения от 0 до FF. |
|
Вернуться к началу |
|
|
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 ответить ложной информацией, но вы ему не поддавайтесь ]
В общем сморите:
Я понял, что байты, выезжающие сверху, это не что иное, как последние 32 байта текущей - $2000-$23FF (или текущей отражённой - $2800-$2BFF) таблицы имён. Заменить их на пробелы - значит запортить палитру уровня.
По идее, когда в текущий момент отображается таблица №2, сверху должны вылезать куски таблицы №0, ведь суть наличия 4-ёх таблиц в том, чтоб при прокрутке за конец одной - вылезало начало соседней. Но почему вылезает палитра, не должно ли быть так, чтоб вылезала сама клеточная карта, расположенная чуть ранее палитры?
И какая таблица тогда должна выезжать, если мы уходим за самый верх таблицы №0?
--------------------
В любом случае, наверно мне можно было бы избежать этого мусора, если переключить mirroring на горизонтальное, включить на отображение таблицу №2, а в палитру таблицы №0 (которая тогда будет выезжать) записать пробелы.
Но у меня не получается поставить таблицу №2! Я поднимаю бит 2 (первые 2 бита отвечают ведь за номер таблицы) во всех операндах перед записями в $2000, а в name table viewer-е у меня упорно включается таблица №0!! _________________ вот как-то рано поутру в пруду нашёлся полутруп |
|
Вернуться к началу |
|
|
Djinn RRC2008
Зарегистрирован: 16.03.2004 Сообщения: 633 Откуда: Москва
|
Добавлено: Вс Апр 01, 2007 9:52 am Заголовок сообщения: |
|
|
По-моему, это баг эмулятора. На приставке ничего не выезжало. Вроде. |
|
Вернуться к началу |
|
|
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"(*
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"(*. 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-а ли, имитаторов ли, надо чтоб её не было, раз уж во всех имитаторах она повторяется. Где это видано, чтоб мусор был свойством игры ? Ну да ладно, читайте следующий позт. _________________ вот как-то рано поутру в пруду нашёлся полутруп |
|
Вернуться к началу |
|
|
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 Заголовок сообщения: |
|
|
Ооой - да так круче звучит! Эта буква ль между гласными раздражает....
А слово эмулятор сродни слову симулятор, а их можно ещё называть имитаторами.... _________________ вот как-то рано поутру в пруду нашёлся полутруп |
|
Вернуться к началу |
|
|
Otter
Зарегистрирован: 12.12.2006 Сообщения: 120 Откуда: Москва
|
Добавлено: Ср Апр 18, 2007 5:03 pm Заголовок сообщения: |
|
|
Чо это за ТУПОСТЬ?
Во время vblank-а мы же можем писать в любое место таблицы имён. А когда происходит NMI, это как раз vblank. Стандартный его обработчик печатает, как и надо, символы очков и т. п. Но когда я сразу после печатания подставляю свою подпрограмму, которая тоже рисует в таблице имён, экран съезжает на фиг, как происходит если мы рисуем во время сканирования.
Просмотрел по шагам свою подпрограмму, name table viewer чётко показывает, что символы выводятся туда куда нужно, scanline всё это время "240". Но на следующем же кадре всё съезжает! _________________ вот как-то рано поутру в пруду нашёлся полутруп |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Ср Апр 18, 2007 7:33 pm Заголовок сообщения: |
|
|
Блин, я уже ничего не понимаю в этих диалогах Otter'а с самим собой! У меня только один вопрос, где обещаный суперхак с неплоходимыми паззлами?! |
|
Вернуться к началу |
|
|
org Гость
|
Добавлено: Чт Апр 19, 2007 1:03 am Заголовок сообщения: |
|
|
А съезжает наверно всё потому что ты не сохраняешь регистры PPU 2000 и 2001 и не восстанавливаешь их в конце NMI. |
|
Вернуться к началу |
|
|
Otter
Зарегистрирован: 12.12.2006 Сообщения: 120 Откуда: Москва
|
Добавлено: Пн Апр 23, 2007 1:58 am Заголовок сообщения: |
|
|
АнС писал(а): | Блин, я уже ничего не понимаю в этих диалогах Otter'а с самим собой! |
:huhu:
Да я и рад бы не с самим собой, да никто не помогает.
Отчитаюсь по прогрессу.... Ассемблерные изменения, которые ещё можно будет реализовывать, я НАДЕЮСЬ, никакие мне на мозг больше не придут, вроде всё уж чо можно подправил .
А вот уровни: токо 3 дня назад обнаружил ТАКУЮ ошибку в одном, что весь он чуть ли не вылетал в трубу! Пришлось воще делать новый уровень. Я хочу в общем-то сделать так. Когда хотя бы 10 дней постоянного обращения к игре я не буду обнаруживать ошибки, можно будет считать, что всё чо надо исправил, и выкладывать.
Если ведь я выложу неисправленные уровни - все их пройдут, не решая задуманную задачу (раз её можно обойти), и ВСЁ - пополнят свой "список пройденных рыг", и уже не заставишь проходить новую версию . А "давать кому-то на тестирование" - вряд ли; пока разберутся, так, чтоб мизерные ошибки видеть, пройдут ещё месяцы.. Я освоил техники своих последних уровней токо собственно после 2'-ух лет их придумывания.
А насчёт "обещанный". Вроде и тея-то упрекают за "обещанные переводы" порой, странно, что ты это же делаешь. Я не *обещал* тода-то и тода-то, а говорил, что надо ждать, когда полоса ошибок в уровнях пройдёт. Она до сих пор идёт. Но я уже практически все мелкие детали уровней должен был покрыть, вряд ли она долго продлится. _________________ вот как-то рано поутру в пруду нашёлся полутруп |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|