Смертная казнь в Китае окутана множеством мифов и легенд, причём как и в самом Китае, так и за рубежом (в том числе и России). Начнём с того что в наше время публично не расстреливают. Тем более на стадионах. Хотя справедливости ради, во времена Культурной революции (1966-1976 г.) такое действительно иногда случалось. Но в 1979 году был принят новый закон, чётко устанавливающий порядок исполнения приговоров. Приговоры должны быть объявлены публике, но не должны исполняться публично. И в 1988 году Верховный суд Китая издал указ о запрете проведения каких-либо публичных мероприятий с осуждёнными. Не отрицаю что возможны были единичные случаи когда этот закон нарушался и приговоры действительно исполнялись публично. Но это как правило сопровождается скандалом, расследованием, и дисциплинарными взысканиями для организаторов. Самое близкое к этому - публичные митинги по оглашению приговоров (公判大会). И СМИ (причём государственные) иногда пытаются выдать их за публичные казни, тем самым вводя в заблуждение множество людей. Масло в огонь подливают известные блогеры такие как Александр Зубарев, который добавил что на стадионе расстреляли Лая Сяомина (赖小民) - чиновника приговорённого к смертной казни за хищение бюджетных средств в крупном размере. Это разумеется бред. Его не расстреляли, а сделали смертельную инъекцию (что в наше время более распространено, особенно за экономические преступления). А она проводится не на каком то стадионе, а в специально оборудованном помещении в суде, либо в специально оборудованном фургоне полиции (что намного дешевле чем первый вариант). То есть при таком методе исключена какая-либо возможность исполнения приговора на публике.
Лай Сяомин в суде
Публичный митинг по оглашению приговоров (公判大会) - это мероприятие на котором общественности объявляются уже вынесенные в суде приговоры преступникам. Преступников при этом выставляют напоказ, с табличкой на шее (и часто опущенной головой от стыда) на которой написано их имя и преступления. Если им вынесен смертный приговор, имя символично вычёркивается красным крестом. Он как-раз таки проводится на стадионах, площадях, и прочих местах.
Его цель - предупредить людей о том что не стоит совершать преступления, и что они будут караться строго. Также он выполняет роль урока юридического образования. Часто школы туда приводят учеников, в качестве экскурсии. Особенно распространены они были в период проведения кампании "суровые меры против преступности" (1983-1987 г.).
Они также спорны с точки зрения закона. Многие китайские юристы считают их незаконным на основании указа 1988 года, и на основании Конституции Китая, в которой на первом месте стоит уважение и защита прав человека (не важно осужденного/неосужденного). Также в 2003 году Верховный суд Китая издал ещё одно постановление, чётко указав что публичные митинги и суды не допускаются. Тем не менее публичные митинги по-прежнему проводятся, несмотря на давление со стороны власти.
Публичные митинги часто предшествуют казням. После них осуждённых погружают на грузовики (или в фургоны), и кортеж отправляется на место казни. На обочине дороги за ней часто наблюдает толпа.
Процедура исполнения смертных приговоров
С момента становления современного Китая (в 1949 г.) смертные приговоры приводились в исполнение путём расстрела. С 1997 года они могут исполняться путём смертельной инъекции. Осуждённого ложат на кушетку, пристёгивают ремнями, и вставляют иглу ему в вену. Затем поочередно вводятся 3 препарата - тиопентал натрия (вызывающий потерю сознания), бромид панкурония (вызывающий паралич мышц и остановку дыхания), и хлорид калия (вызывающий остановку сердца). Перед каждым препаратом сначала промывают солевым раствором. Смерть наступает в течении 10 минут.
Внутри "фургона смерти"
В настоящее время смертельная инъекция используется всё больше и больше. Во многих провинциях (таких как например Цзянсу) ей полностью заменён расстрел. В некоторых провинциях используется и расстрел и смертельная инъекция, причём первое используется для более серьёзных преступлений (таких как убийство и наркоторговля), а второе используется для менее серьёзных (например экономических преступлений, таких как взяточничество и хищение). Между прочим у смертельной инъекции есть существенный минус - она банально дорогая. Строительство специального помещения стоит около 1 миллиона юаней. Большинство городов пошло на компромисс, и используют специально оборудованные фургоны полиции, они стоят около 700,000 юаней, что почти в 2 раза дешевле.
"Фургон смерти"
Наибольший интерес представляет расстрел. Перед выездом из тюрьмы, осуждённых связывают пеньковой верёвкой особым образом, чтобы максимально обездвижить их. Верёвка проходит вокруг шеи на случай если осуждённый будет кричать, тогда конвоир потянет за верёвку. Также связывают штанины осуждённых, на случай если они будут ходить под себя. Преимущества верёвки в том что в отличие от наручников и кандал её можно легко снять, потянув за один конец.
В тюрьмах не расстреливают поскольку это считается негуманным (заключенные будут слышать выстрелы). Он проводится на так-называемом месте казни (刑场). В идеале это специальный закрытый полигон. И в некоторых крупных городах (таких как Пекин, Шанхай, Гуанчжоу, Дунгуань, и другие) он есть. В остальных же городах (таких как Чжэнчжоу) такого полигона нет (он тоже дорогой), и приходится импровизировать (примерно как сходить в кусты при отсутствии поблизости туалета, извиняюсь за выражение).
Полигон в Дунгуане.
Закон допускает использовать любой участок земли в качестве места казни, но с условиями. На месте казни должны быть хорошие условия дорожного движения (для беспрепятственного подъезда кортежей), но в то же время оно не должно располагаться вблизи автомагистралей, шумных городов, или туристических мест, чтобы не наблюдало слишком много людей (и не дай бог сняло и выложило в Сеть). Также должны быть препятствия (дерево, мишень, бугор) чтобы пули не причинили вреда невинным людям. На практике место казни обычно устраивают неподалеку от похоронного бюро, для облегчения процесса транспортировки тел в крематорий. Вокруг места казни выстраивают охрану чтобы никто не смог близко приблизиться.
На месте казни (к/ф "Судья/透析", 2009 г.)
По прибытию на место казни, осуждённых выгружают из машин. Осуждённых фотографируют (для архива). Затем их выстраивают в шеренгу, и ставят на колени, спиной к исполнителям.
Роль исполнителей выполняют сотрудники судебной полиции (ранее это были солдаты вооружённой милиции), в паре на одного осуждённого (на случай нештатных ситуаций). В качестве оружия используются автоматы Тип 56, Тип 81, а также пистолеты Тип 54. Они заряжены только одним патроном. Исполнитель целится либо в затылок, либо в левую спину (в сердце).
По команде исполнители одновременно производят один выстрел, и осуждённые падают вперёд, на землю. Судмедэксперт проверяет пульс каждого осуждённого. Если он жив, то второй исполнитель делает ещё один выстрел. В некоторых случаях потребовалось аж 5 выстрелов.
Осуждённых фотографируют второй раз, уже посмертно.
Потом осуждённых упаковывают в мешки для трупов, загружают в фургон, и увозят в похоронное бюро для кремации. Если осуждённый согласился на донорство органов, то труп увозят на скорой помощи, в больницу.
После этого родственникам осуждённых приходят счёта за патроны, размером в 50 юаней.
И вот так работает система смертной казни в Китае.
На этом пост подошёл к концу. Это мой первый подобного рода пост. Надеюсь вам понравилось. Спасибо за внимание!
PS: для неслабонервных лиц страдающих от болезненного любопытства, есть данный канал.
Смертная казнь в Китае по мнению Зубарева (к/ф "Дурная кровь/灭门", 2010 г.)
Пожалуй, многие из вас помнят, какими были мобильные игры до и после выхода первого iPhone. В начале 2000-х годов, ещё до появления яблочного смартфона, игры для телефонов в основном были весьма интересными, но тем не менее, достаточно простенькими с точки зрения графики и реализации в целом. После запуска AppStore в 2008 году, на iPhone начали выходить самые разные красочные, невиданные раннее по уровню детализации и проработке 2D и 3D игры. Но появление таких игр — отнюдь не заслуга Apple, а относительной малоизвестной компании PowerVR (подразделение Imagination Tech), которая смогла разработать на базе видеочипа Dreamcast и внедрить один из первых действительно массовых мобильных 3D-ускорителей, имя которому — PowerVR MBX! Сейчас мы с вами привыкли, что почти любой дешевый смартфон может отрисовывать графику уровня PS3 в 1080p, а то и выше, но когда-то даже уровень PS2 был роскошью… Сегодня мы с вами: узнаем предысторию появления аппаратно-ускоренной 3D-графики на телефонах, рассмотрим такую фирменную фишку PowerVR, как тайловый рендеринг, а в практической части статьи нам поможет легендарный КПК Dell Axim X51v с MBX на борту, под который мы напишем 3D-игру «про жигули» с нуля! Интересно? Тогда добро пожаловать под кат!
❯ Мобильная 3D-графика. Начало
Пожалуй, 3D-графика на мобильных устройствах начала развиваться ещё с самого начала 2000-х годов. К тому моменту, как мобильные телефоны научились запускать сторонние Java-приложения, практически сразу же появился прибыльный рынок мобильных игр. Ещё до появления поддержки jar-приложений, люди ставили рекорды в «Змейке» на телефонах Nokia, таскали ящики в «Строителе» на Siemens и играли в другие предустановленные игры на девайсах других брендов, поэтому было очевидно, что игры на мобильных телефонах рано или поздно смогут занять немалую часть сегмента портативных игровых устройств.
Именно появление J2ME дало тот самый толчок для развития мобильного гейминга. Производители телефонов активно развивали и дорабатывали мобильную платформу, добавляя в неё различные API-расширения — например, активацию приложений через СМС и доступ в WAP-интернет. Сама платформа J2ME была достаточно простой для изучения и имела низкий порог вхождения не только для людей, имевших какой-то опыт программирования, но даже для совсем новичков, которые никогда не писали код и тем более игр! Благодаря этому, появились сотни игр, многие из которых до сих пор помнят и любят: это и легендарный «мячик» Bounce, и «зайчик с морковками» Bobby Carrot, и весьма крутой Gish, а также множество различных платформеров по известным фильмам и «большим» играм!
В 2003 году появился Nokia N-Gage — первый массовый телефон, ориентированный именно на мобильный гейминг, который поддерживал не только Java-игры, но и собственные Symbian-игры с достаточно крутой 3D-графикой! Примерно в том же 2003 году, для платформы Java вышло сразу два API-расширения, которые добавляли поддержку симпатичной 3D-графики даже в самые простенькие и бюджетные телефоны: Mobile 3D Graphics (M3G, была почти везде) и Mascot Capsule (эта платформа была только на Sony Ericsson и Motorola). Именно благодаря этим API, мы с вами увидели такие легендарные игры, как V-Rally, Galaxy on Fire, Deep3D и многие другие! Но тем не менее, эти API были относительно медленными из-за программной растеризации на процессоре без отдельного 3D-ускорителя и весьма ограниченными в функционале. Ближайший пример по функционалу — уровень софтрендера первой кваки на первом Pentium! Кстати, про 3D на мобильных телефонах я писал отдельную статью, там в практической части мы пишем 3D-бродилку для Sony Ericsson!
Но помимо кнопочных телефонов, существовал сегмент High-end мультимедийных устройств, которые предоставляли гораздо больший функционал и производительность за немалые деньги. И речь, конечно же, о КПК! Девайсы, работавшие на базе шустрых процессоров Intel PXA и Samsung S3C с Windows Mobile на борту были заметно более перспективными для игр… но как-то не задалось из-за отсутствия нормальных каналов для распространения. Но тем не менее, Intel (иронично, но один из самых больших производителей ARM-чипсетов для КПК в те годы), которая уже занималась развитием десктопной графики GMA и PowerVR активно работали в этой сфере и результатом стало появление видеоускорителя 2700G, который представлял из себя не только 3D GPU PowerVR MBX Lite, но и аппаратный декодер видео, позволявший смотреть видео в высоком качестве! MBX Lite позволял запустить даже Quake 3 в 640x480 (!), пусть и в 10-15 FPS… Ещё за 5 лет до этого, далеко не все десктопные видеокарты могли выдать больше 30 FPS в 800x600!
Конечно в 2004 году уже вышел PSP, выставивший новую планку уровня 3D-графики для портативного гейминга, однако для смартфонов и КПК, уровень графики, разрешение и производительность 3D-игр на MBX Lite был просто немыслимым! Одним из самых легендарных и популярных устройств с 2700G, которое вы можете приобрести достаточно дешево и сейчас, был КПК Dell Axim X51v, флагманская модель с VGA-дисплеем тех лет. Но нельзя сказать, что только PowerVR работала в этом направлении. Параллельно NVidia выпустили GoForce, крайне редко попадающийся в «полноценном» виде (NVidia предлагала дешевле лицензировать только видео-декодер с отключением 3D-части, как это было в Toshiba Portege G900) и ATI Imageon, который чаще всего можно встретить в виде Adreno на ранних Android-чипсетах Qualcomm (Adreno — анаграмма Radeon :)).
Тем не менее, решение PowerVR было действительно массовым: компания не предлагала отдельный чип (что обычно было дороже), как конкуренты, а лицензировала другим компаниям уже готовые IP-ядра, которые производители чипов могли синтезировать и использовать в своих собственных чипсетах, или, сопроцессорах, как в случае с 2700G. Благодаря этому, MBX появился в чипсете TI OMAP 2430, использовавшийся в легендарных Nokia N93i и Nokia N95, Samsung INNOV8, Asus Lamborghini, Nokia E90 и некоторых других. Кроме того, PowerVR MBX использовался в процессоре Samsung S5L8900, судя по всему, разработанный для iPhone 2G и 3G! Благодаря этому, его можно считать одним из первых массовых 3D GPU в телефонах!
Одна из игр для iPhone 2G и N95 — Assasins Creed
И Asphalt 5!
Весьма симпатично, согласитесь?
❯ Под капотом
Но MBX, конечно же, не появился «из ниоткуда» и был основан на более ранних разработках компании Imagination Tech, а именно GPU из полноценной домашней консоли SEGA Dreamcast — PowerVR CLX2, который в свою очередь был основан на ранних десктопных GPU PowerVR из середины-конца 90-х годов. Основная фишка PowerVR была в использовании так называемой техники отложного тайлового рендеринга (TBDR), которая, в отличии от классической растеризации и сортировки с помощью Z-буфера (или ручной сортировки треугольников) всех примитивов «в лоб» (методика, используемая в PSP, PS2 и большинстве видеокарт 2000-х годов), сначала ждёт от программы списка всех рисуемых треугольников в кадре, разбивает весь экран на тайлы (небольшие прямоугольные области), которые содержат в себе информацию о пересекающихся треугольниках, а затем процессом, несколько схожим с рейтрейсингом, определяет, какой из пикселей треугольника ближе всего находится к камере наблюдателя. Таким образом, мы избавляемся от необходимости сортировки геометрии с помощью Z-буфера (который сам по себе занимает достаточно много, по меркам тех лет, памяти и страдает от проблем точности и Z-fighting'а), а также такой метод позволяет реализовать более дешевый альфа-блендинг без ручной сортировки полупрозрачных примитивов и имеет ещё одну приятную фишку — «бесплатный» Occlusion Query, который можно использовать для реализации продвинутых техник отсечения невидимой глазу геометрии.
Производительность PowerVR MBX была весьма достойной для своих лет: при частоте работы в 200МГц, видеочип обеспечивал филлрейт в 100Мп, обрабатывал до 1млн треугольников в секунду. Нативным графическим API MBX был OpenGL ES 1.1 — специальная урезанная версия OpenGL для встраиваемых устройств, из которой выбросили все ненужное и которая заточена не только под floating-point, но и под fixed-point арифметику. В остальном, особо никаких отличий для программиста по сравнению с обычными GPU не было, можно было без проблем портировать уже существующие приложения для десктопого OpenGL для мобильные девайсы, чем и пользовались энтузиасты при портировании Quake 3 на Nokia E90, КПК и другие девайсы. Также, PowerVR MBX поддерживал D3DM — графический API Windows Mobile, о котором мы поговорим позднее.
Однако PowerVR MBX был GPU с фиксированным конвейером (FFP), а не программируемым, как принято в современных 3D-ускорителях. Что-же такое программируемый и фиксированный конвейер? Давайте разберемся:
Фиксированный конвейер: для того, чтобы задать визуальную составляющую рисуемой геометрии, программист оперирует набором заранее определенных при проектировании видеочипа параметров, которые позволяют управлять внешним видом растеризуемых примитивов. Например, для реализации света, программист задает параметры каждого из 8 источников света влияющих на рисуемый объект. Если программисту необходимо наложить несколько текстур за один проход (например, для реализации плавных переходов текстур на ландшафте или нанесения карты отражений на модель), он оперировал комбайнерами, которые позволяли задавать для каждого сэмплера параметры наложения. Такой подход использовался на десктопных GPU эпохи до GeForce 3 (т. е. примерно до 2000 года), до PS3 на Sony PlayStation (Xbox сразу вышел с GeForce 3) и до PSP включительно на портативках. Очевидно, что такой подход сильно ограничивает программиста в том, как будет выглядеть его игра на той или иной видеокарте.
Программируемый конвейер: в программируемом подходе, для управления визуальной составляющей программист пишет небольшие программы для видеокарты, называемые шейдерами. Всего есть два базовых (в современных GPU их больше) этапа программируемого конвейера: первый из них — вершинный шейдер, отвечающий за трансформацию геометрии (перевод из мировой системы координат в экранную) и, например, анимацию. Трансформированные вершины отправляются в следующий этап конвейера — растеризацию, где выполняется уже пиксельный шейдер, который определяет цвет пикселя (или более корректно — фрагмента в терминологии 3D графики) — т.е например, окрас объекта в определенной цвет, текстуру (или несколько текстур), рассчитывает попиксельное освещение, накладывает тени и т. д. Кроме того, такой подход позволяет реализовать сложные техники типа Ambient Occlusion, SSR, а также пост-эффекты (например блюр/блум, правда эти два можно «сэмулировать» и на FFP при определенной сноровке).
К 2007 году, Khronos выпустили спецификацию второй версии OpenGL ES, которая добавляла в мобильные устройства поддержку программируемого конвейера и шейдеров. Таким образом, мобильные GPU всё ближе приближались к уровню консолей и могли выдавать вполне годную графику, близкую к консолям. Даже была когда-то такая консоль, как Zeebo, которая работала на базе смартфонного чипсета Qualcomm с графикой ATI Imageon (!). PowerVR уже в 2009 выпустила серию SGX, которая также использовалась в iPhone, iPad, многих Android-смартфонах и планшетах, а также PS Vita!
Modern Combat 3 на iPad
Но статья с пересказом фишек PowerVR MBX была бы не особо интересной без практической части с написанием 3D-игры под этот GPU с нуля! Поэтому предлагаю посмотреть на нашего сегодняшнего гостя, легендарный флагманский КПК Dell Axim X51v из далекого 2005 года! Для тех лет, это настоящий «жир»:
Его мне подарил мой читатель Сергей с Хабра, за что ему огромное спасибо! Девайс был в полной комплектации, даже с флэшкой и усиленной АКБ, которая до сих пор неплохо держит заряд, однако у него не работал тачскрин. Если вам интересен только процесс программирования игры, а не аппаратного ремонта, то листайте ниже сразу до следующего абзаца :)
❯ Практическая часть: ремонтируем КПК
По факту, девайс полностью работал, однако в некоторые моменты времени не откликался на кнопки и тачскрин, и по всем симптомам это напоминало дребезг кнопок. При этом тачскрин сам по себе реагировал нормально во всех местах, что, фактически, исключало вероятность его поломки (хотя резистивные тач-панели сами по себе не особо надежные, в отличии от емкостных тачскринов). Дело было вот в чём: во многих КПК тех лет был отдельный аппаратный переключатель блокировки клавиатуры и тачскрина, который можно было использовать при просмотре фильмов. Однако на моем девайсе он был слишком разболтанным…
Разбирается КПК несложно: выкручиваем 4 винта и снимаем переднюю часть корпуса. На всякий случай я прочистил грязь между тачем и верхней частью корпуса — она тоже бывает влияет на ложные нажатия и чувствительность тачскрина:
А вот и виновник наших проблем: рычажок переключателя был отломан, но все еще находится в положении «разблокирован». Даже если в выжать в упор — он все равно не работал. Ну что ж, фен в руки, сдуваем переключатель и ставим вот такую перемычку (на фото флюс ещё не отмыт):
Включаем девайс и смотрим — теперь всё работает! Вот такой простой и быстрый ремонт Axim'а. КПК мне сразу очень понравился, я и ранее знал о его легендарности, но теперь узнал и о том, что он очень круто спроектирован и собран! Кстати, есть смысл сразу сдуть концевой выключатель, который прижимает задняя крышка и заменить на перемычку. GPU не очень хорошо работает на кастомных прошивок, на которую прошиты многие Axim X51v. Поэтому есть смысл прошить сток: качаем прошивку (Файл отката), закидываем на SD-карту и ребутим девайс нажатием клавиш Wi-Fi + включение + Reset. После этого, девайс пойдет прошиваться.
Теперь девайс чистый, как с завода! Можно приступить к написанию небольшой демки-игрушки, которая сможет продемонстрировать нам перспективы нашего КПК в 3D!
❯ Практическая часть: подготовка
Изначально, в практической части статьи должна была участвовать не менее легендарная Nokia N95. Однако вот незадача: несмотря на то, что под Symbian сохранился SDK (который работает нормально только под Windows XP), на устройствах с системой старше 9.x необходимо взламывать installserver, дабы иметь возможность ставить хоумбрю программы (к которым относится и наша игра) и отладчик TRK.
И хотя свой девайс я пропатчил, дебаггер нормально поднять мне так и не удалось. Я смог проинициализировать контекст GLES, запилить примитивный рендерер с загрузкой ассетов из памяти устройства но потом решил перевести проект на WinMobile… Проблем с разработкой под Symbian много: если приложение крашится — то оно просто закрывается, без сообщений и логов. Добавьте к этому то, что в Symbian вообще нет исключений и не всегда можно записать ошибки в лог и отладка превращается в ужас. Ситуацию исправляет Qt, который работает на N95, но в котором нет поддержки GLES (по крайней мере, в виде обычного QOpenGL, хотя возможность юзать API системы из Qt есть и дебаггер там работает нормально, так что не всё потеряно). Если вы когда-то что-то пилили под Symbian, особенно в Carbide — пишите свой опыт в комментариях, интересно почитать :)
WinMobile не менее интересен тем, что в нём поддерживается сразу два графических API: классический OpenGLES в профиле Common Lite (только fixed-point арифметика) и мобильная версия Direct3D — D3DM.dll, которая предоставляет API очень похожее на DX9, но без поддержки шейдеров. Что не менее приятно — есть официальные биндинги от Microsoft к D3DM в .NET Compact Framework, что позволяет легко писать 3D-игры под WM на C#/VB.NET. Поскольку WinMobile — достаточно открытая для пользователя система, хватит лишь накатить VS2005/2008 на машину с WinXP/WinVista/Win7/Win8 и сразу начать разрабатывать под неё приложения, никаких проблем с отладкой и запуском приложений тут нет. На Win10/Win11 совместимость с WM5 поломали :(
Создаём приложение для смарт-устройств, выбираем в качестве целевой платформы WM5-устройство (эмулятор будет слишком медленным для наших целей, он даже для 2D-игр не подойдет) и, наконец-то, приступаем к написанию игры!
Что же за игра у нас будет? Я решил сделать эдакое 3D-переосмысление популярного в прошлом бесконечного раннера из «тетриса», где мы едем на машинке F1 и обгоняем другие машины, стараясь в них не врезаться. Основной целью является набрать как можно больше очков. Подобные игры достаточно популярны на мобильных девайсах и сейчас: вспомнить хотя-бы Highway Traffic, однако мой вариант будет весьма колоритным: ведь в моей демке мы будем кататься на ТАЗе 21099 и уворачиваться от гнилых «вторых гольфов». Ну а почему бы и нет, я просто очень люблю старые гнилые жигули и это не первый мой проект про машины этого производителя :)
❯ Практическая часть: «движок»
Как и у настоящей машины, у каждой игры должен быть собственный движок! Однако в случае конкретно нашей игры, это скорее небольшой фреймворк, который предоставляет ровно тот функционал, который нужен игре без каких либо излишеств. Необходимо изначально распланировать требования для будущего фреймворка, дабы написание игры не скатилось в процесс, известный в узких кругах как «движкописание» :)
Рендерер: с графической точки зрения, фреймворк должен реализовывать весьма небольшой функционал. Загружать геометрию и текстуры из файлов в специально-подготовленном формате, реализовывать концепцию камеры, отрисовывать статическую геометрию, а также спрайты и текст, реализовывать примитивную систему материалов, которая позволяет наносить на геометрию текстуры, красить их в определенный цвет и управлять повершинным освещением, а также наносить на геометрию отражения с помощью специально подготовленных enviornment-текстур. Кроме того, рендерер должен уметь рисовать симпатичное анимированное небо в виде полусферы.
Звук: воспроизведение wav-звуков и музыки из файлов. Да и всё пожалуй — что ещё нужно от звуковой подсистемы? :) Стерео ведь нет, поэтому и 3D-звук не нужен.
Ввод: обработка нажатий на тачскрин и аппаратные кнопки устройства, маппинг кейкодов в виртуальный «геймпад». GUI-подсистему тоже частично можно отнести именно сюда!
Физика: AABB и Sphere vs Sphere столкновения. Никакого полноценного солвера тут и не нужно :)
Начинаем, пожалуй, с реализации рендерера. Сначала нам необходимо создать окно и контекст D3DM. Процесс практически идентичен D3D8 и D3D9: передаём информацию о нужном адаптере (видеочипе) и заполняем структуру PresentationParameters, однако есть важные нюансы: аппаратный FSAA лучше всего отключить (MultisampleQuality), а также передавайте точный размер окна, в которое собираетесь рендерить изображение, иначе система начнёт софтварно (!) скейлить рендертаргет до размера окна каждый кадр, что, как сами понимаете, крайне медленно.
Из форматов Depth-Stencil форматов поддерживается D16, D24S8 и D32. Желательно использовать D16 (несмотря на тайловую архитектуру, насколько мне известно, в MBX все равно есть fallback до классического рендеринга при некоторых условиях). Практически на всех КПК и коммуникаторах использовался 16-битный цвет, т.е RGB565, но можно указать Unknown — тогда GAPI подцепит тот формат пикселя, что используется в остальной системе.
Переходим сразу же к рисованию геометрии! Для начала рендеринга, нам необходимо подготовить состояние контекста: посчитать и установить матрицы вида (т. е. камеры) и проекции для трансформации геометрии, задать рендерстейты (список состояний, например нужно ли рисовать модельку с освещением, или нет), очистить экран и Z-буфер и установить параметры фильтрации текстур. Перспективная коррекция текстур — достаточно тяжелая операция и использовать её стоит лишь при необходимости:
public void EndScene() { device.EndScene(); device.Present();
System.Threading.Thread.Sleep(16); }
Чтобы какую-то модельку нарисовать, нам нужно сначала её загрузить! Для возможности напрямую прочитать треугольники из файла и сразу записать их в вершинный буфер, я написал небольшой конвертер из формата SMD (GoldSrc) в собственный, очень простой и легковесный формат, который состоит из позиции вершины и её текстурных координат:
foreach (SmdTriangle triangle in mesh.Triangles) { for (int i = 0; i < 3; i++) { writer.Write(FloatToFixedPoint(triangle.Verts[i].Position.X)); writer.Write(FloatToFixedPoint(triangle.Verts[i].Position.Y)); writer.Write(FloatToFixedPoint(triangle.Verts[i].Position.Z));
Обратите внимание, PowerVR MBX оперирует fixed-point арифметикой! D3DM, конечно, может автоматически преобразовывать float-координаты вершин в числа с фиксированной точкой, вот только реализовано это криво и косо: драйвер будет конвертировать все вершины в fixed-point каждый вызов отрисовки, вместо того, чтобы один раз преобразовать их после Unlock'а вершинного буфера. Теперь представьте, насколько это тормозно для хоть сколь-либо комплексной модели :)
При этом загрузчик модели при таком подходе будет очень простым и будет работать шустро даже на таком слабеньком железе:
public Model(string debugName, Stream strm) { BinaryReader reader = new BinaryReader(strm);
int hdr = reader.ReadInt32(); int numVerts = reader.ReadInt32(); int vertSize = 20;
Переходим к текстурам. Грузить напрямую png/jpg на КПК слишком долго, поэтому их я тоже перегоняю в собственный примитивный формат, который состоит из описания ширины/высоты, а также формата текстуры и собственно, самих пикселей. На данный момент поддерживаются только RGB565 текстуры — с ними MBX работает лучше всего:
public sealedclass TextureConverter { publicconstint Header = 0x1234;
Загрузчик тоже получился примитивным и шустрым донельзя, пусть и без какой либо компрессии. PowerVR MBX поддерживает собственный формат компрессии — PVRTC:
BinaryReader reader = new BinaryReader(strm);
int hdr = reader.ReadInt32(); int fmt = reader.ReadInt32();
Handle = new Texture(Engine.Current.Graphics.device, Width, Height, 1, Usage.Lockable, Format.R5G6B5, Pool.VideoMemory);
int pitch; GraphicsStream gs = Handle.LockRectangle(0, LockFlags.None, out pitch); gs.Write(data, 0, data.Length); Handle.UnlockRectangle(0);
strm.Close();
Переходим, наконец, к фактическому рисованию модели! Для этого мы строим мировую матрицу для трансформации нашей модели, а также задаем вершинный буфер для, собственно, вершинного конвейера и посылаем видеочипу команду отрисовки. ZBufferWriteEnable нужен для отрисовки геометрии без записи в Z-буфер, что можно использовать, например, для реализации скайбоксов:
public void DrawModel(Model model, Transform transform, Material material) { Matrix matrix = Matrix.RotationY(transform.Rotation.Y * MathUtils.DegToRad) * Matrix.Translation(transform.Position); device.SetTransform(TransformType.World, matrix);
void Start() { model = Model.FromFile("model.mdl");
mat = new Material(); mat.Diffuse = Texture2D.FromFile("test.tex"); }
void Update() { t = new Transform(); t.Position.Z = 150; t.Rotation.Y += 0.1f;
graphics.DrawModel(model, t, mat); }
Результат: у нас есть крутящийся кубик или любая другая произвольная 3D-модель!
Переходим к обработке ввода. Тут ничего сложного нет, ловим события KeyUp/KeyDown формы и назначаем виртуальным кнопкам их состояние.
public Input(Form parentForm) { keyState = newbool[(int)GamepadKey.Count];
parentForm.KeyPreview = true;
parentForm.KeyDown += new KeyEventHandler(OnKeyDown); parentForm.KeyUp += new KeyEventHandler(OnKeyUp); }
private GamepadKey ResolveKeyCode(Keys key) { GamepadKey k = GamepadKey.Count;
switch (key) { case Keys.Left: k = GamepadKey.Left; break; case Keys.Right: k = GamepadKey.Right; break; case Keys.Up: k = GamepadKey.Up; break; case Keys.Down: k = GamepadKey.Down; break; case Keys.Return: k = GamepadKey.OK; break; }
Теперь мы сможем управлять нашей машинкой в игре (которой пока ещё нет). Самая-самая основа для реализации игры подобного плана у нас есть, пора переходить к геймплею!
Моддинг девайсов — тема очень широкая и невероятно интересная. При желании, чего только не сделаешь со своим любимым устройством: можно кастомизировать и преобразить интерфейс девайса, портировать свежую версию системы, прошить ядро с разгоном ЦПУ… Однако помимо программного моддинга, существует и аппаратный: умельцы умудряются наращивать объем ОЗУ и постоянной памяти, менять дисплеи на более качественные и даже добавлять поддержку беспроводной зарядки/квикчарджа! Предлагаю вам взглянуть на относительно редкую, дорогую, но такую желаемую в нулевых модификацию: наращивание ОЗУ на КПК аж в два раза! Сегодня мы с вами: узнаем предысторию моддинга телефонов в нулевых, самостоятельно перепаяем чипы ОЗУ на модули большего объёма, а также разберемся в программной стороне этого вопроса. Интересно? Тогда добро пожаловать под кат!
❯ Предыстория
Пожалуй, КПК и коммуникаторы на Windows Mobile можно назвать одними из самых интересных девайсов из середины нулевых годов. Пока подавляющее число пользователей только-только пересело на кнопочные телефоны с цветными дисплеями и поддержкой WAP-интернета, владельцы КПК носили в кармане полноценный компьютер, который мог выполнять многие задачи своего «большого брата». Сёрфинг полноценного Web 2.0 интернета, редактирование и просмотр документов, прослушивание музыки и воспроизведение видео и конечно-же игры — для портативного девайса в середине нулевых это было очень круто!
i-Mate jasjar
Характеристики КПК были практически идентичными на всех устройствах: большинство девайсов работало на базе ARMv5 процессоров Intel PXA 27x с частотой 400-600МГц, Samsung S3C6410 ~400МГц, а также TI OMAP 850 на частоте ~200МГц, оснащались ~64Мб встроенной Flash-памяти и 64-128Мб оперативной памяти SDRAM. Самым ценным ресурсом была оперативная память: большинство устройств на базе PocketPC 2003 так или иначе не могли использовать встроенную Flash-памяти для хранения пользовательских данных. Девайсы с 128Мб ОЗУ ценились гораздо выше более доступных устройств с 64Мб ОЗУ.
Происходило это из-за того, что Flash-память в те годы была слишком медленной, что негативно сказывалось бы на производительности всей системы. Поэтому производители устройств пошли на хитрый шаг: они решили использовать некоторый объём ОЗУ в качестве диска для пользовательских данных, а дабы пользователь не потерял важные ему файлы при, например, замене аккумулятора, они реализовали схему отдельного запитывания модуля обновления DRAM от резервной батарейки.
Динамическая RAM устроена так, что требует процедуру регулярного обновления (термин называется RAM refresh) данных во всей банке памяти в определенные промежутки времени. Упрощенно эта процедура выглядит так: контроллер памяти в чипсете вычитывает информацию из каждой банки, а затем записывает обратно, благодаря чему информация в банке памяти не теряется. Именно для этого контроллеру ОЗУ необходимы настройки таймингов, а также для процесса, именуемый «тренировкой памяти».
Поэтому в Windows Mobile был предусмотрен отдельный «бегунок», отвечающий за объём памяти, выделенный для программ и для пользовательских данных. Хочешь запустить одновременно TouchFlo, Скайп, Аську, PocketIE и гонять в фоне музыку? Готовься переносить фотографии любимого кота на SD-флэшку и тянуть бегунок в сторону программной памяти! По умолчанию, система выделяла около 32Мб памяти под пользовательские данные и остальные 32Мб под программы. Пользователь мог выделить до ~48Мб ОЗУ для программ, чего действительно хватало для параллельной работы нескольких относительно тяжелых программ в фоне!
Однако КПК на «винде» — отнюдь не современные устройства на Android и iOS и сами программы без крайней необходимости из памяти не выгружают. В iOS и Android практикуются «скриншоты» программ, когда в диспетчере задач мы видим сохраненное состояние приложения, но по тапу приложение снова запускается и быстренько восстанавливается из ранее сохраненного состояния. Поэтому, если в устройстве заканчивалась память для программ, уже открытые приложения могли крашиться, а новые не запускаться из-за слишком малого объёма свободной ОЗУ.
Устройства на WinMobile замечательно поддавались моддингу: некоторые энтузиасты портировали более свежие версии системы, другие выпускали собственные сборки системы, подчищенные от ненужных, по их мнению, программ, дабы освободить ещё немного ОЗУ под собственные приложения. Программный моддинг был очень развит: вспомнить только «кухни» — специальные наборы программ для модификации прошивок устройств и целые ветки на форуме 4pda, где обсуждалось добавление нового функционала в девайс. Чего-уж говорить, я сам год назад добавлял поддержку Direct3D Mobile в WM2003 и подкидывал софтварный рендерер от Intel в устройство на OMAP850!
Год назад я за пару дней запилил «тридэ» леталку, использующую D3DM — софтварный рендерер в Windows Mobile.
Однако другое дело — это аппаратный моддинг, связанный с физическим вмешательством в плату устройства. Самым частым модом была замена вечно ломающегося концевого выключателя (маленький рычажок, который прижимает задняя крышка устройства. Без него девайс чаще всего не включался) на обычную перемычку, дабы девайс не подвёл в самые ответственные моменты. Другой мод — перепаковка аккумуляторов для увеличения его ёмкости. Были ещё и другие, специфические модификации — насколько я знаю, на некоторых коммуникаторах Rover радиомодуль частенько «отваливался», а девайс уходил в белый экран. Радиомодуль либо выпаивали, либо грели (а то и перекатывали), дабы он ещё поработал какое-то время. Однако самым редким, дорогим и желанным многими модом было увеличение объёма ОЗУ! Данная процедура довольно простая, однако проводилась чаще всего в мастерских: старые чипы памяти выпаивались, а на их замену припаивались новые, большего объёма. На словах все просто, однако на деле далеко не каждый мог провести такую процедуру дома: необходимо было купить чипы памяти (которые стоили около 500 рублей за один), а сами они были в корпусе BGA и для пайки необходим был паяльный фен (на строительный тоже можно было посадить — но рискованнее) и адекватный флюс для BGA (хотя я слышал истории, как мастера в нулевых сажали чипы «на пузо» чуть ли не на таблетке аспирина).
Как видите, цена на работу в СЦ была не менее 3.000 рублей, время работы — полчаса-час. Теперь вспомните, что в некоторых регионах зарплата была около 6-7 тысяч рублей в месяц… вот так вот :)
Недавно я и сам заинтересовался таким видом моддинга и решил повторить опыт умельцев из нулевых: мне удалось найти НОВЫЕ (не реклама, это единственный магазин где можно купить эти чипы в РФ) чипы памяти в блистере по 100 рублей за штучку. Давайте же проапгрейдим легендарный коммуникатор своих лет — QTek S100 aka O2 Xda Mini II aka MDA Compact!
❯ Апгрейдим
Подобному апгрейду поддаются далеко не все девайсы. К сожалению, фактически проапгрейдить можно устройства только на базе чипсетов Intel PXA, например Asus P525/550, ранние HTC и многие HP iPaq. Устройства на базе Samsung S3C6410 имеют 64Мб ОЗУ прямо на одной подложке с чипом без площадок под дополнительную память на плате, а про устройства на OMAP 850 известно мало: скорее всего, чип не поддерживает возможность использования сразу четырех банок памяти одновременно.
Этого красавца проапгрейдить не выйдет :(
Изначально с завода, на большинстве устройств с чипсетом PXA используется два чипа мобильной SDRAM памяти типа HYB25L256160AC, производства Infineon, в корпусе BGA, по 32Мб каждый. Однако существует 64Мб версия того же чипа с идентичной распиновкой, где в одном чипе расположилось сразу две банки памяти, по 32Мб каждая. По итогу нам остается только сдуть старые чипы с помощью фена, почистить посадочные площадки от остатков старых шаров и установить новые чипы памяти с помощью всё того же фена. Давайте приступим!
Я купил свой QTek S100 два года назад в состоянии «как из помойки», всего за 100 рублей. Без шуток, возможно продавец действительно посещал свалки и потом продавал по дешевке различные интересные девайсы! Лично для меня в этом нет ничего брезгливого: корпус помыть с мылом, плату почистить спиртом и вот — крутейший девайс снова в рабочем состоянии и вполне чистенький :) Аккумулятора у меня не было вообще и найти донора под перепаковку я даже не надеялся, поэтому запитывал девайс от BL-4C.
Разбираем девайс и видим плату с защитным экраном над процессором и ОЗУ. Сам экран съёмный, выпаивать его не нужно, но дабы аккуратно выпаять чипы памяти и не сдуть обвязку, придётся удалить лезвием «перекладину» на экране.
Выдавливаем под пузо чипов памяти немного флюса для BGA, берём прецизионный пинцет, фен, выставляем небольшой поток воздуха, температуру в 350 попугаев и начинаем выпаивать память по отдельности. Оба чипа сидят на бессвинце, поэтому для того, чтобы чип начал покачиваться, необходимо погреть его некоторое время. Как только чип начал «плавать» при покачиваниях пинцетом, его можно осторожно снимать пинцетом. Если снесли мелочуху, то её можно аккуратно выравнять пинцетом и поставить тем же феном обратно: поверхностное натяжении притянет элемент обратно и он встанет на место ровно, как и должно быть.
Я сначала не думал пилить контент об апгрейде памяти, поэтому фоточка совсем всратая :( Извините
Зачищаем площадку от старых шаров с помощью паяльника на 350гр и оплетки. Впрочем, шары достаточно большие — можно просто покатать шарик припоя и собрать излишки на паяльник, идеально ровно зачищать их не нужно.
Наносим флюс на посадочные площадки, примерно центрируем чип на плате и начинаем греть. Если вы не перелили флюса, благодаря поверхностному натяжению чип сам встанет на место! Почти по заводу!
Но девайс не увидит всей ОЗУ, если не поставить резистор номиналом ~0.33Ом на линию CS1 - именно она отвечает за выбор второй банки в одном чипе памяти. Можно попробовать и просто перемычку поставить, но я не гарантирую результат.
Но это не весь моддинг на сегодня! Чуть позже я кинул нормальную, красивую перемычку вместо концевого выключателя, а также перепаковал аккумулятор, установив банку от BL-4C. Она, конечно, меньшей емкости, но девайс всё равно с ней держит довольно неплохо. Обратите внимание, что BMS (плату защиты) BL-4C необходимо выпаять: коммуникатор при поиске сети потребляет довольно много, из-за чего BMS BL-4C уходит в защиту.
Включаем девайс и… он работает!
Лучше перепрошить девайс официальной прошивкой: я даунгрейдился еще до замены памяти (до этого стояла прошивка WM6.5 от Cotulla), однако после апгрейда «винда» не всегда загружалась нормально, при том что сама ОЗУ инициализировалась правильно, без каких либо проблем и ребутов. После прошивки всё снова стало нормально. Если хотите накатить кастом — то ставить нужно версию с поддержкой 128Мб ОЗУ.
Обратите внимание, что флэшер вполне честно заявляет о времени обновления в 20 реальных минут времени. В этом вина как USB 1.1, так и медленной флэши.
❯ Программная сторона вопроса
Сейчас мы рассмотрели только физическую часть замены памяти. Но некоторые читатели наверняка спросят, каким же образом коммуникатор определяет всю установленную память, если конфигурация DDR статически слинкована с первичным загрузчиком? На ПК у нас есть SPD— Serial Presence Detection, специальная небольшая флэш-память, в которой хранится конфигурация чипов и общий объём памяти на планке. В embedded-окружении чаще всего конфигурация контроллера памяти хранится в первичном загрузчике (после BootROM) — известном также как SPL.
Загрузчик HTC на устройствах PXA поддерживает несколько конфигураций ОЗУ — как минимум 64Мб и 128Мб. И судя по всему, на манер BIOS на ранних x86 машинах, загрузчик ещё на этапе тренировки ОЗУ проверяет всё доступное адресное пространство: если доступны «верхние» 64Мб ОЗУ, тогда загрузчик передаёт в Windows CE информацию о том, что установлено 128Мб памяти. На коммуникаторах Asus, загрузчик патчили для поддержки 128Мб.
Очевидно что без установки второго чипселекта (линии CS1), контроллер DRAM не сможет обратиться ко второй банке памяти в одном чипе, поэтому его установка обязательна. Иначе загрузчик не видит верхние 64Мб ОЗУ и считает, что в устройстве установлено лишь 32Мб.
❯ Каково пользоваться девайсом теперь?
Давайте глянем, как же девайс работает теперь. Пожалуй, сразу стоит упомянуть то, что у девайса изначально были перспективы к увеличению производительности: помимо возможности увеличения ОЗУ, чипсет легко разгоняется до 624МГц с стоковых 412. Очень даже бодрый результат.
Сначала я решил поиграть в классику. AoE замечательно шла и на устройствах с ~32Мб ОЗУ (т.е ранних КПК), очевидно что и на гораздо более шустром девайсе она будет идти очень хорошо. Хороший способ ознакомиться с классикой RTS, кстати!
Переходим сразу к тяжелой артиллерии. Самыми тяжелыми играми для ранних коммуникаторов считались PocketFallout и Heroes Mobile: они кушали довольно большой объём ОЗУ и что-то запустить параллельно с ними было проблематичным. Не менее тяжелой была Quake 1: игра аллокейтит для себя кучу (динамическая память) в 16Мб. Это был уже серьезный удар по свободной ОЗУ на устройствах с 64Мб памяти, QIP и PocketIE уже придется закрыть:
Но будем честны: ради игр можно было закрыть почти все приложения в диспетчере задач. А как насчет повседневных задач? Давайте откроем кучу приложений и узнаем, какое у нас будет потребление ОЗУ и общая производительность системы:
Не хило, да? Коммуникаторы и сейчас подойдут в качестве звонилок с функционалом смартфона, однако приложения под себя придётся допиливать самому. Благо API очень знакомое: в WinMobile и WinCE у нас самый обычный WinAPI, очень схожий с десктопным, а также есть немного урезанный .NET!
❯ Заключение
Вот таким был аппаратный моддинг девайсов в нулевых. Столько всего можно было сделать, имея лишь базовое оборудование! А ведь если включить смекалку, то можно заюзать КПК и в качестве одноплатников: на подавляющем числе девайсов UART без проблем можно получить с разъема для док-станции, а сама шина без проблем доступна из юзерспейса. Постараюсь развить эту тему в одной из будущих статей.
Информации по апгрейду памяти на КПК очень мало (ведь когда-то это был хлеб для СЦ) и сейчас её можно найти исключительно в архивах. Однако чем больше я посещаю паблики посвященные ретро девайсам, профильные каналы в Телеге и форумы по ремонту девайсов, я вижу всё больше упоминаний таких любимых нами наладонников! Поэтому я постарался систематизировать и собрать в кучу всю необходимую информацию для того, чтобы любой читатель мог и сам провести такую операцию в домашних условиях.
Сейчас мы привыкли с вами, что в смартфонах объём ОЗУ зачастую больше, чем в некоторых десктопных машинах. 6, 8, 12Гб — куда дальше!? А ведь когда-то и 128Мб уже было за счастье :) А какие модификации КПК были у вас и как использовали свой девайс вы? Может вы сами апгрейдили КПК? Пишите в комментариях!
P. S.: Друзья! Время от времени я пишу пост о поиске различных китайских девайсов (подделок, реплик, закосов на айфоны, самсунги, сони, HTC и т. п.) для будущих статей. Однако очень часто читатели пишут «где ж ты был месяц назад, мешок таких выбросил!», поэтому я решил в заключение каждой статьи вставлять объявление о поиске девайсов для контента. Есть желание что-то выкинуть или отправить в чермет? Даже нерабочую «невключайку» или полурабочую? А может, у этих девайсов есть шанс на более интересное существование! Смотрите в соответствующем посте, что я делаю с китайскими подделками на айфоны, самсунги, макбуки и айпады!
Понравился материал? Писать про моддинг ретро-девайсов?
Был у вас КПК/коммуникатор?
Понравился материал? У меня есть канал в Телеге, куда я публикую бэкстейдж со статей, всякие мысли и советы касательно ремонта и программирования под различные девайсы, а также вовремя публикую ссылки на свои новые статьи. 1-2 поста в день, никакого мусора!
Материал подготовлен при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, дабы не пропускать новые статьи каждую неделю!
Старый КПК, постоянно включённый в сеть зарядкой. Пока свет есть, КПК не светится (спит). Когда свет пропадает, он просыпается, экран светится. Через некоторое время он может уснуть (без питания от сети), но когда свет дадут, он снова проснётся и не заснёт, пока я не нажму кнопку выключения (согласно настройке). И таким образом можно понять, отключали ли электричество ночью, в моё отсутствие и т.п. См. видео.
Посоветуйте, плиз, как сделать такой датчик из какого-либо старого светильника, ночника и т.п.! Не КПК же постоянно держать в розетке🤣
Данная статья посвящается всем оСёминенным и обРуданным, наРабкоренным и отТрибуненным, а также другим посетителям левацкого кафе «Ле Мраксизме». Помимо выше указанных членов общества, данная статья написана и для нормальных людей. Дополнительно, эта статья является по большей мере сокращённым объединением нескольких крупных статей на английском, список которых будет в конце. В конце же я и объясню, как прочитать некоторые из них, которые в нашей стране недоступны. Приятного чтения.
Часть первая – Шри Ланка
Начнём с простого и самого известного случая «Китайского Империализма». Бедный порт в Шри Ланке, который китайцы по контракту построили порт в 2007 году. Который потом «кровавый тоталитарный капиталистический Китай» «отжал» в 2017 году. Коварный Ху Цзиньтао лично продумал поставить такие условия, что через 10 лет бедную Шри Ланку охватит дефолт и его наследник сможет установить военный контроль над важнейшей точкой страны!.. Риторика может меняться в зависимости от автора публикации, но посыл один – в Компартии Китая сидят математические гении, способные просчитать всё в подробностях на десятилетия вперёд кровавый Китай сделал всё так, чтобы отобрать территорию у бедной страны и использовать её в качестве военно-морской базы.
А что же было на деле? Государство Шри Ланки отдало порт на век, за 1,12 миллиардов долларов, с условием того, что военные корабли в порт не войдут. Карунасена Кодитувакку, посол Шри Ланки при Китае, на минуточку человек, представляющий интересы государства, в интервью, когда задали вопрос о военно-морской базе сказал следующее:
В случае со Шри-Ланкой, с самого начала мы очень четко дали понять китайской стороне, что это только экономическое предприятие. Безопасность порта Хамбантота, безопасность территориального охвата Шри-Ланки в Индийском океане - это целиком дело сил безопасности Шри-Ланки. Китай никогда не спрашивал нас. Мы никогда не предлагали ему это.
Смысл этого простой – Китай не под каким предлогом там свой флот разместить не может, а также порт попросили не китайцы, а само государство острова предложила его. Это вам не Гуантаномо, взятое бесплатно навсегда США, где постоянно тусуются солдаты-разносчики свободы.
Теперь же предлагаю взглянуть на ситуацию в то время. У Шри Ланки 50 миллиардов долларов – долги, что чуть больше половины тогдашнего ВВП страны. Циферки уже невесёлые, ибо всё это надо выплачивать. Из этих 50 миллиардов – 9% долг Китаю, то есть порядка 4,5 миллиарда долларов, а 81% - старым «добрым» империалистическим державам, а в особенности их инструментом давления на страны третьего мира – МВФ, с 16-ю кредитами Шри Ланке. Коммунисты и противоположное им левачьё должны знать, что МВФ выставляет дикие проценты, а также требует изменения министров на неолиберальных. Пораскинув мозгами можно понять, что это не Китай хирургически точно довёл страну до Дефолта, а что это старые друзья-западлоиды наибольший вклад внесли в экономические проблемы страны.
Подытожим. Порт построили задолго до продажи. Получили оный порт в результате предложения Шри Ланки, а китайский «вклад» в экономические проблемы островного государства может увидеть только ярый синофобский либерал, либо левак обыкновенный.
Часть вторая – аэропорт Энтеббе
Уганда... Очередная страна, на которую всем не пофиг просто потому, что вокруг неё раздули шумиху про «Империалистический Китай». В городе Энтеббе, недалеко от столицы государства, Кампалы, Уганда построила аэропорт, на улучшение которого взяла кредит у Китая в 2021. Как вы понимаете, сразу повылазили заголовки, даже от государственных СМИ, в духе «УГАНДА ОТДАЛА КИТАЮ СВОИ САМЫЕ ВАЖНЫЕ ОБЪЕКТЫ», в статьях под которыми естественно про сам кредит дай бог два слова со смыслом.
Кредит в этой ситуации был на 207 миллионов долларов, с ДВУМЯ ПРОЦЕНТАМИ ГОДОВЫХ. Такие проценты не то, что странам дают банки – такие разного рода личностям не дают ни на что. Это жест добрейшей воли со стороны «Империалистического Китая». Как вы думаете, почему же это произошло? Если вы решили, что потому, что китайцы видят, какая ситуация в стране, то поздравляю. Вы либо удаляетесь от левацкого мышления, либо просто здраво мыслите.
Также, в ответ на подобного рода заголовки, последовало заявление от представителя Уганды, Вьяннея Лугия:
Я хочу категорически заявить, что утверждение о том, что аэропорт Энтеббе был отдан за деньги, является ложным. Правительство Уганды не может отдать такое национальное достояние. Мы уже говорили и повторяем, что этого не было. В этом нет ни унции правды.
Вот это поворот. Но смешно то, что гос.СМИ продолжили эту утку разносить в заголовках своих статей.
Что же мы имеем в итоге? Аэропорт не отжали, а кредит был отдан на щедрейших условиях. Простые люди увидев такие заголовки бы вряд ли стали искать доказательство обратного, ибо гос.СМИ жеж страны, а левачьё найдя заявление представителя – старалось бы его максимально скрыть от своей аудитории и громче повторять риторику «Китай Империалист!»
Часть третья – что же в целом по странам-«жертвам» Китая?
В 2001-ом году Китай начал активно «маньячить» по странам третьего мира и «в особенности» Африке. И «маньячит» аж так, что импорты из Африки составляют аж 4% всего объёма торговли Китая. Это либо самыми богатыми на ресурсы странами мира являются Таджикистан и Латвия, либо физически кобальт резко уменьшился в плотности, либо нас обманывают по части «выкачивания всех ресурсов Африки Китаем». Когда мы глянем на китайский экспорт в Африку – увидим, что он вообще 3,5% от всех объёмов китайских экспортов. В плане торговли Китая и стран Африки – воровство ресурсов такое же, как воровство безлимитного вайфая у соседей по этажу. Никакое.
Зато, треть всех строительных контрактов Китай подписывает именно со странами Африки. Интересно почему... Человеку разумному в голову придёт мысль «Наверное потому, что Африка – неразвитый континент», тогда как упоротый левак будет орать про то, что Китай так захватывает ресурсы. Но для упоротого левака выше было написано про объёмы торговли.
Возвращаясь к строительству, большая часть контрактов до недавних пор была на строительство предприятий по добыче ресурсов и инфраструктуры. До недавних пор потому, что в последнее время по части финансирования нагоняет отрасль производства, которое уже с нормальной инфраструктурой и добычей ресурсов развивать надо. Просто потому, что поскольку ресурсы уже добывать куда проще, а развозить их удобно – производить что-то сложное становится легче, а значит можно будет начать выезжать на продаже условных компуктеров.
Но да не будем отходить от главного слова – КОНТРАКТЫ. Почему это слово главное? Да потому, что контракты заключают с СОГЛАСИЕМ ГОСУДАРСТВА, КОТОРОМУ ПО КОНТРАКТУ ЧТО-ТО СДЕЛАЮТ. И по собранной западом, недружелюбным Китаю, информации – в этих контрактах ведёт страна-получатель, а не Китай. Условия ставятся в первую очередь по удобствам страны-получателя. Вот это я понимаю «империализм».
С таким же «империалистическим» подходом Китай активно помогал и помогает самым быстрорастущим экономикам Африки, за период с 2004 по 2015 имея ключевую роль в развитии 15 из 16 оных экономик. На форуме сотрудничества Китай-Африка, представитель КНР заявил, что страна намеренна поддержать развитие индустриализации своих партнёров. То есть стран Африки.
По статистике западных же ресурсов, вклад Китая в развитие оных стран качественно поднимает зарплаты населения, большинство граждан оных стран, вроде Мали и Замбии, где 92% и 72% одобряет действия КНР, с исключениями, в духе Зимбабве, в которой аж 31% не считает КНР лучшим помощником. Зато 48% вполне за Китай, тогда как остальные не ответили, либо отказались от оного ответа.
Китай также за счёт развития инфраструктуры помогает качественно улучшать экономику стран. Он помогает установить региональный и межрегиональный баланс оной экономики, не концентрируя всё в одном супер-дупер богатом городе, а распределяя построенное по всем территориям стран-партнёров. Как вы понимаете, куда лучше иметь средний уровень жизни и трудоустроенности по всей стране, чем условно высокий в одном городе, а в остальных местах голод и болезни, с которыми местные не могут справиться просто потому, что работать они могут только на фермах.
За период с 2000 по 2019 год Китай простил неуплату долгов в размерах 3,4 миллиарда долларов, а также поменял, по договорам и на условиях стран-получателей, кредиты на 15 миллиардов долларов в общем счёте. А недавно, в 2022 году, Китай также простил неуплату 23 долгов БЕЗ ПРОЦЕНТОВ 17 странам Африки. Как вы думаете, что бы было с Африкой, если б так себя вели США, Франция, Британия, Бельгия?..
Что же мы имеем в конце-концов? На словах «империализм», а на деле адекватные, честные торговые отношения, идущие в пользу стран-партнёров Китая. И всё по западным источникам, а не по «кроваво-буржуйским» Китайским. Миф китайского «империализма» в Африке разрушен изучением информации не из новостей и громкоговорителей левацкого движа, а из аналитических центров запада, который, напомню, «совсем чуть чуть» не любит Китай.
Послесловие
Как я уже говорил ранее, статьи все на английском и к некоторым нету доступа в РФ. Что делать, если хочется прочитать оригиналы? В гугле нужно скачать расширение-VPN, такие есть, бесплатные и доступные в РФ. Я лично пользуюсь browsec, ибо это первое, что мне попалось и что не надо оплачивать. Но вы можете и поискать сами, а можете и на комп что-нибудь другое установить. Вроде бы, в опере есть встроенный VPN, но я не знаю, не пользовался.
Вот список работ, использованных при написании данной работы:
https://www.liberationnews.org/why-chinese-debt-trap-diplomacy-is-a-lie/ - статья американской коммунистической партии, что не слепо поддерживает Китай и КНДР, как критикуя обе страны за некоторые их аспекты, так и принимая во внимание то, что действия обеих стран небезосновательны и разумны. В данной статье более простым языком рассказывается о том, о чём говорила предыдущая работа, а также идёт дополнение про аэропорт в Уганде и прощение кредитов. Статья заполнена ссылками на источники.
https://sci-hub.se/10.1016/j.rdf.2018.05.003 - научная работа одного человека. До пятой страницы идёт объяснение методики, с оной по девятой идут таблицы – а после уже и анализ. Тут говорится про пользу китайских инвестиций в страны Африки.
https://docs.aiddata.org/ad4/pdfs/WPS64_Connective_Financing_Chinese_Infrastructure_Projects_and_the_Diffusion_of_Economic_Activity_in_Developing_Countries.pdf - другая научная работа другого человека. Практически, страниц всего 34. До 26 страницы идёт массовая теоретическая работа, необходимая для понимания, что да как работает, откуда и почему взялось, т.д. т.п. Рекомендуется читать только самым заядлым экономистам. Основная информация идёт с 26 страницы, где подводится итог того, что Китай избавляет страны от экономического неравенства в региональном и межрегиональном плане, а также распределяет оную по всей территории оных стран.
В ходе написания статьи, увы, не пострадало ни одного левака, но к сожалению пострадал коммунист, во время готовки обеда, пирожков «Ежовские», сделанных из уйгурских детей, на тесте, замешанном из отнятого у украинских крестьян зерна и слёз балтов, сильно обжёгший руки, но приблизивший репрессии написанием данной статьи
Всем привет, снова) Моя хотелка так и не успокоилась. Цель была выбрана теперь другая - выбрать на авито КПК по лучшему соотношению цена/качество/возможности. Давайте приступим!
Введение
Только посмотрите на цены..... Печально, не правда-ли? Вот и я о том же.
Но не всех людей эти цены могут остановить. Бывают и довольно интересные случаи:
ого, да он просто мажор!
самая дорогая покупка кпк которую мне удалось заскринить
Что же случилось с ценами? Всё очень просто. Люди хотят заработать на коллекционерах в очередной раз) Но у них не всегда получается, некоторые девайсы висят на авито месяцами. И никто цену опускать не собирается. Не только я вижу данную ситуацию, люди не упускают возможность и сметают всё, что хоть немного ниже тысячи рублей:
Итак, данный КПК не имеет Wifi, у него всего 32мб памяти, а джойстик и вовсе отсутствует. В игрушки будет проблематично играть. Собственно, это типичная бюджетка тех времён. К тому же он имеет повреждения по корпусу. Но покупателя это не останавлиает, видимо берут их по какой-то другой причине. Типа "где ты возьмёшь классный КПК за такие деньги?"
Конечно, бывают хорошие варианты и за 1-2к рублей. Но бюджет мой ограничен -500р максимум. Что же в таком случае делать? А ведь КПК очень хочется!
Но что если посмотреть на авито не в разделе электроника/планшеты, а GPS-навигаторы? Хм, я пробовал. Листал очень долго, в основном видел никому нафиг не нужные кирпичи на windows CE. Вскоре начинают попадаться вот такие объявления:
Оказалось что КПК в отличном состоянии в пределах 500р можно найти
Выглядит здорово. И будет в комплекте даже зарядное устройство и диски с ПО для большого брата: ActiveSync, Руссификатор от Макцентра. Вот это да! Цена была чисто символическая - 400р, которая идеально подойдёт по моему бюджету. Но обьявление висит на авито уже наверное более месяца, а девайс никто не взял. Как так? Это такой же КПК на Windows Mobile, только предназначенный чуть-чуть для других вещей. В основном такая штука нужна для того, чтобы висеть на стекле автомобиля и выполнять роль навигатора.
Ситуация выглядит следующим образом
Оказалось всё очень просто. Люди думают что это обычный китайский навигатор который КПК вовсе не является. А коллекционеров такие вещи вовсе не привлекают и они проходят такие объявления стороной. Что-ж, я воспользуюсь этим)
Начало
Короче, я принял решение. Не важно кто сделал данное устройство, самое главное то, что оно будет работать на Windows Mobile, иметь достаточно большой яркий экран не менее 3.5" дюймов, иметь Wifi и bluetooth, а так же неплохой процессор. Mio MITAC p550 идеально подходит под эти требования, и я, не долго думая, решил его купить:
Как навигатор в 2023 году - не очень, давно появились крутецкие Яндекс карты. Но как КПК такая штука очень даже ничего. Толстый пластик, многопозиционный джойстик, защитное покрытие экрана придают данному девайсу дополнительную надёжноть и уверенность в том, что он прослужит долгие годы. Корпус не покрашен, это естественный цвет пластика. Это значит что Mio p550 всегда будет сохранять свой прекрасный внешний вид.
Итак, вот он у меня в руках:
Чтобы эти клавиши загорелись синим при нажатии, мне надо было установить энергопатч. Хорошо что на форуме 4pda была тема этого устройства.
К WIFI зверёк подключаться не хочет. Оказывается, что он не поддерживает WPA2 шифрование. Что же делать? Интернет по блютуз? Гемморой. Но есть ещё один способ - синхронизация с помощью ActiveSync. В таком случае Get Started CD от производителя нам очень поможет.
Программа не захотела работать на Windows 8.1 Пришло время достать своё древнее зло)
Вот он и поможет нам синхронизировать этого зверька. После установки необходимого ПО программа попросила нас перезагрузиться. За кадром я завершил настройку соединения, после чего большой брат сразу же синхронизирует наш девайс и даёт ему доступ к интернету:
Ура, теперь мы можем лазить в интернет. Ещё можно установить браузер Opera, который будет открывать большинство сайтов, включая 4pda, яндекс, википедия, old-dos, и прочие:
А что там по играм? Всё не так уж и плохо. Кроме портированных игр вроде doom и quake есть игры специально для windows mobile. Вот, например, некоторые из них:
SimCity2000 для Pocket PC
Серии игр Asphalt для КПК
Это то, во что я играл. Игр гораздо больше, мне просто лень перечислять) Ещё есть эмуляторы sega, gba, движка mophun и эмуляторы j2me, такие как Jbed, например. Всё это расширяет библиотеку игр для КПК в разы.
Заключение
Мне нравится Windows Mobile. Замечательная многозадачная операционная система, позволяющая делать пользователю всё что он захочет. Можно менять системные звуки, можно хоть весь интерфейс изменить. Программировать под неё так же довольно просто. Если вы не особо шарите в c++ и win32, существует .net compact framework и VS2008, чтобы программировать на C# или Visual Basic. Так же есть много полезных сторонних программ для этой ОС, которые позволяют редактировать реестр, разнообразить главный экран "Today", добавляя на него виджеты. Есть total commander, Pocket RAR, встроенный Pocket Office, Regedit, и даже софт для управления частотой процессора. В моём девайсе установлен процессор от samsung, SC2440 на 400мгц. С помощью программы ClockWizard я могу понижать и повышать частоту даже выше максимальной. Это называется OverClocking. Вот как это выглядит:
Максимальная частота - 420мгц. При этом батарея садится быстрее. Есть ещё AutoScaling который может автоматически поднимать или опускать частоту в зависимости от требований пользователя. Это пригодится если вы, например, хотите убрать тормоза в 3д играх. Так же не стоит забывать что Windows Mobile работает на ядре от WinCE, а это значит что и приложения от WinCE тоже будут работать на этой ОС. Перетаскивать окошки можно, но практического смысла от этого не будет. Кстати, ещё на физические кнопки можно повесить запуск любой программы или действия:
В общем, вещь очень классная, её можно брать с собой и читать новости или книги, играть в игры, выходить в интернет по блютузу, wifi(если очень постараться), или через usb, кастомизировать операционку, подключать различные переферийные устройства(данный КПК умеет в otg) и многое другое. Главное, чтобы аккумулятора хватило, а он тут не совсем съёмный. Крышка на винтике, прикрыта резиновой заглушкой, а сам аккумулятор на разъёме.
В общем, за такие смешные деньги я купил довольно крутой КПК, который уделывает по техническим параметрам многих конкурентов бюджетного сегмента. Пока что меня всё устравивает, покупкой доволен, и всем рекомендую выбирать КПК от Mio. Ведь они надёжные, прочные, имеют неплохие характеристики и стоят недорого, главное найти.
Всех с наступающим новым годом! Спасибо что прочитали!
Если вам кто-то говорит или пишет, что в Китае диктатура пролетариата и строится социализм, то держите "священное" писание изгоняющее "бесов" из сектантов свидетелей социализма в КНР.