Частина перша: інструментарій дрібносерійного винаходу велосипедів
Чому і навіщо: довга і необов'язкова преамбула
Впадати в єресь порівняння танків з іншими MMO не буду, так як добре знайомий тільки з танками. Тим більше не знайомий ні з одним іншим проектом, використовують BigWorld, тому щиро вірю WarGaming'у на слово, що існують і (не) тривіально (не) долаються різні техномагіческіе обмеження движка - на розмір карти, на максимальну швидкість юніта, на чисельність команд та інше. Залишаючись в рамках внутрішньої критики, я також розумію, що, з точки зору цільової аудиторії танків взагалі, і їх активного ігрового ком'юніті зокрема, кожне нововведення з чергового патча, безумовно, набагато більш затребуваним і обгрунтовано, хоч би малим воно не було. І що оптимізувати Motion Blur на кілька відсотків це, безумовно, важливіше, ніж скасувати принципову незмінність прив'язки дій на кнопки миші для тих, хто звик на них ставити рух вперед-назад (DOOM-стайл, так).
WOT надає широкі можливості модостроітельства, але така ідея виходить за рамки класичного «замінити пару swf-файлів на свої». Буде потрібно перехоплення і розбір самого ігрового протоколу для того, щоб мати можливість передати на командирський планшет своє бачення ігрової ситуації.
У цій статті я постараюся розповісти про найбільш популярних і корисних модифікаціях UEFI BIOS, умови їх застосування та способи пошуку. Крім цього, на описаної в першій частині утиліті UEFITool світло ще не зійшовся клином, тому будуть згадані та інші програми, які використовуються для модифікації UEFI BIOS'ов різних виробників.
Якщо тема вам цікава - ласкаво просимо під кат.
Після багатьох років заняття чим не попадя, вирішив повернутися до витоків. До програмування. Знову ж таки, через велику кількість «сучасних досягнень» в цій галузі було важко визначитися, чого ж насправді не хватет, за що взятися щоб було і приємно і корисно. Спробувавши багато чого потроху, все ж вирішив повернутися туди, куди тягнуло з перших днів знайомства з комп'ютером (ще з копією творіння сера Синклера) - до програмування на асемблері. Насправді, в свій час Асемблер я знав досить непогано (в даному випадку говорю про x86), але майже 15 років нічого на ньому не писав. Таким чином це своєрідне повернення «блудного сина».
Але тут чекало перше розчарування. Знайдені на просторах Інтернету книги, керівництва та інші довідники по асемблеру, на мій превеликий жаль, містять мінімум інформації про те, як треба програмувати на асемблері, чому саме так, і що це дає.
Остання частина інфраструктури USB - хаби. Хоча хаби - окремі USB-пристрої, вони досить тісно пов'язані з іншими частинами інфраструктури, щоб специфікація хабів була частиною основної специфікації USB, а код підтримки - частиною ядра, розташованої в файлі bus / usb / hub.inc.
Хаби мають код класу пристрою 9, код підкласу пристрої 0 і три варіанти 0, 1, 2 для коду протоколу. Згідно зі специфікацією USB, HighSpeed-хаб зобов'язаний підтримувати режим роботи з єдиним TT для всіх своїх портів, і додатково може, але не зобов'язаний, підтримувати режим роботи з окремим TT для кожного порту. Типовий випадок - режим з різними TT відсутня, тоді код протоколу дорівнює 0. У разі підтримки такого режиму в даних конфігурації повинні бути два варіанти дескриптора інтерфейсу з однаковим номером інтерфейсу. Тоді код протоколу 1 ідентифікує режим з єдиним TT, який повинен бути прийнятий за замовчуванням, а код протоколу 2 - режим з різними TT, що включається командою SET_INTERFACE. Існування в живій природі хабів, що підтримують режим з різними TT, не підтверджене, як і користь від цього режиму, тому драйвер хабів навіть не намагається його знайти і включити і просто використовує режим єдиного TT, включений за замовчуванням.
Виявивши інтерфейс класу 9, рівень логічного пристрою читає структуру usb_hub_callbacks. що містить покажчики на функції драйвера usb_hub_init і usb_hub_disconnect. Робота драйвера починається, коли рівень логічного пристрою викликає usb_hub_init. і закінчується, коли рівень підтримки каналів викликає usb_hub_disconnect у відповідь на відключення пристрою.
Для мене Dendy завжди була чимось більшим, ніж просто приставкою. Я не тільки грав в неї, а й чимало часу провів усередині неї з паяльником в руках для деяких простих модифікацій. По дорозі куди-небудь я часто розмірковував про те, як же створюються ці ігри і як це працює всередині. Напевно, багато хто з вас колись задавалися подібними питаннями, така вже натура майбутніх IT-шників.
Пройшли роки. З певною періодичністю занурювався в ему-тему, вивчаючи все нове на тематичних сайтах, але я не наважувався зануритися у вивчення асемблера 6502 і архітектури NES. Внутрішній конфлікт раціонального і ірраціонального. Я довго переконував себе, що мені не потрібно витрачати на це час, але ... зірвався. Дивлячись на те, які цікаві речі роблять ентузіасти ему-сцени, я взявся за свою давню ідею зі світлою думкою: «Я теж зможу!». Два тижні пролетіли непомітно, я ледве зміг зупинити себе. І так, тепер я знайомий з асемблером без команд множення, про що раніше тільки чув у пісні про програмістської молодості.
Дуже ймовірно, що зараз ви згадали свій перший картридж для Dendy і меню з романтичним сюжетом і приємною музикою. На таких картриджах ніколи не було «серйозних» ігор, і не дивлячись на гучні написи типу 9999-in-1, їх зазвичай було щось близько п'яти. Але це меню ... Хіба це не шедевр китайської думки. ) Мені з дитинства подобалася ця мелодія (Unchained Melody), а фонові зображення зараз навіюють купу ностальгічних спогадів. Тому я взяв IDA і аналізувати код меню 300-in-1. вирізав все зайве, виправив помилки, додав фейдінг та трохи приємних дрібниць - і вийшла демка Unchained Nostalgia (для запуску потрібен емулятор, наприклад, Nestopia), є запис на YouTube.
Хочете також зануритися в олдскульний програмування? Ділюся самим корисним і цікавим, що я знайшов по темі.