Ознакомьтесь с нашей политикой обработки персональных данных
  • ↓
  • ↑
  • ⇑
 
Записи с темой: программизмы (список заголовков)
17:36 

OpenGL

Кто-то любит пирожки, а кто-то - нет.
Дошли нынче руки и до трёхмерной графики, прочитал книжку "OpenGL. Суперкнига" на 1000 с лишним страниц за неделю и примерчики по ней почти все сделал. Матрицы, векторы, преобразования - это куда бы ни шло, а шейдеры -— это какое-то колдунство :< Работать-работают, а как - не очень понятно. Ну да и фиг с ними, программируемый конвеер вершин и фрагментов оставим на будущее.

А пока в целях обучения попробуем самопальный просмотрщик реплеев запилить, там математика рисования не хитрая. Пока только тайлики и научился в 3д рисовать. И, стоит сказать, это проще, чем в 2D, да и быстрее.

@темы: маджонг, программизмы

17:57 

Тест иероглифов

Кто-то любит пирожки, а кто-то - нет.
Всё же сделал и тестик, пока примитивный, но по онъёми, кунъёми, значению и узнаванию. Данные для теста берутся из текстового файла вида:


По нажатию на иероглиф показывается ответ, а проверка самостоятельная - тыкаешь на кнопочку "Знаю" или "Не знаю". А сбоку он показывает примерную карту уровня - что ещё надо прокачать. Сначала, конечно, всё красненькое... Для каждого типа заданий такая карта своя и она общая - какой бы набор ни был представлен в тесте, база одна и так же.




Надо будет на выходных или на сл. неделе ему выбор файлов приспособить и ещё чего...

@темы: программизмы, мии, япониш

16:50 

Читалка япная

Кто-то любит пирожки, а кто-то - нет.
Сделал прототип программки для чтения текстов, которая ещё и со словарём связана (ярксишным), и помнит, что я знаю из иероглифов.
Вытаскивает также из текста иероглифы и помечает их цветом из своей уже базы данных. Цвет меняется по щелчку на иероглифе. Надо б прокачать ещё, чтоб поудобнее было. Текстик может быть как по-человечески, так и по-японски, вертикально и справа-налево.

картинощки

Посмотрим, поможет ли чем или нет.

@темы: япониш, программизмы, мии

10:34 

Программка для прошивки партии устройств

Кто-то любит пирожки, а кто-то - нет.
Было время, приходилось регулярно прошивать всего три типа устройств. Потом их стало пять. Потом ещё больше, да и некоторые из них дали свои модификации (выполнялись, например, на аналогичных контроллерах с другим размером флеша или имелись мелкие схемотехнические или программные отличия). Раньше хватало пары bat-файлов для прошивки, где выставлялись фьюзы, стирался флеш, прошивался, проверялся, прошивался еепром и т.д. Потом скриптов стало много, много модификаций и это запутывало.
Ещё была неприятность — если какой-то этап не был выполнен, то остальные выполнять бессмысленно, но бат-файлу пофиг, он выполняет все этапы вне зависимости от результатов их деятельности.

Мне надоело такое положение дел и я накатал себе простенькую оболочку для прошивки контроллеров, где мог бы организовать кучу разных версий прошивок и алгоритмов в более удобной форме.
По сути это общая гуи для консольных прошиваторов, ещё в альфа-версии, на скорую руку. Но тем не менее, я к ней смог подключить консольные прошиваторы:
— atprogram.exe от Atmel Studio 6 (AVR Studio 5.1) для программаторов avr isp mkII, jtagice3 и подобных;
— ST-LINK_CLI.exe от ST-Link Utility для контроллеров stm32 и программатора st-link;
— STVP_CmdLine.exe от ST Visual Programmer для STM8 и программатора st-link.
Возможно, покатит и какой-нибудь avrdude, но у меня нет программаторов, чтобы это проверить.

Описывать не буду, но выглядит это так:
картинки

Ссылка на всякий случай.

@темы: программизмы, мии, stm8, stm32, avr

16:32 

TenhouViewer. Теперь и с яками

Кто-то любит пирожки, а кто-то - нет.
В целом пока всё то же самое, добавились несколько опций вывода (roundwind, playerwind, ron, tsumo, from), опций поиска по ветрам, номеру и типу лобби (roundwind, playerwind,lobby=,aka,kuitan,south,speedy,dan,upperdan), ну и несколько дополнен и поправлен механизм генерации пайфу. Каны рисуются правильно, добавилась информация о яку, фу, хан и стоимости руки без надбавок, количество палок на столе и типа того. Пофикшены указатели до и убраны красные доры из игр, где их и в помине не было.

пример пайфу

TenhouViewer r111.

