Страниц: 1 2 3 4 5 6 7 8 9
Мсье знает толк в извращениях...
В принципе я узнал то что мне нужно из вашего кода, несмотря на главную ошибку, которую вы допустили оба
PHP код:
#include <stdlib.h>
#define PACK_RGBA(R, G, B, A) \
( (((R) & 0xff) << 24) \
| (((G) & 0xff) << 16) \
| (((B) & 0xff) << 8) \
| (((A) & 0xff) << 0) )
int main(int argc, char **argv) {
int r, g, b, a;
r = g = b = a = 0;
printf("Enter color: ");
if(scanf("#%02x%02x%02x%02x", &r, &g, &b, &a) < 3) {
printf("Error! Not enough colors or color is not valid.\n");
return -1;
}
printf("Color: 0x%8lX\n", PACK_RGBA(r, g, b, a));
return 0;
}
Поняли о чем я?
По моему задание, звучало как "запаковать строку вида #AABBCC", а не отдельные значения. А ты нам показываешь как паковать отдельные значения в одну переменную. Конечно вводя их как строку, но сохраняя в разные переменные...
или ты хотел показать своим примером, что-то другое, что я не понял?
Да, при моих знаниях... меня еще нельзя назвать программистом, не суди пожалуйста строго
Цитата:Поняли о чем я?
Поняли, но постановка задания была совсем другая...
Цитата:По моему задание, звучало как "запаковать строку вида #AABBCC", а не отдельные значения.
Вот именно...
Сват, так что, мы приняты, или как?
Приняты иль не приняты, мне кажется, что все равно пока что лучше написать какой то толковый модуль или прогу, а потом сунутся в ядро.. тем более если там нет коментов, то это будет бесполезно или очень болезненно
.
SDK есть и это уже многое дает нам для начала работы, было бы желание, а так можно что хочешь сотворить на его основе.
И параллельно вопрос: SWAT ты собирал компилятор для sh4 под MinGW, а то Cygwin как то медленно у меня пашет и выдает ошибки при компиляции?
В смысле другая?? Я запаковал строку в 32 бита, разве я не выполнил условие?
Вообще то макрос PACK_RGBA как раз и пакует в одну переменную полученные цвета по отдельности, просто я сразу вывел значение принтом.
Но и у меня был лишний код, вообще можно было сделать вот так:
PHP код:
int main(int argc, char **argv) {
uint32_t rgba = 0x00000000;
printf("Enter color: ");
if(scanf("#%08x", &rgba) < 1) {
printf("Error! Not enough colors or color is not valid.\n");
return -1;
}
printf("Color: 0x%8lX\n", rgba);
return 0;
}
Можно спользовать функцию sscanf чтобы брать значение не из ввода, а из любой строковой переменной.
Этим я хотел сказать что вы оба изобрели велосипед, хотя все это делается буквально одной функцией, которая входит в стандартную библиотеку stdlib. Я конечно понимаю что каждый хотел показать что он может много чего написать
) но в реальности это совсем не продуктивно.
В любом случае начинайте с SDK, а дальше посмотрим.
Я все компиляторы собираю под cygwin.
Блин.. Я уже делал подобное, когда то, только там была передача данных строкой по сети , а потом со строки числа нада было извлечь, и я же использовал тогда sscanf()
Просто это было года два назад... вот что значит отсутствие практики - все забывается.
Если соберу компил под MinGW то расскажу как, если кому будет интересно
Постановка задачи звучала так: написать функцию, которая бы преобразовывала бы строку символов в упакованное 32 разрядное слово. Ты же выкинул нам макрос, который пакует в переменную 4 цифры, именно цифры, а не символа. Может мы и изобрели велосипед, ну так что ж теперь, вешаться что ли? Иногда и велосипеды изобретать полезно, для понимания смысла так сказать, и сути производимых действий.
Тем более, я, как и sc_maxim, не тренировался уже в написании программ на си уже более как полугода, не говоря уже о том что я вообще как бы не программер (т.е. не работаю им по специальности), и считаю программирование лишь прикладной областью деятельности, а не какой-то там самоцелью или еще чего упаси боже смыслом жизни и т.п. Т.е. в рамках чисто применения - как решения инженерной задачи. А оптимизация там, варианты решения... Пусть этим соотв. люди занимаются.
И, что означает это фраза, начинайте с SDK?
Т.е. ты предлагаешь нам взяв SDK написать под Дримшелл какую-нибудь свою прикладную программу или модуль? Я так понимаю? Просто у меня щас немного трабла с недостатком идей, точнее есть одна, и очень хорошая, но боюсь ее весьма сложно будет реализовать. Тем более в рамках ресурсов приставки.
ЗЫ. Если уж ты ходел увидеть от нас макрос, следовало задание дать так:
написать макрос, пакующий в одну переменную длиной 4 байт 4 различных значения цветовой составляющей, но никак не строку. Тут ключевыми являются именно слова "макрос" и "строка". их как бы осторожно применять надо. А то получается требуется одно а надо совсем другое. А мы еще после и виноваты. Как такое назвать?
ЗЫ2. Хоть и признаюсь, что мы оба (в особенности я) изрядно затупили. Могли бы действительно, все это красиво и лаконично одним сканэфом реализовать. Но идеальных людей не бывает, как и программеров, ведь так?
PS3/ Чё т я не вижу нигде ссылку на SDK на сайте... может кто подскажет...
Dreamshell SDK рулит....
// Pixel packing macro
#define PACK_PIXEL(r, g, b) ( ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3) )
Не стоит так нервничать.
Несмотря ни на что опыт получен позитивный
// Pixel packing macro
#define PACK_PIXEL(r, g, b) ( ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3) )
это судя по всему макрос для запаковки 16-ти разрядного цвета, так как там биты не равно мерно распределены R5G6B5. Тут сканэфом не обойтись.
Про опыт согласен))
А хз. Что значит неравномерное распределены?
я имел ввиду количество бит разное. на красный идет 5 бит, на зеленый 6 бит, так как глаз наиболее чувствителен к нему, ну и на синий тоже 5.
А, ну так это уже не RGB а как раз R5G6B5, ну да, короч я понял.
Так а все таки, где брать SDK и главное как его юзать.
Ну для начала ставишь среду для программинга под Дрим, я качал
отсюда.
Потом
отсюда сам SDK.
чтоб его юзать нужно как обычно подключать заголовки и использовать функции которые там описаны. В SDK даже есть примеры рабочего модуля и проги. При компиляции нужно подключать библиотеки из SDK стандартным для gcc способом. Я пока ниче не писал на SDK потому это все что я знаю. Думаю SWAT, если ему действительно нужны помощники, напишет более детально.
Думаю да а что такое gcc?/Шось не грузится у меня Dreamshell на эмуле... не говоря уже про pс loader..
GCC - это набор компиляторов (GNU Compilers collection), версия для процессора sh4 и arm, входит в тот пакет что я давал ссылку. Как с ним работать можешь почитать в инете. При программировании под KOS и DShell ты будеш юзать врапер, и большиство команд тебе не придется вручную прописывать. К примеру что-б скомпилить прогу которая использует библиотеку libSDL.a, тебе нужно будет написать что-то в таком роде:
kos-cc -o sdl_proga.elf sdl_proga.c -lSDL
------------------------------------------
kos-cc - это врапер для sh-elf-gcc уже с нужными стандартными ключами
-o - это ключ в котором указывается имя выходящего файла sdl_proga.elf
sdl_proga.c - исходник нашей проги
-lSDL - ключ говорящий, что нужно линковать нашу прогу с файлом libSDL.a
Естественно что все команды нужно вводить в командной строке Cygwin, который ставится автоматом с того набора что я ссылку давал.
Обычно конечно делается Makefile и вся прога собирается командой make, но так тоже можно.
(16.01.2011 23:48)Rio писал(а): [ -> ]Постановка задачи звучала так: написать функцию, которая бы преобразовывала бы строку символов в упакованное 32 разрядное слово. Ты же выкинул нам макрос, который пакует в переменную 4 цифры, именно цифры, а не символа. Может мы и изобрели велосипед, ну так что ж теперь, вешаться что ли? Иногда и велосипеды изобретать полезно, для понимания смысла так сказать, и сути производимых действий.
Тем более, я, как и sc_maxim, не тренировался уже в написании программ на си уже более как полугода, не говоря уже о том что я вообще как бы не программер (т.е. не работаю им по специальности), и считаю программирование лишь прикладной областью деятельности, а не какой-то там самоцелью или еще чего упаси боже смыслом жизни и т.п. Т.е. в рамках чисто применения - как решения инженерной задачи. А оптимизация там, варианты решения... Пусть этим соотв. люди занимаются.
И, что означает это фраза, начинайте с SDK?
Т.е. ты предлагаешь нам взяв SDK написать под Дримшелл какую-нибудь свою прикладную программу или модуль? Я так понимаю? Просто у меня щас немного трабла с недостатком идей, точнее есть одна, и очень хорошая, но боюсь ее весьма сложно будет реализовать. Тем более в рамках ресурсов приставки.
ЗЫ. Если уж ты ходел увидеть от нас макрос, следовало задание дать так:
написать макрос, пакующий в одну переменную длиной 4 байт 4 различных значения цветовой составляющей, но никак не строку. Тут ключевыми являются именно слова "макрос" и "строка". их как бы осторожно применять надо. А то получается требуется одно а надо совсем другое. А мы еще после и виноваты. Как такое назвать?
ЗЫ2. Хоть и признаюсь, что мы оба (в особенности я) изрядно затупили. Могли бы действительно, все это красиво и лаконично одним сканэфом реализовать. Но идеальных людей не бывает, как и программеров, ведь так?
Rio... Я просто сначала строку разобрал по цветам, потом макросом упаковал эти цвета в 32 бита... Результат: строка запакована в 32 бита. Во втором примере я сразу упаковал все цвета, причем без макроса. Разве я не выполнил условие? Оба раза я запаковал строку в 32 бита, а значит условие выполнено.
Я вам не давал задачу на конкретную реализацию. На саму реализацию я то и хотел посмотреть, не важно будь то макрос, функция или полный алгоритм всех действий.
Ты слишком буквально понял задание. Если ты привязался к слову "функция", то по сути должно было быть так:
PHP код:
uint32_t StrToRGBA(char *str) {
uint32_t rgba = 0x00000000;
if(sscanf(str, "#%08x", &rgba) < 1) {
printf("Error! Not enough colors or color is not valid.\n");
return -1;
}
return rgba;
}
Ну что, выполняет она мое условие?
)
Ладно в общем, проехали
Собирается все с помощью Makefile. Заходите в папку с примером допустим, набираете make и он собирается.
По другому вы не соберете, модули и команды собираются особым способом, поэтому сами написав команды gcc вы не соберете так как нужно.
В SDK все настроено, вам нужно просто папочку с ним кинуть в папку с KOS.
Сват а в Дримшелл АПИ есть поддержка MIDI?
Я как то не озадачивался таким
))
А вообще попробуй через SDL_mixer, эта билиотека есть в DS и ее можно использовать везде (cmd/module/app).
PHP код:
typedef enum {
MUS_NONE,
MUS_CMD,
MUS_WAV,
MUS_MOD,
MUS_MID,
MUS_OGG,
MUS_MP3
} Mix_MusicType;
MP3 она не поддерживает скажу сразу
Сват, 5 утра ,я в шоке))
Сват, а там есть поддержка GDI? Ну чтобы рисовать можно было линии там всякие прямые прямо по контексту устройства?
ЗЫ. А вообще документация - жжот)) Ни тебя ни описания ничего)) Ищи как хочешь)) Тупо h-файл в html сохранен)) Разделили бы хоть по разделам, где графика где звук где шо))
Страниц: 1 2 3 4 5 6 7 8 9