| Разработка и ромхакинг > Разработка игр |
| [ZX Spectrum] Диктатор (политическая стратегия) - порт на NES (Famicom, Денди) |
| (1/6) > >> |
| Arigato:
Диктатор 2.0 Вы являетесь диктатором Республики Ритимбания. В ваших руках вся полнота власти, вы вольны принимать любые решения. Правьте Республикой так, как считаете нужным. Вы можете заниматься как внутренними делами, так и внешней политикой. Однако помните, что от ваших решений зависит как судьба Республики, так ваша личная. Задача игры: продержаться на посту диктатора как можно дольше, вцепившись посиневшими пальцами в свое кресло. Однако ваш конец ничем не будет отличаться от конца любого другого диктатора... За основу была взята русифицированная версия оригинальной игры "Диктатор", причем прямиком с магнитофонной кассеты. Надо так понимать, что русифицировал ее Н. Родионов, но копирайт не сохранился. Были исправлены баги игры, добавлены всевозможные улучшения и существенно расширен контент. Изменения: 1. Добавлен выбор сложности игры (Легко, Нормально, Сложно). Нормально - как и было раньше. 2. Переработан движок, в результате чего добавление новых квестов стало проще. 3. Расширен контент более чем в два раза. 4. Новый блок решений - внешняя политика. 5. Исправлена серия ошибок оригинальной игры. 6. Можно получать ежемесячные доходы, а не только расходы (в оригинале доходы обнуляются). 7. Улучшения в интерфейсе. Скриншоты: В архиве из вложения образы для эмулятора. Вариант сборки вместе с эмулятором (не требует отдельной установки эмулятора для игры, запустить start.cmd): https://yadi.sk/d/K1peCZ_MezSzo Если эмулятор ZXMAK2 не запускается, то решение тут: 1. Возможно, потребуется установка Microsoft .NET Framework 2.0. 2. Установить DirectX 9 (замечу что DirectX 10/11 не включает в себя DirectX 9): http://www.microsoft.com/download/en/details.aspx?id=35 |
| Guyver(X.B.M.):
Эх, я в детстве постоянно в неё рубился. Одна из самых моих любимых игр... Вот бы кто её на NES запилил... |
| Sharpnull:
--- Цитата: Guyver(X.B.M.) от 13 Май 2023, 02:06:04 ---Вот бы кто её на NES запилил --- Конец цитаты --- С исходным кодом это не должно быть проблемой, особенно, если писать на C. Каркас для вывода графики, а остальное адаптация логики. Только мало у кого будет желание. UPD: Я так понял здесь Basic, программа Arigato показала какой-то код. Это бы сначала перевести на нормальный язык под современный компьютер. Впрочем, уже делали ремейк под C#: https://github.com/sfvicente/Dictator (логика погрязла под кучей абстракций) и C: https://github.com/kastian/Dictator (https://lowres.inutilis.com/programs/?lccpost=zXjafzcY90). |
| Arigato:
Да, Dictator написан практически полностью на BASIC, за исключением некоторых визуальных эффектов, которые записаны в машинных кодах. Но на эмуляторе ZX Spectrum игра отлично играется, перевод ее под NES разве что немного подтянет графику. Но так как игра квестово-текстовая, то это не столь принципиальное улучшение, графики там по минимуму. |
| g00db0y:
--- Цитата: Arigato от 12 Май 2023, 18:17:57 ---За основу была взята русифицированная версия оригинальной игры "Диктатор", причем прямиком с магнитофонной кассеты. Надо так понимать, что русифицировал ее Н. Родионов, но копирайт не сохранился --- Конец цитаты --- |
| Arigato:
g00db0y, а можно образ этой версии игры? Так как у меня стартовый экран отличался, возможно, и перевод другой. |
| Sharpnull:
На счёт ремейка на C (https://github.com/kastian/Dictator), там только вывод текста через ncurses, поэтому нет графики и звука. Смог скомпилировать через MSYS2 под Windows после некоторых изменений. После включения предупреждений компилятора обнаружил ошибку в assasination.c: --- Код: ---(ARMY->status == PEASANTS->status == LANDOWNERS->status == 'A') /* If all ritumbans people dislike you */ --- Конец кода --- Это одно из условий проигрыша и оно всегда false (т. е. уже не влияет). Человек пытался разом проверить состояние, но нужно: --- Код: ---((ARMY->status == 'A') && (PEASANTS->status == 'A') && (LANDOWNERS->status == 'A')) --- Конец кода --- Там всё равно код разгребать, например, везде int, не понятно сколько достаточно - 16 бит или 32. |
| Lunar Laser:
--- Цитата: Guyver(X.B.M.) от 13 Май 2023, 02:06:04 ---Эх, я в детстве постоянно в неё рубился. Одна из самых моих любимых игр... Вот бы кто её на NES запилил... --- Конец цитаты --- А существует ли какой-нибудь кросс-компилятор Бейсика на PC для NES? Добавлено позже: А то вопрос шире, чем портирование одной игры. На Спектруме на Бейсике можно найти и другие экономические стратегии, которые можно (?) портировать. |
| SPOT:
На самой NES есть BASIC)) |
| Lunar Laser:
--- Цитата: SPOT от 22 Май 2023, 08:30:31 ---На самой NES есть BASIC)) --- Конец цитаты --- Есть вопросы по функционалу Бейсика, который есть для Famicom. Но это отдельная тема. Вопрос про кросс-компилятор всё равно остаётся первичным. Добавлено позже: Есть кросс-компилятор для различных 8-битных компьютеров от Commodore, называется "XC=BASIC". К нему пару-тройку лет назад хотели прикрутить поддержку NES. Хотели, но вроде не прикрутили. |
| Arigato:
--- Цитата: SPOT от 22 Май 2023, 08:30:31 ---На самой NES есть BASIC)) --- Конец цитаты --- Интересный Бейсик. В свое время писал на нем программы в версии для Сюбора, там два Бейсика: G-BASIC, который подходит для игр и F-BASIC для вычислений. В G-BASIC кое-какие игрушки удавалось запрограммировать, но там все очень медленно работает и наборы тайлов фиксированы. А на F-BASIC делал программы для научных расчетов, когда под рукой других инструментов не было. |
| Lunar Laser:
--- Цитата: Arigato от 23 Май 2023, 12:33:54 ---Интересный Бейсик. В свое время писал на нем программы в версии для Сюбора, там два Бейсика: G-BASIC, который подходит для игр и F-BASIC для вычислений. В G-BASIC кое-какие игрушки удавалось запрограммировать, но там все очень медленно работает и наборы тайлов фиксированы. А на F-BASIC делал программы для научных расчетов, когда под рукой других инструментов не было. --- Конец цитаты --- Я так понимаю, там не переопределить базовый набор тайлов и спрайтов и шрифты тоже не добавить. Наверняка отводится мало памяти на код. PEEK и POKE там ведь тоже нет? Итого, проблематично портировать туда экономические стратегии со Спектрума, разве что с сильно изменённым визуалом, собранным из базового набора тайлов, и с урезанным функционалом (а он и на Спектруме не обширен - лишнего нет), из-за малого объёма RAM. Не, кросс-компилятор нужен, чтобы не париться о мелочах. |
| Arigato:
--- Цитата: Lunar Laser от 23 Май 2023, 17:56:45 ---Я так понимаю, там не переопределить базовый набор тайлов и спрайтов и шрифты тоже не добавить. Наверняка отводится мало памяти на код. PEEK и POKE там ведь тоже нет? --- Конец цитаты --- Да, тайлы зашиты в ПЗУ. PEEK и POKE, на сколько помню, нет. Памяти под Бейски вроде бы 4 Кб было, но могу ошибаться. Это значит на картридже стояло расширенное ОЗУ, ведь еще можно было нарисовать один экран и его выводить программно. --- Цитата: Lunar Laser от 23 Май 2023, 17:56:45 ---Итого, проблематично портировать туда экономические стратегии со Спектрума --- Конец цитаты --- Решил в качестве практики переделать Dictator под NES. Писать буду на Ассемблере. Перенес шрифт в формат для NES: Русские буквы выдрал из самого русифицированного Диктатора, а английские из ПЗУ Спектрума, только утолщил их, чтобы имели полужирное начертание, как и русские. Еще много свободного места для графики, да и некоторые символа в русском и английском вариантах имеют общее начертание, то есть при необходимости можно эти места использовать для графики, тем более что Ассемблер позволяет делать перекодировку символов, то есть не важно, как они размещены в таблице тайлов, в редакторе текст можно писать в ASCII, а Ассемблер сам перекодирует. Вопрос, как лучше переносить игру, максимально сохраняя стиль оригинала или улучшать графику и прочее? |
| Lunar Laser:
--- Цитата: Arigato от 23 Май 2023, 19:20:49 ---Вопрос, как лучше переносить игру, максимально сохраняя стиль оригинала или улучшать графику и прочее? --- Конец цитаты --- Ну, я не знаю. И вообще я думал больше в сторону не Dictator, а целого ряда других подобных игр. И в сторону поиска кросс-компилятора Бейсика, ибо в ассемблерах почти не шарю. По графике Dictator не мне рассуждать, лучше найти NES-художника (на форуме вроде были) и посоветоваться с ним, с его вИдением. Можно для начала портануть не Dictator, а "Королевство Зерна" из первого тома "Как написать игру для ZX Spectrum". Только там вроде есть ошибки в исходнике. Попытаться прикрутить к этому "Королевству" симпатичную "средневеково-фэнтезийную" графику, определиться с визуальным стилем для таких игр в версии для NES, а дальше плясать уже от этого. Добавлено позже: Можно даже сделать "Королевство" расширенным не только графически. Добавлено позже: --- Цитата: Sharpnull от 13 Май 2023, 02:45:30 ---UPD: Я так понял здесь Basic, программа Arigato показала какой-то код. Это бы сначала перевести на нормальный язык под современный компьютер. --- Конец цитаты --- Я знаю, что ты уже опытный программист. Имея бэкграунд, изучить Spectrum Basic у тебя займёт дней 6. Ещё дней через 8 - 12 сможешь разбирать исходники игр, написанных на Бейсике. Скачай книгу "Как написать игру для ZX Spectrum", первый том (Бейсик), издательство Питер. Понятно, что для людей, ранее не сталкивавшихся с программированием, освоение этой книги и разбор исходников потребуют куда больше времени. Хотя она доступна для начинающих. В конце книги есть довольно нормальный справочник по операторам Spectrum Basic. Добавлено позже: Только юзай Бейсик для ZX Spectrum 128 и выше. На ZX Spectrum 48 прикол с безумием организации спекрумовской клавиатуры. На 48-ом Бейсике можно писать только на реальном 48-ом Спектруме, видя перед собой эту самую клавиатуру. Впрочем, многие эмуляторы (например, Fuse) содержат подсказки по этой клавиатуре. |
| blackoff:
--- Цитата: Lunar Laser от 23 Май 2023, 19:47:39 ---изучить Spectrum Basic у тебя займёт дней 6. Ещё дней через 8 - 12 сможешь разбирать исходники игр, написанных на Бейсике. Скачай книгу "Как написать игру для ZX Spectrum", первый том (Бейсик), издательство Питер. --- Конец цитаты --- а в перерывах может учить латынь ... |
| lupus:
--- Цитата: blackoff от 23 Май 2023, 20:49:49 ---а в перерывах может учить латынь ... --- Конец цитаты --- Так-то её в некоторых вузах ещё учат ) |
| Lunar Laser:
--- Цитата: blackoff от 23 Май 2023, 20:49:49 ---а в перерывах может учить латынь ... --- Конец цитаты --- Да ну, книжка реально не сложная для взрослого человека, уже являющегося кодером. Это она в детстве заумью казалась и осваивалась кусками. Я её году в 2015 или в 2016 за пару месяцев освоил, не являясь программистом. Проработав и разобравшись в большинстве исходников. А я и тогда, и сейчас, далёк от звания "программист". А вот программисту вполне по силам освоить её за 8 - 12 дней. Понятно, что для человека, для кого это станет первой "компьютерной книжкой", понадобится полгода и больше. Добавлено позже: А вот во втором томе (Ассемблер) вполне можно застрять всерьёз. |
| blackoff:
--- Цитата: Lunar Laser от 23 Май 2023, 23:08:31 ---Это она в детстве заумью казалась и осваивалась кусками. --- Конец цитаты --- я кодил на спеке в 90х ,восстанавливал игры пришедшие к нам битом виде ,возвращал музыку выдирая ее из демок ,перепаковывал ,адаптировал многоуровневые ленточные игры к дисководу ,читы ,было интересно,но все это было в машинном коде ,я даже загрузчики в коде делал 1 строка 0\1 rem потом машинный код ,2 строка запуск кода после rem в 1 строке ,прочитано было много ... ,а игры на бейсике и тогда были примитивны и тормозные ,ща хз кому это нужно ,имхо "на любителя"... о спеке ,как о первом компе имею только теплые воспоминания ,иногда бегаю в boulder dash на psp ... --- Цитата: Lunar Laser от 23 Май 2023, 23:08:31 --- А вот программисту вполне по силам освоить её за 8 - 12 дней.для кого это станет первой "компьютерной книжкой",понадобится полгода и больше. --- Конец цитаты --- я конечно не знаю интересы Sharpnull, но думаю он потратит время на что то более перспективное чем "мертвый язык" ,хотя хз ... |
| Arigato:
--- Цитата: Arigato от 23 Май 2023, 19:20:49 ---некоторые символа в русском и английском вариантах имеют общее начертание, то есть при необходимости можно эти места использовать для графики, тем более что Ассемблер позволяет делать перекодировку символов --- Конец цитаты --- Немного привел в порядок таблицу символов, сдвинул диапазон ASCII в начало таблицы, чтобы пробел занимал нулевую позицию, ну и дальше в порядке ASCII. Русские буквы, которые визуально ничем не отличаются от английских (типа А, М, Р и прочие) удалил совсем. Малую русскую букву "я" поместил на место символа ` (это который на кнопке с буквой Ё). Тут сыграла роль ошибка компилятора ca65, он букву "я" (с кодом 255) воспринимает как конец файла, а потому буква "я" не может присутствовать в исходнике нигде, ни в строке, ни даже в комментарии, иначе компиляция крашется. То есть если мы хотим вывести текст с буквой "я", надо в коде писать что-то такое: --- Код: ---hello: .byte "Привет`, Мир!", $ff --- Конец кода --- Здесь $ff использую как признак конца строки. Сначала думал использовать 0, как принято в Си и с точки зрения программирования это удобнее, но на коде 0 у нас завязан пробел. Вывод такой строки имеет следующий вид: Набор тайлов на текущий момент следующий: Пустые клетки - место для будущей графики. Если его не хватит, то можно убрать некоторые символы, вроде @& и прочие, которые в игре вряд ли используются. Чтобы поставить в соответствие коды символов из тайлов с ASCII из редактора кода, сделал такую перекодировку: --- Код: ---; ASCII .charmap $00, $00 .charmap $01, $01 .charmap $02, $02 .charmap $03, $03 .charmap $04, $04 .charmap $05, $05 .charmap $06, $06 .charmap $07, $07 .charmap $08, $08 .charmap $09, $09 .charmap $0A, $0A .charmap $0B, $0B .charmap $0C, $0C .charmap $0D, $0D .charmap $0E, $0E .charmap $0F, $0F .charmap $10, $10 .charmap $11, $11 .charmap $12, $12 .charmap $13, $13 .charmap $14, $14 .charmap $15, $15 .charmap $16, $16 .charmap $17, $17 .charmap $18, $18 .charmap $19, $19 .charmap $1A, $1A .charmap $1B, $1B .charmap $1C, $1C .charmap $1D, $1D .charmap $1E, $1E .charmap $1F, $1F .charmap $20, $00 .charmap $21, $01 .charmap $22, $02 .charmap $23, $03 .charmap $24, $04 .charmap $25, $05 .charmap $26, $06 .charmap $27, $07 .charmap $28, $08 .charmap $29, $09 .charmap $2A, $0A .charmap $2B, $0B .charmap $2C, $0C .charmap $2D, $0D .charmap $2E, $0E .charmap $2F, $0F .charmap $30, $10 .charmap $31, $11 .charmap $32, $12 .charmap $33, $13 .charmap $34, $14 .charmap $35, $15 .charmap $36, $16 .charmap $37, $17 .charmap $38, $18 .charmap $39, $19 .charmap $3A, $1A .charmap $3B, $1B .charmap $3C, $1C .charmap $3D, $1D .charmap $3E, $1E .charmap $3F, $1F .charmap $40, $20 .charmap $41, $21 .charmap $42, $22 .charmap $43, $23 .charmap $44, $24 .charmap $45, $25 .charmap $46, $26 .charmap $47, $27 .charmap $48, $28 .charmap $49, $29 .charmap $4A, $2A .charmap $4B, $2B .charmap $4C, $2C .charmap $4D, $2D .charmap $4E, $2E .charmap $4F, $2F .charmap $50, $30 .charmap $51, $31 .charmap $52, $32 .charmap $53, $33 .charmap $54, $34 .charmap $55, $35 .charmap $56, $36 .charmap $57, $37 .charmap $58, $38 .charmap $59, $39 .charmap $5A, $3A .charmap $5B, $3B .charmap $5C, $3C .charmap $5D, $3D .charmap $5E, $3E .charmap $5F, $3F .charmap $60, $40 .charmap $61, $41 .charmap $62, $42 .charmap $63, $43 .charmap $64, $44 .charmap $65, $45 .charmap $66, $46 .charmap $67, $47 .charmap $68, $48 .charmap $69, $49 .charmap $6A, $4A .charmap $6B, $4B .charmap $6C, $4C .charmap $6D, $4D .charmap $6E, $4E .charmap $6F, $4F .charmap $70, $50 .charmap $71, $51 .charmap $72, $52 .charmap $73, $53 .charmap $74, $54 .charmap $75, $55 .charmap $76, $56 .charmap $77, $57 .charmap $78, $58 .charmap $79, $59 .charmap $7A, $5A .charmap $7B, $5B .charmap $7C, $5C .charmap $7D, $5D .charmap $7E, $5E .charmap $7F, $5F ; beyond ASCII .charmap $80, $80 .charmap $81, $81 .charmap $82, $82 .charmap $83, $83 .charmap $84, $84 .charmap $85, $85 .charmap $86, $86 .charmap $87, $87 .charmap $88, $88 .charmap $89, $89 .charmap $8A, $8A .charmap $8B, $8B .charmap $8C, $8C .charmap $8D, $8D .charmap $8E, $8E .charmap $8F, $8F .charmap $90, $90 .charmap $91, $91 .charmap $92, $92 .charmap $93, $93 .charmap $94, $94 .charmap $95, $95 .charmap $96, $96 .charmap $97, $97 .charmap $98, $98 .charmap $99, $99 .charmap $9A, $9A .charmap $9B, $9B .charmap $9C, $9C .charmap $9D, $9D .charmap $9E, $9E .charmap $9F, $9F .charmap $A0, $A0 .charmap $A1, $A1 .charmap $A2, $A2 .charmap $A3, $A3 .charmap $A4, $A4 .charmap $A5, $A5 .charmap $A6, $A6 .charmap $A7, $A7 .charmap $A8, $A8 .charmap $A9, $A9 .charmap $AA, $AA .charmap $AB, $AB .charmap $AC, $AC .charmap $AD, $AD .charmap $AE, $AE .charmap $AF, $AF .charmap $B0, $B0 .charmap $B1, $B1 .charmap $B2, $B2 .charmap $B3, $B3 .charmap $B4, $B4 .charmap $B5, $B5 .charmap $B6, $B6 .charmap $B7, $B7 .charmap $B8, $B8 .charmap $B9, $B9 .charmap $BA, $BA .charmap $BB, $BB .charmap $BC, $BC .charmap $BD, $BD .charmap $BE, $BE .charmap $BF, $BF .charmap $C0, $21 .charmap $C1, $60 .charmap $C2, $22 .charmap $C3, $61 .charmap $C4, $62 .charmap $C5, $25 .charmap $C6, $63 .charmap $C7, $64 .charmap $C8, $65 .charmap $C9, $66 .charmap $CA, $67 .charmap $CB, $68 .charmap $CC, $2D .charmap $CD, $28 .charmap $CE, $2F .charmap $CF, $69 .charmap $D0, $30 .charmap $D1, $23 .charmap $D2, $34 .charmap $D3, $6A .charmap $D4, $6B .charmap $D5, $38 .charmap $D6, $6C .charmap $D7, $6D .charmap $D8, $6E .charmap $D9, $6F .charmap $DA, $70 .charmap $DB, $71 .charmap $DC, $72 .charmap $DD, $73 .charmap $DE, $74 .charmap $DF, $75 .charmap $E0, $41 .charmap $E1, $76 .charmap $E2, $77 .charmap $E3, $78 .charmap $E4, $79 .charmap $E5, $45 .charmap $E6, $7A .charmap $E7, $7B .charmap $E8, $7C .charmap $E9, $7D .charmap $EA, $7E .charmap $EB, $7F .charmap $EC, $80 .charmap $ED, $81 .charmap $EE, $4F .charmap $EF, $82 .charmap $F0, $83 .charmap $F1, $84 .charmap $F2, $85 .charmap $F3, $59 .charmap $F4, $86 .charmap $F5, $58 .charmap $F6, $87 .charmap $F7, $88 .charmap $F8, $89 .charmap $F9, $8A .charmap $FA, $8B .charmap $FB, $8C .charmap $FC, $8D .charmap $FD, $8E .charmap $FE, $8F .charmap $FF, $40 --- Конец кода --- Вывод на экран всех символов: --- Код: ---hello: .byte "!", '"', "#$%&'()*+,-./0123456789:;<=>?@" .byte "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`" .byte "abcdefghijklmnopqrstuvwxyz{|}~", $5f .byte "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" .byte "абвгдежзийклмнопрстуфхцчшщъыьэю`", $ff --- Конец кода --- Итог: |
| Yoti:
--- Цитата: Arigato от 25 Май 2023, 01:07:51 ---Русские буквы, которые визуально ничем не отличаются от английских (типа А, М, Р и прочие) удалил совсем. --- Конец цитаты --- А что насчёт "К"? Также, не вижу "Ёё". Ну и в игре действительно нужны "ЪЬ"? |
| Навигация |
| Главная страница сообщений |
| Следующая страница |