| Разработка и ромхакинг > Разработка игр |
| [ZX Spectrum] Диктатор (политическая стратегия) - порт на NES (Famicom, Денди) |
| << < (2/6) > >> |
| Arigato:
В оригинале русская К отличается от английской, так что пока оставил. Если не будет хватать места под графику, то можно будет такие буквы тоже исключить. Ё не нужна, она не используется. Ъ Ь знаки, естественно, нужны, они точно будут в текстах. Потенциальные кандидаты на исключение: [ ] { } | \ ^ & @ ~ © - 11 символов. Оптимизация букв: К, к, с (малая русская с в оригинале отличается от английской, но их можно объединить), З (можно использовать цифру 3), Ч (цифра 4), Ь (английская b) - еще 6 символов. В крайнем случае английский алфавит можно урезать до минимума, так как игра на 99% выводит только русский текст. Но пока с графикой нет определенности. Либо брать графику из оригинала, но она для NES сильно примитивная, либо рисовать свою новую графику. Если брать оригинальную, то для нее места точно хватит. |
| Guyver(X.B.M.):
А можно сперва нарисовать оригинальную, а потом если что улучшить? Если что я готов порисовать новую, времени полно... |
| Arigato:
--- Цитата: Guyver(X.B.M.) от 25 Май 2023, 13:59:48 ---А можно сперва нарисовать оригинальную, а потом если что улучшить? --- Конец цитаты --- Ну скорее всего по такому пути и придется идти. Графику добавить не проблема, главное каркас игры создать. Вообще в подобной игре спрайты не особо нужны, ну или их будет совсем по минимуму. А потому можно обе таблицы тайлов использовать для фоновой графики, продублировав ту часть, где буквы. И в нужный момент включать вывод из первой или второй таблицы в зависимости от того, что именно хотим в данный момент нарисовать. В итоге под графику куча свободного места. |
| Guyver(X.B.M.):
Графика в формате NES. Не знаю много ли там её ещё :neznayu: |
| Arigato:
Добавил графику и немного ее раскрасил: Вот так это выглядит в эмуляторе NES: Для вывода всего этого безобразия написал отдельные процедуры и макросы к ним. В итоге файл main.asm, который все это выводит на экран, выглядит достаточно просто и понятно: --- Код: ---.segment "CODE" .proc main _COLOR 0 _GOTOXY #9, #12 _PRINT hello1 _GOTOXY #9, #14 _PRINT hello2 _GOTOXY #8, #4 _PRINT peasant _GOTOXY #8, #5 _PRINT peasant + 5 _GOTOXY #14, #4 _PRINT landlord _GOTOXY #14, #5 _PRINT landlord + 5 _COLOR 2 _GOTOXY #26, #4 _PRINT dollar _GOTOXY #26, #5 _PRINT dollar + 4 _GOTOXY #26, #6 _PRINT dollar + 8 _COLOR 1 _GOTOXY #20, #4 _PRINT army _GOTOXY #20, #5 _PRINT army + 5 _GOTOXY #2, #4 _PRINT police _GOTOXY #2, #5 _PRINT police + 4 _VBLANK _SCROLL 0, 0 _SCREEN_ON @loop: JMP @loop .endproc .segment "RODATA" hello1: .byte "Hello, World!", $ff hello2: .byte "Привет, Мир!", $ff police: .byte $c3, $c4, $c5, $ff .byte $d3, $d4, $d5, $ff peasant: .byte $a3, $a4, $a5, $a6, $ff .byte $b3, $b4, $b5, $b6, $ff landlord: .byte $a7, $a8, $a9, $aa, $ff .byte $b7, $b8, $b9, $ba, $ff army: .byte $ab, $ac, $ad, $ae, $ff .byte $bb, $bc, $bd, $be, $ff dollar: .byte $a0, $a1, $a2, $ff .byte $b0, $b1, $b2, $ff .byte $c0, $c1, $c2, $ff --- Конец кода --- Макрос _COLOR для выбора палитры пока что не работает, палитры не переключаются. Буду позже с этим разбираться, как его прикрутить к процедуре print, которая выводит на экран строку. Добавлено позже: Стартовый экран готов: |
| Arigato:
Добавлено стартовое меню выбора сложности. В оригинальной игре уровень сложности не настраивался, в варианте для NES будет три уровня, влияющие на баланс в игре: Ну и главное, что процедура выбора элемента меню универсальная. Она же будет использоваться в игре для диалога с пользователем. Пока не решил как лучше сделать вопрос, где требуется два ответа: да / нет. Либо также выбирать указателем, либо кнопками: B - нет, A - да. В оригинале на ZX клавиша D означала да, а любая другая - нет. Текущий вариант прикрепил к сообщению. |
| Guyver(X.B.M.):
Кнопками будет плохо, можно ошибиться. Я в своей игре сделал кнопками, а потом заменил на курсор. |
| Sharpnull:
Arigato, не тестируйте в мусорном VirtuaNES, используйте Mesen. В коде попадаются длинные записи как STA $0012 вместо STA $12. Для заглушки IRQ можно поставить адрес (метку) конца NMI, где и так RTI. Незачем постоянно делать PHP/PLP. Информацию лучше не располагать на краю экрана (8 пикселей слева и справа), хотя это видно для большинства телевизоров, но не всегда (https://www.nesdev.org/wiki/Overscan#For_game_developers) и это не красиво. В теме по 6502 уже написал, что нужно записывать палитру в VBlank всегда чтобы не было артефактов (UPD: вы уже сделали), а как недавно узнал лучше ещё после этого сделать так: https://www.nesdev.org/wiki/PPU_registers#Palette_corruption. Чтение контроллера без поддержки порта расширения Famicom и лишняя инструкция, хотя код почти как из https://www.nesdev.org/wiki/Controller_reading_code, вот так лучше: --- Код: ---JOYPAD1 = $4016 buttons = $11 lda #$01 ; While the strobe bit is set, buttons will be continuously reloaded. ; This means that reading from JOYPAD1 will only return the state of the ; first button: button A. sta JOYPAD1 sta buttons lsr a ; now A is 0 ; By storing 0 into JOYPAD1, the strobe bit is cleared and the reloading stops. ; This allows all 8 buttons (newly reloaded) to be read from JOYPAD1. sta JOYPAD1 loop: lda JOYPAD1 and #%00000011 ; ignore bits other than controller cmp #$01 ; Set carry if and only if nonzero rol buttons ; Carry -> bit 0; bit 7 -> Carry bcc loop --- Конец кода --- |
| Lunar Laser:
--- Цитата: Arigato от 28 Май 2023, 02:03:29 ---Добавлено стартовое меню выбора сложности --- Конец цитаты --- Сочетание цветов фона и тона слишком кислотное. Обведите буквы чёрной обводкой в пиксель толщиной. ИМХО, будет лучше смотреться. Добавлено позже: Дизайн верхней части буквы "К" делает визуально слишком большим промежуток между "К" и "Т". |
| Arigato:
--- Цитата: Sharpnull от 28 Май 2023, 15:19:56 ---В коде попадаются длинные записи как STA $0012 вместо STA $12. --- Конец цитаты --- У меня везде вроде бы обращение по меткам идет, то есть сам компилятор должен подставлять адрес. Но надо код еще раз просмотреть. Сегодня выявил несколько ошибок, связанных с тем, что еще не привык каждый раз начинать числа с решетки #. --- Цитата: Sharpnull от 28 Май 2023, 15:19:56 ---Информацию лучше не располагать на краю экрана (8 пикселей слева и справа) --- Конец цитаты --- Я заметил, что впритык к краю экрана выглядит не очень, а в режиме PAL вообще чуть-чуть (пару пикселей) обрезается. Проблему тут в том, что в ZX Spectrum ширина экрана такая же, но там есть бордюр, который эту проблему решает. Придется текст переписывать, чтобы уменьшить его ширину. --- Цитата: Sharpnull от 28 Май 2023, 15:19:56 ---Чтение контроллера без поддержки порта расширения Famicom и лишняя инструкция --- Конец цитаты --- Если уж гнаться за каждой инструкцией, тогда чтение контроллера лучше не выносить в подпрограмму, а вставить прямо в NMI, чтобы избежать лишнего вызова и возврата. |
| Lunar Laser:
--- Цитата: Lunar Laser от 28 Май 2023, 16:04:33 ---Дизайн верхней части буквы "К" делает визуально слишком большим промежуток между "К" и "Т". --- Конец цитаты --- Вообще можно взять побитно стандартный спектрумовский (игра ведь со Спектрума - чего бы не дать пасхалку) системный шрифт 8х8 с типовой русификацией для букв "Д" и "И". Отмасштабировать его в нужное число раз и так сделать заставку "Диктатор", дав также чёрную обводку по крайнему пикселю. Добавлено позже: PS Хотя, если увеличивать шрифт 8x8 в 4 раза - слово "ДИКТАТОР" займёт все 256 пикселей. :-( |
| Arigato:
--- Цитата: Lunar Laser от 28 Май 2023, 16:04:33 ---Сочетание цветов фона и тона слишком кислотное. --- Конец цитаты --- Сделал палитру потемнее, теперь так: Цвета еще сильно от эмулятора зависят: Обводку сделать или букву перерисовать не получится, так как сейчас эта надпись весьма компактно легла на таблицу тайлов: А любые изменения приводят к увеличению количества необходимый тайлов. В любом случае это не то, чем сейчас стоит озабочиваться. |
| Lunar Laser:
Смутно припоминаю, что в нулевых в электронной спековской прессе использовался шрифт, уменьшенный в 2 раза. Возможно, что уши растут отсюда: https://zxpress.ru/book_articles.php?id=29 Нашёл только это. Что скажешь? Как тебе такое Илон Маск Arigato? Добавлено позже: --- Цитата: Arigato от 28 Май 2023, 16:41:33 ---Сделал палитру потемнее, теперь так: --- Конец цитаты --- Ага, вроде тоже симпатично. Добавлено позже: --- Цитата: Lunar Laser от 28 Май 2023, 16:42:16 ---Смутно припоминаю, что в нулевых в электронной спековской прессе использовался шрифт, уменьшенный в 2 раза. Возможно, что уши растут отсюда: --- Конец цитаты --- Т.е. в таком шрифте, увеличенном в 4 раза, слово "ДИКТАТОР" займёт, по идее, 128 пикселей, + 16 пикселей на обводку справа и слева чёрным, итого: 144 пикселя по идее. По высоте, при этом, слово не займёт более 32 пикселей. |
| Lunar Laser:
Я абсолютно не дизайнер и не художник. Наляпал в GIMP'е, которым не умею пользоваться. Просто, как пример, что даёт визуально добавление чёрного цвета. Добавлено позже: Жёстче, чётче, по-волевому. Даже если к изначальному, "кислотному", варианту. |
| Lunar Laser:
Лучше даже так - параллельные линии одинаковой длины. |
| Arigato:
Эта надпись взята из оригинальной игры (русифицированной) - https://www.emu-land.net/forum/index.php/topic,88095.msg1562948.html#msg1562948 А потому переделывать ее не буду. Где возможно, надо передать дух оригинала. |
| Lunar Laser:
--- Цитата: Arigato от 28 Май 2023, 17:42:49 ---Эта надпись взята из оригинальной игры (русифицированной) - https://www.emu-land.net/forum/index.php/topic,88095.msg1562948.html#msg1562948 А потому переделывать ее не буду. Где возможно, надо передать дух оригинала. --- Конец цитаты --- Тогда может быть оставить её чёрный цвет, а цвета букв сделать цветами фона? Разместить эти цвета косыми параллелограммами на фоне? При чёрном цвете надписи. Добавлено позже: ИМХО, что-то строго-чёрное в названии игры, которая называется "ДИКТАТОР" должно быть. Или в тоне, или в обводке. А цвет можно давть фоном. Добавлено позже: --- Цитата: Arigato от 28 Май 2023, 17:42:49 ---Где возможно, надо передать дух оригинала. --- Конец цитаты --- Разрешение будет 256*240? |
| Yoti:
--- Цитата: Lunar Laser от 28 Май 2023, 17:29:11 ---Просто, как пример, что даёт визуально добавление чёрного цвета. --- Конец цитаты --- Хрень какая-то. |
| Arigato:
--- Цитата: Lunar Laser от 28 Май 2023, 17:52:03 ---Разрешение будет 256*240? --- Конец цитаты --- Крайние столбцы экрана нежелательно использовать, так как, в отличии от Спектрума, нет бордюра. То есть полезное горизонтальное разрешение ниже спектрумовского. По высоте тоже все 30 строк использовать не получится. Экран с приветственным словом переделал, добавив отступы от краев экрана. Но пришлось текст перекомпоновать, так как в исходном варианте он не умещается в строки по 30 символов: |
| Arigato:
Если есть желающие помочь с музыкой и звуковыми эффектами, будет реально полезно! :) Сам я максимум что смогу сделать, это такую же пищалку, как и на Спектруме. Для NES подобная музыка вообще не катит... Могу предоставить ноты из самой игры, то есть по ним можно написать основу и добавить каких-то эффектов, чтобы звучала не как пищалка по нотам. Также в игре есть достаточно сложные звуковые эффекты, их могу предоставить в аудиофайле, чтобы сделать на NES что-то похожее. Тут не столько важно точно повторить эффекты, сколько передать саму суть. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |