ГДЗ по информатике 7 класс, Босова, рабочая тетрадь, упр. 149. Каково максимально возможное число цветов? – Рамблер/класс

ГДЗ по информатике 7 класс, Босова, рабочая тетрадь, упр. 149. Каково максимально возможное число цветов? – Рамблер/класс

Интересные вопросы

Школа

Подскажите, как бороться с грубым отношением одноклассников к моему ребенку?

Новости

Поделитесь, сколько вы потратили на подготовку ребенка к учебному году?

Школа

Объясните, это правда, что родители теперь будут информироваться о снижении успеваемости в школе?

Школа

Когда в 2018 году намечено проведение основного периода ЕГЭ?

Новости

Будет ли как-то улучшаться система проверки и организации итоговых сочинений?

Вузы

Подскажите, почему закрыли прием в Московский институт телевидения и радиовещания «Останкино»?

Для хранения растрового изображения размером 64 х 64 пикселя отвели 512 байтов памяти.

Каково максимально возможное число цветов в палитре изображения?

ответы

i = (512-8): (64∙64)= 1.
 N = 2i = 21 = 2. Ответ: 2 цвета.

ваш ответ

Можно ввести 4000 cимволов

отправить

дежурный

Нажимая кнопку «отправить», вы принимаете условия  пользовательского соглашения

похожие темы

Экскурсии

Мякишев Г.Я.

Досуг

Химия

похожие вопросы 5

Задание 5a. Reading&Listening. What is your opinion 5c. Английский язык. 7 класс. Ю.Е. Ваулина ГДЗ

Как заменить предложения с вводными словами?
Underline the topic sentences. Replace them with other appropriate ones. (Подробнее…)

ГДЗАнглийский языкSpotlightВаулина Ю.Е.7 класс

Часть 1. № 11. ГДЗ Информатика 1 класс Горячев. Как раскрасить фигуры?

Раскрась круги жёлтым цветом, овалы — синим, треугольники — зелёным, квадраты — голубым, а прямоугольники — коричневым.
  (Подробнее…)

ГДЗИнформатика1 класс

Радиус основания цилиндра равен 2. В этот цилиндр наклонно к оси вписан квадрат со стороной 4 так, что все вершины его находятся на окружностях осн

Радиус основания цилиндра равен 2. В этот цилиндр наклонно к оси вписан квадрат со стороной 4 так, что все вершины его находятся на (Подробнее…)

ВыпускнойЕГЭГДЗ

Задание 1. § 3 Ввод информации в память компьютера. Информатика. 5 класс. Л.Л. Босова. ГДЗ

Как ответить на вопрос по информатике?
Какую информацию может обрабатывать компьютер?

ГДЗИнформатикаБосова Л.Л5 класс

Работа № 17. Вариант 1. № 4. ГДЗ Алгебра 9 класс Кузнецова. Вычислите координаты точек пересечения параболы и прямой

Вычислите координаты точек пересечения параболы у = х2 — 10 и прямой у = 4х + 11.

 

ГДЗАлгебра9 классКузнецова Л. В.

404 Cтраница не найдена

Мы используем файлы cookies для улучшения работы сайта МГТУ и большего удобства его использования. Более подробную информацию об использовании файлов cookies можно найти здесь. Продолжая пользоваться сайтом, вы подтверждаете, что были проинформированы об использовании файлов cookies сайтом ФГБОУ ВО «МГТУ» и согласны с нашими правилами обработки персональных данных.

Размер:

AAA

Изображения Вкл. Выкл.

Обычная версия сайта

К сожалению запрашиваемая страница не найдена.

