форум группы Chief-Net форум группы Chief-Net
Перевод приставочных игр и не только!
drako site Перейти на сайт группы     Наш чат      Помощь      Поиск      Пользователи


 Страниц (10): В начало « ... 2 3 4 5 [6] 7 8 9 10 »   

> Описание: АРХИВНАЯ ТЕМА 2006 года
Марат Супермодератор
Отправлено: 26 Октября, 2018 - 19:13:43
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Ну, MTE/DTE по-любому не сожмёт лучше хаффмана. Только если после DTE/MTE сжать ещё и хаффманом, может быть, будет толк.
 
 Top
Griever Пользователь
Отправлено: 27 Октября, 2018 - 21:26:58
Post Id


VIP


Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015  





Марат пишет:
Ну, MTE/DTE по-любому не сожмёт лучше хаффмана.

Не уверен. Я взял скрипт Battletoads & Double Dragon. Сжатие оригинальным Хаффманом дало 1495 байт экономии (вместе с деревом). А грубая прикидка инструментом CUE дала 2295 байт экономии на ~200 найденных сочетаниях. Если учесть ~800 байт на словарь, экономия с MTE будет около тех же 1495.

Но, видимо, даже в лучшем случае, коэффициенты сжатия примерно одинаковы. Если нужно ужаться процентов на 5, можно попробовать. Больше - нет смысла.
 
 Top
alex_231 Супермодератор
Отправлено: 28 Октября, 2018 - 01:09:02
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Ужать нужно 170 кб текста в 97 кб свободного места.
После использования МТЕ излишек составляет чуть больше 10 кб, после DTE - 7 кб, после Хаффмана - 6 кб.
Иного варианта, кроме кастрации скрипта, к сожалению, не вижу Недовольство, огорчение

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Mefistotel Администратор
Отправлено: 28 Октября, 2018 - 11:04:15
Post Id



Chief-Net


Покинул форум
Сообщений всего: 7041
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Может, у китайцев перенять смену маппера)?

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
alex_231 Супермодератор
Отправлено: 29 Октября, 2018 - 04:34:55
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Я честно пытался, но дальше логотипа Enix игра отказывается работать, так как не получается запрограммировать смену банка для блоков $C000 - $FFFF. В оригинальной игре там переключение идет между банками $0F и $1F, а после смены маппера я не смог заставить его переключаться, хотя у китайцев это переключение работает, его аналог в моем исполнении ничего не переключает Недовольство, огорчение

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Mefistotel Администратор
Отправлено: 30 Октября, 2018 - 00:06:44
Post Id



Chief-Net


Покинул форум
Сообщений всего: 7041
Дата рег-ции: Окт. 2014  
Откуда: МАГАДАН





Что скажут коллеги по цеху?

-----
"Перевод старых игр - отличная возможность понять, как устроены программы, подучить иностранный язык и поднять уровень владения родным. Ну и конечно, это просто возможность "общения" со своей любимой игрой детства." © Dimouse
 
 Top
Griever Пользователь
Отправлено: 30 Октября, 2018 - 21:57:34
Post Id


VIP


Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015  





Покажи хоть как пытался - дай версию рома, на которой застопорился.
 
 Top
alex_231 Супермодератор
Отправлено: 31 Октября, 2018 - 03:01:25
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Вот.
Переключение банков (рабочее) прописано по адресу x7FFAF, плюс по адресу x7F0C2 убрал обработку прерывания (хотя, возможно, зря), которое так же рушило процесс.
Переключение банков (не рабочее) - x7C9B4, чтобы его поймать, нужно ставить бряк на $6CC2.
Скачать файл: dum_expanded.zip
Скачан раз: 164


-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
alex_231 Супермодератор
Отправлено: 31 Октября, 2018 - 03:10:48
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





В данном маппере переключение банков производится записью номера слота в $8000 и номера банка в $8001, слоты и банки размером по 8 кб.
Слот $8000-$9FFF имеет номер h06, слот $A000-$BFFF - h07, это проверено и точно работает.
Слот $C000-$DFFF должен иметь номер h00, слот $E000-$FFFF - h01, у меня это не работает, но в китайском Dragon Quest VII переключает.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Griever Пользователь
Отправлено: 31 Октября, 2018 - 21:37:39
Post Id


VIP


Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015  





alex_231 пишет:
Вот.
Переключение банков (рабочее) прописано по адресу x7FFAF, плюс по адресу x7F0C2 убрал обработку прерывания (хотя, возможно, зря), которое так же рушило процесс.
Переключение банков (не рабочее) - x7C9B4, чтобы его поймать, нужно ставить бряк на $6CC2.


Ну, для начала,
CODE:
0x06 42 -> 52
0x07 00 -> F0

У китайского дампа ошибка в хедере, которая фиксится эмуляторным костылём .

До Эникса проходит. Ты знаешь, что делать дальше?
 
 Top
alex_231 Супермодератор
Отправлено: 31 Октября, 2018 - 23:53:16
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Дальше он в какой-то момент пытается переключить банк в слоте $C000-$FFFF с h1F на h0F, но я не могу его заставить это сделать с новым маппером.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Марат Супермодератор
Отправлено: 01 Ноября, 2018 - 19:43:42
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





