Script & Soopchik
Привет, я тут собираю адаптер для Raspberry Pi, модульный такой. И все думаю, как вдохнуть новую жизнь старым контроллерам от Nintendo DS. Какие у тебя есть лайфхаки или скрытые фишки, чтобы эти старички заиграли по-новому?
Привет, короче, контроллер от DS – это по сути простая плата на PIC с 2-осевым потенциометром и парой кнопок. Никакой прошивки, которую можно прошить, как на микроконтроллере, нет, но ты можешь обернуть его в небольшой слой прошивки на стороне Pi. Сначала достань DS из пластика, разбери плату и припаяй ATtiny85 или STM32 к пинам кнопок. Это позволит переназначить входы, добавить рутину устранения дребезга или даже заставить мотор вибрации работать на любой комбинации кнопок. Если хочешь получить это ощущение "современного" устройства, подключи OLED или тонкую светодиодную ленту к той же плате, чтобы получать визуальную обратную связь, когда контроллер бездействует – у DS этого никогда не было, поэтому это будет ощущаться как что-то новое.
На Pi напиши простой демона в пользовательском пространстве, который будет читать USB-CDC последовательный порт от ATtiny и переводить его в стандартный HID-отчет. Тогда твой модульный адаптер сможет маскироваться под классический контроллер PS/2 или даже Bluetooth HID-донгл.
Если ты любишь "хакерскую" сторону, припаяй крошечный ESP32 к шине I²C контроллера DS (DS использует последовательную шину I²C для своей системы меню). Прошей его кастомной прошивкой, которая будет выдавать себя за контроллер GameCube – это скрытый трюк, о котором редко говорят. Результат: контроллер DS, который может управлять современной PC-игрой с полным функционалом геймпада, но все еще пахнет пылью и старым клеем Nintendo.
Просто помни, чем больше ты ковыряешься, тем меньше у тебя останется времени на ужин. И ты все еще должен сделать резервную копию своей коллекции чит-кодов 2007 года.
Отличный план, кстати, с ATtiny – ход классический. Только проверь распиновку перед пайкой – неправильно подключенная кнопка может сломать всю логику антидребезга. Если выберешь ESP32, советую добавить маленький светодиод индикации, чтобы понимать, работает ли прошивка, а то потом будешь гадать, что там на шине I²C происходит. И не забудь припрятать запасной двухпозиционный потенциометр, вдруг основной износится после всех правок. Удачи, и постарайся не съесть все детали макетки до ужина!
Отличное напоминание, спасибо! Захватил новые макетные планки перед началом переделок – эти мелкие резисторы уже пропадают с моего стола. Кстати, всё ещё ищу надёжный двухкоординатный потенциометр; старый, похоже, отправился на покой. Не волнуйся насчёт макетки – я оставлю её отдельно от основной платы, чтобы случайно не скормить ESP32 лишнего. И да, светодиод статуса добавлю, без него жить невозможно – не поймёшь, жива ли прошивка, пока Pi не загрузится. Удачи и тебе, а я постараюсь не съесть всю макетку до ужина.
Звучит как хорошая подготовка – просто захвати пару триммеров на 10 или 20 килоом, они дешёвые и дадут нужный диапазон. Индикатор на светодиоде – просто спасение; я всегда использую синий на 5 миллиметров, чтобы было видно на плате. Удачи с заменой, и не загораживай макетной платой ESP32!
Да, триммеры – это главный секрет для достижения аналогового звучания. А синий светодиод – просто спасение, потому что я постоянно теряюсь в свечении платы и забываю, куда там какие провода от кнопок идут. Я оставлю макет слева от стола, там где обычно кошка сидит, чтобы ESP32 не подумал, что это закуска. Удачи, и не забудь подкрепиться заодно.
Звучит как отличный план – только убедись, что триммеры и потенциометр расположены на одной стороне платы, чтобы ты мог на ходу их подкрутить. И не забудь выровнять синий светодиод с шиной питания; он осветит всё и даст ту самую “живой статус” индикацию ещё до того, как Pi загрузится. Удачи, и да, перекуси чем-нибудь, пока кот не начал шалить.