Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5
  • 1
  • 2
  • 3
  • 4
  • 5
DreamShell 4.0 Beta 4
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #21
RE: DreamShell 4.0 Beta 4
И в каком направлении хочешь работать? Графика, система или драйвера?

[Изображение: barbers.png]
12.01.2011 20:11
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #22
RE: DreamShell 4.0 Beta 4
А графика - это GUI в смысле?
Хотя все равно меня больше интересует система.
А что именно подразумевается под "системой": только само ядро или также модули и пользовательские команды?
13.01.2011 05:03
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #23
RE: DreamShell 4.0 Beta 4
Ну да. Вообще я бы разделил на 4 основных направления разработки DreamShell вот так:

1) GUI и видео рендеринг
2) Системные функции ядра, драйвера и файловые системы, сеть и в общем все остальное что не вошло в остальные пункты.
3) Консольные команды и модули
4) Разработка приложений

Часто бывает так, что какая нибудь функция в приложении это просто обертка для команды или модуля.
Допустим, ставшая так сказать популярной фишкой SDISO, является командой для консоли, просто назначена на кнопку в приложении файлового менеджера.

Я был бы очень рад, если бы кто то помогал хотя бы с командами/модулями и приложениями. В ядро лезть сразу тяжеловато, у меня там комментов нет вообще Smile для командной разработки его, нужно все привести сначала в порядок.
А вот начать с SDK самое оно (с помощью него можно сделать почти что угодно), можешь хоть сейчас скачать и попробовать написать модуль или команду (это проще всего сделать и проверить). Приложения же немного другая тема, там желательно знание lua, но, можно всю логигу по сути написать и в модуль, который приложение будет загружать через свой xml, а в lua сделать только вызов нужной функции, хотя даже и этого можно не делать Smile В общем я бы помог если что.
Вообще я сделаю конкретно поддержку приложений без lua, а то проблемы там с памятью есть, пока не знаю как решить, но для тех кто хочет попробовать что то написать, вполне хватит возможностей. Это я так, для себя и других желающих писать логику на Си. Сам я уже не буду наверное на lua приложения писать, то что я писал до этого, является просто примером для тех, кто хочет писать приложения без компиляции и прочих заморочек, а просто открыть текстовый редактор и что то сотворить.

[Изображение: barbers.png]
13.01.2011 09:30
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #24
RE: DreamShell 4.0 Beta 4
(12.01.2011 20:11)SWAT писал(а):  И в каком направлении хочешь работать? Графика, система или драйвера?

Эм, я бы хотел работать в направление разработки драйверов, самого кода ядра в-общем.
Сват, тут такое дело, я пишу что хочу помогать, но...
На самом деле я Си знаю если не в совершенстве то очень хорошо (ну как я считаю), по крайней мере ООП так точно...
Проблема в том что я совершенно не представляю как програмить что-то под Дримкаст.
У меня есть такая интересная особенность я все время вдаюсь в фундаментальную науку, т.е. прикладные объяснения меня никогда не устраивают, всегда хочу все знать по максимуму, т.е. докопаться до самой основы...
И да, кстати, я ж пытался разобраться во всех тех утилитах что ты ме говорил... Качал себе gcc компайлер (это было примерно пол-года назад), пытался настроить его, но все тщетно... Я там ничего не понял почти... ему нужны какие-то пакеты я так в этом и не разобрался.
Просто смотри, как я понимаю сам процесс компиляции:
1. Пишется код в каком-нибудь текстовом редакторе или интегрированной студии разработки (IDE)
2. Запускается из консоли (командного интерпретатора) файл ccompile.exe (к примеру), ему в качестве параметра передаётся имя фала с кодом (example.c) ну и задаются кастомные параметры
3. Получившийся объектный код загоняем в линкер, clinker.exe -example.obj и на выходе получаем example.com (/exe, /bin, /elf).

И вот скачал я этот gcc и так и не понял ни где там находится ни ccompile, ни сlinker...
И буду весьма рад если ты мне объяснишь где же их все-таки искать.
ЗЫ. Очень хочу помогать тебе с разработкой Dreamshell. Для меня это будут бесценные знания и опыт. Так что это выгодно мне самому, в первую очередь.

Заранее спасибо за ответ.

ЗЫ. Сёдня с утреца пытался написать простенький командный интерпретатор... гы... не заработал, падла))
(Последний раз сообщение было отредактировано 14.01.2011 в 17:18, отредактировал пользователь Rio.)
14.01.2011 15:51
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #25
RE: DreamShell 4.0 Beta 4
(14.01.2011 15:51)Rio писал(а):  На самом деле я Си знаю если не в совершенстве то очень хорошо (ну как я считаю), по крайней мере ООП так точно...

Это предложение меня конечно убило Big Grin В Си нет ООП.