alex_231 пишет:
В данном маппере переключение банков производится записью номера слота в $8000 и номера банка в $8001, слоты и банки размером по 8 кб.
Слот $8000-$9FFF имеет номер h06, слот $A000-$BFFF - h07, это проверено и точно работает.
Слот $C000-$DFFF должен иметь номер h00, слот $E000-$FFFF - h01, у меня это не работает, но в китайском Dragon Quest VII переключает.


Где ты это вычитал? Согласно https://wiki.nesdev.com/w/index.php/MMC3 ,
Слот $8000-$9FFF имеет номер R06, слот $A000-$BFFF - R07, как ты и пишешь, но
слот $C000-$DFFF также имеет номер R06, а слот $E000-$FFFF вообще непереключаемый и всегда закреплен за последним банком. Чтобы поменять слот $C000-$DFFF, надо писать что-то типа:
CODE:

LDA #$46
STA $8000
LDA #$XX
STA $8001

после этого предпоследний банк будет уже закреплен за слотом $8000-$9FFF,
а в слоте $C000-$DFFF будет тот банк, который мы выбрали.
 
 Top
Марат Супермодератор
Отправлено: 01 Ноября, 2018 - 19:47:14
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





alex_231 пишет:
Дальше он в какой-то момент пытается переключить банк в слоте $C000-$FFFF с h1F на h0F, но я не могу его заставить это сделать с новым маппером.

Разве последний банк можно переключать? Там же, по-моему, вектора прерывания находятся.
 
 Top
alex_231 Супермодератор
Отправлено: 02 Ноября, 2018 - 03:33:27
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Я это нигде не вычитывал, а увидел во время выполнения кода китайского рома.
И да, последний банк не должен быть переключаемым, но он переключается и в DW4 и у китайцев, я сам был в шоке, но как-то оно работает.
Можешь сам посмотреть на оригинальном роме DW4, поставив бряк на $6CAD.
Там до этой подпрограммы код читается из банка h1F, а после JSR уже из банка h0F.

У китайцев там немного не так, сейчас пересмотрел повнимательней:
при записи в $8000 байта h00 и в $8001 байта h00 происходит переключение всех банков, в слот $8000-$BFFF подключается банк $0000-$3FFF, а в слот $С000-$FFFF банк $7C000-$7FFFF,
а при записи в $8000 байта h00 и в $8001 байта h02 все банки переключаются на следующую страницу рома - в $8000-$BFFF - банк $80000-$83FFF, а в $C000-$FFFF - банк $FC000-$FFFFF.
А у меня это переключение почему-то не работает. Недовольство, огорчение

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Марат Супермодератор
Отправлено: 02 Ноября, 2018 - 08:03:03
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





С оригиналом понятно. Там маппер подключает либо первые 256 КБ, либо вторые. И последние банки, видимо, у них одинаковые или, по крайней мере, содержат прерывания и идентичный код. А в китайском клон mmc3, который тоже переключает страницу, но по 512 КБ. Теперь более менее понятно. Через регистр R0 выбираем первые или вторые 512 КБ, а через регистры R6, R7 нужный банк. Непонятно, правда, почему у тебя не работает. Буду дома попробую поэкспериментировать.
 
 Top
Марат Супермодератор
Отправлено: 02 Ноября, 2018 - 16:48:25
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Griever пишет:
Ну, для начала,
CODE:
0x06 42 -> 52
0x07 00 -> F0

У китайского дампа ошибка в хедере, которая фиксится эмуляторным костылём .


Вот же Гривер, оказывается написал причину, почему у тебя не переключается банк.
Надо именно эти значения записать в хедер, так как игра использует 245 маппер, клон mmc3.
И в мессадже лог, должна появиться надпись Mapper #: 245.
Если исправишь, то будут переключаться банки.
 
 Top
Griever Пользователь
Отправлено: 02 Ноября, 2018 - 22:31:38
Post Id


VIP


Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015  





alex_231 пишет:
Дальше он в какой-то момент пытается переключить банк в слоте $C000-$FFFF с h1F на h0F, но я не могу его заставить это сделать с новым маппером.

Нет. Скорректируй хедер и посмотри, что все нормально работает, включая экран Эникса.
Дальше виснет, потому что твой код в PRG RAM постоянно переключает нулевой банк, а не тот, который нужен для дальнейшего выполнения программы.
Полагаю, это твой код для тренировки.
 
 Top