@темы: tenhouviewer, маджонг, программизмы

16:41 

Пока учимся рисовать реплеи

Кто-то любит пирожки, а кто-то - нет.
Смотрю методики рисования реплеев — расчёт координат, внутреннее представление и т.д. Может, и до просмотрщика дело дойдёт с няшами.



А игра не идёт что-то. У меня что ли скилл пробивается на поиск одиночных ожиданий — из всех небезопасных тайлов руки найди иппацу в читой/танки.

@темы: маджонг, программизмы

12:41 

STM32F429. Базовый проект.

Кто-то любит пирожки, а кто-то - нет.
Так как вся работа с периферией осуществляется абсолютно так же (с точностью до выводов, но уточнять надо даташит), писать снова об этом не имеет смысла. Интереснее рассмотреть будет особенности этой платы: как минимум новые мемсы, внешняя память и экран.
Потому я перенёс базовый проект с ф4дискавери на ф429 (за 5 минут), поменяв опции компиляции, файлы system_stm32f4xx.c, startupчтототам.s и подпатчив драйвер светодиодов, так как они переехали на другие выводы.

Там есть простенькие драйвера с базовым функционалом для основной периферии: портов, системного таймера, шим, spi, rtc, exti, uart. Просто для быстрого прототипирования. Надеюсь, тут ничего не менялось из распиновки и косяков не возникнет><
В общем, это чтоб не заморачиваться с работой с регистрами, расчётами задержек для разных событий и т.д., а сосредоточиться на логике верхнего уровня.
Тестовая программа содержится в файле test.c. Она моргает светодиодом. С неё и начну дальнейшее изучение.

stm32f429base.zip.

@темы: электроника, программизмы, stm32f429idiscovery, stm32, arm

12:09 

STM32F429. Первый проект.

Кто-то любит пирожки, а кто-то - нет.
И так, есть отладочка stm32f429итд. Демки погоняли, посмотрели, что картиночки бегают, кнопочки на экране нажимаются, мимими. Это клёво, но начнём с пустого проекта.

Проект, в целом, создаётся точно так же, как и для stm32f4discovery.

Но если в кейле нет поддержки этого контроллера вовсе (не обновлён), то всё становится несколько хитрее =)
Во-первых, скачаем архив с библиотеками и примерами программ под плату — там есть что повыдирать.

читать дальше

stm32f429_blank.zip — пустой проект.

@темы: электроника, программизмы, stm32f429idiscovery, stm32, arm

13:16 

TenhouViewer. 3man

Кто-то любит пирожки, а кто-то - нет.
Добавил-таки поддержку Хиросимы, теперь там всё должно быть ок. Также не вылетает, если в логах нет информации о стене (древние логи от 2008 и типа того года), а если там информация в старом виде (не в base64, логи от 2011 года), то она генерирует стену обычным порядком. Ещё парочка каких-то багфиксов.

Так как поиграл на днях в не нулевом лобби c местными (ну, российскими) риичистами, добавил фильтрацию по номеру и типу лобби. Можно не париться, что левые игры исказят график рейтинга или статистику.
Но надо больше.

Теперь рейтинг получается так:
TenhouViewer -flog.txt nickname=dragonn lobby=0 -Gdragonn index datetime rating rank place -srating.txt

Скачать r99.

@темы: программизмы, маджонг, tenhouviewer, tenhou

15:48 

TenhouViewer. Я не забыл

Кто-то любит пирожки, а кто-то - нет.
Проект пока не загибается и я его тихонько качаю. В следующих планах — поиграть в Хиросиму и адаптировать парсер и поисковик к ней. Ну и добавить фильтр на лобби/комнату (обычная, дановая и т.д.).

Пока что пофиксил счётчик дор и добавил фильтры на количество хан/фу в руке и поиск ничьих, причём даже особых (4 кана, кюсюкюхай, 4 риичи, тройной рон, нагаси, 4 ветра) с различением. А то вчера или позавчера была жесть, когда я на дилере был, без шансов собрать что-либо, а все остальные упоролись и стали канить каны =D Кто-то палку даже кинул. Хорошо что кто-то пожадничал или образумился и открыл последний кан, а то были бы вилы, особенно по цумо и для меня. Cтрёмно>< И вообще я думал, что их благоразумия на тенхочках более благоразумны.
Ужс.

Поиск по ничьим выглядит так:
TenhouViewer -flog.txt draw=kan4 -o link -sdrawkan4.txt
Он найдёт все ничьи из-за 4 канов. У меня таких всего одна штука. Кюсюкюхаев куда как больше.

