Автор Тема: Ребенок изучает asm [SMD]  (Прочитано 15171 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #150 : 29 Июнь 2025, 04:30:14 »
после часов 3-4 общения с чатом GPT пришел к выводу, что он идиот и не учится :) каждый раз тыкаешь его носом в очевидные ошибки: да, ты прав это так-то и так-то... так если это так-то и так-то, то нахрена ты мне из раза в раз не так-то и не так-то код формируешь?
абы как что-то там по итогу родили, но на маленьком изображении вроде все здорово. загружаю своего грендайзера... все. швах. или упарывается в синий цвет. или в зеленый. или еще куда. но не туда куда tiledpalettequant делает. я прямо в расстройстве. столько сидел, уговаривал этого недотёпу GPT, а он... ночь улетела в мусорку.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 893
  • Пол: Мужской
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #151 : 29 Июнь 2025, 10:13:43 »
после часов 3-4 общения с чатом GPT пришел к выводу, что он идиот и не учится :) каждый раз тыкаешь его носом в очевидные ошибки: да, ты прав это так-то и так-то... так если это так-то и так-то, то нахрена ты мне из раза в раз не так-то и не так-то код формируешь?
абы как что-то там по итогу родили, но на маленьком изображении вроде все здорово. загружаю своего грендайзера... все. швах. или упарывается в синий цвет. или в зеленый. или еще куда. но не туда куда tiledpalettequant делает. я прямо в расстройстве. столько сидел, уговаривал этого недотёпу GPT, а он... ночь улетела в мусорку.

Welcome to my world - Grok вроде считается поумнее, но даже из него помощник в этом деле глубочайше такой себе.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #152 : 29 Июнь 2025, 11:24:08 »
пока спал - думал. возможно недотёпа как раз я :) ибо код GPT рожал для bmp. и маленькую картинку для тестов я загружал в bmp. а вот грендайзер то в png. с точки зрения моего кода особой разницы нет bmp-png - те-же яйца. а вот GPT возможно упоролся именно в структуру bmp и соответственно читает пиксели как-то по своему, а не так как я - попиксельно потайлово гоняю изображение. самое простое сделать выгрузку из манагера не в png, а в bmp грендайзера и проверить что там GPT'шный код родит. сегодня попробую.

Добавлено позже:
и нет. переделал на bmp... такой-же бзик - упарывается в синий цвет.
« Последнее редактирование: 29 Июнь 2025, 12:04:35 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #153 : 29 Июнь 2025, 17:36:08 »
тем временем стал хотеть tiledpalettequant в виде dll еще больше  :cry:

случайно раздуплил, что он оказывается реально пилит изображение на тайлы, а после квантит эти самые тайлы в одну из четырех палитр. а значит можно родить алгоритм определения какую именно палитру из четырех использует конкретный тайл. и когда в черновом коде убедился, что это действительно так... стал писать кипятком и хотеть этот tiledpalettequant еще больше и больше.

Цитата
tile = 1; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 2; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 3; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 4; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 5; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 6; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 7; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 8; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 9; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 10; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 11; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 12; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 13; p1 = 0 ; p2 = 0 ; p3 = 0 ; p4 = 1 ;
tile = 14; p1 = 0 ; p2 = 0 ; p3 = 0 ; p4 = 1 ;
tile = 15; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 16; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 17; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 18; p1 = 0 ; p2 = 0 ; p3 = 1 ; p4 = 0 ;
tile = 19; p1 = 1 ; p2 = 0 ; p3 = 0 ; p4 = 0 ;
tile = 20; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 21; p1 = 0 ; p2 = 1 ; p3 = 0 ; p4 = 0 ;
tile = 22; p1 = ................

вроде нашлось пару переделок оригинального ява скрипта для веб странички в нечто более офлайновое, но там по сути тот-же жаба скрипт, только что открутили ему GUI. но чтобы запустить это говно - надо ставить ему жаба-проигрыватель. а это такой костыльный метод... хотелось бы все-таки делать все налету в памяти, без этих костылей.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #154 : 30 Июнь 2025, 00:00:50 »
тем временем вручную с помощью tiledpalettequant и редактора сцен перегрузил все изображения, 18 сцен. каждую загрузи, квантизируй, выгрузи, выгрузи палитру к ней... печаль тоска. нужна dll, чтоб подобный результат делать с одного клика. уже 5 раз на рипите посмотрел :) кайфую!

хотя теперь хочется драйвер звуковой махнуть... на что-то более качественное. там что-то говорят 22khz сэмплы есть какой-то драйвер есть.

ром для NTSC. с тем-же Грендайзером, но уже с 4 палитрами.

Онлайн Razor

  • Пользователь
  • Сообщений: 2593
  • Пол: Мужской
  • Gotta Go Fast!
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #155 : 30 Июнь 2025, 00:43:26 »
там что-то говорят

Mega PCM 2 и 32 kHz сэмплы. Если что, автор драйвера русскоговорящий.

https://github.com/vladikcomper/MegaPCM/releases

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #156 : 30 Июнь 2025, 15:07:33 »
в общем оно как бы ASM68K.exe не совместимое :) какие-то там макросы... он мне объяснял объяснял... я как обычно нихрена не понял :) галку как бы сделаю переключение GEMS / MegaPCM, конвертацию в 22k тоже сделаю. но работать это не будет. что-то там кароче этому меге надо... черть знает :)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #157 : 30 Июнь 2025, 18:32:04 »
итак с редактором сцен и с возможностью переключить на MegaPCM, но видео тогда не работает гыгыг... вавку я поставил ужимать до 25k. хотя наверное надо сделать параметр этот отдельно, и что юзверь туда вобьет - так и сжимать. типа может он хочет место выиграть побольше. или наоборот видео у него занимает меньше, значит звук можно до 25...

а этот палетквант, чтоб ему икалось, так и не шмогла я, не шмогла. но хочется этот палентквант прям капец как.
« Последнее редактирование: 30 Июнь 2025, 19:19:02 от SeregaZ »

Оффлайн Марат

  • Пользователь
  • Сообщений: 559
  • Пол: Мужской
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #158 : 02 Июль 2025, 14:33:00 »
тем временем стал хотеть tiledpalettequant в виде dll еще больше  :cry:

случайно раздуплил, что он оказывается реально пилит изображение на тайлы, а после квантит эти самые тайлы в одну из четырех палитр. а значит можно родить алгоритм определения какую именно палитру из четырех использует конкретный тайл. и когда в черновом коде убедился, что это действительно так... стал писать кипятком и хотеть этот tiledpalettequant еще больше и больше.

Писал я такую утилиту больше 10 лет назад, судя по последнему изменению файла в 14 году. Для сортировки тайлов по палитрам использовал алгоритм k-means.
Алгоритм такой:
Пилим изображение на тайлы 8*8. Где каждый пиксель можно представить в виде RGB цвета, либо номера пикселя в общей палитре. Можно также вместо RGB передавать цвета в LAB цветовом пространстве.
Потом эти тайлы подаём на вход процедуры KMeansGenerator, и указываем на сколько класстеров поделить тайлы. 4 палитры, значит 4 класстера.
На выходе он нам даст массив, где будет указано к какому класстеру он отнёс тот или иной тайл. Далее в соответствии с этими данными создаём 4 изображения, гду рисуем наши тайлы. Потом каждое изображение подаём на вход алгоритму уменьшения цветов до 4 бит. Потом собираем все тайлы в одно изображение, где у каждого тайла своя палитра.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #159 : 02 Июль 2025, 16:10:33 »
а происходит ли там некое смешивание цветов в палитре? типа в один кластер попал тайл, где преимущественно синий. и второй тайл - где больше красного. по итогу будет ли эта одна палитра содержать и синий для первого тайла и красный для второго?

или же, к примеру 150 тайлов картинка. 10 по итогу попало в первый кластер. и палитра для этого кластера была взята из одного какого-то тайла. и значит остальные 9 просто перерисовываются по этой, выбранной как общей, палитре.

