Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мышка под ДоС и ее совместимость с SVGA... 
V
    Опции темы
yOhoOo
  Дата 23.11.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Здравствуйте кважаемые.

Для реализации графической оболочки к проге юзаю VESA. Хотел было добавить мышку, взял готовые куски своего старого кода (для проги работающей при помощи EGAVGA.bgi). Мышка там реализовывалась вот так: 


Код

      _AX=1;
       geninterrupt(0x33);
       _CX=0;
       _DX=638;
       _AX=7;
       geninterrupt(0x33);
       _CX=0;
       _DX=478;
       _AX=8;
       geninterrupt(0x33);

Ну и что то там дальше...

Так вот, открыл я для себя что так не пойдет для VESA ибо вылетает тут же из программы в виндоз да ошибку пишет.  C чем это связано? Как это лечить?  

ЗЫ Пробывал вместо VESA юзать готовые SVGA.bgi но результат тот же...
PM MAIL   Вверх
Sartorius
Дата 23.11.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



В DOSBox-e запускать не пробовал?
PM MAIL ICQ   Вверх
yOhoOo
Дата 23.11.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Цитата

В DOSBox-e запускать не пробовал? 


Поясни пожалуйста. Это что такое?
PM MAIL   Вверх
MAKCim
Дата 23.11.2007, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(yOhoOo @  23.11.2007,  22:39 Найти цитируемый пост)
Поясни пожалуйста. Это что такое? 

а если гугл начать использовать?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
yOhoOo
Дата 24.11.2007, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Цитата

В DOSBox-e запускать не пробовал? 


Прочитал про ДосбОкс. А можно еще как нибудь попытатся справится с моей проблемой? Средствами кода например). Не очень бы хотелось таскать за программой этот загрузчик...
PM MAIL   Вверх
bsa
Дата 24.11.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



yOhoOo, тогда забудь про VESA и SVGA
PM   Вверх
yOhoOo
Дата 25.11.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Ход конем...
PM MAIL   Вверх
archimed7592
Дата 26.11.2007, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



yOhoOo, ход конем - это пытаться в современность пользоваться прямым доступом к аппаратуре. Ни одно нормальная ОС делать этого не позволяет.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
yOhoOo
Дата 26.11.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Все, убедили, пошел качать ДОСбокс...
PM MAIL   Вверх
yOhoOo
  Дата 29.11.2007, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Гыыы А вот и нет. Я просто тупой, не понял очевидныйх вещей: 

Код

      _AX=0;
       geninterrupt(0x33);
      _AX=1;
       geninterrupt(0x33);
       _CX=0;
       _DX=638;
       _AX=7;
       geninterrupt(0x33);
       _CX=0;
       _DX=478;
       _AX=8;
       geninterrupt(0x33)


как я уже сказал вылетает.

А вот так:
Код

       _AX=0;
       geninterrupt(0x33);
       _CX=0;
       _DX=638;
       _AX=7;
       geninterrupt(0x33);
       _CX=0;
       _DX=478;
       _AX=8;


Вылеталть не будет. 

Связанно это с тем,  что в SVGA режиме:
Цитата

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

А вообще почитайте здесь: http://computers.plib.ru/programming/SVGA/menu.html


Так наглядно можно проверить что курсор действительно перемещается:
Код

do {
_AX=3;
geninterrupt(0x33);
x=_CX;
y=_DX;
button=_BL;

sprintf(c,"koordinata X=%d Y=%d кнопка=%d",x,y, button);

if (button==1) outtextxy(x,y,c);
}while(!kbhit());


А общая идея курсора выглядит так:
Код


_AX=3;
geninterrupt(0x33);
x=_CX;
y=_DX;

putimage(x,y, 'че-то там', XOR_PUT);// Картинка курсора как вы догадались наверное, 'Че то там' эта   
                                                               ваша переманная, которая этот рисунок хранит. XOR_PUT  
                                                               заменяет старую картинку на новую. (Посмотрите на пример в 
                                                               хэлпе по функции putimage() Там как раз таки XOR_PUT)

do {
_AX=3;
geninterrupt(0x33);
xTemp=_CX;
yTemp=_DX;
button=_BL;

if(xTemp!=x || yTemp!=y) { putimage(x,y, 'че-то там', XOR_PUT);  x=xTemp; y=yTemp; }

}while(!kbhit() || Button!=1);


PM MAIL   Вверх
sprata
Дата 12.9.2008, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.9.2008

Репутация: нет
Всего: нет



yOhoOo, код который ты кинул это конечно неплохая идея визуализации вручную указателя мыши в режме SVGA. Но она подойдет только для одноцветного заднего фона. Так как ф-ии getimage() и putimage() работают с прямоугольными областями экрана, то реализовать перемещение треугольного курсора по неоднородному фону не удасться, так как незайдействованная  в рисовании курсора часть захваченной прямоугольной области будет перемещаться вместе с курсором и тем самым закрывать задний фон. Едиснтвенный выход, используя твою идею, это сделать курсор не треугольным, а прямоугольным.

ЗЫ: я сейчас начал делать курсач, и тож хочу в режиме SVGA и с мышей Но с треугольным курсором. smile Поэтому этот способ мне не подходит. Если у меня получится сделать нормальную перерисовку курсора с помощью режима записи пикселов с инвертированием XOR_PUT, то обязательно отпишусь.

Это сообщение отредактировал(а) sprata - 12.9.2008, 06:12
PM MAIL   Вверх
yOhoOo
Дата 21.7.2009, 15:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Цитата

ЗЫ: я сейчас начал делать курсач, и тож хочу в режиме SVGA и с мышей Но с треугольным курсором. smile Поэтому этот способ мне не подходит. Если у меня получится сделать нормальную перерисовку курсора с помощью режима записи пикселов с инвертированием XOR_PUT, то обязательно отпишусь.


Усе норм, тока поменять надо немного. Без ксор пута все. Обычными getimage/ putimage.
Берешь, перед тем как рисовать курсор копируешь в переменную скажем FONT_BOX область, где твой курсор будет жить,  затем рисуешь курсор. Затем отслеживаешь изменения в регистрах по X, Y координатам. Если нет изменений то ждешь) Если есть рисуешь поверх курсора область снова. Затем копируешь область под новыми координатами в FONT_BOX. И опять курсор рисуешь сверху.
Повторять до полного удовлетворения.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.