Ладно давай проверим. Напиши функцию которая пакует RGBA из строки типа #AABBCC в одну переменную uint32.

Я как нибудь напишу на сайте инструкцию по установке и настройке окружения.

[Изображение: barbers.png]
14.01.2011 21:06
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #26
RE: DreamShell 4.0 Beta 4
Но в Си++ есть...
Строка в буквальном смысле строка?
Или уже готовая hex-константа.
14.01.2011 21:20
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #27
RE: DreamShell 4.0 Beta 4
Через недельку, как только сдам сессию Smile надо будет что-то для начала простенькое наваять.

И один вопрос: какой эмуль ты используешь чтобы проверять проги.

И можно я свой вариант упаковки цвета покажу ?Smile
15.01.2011 00:05
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #28
RE: DreamShell 4.0 Beta 4
Ну вот, отбирают работу)) А я сегодня весь вечер над алгоритмом корпел))
15.01.2011 02:10
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #29
RE: DreamShell 4.0 Beta 4
sc_maxim
Я использую nullDC для проверок, когда можно обойтись без дрима, жаль там SD не эмулится Smile)
Показывай свой вариант.

Rio
Да, строка прям строка Smile
Не волнуйся работы всем хватит Smile

[Изображение: barbers.png]
15.01.2011 07:09
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #30
RE: DreamShell 4.0 Beta 4
Может и не самый оптимальный вариант но это первое что в голову пришло Smile
PHP код:
#include <stdio.h>
#include <stdlib.h>

typedef unsigned __int32    uint32;

////////////////////////////////////////////////////////////////////////////////
// Convert char representation of number to integer
// If char is not a number then return 0x10.
inline uint32 CharToIntchar inChar 
{
    
uint32 Res;
    if( 
inChar >= 0x30 && inChar <= 0x39 )
    {
        
Res inChar 0x30;
    }
    else
    {
        switch( 
inChar )
        {
            case 
'a' : case 'A':
                  
Res 0x0A;
                  break;  
            case 
'b' : case 'B':
                  
Res 0x0B;
                  break;
            case 
'c' : case 'C':
                  
Res 0x0C;
                  break;
            case 
'd' : case 'D':
                  
Res 0x0D;
                  break;
            case 
'e': case 'E':
                  
Res 0x0E;
                  break;
            case 
'f': case 'F':
                  
Res 0x0F;
                  break;
            default:
                  
Res 0x10;
        } 
    }
    return 
Res;    
}

////////////////////////////////////////////////////////////////////////////////
#define CONV_ERR    0x01
#define CONV_OK     0x02

uint32  StrToRGBA(  char    *inStr
                    
uint32  *outColor )
{
    
uint32 shift;
    
uint32 t1t2;
    
uint32  Res CONV_OK;
    
char    *inStr+1;
    if( *
inStr == '#' && strleninStr ) > )
    {
        *
outColor 0;
        
shift 24;
        do
        {
            
t1 CharToInt(*p++);
            
t2 CharToInt(*p);
            if( 
t1 == 0x10 || t2 == 0x10 )
            {
                  
Res CONV_ERR;
                  break;
            }
            else
            {
                *
outColor |= (t1*0x10 t2) << shift;
                
shift -= 8;
            }
        }
        while( ++
inStr+);               
    }
    else
    {
        
Res CONV_ERR;
    }
    return  
Res;
}
////////////////////////////////////////////////////////////////////////////////


int mainint argcchar *argv[] )
{
  
uint32 color;
  
char str[10];
  
printf"Enter color: " );
  
scanf"%s", &str );
  if( 
StrToRGBAstr, &color ) == CONV_ERR )
  {
        
printf"Conversion error!\n" );
  }
  else
  {  
        
printf"Converted num: 0x%.8X\n"color ); 
  }
  
system("PAUSE");    
  return 
0;

15.01.2011 17:50
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #31
RE: DreamShell 4.0 Beta 4
Упс - Conversion error! Smile

[Изображение: barbers.png]
15.01.2011 18:38
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #32
RE: DreamShell 4.0 Beta 4
Что не работает?Sad Я просто делал на строку вида #AABBCCDD а не #AABBCC. Так как строка #AABBCC это RGB, а не RGBA.
Вот код для #AABBCC.
PHP код:
#include <stdio.h>
#include <stdlib.h>

typedef unsigned __int32    uint32;

////////////////////////////////////////////////////////////////////////////////
// Convert char representation of number to integer
// If char is not a number then return 0x10.
inline uint32 CharToIntchar inChar 
{
    
uint32 Res;
    if( 
inChar >= 0x30 && inChar <= 0x39 )
    {
        
Res inChar 0x30;
    }
    else
    {
        switch( 
inChar )
        {
            case 
'a' : case 'A':
                  
Res 0x0A;
                  break;  
            case 
'b' : case 'B':
                  
Res 0x0B;
                  break;
            case 
'c' : case 'C':
                  
Res 0x0C;
                  break;
            case 
'd' : case 'D':
                  
Res 0x0D;
                  break;
            case 
'e': case 'E':
                  
Res 0x0E;
                  break;
            case 
'f': case 'F':
                  
Res 0x0F;
                  break;
            default:
                  
Res 0x10;
        } 
    }
    return 
Res;    
}

////////////////////////////////////////////////////////////////////////////////
#define CONV_ERR    0x01
#define CONV_OK     0x02

uint32  StrToRGBA(  char    *inStr
                    
uint32  *outColor )
{
    
uint32 shift;
    
uint32 t1t2;
    
uint32  Res CONV_OK;
    
char    *inStr+1;
    if( *
inStr == '#' && strleninStr ) > )
    {
        *
outColor 0;
        
shift 16;
        do
        {
            
t1 CharToInt(*p++);
            
t2 CharToInt(*p);
            if( 
t1 == 0x10 || t2 == 0x10 )
            {
                  
Res CONV_ERR;
                  break;
            }
            else
            {
                *
outColor |= (t1*0x10 t2) << shift;
                
shift -= 8;
            }
        }
        while( ++
inStr+);               
    }
    else
    {
        
Res CONV_ERR;
    }
    return  
Res;
}
////////////////////////////////////////////////////////////////////////////////


int mainint argcchar *argv[] )
{
  
uint32 color;
  
char str[10];
  
printf"Enter color: " );
  
scanf"%s", &str );
  if( 
StrToRGBAstr, &color ) == CONV_ERR )
  {
        
printf"Conversion error!\n" );
  }
  else
  {  
        
printf"Converted num: 0x%.6X\n"color ); 
  }
  
system("PAUSE");    
  return 
0;

15.01.2011 18:56
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #33
RE: DreamShell 4.0 Beta 4
Да я понял. Просто это так сказать проверка на гибкость Smile
При отсутствии альфа канала при вводе, можно было бы его автоматом подставить как 100% непрозрачность Wink

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 15.01.2011 в 22:00, отредактировал пользователь SWAT.)
15.01.2011 21:51
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #34
RE: DreamShell 4.0 Beta 4
Да, можно было универсальней сделать, все зависит от того где это применять придется. А так просто быстро накатал, лишь бы работало Smile

Хотелось бы увидеть как сделал Rio, но он что-то не хочет показывать свой вариант.
(Последний раз сообщение было отредактировано 15.01.2011 в 22:14, отредактировал пользователь sc_maxim.)
15.01.2011 22:03
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #35
RE: DreamShell 4.0 Beta 4
Хочет, но не может Wink
Он никогда до этого прежде не паковал байты в 32х разрядные слова и очень тужится вспомнить побитовые операции))
(Последний раз сообщение было отредактировано 15.01.2011 в 22:52, отредактировал пользователь Rio.)
15.01.2011 22:51
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #36
RE: DreamShell 4.0 Beta 4
Вот Rio, если бы ты в реальноти "Си знаю если не в совершенстве то очень хорошо" то тебя ночью разбуди, ты бы запаковал туда все за 2 минуты Smile
Я вот не рискну про свои знания так сказать, потому как учится есть чему всегда, знание синтаксиса это мелочи, его можно познать за неделю. А вот опыт, разные техники и трюки програмирования приходят со временем. Так же не мало важно знать фундаментальное устройство рабочего кода для железа и ассемблер.
Я вот как не возьмусь на Си что то пописать, так обязательно что то новое узнаю и думаю что врятли я вообще когда ни будь все познаю, потому как довольно редко пишу на Си Sad

Давай выкладывай как есть, главное чтобы работало.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 16.01.2011 в 10:44, отредактировал пользователь SWAT.)
16.01.2011 10:35
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #37
RE: DreamShell 4.0 Beta 4
PHP код:
#include "stdafx.h"
#include <string.h>
#define ERR_CODE 0x00B

int CharToInt(const char inputChar)
{
    
char Seed=0;
    if(
inputChar>=0x30&&inputChar<=0x39)
    { 
        return(
inputChar-0x30);
    }
    else
        if(
inputChar>=0x41&&inputChar<=0x46||inputChar>=0x61&&inputChar<=0x66)
        {
            switch(
inputChar)
            {
            case 
'A': case 'a':
                
Seed 0x0A;
                break;
            case 
'B': case 'b':
                
Seed 0x0B;
                break;
            case 
'C': case 'c':
                
Seed 0x0C;
                break;
            case 
'D': case 'd':
                
Seed 0x0D;
                break;
            case 
'E': case 'e':
                
Seed 0x0E;
                break;
            case 
'F': case 'f':
                
Seed 0x0F;
                break;
            }
            return 
Seed;
        }
        else
        {
            return 
0x01;
            
//    throw "Not a hex value string\n";
        
}

}

