alex_231
В смысле ты "поменяешь алфавит"? Ты хочешь сместить таблицу с кодов A=41...Z=5A на коды А=A0...Я=BF? (как-то сомнительно).
А вообще, подобные надписи формируются автоматически по таблице, по которой игрок выбирает буквы, то есть если в таблице поменять код, то при построении надписи будет отображаться новый символ, а не тот, который стоял в таблице до замены.
31. alex_231 - 19 Сентября, 2016 - 03:12:56 - перейти к сообщению
32. alex_231 - 19 Сентября, 2016 - 03:13:18 - перейти к сообщению
alex_231
И ещё: 1 048 576 - размер рома без заголовка.
И ещё: 1 048 576 - размер рома без заголовка.
33. Guyver - 19 Сентября, 2016 - 03:14:07 - перейти к сообщению
Guyver
"то при построении надписи будет отображаться новый символ, а не тот, который стоял в таблице до замены." - я про это и пишу, во многих-многих играх я это менял как положено, только в одной не смог, на денди... Во всех случаях это было не автоматически, было 2 таблицы, одна формировала сами буквы, другая задавала им соответствие...
"то при построении надписи будет отображаться новый символ, а не тот, который стоял в таблице до замены." - я про это и пишу, во многих-многих играх я это менял как положено, только в одной не смог, на денди... Во всех случаях это было не автоматически, было 2 таблицы, одна формировала сами буквы, другая задавала им соответствие...
34. alex_231 - 19 Сентября, 2016 - 03:14:32 - перейти к сообщению
alex_231
Вот пакер, анпакер.
Инструкция:
Декомпрессия:
Загрузить ром (без хедера), загрузить (из файла packs.txt - для рома без хедера) список адресов для распаковки (можно вручную ввести), нажать кнопку Decompress. В edit появится число - размер пакета в роме (максимальный размер пакета после запаковки). Рядом с программой появится папка с распакованным(и) файл(ом/ами).
Компрессия:
Нажать кнопку Compression, выбрать файл для запаковки, подождать, ввести имя для запакованного файла. После запаковки открыть ром и запакованный файл в hex-редакторе и скопировать пакет в ром, на место исходного (адрес и максимальный размер известны).
Замечание: ту часть графики, которая неиспользуется лучше всего забивать нулями - экономится место в пакете.
Вот пакер, анпакер.
Инструкция:
Декомпрессия:
Загрузить ром (без хедера), загрузить (из файла packs.txt - для рома без хедера) список адресов для распаковки (можно вручную ввести), нажать кнопку Decompress. В edit появится число - размер пакета в роме (максимальный размер пакета после запаковки). Рядом с программой появится папка с распакованным(и) файл(ом/ами).
Компрессия:
Нажать кнопку Compression, выбрать файл для запаковки, подождать, ввести имя для запакованного файла. После запаковки открыть ром и запакованный файл в hex-редакторе и скопировать пакет в ром, на место исходного (адрес и максимальный размер известны).
Замечание: ту часть графики, которая неиспользуется лучше всего забивать нулями - экономится место в пакете.
35. alex_231 - 19 Сентября, 2016 - 03:14:55 - перейти к сообщению
alex_231
Не знаю, мне ни разу такое не встречалось - всегда только одна таблица, которая выводится на экран.
Вот патч шрифта.
Не знаю, мне ни разу такое не встречалось - всегда только одна таблица, которая выводится на экран.
Вот патч шрифта.
36. Guyver - 19 Сентября, 2016 - 03:15:15 - перейти к сообщению
Guyver
спс
спс
37. alex_231 - 19 Сентября, 2016 - 03:18:22 - перейти к сообщению
alex_231
Хотя действительно, здесь эти таблицы разделены :blink: , но не переживай, таблица соответствий находится по адресу x1453D.
Хотя действительно, здесь эти таблицы разделены :blink: , но не переживай, таблица соответствий находится по адресу x1453D.
38. Guyver - 19 Сентября, 2016 - 03:18:43 - перейти к сообщению
Guyver
А скажи для европейки адрес какой вводить надо для шрифта? Американка шлак - выбора сложности нет, и второго режима игры тоже нет. Кто знает, что они там ещё навырезали...
BE8D9?
А скажи для европейки адрес какой вводить надо для шрифта? Американка шлак - выбора сложности нет, и второго режима игры тоже нет. Кто знает, что они там ещё навырезали...
BE8D9?
39. alex_231 - 19 Сентября, 2016 - 03:19:07 - перейти к сообщению
alex_231
x0BE8D9 - (без хедера) только с размером уже сам определишься ну и адреса таблиц скорее всего другие
x0BE8D9 - (без хедера) только с размером уже сам определишься ну и адреса таблиц скорее всего другие
40. alex_231 - 19 Сентября, 2016 - 03:19:39 - перейти к сообщению
alex_231
Ага, x14B56 - таблица соответствия для ввода имени.
Ага, x14B56 - таблица соответствия для ввода имени.
41. Guyver - 19 Сентября, 2016 - 03:20:11 - перейти к сообщению
Guyver
Эх, вот бы ещё сделать автоматом вставку в ром запакованной части, это же всего пару строк кода дописать ;о) А то приходится юзать каждый раз долбанный хекс редактор. Ужос...
Эх, вот бы ещё сделать автоматом вставку в ром запакованной части, это же всего пару строк кода дописать ;о) А то приходится юзать каждый раз долбанный хекс редактор. Ужос...
42. alex_231 - 19 Сентября, 2016 - 03:20:43 - перейти к сообщению
alex_231
Это сделано для того, чтобы контролировать размер запакованных данных. Вдруг после запаковки он не поместится в исходное место, тогда ром будет запорчен. Поэтому я всегда такие вещи вручную делаю.
А автоматизацию можно вводить только при перестройке рома (как в BL).
Это сделано для того, чтобы контролировать размер запакованных данных. Вдруг после запаковки он не поместится в исходное место, тогда ром будет запорчен. Поэтому я всегда такие вещи вручную делаю.
А автоматизацию можно вводить только при перестройке рома (как в BL).
43. Guyver - 19 Сентября, 2016 - 03:21:12 - перейти к сообщению
Guyver
Дык сделать проверку, запакованные данные больше - не вставлять ;о)
Алфавит теперь пашет как надо, ура! Прикол в том, что разрабы даже в алфавит вставили 1 символ по словарю, экономия вышла - целый байт! Вот блин там сидели оптимизаторы, блин ;о)))))))))))))))))
Дык сделать проверку, запакованные данные больше - не вставлять ;о)
Алфавит теперь пашет как надо, ура! Прикол в том, что разрабы даже в алфавит вставили 1 символ по словарю, экономия вышла - целый байт! Вот блин там сидели оптимизаторы, блин ;о)))))))))))))))))
44. Guyver - 19 Сентября, 2016 - 03:21:40 - перейти к сообщению
Guyver
Алекс, ещё не могу найти слова менюшек:
Time Score Player Enemy Angel [ACT] [SIM]
Даже если их рисовать графикой, то слово Score использует букву E от слова Time, т.е. полюбому нужна карта тайлов слов этих...
Алекс, ещё не могу найти слова менюшек:
Time Score Player Enemy Angel [ACT] [SIM]
Даже если их рисовать графикой, то слово Score использует букву E от слова Time, т.е. полюбому нужна карта тайлов слов этих...
45. Guyver - 19 Сентября, 2016 - 03:22:14 - перейти к сообщению
Guyver
А, всё, вроде нашёл всё...
А, всё, вроде нашёл всё...
46. Guyver - 19 Сентября, 2016 - 03:22:37 - перейти к сообщению
Guyver
Хм... Нашёл и перерисовал всё, кроме слова ENEMY, появляется при встрече с боссом.
Хм... Нашёл и перерисовал всё, кроме слова ENEMY, появляется при встрече с боссом.
47. alex_231 - 19 Сентября, 2016 - 03:22:58 - перейти к сообщению
alex_231
Но для такой проверки программа должна знать, какой размер был у изначального пакета, а эта информация нигде не содержится, а высчитывается только при распаковке.
Дай сохранение перед появлением надписи - посмотрю.
Но для такой проверки программа должна знать, какой размер был у изначального пакета, а эта информация нигде не содержится, а высчитывается только при распаковке.
Дай сохранение перед появлением надписи - посмотрю.
48. Guyver - 19 Сентября, 2016 - 03:23:44 - перейти к сообщению
Guyver
Вроде подключил все поинтеры, но на 1 блок не могу найти, на самый первый блок. Алекс, вот те сейв перед боссом, просто пройди вправо, и появится слово ENEMY, которое я не нашёл...
После победы над боссом мы появимся над городом и ангел будет нам давать инструктаж. Так вот - его фразы как раз из того блока, поинтеры на который я не нашёл. Его первые фразы про Филлмор и про то, что нужно вернуть в него мир и порядок... Это блок текста с 20077 до 21396. Весь остальной игровой текст я подключил и проверил, вроде. (ещё правда не все менюшки подключил, но там вроде трабл не должно быть...)
П.С.
Вроде подключил все поинтеры, но на 1 блок не могу найти, на самый первый блок. Алекс, вот те сейв перед боссом, просто пройди вправо, и появится слово ENEMY, которое я не нашёл...
После победы над боссом мы появимся над городом и ангел будет нам давать инструктаж. Так вот - его фразы как раз из того блока, поинтеры на который я не нашёл. Его первые фразы про Филлмор и про то, что нужно вернуть в него мир и порядок... Это блок текста с 20077 до 21396. Весь остальной игровой текст я подключил и проверил, вроде. (ещё правда не все менюшки подключил, но там вроде трабл не должно быть...)
П.С.
49. alex_231 - 19 Сентября, 2016 - 03:24:15 - перейти к сообщению
alex_231
Адрес поинтера первой реплики, которую говорит ангел после победы над боссом - x1C219
Адрес поинтера второй реплики (и последующих реплик инструктажа про стрелы и монстров), которую говорит ангел после победы над боссом (после нажатия кнопки в конце первой реплики) - x1C22C
Адрес поинтера заключительной реплики, которую говорит ангел после победы над боссом - x1C233
Да и остальные поинтеры разбросаны по коду подобным образом (грузятся в аккумулятор Y кодом A0), то есть можно ориентировочно искать поинтеры по последовательности "A0XXXX", где XXXX - поинтер.
Адрес поинтера первой реплики, которую говорит ангел после победы над боссом - x1C219
Адрес поинтера второй реплики (и последующих реплик инструктажа про стрелы и монстров), которую говорит ангел после победы над боссом (после нажатия кнопки в конце первой реплики) - x1C22C
Адрес поинтера заключительной реплики, которую говорит ангел после победы над боссом - x1C233
Да и остальные поинтеры разбросаны по коду подобным образом (грузятся в аккумулятор Y кодом A0), то есть можно ориентировочно искать поинтеры по последовательности "A0XXXX", где XXXX - поинтер.
50. alex_231 - 19 Сентября, 2016 - 03:24:42 - перейти к сообщению
alex_231
Офигеть, эти сволочи сделали то, чего я больше всего боялся:
надпись ENEMY пишется программой, в аккумулятор грузится код начала (0F из адреса x207B) и затем циклично он увеличивается на один, пока надпись не достигнет нужной длины.
Тут два варианта, либо в тайлсете рисовать надпись отдельно (в диапазоне 80-FF) и задавать начальный код в соответствии с новым тайлсетом, либо переписывать код программы, чтобы она делала надпись согласно принятому порядку построения надписей.
Офигеть, эти сволочи сделали то, чего я больше всего боялся:
надпись ENEMY пишется программой, в аккумулятор грузится код начала (0F из адреса x207B) и затем циклично он увеличивается на один, пока надпись не достигнет нужной длины.
Тут два варианта, либо в тайлсете рисовать надпись отдельно (в диапазоне 80-FF) и задавать начальный код в соответствии с новым тайлсетом, либо переписывать код программы, чтобы она делала надпись согласно принятому порядку построения надписей.
51. Guyver - 19 Сентября, 2016 - 03:25:12 - перейти к сообщению
Guyver
Спс. Тогда я просто "графику" нарисую... Так проще будет...
С ENEMY покончил + вроде сделал окончательную (очень на это надеюсь) версию шрифта... Попробую подключить оставшиеся поинтеры...
Спс. Тогда я просто "графику" нарисую... Так проще будет...
С ENEMY покончил + вроде сделал окончательную (очень на это надеюсь) версию шрифта... Попробую подключить оставшиеся поинтеры...
52. Guyver - 19 Сентября, 2016 - 03:26:07 - перейти к сообщению
Guyver
Алекс, тут такое дело, касается имени игрока...
Как видишь, после имени (это переменная) идёт пустое место, оно автоматом подставляется после имени и мешает сильно. Так как невозможно становится отделить имя знаками препинания. В игре во всех переменных такая оказия, ставится после них пустое место. Но с именем самая большая трабла. Что тут можно сделать? Или это глобальная настройка, и после этого все переменные будут без пробела потом? Глянь, а?
Алекс, тут такое дело, касается имени игрока...
Как видишь, после имени (это переменная) идёт пустое место, оно автоматом подставляется после имени и мешает сильно. Так как невозможно становится отделить имя знаками препинания. В игре во всех переменных такая оказия, ставится после них пустое место. Но с именем самая большая трабла. Что тут можно сделать? Или это глобальная настройка, и после этого все переменные будут без пробела потом? Глянь, а?
53. alex_231 - 19 Сентября, 2016 - 03:26:31 - перейти к сообщению
alex_231
Для того, чтобы программа не писала пробел после имени игрока нужно заменить 8 байт, начиная с адреса x8F5E (A9 20 9F 00 B0 7F E8 E8), 8-ю байтами EA. Только как это скажется на остальном тексте - не знаю.
Для того, чтобы программа не писала пробел после имени игрока нужно заменить 8 байт, начиная с адреса x8F5E (A9 20 9F 00 B0 7F E8 E8), 8-ю байтами EA. Только как это скажется на остальном тексте - не знаю.
54. Guyver - 19 Сентября, 2016 - 03:27:04 - перейти к сообщению
Guyver
Шпасибки, сейчас гляну... Позже: вроде всё ОК, работает!
П.С. Ещё не могу найти часть поинтеров, сейвы кину позже. Их вроде мало, штук 10 будет... А так всё, перевод закончен и вставлен.
Есть ещё 1 косяк, это когда в режиме карты летаешь гад городами, их названия высвечиваются. Похоже, они написаны отдельным шрифтом, или даже графикой. Надо найти. Тоже скину.
И ещё слово "гейм овер" надо найти и перерисовать...
Шпасибки, сейчас гляну... Позже: вроде всё ОК, работает!
П.С. Ещё не могу найти часть поинтеров, сейвы кину позже. Их вроде мало, штук 10 будет... А так всё, перевод закончен и вставлен.
Есть ещё 1 косяк, это когда в режиме карты летаешь гад городами, их названия высвечиваются. Похоже, они написаны отдельным шрифтом, или даже графикой. Надо найти. Тоже скину.
И ещё слово "гейм овер" надо найти и перерисовать...
55. alex_231 - 19 Сентября, 2016 - 03:27:34 - перейти к сообщению
alex_231
Хех, этот текст (названия городов) написан спрайтовыми надписями.
Начинаются они по адресу xECD9:
сначала идет байт-счетчик, определяющий количество спрайтов в надписи, затем данные спрайтов:
1-й байт - размер спрайта (четное - 8х8, нечетное - 16х16)
2-й байт - x - координата спрайта в пикселях
3-й байт - y - координата спрайта в пикселях
4-й байт - код тайла из видеопамяти (для городов используется диапазон x8000-xC000)
5-й байт - определяет страницу видеопамяти и палитру спрайта
Да, а шрифт для названий городов не пожат, лежит по адресу x2CE7F в роме.
Поинтеры на спрайты находятся по адресу xA7E1, с интервалом 2 байта (всего вроде 7 штук).
Хех, этот текст (названия городов) написан спрайтовыми надписями.
Начинаются они по адресу xECD9:
сначала идет байт-счетчик, определяющий количество спрайтов в надписи, затем данные спрайтов:
1-й байт - размер спрайта (четное - 8х8, нечетное - 16х16)
2-й байт - x - координата спрайта в пикселях
3-й байт - y - координата спрайта в пикселях
4-й байт - код тайла из видеопамяти (для городов используется диапазон x8000-xC000)
5-й байт - определяет страницу видеопамяти и палитру спрайта
Да, а шрифт для названий городов не пожат, лежит по адресу x2CE7F в роме.
Поинтеры на спрайты находятся по адресу xA7E1, с интервалом 2 байта (всего вроде 7 штук).
56. Guyver - 19 Сентября, 2016 - 03:28:00 - перейти к сообщению
Guyver
СПС, гляну...
Позже: с городами разобрался.
СПС, гляну...
Позже: с городами разобрался.
57. Guyver - 19 Сентября, 2016 - 03:28:21 - перейти к сообщению
Guyver
Алекс, а геймовер можно твоей прогой распаковать? Просто проиграй в начале рыцарем, слово и появится...
Алекс, а геймовер можно твоей прогой распаковать? Просто проиграй в начале рыцарем, слово и появится...
58. alex_231 - 19 Сентября, 2016 - 03:29:25 - перейти к сообщению
alex_231
Я пытался, только после третьей смерти рыцаря меня выбрасывало обратно к ангелу и он, "погрозив пальчиком", снова отправлял меня в бой, и так каждый раз. Я, наверно, жизней 30 потратил, но "геймовер" так и не увидел.
Я пытался, только после третьей смерти рыцаря меня выбрасывало обратно к ангелу и он, "погрозив пальчиком", снова отправлял меня в бой, и так каждый раз. Я, наверно, жизней 30 потратил, но "геймовер" так и не увидел.
59. Guyver - 19 Сентября, 2016 - 03:40:25 - перейти к сообщению
Guyver
Это надо делать в режиме битвы (выбирается в главном меню на заставке игры). А в режиме истории так не получится...
Это надо делать в режиме битвы (выбирается в главном меню на заставке игры). А в режиме истории так не получится...
60. alex_231 - 19 Сентября, 2016 - 03:41:04 - перейти к сообщению
alex_231
А, вон оно как
"Геймовер" написан тем же шрифтом(xD14B2), что и титры с помощью карты тайлов (x31D1A0), причём он хранится там же вместе с ними.
Только не пугайся, карта тайлов реально 40 кб весит после распаковки.
Да, и не забывай, что карта двухбайтовая и вторым байтом можно задавать палитру (байт должен быть кратен 4, тогда косяков не будет) и угол поворота (h40 - 90 градусов, h80 - 180 градусов, hC0 - 270 градусов).
А, вон оно как
"Геймовер" написан тем же шрифтом(xD14B2), что и титры с помощью карты тайлов (x31D1A0), причём он хранится там же вместе с ними.
Только не пугайся, карта тайлов реально 40 кб весит после распаковки.
Да, и не забывай, что карта двухбайтовая и вторым байтом можно задавать палитру (байт должен быть кратен 4, тогда косяков не будет) и угол поворота (h40 - 90 градусов, h80 - 180 градусов, hC0 - 270 градусов).