Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: хочется сделать на PC вьювер .scr файлов

  1. #1
    Member Аватар для Виктор
    Регистрация
    16.03.2008
    Адрес
    Киев
    Сообщений
    42
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question хочется сделать на PC вьювер .scr файлов

    уважаемые спекрумисты! хочется сделать мне свой собственный вьювер .scr файлов на PC. Хотелось бы почитать про структуру этого файла, как читать заголовки и расшифровывать данные.
    Я так монимаю, что scr - просто снимок видеопамяти?

    и еще по ходу один вопрос.
    структура экранной области памяти мне понятна - Первые 32 байта экранной области задают слева направо верхнюю строку, следующие 32 байта — 9-ю сверху, ну и тд.
    А вот область атрибутов - здесь непонятка. Цвет тона и цвет фона - 3-битные величины, как мне узнать, какой цвет каким битам соответствует,
    и второе - что такое режим повышенной яркости?

    Эти вопросы вам могут показаться наивными, но когда у моего друга (не у меня!!!) был спек - я был в 3-ем классе. А сейчас вот хочется что-то своими руками

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для molodcov_alex
    Регистрация
    13.03.2006
    Адрес
    Колпино
    Сообщений
    1,249
    Благодарностей: 330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Виктор Посмотреть сообщение
    Я так монимаю, что scr - просто снимок видеопамяти?
    Думаешь правильно, никаких заголовков и т.п. там нет.

    Цитата Сообщение от Виктор Посмотреть сообщение
    А вот область атрибутов - здесь непонятка. Цвет тона и цвет фона - 3-битные величины, как мне узнать, какой цвет каким битам соответствует,
    и второе - что такое режим повышенной яркости?
    Биты расположены так: МЯGRBGRB
    B - синий
    R - красный
    G - зеленый
    Я - яркость
    М - мерцание
    Первые три - тон, следующие три - фон.

    Повышенная яркость: если этот бит в 0, то получается темный цвет (темно-красный, темно-синий и т.д.), а если 1, то яркий (просто красный).

    А вообще наверное стоит начать без аттрибутов и сформировать правильную картинку, а потом уже доделать до полноценной с аттрибутами.
    Последний раз редактировалось molodcov_alex; 15.08.2008 в 13:02.
    ZX Spectrum forever!

  4. #3
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,041
    Благодарностей: 1426
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
        .SCR-файлы
        -----------
    
        .SCR-файлы - это дампы видеопамяти.
    
        Существут несколько форматов SCR.
         6144 - чёрно белое изображение
         6912 - стандартное цветное изображение (1 байт цвета на 8x8 точек)
         12288 - изображение с multicolor эффектом (1 байт цвета на 8 точек)
    
        В любом из этих форматов первые 6144 байт это признак цвета точки.
        Связь между координатами x и y и адресами в .SCR файле следующая:
            INT (x/8)+1792*INT (y/64)-2016*INT (y/8)+256*y
        Младшие три бита координаты x определяют какой бит в адресе соответствует
        данному пикселу.
    
        Для файлов длиной 6144 байт, если бит установлет то цвет точти белый,
        иначе чётрный.
    
        Для файлов длиной 6912 байт, следующие 768 байт отвечают за каждые 8x8
        точек:
        Адрес в блоке атрибутов, соответствующий точке x,y вычисляется по формуле:
            22528+INT (x/8)+32*INT (y/8)
        Младшие три бита в байте атрибутов определяют цвет "включенных" точек
        Биты 3-5 соответствуют цвету фона ("выключенных" точек).
        Бит 6 - бит яркости.
        Бит 7 - признак мигания.
        Если он включен, то через каждые 16/50 долей секунды переключаются цвета
        цвета "включенных" и "выключенных" точек, для данного знакоместа.
    
        Для файлов длиной 1288 байт, блок атрибутов состоит из 6144 байт отвечающх
        за каждые 8 точек.
        Порядок заполнения блока атрибутов аналогичен порядку заполенения первых
        6144 байт.
        Структура каждого байта аналогична структуре стандартных .SCR файлов.
    Если интересует, могу подкинуть сорцы своего вьювера для TotalCommander. Он много чего смотреть умеет.

  5. #4
    Guru Аватар для newart
    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,948
    Благодарностей: 1520
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Плагин для Irfanview.
    Формально просто конвертит scr в bmp, Flash не учитывыется. (код для PureBasic)


    PHP код:
    scr to bmp plugin 4 irfanview

    Global Dim color.l(15)
    Global 
    Dim cl.l(1)
    Global 
    hDIB.l
    Global hl.l
    Global Header.54
    Global *buf_from




    ProcedureDLL
    .l scr2dib(file_name$)

    color(0)  =   |   << 4   << 16 255 << 24
    color
    (1)  = 180 |   << 4   << 16 255 << 24
    color
    (2)  =   |   << 180 << 16 255 << 24
    color
    (3)  = 180 |   << 180 << 16 255 << 24
    color
    (4)  =   178 << 4   << 16 255 << 24
    color
    (5)  = 180 178 << 4   << 16 255 << 24
    color
    (6)  =   178 << 180 << 16 255 << 24
    color
    (7)  = 180 178 << 180 << 16 255 << 24

    color
    (8)  =   |   << 4   << 16 255 << 24
    color
    (9)  = 252 |   << 4   << 16 255 << 24
    color
    (10) =   |   << 252 << 16 255 << 24
    color
    (11) = 252 |   << 252 << 16 255 << 24
    color
    (12) =   254 << 4   << 16 255 << 24
    color
    (13) = 252 254 << 4   << 16 255 << 24
    color
    (14) =   254 << 252 << 16 255 << 24
    color
    (15) = 252 254 << 252 << 16 255 << 24

    *buf_from AllocateMemory(6912)

    ReadFile(0file_name$)
    ReadData(0, *buf_from6912)
    CloseFile(0)

    hDIB=GlobalAlloc_(#GHND,256*192*4+ Header) 
      
    If hDIB=0ProcedureReturn #False: EndIf 
      
      
    *buf_to_1 GlobalLock_(hDIB

      
    PokeS(*buf_to_1 0"BM")
    PokeL(*buf_to_1 2256*192*4+54)
    PokeW(*buf_to_1 60)
    PokeW(*buf_to_1 80)
    PokeL(*buf_to_1 1054)
    PokeL(*buf_to_1 1440)
    PokeL(*buf_to_1 18256)
    PokeL(*buf_to_1 22, -192)
    PokeW(*buf_to_1 261)
    PokeW(*buf_to_1 2832)




    For 
    line.0 To 191
      
    For byte.0 To 31
      
        c
    .PeekB(*buf_from 6144 + ((line >> 3) << 5) + byte)
        
    cl(0) = color((& %111) | ((& %01000000) >> 3))
        
    cl(1) = color(((& %111000) >> 3) | ((& %01000000) >> 3))
        
    flash.= (& %10000000) >> 7
        
        b
    .1
        
    For bit.7 To 0 Step -1
        
          
    If PeekB(*buf_from hl byte) & bn=0: Else: n=1: EndIf
           
          
    PokeL(*buf_to_1 Header + (line 1024) + (byte*bit)*4cl(n))
         
        
    << 1
        Next bit 
      Next byte
      


      l
    .hl & %11111111 
      h
    .hl >> 8
      
      h 
    1
      
    If & %111 <> 0: Goto end_hl: EndIf
      
      
    32
      
    If 255& %11111111: Goto end_hl: EndIf
      
    & %11111111
      
      h 
    8    

    end_hl


      
    hl | (<< 8)
      
    Next line  

    FreeMemory
    (*buf_from)

    GlobalUnlock_(hDIB)

    ProcedureReturn hDIB
    EndProcedure 

  6. #5
    Member Аватар для Виктор
    Регистрация
    16.03.2008
    Адрес
    Киев
    Сообщений
    42
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если интересует, могу подкинуть сорцы своего вьювера для TotalCommander. Он много чего смотреть умеет.
    а то как же, будет на что ровняться!

  7. #6
    Activist Аватар для pROF^4D
    Регистрация
    21.01.2005
    Адрес
    Пермь
    Сообщений
    498
    Благодарностей: 208
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Рабочий плагин к тотал командеру 2005 года, коим и пользуюсь до сих пор.
    Вложения Вложения
    • Тип файла: zip INSCR2.ZIP (7.3 Кб, Просмотров: 291)

  8. #7
    CraZZZy CodEr Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    1,576
    Благодарностей: 759
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Самописная мутота под qt4. смотрит только *.scr с атрибутми. есть другой вариант, с opengl.
    С цветами, правда, лажа... я их специально не подбирал
    Вложения Вложения
    Все любят гипножабу

  9. #8
    Member Аватар для Виктор
    Регистрация
    16.03.2008
    Адрес
    Киев
    Сообщений
    42
    Благодарностей: 0
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    урра!!!!! я получил ч/б изображение!!!!
    а как прикрепить файл - чет не понял???

    Добавлено через 36 минут
    Адрес в блоке атрибутов, соответствующий точке x,y вычисляется по формуле:
    22528+INT (x/8)+32*INT (y/8)

    как-то я эти формулы и не понимаю, вы мне проще скажите, данные записываются в той же последовательности, всмысле сначала для 1 строки, потом для 9, итд
    или так 1-2-3...
    Спасибо, кстати вам всем
    Последний раз редактировалось Виктор; 15.08.2008 в 18:32. Причина: Добавлено сообщение

  10. #9
    Veteran Аватар для molodcov_alex
    Регистрация
    13.03.2006
    Адрес
    Колпино
    Сообщений
    1,249
    Благодарностей: 330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Виктор Посмотреть сообщение
    урра!!!!! я получил ч/б изображение!!!!
    а как прикрепить файл - чет не понял???
    Переходишь в расширенный режим, там кнопка управление вложениями...

    Цитата Сообщение от Виктор Посмотреть сообщение
    как-то я эти формулы и не понимаю, вы мне проще скажите, данные записываются в той же последовательности, всмысле сначала для 1 строки, потом для 9, итд
    или так 1-2-3...
    Да, 1,9,17,25,33,41,49,57,2,10,18....
    ZX Spectrum forever!

  11. #10
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,041
    Благодарностей: 1426
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Виктор Посмотреть сообщение
    а то как же, будет на что ровняться!
    В аттаче, но ровняться не стоит Код ужасный. Писано 4 года назад, почти все на ассемблере (казалось что быстрее будет). Жуть, короче...
    Вложения Вложения
    • Тип файла: zip gfxv.zip (391.6 Кб, Просмотров: 247)

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. 128к хочется...
    от ALEXEY.GORDEEV в разделе Барахолка (архив)
    Ответов: 8
    Последнее: 10.03.2008, 07:40
  2. Хочется совета по кучке разных старых и интересных железок...
    от Micro-80 в разделе Зарубежные компьютеры
    Ответов: 2
    Последнее: 07.02.2007, 11:35
  3. Вьювер пати релизов
    от mic_vvg в разделе Софт
    Ответов: 4
    Последнее: 24.11.2006, 11:24
  4. Unreal: хочется странного...
    от elf/2 в разделе Эмуляторы
    Ответов: 62
    Последнее: 29.06.2005, 19:12
  5. Форматы файлов
    от Viktor2004 в разделе Эмуляторы
    Ответов: 2
    Последнее: 13.02.2005, 09:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •