Автор Тема: Сапёр  (Прочитано 707 раз)

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

Оффлайн DerKetzer

  • Пользователь
  • Сообщений: 38
    • Просмотр профиля
Сапёр
« : 18 Май 2021, 15:01:08 »
Моя реализация WINдовского сапера на NES

Онлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2187
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Сапёр
« Ответ #1 : 18 Май 2021, 15:17:54 »
Таймер при 999 сбрасывается до 900 и так до бесконечности. Почему гамовера нет при этом? ;) Был бы ещё выбор полей, маленького, большого и среднего - вообще бы круто было!

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4598
    • Просмотр профиля
Сапёр
« Ответ #2 : 18 Май 2021, 15:34:23 »
Скромное описание :) Почему поле не по центру? Цвета подобраны плохо (оранжевый на сером), а курсор лучше сделать из 4 спрайтов за пределами клетки, а не внутри, чтобы лучше смотрелось, типа такого:
Пара замечаний:
1. Чтобы не было такого глитча после включения игры, нужно палитру устанавливать всегда на VBlank, даже если выключен экран:
2. Чтобы не было такого скачка после нажатия Start, нужно ставить прокрутку PPU $2005 после использования PPU $2006 (Set the scroll last):
--------
UPD: Нашёл баг: если поставить флаг на клетку с цифрой, то открыть её не получится снова.
UPD2: Странный у вас код инициализации. В начале мусорный код после SEI и CLD: LDX $FF и TXS. Т. к. ниже уже правильный LDX #$FF и TXS.
Также может быть проблема из-за BIT $2002 ; BPL $C017. Как написано в http://wiki.nesdev.com/w/index.php/Init_code, состояние VBlank флага неизвестно, поэтому нужно добавить ещё один BIT $2002, хотя обычно ждут 2 раз (BIT $2002 ; BPL), но всё равно возможен пропуск первого ожидания и не пройдёт нужных 30 000 циклов. В Init code выше хорошо то, что после 2-го ожидания VBlank можно сразу установить палитры.
Мудрёный код очистки RAM.
« Последнее редактирование: 18 Май 2021, 17:14:00 от Sharpnull »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4327
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Сапёр
« Ответ #3 : 18 Май 2021, 17:01:24 »
Вообще не похож.

Оффлайн DerKetzer

  • Пользователь
  • Сообщений: 38
    • Просмотр профиля
Сапёр
« Ответ #4 : 18 Май 2021, 19:48:13 »
Спасибо, что позапускали игру. Поправлю что-нибудь. Моя первая программа на nes.
Вообще рад, что хватило энтузиазма ее сделать. Пока только 1 расклад в игре. Забыл включить случайный.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4598
    • Просмотр профиля
Сапёр
« Ответ #5 : 18 Май 2021, 20:10:44 »
Такую игру проще на C писать, так как не требуется скорости или специальных возможностей. Было бы проще реализовать устранение нулевых клеток, сейчас приходится много нажимать, когда попадаешь на 0. Учитывая, что NROM, можно в http://8bitworkshop.com, а их книга "Making Games For The NES" есть в сети.
Вообще рад, что хватило энтузиазма ее сделать
Надеюсь я смогу когда-нибудь доделать свою логическую игру для NES.

Оффлайн DerKetzer

  • Пользователь
  • Сообщений: 38
    • Просмотр профиля
Сапёр
« Ответ #6 : 18 Май 2021, 22:50:23 »
Такую игру проще на C писать
Хотелось использовать Assembler, ради развлечения. На Си было бы слишком просто.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 4598
    • Просмотр профиля
Сапёр
« Ответ #7 : 19 Май 2021, 04:17:27 »
Кстати, раз вы уложились в 8КБ PRG ROM, вы можете вместо 16 КБ сделать 8 КБ, если использовать NES 2.0 заголовок. Сегодня узнал, что у Galaxian 8 КБ PRG ROM, а из-за того, что iNES 1.0 не поддерживает 8 КБ, то приходилось делать overdump. Забавно, что на emu-land Galaxian (J).nes без указания overdump. Не считая 2 ревизий Galaxian, из лицензионных игр похоже нет размером 8 КБ, а из нелицензионных не меньше 5.
Есть только одна проблема, нет поддержки у FCEUX (последний коммит), puNES (последний коммит), Nestopia UE (декабрь 2020), BizHawk (работает только по контрольной сумме рома). Зато работает в Mesen и, ожидаемо, NintendulatorNRS.