DUNE2NES

Портирование "DUNE 2" с SMD на NES





Я увлёкся программированием программ для игровой приставки NES (Nintendo Entertainment System), известная также как Famicom (FAMily COMputer), достаточно давно. Где-то лет девять назад мне попала в руки книга китайского происхождения с инструкциями и примерами программирования на игровую платформу NES. Книга была написана на английском языке, но у меня никогда не было проблем с языками, так как я знаю в общем 7 языков, и английский в том числе. Я за две недели прочёл книгу, и решил написать свою первую программу для игровой приставки NES, у нас в Казахстане больше известной как «Денди». С ЭВМ у меня проблем не было, первую программу я разработал за два месяца, из которых больше времени уходило на исправление ошибок. В последствии, некоторые серьёзные проекты были куплены русской компанией «Новая игра» и растиражированы на картриджах. Сегодня, когда NES не является конкурентоспособной приставкой, и на неё в году выходит 2-3 интересных и однотипных новых игр, у меня возникла идея дать новую жизнь старым популярным играм на данной платформе. Приложением моей диссертации, в которой есть важная глава «оптимизация задач программ для слабых CPU», должны выступить несколько игр, которые я собираюсь максимально точно (с уменьшением нагрузки на CPU) перенести с Sega Mega Drive II (так же всем известная 16-битная игровая приставка) игру «DUNE 2» (эта игра требует не малых процессорных мощностей) на, подробно изученную мною, NES. «Перенос» будет носить только внешний характер, так как я собираюсь заново написать игровую программу «DUNE 2» только под более слабую 8-битную платформу, без урезания «осязаемых» возможностей программы. То есть, произвести точное копирование программы на более слабую платформу без урезания функций, а с их оптимизации (и упрощения). NES на базе микропроцессора (CPU), совместимого с MSC6502 и видеопроцессора (PPU) - работающих в тесном взаимодействии друг с другом. У каждого процессора своё адресное пространство, которые не пересекаются между собой. CPU имеет встроенный звуковой сопроцессор - pAPU (2A03). Каждый процессор имеет свою оперативную память. Так же NES содержит прочие «мелкие» микросхемы, сопрягающие работу всей системы. Архитектура предусматривает хранение (и исполнение) программ со сменных модулей - картриджей. Тем самым, необходимо полностью учитывать как особенности железа приставки, так и в полной мере архитектуру картриджа. Я буду использовать наиболее мощную архитектуру картриджа с широкими возможностями. Для этого за основу взят наиболее подходящий маппер, который позволит хранить и работать с большими массивами данных. Mapper - контроллер или логическая схема, осуществляющая коммутацию блоков реальной ПЗУ в адресные пространства CPU и PPU. Находится на картридже и подключается к шинам CPU и/или PPU. Любая программа пишется под определенный тип маппера.
На данный момент уже имеются большие продвижения по созданию программы, и она идёт к завершающей стадии. В будущем, программа получит распространение в виде готового РОМ-файла, который можно будет скачать на данной страничке, записать на картридж для непосредственного воспроизведения на приставке, или же воспроизвести в эмуляторе на PC.

Ссылки