Автор Тема: Castlequest/Castle Excellent  (Прочитано 12544 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #120 : 30 Июль 2021, 03:11:47 »
В главном цикле с CPU $82A2:
В районе адресов 8200-ВВ00 очень сложная паутина адресаций обработки спрайтов и героя относительно спрайтов. Я уже пытался туда однажды залезть в надежде вынуть массив адресаций  и разбить код по банкам, в результате начал переделывать игру заново. Этот участок до сих пор геморроем мне мешает нормально раскидать по банкам код. Там используются все типы адресации начиная с простых jsr и jmp включая смещения по х и смещения относительно адресов байтов zero, так же множество beq bne и тому подобных, и заканчивая изменением адресации стека, путём вытаскивания адреса, изменения относительно условий игры и помещения обратно в стек и уже по окончании функции возврат на уже изменившийся адрес.
Там весь код взаимосвязан, и смещение кода даже на байт это тот ещё геморрой.
Нужно отдать должное разработчикам, сжимать код для экономии места они умели неимоверно чего только стоют данные адресации и и алгоритм сжатия карты игры.

Добавлено позже:
А что по поводу RAM в Nes 2.0 ? Какую выбирать нужно?

Добавлено позже:
Действительно стоющим было бы реализовать изменение кадров спрайтов путём смены 1го банка спрайтов, нежели процессор бесконечно переписывает 512 байт спрайтов игры. Что высвободило бы довольно много времени
работы процессора. Но пока это лишь не реализованная задумка.
« Последнее редактирование: 30 Июль 2021, 03:27:40 от Миха42 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #121 : 30 Июль 2021, 03:56:00 »
А что по поводу RAM в Nes 2.0 ? Какую выбирать нужно?
SRAM 8KB вместе с Battery битом. Work RAM (PRG-RAM) и Save RAM (PRG-NVRAM/EEPROM) сделали отдельно, потому что, например, у MMC5 бывает 8КБ WRAM + 8КБ SRAM (игра L'Empereur). А Battery бит может стоять с нулевой SRAM, означая сохраняемую внутреннюю память маппера или перезаписываемый PRG-ROM.
У вас должен быть заголовок: 4E45531A080843080000700000000001.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #122 : 02 Август 2021, 17:41:59 »
Особенности модификации v1.4.5:
Добавлена возможность сохранения/загрузки игры в RAM картриджа

При сохранении текущей игры прежнее сохранение будет удалено, в том числе и к другой игре или к другой сложности игры если такое имелось ранее.
Для сохранения требуется 512 байт SRAM картриджа, ну или эмулятор   :)

что экран "Конец игре" (UPD: почему-то не "игры")
Изменил на "игры"  ;)

Заметил, что экран "Конец игре" (UPD: почему-то не "игры"), перед появлением главного меню, становится с неправильными тайлами.
Так и не понял в чём проявляется неправильность тайлов?!  :?
Имеете в виду покадрово в момент перехода на главное меню ловит кадр загрузки титульной картинки не отключая NMI чтоли прерывания?
Титульная картинка и прочие хранятся в CHR-ROM и импортируются от туда для отображения картинки на экране, а после уже грузятся сами тайлы в CHR для отображения этой самой картинки.
(Просто я в код возврата после смерти особо не лез, могли остаться какие-то недоработки от оригинальной версии)

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #123 : 02 Август 2021, 18:17:42 »
Так и не понял в чём проявляется неправильность тайлов?!
Посмотрел код. Это косяк оригинала. После конца игры происходит прыжок на Reset Handler, установка нуля в $2000 делает адрес BG = $0000, поэтому используются не те тайлы, после из-за разогрева PPU, который не нужен, эта кривая картинка длится 3 кадра. Я не знаю всегда ли, но SEI произошёл до прыжка, а установка $2000 = 0 не нужна, т. к. NMI тоже был отключен. Поэтому я сделал прыжок после разогрева PPU, для оригинальной игры (J) - CPU $FE81: JMP $8225 -> JMP $8236. Для вашего хака - CPU $C90A: JMP $E001 -> JMP $E012.
UPD: Ещё можно просто установить BG = $1000 в Reset Handler:
LDA #$10 ; Было LDA #$00
STA $2000
Только это будет на 3 кадра дольше.
« Последнее редактирование: 02 Август 2021, 18:27:59 от Sharpnull »

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #124 : 02 Август 2021, 18:58:11 »
Можно попробовать сделать Jmp на $E016
Пропустит SEI и установку 0 на $2000
В следующем обновлении исправлю.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #125 : 02 Август 2021, 19:19:18 »
Можно попробовать сделать Jmp на $E016
В стеке будет 2 байта, поэтому пропускать LDX #$FF | TXS нельзя. CLD можно пропустить (JMP $E013), игра скорее всего не использует (не знаю примеров использования, но флаг Decimal на NES можно использовать как глобальный флаг, есть CLD и SED, для проверки достаточно PHP | PLA | AND #$08).

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #126 : 02 Август 2021, 19:41:09 »
В стеке будет 2 байта, поэтому пропускать LDX #$FF | TXS нельзя. CLD можно пропустить (JMP $E013), игра скорее всего не использует (не знаю примеров использования, но флаг Decimal на NES можно использовать как глобальный флаг, есть CLD и SED, для проверки достаточно PHP | PLA | AND #$08).
При Reset да, пропускать нельзя.
Но при окончании игры и возврате в главное меню можно пропустить это всё, ведь все настройки уже установлены были ранее, можно было бы и ещё одну функцию пропустить настройки первого включения, но ни как, опять код переделывать нужно будет, но на главном меню пожалуй можно и пренебречь лишними циклами, на игру не влияет особо.
Или я в чём-то не прав?

Добавлено позже:
LDA #$10 ; Было LDA #$00
STA $2000
Только это будет на 3 кадра дольше.
Не туда глянул не в тот регистр управления. Тупанул я малость )) понял к чему вы клоните. Тайлы местами меняются кратковременно.

Добавлено позже:
CLD можно пропустить (JMP $E013), игра скорее всего не использует (не знаю примеров использования, но флаг Decimal на NES можно использовать как глобальный флаг, есть CLD и SED, для проверки достаточно PHP | PLA | AND #$08).
Флаг D в Dendy не используется вроде как, потому и очищается.

Добавлено позже:
Где и куда можно ткнуть на каком эмуляторе, чтоб покадрово смотреть отображение на экране?
А то пролистал по циклам работу ppu и cpu, но неправильного отображения так и не увидел.
И где всё-таки ткнуть галку чтоб на недокументированные инструкции бряк срабатывал?
« Последнее редактирование: 02 Август 2021, 21:21:06 от Миха42 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #127 : 02 Август 2021, 21:30:57 »
При Reset да, пропускать нельзя.
Но при окончании игры и возврате в главное меню можно пропустить это всё
Нельзя пропускать, у вас после каждой смерти будет стек расти на 2 байт, пока не случится переполнение.
Флаг D в Dendy не используется вроде как, потому и очищается.
Про Dendy не знаю, в NES можно работать с флагом Decimal, но он не выполняет свой функции для арифметических операций, поэтому его можно использовать как дополнительную память. На nesdev есть обсуждение, там заметили, что проверка медленная, но работать должно. Очищают флаг при запуске потому что так принято и для переносимости кода.
И где всё-таки ткнуть галку чтоб на недокументированные инструкции бряк срабатывал?
Mesen: Debugger > Options > Break Options > Break on unofficial opcodes, работает только при открытом отладчике. В FCEUX это вроде Break on Bad Opcodes в отладчике.
Где и куда можно ткнуть на каком эмуляторе, чтоб покадрово смотреть отображение на экране?
Mesen, в отладчике F8 или кнопка наверху пропускает кадр. Event Viewer тоже полезен.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Re: Castlequest/Castle Excellent
« Ответ #128 : 02 Август 2021, 22:03:48 »
Нельзя пропускать, у вас после каждой смерти будет стек расти на 2 байт, пока не случится переполнение.
Не знал что TXS помимо указания вершины стека ещё и счётчик уровней стека очищает, не помню чтоб об этом где-то в литературе упомяналось. Или сам указатель это и есть счётчик?
По части использования D флага в качестве дополнительного 1го бита памяти, так себе применение слишком много возни для его проверки, проще обнулить его и забыть про него.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #129 : 02 Август 2021, 23:13:34 »
Миха42, TXS просто устанавливает указатель на стек (S - Stack Pointer), очищать что-либо было бы затратно. Я не знаю что такое "счётчик уровней", S - это индекс размером 1 байт, который указывает на место RAM $0100-01FF и, в зависимости от инструкций, увеличивается, уменьшается или устанавливается. Про стек: https://wiki.nesdev.com/w/index.php?title=Stack.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #130 : 03 Август 2021, 19:32:30 »
Особенности модификации v1.4.6:
При взятии акваланга появляется значок акваланга в верхнем правом углу экрана на время его действия, по окончанию действия акваланга исчезнет. (Полезен при игре с отключенной музыкой)
Теперь при игре с бесконечными ключами, вместо количества ключей просто появляются имеющиеся ключи.

Ну и малость поковырялся в коде игры.

Оффлайн Terwilf

  • Пользователь
  • Сообщений: 14
    • Youtube
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #131 : 04 Август 2021, 22:54:10 »
Извините, не могли бы вы сделать версию этого хака с обычным русским шрифтом? Я хотел бы перевести меню на испанский язык, чтобы добавить вашу игру в свою коллекцию, но, не зная вашего языка, я не могу правильно интерпретировать написанное ;)