alex_231 Супермодератор
Отправлено: 03 Ноября, 2018 - 01:03:58
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Ок, спасибо, что-то я про исправление маппера забыл совсем. Посмотрю, что получится.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
alex_231 Супермодератор
Отправлено: 06 Ноября, 2018 - 10:09:22
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Да, переключение заработало, теперь осталось нормально перепрограммировать переключение банков.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
alex_231 Супермодератор
Отправлено: 07 Ноября, 2018 - 10:04:09
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





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

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
alex_231 Супермодератор
Отправлено: 09 Ноября, 2018 - 04:55:14
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Вот прям не знаю, вроде бы, корректно переписал переключение, и переместил банки куда нужно и игра, вроде бы, запускается, но...
ни name table mirroring нормально не определяется, ни спрайты нормально не рисуются, а что самое паршивое - в произвольный момент времени игра может зависнуть из-за неожиданного прерывания, которое вылезает посреди процедуры переключения банков.
Плюс ещё в самом начале новый маппер свинью подкладывает и прерывания срабатывают совершенно не так как в оригинале.
Боюсь руками я это все-таки доделать не смогу, нужен тотальный дизасм и пересборка кода с нуля, но для меня это непосильная задача Недовольство, огорчение


-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Griever Пользователь
Отправлено: 09 Ноября, 2018 - 22:28:08
Post Id


VIP


Покинул форум
Сообщений всего: 452
Дата рег-ции: Июнь 2015  





alex_231 пишет:
в произвольный момент времени игра может зависнуть из-за неожиданного прерывания, которое вылезает посреди процедуры переключения банков.

Попробуй SEI в начале переключения с CLI в конце.
 
 Top
alex_231 Супермодератор
Отправлено: 10 Ноября, 2018 - 04:18:48
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Там какое-то прерывание, которое игнорирует флаг I, он установлен, но оно все равно срабатывает.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Марат Супермодератор
Отправлено: 10 Ноября, 2018 - 06:53:10
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Отследи адрес прерывания и посмотри в какой ячейке векторов прерываний он лежит. Скорее всего это прерывание по кадрам.
 
 Top
alex_231 Супермодератор
Отправлено: 12 Ноября, 2018 - 01:56:11
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Да, это NMI, но это мне ничем не поможет, я не особо понимаю, как на него можно повлиять.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Марат Супермодератор
Отправлено: 12 Ноября, 2018 - 15:01:32
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





Оно и не должно негативно влиять на игру. Это происходит во время переключения любого банка или в последнем слоте?
 
 Top
alex_231 Супермодератор
Отправлено: 13 Ноября, 2018 - 03:08:06
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Оно случайно попадает в любое переключение банка и там где-то при работе со стэком нарисовывается косяк, из-за которого RTI идет не туда куда нужно (только сейчас понял, что происходит).
Буду ковырять.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
alex_231 Супермодератор
Отправлено: 13 Ноября, 2018 - 03:50:27
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Ага, это победил, но со спрайтами всё-равно косяк.
Почему-то после смены маппера первый слот PPU ($0000-$0800) постоянно переключается туда сюда, между первой и второй страницей памяти, при этом сама видеопамять не изменяется, но в окне PPU Viewer видно как меняются тайлы. Хотя в оригинале ничего такого не было.

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Марат Супермодератор
Отправлено: 13 Ноября, 2018 - 07:35:36
Post Id



Chief-Net


Покинул форум
Сообщений всего: 2145
Дата рег-ции: Окт. 2014  
Откуда: Казахстан





А ты оригинальный код переключения банков удалил везде?
 
 Top
alex_231 Супермодератор
Отправлено: 13 Ноября, 2018 - 10:08:36
Post Id



Chief-Net


Покинул форум
Сообщений всего: 4687
Дата рег-ции: Окт. 2014  





Да, я его везде заменил на свой.
Хотя сомнительно, что переключение банков ROM влияет на индексацию страниц памяти PPU.
Тут вообще очень странно: в простое (когда игрок не трогает кнопки геймпада) работает только отрисовка спрайтов и вывод звука (изменения фона нет), и в некоторый момент времени прерывание NMI (одно из многих) переключает в слот $0000-$07FF тайлы из PPU $0800-$0FFF, а через какое-то время (всегда разное) основная программа (так же как и NMI - в один из многих проходов) возвращает туда правильные тайлы.
И я не могу пока отследить, кто это делает (запись в какой адрес).

-----
Делая выбор, отбрось простое решение и выбери правильное...
 
 Top
Страниц (10): В начало « ... 2 3 4 5 [6] 7 8 9 10 »
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Переводы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



> Похожие темы: Dragon Warrior 4 [NES]
Темы Форум Информация о теме Обновление
Динамическое создание объектов
...
Программирование Ответов: 0
Автор темы: alex_231
24 Июля, 2015 - 11:15:55
Автор: alex_231
Chrono Trigger [SNES]
АРХИВНАЯ ТЕМА 2005-2012 годов
Переводы Ответов: 0
Автор темы: alex_231
10 Августа, 2016 - 10:11:26
Автор: alex_231
Final Fantasy III (NES)
...
Прохождение... Ответов: 0
Автор темы: alex_231
24 Июля, 2015 - 12:59:57
Автор: alex_231
Поинтеры Monster World IV
...
Архив Ответов: 0
Автор темы: alex_231
16 Августа, 2015 - 05:12:08
Автор: alex_231
Возвращение
...
Архив Ответов: 0
Автор темы: alex_231
24 Июля, 2015 - 11:20:32
Автор: alex_231
 

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®