
Сегодня пользователь @apokhmel исполнил мою давнюю мечту, подарив оригинальную консоль GBA SP. Эта культовая портативная система, увидевшая свет в 2003 году, стала эволюционным развитием классического GBA: инженеры добавили складной корпус и качественную подсветку экрана — сначала на лампах, а позже и на светодиодах.

Внутри консоли скрывается проприетарная «система на кристалле» (SoC) разработки Nintendo. Чип AGB BE объединяет процессор ARM7TDMI (16 МГц), который для своего времени был весьма прогрессивным, и сопроцессор Sharp SM83, унаследованный от оригинального GameBoy (интересный гибрид архитектур 8080 и Z80). Графическая подсистема PPU по своим возможностям близка к архитектуре SNES: она поддерживает семь режимов вывода, работу со спрайтами, тайлами и даже аффинные преобразования. Звуковой тракт SPU сочетает в себе классические генераторы звука от GB и полноценный ЦАП для воспроизведения PCM-аудио. Дополняют картину встроенные таймеры, DMA-контроллер и другие вспомогательные узлы.

Организация памяти также заслуживает внимания. Процессор использует две параллельные 16-битные шины: одна ведет к внешней SRAM (256 КБ), вторая — непосредственно к картриджу. Поскольку выборка 16-битного машинного слова требует двух тактов чтения, инженеры применили остроумное решение с использованием общих линий адреса и данных на картридже: встроенный в ROM сдвиговый регистр сохраняет адрес банка, после чего переключает линии в высокоимпедансное состояние для передачи данных. Гениально в своей простоте!
Для компенсации медленной внешней памяти разработчики добавили в сам процессор 32 КБ сверхбыстрой SRAM, подключенной напрямую через внутреннюю шину AHB.
Забавно, что ядро ARM7TDMI массово использовалось в мобильных телефонах начала нулевых — например, в легендарных Motorola E398, Samsung C100 и Nokia 3310, лишь с разницей в рабочих частотах.

В ранних версиях GBA и GBA SP система питания была реализована на двух дискретных чипах: S6403 (DC-DC преобразователи на 1.8В, 3.3В и повышающий на 5В для совместимости с классическими картриджами) и MM1581 (контроллер заряда, который часто перегревался и выходил из строя). В поздних ревизиях их объединили в единый узел, который, увы, подвел в моем экземпляре.

АКБ оказался мертв. Тесты с лабораторным блоком питания показали, что консоль запускается, но не видит картридж. Потребление было в пределах нормы (40–80 мА — инженеры Nintendo определенно знали толк в энергоэффективности!), пока случайное короткое замыкание не подтолкнуло ток до 300 мА. Оказалось, консоль «купалась» в жидкости, и коррозия под микросхемой питания сделала своё черное дело.

Хотя защита от переполюсовки и КЗ присутствует, залитие окончательно добило контроллер. Диагностика подтвердила типичную для этой ревизии неисправность: выгорел именно чарджер. Решение — либо замена чипа с «донора», либо модификация схемы с использованием LTC4054. К счастью, все остальные компоненты остались в строю.

Наличие подписанных контрольных точек значительно упростило задачу. Вскоре я найду донорскую плату, чтобы пересадить контроллер и вернуть консоль в исходное состояние.

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

Тем не менее, даже с таким дисплеем GBA отлично справляется с 2D-проектами. Стабильные 60 FPS достигаются за счет аппаратной работы PPU, который избавляет процессор от «тяжелого» блиттинга и трансформаций. У меня зреет идея написать кроссплатформенную игру (аналог «Танчиков»), адаптированную под архитектуру PPU, но портируемую также на Windows Mobile, Symbian и современные ПК с единой кодовой базой.

Если вам близки такие темы, подписывайтесь на мой Telegram «Клуб фанатов балдежа», где я делюсь процессами ремонта, моддинга и низкоуровневого программирования для старой электроники.


_large.jpg)