картограф, это понятие происходит от memory картографирование, также называемое Memory Management Circuit,Это схема, которая выполняет сопоставление адресов. Проще говоря, она определяет, как отображается физическая память. CPU или PPU адресное пространство。
mapper Может использоваться для поддержки добавления кассет. RAM Он даже поддерживает дополнительные аудиоканалы, но более общая цель — управлять отображением физической памяти в адресное пространство, прорываясь в игру. 40KB ограничения。
Почему говорят, что это ограничение в 40 КБ? Потому что в первые дни максимальный размер типичной игры составлял $16 \times 2 = 32КБ$ и CHR $8КБ$, что в сумме составляло 40КБ. сложное аппаратное обеспечение картографа может позволить играм преодолеть этот предел.
Существует слишком много типов картографов, и картографы разных версий NES также различаются. Их сотни, но здесь для иллюстрации мы выберем несколько картографов, используемых в обычных играх.
Mapper 000 с нулевым рейтингом — это самый простой картограф, такой как Super Mario, который использует NROM. NROM также делится на типы. Размер ПЗУ, хранящего PRG в NROM-128 (далее PRG-ROM), составляет всего 16КБ, а в NROM-256 — 256КБ.
Это простейший NROM, что соответствует предыдущему обсуждению CPU и PPU. Разве мы не говорили, что не будем обсуждать сложные ситуации? На самом деле мы использовали NROM в качестве примера.
Mapper 001, игры, использующие MMC1, включают Double Dragon, Castlevania и т. д. Давайте посмотрим на его банк и взаимосвязь картографирования:
Сопоставитель MMC1 гораздо более совершенен. Он имеет ряд регистров портов. Мы можем управлять этими портами для настройки MMC1. Давайте кратко рассмотрим, какие порты существуют:
0x8000-0x9FFF, запись данных по любому адресу в этой части адресного пространства будет записана в регистр 0. У некоторых друзей могут возникнуть вопросы, не отображается ли эта часть адресного пространства в PRG? Почему она подключена к регистру? Хотя я не знаю конкретной схемы, нетрудно сделать вывод, что это не проблема. Программный код PRG доступен только для чтения, но здесь он написан. Во многих местах, где порты одинаковы, но чтение и запись различаются, сопоставление может быть разным. Например, когда я ранее говорил о последовательном порте, многие порты выглядели вот так, поэтому конфликта нет и нет. проблема здесь. Давайте посмотрим на часть порта 0x8000-0x9FFF, представленную адресным пространством:
Позвольте мне объяснить, что этот банк не имеет определенного размера, все зависит от настроек оборудования, и все PRG CHR и т. д. используют банк в качестве базовой единицы обмена. Позвольте мне объяснить это здесь. .
0xA000-0xBFFF, эта часть адресного пространства подключена к другому порту. Запись номера банка CHR в этот порт может выбрать, какой банк CHR будет сопоставлен с 0x0000-0x0FFF PPU. Если размер банка CHR установлен на. 8 КБ в регистре управления, тогда банк будет выбран и сопоставлен с 0x0000-0x1FFF.
0xC000-0xDFFF, по той же причине, что и выше. Запись номера банка CHR по любому адресу в этой части адресного пространства может сопоставить выбранный банк с 0x1000-0x1FFF PPU.
0xE000-0xFFFF, таким же образом запишите номер банка PRG для выбора банка PRG. Что касается размера этого банка, то, будет ли он сопоставлен с 0x8000 или 0xC000 в адресном пространстве ЦП, зависит от настройки регистра управления.
Далее давайте посмотрим на картограф 002. Известные игры, использующие этот картограф, включают Contra, Mega Man и т. д. UNROM более мощный и может поддерживать до 4M PRG. Вы должны знать, что модуль M был очень большим для игры в то время. Хотя UNROM может поддерживать 4M PRG большой емкости, UNROM на самом деле не так сложен, как MMC1. Давайте посмотрим на планирование (сопоставление отношений) его банков.
Вот и все, все довольно просто. UNROM поддерживает только 2 типа зеркалирования, вертикальное и горизонтальное, а способ настройки - приварка (пайка площадки, если я правильно понимаю) при изготовлении кассеты. Имеет регистр выбора банка, который пишет любой. адрес в этой части адресного пространства 0x8000-0xFFFF в номер банка PRG, чтобы выбрать банк PRG и сопоставить его с 0x8000.
Не знаю, есть ли у друзей, которые внимательно смотрят, такие игры, как Contra и Mega Man, — это все игры, особенно Contra. В статье, о которой я упоминал ранее, было много примеров возможностей Contra. Достаточно ли 8K? Очевидно, что сумма всех таблиц шаблонов должна превышать 2, что составляет 8 КБ.
Такие игры, как Contra, немного особенные, в них нет CHR ПЗУ, некоторые из них CHR ОЗУ (может быть PPU начало 8KB рассматривается как CHR ОЗУ), через FCEUX Все, кто знает о Контре PRG ROM для 128 КБ, нет CHR ROM,его PatternTable Прямо там PRG Внутри, когда игра запущена CPU контрольный пропуск PPU порт будет PatternTable от PRG Копировать в CHR RAM。
mapper003 CNROM, это mapper Он также относительно прост и более известен, чем для игры и меть Dragon Quest, Takahashi Celebrity из MapleStory и т. д., как упоминалось выше. mapper Все они написаны примерно об одном и том же, поэтому у вас должно быть это понятие, я его кратко опишу позже.
Существует только один регистр, аналогичный UNROM. Запишите номер банка CHR по любому адресу в части адресного пространства 0x8000-0xFFFF, чтобы выбрать банк CHR, сопоставленный с 0x0000-0x1FFF.
mapper004 ММС3, викорируйте MMC3 из Есть много игр,Более известный, чем для, я предпочитаю изиметь вспыльчивые сериалы, такие как «Горячие боевые легенды».,Кровавая история и так далее.
В MMC3 есть очень подробный план банков. Их много, и значения схожие, я не буду их писать, а просто посмотрите информацию на вики:
0x8000-0x9FFE, четные адреса между ними подключены к регистру выбора банка. Как следует из названия, запись в этот регистр может управлять методом сопоставления. Подробности я опубликую непосредственно из вики.
Просто обратите внимание на первые несколько. Различные методы отображения RRR различны. Представленная выше картина очень ясна, поэтому я не буду объяснять ее дальше.
0x8001-0x9FFF, нечетные адреса между ними подключены к регистру банковских данных, который предназначен для записи номера банка в этот регистр, чтобы выбрать банк, а затем сопоставить его в соответствии с методом в регистре выбора банка.
0xA000-0xBFFE, даже адреса между ними связаны с Mirroring Зарегистрируйтесь, этот реестр bit0 для 0 слова выражают вертикальныйзеркало,для 1 слова выражают Горизонтальное зеркалирование
0xA001-0xBFFF Нечетная часть адреса связана с этим Зарегистрируйтесь, этот реестр bit7 Можно включить PRG Короче говоря, ОЗУ (0x6000-0x7FFF) позволяет архивировать.
MMC3 позволяет генерировать прерывания IRQ. Как упоминалось ранее, процессор имеет три прерывания: RESET, NMI и IRQ. Источники первых двух были упомянуты, а источник прерывания IRQ поступает из этого преобразователя. Существует 4 регистра. связанные с этим:
0xC000-0xDFFE Даже часть этого регистра хранит число, которое начинает считать счетчик IRQ.
0xC000-0xDFFF Нечетная часть, запись любых данных в этот регистр приведет к перезагрузке числа, хранящегося в защелке IRQ, во внутренний счетчик.
0xE000-0xFFFE Даже часть, запись любых данных в этот регистр отключит генерацию IRQ
0xE001-0xFFFF Нечетная часть: запись любых данных в этот регистр активирует генерацию IRQ.
Что касается того, что делать после генерации прерывания, посмотрите на обработчик прерываний IRQ. IRQ, сгенерированный картографом, может использоваться для разделения экрана. Разве я не говорил ранее, что попадание спрайта 0 можно использовать для оценки рендеринга. строка сканирования Как только рендеринг достигает этой точки, ее также можно использовать здесь IRQ, это также основная функция IRQ.
Хорошо, выше приведено некоторое содержимое картографа. Если вас интересуют более подробные сведения, обратитесь к информации в вики. На этом этапе, в сочетании со всем ранее описанным контентом, вы должны иметь общее представление о том, как PRG, CHR, картограф, ЦП и PPU NES работают вместе, обеспечивая запуск игры.
На этом статья заканчивается. Если у вас есть какие-либо вопросы, пожалуйста, критикуйте и поправляйте меня. Каждый может общаться и учиться у меня.