Но вы можете воспользоваться поиском или картой сайта ниже

  • Университет

    Майкопский государственный технологический университет – один из ведущих вузов юга России.

    • История университета
    • Анонсы
    • Объявления
    • Медиа
      • Представителям СМИ
      • Газета «Технолог»
      • О нас пишут
    • Ректорат
    • Структура
      • Филиал
      • Политехнический колледж
      • Медицинский институт
        • Лечебный факультет
        • Педиатрический факультет
        • Фармацевтический факультет
        • Стоматологический факультет
        • Факультет послевузовского профессионального образования
      • Факультеты
      • Кафедры
    • Ученый совет
    • Дополнительное профессиональное образование
    • Бережливый вуз – МГТУ
      • Новости
      • Объявления
      • Лист проблем
      • Лист предложений (Кайдзен)
      • Реализуемые проекты
      • Архив проектов
      • Фабрика процессов
      • Рабочая группа «Бережливый вуз-МГТУ»
    • Вакансии
    • Профсоюз
    • Противодействие терроризму и экстремизму
    • Противодействие коррупции
    • WorldSkills в МГТУ
    • Научная библиотека МГТУ
    • Реквизиты и контакты
    • Управление имущественным комплексом
    • Опрос в целях выявления мнения граждан о качестве условий оказания образовательных услуг
    • Работа МГТУ в условиях предотвращения COVID-19
    • Документы, регламентирующие образовательную деятельность
    • Система менеджмента качества университета
    • Региональный центр финансовой грамотности
    • Аккредитационно-симуляционный центр
  • Абитуриентам
    • Подача документов онлайн
    • Абитуриенту 2023
    • Экран приёма 2022
    • Иностранным абитуриентам
      • Международная деятельность
      • Общие сведения
      • Кафедры
      • Новости
      • Центр международного образования
      • Академическая мобильность и международное сотрудничество
        • Академическая мобильность и фонды
        • Индивидуальная мобильность студентов и аспирантов
        • Как стать участником программ академической мобильности
    • Дни открытых дверей в МГТУ
      • День открытых дверей online
      • Университетские субботы
      • Дни открытых дверей на факультетах
    • Подготовительные курсы
      • Подготовительное отделение
      • Курсы для выпускников СПО
      • Курсы подготовки к сдаче ОГЭ и ЕГЭ
      • Онлайн-курсы для подготовки к экзаменам
      • Подготовка школьников к участию в олимпиадах
    • Малая технологическая академия
      • Профильный класс
        • Социально-экономический профиль
        • Медико-фармацевтический профиль
        • Инженерно-технологический профиль
        • Эколого-биологический профиль
        • Агротехнологический профиль
      • Индивидуальный проект
      • Кружковое движение юных технологов
      • Олимпиады, конкурсы, фестивали
    • Веб-консультации для абитуриентов и их родителей
      • Веб-консультации для абитуриентов
      • Родительский университет
    • Олимпиады для школьников
      • Отборочный этап
      • Заключительный этап
      • Итоги олимпиад
    • Профориентационная работа
    • Стоимость обучения
  • Студентам
    • Студенческая жизнь
      • Стипендии
      • Организация НИРС в МГТУ
      • Студенческое научное общество
      • Студенческие научные мероприятия
      • Конкурсы
      • Академическая мобильность и международное сотрудничество
    • Образовательные программы
    • Расписание занятий
    • Расписание звонков
    • Онлайн-сервисы
    • Социальная поддержка студентов
    • Общежития
    • Трудоустройство обучающихся и выпускников
      • Вакансии
    • Обеспеченность ПО
    • Инклюзивное образование
      • Условия обучения лиц с ограниченными возможностями
      • Доступная среда
    • Ассоциация выпускников МГТУ
    • Перевод из другого вуза
    • Вакантные места для перевода
    • Студенческое пространство
      • Студенческое пространство
      • Запись на мероприятия
    • Отдел по социально-бытовой и воспитательной работе
  • Наука и инновации
    • Научная инфраструктура
      • Проректор по научной работе и инновационному развитию
      • Научно-технический совет
      • Управление научной деятельностью
      • Управление аспирантуры и докторантуры
      • Точка кипения МГТУ
        • О Точке кипения МГТУ
        • Руководитель и сотрудники
        • Документы
        • Контакты
      • Центр коллективного пользования
      • Центр народной дипломатии и межкультурных коммуникаций
      • Студенческое научное общество
    • Новости
    • Научные издания
      • Научный журнал «Новые технологии»
      • Научный журнал «Вестник МГТУ»
      • Научный журнал «Актуальные вопросы науки и образования»
    • Публикационная активность
    • Конкурсы, гранты
    • Научные направления и результаты научно-исследовательской деятельности
      • Основные научные направления университета
      • Отчет о научно-исследовательской деятельности в университете
      • Результативность научных исследований и разработок МГТУ
      • Финансируемые научно-исследовательские работы
      • Объекты интеллектуальной собственности МГТУ
      • Результативность научной деятельности организаций, подведомственных Минобрнауки России (Анкеты по референтным группам)
    • Студенческое научное общество
    • Инновационная инфраструктура
      • Федеральная инновационная площадка
      • Проблемные научно-исследовательские лаборатории
        • Научно-исследовательская лаборатория «Совершенствование системы управления региональной экономикой»
        • Научно-исследовательская лаборатория проблем развития региональной экономики
        • Научно-исследовательская лаборатория организации и технологии защиты информации
        • Научно-исследовательская лаборатория функциональной диагностики (НИЛФД) лечебного факультета медицинского института ФГБОУ ВПО «МГТУ»
        • Научно-исследовательская лаборатория «Инновационных проектов и нанотехнологий»
      • Научно-техническая и опытно-экспериментальная база
      • Центр коллективного пользования
      • Научная библиотека
    • Экспортный контроль
    • Локальный этический комитет
    • Конференции
      • Международная научно-практическая конференция фундаментальные и прикладные аспекты геологии, геофизики и геоэкологии с использованием современных информационных технологий
      • Международная научно-практическая конференция «Актуальные вопросы науки и образования»
      • VI Международная научно-практическая онлайн-конференция
    • Наука и университеты
  • Международная деятельность
    • Иностранным студентам
    • Международные партнеры
    • Академические обмены, иностранные преподаватели
      • Академическая мобильность и фонды
      • Индивидуальная мобильность студентов и аспирантов
    • Факультет международного образования
      • Новости факультета
      • Информация о факультете
      • Международная деятельность
      • Кафедры
        • Кафедра русского языка как иностранного
        • Кафедра иностранных языков
      • Центр Международного образования
      • Центр обучения русскому языку иностранных граждан
        • Приказы и распоряжения
        • Курсы русского языка
        • Расписание
      • Академическая мобильность
      • Контактная информация
    • Контактная информация факультета международного образования
  • Сведения об образовательной организации
    • Основные сведения
    • Структура и органы управления образовательной организацией
    • Документы
    • Образование
    • Образовательные стандарты и требования
    • Руководство. Педагогический (научно-педагогический) состав
    • Материально-техническое обеспечение и оснащённость образовательного процесса
    • Стипендии и меры поддержки обучающихся
    • Платные образовательные услуги
    • Финансово-хозяйственная деятельность
    • Вакантные места для приёма (перевода)
    • Международное сотрудничество
    • Доступная среда
    • Организация питания в образовательной организации

Архитектура Game Boy Advance | Практический анализ

Вспомогательные изображения

МодельОригинальный Game Boy Advance.


Выпущен 21.03.2001 в Японии, 06.11.2001 в Америке и 22.06.2001 в Европе.

Материнская платаМатеринская плата


Отображается версия ’03’. Обратите внимание, что «AGB» — это идентификатор модели Game Boy Advance.
Гнездо для картриджа и аудиоусилитель находятся сзади. Материнская плата с важными деталями, помеченными

ДиаграммаОсновная схема архитектуры


Каждая шина данных помечена своей шириной.
Показанный макет AGB Game Pak не включает преобразователь (поскольку новый ЦП может адресовать значительно больше памяти), хотя игры с большим ПЗУ могут по-прежнему включать его.

Краткое введение

Внутренний дизайн Game Boy Advance впечатляет для портативной консоли, работающей от двух батареек типа АА.

Эта консоль будет продолжать использовать графический процессор Nintendo Signature . Кроме того, он представит относительно новый процессор от британской компании, популярность которого в ближайшие годы возрастет.


CPU

Большинство компонентов объединены в единый пакет под названием CPU AGB . Этот пакет содержит два совершенно разных процессора:

  • A Sharp SM83 с частотой 8,4 или 4,2 МГц: Если это не тот же процессор, что и в Game Boy! Эффективно используется для запуска игр Game Boy ( DMG ) и Game Boy Color ( CGB ). Вот моя предыдущая статья, если вы хотите узнать об этом больше.
  • Ан ARM7TDMI , работающий на частоте 16,78 МГц: это новый процессор, на котором мы сосредоточимся, и он наверняка запускает игры Game Boy Advance.