unsigned int packint(const char *str)
{
    
unsigned int st 0;
    if(
strlen(str)!=7&&strlen(str)!=9||*(str)!='#')
    {
        return 
strlen(str);
    }
    else
    {
               
int i 1;
        
int k 0;
        
int s 0;
        
int storage 0;
        switch(
strlen(str))
        {
        case 
7:
            
//string is an RGB string, not an RGBA
            //so make the Alpha channel = 0;
            
CharToInt(*(str+i));
            
k<<=28//Shift k for 28 digits
            
CharToInt(*(str+i+1)); //get the second byte from the string
            
s<<=24;   //Shift it for 28-4 digits;
            
k|=s;   //k = k or s;
            
storage|=k//save the first lower left byte
            
3;
            
CharToInt(*(str+i));
            
CharToInt(*(str+i+1));
            
k<<=20;
            
s<<=16;
            
k|= s// k = k or s;
            
storage|=k// store = store or k;
            
5;
            
k=CharToInt(*(str+i));
            
s=CharToInt(*(str+i+1));
            
k<<=12;
            
s<<=8;
            
k|=s;
            
storage|=k;
            
//FF-fill the last two tetrads
            
0xFF;
            
storage|=k;
            return 
storage;
            break;
        case 
9//nine symbols, ok
            
CharToInt(*(str+i));
            
k<<=28//Shift k for 28 digits
            
CharToInt(*(str+i+1)); //get the second byte from the string
            
s<<=24;   //Shift it for 28-4 digits;
            
|= s;   //k = k or s;
            
storage|= k//save the first lower left byte
            
3;
            
CharToInt(*(str+i));
            
CharToInt(*(str+i+1));
            
k<<=20;
            
s<<=16;
            
k|= s// k = k or s;
            
storage|=k// store = store or k;
            
5;
            
k=CharToInt(*(str+i));
            
s=CharToInt(*(str+i+1));
            
k<<=12;
            
s<<=8;
            
k|=s;
            
storage|=k;
            
i=7;
            
k=CharToInt(*(str+i));
            
s=CharToInt(*(str+i+1));
            
k<<=4;
            
k|=s;
            
storage|=k;
            return 
storage;
            break;

        }
    }
    

void main()
{
    
unsigned int s packint("#FFAABB");
    
printf("%X \n",s);
    
packint("#FFAACCDD");
    
printf("%X \n",s);
    
getchar();

(Последний раз сообщение было отредактировано 16.01.2011 в 17:50, отредактировал пользователь Rio.)
16.01.2011 17:30
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #38
RE: DreamShell 4.0 Beta 4
Сват, все тебя ждём))
16.01.2011 19:33
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #39
RE: DreamShell 4.0 Beta 4
Rio у тебя функция CharToInt() возвращает при ошибке 0x01, а если ты ей передаш '1', то она вернет также 0x01. так как ты поймеш, что это была не ошибка?
16.01.2011 19:44
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #40
RE: DreamShell 4.0 Beta 4
Да никак. Целью не было заставить ее обрабатывать ошибки. А просто работать.
16.01.2011 19:59
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
Улыбка DreamShell bootloader bios megavolt85 159 520159 Сегодня 14:54
Посл. сообщение: Adamdead
Звезда DreamShell v4.0.0 Release SWAT 202 109059 14.10.2024 14:09
Посл. сообщение: SWAT
  ISO_CSO in Dreamshell aldair 0 767 12.10.2024 02:57
Посл. сообщение: aldair
  GTA3 Dreamshell SD Card/Dreamcast aldair 3 2331 26.08.2024 06:29
Посл. сообщение: SWAT
Радуга DreamShell на GitHub SWAT 73 128176 23.08.2024 06:13
Посл. сообщение: SWAT
  Dreamshell freeze at logo boot up pkerga 17 5633 22.07.2024 06:10
Посл. сообщение: SWAT
  Custom DreamShell Themes pcwzrd13 11 28811 27.04.2024 13:42
Посл. сообщение: Ro Magnus Larsson
Баг ISO Loader 0.8.x Beta + preview of DreamShell v4.0 RC 5 SWAT 918 864753 01.02.2024 13:22
Посл. сообщение: SWAT
  DreamShell on Hacker news SWAT 0 2026 10.01.2024 06:52
Посл. сообщение: SWAT
  ISO Loader 0.7.x Beta megavolt85 1195 1744567 04.12.2023 19:10
Посл. сообщение: Ro Magnus Larsson

Переход:


Пользователи просматривают эту тему: 5 Гость(ей)