PDA

Просмотр полной версии : подсобите советом плиззз. палитры в приставке на Z80



progman
26.04.2009, 13:21
камрады, нуженл хелп.
работаю сейчас с игровой приставкой на базе Z80.
в этой приблуде имеется 9 микросхем памяти ( ППЗУ ) 8штук по 512К в которых прошиты спрайты и 1 микруха 256 кило с исполняемым модулем.

вывод на экран 640х480 предположительно 16бит.
выод на экран осуществляется тайлами 16х16 пикселей. все спрайты состоят из этих тайлов.
все тайлы хранятся в двух группак микрух. половина тайлов в 1-4 микрухах и половина в 5-8.

хранятся хитро: в каждой из 4х микрух по 2 бита цвета. в четных микрухах четные пикселы в нечетных нечетные. итого получается 256 (2*8 бит )цветов на каждый тайл/спрайт.

а вот палитра которой происходит расскраска хранится гдето в исполняемом дампе.
визуальный анализ кода ( IDA дизассемблер ) не помог. я вообще не представляю в каком формате оно там может храниться
с вероятностью 100% это не A8R8G8B8, c вероятностью 90% это не R5G5B5 и не R5G6B5 (к сожалению других форматов хранения палитры я не знаю ибо видузятник )

вопрос как грится на мульён - в каком формате вообще в приставке на базе Z80 может храниться палитра?

как в коде может осуществляться загрузка и переключение палитр?
как в коде может осуществляться вывод тайла на экран?

впринципе думаю что если найду место в коде где тайл рисуется по координатам X, Y то смогу разобраться в каком формате там палитра. ведь по уму перед выводом тайла оно должно палитру выставлять, которая должна по какому то адресу лежать.

буду благодарен за любой совет и хелп.

Valen
26.04.2009, 14:58
Как приставка называется ?

progman
26.04.2009, 18:36
Как приставка называется ?
Igrosoft

savelij
26.04.2009, 19:21
А фотки этого чуда есть?

Valen
26.04.2009, 19:36
Igrosoft
Вот с ними попробуй связаться.

progman
26.04.2009, 20:10
фотока вот:
http://plata2005.narod.ru/images/03.jpg

слева по краю идут восем микрух с спрайтами.
справа микруха с наклейкой это прошивка с исполняемым модулем.
снизу разъём для монитора. любой CRT или LCD.
сверху разъем для переферии
справа разъем для питания и вывод звука

а связаться с ними тоже не представляется возможным.


ЗЫ я в коде нашел группу регистров, не описанную в документе на Z80
XL и XH судя по всему однобайтная пара. регистр X как двухбайтный нигде не фигурирует. есть ламерский вопрос - они как то связаны с регистром IX
и вообще к IX возможно обращение к младшему и старшему по отдельности - как в случае с BC или DE

savelij
26.04.2009, 21:22
ЗЫ я в коде нашел группу регистров, не описанную в документе на Z80
XL и XH судя по всему однобайтная пара. регистр X как двухбайтный нигде не фигурирует. есть ламерский вопрос - они как то связаны с регистром IX
и вообще к IX возможно обращение к младшему и старшему по отдельности - как в случае с BC или DE

Это и есть половинки регистра IX младшая и старшая. Обращатся как к регистру HL (по коду операции) только им предшествует префиксный байт #DD. Как пример: LD A,H код #7C, если код выглядит так #DD #7C то это LD A,XH.
Добавлено через 4 минуты
А в квадратных разъемах что конкретно стоит?

progman
26.04.2009, 22:23
А в квадратных разъемах что конкретно стоит?
хз. но это на игру не влияет никак. новая игра заливается путем смены прошивки 9ти микрухах.

MegaMyth
28.04.2009, 22:12
Карочи это плата игрового автомата.

http://zx.pk.ru/attachment.php?attachmentid=11826&stc=1&d=1240941783

по поводу палитры:
Посмотри на DAC и всё будет понятно.

В квадратных разъёмах стят EPM3032 3 из которых с одинаковой прошивкой. Они используются как мультиплексоры.

внизу на картинке я отметил 2 мсх SRAMы - если палитра и есть, то она живёт в них.

во вставленой платке с EPM3256 есть еще одна SRAMa, вот вней лежит карта слоёв и т.д.

Схему найти не обещаю, но вот PCB обоих плат должны быть.

Выложил... юзайте...

progman
29.04.2009, 16:46
MegaMyth
вот фотка без маленькой платы
http://plata2005.narod.ru/images/02.jpg

я не согласен с тобой что палитра хранится где то еще кроме как в 9ти перепрограммируемых микрухах. Для корректной смены игры, повторюсь, требуется прошивка только 9 микрух на которых на фотке наклейки есть. Остальное ничего не меняется.

не думаю что они хранят палитры на все случаи жизни в какой то специальной ПЗУ.

а поскольку в левых 8ми ее нет 100%, разве что есть некое ноу хау как в 8 битах разместить 65536 цветов, то можно предположить что палитры в исполняемом модуле - тоесть в девятой микрухе.

MegaMyth
29.04.2009, 22:12
На картинке чётко обозначены 2 мсх в розовом кружке. Они значатся как статик рам. Соответственно она в них НЕ зашита, она в них грузится. и естественно из 9-й мсх. и менно этот процесс если я не ошибаюсь, тебе и нужно отследить.

Так же в кружочке я обвёл DAC (цифро аналоговый преобразователь), он идёт на мсх U24-25 (ИР22 с повышенной нагрузочной способностью видимо). так вот. Отследив резисторы и их кол-во идущее на каждую цветовоую компоненту можно предположить что для каждого из цветов используется следующее кол-во разрядов:

VGA Pin# - Name - Bit Count
1-R-5
2-G-5
3-B-6
На зелёный цвет идёт старший бит с SRAM (U25) из чего смею предположить что палитра хранится в формате G6B5R5.

Так вот вернёмся к изначальному вопросу - как рулить палитрой. Есть 2 способа как можно писать в ту SRAM-память-палитры:
1. Если она подключена как окно в памяти то скорее всего будет грузится LDIR'ом
2. Если она подключена как порт то следует искать чтонить вроде OUT или OUTIR
НО!!! если сделать предположение, что для загрузки палитры есть какая то процедура и размер палитры известен заранее - смею предположить что в коде нужно искать константу размером с палитру - в данном случае 512(0x0200).

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

P.P.S. если не жалко - выложи прошивку 9-й мсх. Есть вероятность что я открою в себе таллант по поиску палитр в шестнацетиричном дампе.

progman
30.04.2009, 13:11
MegaMyth
1. Download Link:
http://rapidshare.com/files/227451121/fc060111.rar.html
MD5: DB53F16D95E6DA1301850F054F5C68F3

Добавлено через 50 секунд
MegaMyth,
6-5-5 хм... буду пробовать искать. я тулзу написал - методом перебора можно искать палитру зная формат

progman
01.05.2009, 19:15
VGA Pin# - Name - Bit Count
1-R-5
2-G-5
3-B-6
На зелёный цвет идёт старший бит с SRAM (U25) из чего смею предположить что палитра хранится в формате G6B5R5.


ээээ так G6B5R5 или R5G5B6 - какой формат то искать?

Keeper
01.05.2009, 19:51
ээээ так G6B5R5 или R5G5B6 - какой формат то искать?

Искать, скорее всего, нужно R5G6B5 :), это вроде стандарт :)

progman
01.05.2009, 20:14
Искать, скорее всего, нужно R5G6B5 :), это вроде стандарт :)
стандарт чего? Windows?

я вот мануально выгрузил 5 или 6 палитр мегаректальным способом (через видеозахват ) и прихожу к выводу что хранятся они там 5-5-5.
палитра создается инкриментом 8 к базовому цвету. 0, 8, 16... 248
причем 248 это максимум который я вообще видел по всем компонентам цвета.

но блин в коде нет сигнатуры соотвествующей такому формату палитры (((
более того не нашел сигнатуры соотв. 5-6-5.

MegaMyth
01.05.2009, 21:09
Карочи откройте файл с платой и посмотрите. Там практически всё понятно

progman
01.05.2009, 21:49
Карочи откройте файл с платой и посмотрите. Там практически всё понятно

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

PS есть подозрение что нашел. в прошивке по адресу 0x00016000
12 штук по 512 байт. сейчас анализирую вторую по счету. она очень сильно совпадает с тем что я вручную составил анализируя цвета, но есть некоторые расхождения в гамме и оттенках

левая из прошивки получается по формуле B5G6R5 правая - я вручную создал
http://www.poigrat.com/img/p1.gif http://www.poigrat.com/img/p2.gif

Keeper
01.05.2009, 23:48
стандарт чего? Windows?

я вот мануально выгрузил 5 или 6 палитр мегаректальным способом (через видеозахват ) и прихожу к выводу что хранятся они там 5-5-5...
более того не нашел сигнатуры соотв. 5-6-5.

Хммм, стандарт это стандарт, ну да ладно, OpenGL подойдет? Раскладки битов всегда обозначаются как RxGxBx, где х кол-во бит цветовой компоненты. Кстати, R5G5B5 тоже стандартная раскладка, но стоит учитывать то, что видео захват может попортить цвета изрядно...

progman
02.05.2009, 00:03
Хммм, стандарт это стандарт, ну да ладно, OpenGL подойдет? Раскладки битов всегда обозначаются как RxGxBx, где х кол-во бит цветовой компоненты. Кстати, R5G5B5 тоже стандартная раскладка, но стоит учитывать то, что видео захват может попортить цвета изрядно...
я учитыаю что видеозахват косячит сильно. а по поводу стандарта... практика показывает что разработчики железок делают свои правила удобные в первую очередь им самим.

MegaMyth
02.05.2009, 01:49
Каюсь дико... с путанницей... G5B6R5

в итоге у меня получилось тоже самое.

http://zx.pk.ru/attachment.php?attachmentid=11859&d=1241215058

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

P.S. чтобы получать макс не 248 а 255
делай чёнить на вроде

function Conv(i:word):cardinal;
var
r,g,b:byte;
begin
r:=i and 31;
b:=(i div 32) and 63;
g:=(i div 2048) and 31;
Conv:=trunc(r*8.226) + trunc(b*4.05)*256 + trunc(g*8.226)*65536;
end;

progman
02.05.2009, 11:07
писец. никаких стандартов 5-6-5 или 6-5-5 нет
5 бит на красный
5 бит на зеленый
6 бит на синий
но.....
первые 5 бит младшего байта это красный
первые 5 бит старшего байта это зеленый
а синий это старшие 3 бита младшего байта и старшие 3 бита старшего байта

вот такой вот ректал....
пасибо всем кто откликнулся.
особый респект MegaMyth за пинок в правильном направлении.

Добавлено через 57 секунд
MegaMyth, приведенный тобою код конверсии не оптимален
либо таблицу заюзать либо умножать на целые велицины, даже не умножать а сдвигать.
особой разницы на глаз при этом не будет.

TmK
04.05.2009, 13:54
По ссылке http://www.igrosoft.info/ напрашивается вывод что эта железка из "Однорукого бандита" :)
Так оно или не так?

MegaMyth
04.05.2009, 20:45
Ну да, есть такая тема :-)

scl^mc
16.07.2009, 00:17
offtop/ если у кого-то есть вопросы, задавайте их непосредственно в теме или топикстартеру. не надо множить "жалобных" сообщений в модераторской. /offtop