Обратите внимание, что оба процессора никогда не будут работать одновременно с или выполнять какую-либо причудливую совместную обработку. только причина для включения очень старого Sharp для обратной совместимости .

Что нового?

До того, как ARM Holdings (в настоящее время Arm) стали невероятно популярными в мире смартфонов, они лицензировали свои процессоры для питания компьютеров Acorn, Newton от Apple, телефонов Nokia и Panasonic 3DO. Выбранный Nintendo процессор ARM7TDMI основан на более ранней конструкции ARM710 и включает в себя [1] :

  • ARM v4 ISA: 4-я версия 32-битного набора инструкций ARM.
  • Трехэтапный конвейер : выполнение инструкций делится на три этапа или этап . ЦП будет получать, декодировать и выполнять до трех инструкций одновременно. Это позволяет максимально использовать ресурсы ЦП (что сокращает время простоя кремния), а также увеличивает количество инструкций, выполняемых в единицу времени.
  • 32-битный АЛУ : Может работать с 32-битными числами без дополнительных циклов.

Кроме того, это ядро ​​содержит некоторые расширения, на которые ссылается его имя ( TDMI ):

  • T Thumb : Подмножество набора инструкций ARM, инструкции которого закодированы в 16-битные слова 9 0060 [2 ] .
    • Будучи 16-разрядными, инструкции Thumb требуют половину ширины шины и занимают половину памяти. Однако, поскольку инструкции Thumb предлагают только функциональное подмножество ARM, вам, возможно, придется написать больше инструкций для достижения того же эффекта.
    • Thumb предлагает условное выполнение только для ветвей, его операции обработки данных используют двухадресный формат, а не трехадресный, и он имеет доступ только к нижней половине файла регистров.
    • На практике Thumb использует 70% пространства кода ARM. Для 16-битной памяти Thumb работает на быстрее, чем на , чем ARM.
    • При необходимости инструкции ARM и Thumb можно смешивать в одной и той же программе (называемой Interworking ), чтобы разработчики могли выбирать, когда и где использовать каждый режим.
  • D Расширения отладки : Обеспечить отладку JTAG.
  • M Улучшенный множитель : Предыдущие ядра ARM требовали нескольких циклов для вычисления полных 32-битных умножений, это усовершенствование сокращает их до нескольких.
  • I Макроячейка EmbeddedICE : Включает аппаратные точки останова, точки наблюдения и позволяет останавливать систему во время отладки.

Ячейки памяти

Включение Thumb, в частности, сильно повлияло на окончательный дизайн этой консоли. Nintendo смешала 16-битные и 32-битные шины между своими различными модулями, чтобы снизить затраты и предоставить программистам необходимые ресурсы для оптимизации их кода.

Архитектура памяти этой системы.

Используемая память распределяется по следующим адресам (в порядке от самого быстрого к самому медленному) [3] :

  • IWRAM (внутренняя WRAM) → 32-разрядная с 32 КБ: полезно для хранения инструкций ARM.
  • VRAM (видео RAM) → 16-битный с 96 КБ: Хотя этот блок предназначен для графических данных (объяснено в следующем разделе этой статьи), он все еще находится в карте памяти ЦП, поэтому программисты могут хранить другие данных, если IWRAM недостаточно.
  • EWRAM (внешняя WRAM) → 16-битная с 256 КБ: отдельная микросхема рядом с CPU AGB. Это оптимально для хранения инструкций и данных только для большого пальца небольшими порциями. С другой стороны, доступ к чипу может быть до шести раз медленнее по сравнению с IWRAM.
  • Game PAK ROM → 16-бит с переменным размером: это место, где осуществляется доступ к ПЗУ картриджа. Хотя он может обеспечивать одну из самых медленных скоростей, он также отражается в карте памяти для управления различными скоростями доступа. Кроме того, Nintendo установила Буфер предварительной выборки , взаимодействующий с картриджем для предотвращения чрезмерных задержек. Этот компонент независимо кэширует непрерывные адреса, когда ЦП не обращается к картриджу, он может хранить до восьми 16-битных слов.
    • Однако на практике ЦП редко позволяет буферу предварительной выборки выполнять свою работу. Поскольку по умолчанию он будет продолжать получать инструкции от картриджа для продолжения выполнения [4] (поэтому IWRAM и EWRAM так важны).
  • Game PAK RAM → 8-бит с переменным размером: это место, где осуществляется доступ к ОЗУ картриджа (SRAM или флэш-память).
    • Это строго 8-битная шина (процессор увидит «мусор» в неиспользуемых битах), и по этой причине Nintendo заявляет, что с ней можно работать только через их библиотеки.

Хотя эта консоль продавалась как 32-битная система, большая часть ее памяти доступна только через 16-битную шину, а это означает, что игры в основном будут использовать набор инструкций Thumb, чтобы не тратить два цикла на выборку инструкции. Только в очень исключительных случаях (например, при необходимости использовать инструкции, которых нет в Thumb, при сохранении их в IWRAM) программисты могут воспользоваться набором инструкций ARM.

Стать Game Boy Color

Помимо аппаратного обеспечения GBC (Sharp SM83, оригинальный BIOS, аудио- и видеорежимы, слот для совместимых картриджей и т. д.), для обеспечения обратной совместимости требуются две дополнительные функции.

Что касается оборудования, консоль зависит от переключателей, чтобы определить, вставлен ли картридж Game Boy или Game Boy Color. Детектор формы в гнезде картриджа эффективно идентифицирует тип картриджа и позволяет ЦП считывать его состояние. Предполагается, что какой-то компонент CPU AGB считывает это значение и автоматически отключает оборудование, которое не требуется в режиме GBC.

Со стороны программного обеспечения существует специальный 16-битный регистр с именем REG_DISPCNT , который может изменять многие свойства дисплея, но один из его битов устанавливает консоль в «режим GBC» [5] . Сначала я изо всех сил пытался понять, когда именно GBA пытается обновить этот регистр. К счастью, некоторые разработчики помогли прояснить это:

Я думаю, что во время загрузки GBC происходит то, что он проверяет переключатель (читаемый в REG_WAITCNT 0x4000204), исчезает (очень быстро, трудно заметить), затем, наконец, переключается на Режим GBC (BIOS записывает в REG_DISPCNT 0x4000000), останавливая работу ARM7.

Единственная недостающая часть головоломки — это то, что произойдет, если вы удалите часть оболочки картриджа GBC, чтобы переключатель больше не нажимался, а затем программно переключите режим в режим GBC. Здесь может помочь режим мультизагрузки. Я не уверен, нужно ли нажимать переключатель, чтобы шина картриджа GBC работала должным образом, или он просто работает. Я готов предположить, что переключатель необходим для работы шины, но это всего лишь предположение.

Дэн Вайс (также известный как Дудит, нынешний сопровождающий PocketNES и Goomba Color)


Графика

Прежде чем мы начнем, вы обнаружите, что система является смесью SNES и Game Boy, графическим ядром по-прежнему является хорошо известный 2D-движок под названием PPU . Я рекомендую прочитать эти статьи, прежде чем продолжить, так как я буду пересматривать множество ранее объясненных концепций.

По сравнению с предыдущими версиями Game Boy у нас теперь есть цветной ЖК-экран, отображающий до 32 768 цветов (15 бит). Он имеет разрешение 240×160 пикселей и частоту обновления ~ 60 Гц.

Организация содержимого

Архитектура памяти PPU.

У нас есть следующие области памяти для распределения нашей графики:

  • 96 КБ 16-бит VRAM (Видео RAM): где 64 КБ хранят фоновую графику, а 32 КБ хранят спрайтовую графику.
  • 1 КБ 32-разрядный OAM (Память атрибутов объекта): Хранит до 128 записей спрайтов (не графики, а только индексы и атрибуты). Его шина оптимизирована для быстрого рендеринга.
  • 1 КБ 16 бит PAL RAM (Palette RAM): Хранит две палитры, одну для фона и другую для спрайтов. Каждая палитра содержит 256 записей 15-битных цветов каждая, цвет 0 является прозрачным .

Сборка каркаса

Если вы читали предыдущие статьи, GBA покажется вам знакомой, хотя есть дополнительные функции, которые могут вас удивить, и не забывайте, что эта консоль работает от двух батареек типа АА.

Я позаимствую графику Sega Sonic Advance 3 , чтобы показать, как составлен кадр.

Тайлы
Этот блок состоит из 4 битных тайлов. Вы можете заметить здесь странные вертикальные узоры, это не графика, а «карты тайлов» (см. следующий раздел). Этот блок зарезервирован для спрайтов. Блоки символов находятся в VRAM. Тайлы

GBA представляют собой растровые изображения строго 8×8 пикселей, они могут использовать 16 цветов (4 бита на пиксель) или 256 цветов (8 бит на пиксель). Тайлы с 4 битами занимают 32 байта, а тайлы с 8 битами — 64 байта.

Тайлы можно хранить в любом месте видеопамяти, однако PPU хочет, чтобы они были сгруппированы в charblocks : Область 16 КБ . Каждый блок зарезервирован для определенного типа слоя (фона и спрайтов), и программисты решают, где начинается каждый блок символов. Это может привести к некоторому перекрытию, которое, как следствие, позволяет двум символьным блокам использовать одни и те же плитки.

Из-за размера charblock в каждом блоке может храниться до 256 8-битных тайлов или 512 4-битных тайлов. Допускается до шести блоков символов, что в совокупности требует 96 КБ памяти: точное количество видеопамяти, которое есть у этой консоли.

Для фона можно использовать только четыре блока символов, а для спрайтов — два.

« Предыдущая Далее »

Фоны
Фоновый слой 0 (BG0). Фоновый слой 2 (BG2). Фоновый слой 3 (BG3).
Этот конкретный слой будет смещен по горизонтали на определенные строки сканирования, чтобы имитировать эффекты воды. Используются статические фоновые слои.

Фоновый слой этой системы значительно улучшился по сравнению с Game Boy Color. Наконец, он включает в себя некоторые функции, которые можно найти в Super Nintendo (помните аффинные преобразования?).

PPU может рисовать до четырех фоновых слоев. Возможности каждого из них будут зависеть от выбранного режима работы. [6] :

  • Режим 0 : Обеспечивает четыре статических слоя.
  • Режим 1 : Доступны только три слоя, хотя один из них аффинен (можно вращать и/или масштабировать).
  • Режим 2 : Обеспечивает два аффинных слоя.

Каждый слой имеет размер до 512×512 пикселей. Если аффинный, то до 1024×1024 пикселей.

Элемент данных, определяющий фоновый слой, называется Tile Map . Чтобы реализовать это таким образом, чтобы PPU понимал это, программисты используют блоков экрана , структуру, которая определяет части фонового слоя (тайлы 32×32). Экранный блок занимает всего 2 КБ, но для построения всего слоя потребуется больше одного блока. Программисты могут размещать их в любом месте внутри фоновых блоков символов, это означает, что не все записи тайлов будут содержать графику!

« Предыдущая Далее »

Спрайты
Визуализированный слой спрайтов

Размер спрайта может быть до 64×64 пикселей в ширину, но для такого маленького экрана они займут большую его часть.

Если этого было недостаточно, PPU теперь может применять к спрайтам аффинных преобразований !

Записи спрайтов имеют ширину 32 бита, и их значения можно разделить на две группы:

  • Атрибуты : Содержит положение x/y, переключение по горизонтали/вертикали, размер, форму (квадрат или прямоугольник), тип спрайта (аффинный). или обычный) и расположение первой плитки.
  • Аффинные данные : Используется, только если спрайт аффинный, укажите масштабирование и поворот.

« Предыдущая Далее »

Результат
Все слои объединены ( Тада! ).

Как всегда, PPU автоматически объединит все слои, но это еще не все! В системе есть несколько эффектов, доступных для применения к этим слоям:

  • Мозаика : Делает плитку более блочной .
  • Альфа-смешивание : Объединяет цвета двух перекрывающихся слоев, что приводит к эффектам прозрачности.
  • Windowing : Разделяет экран на два разных окна , каждое из которых может иметь свою собственную графику и эффекты, внешняя зона обоих окон также может быть отображена плитками.

С другой стороны, для обновления фрейма доступно несколько вариантов:

  • Команда ЦП : Процессор теперь имеет полный доступ к видеопамяти в любое время. Однако он может создавать нежелательные артефакты, если изменяет некоторые данные в середине кадра, поэтому ожидание VBlank/HBlank ( традиционный способ ) остается наиболее безопасным вариантом в большинстве случаев.
  • Используйте контроллер DMA . : DMA обеспечивает скорость передачи примерно в 10 раз выше и может быть запланировано во время VBlank и HBlank. Эта консоль предоставляет 4 канала прямого доступа к памяти (два зарезервированы для звука, один для критических операций и один для общего назначения). Имейте в виду, что контроллер будет останавливать ЦП во время работы (хотя может и не заметить этого!).

« Предыдущая Далее »

За плитками

Иногда нам может понадобиться создать фон, из которого тайловый движок не сможет отрисовать всю необходимую графику. Теперь современные консоли решили эту проблему, внедрив архитектуру кадрового буфера , но это невозможно, когда очень мало ОЗУ… Что ж, GBA имеет 96 КБ видеопамяти, чего достаточно для размещения растрового изображения с размерами наш ЖК-экран.

Хорошей новостью является то, что PPU фактически реализовал эту функциональность, включив три дополнительных режима, они называются растровые режимы [7] :

  • Режим 3 : Выделяет один полноцветный (16 бит/пиксель, 32 768 цветов) кадр.
  • Режим 4 : Предоставляет два кадра с половиной цветов (8 бит на пиксель, 256 цветов) каждый.
  • Режим 5 : Есть два полноцветных кадра вдвое меньшего размера каждый (160×128 пикселей).

Причина наличия двух растровых изображений заключается в том, чтобы включить перелистывание страниц : Рисование поверх отображаемого растрового изображения может выявить некоторые странные артефакты во время процесса. Если вместо этого мы манипулируем другим, то ни один из сбоев не будет показан пользователю. Как только второе растровое изображение будет готово, PPU можно обновить, чтобы оно указывало на второе, эффективно заменяя отображаемый кадр.

Super Monkey Ball Jr. (2002).
Режим растрового изображения позволял ЦП обеспечивать некоторую элементарную трехмерную графику для пейзажа.
Объекты переднего плана — это спрайты (отдельный слой). Демонстрация Tonc.
Визуализировано растровое изображение с некоторыми примитивами.
Обратите внимание, что на экране не отображаются важные узоры, создаваемые тайловыми движками. Губка Боб Квадратные Штаны Nickelodeon.
Эпизод распространяется в виде картриджа GBA Video (конечно, сильно сжат). Примеры программ, использующих растровые режимы.

В целом, это звучит как ультрасовременная функция, однако большинство игр придерживаются тайлового движка. Почему? Потому что на практике стоит много ресурсов процессора .

Видите ли, при использовании тайлового движка процессор может делегировать большую часть вычислений графическому чипу. Напротив, система кадрового буфера, предоставляемая PPU, ограничена только отображением этого сегмента памяти в виде одного фонового слоя , что означает отсутствие отдельных аффинных преобразований, слоев или эффектов, если их не вычисляет ЦП. Кроме того, буфер кадра занимает 80 КБ памяти, поэтому для хранения тайлов спрайтов доступно только 16 КБ (половина).

По этой причине эти режимы используются исключительно, например, для воспроизведения движущегося видео ( Game Boy Advance Video полностью полагался на это) или рендеринга 3D-геометрии с помощью ЦП.


Аудио

GBA оснащен 2-канальным проигрывателем семплов , который работает в сочетании с устаревшей звуковой системой Game Boy.

Функциональность

Ниже приведена разбивка каждого аудиокомпонента на примере Sonic Advance 2 :

ПКМ
Нет поддержки каналов video.PCM.

Новая звуковая система теперь может воспроизводить сэмплы PCM, она предоставляет два канала, называемых Direct Sound , где она получает сэмплы, используя очередь FIFO (реализованную как 16-байтовый буфер).

Образцы 8-битные и знаковые (закодированные значениями от -128 до 127). Частота дискретизации по умолчанию составляет 32 кГц, хотя это зависит от каждой игры: поскольку более высокая частота означает больший размер и больше циклов процессора, не каждая игра будет тратить одинаковое количество ресурсов на питание звукового чипа.

DMA необходим для предотвращения засорения циклов ЦП. Таймеры также доступны для синхронизации с очередью.

« Предыдущая следующий »

ПСГ
Нет поддержки каналов только для видео. PSG.

Хотя подсистема Game Boy не будет делиться своим процессором, она предоставляет доступ к своей PSG. Из соображений совместимости это тот же дизайн, что и на оригинальном Game Boy. Ранее я написал эту статью, в которой подробно рассказывается о каждом канале в частности.

В большинстве игр GBA он использовался для аккомпанемента или эффектов. Более поздние оптимизируют свою музыку для PCM и оставят PSG неиспользованным.

« Предыдущая Следующий »

Комбинированный
Нет поддержки видео.Тада!

Наконец, все автоматически микшируется и выводится через разъем динамика/наушников.

Несмотря на то, что у GBA всего два канала PCM, некоторые игры могут волшебным образом воспроизводить более двух одновременных сэмплов. Как это возможно? Что ж, хотя наличие только двух каналов может показаться немного слабым на бумаге, основной процессор может использовать некоторые из своих циклов для обеспечения последовательности звука и микширования 9.0060 [8] (это должно дать вам представление о мощности ARM7!). Кроме того, в разделе «Операционная система» вы обнаружите, что в ПЗУ BIOS есть звуковой секвенсор!

« Предыдущая Далее »

Лучшее из обоих миров

В некоторых играх дуальность PCM-PSG развивалась дальше и «чередовала» ведущую микросхему в зависимости от контекста.

В этой игре ( Мать 3 ) игрок может войти в две разные комнаты, одну относительно обычную и другую с ностальгическая настройка . В зависимости от комнаты, в которой находится персонаж, одна и та же партитура будет звучать как по-современному или как по 8-битному .

Нет поддержки видео. Обычная комната, использует только PCM. Нет поддержки видео.Ностальгический номер, ПСЖ лидирует.


Операционная система

Вектор сброса ARM7 находится по адресу 0x00000000 , что указывает на 16 КБ BIOS ROM . Это означает, что Game Boy Advance сначала загружается из BIOS, который, в свою очередь, показывает значок-заставку, а затем решает, загружать игру или нет.

В этом ПЗУ также хранятся программные процедуры, которые могут вызываться играми для упрощения определенных операций и уменьшения размера картриджа [9] . К ним относятся:

  • Арифметические функции : Процедуры для выполнения деления, извлечения квадратного корня и арктангенса.
  • Вычисление аффинной матрицы : Учитывая значение «масштабирования» и угол, он вычисляет аффинную матрицу, которая будет вводиться в PPU для масштабирования/поворота фона или спрайта.
    • Есть две функции, одна для спрайтов, а другая для фона. Их параметры немного отличаются, но идея та же.
  • Функции декомпрессии : Реализует алгоритмы декомпрессии, включая Run-Length, LZ77 и Хаффмана. Он также обеспечивает распаковку битов и последовательную разницу.
  • Копирование памяти : Две функции, перемещающие память. Первый копирует 32-байтовые блоки, используя специальный код операции для этого типа передачи ( LDMIA для загрузки и SDMIA для сохранения) только один раз. Второй копирует 2-байтовые или 4-байтовые блоки, используя повторяющиеся 9Коды операций 0178 LDRH/STRH или LDMIA/STMIA соответственно. Таким образом, вторая функция более гибкая, но не такая быстрая.
  • Звук : Реализует полный MIDI-секвенсор! Он включает в себя множество функций для управления им.
  • Интерфейс питания : Ярлыки для сброса, очистки большей части оперативной памяти, остановки процессора до наступления определенного события (V-blank или пользовательское) или переключения в «режим с низким энергопотреблением».
  • Мультизагрузка : Загружает программу на другой GBA и запускает ее. Подробная информация в разделе «Игра».

BIOS подключается через 32-битную шину и реализуется с использованием комбинации инструкций Arm и Thumb, хотя последняя является наиболее заметной.

Также помните, что все это будет работать только на ARM7. Другими словами, аппаратное ускорение для ускорения этих операций недоступно. Следовательно, Nintendo предоставила все эти функции с помощью программного обеспечения.


Игры

Программирование для GBA было похоже на SNES с добавлением всех преимуществ разработки игр в начале 2000-х: стандартизированные языки высокого уровня, лучшие компиляторы, более быстрые процессоры RISC, непатентованные компьютеры для разработки, сравнительно лучшая документация и… доступ в Интернет!

Программы в основном написаны на C с критически важными для производительности секциями на ассемблере (ARM и Thumb) для экономии циклов. Nintendo предоставила SDK с библиотеками и компиляторами.

Игры распространяются в новом фирменном картридже под названием Game Pak .

Доступ к данным картриджа

Хотя ARM7 имеет 32-битную адресную шину, к картриджу подключено только 24 адресных линии. Это должно означать, что на картридже можно получить доступ к 16 МБ без использования картографа, однако в официальных документах говорится, что 32 МБ данных картриджа отображаются в памяти . Итак, что здесь происходит? Правда в том, что Gamepak использует 25-битных адресов (что объясняет этот 32-мегабайтный блок), но его самый нижний бит зафиксирован на нуле, поэтому установлены только 24 оставшихся бита. Вот как работает адресация Gamepak.

Значит ли это, что данные, расположенные по нечетным адресам (с младшим значащим битом «1»), будут недоступны? Нет, потому что шина данных 16-битная: при каждой передаче CPU/DMA будет извлекать обнаруженный байт плюс следующий, что позволяет считывать как четные, так и нечетные адреса. Как видите, это всего лишь еще одна инженерная работа, позволяющая в полной мере использовать возможности оборудования при одновременном снижении затрат.

Место в ОЗУ картриджа

Для хранения сохранений игровые пакеты могут включать [10] :

  • SRAM : им требуется батарея для хранения содержимого, и они могут иметь размер до 64 КБ (хотя коммерческие игры не превышать 32 КБ). Доступ к нему осуществляется через карту памяти GBA.
  • Флэш-ПЗУ : Аналогичен SRAM без батареи, может иметь размер до 128 КБ.
  • EEPROM : для них требуется последовательное соединение, и теоретически они могут иметь любой размер (часто встречаются до 8 КБ).

Аксессуары

Знаменитый соединительный кабель Game Boy () обеспечивает возможность одновременной игры. Кроме того, кабель имеет специальную функцию, известную внутри как Multi-boot : другая консоль (либо GBA, либо GameCube) может отправить функциональную игру в EWRAM приемника, после чего последняя загрузится оттуда (вместо необходимости использования картриджа).


Anti-Piracy & Homebrew

В общем, использование проприетарных картриджей было большим препятствием по сравнению с постоянной игрой в кошки-мышки, с которой другим производителям консолей приходилось бороться при использовании CD-ROM.

Для борьбы с контрафактными картриджами (незаконными копиями) в BIOS GBA был включен тот же процесс загрузки, что и в оригинальном Game Boy.

Flashcarts

Поскольку твердотельные накопители стали более доступными, на рынке появился новый тип картриджей. Flashcarts выглядели как обычные игровые пакеты, но имели дополнительную перезаписываемую память или слот для карт, который позволял запускать игровые ПЗУ. На самом деле эта концепция не нова, разработчики использовали аналогичные инструменты для тестирования своих игр на реальной консоли (и производители предоставили оборудование для этого).

Более ранние решения включали записываемую флэш-память NOR (не более 32 МБ) и некоторые SRAM с батарейным питанием. Для загрузки двоичных файлов на картридж к тележке прилагался кабель Link-to-USB, который использовался с GBA и ПК под управлением Windows XP. С помощью проприетарного программного обеспечения и драйверов для флэш-памяти компьютер загрузил мультизагрузочную программу в GBA, которая, в свою очередь, использовалась для передачи двоичного файла игры с ПК на Flashcart, вставленный в GBA. В целом, вся задача по загрузке игры была оценена как 9.0021 вялый . Более поздние флешкарты (например, «EZ-Flash») предлагали больший объем памяти и возможность программирования без использования GBA в качестве промежуточного звена [11] . Последние полагались на съемное хранилище (SD, MiniSD, MicroSD или что-то еще).