Опции для draw могут быть такими:
yao9 — кюсюкюхай;
riichi4 — объявлено 4 риичи;
kaze4 — сброшено 4 одинаковых ветра подряд в первом круге раздачи;
ron3 — тройной рон;
kan4 — объявлено четыре кана за раздачу у разных игроков;
nm — нагаси манган.

Без указания опций ищутся просто ничьи обычные, не абортивные.

Поиск по ханам примерно тоже так:
TenhouViewer -flog.txt nickname=tfizik winner hanmin=12 hanmax=12 -o link nickname cost han fu waiting yaku -ssanbaiman.txt
Поиск моих санбайманов.

Скачать версию r88.

@темы: tenhou, tenhouviewer, маджонг, мии, программизмы

17:18 

STM32F4. Некоторые тонкости пошаговой отладки.

Кто-то любит пирожки, а кто-то - нет.
Итак, есть программа, которую мы хотим пошагово отладить. Ладно, если она затрагивает только ядро и сам алгоритм — щёлкай да смотри, всё ок. А если отлаживаем какую-нибудь периферию? Таймер там, или ещё какую штуку. Пока мы стоим, а таймер сто раз переполнился, буфер кана забился и т.д. Самое плохое, если переполнится таймер сторожевого таймера — контроллер просто-напросто перезапустится из-за того, что мы его остановили. Тут уж не поотлаживаешь. Или таймер отключай (и не забудь включить обратно), или не тормози вовсе. Не круто.

читать дальше

<< Предыдущее.

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

16:49 

Движки для рендеринга субтитров

Кто-то любит пирожки, а кто-то - нет.
Надо б собрать ссылки на рендереры субтитров, их исходники, материалы и прочее. Надеюсь, у меня руки дойдут до задуманного><

Используются:
VSFilter, MPC-HC project, x64 — почти все сабы для аниме рендерятся им;
libass;

Кто-то пробовал:
SSBRender, форум, 2012;
as6render (AviSynth plugin) by JEEB;
Kumaji, 2010.

@темы: программизмы, субтитры

11:14 

STM32F4. Внешний ЦАП CS43L22 и I2S

Кто-то любит пирожки, а кто-то - нет.
Как я уже говорил, на плате STM32F4-Discovery установлен ЦАП, который подключается по интерфейсу I2S. И оно может проигрывать мелодии, пищать и издавать в соответствующий разъём всякие звуки. Если, конечно, туда подключить какое-нибудь устройство воспроизведения.

Прежде, чем можно будет в I2S гнать аудиопоток, ЦАП надо включить и настроить, иначе он будет молча данные игнорировать:
1. Линию PD4 (~RESET) перевести в высокий уровень. ЦАП начнёт работать и воспринимать команды.
2. Командами по линии I2C программно включить ЦАП, выбрать и настроить протокол I2S, настроить коэффициенты усиления, установить громкость и всё такое. Настроек там выше крыши, и их все можно посмотреть в даташите.
3. Настроить I2S в контроллере.

После этого можно уже посылать данные и слышать результат в наушниках.

читать дальше

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

12:27 

STM32. Определение положения сбойного кода.

Кто-то любит пирожки, а кто-то - нет.
Бывает, при разных ошибках в коде возникают исключения. Переход по некорректному адресу, чтение или запись куда-то не туда, неправильная инструкция, да мало ли проблем. Как найти среди мешанины кода то место, где всё сломалось? Напрямую Кейл ничего не пишет, Список в Call Stack обычно пуст и не содержит ничего полезного (хотя иногда и обратное верно). Окошечек с информацией тоже нема. Грусть-печаль-тоска.

Но всегда можно вспомнить, что исключение — тоже вполне себе прерывание и действует, как и любое другое прерывание. То есть кладёт в стек копию 8 регистров: R0-R3, R12, LR, PC, CPSR. Нам нужен только PC, где содержится адрес инструкции, следующей за сбойной.


Вот как это можно подглядеть.

А ещё можно в поле Command записать

И получить ответ числом, как оно есть, не ползая по окну памяти.

Капитаню, конечно, но не всегда можно догадаться об этом сразу.

@темы: программизмы, stm32f4discovery, stm32f3discovery, stm32f0discovery, stm32, arm

16:02 

TenhouViewer. Пайфу

Кто-то любит пирожки, а кто-то - нет.
Вообще, любую раздачу тенхочки можно записать в виде пайфу.

Например.

Отдельно откоцанная от раздачи рука:


Конечно, алгоритм генерации ещё имеет ряд недостатков и проблем (в частности, надо бы рисовать тайлы повёрнутые иначе, но пока для примера так, или даже иными спрайтами, свободными к использованию), но всё поправимо.

Канонные примеры надо искать в японских интернетах по слову «牌譜». Сравним, посмотрим...

UPD: Потестить r78
UPD: Потестить r79 с ч/б тайлами.

UPD от 12 мая 2014: А тенхочка тоже теперь умеет пайфу делать, нужно только в ссылке на реплей заменить /0/ на /6/.

@темы: программизмы, маджонг, tenhouviewer, tenhou, paifu

23:26 

TenhouViewer. Анонс =D

Кто-то любит пирожки, а кто-то - нет.
Итак, я таки переписал основную часть кода анализатора игр с тенхочки в более человеческий вид. Исходники лежат на гуглокоде: TenhouViewer.

Так как программа живёт ещё совсем немного, оконного интерфейса у неё нема, только консоль. Впрочем, пока что её достаточно.
Что же это за штука и как её пользоваться? Программа умеет по логу игр (который выдаёт и виндовый, и браузерный клиент) скачивать реплеи в папочку. Чтобы потом искать в них разные ситуации, ну и делать статистику, например, график рейтинга.

читать дальше

яку.txt — соответствие яку (и не яку) их номерам;
тайлы.txt — соответствие тайлов их номерам;

Программ r59. Требует .NET Framework 4.
Программа r60.

@темы: программизмы, маджонг, tenhouviewer, tenhou

23:05 

Риичи. Вероятность сбора руки

Кто-то любит пирожки, а кто-то - нет.
Я не помню, где я читал, что при стартовой руке в 4 шантен уже можно особо не париться с её сбором (за исключением случаев, когда формы офигенно удобны, а не пентяны с одиночными ветрами) и готовить руку к защите. Мне стало интересно и я построил табличку, где сводится число шантен стартовой руки, число уке-ире и шанс завершить руку. Мне казалось, что число уке-ире должно характеризовать руку как пипец или офигенно.

По существу, для каждой стартовой руки считался шантен и уке-ире. Уке-ире округлялся до ближайшего десятка вниз, чтоб не раздувать таблицу и сделать данные более достоверными. Были созданы две таблицы 7х14 (0-6 шантен и уке-ире до сотни с запасом).
Ячейка бралась в обеих таблицах по адресу (шантен; уке-ире). В одной таблице число просто увеличивалось с каждым совпадением, в другой только при завершённой руке. При выдаче таблицы для каждой ячейки считался процент: (100 * завершённых / всего). Если результатов было меньше 30, то оценка не рассчитывалась. Потому и нет столбиков с 0 и 1 шантен.

читать дальше

@темы: программизмы, маджонг

18:05 

Реализация простого параметрического поиска на C#

Кто-то любит пирожки, а кто-то - нет.
Есть у меня несколько сотен логов игр с Тенхочки. Каждую из раздач в них можно описать десятками параметров: рейтинг, ранг, ник, сколько очков у играющих, выходили ли в темпай, за сколько кругов вышли, объявляли ли риичи или открытые сеты, выиграли ли, какие яку были, кто сколько платил, кто дилер, какая выигрышная рука, какое ожидание и на сколько сторон было, как менялся шантен по ходу игры и т.д.
Хотелось бы выделять отдельные раздачи по каким-либо параметрам.

Первые этапы опишу совсем кратко:
1. Парсим исходный лог, который представляет собой последовательность производимых игроками действий, выполняем их и по ходу дела рассчитываем все нужные параметры;
2. Записываем всё это в xml-файл, по одному файлу на раздачу;

Теперь, чтоб получить доступ к результатам отдельной раздачи не надо переигрывать игру, достаточно открыть сгенеренный xml. Пример файлика: 2013010408gm-0001-0000-63296dbb_4.xml. Самих действий там нет, но есть основная информация о том, что там было, что нам для поиска и нужно.

читать дальше

@темы: маджонг, c#, программизмы

03:10 

AVR Studio 5.1, Atmel Studio и sprintf для float

Кто-то любит пирожки, а кто-то - нет.
По умолчанию к программе подключается библиотека с урезанным sprintf, который не поддерживает дробные числа (видимо, в целях оптимизации).

То есть код sprintf(&buffer[0], "%f", 2.3f); выдаст "?" вместо правильного числа.

НУЖНО БОЛЬШЕ ФЛОАТА!

@темы: программизмы, avr

12:40 

STM8. SDCC — компилируем несколько файлов

Кто-то любит пирожки, а кто-то - нет.
Но один файл — это ни о чём. Туда пихать затуднительно что-то большее. Потому попробуем скомпилить проект из нескольких файлов.

Исходники я перенёс в папку source, чтоб оно не мешалось с другими папками. Там же организована такая структура:
main.c
drivers.c
drivers.h
drivers/gpio.c
drivers/gpio.h


читать дальше

@темы: программизмы, stm8sdiscovery, sdcc

Няшки-вкусняшки любят карандашики.

главная