+16.25
Рейтинг
73.31
Сила

Rob F.

  • avatar Robus
  • 5
Согласен поучаствовать. Музыка это не моё и я использую только свой редактор, поэтому композиции у меня на счету и ими я делюсь только с друзьями, не хотелось бы сделать трек в пустую. Если Олег и я напишут по композиции, то конкурс точно состоится?
Уточняющие вопросы:
1) Осталось 10 дней? Просто работа у меня чётко вымерена по минутам, что бы я мог спланировать.
2) Принимается ли работа с моего редактора? Он не совместим ни с кем вообще, только с АУ-ком.
3) Музыка под АУ подразумевает чистый АУ без возможности цифровых инструментов?
4) Проигрывание трека возможно только в откомпилированном виде, исходник не сможет открыть ни один редактор на Speccy, это приемлемо?
5) Откомпилированный трек нужно подогнать под какие-нибудь стандарты, например адрес инициализации, адрес самого плеера?
6) Все мои треки это автомат выбирающий установленное железо на Speccy, мне откомпилированный трек сделать только под один АУ, или же можно не выкидывать автомат настроек из инициализатора?
  • avatar Robus
  • 2
Shiru, отличные статьи. Если бы я делал под NES или SEGA, то подход был бы совсем другой лишь из-за того, что есть система картриджей. Спасибо за отличные статьи.
  • avatar Robus
  • 2
Мне очень нравится как выглядит ваш сайт. Жалко, что большинство людей представляют себе демосценерские сайты в стиле рюшечек. Именно о такой внешности сайта нашей группы, я мечтал всю жизнь, но всегда всё сводилось к супер-тру-колор-кнопочкам.
  • avatar Robus
  • 9
Я, вот, попробовал «онлайн-откомилить», и как-то странно, что он компилит любой текст, кириллицу, латиницу и да же японские иероглифы, и какую бы белиберду я не набивал, всегда в результате «Успешная компиляция». А вообще вариант не успешной компиляции возможен?
Чувствую себя супер-кодером на Wct, ни одной ошибки не допускаю. =)
  • avatar Robus
  • 1
!!! ШИКАРНО!!!
  • avatar Robus
  • 0
Я человек, а программист ли я, потом определится, может после смерти, что бы всегда было желание к совершенству.
  • avatar Robus
  • 1
Вовка, ты автор этого скрипта. Ты не делал в этом скрипте защиту от доступа соседнего потока, и не делал команду SUPER_COPY_1024_MEGABYTES_FROM_ANDROID_UNDER_LINUX_WITH_JAVA_EXCLUDE_BASIC. Ты добавлял в эту скриптомашину нужные операторы, которые упростят твою работу. И этим ты подтверждаешь, что скрипт ты использовал как хорошее дополнение к своему коду. Так же и с языками программирования, писать на Си рисование линии пикселями это равносильно тому что на твоём скрипте ты будешь выводить пикселями картинку в нойз-глитчинге, ведь ты это не делаешь? Вот… Ты на скрипте пишешь простую и удобную логику событий.
  • avatar Robus
  • 0
Тут немного иначе, пока я пишу супер-оптимально под кэш, параллельно в соседнем Thred'е пишется текст скриптов для джави, с небольшим приоритетом, для финансирования первого Thred'а. Так постоянно решаются такие вот «эффективно-экономические» задачи, только от этого скрипты не становятся кодингом. Хотя поэт — точно кодер.
  • avatar Robus
  • 1
Не принижением последнего, а наглым присвоением статуса программиста. Кодер это жаргонное выражение программиста. Тогда поэт то же программист, он в ворде набирая свой стих по кнопочкам «save» нажимает, ты представляешь сколько там классов исполняется, точно программист. Тебе обидно что писание скриптов я не отношу к программированию, а значит к кодингу? Прости, я не хотел тебя обидеть. Но я не могу называть человека программистом лишь потому, что его нативный код запускается на эмуляторе-эмулятора-эмулятора си-шарпа.
Не утрируй, ни ты ни я не используем макросы в ущерб чего-то там. Только ради красоты и удобства записи. И я не утверждаю что Си бесполезен, просто это не программирование. Это упрощенная запись для математического склада ума. Поэтому на языках высокого уровня благое дело формулы всякие считать, но как только приходит вопрос в энергопотреблении, или распаковке, тут асм — и получаешь качество. Насчёт оптимизации, давай не трогать этот вопрос, лишь технология кэша сводит на нет оптимизацию, пишешь код с размахом не более 64к, и любая математика начинает крутиться на частоте ядра. Всё таки есть разница между 3 гигагерца ядра и 300 мегагерц выборки памяти. Ты же, надеюсь, не будешь доказывать, что ДДР на 1 гигагерц будет тебе давать доступ к памяти на это же частоте?
  • avatar Robus
  • 1
Не просто описать, для этого есть программисты, а описать оригинально, как это делает кодер. Ты же кодер, ты же сам видишь, что код на асме всегда оптимален, да же если написан слабым программистом, по скольку автор не ограничен языком, а особенно где байты это dword'ы. Я уже молчу про код под кэши. О чём мы вообще спорим? Это небо и земля, не возможно писать на языке высокого уровня и говорить про ядро в априори. Нет Си кода под АРМ, или под х86, только асм может быть под ядро. Кодинг это искусство.
  • avatar Robus
  • 0
Я чую бесполезность использование такого языка. А мечты о переносимости кода становятся второстепенными, если код перестал быть кодом, и стал простым алгоритмом из иф-ов и фор-ов. Смысл этих языков только в визуализации и исполнении простых алгоритмических действий.
  • avatar Robus
  • 1
Боже упаси от такого. Предлагаешь мне со своим софтом ещё и компилятор прилагать? Нее сишарпы не для меня, только если по работе потребуют.
Знаешь, как-то очень давно был какой-то сайт где был написан эмулятор SPECCY, то ли на джаве то ли на флеше. Этот эмулятор был через браузер, и набранные очки в играх вписывались в топы. Ну там всякие соревнования EXELONов можно было проводить. И начал с авторами переписываться, простите, уже не помню кто это был, что вот эмулятор полностью защищён от взлома, потому что там, что-то применяется, что в памяти ксорится код исполняемой программы, вообщем не взломать одной бутылкой пива. Ну я сразу начал пробовать что к чему, и всё оказалось банально. Вся память 49152 байт в памяти хранилась DWORD'ами, где и вправду первый байт DWORD'а был заксоренный и видно, что он менялся, все 49152 байта в каждом DWORD'е молотились, однако третий байт этого DWORD'а не менялся. то есть видать где-то был код типа MEM[n]=MEM[n] XOR SUPER_BYTE_FOR_XORING, но автор да же не догадывался что в памяти остаётся оригинал. Там я был зарегистрирован под именем HACKER, и договорился с авторами, что я пытаюсь накрутить очки, а они придумывают метод защититься от этого. Мало того весь этот джава или флеш был такой супер ООП и так следил за памятью, что,! вникаем! — я находил в памяти, допустим, очки в Earth Shaker'е, менял на нужные байты НЕ ЗАКСОРЕННЫЕ ДАННЫЕ, то есть это биты с 16 по 23. И универсальный язык программирования выдавал мне в окошке аккуратную надпись «CRC memrory region error, correct?». Эврика!!! Отвечаешь ДА, и новые данные, которые я подставил автоматически вписывались под ксор!
Поэтому, да, я не хочу писать свой код, под вот такие вот виртуальные машины. Я уж лучше по старинке, на асме, под эмулятором Z80 быстрее будет исполняться, чем на таком вот «нативном» языке.
  • avatar Robus
  • 0
Все имеют право ошибаться, но сторонний разработчик плевать хотел что у какого-то там робуса не работает софт. Сидовский плеер попортил память, как раз тот случай о котором мы говорили. В те времена все уже вожделели ХР, а у меня был всё ещё 98ой, и судя по всему память закончилась, автоматическая диструкция памяти, при переходе с мелодию на мелодию не работала, и в какой-то момент пошло по памяти гулять. Я постоянно сохранялся, тяжёлое детство глючного софта, и побил половину своих проектов. Плеер выдал кучу хрипов в динамик, и всё остановилось. Потом сидел и восстанавливал остатки с винта, а результатом сбоя был запись артефактов на винт. Может, конечно за 10 лет его поправили, и возможно что на ХР этого всего не было бы, но факт остаётся фактом, код плеер испортил мне часть проектов, и никакой ММУ не помог.
А глюки своего софта я всегда могу поправить, если бы автором плеера был бы ты, я бы тебе написал письмо и возможно плеер больше бы такое не делал, но автор где-то там в Копенгагене.
«деструкция данных» это попытка заткнуть дырки людей которые любят у системы попросить попросить байтики, а отдавать не хотят. были бы программисты педантичными как кодеры, занимались бы деструкцией сами, тем более, что это одна-две строчки кода. Лень это всё. И в чём тут рукопожатие, экономия на двух строчках кода? Тогда можно выпилить из Z80 команду DI, будет рукопожатие, что бы HALTы не мешали работать ядру.
  • avatar Robus
  • 1
Да не перебираю, просто ты кодер, Vitamin, Вовка, — все вы кодеры. Я же не виноват, что джаверы или си-шарпники считают себя программистами. Просто понятие программист смешалось со скриптерами за последние 10 лет. Большинство джаверов свято верят, что, их результат это нативный код, если вообще понимают, что это. Я прекрасно понимаю, что кодер под джавой будет мыслить иначе, понимая, что лучше победить проблему куском памяти, чем молотить что-то кодом(скриптом). Но это меньшинство, только вот вчера приходилось андроидовцу объяснять что в структуре летящей по интерфейсу между DWORD'ами есть BYTE.
  • avatar Robus
  • 3
Конечно не пишу, но то, что играет музыку, отлажено годами, и не требует MMU. Пример тому, мр3 играет плеер отлаженной дллкой, и я не задумываюсь ставить её или нет, просто когда-то, лет 10 тому назад, п перепробовал тьму всяких плееров, и остановился на том, который не сообщает мне что «Пупкин не прав». И вот пример тебе, появился как-то плеер сидов, я так обрадовался, и я писал код под любимую музыку из draconusа атаришного, но этот плеер постоянно портил память через час-два работы. Так я навсегда отказался от плееров сида, лучше качну в МР3. И меня тогда не спасал ММУ, валилось всё, да так что приходилось восстанавливать. Не спас MMU, он только немного обезопасил, но не принёс счастья. Благо что за 20 лет наконец-то отладили распаковку мр3, можно наконец-то без страха пользоваться.
MMU на мой взгляд, не более чем порождение лени, просто кто-то ленится отладить свой софт, оправдывая тем, что ММУ спасёт ситуацию. Так же как подход современно кодинга, где деструкция данных предполагается при закрытии приложения, это лень. А кодер должен любить то, что делает, иначе он превращается в программиста.
  • avatar Robus
  • 2
Потому что нам всем надо больше общаться, и лучше всего это делать без сарказмов вообще. Не важно простая решена задача или сложная, просто нужно этим поделиться, тогда каждый растёт. Хотя я знаю, что со мной сложно общаться, особенно когда доходит вопрос до практики. Я слишком люблю идти не традиционным путём.
  • avatar Robus
  • 2
Нет не даю зуб, уверен, что попортить может. Например можешь сделать свой софт и им полезть в мой софт изменить в нём исполняемый код и тогда мой софт сразу начнёт уменьшать количество моих зубов.
И да, я практически всегда пишу себе софт, практически на все случаи жизни, потому что я постоянно сталкиваюсь с вопросами которые не решаются сторонним софтом. Именно поэтому у меня есть всякие ASAM'ы, MASON'ны, PINTELIN'ы, пакеры, линковщики, конвертеры и куча-куча всякой шняги. Кто делал со мной проекты всё это видел. Я маньяк на тему того, что график должен рисовать свои работы в том, что ему нравится, а моя задача написать конвертер из его удобства в свои потребности. Единственное, что я заставлял Олега писать музыку в MASON'е, по скольку реально нужна высокая скорость и малая память, а рт3 не даёт мне этого. Так что да, я на все случаи жизни делаю себе софт, если бы люди работающие на том же компьютере что и я не пользовались софтом требующим минимум ХР, я бы так и не слазил с 98-ой, мне от винды требуется только попасть в свой софт, дальше плевать что там на заднем плане.
Конечно я мой софт может глючить, и глючит, но не так что бы случилась катастрофа, а глюк будет лишь поводом исправить ошибку. Но при написании софта я потрачу максимальное количество времени, что бы ошибки свести к нулю.
  • avatar Robus
  • 1
Но ты же отлаживаешь свой код? Ведь не первый день кодишь. Понятно, что дурак может завалить систему, но почему это должно быть поводом везде, всегда и повсеместно идти только путём нагромождённых моделей с MMU? Отладил ПО… Работает отлично… И забыл… Вот в данный момент этот текст набивается под виндой, где у ядра есть MMU и это кому-то помогает? Ну увижу я на экране «приложение Васи Пупкина выполнило не допустимую операцию», что это сделает приложение лучше работающим? Нет. И если приложение выполнит недопустимую операцию лазя по API процедурам, и завалит соседние приложения, то от этого мне так же не будет никакого счастья, результат будет один — «дурак победил дурака и попортил данные». Конечно можно запретить любые манипуляции, но я же не секретарша набивающая текст регламента в ворде, мне нужен компьютер как инструмент на 100%, и мне всё равно есть ли в системе MMU, мне главное что бы качественно работало. А софт, которые «дурной», и портящий память, я просто не буду ставить.
  • avatar Robus
  • 0
Данный пример генерирует в 8 страницах (максимум в зависимости от карты и количества написанных объектов) код для каждого объекта игры. Этих объектов от 0 до 127, каждый может иметь логику работы, в зависимости от того, что было придумано при рисовании карты в конкретном уровне. В одном уровне объект номер 3 может быть камнем, а в втором может быть водой, какую графику подставят, и какой напишут код, то и ляжет в страницы. Далее при обработке карты на каждый объект исполняется написанная автором код. Движок игры не знает что это за объект, как его опишут такое и будет поведение.
Всё ООП не более чем описание правил в зависимости от данных, будет правило, что пришедшие данные это код, будет исполняться, просто ссылки в памяти на ссылки в другую память и обвязка тонной «ифов», а не ноль-ли там. Ну правда можно менеджером памяти пользоваться, пытаясь поймать exception'ы, ну тогда это ещё хуже «ифов», ибо скорость ПО резко снижается в разы.
В примере EXE_MAP_ADD_ALL_GROUP и занимается генерацией кодовых блоков в зависимости от данных в карте. Кодовые блоки лежат в таблице PROC_GROUP_TBL, которая генерируется автором уровня, и подгружается с носителя.
  • avatar Robus
  • 2
Вот она, истина! Точно так, ибо сложных программ не существует. И с самого начала я написал — «Thread'ы очень просты».
На АРМе я вообще не буду использовать модель MMU, не вижу в ней смысла. Меня вообще не интересует путь, где нужно защищаться от того, что автор ПО будет лезть в левые адреса, и простого переключения задач хватит на все случаи жизни. От АРМа мне нужна «молотилка данных», ну или ещё более мне важна обвязка ядра, для практического применения в разработках.
Спасибо, что делишься своими наработками.