Извините за неудобства

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #132 : 05 Август 2021, 08:58:49 »
Что значит с обычным русским шрифтом?
Имеете в виду буквы Ж, Ы, Ш, Щ, Ф не использующие по 2 тайла?

Если же имеете в виду версию Unl. F&K то там с лёгкостью можно указать вторую версию шрифта в игре.
В файле Hack.txt указаны 2 банка в которые я собираю все настройки, указатели и массивы относящиеся к определённой версии игры. В CHR банках имеются 2 банка шрифтов, в банке с игрой нужно лишь в указателе выбора тайлов изменить банк шрифтов.

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

Оффлайн Еmsi-D

  • Пользователь
  • Сообщений: 545
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #133 : 05 Август 2021, 09:12:44 »
Миха42, молоток что продолжаешь развивать хацк. А удалось решить проблему с респавном предметов?
(В нек-рых комнатах, как известно, можно встрять, если например акваланг заюзать и больше он не появится в этом месте, или же кубик может раздавить прессом об потолок, и он тоже больше не отреспавнится никогда)

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #134 : 05 Август 2021, 09:36:03 »
Миха42, молоток что продолжаешь развивать хацк. А удалось решить проблему с респавном предметов?
(В нек-рых комнатах, как известно, можно встрять, если например акваланг заюзать и больше он не появится в этом месте, или же кубик может раздавить прессом об потолок, и он тоже больше не отреспавнится никогда)
Если внимательно прочитал тему, то должен знать, что данный вопрос я уже решил, но делать наск где заведомо будут убраны все данные фичи не планировал, разве что кубик что давит лифтом сдвинул правее в Unl F&K lvl2(легко).
В оригинальной версии в lvl1(очень легко) я уже писал, что сделал респаун аквалангов, в дальнейшем планирую сделать их респаун и в Unl F&K lvl1(очень легко) когда буду делать данную сложность для данной версии, но больше респаун аквалангов не буду ни где делать, по скольку следующие сложности идут уровня легко, нормально, терпимо, сложно и выше, а значит заведомо в данных сложностях облегчать игру уже не стоит, и даже в уровне легко уже стоит соблюдать требуемые правила игры что если предмет использован или сломался, то данного предмета в игре больше не должно быть.

Добавлено позже:
Скачай последнюю версию 1.4.6 и сам увидишь что в оригинальной версии (очень легко) такой проблемы с аквалангом нету.
« Последнее редактирование: 05 Август 2021, 09:44:53 от Миха42 »

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Re: Castlequest/Castle Excellent
« Ответ #135 : 05 Август 2021, 11:06:11 »
Миха42, чето злой какой то.. :-\
С чего бы?  :D :D  :D

Просто вопрос был ни к чему по части респа аквалангов, учитывая что я уже писал ещё к 1.4.3 что сделал сложность в которой акваланги ресаются. Ну и уточнил сейчас где ещё будет респ их со временем. Ну а более сложные версии на то они и более сложные чтоб не было всё столь просто и легко, что вполне разумно что там даже и не стоит делать их респ.  ;)

Добавлено позже:
Жаль что нет возможности постоянно изменять свой первый пост в теме, а то там бы выкладывал всегда обновлённую версию чтоб не искать по теме.  <_<

Оффлайн Еmsi-D

  • Пользователь
  • Сообщений: 545
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #136 : 05 Август 2021, 11:15:54 »
Миха42,
Жаль что нет возможности постоянно изменять свой первый пост в теме, а то там бы выкладывал всегда обновлённую версию чтоб не искать по теме.  <_<
Это надо модераторам пейсать, они могут редактить первый пост. А вообще да, странное ограничение какое-то.

« Последнее редактирование: 05 Август 2021, 12:22:03 от Еmsi-D »

