Отображение BMP 320x200x8bit в DOS

Тема в разделе "WASM.BEGINNERS", создана пользователем 3dschuminator, 5 апр 2010.

  1. 3dschuminator

    3dschuminator New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2010
    Сообщения:
    4
    Прошу прощения если подобный вопрос уже задавался, я честно искал поиском, того что нужно не нашел. Возникла необходимость отображать указаный в командной строке BMP файл в ДОС с помощью простейшего вьювера. Графический режим - VGA 320x200x8. Причем после отображения битмапа он должен прекращать работу не очищая экран и не переходя в текстовый режим. Тоесть чтобы с его помощью можно было создавать некое подобие простейших меню перед запуском приложений с помощью bat файла и команды choice, например так:
    Код (Text):
    1. ...
    2. bmpview.exe sscreen.bmp
    3. @CHOICE /C:12345 /N
    4. IF ERRORLEVEL 5 GOTO RUNPROG
    5. ...
    у меня есть такой вьювер файлов pcx под названием pcxview, но мне нужен именно bmp, так-как я написал прогу для быстрой генерации таких меню из под винды, и очень не хотелось бы писать экспортер в формат pcx, да и сам вьювер работает недостаточно быстро.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Вопрос три раза непонятен:
    1) Формат PCX сложнее BMP. BMP - это фактически содержимое видео-памяти, ну правда для определенного видео-режима. Похоже вьювер и генератор не сам писал. Найди сырцы для BMP - какая проблема.
    2) Зачем писать экпортер - есть готовые конверторы. Есть и исходники.
    3) Писать прогу для вьювера и не писать для меню - это опять подтверждает, что ты программировать не умеешь. Тогда пардон в другую тему : "студентам ..."
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Твой вопрос напомнил анекдот, как вскипятить воду. Первая задача : чайник пустой. Решение очевидно. Вторая задача : чайник с водой. Ты решаешь как математик : выльем воду и задача сведена к предыдущей :) Пардон за оффтоп, но не уметь нарисовать то, что для этого предназначено :)
     
  4. 3dschuminator

    3dschuminator New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2010
    Сообщения:
    4
    Дело в том что задача в основном показать одну, максимум две картинки перед запуском приложения, возможно с несколькими вариантами запуска и параметрами, для этого и choice. Просто порт досбокса 0.71 на консольке работает довольно криво, и в режиме динамической рекомпиляции часто выдает еррор при попытке запустить приложение из программы-меню. Пробовал два готовых продукта - настраеваемых меню для дос, у всех косяки, а вариант запуска через bat файл выглядит заманчивым по причине своей простоты. Я же не пытаюсь создать многоуровневое меню с красивыми эффектами на bat файлах :), мне нужно всего лишь показать одну-две картинки. И никому нет дела кто именно отображает это, bat файл на пару строчек или людская прога.

    Генератор писал сам, но писал на шарпе под винду и 2-й фреймворк, а вот то что он сгенерил должно отображаться в ДОСе. По сути это картинка со списком кнопок управления и кнопок реального девайса, на которые они назначены, возможно еще выбор нескольких вариантов запуска, не более. Вьювер pcx не мой, я и не говорил что он мой. Сам же я писал вьювер bmp на сях под дос, просто побайтно, не обращая внимания на заголовок, читал и выводил картинку, размер то один у них будет, но скорость его работы не достаточна в досбоксе. Проблема в том что досбокс на данном девайсе примерно соответствует 286-му процессору, и это в режиме динамической рекомпиляции. В нормальном режиме все еще хуже.
     
  5. 3dschuminator

    3dschuminator New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2010
    Сообщения:
    4
    Хотябы дайте совет как сделать быстрый вьювер, возможно есть свои хитрости. Получится ли намного быстрее если отрисовывать точки асмом как?:
    Код (Text):
    1. INТ 10h
    2. когда в CX координата по горизонтали, DХ по вертикали, а цвет в AL
    вместо использования граф. библиотек в с++, или разница в скорости будет не такой уж и поразительной?
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    И что вы хотите. Попиксельный вывод и на реальной железке медленный. Это точно не решение. У ваc вьювер PCX быстро работает? Разберитесь как он выводит - мы не экстрасенсы. В реальном ДОС все понятно, а в DosBOX на какой-то железке... На 286 графика летала, т.ч. не надо клеветать на старичков. Там диски медленные были, память и ...
     
  7. 3dschuminator

    3dschuminator New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2010
    Сообщения:
    4
    Нарыл исходник еще одного вьювера, тоже pcx, там вывод идет не через прерывание а напрямую заполняется память начиная с A000h:0000h и до конца, походу все 64 кб, процедура кажется большой, но видимо работает быстрее намного. Видимо это и дает такой прирост по сравнению с попиксельным выводом через int, вы правы. Ладно, напишу вьювер с учетом этого, спасибо.

    Да я и не клеветал, мой первый пц был на базе 8086, остались только приятные воспоминания ;)
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    поддерживаете старые оси... похвально)))