1
Ромхакинг и программирование / Программирование редакторов для внесения каких-то изменений в ром.
« : 12 Май 2024, 02:54:40 »
Итак... начинаем медленное вкатывание в графоний. Данный пост будет состоять из двух частей. Первая - возможности PB, который не тащит и вторая - обсудим палитру Genesis/Megadrive. Хотя не думаю что там суть палитры будет разительно отличаться от других консолей.
Кто помнит школьные годы - настоящие! А не эти вот все... с виндовсами, интернетом и дотой 2 - то там на бейсике учитель заставлял рисовать точки, линии, квадраты, круги... и внезапно на нашем бейсике это все работает! Plot, Line, Box, Circle... все свое родное и теплое.
Рисовать PB может как в картинку, как в файл-картинку, в гаджет-канвас на окне программы, в текстуру. Нас интересует вывод в картинку и последующее отображение этой картинки в гаджете-картинке на окне программы. Каждая команда рисования имеет координаты x y куда собственно начинать рисовать элемент, имеет цвет RGB(0-255, 0-255, 0-255) и свои отдельные нюансы - типа если это линия, то координаты второй точки докуда надо рисовать линию, если циркле - радиус, и все такое прочее. Это самое прочее можно уточнить жмакнув на нужной команде рисования и нажав F1.
Вот значит мы создаем новый проект, туда втуливаем болванку пустого окна программы, налепляем туда гаджет картинки и пишем код для рисования. Пока я думаю сделать длинный прямоугольник и в нем квадратами рисовать разные цвета. Типа как слово в Поле Чудес, только что вместо черного - разноцветные квадратики. Для разноцветности пусть будет рандом от 0 до 255 для каждого из трех сегментов цвета RGB.
Уууууу... красоты получилось - не описуемой!
Все хорошо, да только приставка наша такое не может Вместо абы какого RGB цвета там могут быть только огрызки. Вместо 0-255 для каждого значения RGB там могут быть всего 8 значений:
0, 36, 72, 109, 145, 181, 219, 255 (плюс минус. может на 1-2 различаться. каждый источник утверждает что только у них самые точные значения цветов и поскольку источников тьма то и цифры могут отличаться. скажем не 181, а 180, 182 и так далее)
И как хочешь - так и выкручивайся. Печаль. А докучи там еще и не RGB - а BGR. Всего там могут быть 4 палитры по 15 цветов и шестнадцатый прозрачный. Если посмотреть наш любимый Zero Tolerance с помощью VDP просмоторщика, то палитра должна выглядеть так:
Жмакнем в этом самом VDP виевере Dump Pal, сохраним этот файл и будем его читать в нашей программе и рисовать соответствующие цвета на картинке.
Для хранения цветов думаю нам следует сделать сложный массив. Представим себе ексель таблицу. В нашей таблице будет 4 колонки и 16 строчек. Вот массив будет иметь эти самые 4 колонки и в каждой 16 ячеек, куда мы будем втуливать цвет. Сам цвет сначала надо будет конвертануть из Сеговского BGR в обычный компьютерный RGB, чтобы PB понял каким собственно цветом надо закрашивать нужный квадратик.
ну и потрадиции форум взбрыкнул и незахотел принимать всю портянку кода - прикладываю в виде архива:
pal.zip (2.25 КБ - загружено 0 раз.)
в итоге получилась у нас такая замечательная пол литра... эээ... в смысле палитра:
Похоже?
Кто помнит школьные годы - настоящие! А не эти вот все... с виндовсами, интернетом и дотой 2 - то там на бейсике учитель заставлял рисовать точки, линии, квадраты, круги... и внезапно на нашем бейсике это все работает! Plot, Line, Box, Circle... все свое родное и теплое.
Рисовать PB может как в картинку, как в файл-картинку, в гаджет-канвас на окне программы, в текстуру. Нас интересует вывод в картинку и последующее отображение этой картинки в гаджете-картинке на окне программы. Каждая команда рисования имеет координаты x y куда собственно начинать рисовать элемент, имеет цвет RGB(0-255, 0-255, 0-255) и свои отдельные нюансы - типа если это линия, то координаты второй точки докуда надо рисовать линию, если циркле - радиус, и все такое прочее. Это самое прочее можно уточнить жмакнув на нужной команде рисования и нажав F1.
Вот значит мы создаем новый проект, туда втуливаем болванку пустого окна программы, налепляем туда гаджет картинки и пишем код для рисования. Пока я думаю сделать длинный прямоугольник и в нем квадратами рисовать разные цвета. Типа как слово в Поле Чудес, только что вместо черного - разноцветные квадратики. Для разноцветности пусть будет рандом от 0 до 255 для каждого из трех сегментов цвета RGB.
Код: [Выделить]
Enumeration
#Window
#GadgetKartinka
#SamaKartinka
EndEnumeration
; в начале создаем само изображение, пока пустое. это будет черный длинный прямоугольник
CreateImage(#SamaKartinka, 200, 20)
; стартуем сам процесс рисования
; ставим вывод, что рисовать в картинку
If StartDrawing(ImageOutput(#SamaKartinka))
; сначала черный фон на всю картинку
Box(0, 0, 200, 20, RGB(0, 0, 0)) ; это черный цвет. в принципе можно было просто 0 написать вместо RGB(0, 0, 0)
x = 0
; в цикле стартуем прорисовку квадратиков с рандомным цветом, сдвигая координату Х вправо каждый раз
For i = 1 To 10
Box(x, 0, 20, 20, RGB(Random(255, 0), Random(255, 0), Random(255, 0)))
x + 20
Next
; остановка рисования
StopDrawing()
EndIf
If OpenWindow(#Window, 100, 100, 220, 40, "Якубович под грибами", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
; добавляем гаджет-картинку, с подготовленным изображением
ImageGadget(#GadgetKartinka, 10, 10, 200, 20, ImageID(#SamaKartinka))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
qiut = 1
EndSelect
Until qiut = 1
EndIf
End
Уууууу... красоты получилось - не описуемой!
Все хорошо, да только приставка наша такое не может Вместо абы какого RGB цвета там могут быть только огрызки. Вместо 0-255 для каждого значения RGB там могут быть всего 8 значений:
0, 36, 72, 109, 145, 181, 219, 255 (плюс минус. может на 1-2 различаться. каждый источник утверждает что только у них самые точные значения цветов и поскольку источников тьма то и цифры могут отличаться. скажем не 181, а 180, 182 и так далее)
И как хочешь - так и выкручивайся. Печаль. А докучи там еще и не RGB - а BGR. Всего там могут быть 4 палитры по 15 цветов и шестнадцатый прозрачный. Если посмотреть наш любимый Zero Tolerance с помощью VDP просмоторщика, то палитра должна выглядеть так:
Жмакнем в этом самом VDP виевере Dump Pal, сохраним этот файл и будем его читать в нашей программе и рисовать соответствующие цвета на картинке.
Для хранения цветов думаю нам следует сделать сложный массив. Представим себе ексель таблицу. В нашей таблице будет 4 колонки и 16 строчек. Вот массив будет иметь эти самые 4 колонки и в каждой 16 ячеек, куда мы будем втуливать цвет. Сам цвет сначала надо будет конвертануть из Сеговского BGR в обычный компьютерный RGB, чтобы PB понял каким собственно цветом надо закрашивать нужный квадратик.
ну и потрадиции форум взбрыкнул и незахотел принимать всю портянку кода - прикладываю в виде архива:
pal.zip (2.25 КБ - загружено 0 раз.)
в итоге получилась у нас такая замечательная пол литра... эээ... в смысле палитра:
Похоже?