Разработка и ромхакинг > Разработка игр

[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 что-то похожее. Тут не столько важно точно повторить эффекты, сколько передать саму суть.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии