| Разработка и ромхакинг > Программирование |
| Ребенок изучает asm [SMD] |
| << < (9/11) > >> |
| Марат:
--- Цитата: SeregaZ от 02 Июль 2025, 16:10:33 ---или же, к примеру 150 тайлов картинка. 10 по итогу попало в первый кластер. и палитра для этого кластера была взята из одного какого-то тайла. и значит остальные 9 просто перерисовываются по этой, выбранной как общей, палитре. --- Конец цитаты --- Палитра берётся не из одного какого-то тайла. А берётся палитра всего изображения, и из неё удаляются цвета, менее значимые для этих тайлов. Какие цвета удалятся в итоге решает алгоритм квантования. МедианКат или Нейроквантование и прочии. В зависимости от выбора. |
| SeregaZ:
возвращаясь к вопросу о MegaPCM... а можно ли рисование видео сделать на Z80? а то этот MegaPCM работает на 68K... и соответственно видео не бум бум. до кода для видео, видимо, в случае выбора MegaPCM - вовсе недоходит :) |
| Vlad666:
--- Цитата: SeregaZ от 29 Июнь 2025, 04:30:14 ---после часов 3-4 общения с чатом GPT пришел к выводу, что он идиот и не учится :) каждый раз тыкаешь его носом в очевидные ошибки: да, ты прав это так-то и так-то... так если это так-то и так-то, то нахрена ты мне из раза в раз не так-то и не так-то код формируешь? абы как что-то там по итогу родили, но на маленьком изображении вроде все здорово. загружаю своего грендайзера... все. швах. или упарывается в синий цвет. или в зеленый. или еще куда. но не туда куда tiledpalettequant делает. я прямо в расстройстве. столько сидел, уговаривал этого недотёпу GPT, а он... ночь улетела в мусорку. --- Конец цитаты --- Купи подписку за 100 или 200 баксов на топовые нейронки, и будет тебе счастье. Я хз, что ты там делаешь. Но забавно слушать тех, кто пытается сделать игрушку или хак с помощью нейронки, не додумываясь загрузить нейронке всю имеющуюся техническую документацию консоли. Особенно забавно наблюдать за "программистами", использующими GPT-4o mini и орущими в итоге: "Нифига не работает!". А что ты хотел :biggrin:? https://www.securitylab.ru/news/561064.php. |
| Werton:
--- Цитата: Vlad666 от 14 Июль 2025, 07:25:52 ---Купи подписку за 100 или 200 баксов на топовые нейронки, и --- Конец цитаты --- и просрешь 100 или 200 баксов и через месяц отпишешься :lol: --- Цитата: Vlad666 от 14 Июль 2025, 07:25:52 ---Я хз, что ты там делаешь. Но забавно слушать тех, кто пытается сделать игрушку или хак с помощью нейронки, не додумываясь загрузить нейронке всю имеющуюся техническую документацию консоли. Особенно забавно наблюдать за "программистами", использующими GPT-4o mini и орущими в итоге: "Нифига не работает!". А что ты хотел ? --- Конец цитаты --- Забавно слушать таких советчиков, которые сами не пробовали делать, то что советуют. Давай покажи пример, как ты загрузишь в контекст твоей топовой нейронке "всю имеющуюся техническую документацию консоли" и что после этого она тебе накодит или нахачет. Пока нейронки, годны только на совсем тупую, монотонную работу (хоть и не бесполезную), простейший рефакторинг (и то глаз да глаз нужен за ними), написание доков, комментариев, и немного примитивного шаблонного кодинга. Что-то более сложное, где уже нужно проектировать, анализировать, т.е. там где не по шаблону работать, это они не тянут, только свое время и нервы потратите. По мне, сейчас это инструмент чуть получше, чем спелчекер в ворде, безусловно полезный, просто не надо пытаться с помощью него написать "Войну и Мир". https://www.opennet.ru/opennews/art.shtml?num=63573 |
| SeregaZ:
Vlad666, что-то ты прям совсем в негатив ударился. я вот асм не знаю совсем. не смотря что даже делал дизассемблер. от аи, даже самой тупой и самой бесплатной (двух), все равно остался под впечатлением - мне очень зашла функция комментария каждой строчки в этом самом ассемблере. типа суешь ему функцию, а он расписывает что там делается построчно. на русском языке. порой даже не имея общего кода - по одной только функции он делает вполне верные предположения для чего эта функция и даже дает какие-то дельные советы и предлагает код по изменению чего-либо. вот из недавнего, правда вышло так себе - хотел воспроизвести ардуинный проект по моргалке со спектром на адресной ргб панели. насколько я понял эта самая ардуино не может "слушать" звук в высоком качестве и поэтому она его портит - ну как вавка вместо 44100гц будет качеством в половину меньше. и понятное дело что частоты там идут на выброс - особенно самые вкусные ниже 80гц. вот спрашиваю у нейросетки - что если мы заэмулируем эти частоты путем измерения общей громкости? логика жеж какая - буц буц это самые громкие звуки, и значит если это разложение на частоты работает с 80 гц и вверх, и "не видит" все что ниже, то измерением громкости можно хоть как-то отобразить эти самые низы. так этот, похорошему, скатина взял бабахнул изменения в код скетча для ардуины эту идею. то есть сам нашел где происходит "прослушивание", довнес туда пару строчек. потом сам нашел код где происходит рисование на панели - и добавил, что если это первый столбик, то рисовать громкость, а не частоты. так вот сие мне прям понравилось. так-что в точечных операциях в принципе эти аи - сойдет. а вот глобально - швах. то есть повторяющиеся тупления с ошибками, постоянное "ты прав!", так и хочется спросить - если я всегда прав, а ты всегда повторяешь одни и те-же ошибки, почему ты не делаешь изначально все правильно? расстройства памяти, когда вроде обговоришь что такой-то функции в моем языке программирования нет - он с тобой спорит, говорит есть :) кароче это рассеянный гениальный ребенок, который знает много, но путается. и я про Z80 спрашивал... эм... |
| Zzmey:
--- Цитата: Vlad666 от 14 Июль 2025, 07:25:52 ---топовые нейронки --- Конец цитаты --- совет был бы хорошим, с указанием конкретной нейронки, и ради чего именно платить суно: делал много каверов - кончились бесплатные баллы, которых было дохрена. через телеграмм бот оформил карту виза для оплаты суно на месяц. потом подписка кончилась, но на бесплатный тариф она не могла вернуться ни автоматически ни принудительно. потом как то вернулась через некоторое время. |
| Vlad666:
--- Цитата: Zzmey от 14 Июль 2025, 09:46:13 ---совет был бы хорошим, с указанием конкретной нейронки, и ради чего именно платить --- Конец цитаты --- Claude 4 Opus, Gemini 2.5 Pro, OpenAI o3 High и т.д. Ради возможности работать над вашим заданием часами в агентном режиме с возможностью самостоятельно тестить код, запуская его, наводить справки в интернете и много чего еще. Это вам не просто написал задание и получил результат через пару секунд, а многочасовое проектирование. Такие бесплатные нейронки, которыми пользуются все здешние, годятся только для выполнения школьных заданий. --- Цитата: Zzmey от 14 Июль 2025, 09:46:13 ---суно: делал много каверов - кончились бесплатные баллы, которых было дохрена. через телеграмм бот оформил карту виза для оплаты суно на месяц. потом подписка кончилась, но на бесплатный тариф она не могла вернуться не автоматически не принудительно. потом как то вернулась через некоторое время. --- Конец цитаты --- Какие бесплатные баллы? Какие телеграммы? Это все фуфло. Купи подписку на офф сайте и получишь мощный инструмент для программирования, а не огрызок с бесплатными баллами, которые по сути являются ограниченными на 90%. Добавлено позже: --- Цитата: Werton от 14 Июль 2025, 08:55:26 ---Давай покажи пример, как ты загрузишь в контекст твоей топовой нейронке "всю имеющуюся техническую документацию консоли" и что после этого она тебе накодит или нахачет. --- Конец цитаты --- У Gemini контекстное окно в 1-2 млн токенов. Это целая Библия. У Llama 4 вообще 10 млн. Но эту нейронку я не тестил, и ничего сказать о ней не могу. Знаю только, что она тоже делится на малые модели и на биг босса. |
| Zzmey:
--- Цитата: Vlad666 от 14 Июль 2025, 10:02:37 ---фуфло --- Конец цитаты --- Можно ли поменьше лирики и побольше конкретики? Давайте возьмём только один ресурс и проведём сравнительный анализ - какие задачи можно выполнять на бесплатном тарифе? - какие задачи можно выполнять на платном тарифе? Вот это было бы полезно, был бы благодарен)) |
| Vlad666:
--- Цитата: SeregaZ от 14 Июль 2025, 09:31:07 ---Vlad666, что-то ты прям совсем в негатив ударился. я вот асм не знаю совсем. не смотря что даже делал дизассемблер. от аи, даже самой тупой и самой бесплатной (двух), все равно остался под впечатлением - мне очень зашла функция комментария каждой строчки в этом самом ассемблере. типа суешь ему функцию, а он расписывает что там делается построчно. на русском языке. порой даже не имея общего кода - по одной только функции он делает вполне верные предположения для чего эта функция и даже дает какие-то дельные советы и предлагает код по изменению чего-либо. --- Конец цитаты --- Бесплатные нейронки только для комментирования и годятся. Сам тестил их. Впечатления так себе. Для написания кода они совершенно не годятся. Ну только что написать код Змейки. И контекстное окно у них, как у рыбок. Через пару вопросов они забывают, что сами же писали минуту назад. А вот с топовыми нейронками совсем другое дело. У них большое контекстное окно и приличная внимательность, особенно у четвертого Клода. Он вышел совсем недавно. Сейчас хочу еще потестить четвертого Грока. Говорят, он еще умнее, чем Клод. Добавлено позже: --- Цитата: Zzmey от 14 Июль 2025, 10:10:57 ---Можно ли поменьше лирики и побольше конкретики? Давайте возьмём только один ресурс и проведём сравнительный анализ - какие задачи можно выполнять на бесплатном тарифе? - какие задачи можно выполнять на платном тарифе? Вот это было бы полезно, был бы благодарен)) --- Конец цитаты --- К примеру, возьмем Клода. Кратко. В бесплатном режиме доступны только модели Haiku и Sonnet. Sonnet имеет ограничения по количеству запросов. Подписка за 100 баксов дает расширенный доступ к Sonnet, а еще, самое главное, к тому самому Opus. Вот он кодит неплохо. Но в этой подписке работа Opus ограничена. Подписка за 200 баксов, особенно корпоративная версия, дает расширенный доступ к Opus. Он может работать часами в агентном режиме. Агентный режим - это когда нейронка не просто семь часов решает вашу задачу по программированию, но в процессе решения запускает код для тестирования, наводит дополнительные справки в интернете, создает внутренние длинные отчеты о проделанной работе и ничего не забывает в процессе дальнейшей работы, и много чего еще. Он будет это делать до тех пор, пока программа не заработает так, как вы попросили. Конечно, эта нейронка еще не совершенна и у нее не получится выполнить любое ваше задание, особенно если речь идет об очень длинном коде, но прогресс не стоит на месте. Четвертый Opus в сравнении с предыдущей версией - это небо и земля. Шаг вперед значительный. А что будет у пятого? |
| SeregaZ:
господа, предлагаю перенести срач в тему про нейросети. тут я больше веду плаксивый дневник о том, как у меня ничего не получается :blush: https://www.emu-land.net/forum/index.php/topic,91012.120.html ну и поскольку тема ушла в офтоп - надо вернуть обратно! можно ли код о рисовании картинок видео перенести из 68K в Z80? потому как MegaPCM запускается на 68K и соответственно при выборе этого драйвера до кода с видео дело недоходит. |
| Марат:
--- Цитата: SeregaZ от 30 Июнь 2025, 00:00:50 ---тем временем вручную с помощью tiledpalettequant и редактора сцен перегрузил все изображения, 18 сцен. каждую загрузи, квантизируй, выгрузи, выгрузи палитру к ней... печаль тоска. нужна dll, чтоб подобный результат делать с одного клика. уже 5 раз на рипите посмотрел :) кайфую! --- Конец цитаты --- Вот полностью рабочий скрипт на Питоне. Конвертировал с помощью ИИ Claude. Некоторые функции правил вручную. Настройки надо задавать внутри скрипта в функции process_image_file. Дизеринг включается в классе QuantizationOptions. Скрипт довольно медленный по сравнению с ява скрипт. При включенном дизеринге совсем всё долго вычисляется. Если дебажить скрипт, то станет ясно, как генерируется палитра и класстеризуются тайлы. Скрипт запускается через командную строку --- Код: ---Python TiledPaletteQuantizer.py Input.bmp Output.bmp --- Конец кода --- |
| SeregaZ:
руль :thumbup: :thumbup: :thumbup:, но не совсем то :blush: как бы понятно современное поколение поголовно имеет установленный питон и может это делать без каких-либо проблем... но я из древних. которые питон этот... не переносят. нужна все-таки дллка. даже не ехешка. то есть дллке отправил в качестве параметра адрес на образ изображения в памяти, оно уже работает и выдает опять-таки образ в памяти как результат. без создания временного файла на жестком диске. в случае же с этим скриптом - костыли. питон установи, внешней программой отслеживай "а родил ли скрипт файлы?", то есть закончил ли работу и можно ли дальше работать с изображением... печаль беда. ну и совсем чтоб уж не отходить от кассы - можно чтоб сразу это отквантованное изображение сразу переводило в тайловый сет, палитру и тайловую карту. хотя там уже надо будет думать над настройками. то есть задавать размер тайловой карты, особенности. типа как в моем мув мейкере - маленькое изображение размещается в центре тайловой карты. все это надо чтоб настраивалось. так-же вариант нужен, что это не для тайловой карты - а все-таки спрайт. и сразу чтоб можно было порезать, если изображение больше чем 4х4. |
| Томахомэ:
Вопрос по ASMX - никто не сталкивался с проблемой того, что для компиляторов нового поколения, которыми ASMX собирается из исходников, тип int расширен уже до 32 бит? Из-за этого в моём модуле поддержки семейства SH бьются джампбэки (в частности, функции BRA, BSR и т.д.). --- Код: ---#define LIMIT 0xFFF <...> int EvalShift(short size) { int val; val = Eval(); val = val - locPtr - 4; if (!errFlag && (((size==1) && (val & 1)) || ((size==2) && (val & 3)) || val < ~LIMIT || val >= LIMIT)) Error("Long branch out of range"); val = val >> size; return val; } <...> case o_Branch: oldLine = linePtr; if (GetWord(word) == '/') { if(curCPU<CPU_SH2||(parm!=0x8B00&&parm!=0x8900)) break; if (Expect("S")) break; parm=parm|0x400; } else linePtr = oldLine; val = EvalShift(1); if (!errFlag&&(parm!=0xA000&&parm!=0xB000)&&(val < -128 || val > 127)) Error("Offset out of range"); InstrW(parm|val); break; --- Конец кода --- Если при вычислении первичного оффсета число получается 32-битным, то 16-битное -$fff с 32-битной точки зрения остаётся числом положительным, и тогда ошибка Long branch out of range не срабатывает. По итогу единицы разрядами старше 12 наслаиваются на коммандообразующую часть опкода. Пробовал сменить тип val на short - делу вообще не помогло: отрицательный результат так и остался 32-битным (как показало введённая временно чисто с целью дебага сообщение printf("Destination is %x\n",val); следующей за val = val - locPtr - 4; строкой). Собирал я ASMX, если что, с помощью сборки MSYS64 от MAME Team, проапдейченной по их же методу: --- Цитата ---pacman -Sy pacman -S bash pacman msys2-runtime --noconfirm --needed pacman -Su --noconfirm --- Конец цитаты --- |
| pav13:
Томахомэ, используй вместо int конкретные указания размерности int8_t int16_t int32_t int64_t то же самое и для uint если надо. или переопредели int на int16 (int16_t) |
| SeregaZ:
а у меня затык был не столько с самой переменной - сколько с её чтением с перевернутым порядком байтов. пришлось стандартное PB'шное чтение из файла выкинуть и использовать свое, побайтное, с переворачиванием в нужном виде когда надо. |
| Томахомэ:
--- Цитата: pav13 от 11 Октябрь 2025, 18:15:40 ---или переопредели int на int16 (int16_t) --- Конец цитаты --- Сменил на последнее, для чего пришлось даже включить библиотеку stdint. Должно ли после этого выводимое в сообщении отрицательное число всё так же состоять из 8 16-ричных цифр? |
| SeregaZ:
а как ты смотришь что там в переменной? выводит в дебаге? или пишешь в файл и там смотришь? переменная может быть один тип, а при записи используется другой. типа сама переменная фактически 4 байта 00 12 34 56 а пишешь в файл как word к примеру. тогда в файл попадет только 00 12. |
| Томахомэ:
--- Цитата: SeregaZ от 12 Октябрь 2025, 07:04:26 ---а как ты смотришь что там в переменной? выводит в дебаге? или пишешь в файл и там смотришь? переменная может быть один тип, а при записи используется другой. типа сама переменная фактически 4 байта 00 12 34 56 а пишешь в файл как word к примеру. тогда в файл попадет только 00 12. --- Конец цитаты --- Через вот это. --- Код: ---int EvalShift(short size) { int16 val; val = Eval(); val = val - locPtr - 4; [b]printf("Destination is %x\n",val);[/b] if (!errFlag && (((size==1) && (val & 1)) || ((size==2) && (val & 3)) || val < ~LIMIT || val >= LIMIT)) Error("Long branch out of range"); val = val >> size; return val; } --- Конец кода --- На практике выглядит, например, вот так: --- Код: ---Destination is fffffffc Destination is ffffffee Destination is ffffffd0 Destination is fffffffc --- Конец кода --- |
| pav13:
--- Цитата: Томахомэ от 12 Октябрь 2025, 05:37:27 ---Должно ли после этого выводимое в сообщении отрицательное число всё так же состоять из 8 16-ричных цифр? --- Конец цитаты --- printf("Destination is %x\n",val); вывод в hex. printf("Destination is %02X\n",val); вывод в hex с ограничением длины. printf("Destination is %d\n",val); вывод в знаковое десятичное. (%i) printf("Destination is %u\n",val); вывод в беззнаковое десятичное. если сейчас у тебя выводится как 32 битная переменная, то попробуй конкретно указать тип для компилятора printf("Destination is %04x\n", (uint16_t)val); должно выводить два младших байта в hex. |
| Томахомэ:
--- Цитата: pav13 от 12 Октябрь 2025, 12:08:04 ---printf("Destination is %x\n",val); вывод в hex. printf("Destination is %02X\n",val); вывод в hex с ограничением длины. printf("Destination is %d\n",val); вывод в знаковое десятичное. (%i) printf("Destination is %u\n",val); вывод в беззнаковое десятичное. если сейчас у тебя выводится как 32 битная переменная, то попробуй конкретно указать тип для компилятора printf("Destination is %04x\n", (uint16_t)val); должно выводить два младших байта в hex. --- Конец цитаты --- Имеется в виду, само смещение, получаемое в результате вычитания locPtr и 4 из val - оно 16-битное, каким быть и должно, или всё-таки 32-битное получается? |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |