Цитата Сообщение от ivagor Посмотреть сообщение
Только нужно, чтобы в палитре был черный цвет, на который можно поменять обратно.
Наверное можно попробовать прогнать первую палитру через что-либо такое, сравнивая получившиеся от 0 до 17 уровни.

Скрытый текст

Код:
ClrLum:
        push	b
	mov	b,a
	ani	111B
	mov	c,a
	mov	a,b
	rrc
	rrc
	rrc
	ani	111B
	add	c
	mov	c,a
	mov	a,b
	rlc
	rlc
	ani	11B
	add	c
	pop	b
	ret
[свернуть]


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

Скрытый текст

Код:
;DrkBrd  Set border to darkest color in palette
;INPUT   <HL> = 16-byte palette address
;OUTPUT [Border] becomes index of darkest color in palette

DrkBrd:	lxi	b,10FFh
DrkB01:	mov	a,m
	call	ClrLum	; <A> is guaranteed to be [0..11h]
	cmp	c
	jnc	DrkB02
	mov	c,a
	mov	e,b	; 16 - index
DrkB02:inx	h
	dcr	b
	jnz	DrkB01
	mvi	a,10h
	sub	e
	jmp	SetBrd
[свернуть]


Если в картинке отсутствует чёрный, то бордюр будет каким-то из тёмных цветов (в Robotz в меню опций бордюр вышел тёмно-синим). По нормальному, надо ещё разную яркость компонент с одним уровнем учесть.

В пределе можно пробежать по всем палитрам, найти minimum minorum, замутить его с частотой изменений и выбрать индекс самого тёмного цвета с наименьшей частотой изменений.

Можно ещё "нормализовать" биты изображения так чтобы нулёвой индекс палитры всегда получался наиболее тёмным. Но это наверное при конверсии удобнее делать.