DC-SWAT Forum
DreamShell 4.0 Beta 4 - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: DreamShell (/forum-3.html)
+--- Форум: General Discussion (/forum-27.html)
+--- Тема: DreamShell 4.0 Beta 4 (/thread-1370.html)

Страниц: 1 2 3 4 5 6 7 8 9


RE: DreamShell 4.0 Beta 4 - SWAT - 16.01.2011 20:21

Мсье знает толк в извращениях...

В принципе я узнал то что мне нужно из вашего кода, несмотря на главную ошибку, которую вы допустили оба Smile


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 argcchar **argv) {
    
    
int rgba;
    
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(rgba));
    return 
0;


Поняли о чем я?


RE: DreamShell 4.0 Beta 4 - sc_maxim - 16.01.2011 21:08

По моему задание, звучало как "запаковать строку вида #AABBCC", а не отдельные значения. А ты нам показываешь как паковать отдельные значения в одну переменную. Конечно вводя их как строку, но сохраняя в разные переменные...
или ты хотел показать своим примером, что-то другое, что я не понял?

Да, при моих знаниях... меня еще нельзя назвать программистом, не суди пожалуйста строго Smile


RE: DreamShell 4.0 Beta 4 - Rio - 16.01.2011 21:39

Цитата:Поняли о чем я?
Поняли, но постановка задания была совсем другая...

Цитата:По моему задание, звучало как "запаковать строку вида #AABBCC", а не отдельные значения.
Вот именно...

Сват, так что, мы приняты, или как?


RE: DreamShell 4.0 Beta 4 - sc_maxim - 16.01.2011 21:49

Приняты иль не приняты, мне кажется, что все равно пока что лучше написать какой то толковый модуль или прогу, а потом сунутся в ядро.. тем более если там нет коментов, то это будет бесполезно или очень болезненно Smile.
SDK есть и это уже многое дает нам для начала работы, было бы желание, а так можно что хочешь сотворить на его основе.
И параллельно вопрос: SWAT ты собирал компилятор для sh4 под MinGW, а то Cygwin как то медленно у меня пашет и выдает ошибки при компиляции?


RE: DreamShell 4.0 Beta 4 - SWAT - 16.01.2011 22:25

В смысле другая?? Я запаковал строку в 32 бита, разве я не выполнил условие?
Вообще то макрос PACK_RGBA как раз и пакует в одну переменную полученные цвета по отдельности, просто я сразу вывел значение принтом.

Но и у меня был лишний код, вообще можно было сделать вот так:

PHP код:
int main(int argcchar **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. Я конечно понимаю что каждый хотел показать что он может много чего написать Smile) но в реальности это совсем не продуктивно.

В любом случае начинайте с SDK, а дальше посмотрим.

Я все компиляторы собираю под cygwin.


RE: DreamShell 4.0 Beta 4 - sc_maxim - 16.01.2011 22:31

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

Если соберу компил под MinGW то расскажу как, если кому будет интересно Smile


RE: DreamShell 4.0 Beta 4 - Rio - 16.01.2011 23:48

Постановка задачи звучала так: написать функцию, которая бы преобразовывала бы строку символов в упакованное 32 разрядное слово. Ты же выкинул нам макрос, который пакует в переменную 4 цифры, именно цифры, а не символа. Может мы и изобрели велосипед, ну так что ж теперь, вешаться что ли? Иногда и велосипеды изобретать полезно, для понимания смысла так сказать, и сути производимых действий.
Тем более, я, как и sc_maxim, не тренировался уже в написании программ на си уже более как полугода, не говоря уже о том что я вообще как бы не программер (т.е. не работаю им по специальности), и считаю программирование лишь прикладной областью деятельности, а не какой-то там самоцелью или еще чего упаси боже смыслом жизни и т.п. Т.е. в рамках чисто применения - как решения инженерной задачи. А оптимизация там, варианты решения... Пусть этим соотв. люди занимаются.
И, что означает это фраза, начинайте с SDK?
Т.е. ты предлагаешь нам взяв SDK написать под Дримшелл какую-нибудь свою прикладную программу или модуль? Я так понимаю? Просто у меня щас немного трабла с недостатком идей, точнее есть одна, и очень хорошая, но боюсь ее весьма сложно будет реализовать. Тем более в рамках ресурсов приставки.

ЗЫ. Если уж ты ходел увидеть от нас макрос, следовало задание дать так:
написать макрос, пакующий в одну переменную длиной 4 байт 4 различных значения цветовой составляющей, но никак не строку. Тут ключевыми являются именно слова "макрос" и "строка". их как бы осторожно применять надо. А то получается требуется одно а надо совсем другое. А мы еще после и виноваты. Как такое назвать?
ЗЫ2. Хоть и признаюсь, что мы оба (в особенности я) изрядно затупили. Могли бы действительно, все это красиво и лаконично одним сканэфом реализовать. Но идеальных людей не бывает, как и программеров, ведь так?
PS3/ Чё т я не вижу нигде ссылку на SDK на сайте... может кто подскажет...


RE: DreamShell 4.0 Beta 4 - Rio - 17.01.2011 00:04

Dreamshell SDK рулит....

// Pixel packing macro
#define PACK_PIXEL(r, g, b) ( ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3) )


RE: DreamShell 4.0 Beta 4 - sc_maxim - 17.01.2011 00:04

Не стоит так нервничать.
Несмотря ни на что опыт получен позитивный Smile
// Pixel packing macro
#define PACK_PIXEL(r, g, b) ( ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3) )
это судя по всему макрос для запаковки 16-ти разрядного цвета, так как там биты не равно мерно распределены R5G6B5. Тут сканэфом не обойтись.


RE: DreamShell 4.0 Beta 4 - Rio - 17.01.2011 00:09

Про опыт согласен))
А хз. Что значит неравномерное распределены?


RE: DreamShell 4.0 Beta 4 - sc_maxim - 17.01.2011 00:13

я имел ввиду количество бит разное. на красный идет 5 бит, на зеленый 6 бит, так как глаз наиболее чувствителен к нему, ну и на синий тоже 5.


RE: DreamShell 4.0 Beta 4 - Rio - 17.01.2011 00:15

А, ну так это уже не RGB а как раз R5G6B5, ну да, короч я понял.
Так а все таки, где брать SDK и главное как его юзать.


RE: DreamShell 4.0 Beta 4 - sc_maxim - 17.01.2011 00:31

Ну для начала ставишь среду для программинга под Дрим, я качал отсюда.
Потом отсюда сам SDK.
чтоб его юзать нужно как обычно подключать заголовки и использовать функции которые там описаны. В SDK даже есть примеры рабочего модуля и проги. При компиляции нужно подключать библиотеки из SDK стандартным для gcc способом. Я пока ниче не писал на SDK потому это все что я знаю. Думаю SWAT, если ему действительно нужны помощники, напишет более детально.


RE: DreamShell 4.0 Beta 4 - Rio - 17.01.2011 00:39

Думаю да а что такое gcc?/Шось не грузится у меня Dreamshell на эмуле... не говоря уже про pс loader..


RE: DreamShell 4.0 Beta 4 - sc_maxim - 17.01.2011 01:08

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, но так тоже можно.


RE: DreamShell 4.0 Beta 4 - SWAT - 17.01.2011 10:46

(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;


Ну что, выполняет она мое условие? Smile)
Ладно в общем, проехали Smile


RE: DreamShell 4.0 Beta 4 - SWAT - 17.01.2011 10:51

Собирается все с помощью Makefile. Заходите в папку с примером допустим, набираете make и он собирается.
По другому вы не соберете, модули и команды собираются особым способом, поэтому сами написав команды gcc вы не соберете так как нужно.
В SDK все настроено, вам нужно просто папочку с ним кинуть в папку с KOS.


RE: DreamShell 4.0 Beta 4 - Rio - 18.01.2011 02:41

Сват а в Дримшелл АПИ есть поддержка MIDI?


RE: DreamShell 4.0 Beta 4 - SWAT - 18.01.2011 07:30

Я как то не озадачивался таким Smile))
А вообще попробуй через 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 она не поддерживает скажу сразу Smile


RE: DreamShell 4.0 Beta 4 - Rio - 18.01.2011 16:44

Сват, 5 утра ,я в шоке))
Сват, а там есть поддержка GDI? Ну чтобы рисовать можно было линии там всякие прямые прямо по контексту устройства?
ЗЫ. А вообще документация - жжот)) Ни тебя ни описания ничего)) Ищи как хочешь)) Тупо h-файл в html сохранен)) Разделили бы хоть по разделам, где графика где звук где шо))