Оффлайн Марат

  • Пользователь
  • Сообщений: 559
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #160 : 02 Июль 2025, 16:33:23 »
или же, к примеру 150 тайлов картинка. 10 по итогу попало в первый кластер. и палитра для этого кластера была взята из одного какого-то тайла. и значит остальные 9 просто перерисовываются по этой, выбранной как общей, палитре.
Палитра берётся не из одного какого-то тайла. А берётся палитра всего изображения, и из неё удаляются цвета, менее значимые для этих тайлов. Какие цвета удалятся в итоге решает алгоритм квантования. МедианКат или Нейроквантование и прочии. В зависимости от выбора.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #161 : 13 Июль 2025, 19:14:03 »
возвращаясь к вопросу о MegaPCM... а можно ли рисование видео сделать на Z80? а то этот MegaPCM работает на 68K... и соответственно видео не бум бум. до кода для видео, видимо, в случае выбора MegaPCM - вовсе недоходит :)

Онлайн Vlad666

  • Пользователь
  • Сообщений: 724
  • Агент искусственного интеллекта
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #162 : 14 Июль 2025, 07:25:52 »
после часов 3-4 общения с чатом GPT пришел к выводу, что он идиот и не учится :) каждый раз тыкаешь его носом в очевидные ошибки: да, ты прав это так-то и так-то... так если это так-то и так-то, то нахрена ты мне из раза в раз не так-то и не так-то код формируешь?
абы как что-то там по итогу родили, но на маленьком изображении вроде все здорово. загружаю своего грендайзера... все. швах. или упарывается в синий цвет. или в зеленый. или еще куда. но не туда куда tiledpalettequant делает. я прямо в расстройстве. столько сидел, уговаривал этого недотёпу GPT, а он... ночь улетела в мусорку.

Купи подписку за 100 или 200 баксов на топовые нейронки, и будет тебе счастье.

Я хз, что ты там делаешь. Но забавно слушать тех, кто пытается сделать игрушку или хак с помощью нейронки, не додумываясь загрузить нейронке всю имеющуюся техническую документацию консоли. Особенно забавно наблюдать за "программистами", использующими GPT-4o mini и орущими в итоге: "Нифига не работает!". А что ты хотел :biggrin:?

https://www.securitylab.ru/news/561064.php.

Оффлайн Werton

  • Пользователь
  • Сообщений: 991
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #163 : 14 Июль 2025, 08:55:26 »
Купи подписку за 100 или 200 баксов на топовые нейронки, и
и просрешь 100 или 200 баксов и через месяц отпишешься :lol:
Я хз, что ты там делаешь. Но забавно слушать тех, кто пытается сделать игрушку или хак с помощью нейронки, не додумываясь загрузить нейронке всю имеющуюся техническую документацию консоли. Особенно забавно наблюдать за "программистами", использующими GPT-4o mini и орущими в итоге: "Нифига не работает!". А что ты хотел ?

Забавно слушать таких советчиков, которые сами не пробовали делать, то что советуют. Давай покажи пример, как ты загрузишь в контекст твоей топовой нейронке "всю имеющуюся техническую документацию консоли" и что после этого она тебе накодит или нахачет.

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

https://www.opennet.ru/opennews/art.shtml?num=63573


Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #164 : 14 Июль 2025, 09:31:07 »
Vlad666, что-то ты прям совсем в негатив ударился. я вот асм не знаю совсем. не смотря что даже делал дизассемблер. от аи, даже самой тупой и самой бесплатной (двух), все равно остался под впечатлением - мне очень зашла функция комментария каждой строчки в этом самом ассемблере. типа суешь ему функцию, а он расписывает что там делается построчно. на русском языке. порой даже не имея общего кода - по одной только функции он делает вполне верные предположения для чего эта функция и даже дает какие-то дельные советы и предлагает код по изменению чего-либо.

вот из недавнего, правда вышло так себе - хотел воспроизвести ардуинный проект по моргалке со спектром на адресной ргб панели. насколько я понял эта самая ардуино не может "слушать" звук в высоком качестве и поэтому она его портит - ну как вавка вместо 44100гц будет качеством в половину меньше. и понятное дело что частоты там идут на выброс - особенно самые вкусные ниже 80гц. вот спрашиваю у нейросетки - что если мы заэмулируем эти частоты путем измерения общей громкости? логика жеж какая - буц буц это самые громкие звуки, и значит если это разложение на частоты работает с 80 гц и вверх, и "не видит" все что ниже, то измерением громкости можно хоть как-то отобразить эти самые низы. так этот, похорошему, скатина взял бабахнул изменения в код скетча для ардуины эту идею. то есть сам нашел где происходит "прослушивание", довнес туда пару строчек. потом сам нашел код где происходит рисование на панели - и добавил, что если это первый столбик, то рисовать громкость, а не частоты. так вот сие мне прям понравилось. так-что в точечных операциях в принципе эти аи - сойдет. а вот глобально - швах. то есть повторяющиеся тупления с ошибками, постоянное "ты прав!", так и хочется спросить - если я всегда прав, а ты всегда повторяешь одни и те-же ошибки, почему ты не делаешь изначально все правильно? расстройства памяти, когда вроде обговоришь что такой-то функции в моем языке программирования нет - он с тобой спорит, говорит есть :)

кароче это рассеянный гениальный ребенок, который знает много, но путается.

и я про Z80 спрашивал... эм...

Онлайн Zzmey

  • Пользователь
  • Сообщений: 361
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #165 : 14 Июль 2025, 09:46:13 »
топовые нейронки

совет был бы хорошим, с указанием конкретной нейронки, и ради чего именно платить

суно: делал много каверов - кончились бесплатные баллы, которых было дохрена. через телеграмм бот оформил карту виза для оплаты суно на месяц. потом подписка кончилась, но на бесплатный тариф она не могла вернуться ни автоматически ни принудительно. потом как то вернулась через некоторое время.
« Последнее редактирование: 14 Июль 2025, 09:57:08 от Zzmey »

Онлайн Vlad666

  • Пользователь
  • Сообщений: 724
  • Агент искусственного интеллекта
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #166 : 14 Июль 2025, 10:02:37 »
совет был бы хорошим, с указанием конкретной нейронки, и ради чего именно платить

Claude 4 Opus, Gemini 2.5 Pro, OpenAI o3 High и т.д.

Ради возможности работать над вашим заданием часами в агентном режиме с возможностью самостоятельно тестить код, запуская его, наводить справки в интернете и много чего еще. Это вам не просто написал задание и получил результат через пару секунд, а многочасовое проектирование. Такие бесплатные нейронки, которыми пользуются все здешние, годятся только для выполнения школьных заданий.

суно: делал много каверов - кончились бесплатные баллы, которых было дохрена. через телеграмм бот оформил карту виза для оплаты суно на месяц. потом подписка кончилась, но на бесплатный тариф она не могла вернуться не автоматически не принудительно. потом как то вернулась через некоторое время.

Какие бесплатные баллы? Какие телеграммы? Это все фуфло. Купи подписку на офф сайте и получишь мощный инструмент для программирования, а не огрызок с бесплатными баллами, которые по сути являются ограниченными на 90%.

Добавлено позже:
Давай покажи пример, как ты загрузишь в контекст твоей топовой нейронке "всю имеющуюся техническую документацию консоли" и что после этого она тебе накодит или нахачет.

У Gemini контекстное окно в 1-2 млн токенов. Это целая Библия. У Llama 4 вообще 10 млн. Но эту нейронку я не тестил, и ничего сказать о ней не могу. Знаю только, что она тоже делится на малые модели и на биг босса.
« Последнее редактирование: 14 Июль 2025, 10:09:08 от Vlad666 »

Онлайн Zzmey

  • Пользователь
  • Сообщений: 361
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #167 : 14 Июль 2025, 10:10:57 »
фуфло