Коммерческая доступность этих карт оказалась серой зоной : Nintendo осудила их использование из-за возможности пиратства, тогда как некоторые пользователи защищали, что это был единственный метод запуска Homebrew (программы, созданные вне игровых студий и, следовательно, без одобрения Нинтендо). Аргумент Nintendo был подкреплен тем фактом, что флешеры, такие как EZ-Writer, помогали пользователям исправлять игровые ПЗУ, чтобы они могли без проблем запускаться в тележках EZ-Flash. После юридических попыток Nintendo эти картриджи были запрещены в некоторых странах (например, в Великобритании). Тем не менее, они сохранились во всем мире.


Вот и все, ребята

Моя GBA и пара игр.
Жаль, что нет подсветки!

CS 111 – Проект 3 – Весна 2005 г.

CS 111 – Проект 3 – Весна 2005 г.

Соответствующий текст

Страницы 179-218 из Ядро Проекты для Linux Гэри Натта.

Срок оплаты

вторник, 31 мая 2005 г., 23:00 по тихоокеанскому времени.

Файловая система предварительные

Файловая система, которую вы работать с JOSFS намного проще, чем с большинством «настоящих» файловых систем, но достаточно мощный, чтобы обеспечить стандартные «базовые» функции: чтение и записи файлов, организованных в иерархическом порядке структура каталогов. Наша файловая система в настоящее время не поддерживает жесткие ссылки, символические ссылки, метки времени или специальные файлы устройств, такие как большинство Файловые системы UNIX подходят. JOSFS — это файловая система в памяти, что означает, что данные «на диске» фактически полностью хранятся в основной памяти. Этот означает, что изменения, внесенные в файловую систему, не сохраняются после машина перезагружается.

Структура файловой системы

Большинство файловых систем UNIX разделить доступное дисковое пространство на два основных типа регионов: inode регионы и регионы данных. Файловые системы UNIX назначают по одному индексному узлу каждому файлу. файл в файловой системе; индексный дескриптор файла содержит важные метаданные о файл, такой как его атрибуты статистики и указатели на его блоки данных. Области данных делятся на гораздо большие (обычно 8 КБ или более) блоки данных, в которых файловая система хранит данные файла и метаданные каталога. Записи каталога содержат имена файлов и указатели к инодам; файл считается жестко связанным, если несколько каталогов записи в файловой системе относятся к индексному узлу этого файла. Поскольку наш файл система не будет поддерживать жесткие ссылки, нам не нужен этот уровень косвенность и, следовательно, может сделать удобное упрощение: наш файловая система вообще не будет использовать индексные дескрипторы, а вместо этого мы просто хранить все метаданные файла (или подкаталога) в пределах (одного и только) запись каталога, описывающая этот файл.

Оба файла и каталоги логически состоят из серии блоков данных, которые могут быть разбросаны по диску так же, как страницы процесса виртуальное адресное пространство может быть разбросано по всей физической памяти.

Сектора и блоки

Большинство дисков не могут выполнять чтение и запись с точностью до байта, но может выполнять только читает и пишет в единицах секторов, которые сегодня почти универсально 512 байт каждый. Файловые системы фактически выделяют и используют диск хранение в единицах блоков. Будьте осторожны с различием между двумя термины: размер сектора является свойством дискового оборудования, тогда как размер блока Размер — это аспект операционной системы, использующей диск. Файл размер блока системы должен быть не меньше размера сектора базовой диск, но может быть больше.

Исходный файл UNIX система использовала размер блока 512 байт, такой же, как размер сектора базовый диск. Большинство современных файловых систем используют больший размер блока, однако, потому что место для хранения стало намного дешевле, и это больше эффективно управлять хранилищем с большей степенью детализации. Наша файловая система будет использовать размер блока 4096 байт.

Суперблоки

Файловые системы обычно зарезервировать определенные блоки диска в легкодоступных местах на диске например, в самом начале или в самом конце, чтобы хранить метаданные, описывающие свойства файловой системы в целом, такие как размер блока, диск размер, любые метаданные, необходимые для поиска корневого каталога, время файловая система была смонтирована в последний раз, время последней проверки файловой системы за ошибки и тд. Эти специальные блоки называются суперблоками.

Наша файловая система будет иметь ровно один суперблок, который всегда будет в блоке 1 на диск. Его макет определяется структурой josfs_super в josfs.h. Блок 0 обычно зарезервирован для хранения загрузчиков и таблиц разделов, поэтому файловые системы обычно никогда не используют самый первый блок диска. Самый «настоящий» файловые системы поддерживают несколько суперблоков, реплицированных по всему несколько широко разнесенных областей диска, так что если одна из них поврежден или на диске возникает ошибка носителя в этом регионе, другой суперблоки по-прежнему можно найти и использовать для доступа к файловой системе.

Битовая карта блока: управление свободными блоками диска

Так же, как ядро должно управлять физической памятью системы, чтобы гарантировать, что данный физическая страница используется только для одной цели в каждый момент времени, файловая система должен управлять блоками памяти на диске, чтобы гарантировать, что данный диск Блок используется только для одной цели в каждый момент времени. В файловых системах это обычно для отслеживания свободных дисковых блоков используется растровое изображение, а не связанный список, потому что растровое изображение более эффективно для хранения, чем связанный список и легче поддерживать последовательность. Поиск свободного блока в растровое изображение может занять больше процессорного времени, чем простое удаление первого элемента связанный список, но для файловых систем это не проблема, потому что Стоимость ввода-вывода при фактическом доступе к свободному блоку после того, как мы его найдем преобладает в целях производительности.

Установить свободный блок растровое изображение, мы резервируем непрерывную область пространства на диске большого размера достаточно для хранения одного бита для каждого блока диска. Например, поскольку наш файл система использует блоки по 4096 байт, каждый блок растрового изображения содержит 4096*8=32768 бит, или достаточно битов, чтобы описать 32768 дисковых блоков. Другими словами, для каждые 32768 дисковых блоков, которые использует файловая система, мы должны резервировать один диск block для растрового изображения блока. Данный бит в растровом изображении устанавливается, если соответствующий блок свободен, и очистить, если соответствующий блок находится в использовать. Битовая карта блока в нашей файловой системе всегда начинается со 2-го блока диска. сразу после суперблока. Для простоты оставим достаточно растровые блоки для хранения одного бита для каждого блока на всем диске, включая блоки, содержащие суперблок и само растровое изображение. Мы просто убедимся, что биты растрового изображения, соответствующие этим специальные, «зарезервированные» области диска всегда свободны (помечены как используемые).

Метаданные файла

Макет метаданные, описывающие файл в нашей файловой системе, описываются структурой josfs_inode в josfs.h. Эти метаданные включают имя файла, размер, тип (обычный файл или каталог) и указатели на блоки, содержащие файл.

Массив блоков в struct josfs_inode содержит пространство для хранения номеров блоков первые 10 (JOSFS_NDIRECT) блоков файла, которые мы называем прямые блоки. Для небольших файлов размером до 10 * 4096 = 40 КБ это означает что номера блоков всех блоков файла будут соответствовать непосредственно внутри самой структуры josfs_inode. Однако для больших файлов мы нужно место для хранения остальных номеров блоков файла. Для любого файла размером больше 40КБ, поэтому выделяем дополнительный диск блок, называемый косвенным блоком файла, для хранения до 4096/4 = 1024 дополнительные номера блоков. Для упрощения бухгалтерского учета мы оставляем первые 10 номеров в косвенном блоке не используются. Таким образом, 10-й блок это 10-й слот в непрямом блоке (а не 0-й, как можно было бы сделать, если бы мы были очень эффективными с точки зрения пространства). Наша файловая система поэтому позволяет файлам иметь размер до 1024 блоков или четырех мегабайт в размер. Для поддержки больших файлов «настоящие» файловые системы обычно поддерживают также двойные и тройные непрямые блоки.

каталогов против обычные файлы

Структура josfs_inode в нашей файловой системе может представлять собой либо обычный файл, либо каталог; эти два типа «файлов» отличаются полем типа в Структура josfs_inode. Файловая система управляет обычными файлами и каталог-файлы точно таким же образом, за исключением того, что он не интерпретировать содержимое блоков данных, связанных с обычными файлами вообще, в то время как файловая система интерпретирует содержимое файл-каталога в виде набора структур josfs_inode, описывающих файлы и подкаталоги внутри каталога.

Суперблок в нашем файловая система содержит структуру josfs_inode (поле s_root в структура josfs_super), который содержит метаданные для корня файловой системы. каталог. Содержимое этого файла-каталога представляет собой последовательность структуры josfs_inode, описывающие файлы и каталоги, расположенные в корневом каталоге файловой системы. Любые подкаталоги в корневой каталог, в свою очередь, может содержать больше структур josfs_inode представляющие под-подкаталоги и так далее.

Описание проекта

Файловая система JOS, которую вы будете разрабатывать, реализована в виде модуля ядра в Linux. Ваше задание будет заключаться в реализации подпрограмм, которые обрабатывают управление свободными блоками, изменение размеров файлов, чтение/запись в файл и чтение файла каталога.

Код файловой системы Skeleton JOS (lab3.tgz) будет предоставлен вам на CourseWeb.

Для этой лабораторной работы вам потребуется реализовать следующие функции:

Учет карты свободных блоков: allocate_block, free_block
Поддержка изменения размеров файлов: change_size
Поддержка доступа к файлам: josfs_read, josfs_write
Поддержка чтения каталогов: josfs_dir_readdir

Задачи-вызовы (необязательно):

  • Реализовать функциональность для создания и удаления файлов из каталога. Это можно сделать, реализовав дополнительные функции в структурах «операций». Добавление функций для создания/удаления файлов выполняется в структуре inode_operations (см. вызовы функций для создания и удаления связи).
  • Добавить поддержку символических ссылок

Основы модуля ядра Linux:

Шаги сборки

  • Распакуйте архив с помощью $tar xzvf lab3.tgz (флаг ‘z’ существует не во всех версиях tar. Если это не удается, используйте gunzip, а затем «tar xvf»
  • Введите $gmake в основном каталоге с исходным кодом (обратите внимание, что для того, чтобы этот шаг работал, у вас должен быть исходный код ядра на компьютере)
Makefile создает исходный образ JOSFS, используя содержимое «базового» каталога. Если вы хотите добавить файлы в образ JOSFS, просто добавьте файлы и каталоги в «базу», затем запустите «$gmake clean» и «$gmake», чтобы перестроить образ. Если «$gmake» сообщает об ошибке, что результирующая файловая система слишком велика, увеличьте число «32» в Makefile до большего.

Полученный модуль знает, как предоставить доступ к связанному образу JOSFS, но простая загрузка модуля не делает доступной файловую систему. Скрипт runjosfs.sh выполнит необходимые действия, чтобы сделать файловую систему доступной. Сначала вы должны *смонтировать* файловую систему в существующем каталоге. Это скрывает существующее содержимое каталога, превращая каталог в «шлюз» в новую файловую систему. После загрузки JOSFS сценарий «./runjosfs.sh» монтирует эту файловую систему в каталог «test». Когда ваша файловая система будет готова, «$ls base» и «$ls test» должны вернуть одинаковые результаты (за исключением таких вещей, как право собственности, разрешения и номера инодов).

Стоит обсудить, как реализован функционал скрипта. В следующей таблице показаны используемые команды:

Установка модуль в ядре $insmod josfs.ko
Проверка на посмотреть, есть ли модуль установлено $lsmod
Монтаж файловая система в каталог в Linux ФС $/bin/mount -t josfs нет проверки
Демонтаж в файловая система Проверка суммы
Удаление модуль из ядро $rmmod josfs

Учащиеся, планирующие использовать лабораторию SEASnet, должны знать о следующих скриптах:

sudo /root/fixMachine
sudo /root/runjosfs

  1. $sudo /root/fixMachine (это загрузит сценарий runjosfs в /root и добавит его в /etc/sudoers.