Оффлайн Terwilf

  • Пользователь
  • Сообщений: 14
    • Youtube
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #137 : 06 Август 2021, 02:34:45 »
Извините, я выразился неправильно, я имел в виду стилизацию типографики, используемой в этой игре, так как этот шрифт, который делит каждый символ по вертикали, делает его запутанным для чтения, для меня, так как у меня нет опыта интерпретации русского алфавита.

Вот почему мой запрос был направлен на получение копии вашего хака с более обычной типографикой, чтобы лучше понять его, кстати, мой язык испанский, извините... :neznayu:

С другой стороны, я должен признаться, что не совсем понимаю, что вы имеете в виду, когда говорите "Unl. F&K", честно говоря, я не очень проницательный человек, мои цели очень просты, мне нравится ваша игра и, если возможно, я хочу адаптировать ее к своему языку ;)

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #138 : 06 Август 2021, 03:11:28 »
Terwilf, в игре используется 2 вида шрифта 7х8рх и 7х7рх
В оригинальной версии игры 7х7
В хаке Unlimited Fly & Key 7х8

Шрифты можно сменить. Для облегчения перевода вам проще использовать оригинальную версию игры с более читаемым стилем. В обеих версиях игры используется один и тот же код и текст, меняется только CHR-ROM с используемыми тайлами шрифта.

Оффлайн Terwilf

  • Пользователь
  • Сообщений: 14
    • Youtube
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #139 : 07 Август 2021, 07:18:34 »
На самом деле я был не в курсе новостей вашего проекта, извините, что потратил ваше время, я скачал последнюю версию вашего хака и могу прекрасно читать с новым шрифтом, спасибо за ваше доброе расположение! ;)

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #140 : 25 Декабрь 2021, 09:07:21 »
Что-то ни фига не въеду, имеется код
B6DD: A0 00       LDY #$00
B6DF: C8            INY
B6E0: B9 02 A0  LDA $A002,Y
B6E3: CD F7 07  CMP $07F7
B6E6: D0 F7       BNE $B6DF
B6E8: 88            DEY
B6E9: 98            TYA
B6EA: 0A            ASL
B6EB: 0A            ASL
B6EC: 0A            ASL
B6ED: 0A            ASL
B6EE: 0A            ASL
B6EF: 8D F5 07   STA $07F5
B6F2: A9 E0        LDA #$E0
B6F4: 18            CLC
B6F5: ED F5 07   SBC $07F5
B6F8: 8D F5 07   STA $07F5
По логике при каждом увеличении Y на 1 значение #Е0 должно уменьшаться на 20, по сути так и происходит, но вместо 20 отнимается 21, откуда взялся ещё 1, нифига понять не могу ведь перед вычитанием знак переноса очищается, а значит С должен быть равен 0 и по итогу должно выйти Е0-20-0=С0 но на выходе имеется ВF, в чём причина хз  :neznayu:

Добавлено позже:
Особенности модификации v1.5.0:
Теперь для каждой игры и разной сложности рекорд набранных очков сохраняется отдельно в RAM картриджа
Изменения в коде игры

Архив выложен в первом сообщении темы.
Так же выложил архив со всеми прежними версиями что выкладывал ранее.
« Последнее редактирование: 25 Декабрь 2021, 11:09:41 от Миха42 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #141 : 25 Декабрь 2021, 11:35:39 »
Что-то ни фига не въеду
Перед вычитанием используют SEC, а не CLC как для ADC.
LDA #$E0
SEC
SBC #$20
Регистр A будет равен #$C0.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #142 : 25 Декабрь 2021, 11:56:14 »
Так SEC же наоборот устанавливает знак переноса, а в инструкции SBC А-М-С => А, С
В итоге Е0-20-1=С0
В чём прикол заключается?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #143 : 25 Декабрь 2021, 12:49:51 »
В чём прикол заключается?
Это к создателям 6502, зачем-то нужно, может чтобы различать переполнение ADC и SBC. Вообще, Carry нужен для сложения или вычитания из 2+ байтных чисел, например 0x0201 - 0x0102 (первое лежит в RAM, второе - константа):

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #144 : 25 Декабрь 2021, 14:08:06 »
Это к создателям 6502, зачем-то нужно, может чтобы различать переполнение ADC и SBC. Вообще, Carry нужен для сложения или вычитания из 2+ байтных чисел, например 0x0201 - 0x0102 (первое лежит в RAM, второе - константа):
Не спорю что это вопрос уже к разработчикам.
Наврятли они уже будут что переделывать.

Что с ADC в 2байтах и больше при переполнении ставится С=1, соответственно при сложении второго этот 1 добавится. Или же если второго байта нету, то после сложения проверяем флаг С чтоб знать переполнили значение или нет.
Так же и с SBC вычли из первого, получили С=1 в случае если не хватило, при вычитании второго или более байта соответственно этот 1 тоже вычтется, в случае если нет второго и более байта то проверяем С чтоб узнать, в плюсе число осталось или же ушло в минус отняв больше чем можно было.

А так приходиться сперва дать этот 1 для С, а потом уже после вычитания проверять понадобился он или нет. Лишний код только писать заставляет. Бред какой-то.  :-\
Единственное применение это чтоб быстро выполнить E5+25-1F тогда да используя всего 1байтовые значения сложили и следом вычли воспользовавшись дополнительным 1битом после записав в соответствующий байт памяти, но в случае же если скажем E5+25-03 то тут уже этот 1 бит сверх 8бит так и останется в флаге и будет потерян при записи в 1байт памяти что тоже безсмыленно.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #145 : 26 Декабрь 2021, 10:22:40 »
Миха42, похоже эта логика (для SBC флаг Carry работает как Borrow) сделана просто ради оптимизации: вычитание в 6502 работает как сложение, нужно только инвертировать все биты вычитаемого. Здесь об этом написано:
Defining the borrow bit in this way makes the hardware implementation simple. SBC simply takes the ones complement of the second value and then performs an ADC.
"ones complement" (обратный код) и есть инверсия всех битов.
Здесь тоже про оптимизацию вместо удобства программиста:
This is a common trick, but most CPU designs would add explicit logic to invert the carry bit so the carry flag acts as expected. But the nmos 6502 is hyper-optimised to minimise transistor count so it skips that logic and pushes the burden onto the programmer.
« Последнее редактирование: 26 Декабрь 2021, 10:36:54 от Sharpnull »

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #146 : 26 Декабрь 2021, 12:52:36 »
Миха42, похоже эта логика (для SBC флаг Carry работает как Borrow) сделана просто ради оптимизации: вычитание в 6502 работает как сложение, нужно только инвертировать все биты вычитаемого. Здесь об этом написано:"ones complement" (обратный код) и есть инверсия всех битов.
Здесь тоже про оптимизацию вместо удобства программиста:
Теперь ясно. Оптимизация процессора с целью уменьшения количества транзисторов и сокращения затрат на производство, в ущерб удобству программиста.

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #147 : 18 Январь 2022, 09:04:46 »
v1.6.0:
Добавил возможность изменять язык/стиль текста в игре (в игре пока только Русский перевод игры)
Настройки игры теперь тоже сохраняются в RAM памяти картриджа.

Пришлось перелопатить довольно много кода в игре чтоб сделать возможность смены языка/стиля текста в игре, возможно мог наделать багов в игре по неосторожности, требуется тестирование игры, пока что мог проверил, вроде бы всё работает. На всякий случай удалять 1.5.0 версию пока не стал в первом посту.
Почти весь текст из игры теперь находится в одном банке, в одном месте, что очень сильно облегчает добавление переводов на другие языки в игре, достаточно лишь добавить новый текст перевода в банк с текстом и тайлы алфавита языка на который сделан перевод, и он будет доступен для выбора на главном экране игры.

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

Добавлено позже:
Накосячил малость со звуком, исправил, обновил ))

Добавлено позже:
Добавил заодно значок щита, появляется на время действия бессмертия, полезен при игре без музыки
« Последнее редактирование: 18 Январь 2022, 12:13:38 от Миха42 »

Оффлайн Миха42

  • Пользователь
  • Сообщений: 286
  • Пол: Мужской
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #148 : 18 Январь 2022, 17:20:26 »
Решил сделать анимацию при проигрыше. Но при попытке отрисовки спрайтов 8х16 он начинает брать спрайты с $1000 вместо $0000. При спрайтах 8х8 всё нормально берёт с $0000
Биты загнал:
00011010 в $2001
00110000 в $2000
Спрайты вывожу при помощи $4014

В самой игре всё работает норм при этом, разве что в $2000 задаётся ещё бит генерации NMI.
Что делаю не так?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5107
    • Просмотр профиля
Castlequest/Castle Excellent
« Ответ #149 : 18 Январь 2022, 17:35:24 »
при попытке отрисовки спрайтов 8х16 он начинает брать спрайты с $1000 вместо $0000
В режиме 8x16 тайлы берутся из обоих Pattern Table, если индекс тайла чётный - $0000, нечётный - $1000, а остальные биты указывают индекс 1-го тайла, а 2-й идёт следом, поэтому они выровнены по 2.