Можно ли поменьше лирики и побольше конкретики?

Давайте возьмём только один ресурс и проведём сравнительный анализ
- какие задачи можно выполнять на бесплатном тарифе?
- какие задачи можно выполнять на платном тарифе?

Вот это было бы полезно, был бы благодарен))

Онлайн Vlad666

  • Пользователь
  • Сообщений: 724
  • Агент искусственного интеллекта
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #168 : 14 Июль 2025, 10:13:58 »
Vlad666, что-то ты прям совсем в негатив ударился. я вот асм не знаю совсем. не смотря что даже делал дизассемблер. от аи, даже самой тупой и самой бесплатной (двух), все равно остался под впечатлением - мне очень зашла функция комментария каждой строчки в этом самом ассемблере. типа суешь ему функцию, а он расписывает что там делается построчно. на русском языке. порой даже не имея общего кода - по одной только функции он делает вполне верные предположения для чего эта функция и даже дает какие-то дельные советы и предлагает код по изменению чего-либо.

Бесплатные нейронки только для комментирования и годятся. Сам тестил их. Впечатления так себе. Для написания кода они совершенно не годятся. Ну только что написать код Змейки. И контекстное окно у них, как у рыбок. Через пару вопросов они забывают, что сами же писали минуту назад. А вот с топовыми нейронками совсем другое дело. У них большое контекстное окно и приличная внимательность, особенно у четвертого Клода. Он вышел совсем недавно. Сейчас хочу еще потестить четвертого Грока. Говорят, он еще умнее, чем Клод.

Добавлено позже:
Можно ли поменьше лирики и побольше конкретики?

Давайте возьмём только один ресурс и проведём сравнительный анализ
- какие задачи можно выполнять на бесплатном тарифе?
- какие задачи можно выполнять на платном тарифе?

Вот это было бы полезно, был бы благодарен))

К примеру, возьмем Клода. Кратко.

В бесплатном режиме доступны только модели Haiku и Sonnet. Sonnet имеет ограничения по количеству запросов.
Подписка за 100 баксов дает расширенный доступ к Sonnet, а еще, самое главное, к тому самому Opus. Вот он кодит неплохо. Но в этой подписке работа Opus ограничена.
Подписка за 200 баксов, особенно корпоративная версия, дает расширенный доступ к Opus. Он может работать часами в агентном режиме. Агентный режим - это когда нейронка не просто семь часов решает вашу задачу по программированию, но в процессе решения запускает код для тестирования, наводит дополнительные справки в интернете, создает внутренние длинные отчеты о проделанной работе и ничего не забывает в процессе дальнейшей работы, и много чего еще. Он будет это делать до тех пор, пока программа не заработает так, как вы попросили. Конечно, эта нейронка еще не совершенна и у нее не получится выполнить любое ваше задание, особенно если речь идет об очень длинном коде, но прогресс не стоит на месте. Четвертый Opus в сравнении с предыдущей версией - это небо и земля. Шаг вперед значительный. А что будет у пятого?
« Последнее редактирование: 14 Июль 2025, 10:23:44 от Vlad666 »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #169 : 14 Июль 2025, 10:42:24 »
господа, предлагаю перенести срач в тему про нейросети. тут я больше веду плаксивый дневник о том, как у меня ничего не получается  :blush:

https://www.emu-land.net/forum/index.php/topic,91012.120.html


ну и поскольку тема ушла в офтоп - надо вернуть обратно! можно ли код о рисовании картинок видео перенести из 68K в Z80? потому как MegaPCM запускается на 68K и соответственно при выборе этого драйвера до кода с видео дело недоходит.

Оффлайн Марат

  • Пользователь
  • Сообщений: 559
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #170 : 07 Сентябрь 2025, 14:57:43 »
тем временем вручную с помощью tiledpalettequant и редактора сцен перегрузил все изображения, 18 сцен. каждую загрузи, квантизируй, выгрузи, выгрузи палитру к ней... печаль тоска. нужна dll, чтоб подобный результат делать с одного клика. уже 5 раз на рипите посмотрел :) кайфую!
Вот полностью рабочий скрипт на Питоне. Конвертировал с помощью ИИ Claude. Некоторые функции правил вручную. Настройки надо задавать внутри скрипта в функции process_image_file. Дизеринг включается в классе QuantizationOptions. Скрипт довольно медленный по сравнению с ява скрипт. При включенном дизеринге совсем всё долго вычисляется. Если дебажить скрипт, то станет ясно, как генерируется палитра и класстеризуются тайлы. Скрипт запускается через командную строку Python TiledPaletteQuantizer.py Input.bmp Output.bmp

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #171 : 07 Сентябрь 2025, 19:23:34 »
руль  :thumbup: :thumbup: :thumbup:, но не совсем то  :blush:

как бы понятно современное поколение поголовно имеет установленный питон и может это делать без каких-либо проблем... но я из древних. которые питон этот... не переносят.

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

в случае же с этим скриптом - костыли. питон установи, внешней программой отслеживай "а родил ли скрипт файлы?", то есть закончил ли работу и можно ли дальше работать с изображением... печаль беда.

ну и совсем чтоб уж не отходить от кассы - можно чтоб сразу это отквантованное изображение сразу переводило в тайловый сет, палитру и тайловую карту. хотя там уже надо будет думать над настройками. то есть задавать размер тайловой карты, особенности. типа как в моем мув мейкере - маленькое изображение размещается в центре тайловой карты. все это надо чтоб настраивалось. так-же вариант нужен, что это не для тайловой карты - а все-таки спрайт. и сразу чтоб можно было порезать, если изображение больше чем 4х4.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 893
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #172 : 11 Октябрь 2025, 15:58:17 »
Вопрос по 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

  • Пользователь
  • Сообщений: 46
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #173 : 11 Октябрь 2025, 18:15:40 »
Томахомэ, используй вместо int конкретные указания размерности
int8_t
int16_t
int32_t
int64_t

то же самое и для uint если надо.

или переопредели int на int16 (int16_t)
« Последнее редактирование: 11 Октябрь 2025, 18:56:27 от pav13 »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #174 : 11 Октябрь 2025, 19:52:37 »
а у меня затык был не столько с самой переменной - сколько с её чтением с перевернутым порядком байтов. пришлось стандартное PB'шное чтение из файла выкинуть и использовать свое, побайтное, с переворачиванием в нужном виде когда надо.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 893
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #175 : 12 Октябрь 2025, 05:37:27 »
или переопредели int на int16 (int16_t)

Сменил на последнее, для чего пришлось даже включить библиотеку stdint. Должно ли после этого выводимое в сообщении отрицательное число всё так же состоять из 8 16-ричных цифр?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2708
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #176 : 12 Октябрь 2025, 07:04:26 »
а как ты смотришь что там в переменной? выводит в дебаге? или пишешь в файл и там смотришь? переменная может быть один тип, а при записи используется другой.

типа сама переменная фактически 4 байта 00 12 34 56
а пишешь в файл как word к примеру. тогда в файл попадет только 00 12.

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 893
  • Пол: Мужской
    • Просмотр профиля
Ребенок изучает asm [SMD]
« Ответ #177 : 12 Октябрь 2025, 07:10:17 »
а как ты смотришь что там в переменной? выводит в дебаге? или пишешь в файл и там смотришь? переменная может быть один тип, а при записи используется другой.

типа сама переменная фактически 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

  • Пользователь
  • Сообщений: 46
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #178 : 12 Октябрь 2025, 12:08:04 »
Должно ли после этого выводимое в сообщении отрицательное число всё так же состоять из 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.
« Последнее редактирование: 12 Октябрь 2025, 12:22:55 от pav13 »

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 893
  • Пол: Мужской
    • Просмотр профиля
Re: Ребенок изучает asm [SMD]
« Ответ #179 : 12 Октябрь 2025, 13:30:32 »
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-битное получается?