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

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 25

Тема: Конвертнуть jpeg в формат zx screen.

  1. #11
    Member Аватар для Kurles
    Регистрация
    17.01.2005
    Адрес
    Cherepovets
    Сообщений
    121
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от rasmer Посмотреть сообщение
    если загружена непакованная картинка, то:
    ld hl,адрес картинки в памяти
    ld de,#4000
    ld bc,#1b00
    ldir

    вуаля...
    а если пакованая с декомпрессором, то ещё проще =)
    Код:
    call адрес картинки с декомпессором ; =)
    правда перед этим желательно атрибуты экрана в 0 выставить, что бы не было заметно, как картинка распаковывается -

    Код:
    ld hl,#5800
    ld d,h
    ld e,l
    inc de
    ld (hl),l
    ld bc,#2ff
    ldir
    но это и для простого ldir справедливо.

    Добавлено через 7 минут
    а можно ещё проще:

    Код:
    10 CLEAR 24999: BORDER 0: PAPER 0: CLS
    20 RANDOMIZE USR 15619: REM: LOAD "screen" CODE 32768: REM адрес компрессированой картинки с декомпрессором
    30 RANDOMIZE USR 32768
    40 PAUSE 0
    В итоге на экране - картинка =)
    Последний раз редактировалось Kurles; 05.04.2009 в 00:22. Причина: Добавлено сообщение

  2. #12
    Member Аватар для anarchyman
    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    72
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С выводом картинки на экран разобрался.
    Громадное спасибо rasmer'у (с меня простава при встрече).

    Сейчас остро нуждаюсь в примере кода со скролом :-)
    Где бы про это прочитать?

  3. #13
    Member Аватар для Kurles
    Регистрация
    17.01.2005
    Адрес
    Cherepovets
    Сообщений
    121
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от anarchyman Посмотреть сообщение
    С выводом картинки на экран разобрался.
    Громадное спасибо rasmer'у (с меня простава при встрече).

    Сейчас остро нуждаюсь в примере кода со скролом :-)
    Где бы про это прочитать?
    Тут можно почитать =)

  4. #14
    Member Аватар для anarchyman
    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    72
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Kurles Посмотреть сообщение
    Тут можно почитать =)
    О, круто :-)
    Ща в лом пьяный, завтра буду читать и разбираться :-)

  5. #15
    Member Аватар для anarchyman
    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    72
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почитал :-)
    Возникло несколько вопросов:

    1. Почему используется ORG 40000
    2. При компиляции выползает вот такая ошибка:
    C:\Documents and Settings\Administrator\Desktop\spectrum\_sj\sj\ana rchy2>..\sjasm
    plus.exe -mbi. test.a80
    SjASMPlus Z80/R800 Cross-Assembler v1.06 Stable (build 2006-08-02)
    Pass 1 complete (0 errors)
    test.a80 line 29: Label not found: FFH
    test.a80 line 64: Label not found: FFH
    Pass 2 complete
    Errors: 2, compiled: 193 lines, work time: 0.016 seconds
    Хотя в коде он вроде как присутствует:

    DEFB FFH

    Спасибо за ответы!

  6. #16
    Member Аватар для Kurles
    Регистрация
    17.01.2005
    Адрес
    Cherepovets
    Сообщений
    121
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от anarchyman Посмотреть сообщение
    Почитал :-)
    Возникло несколько вопросов:

    1. Почему используется ORG 40000
    2. При компиляции выползает вот такая ошибка:


    Хотя в коде он вроде как присутствует:

    DEFB FFH

    Спасибо за ответы!
    1. Можешь заменить ORG на любой другой адрес.
    2. замени "DEFB FFH" на "DEFB #FF". C "CP A,FFH" аналогично - "CP A,#FF" или короче - "CP #FF", ибо команда CP всегда с аккумулятором (регистром A) работает.

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

  8. #17
    Member Аватар для anarchyman
    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    72
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо за ответ!
    Сейчас буду пробовать.

    А пока возник еще один вопрос. Предположим есть процедура:

    loop
    halt
    ld ix,a1
    call play
    ld ix,a2
    call play
    jp loop
    ret
    Где можно почитать про таймер или подсчет циклов.
    Чего хочется: что бы jump на процедуру loop был бы не бесконечным, а например выполнялся несколько раз.

    на pc assembler'е можно было бы сделать примерно так:

    loop:
    inc %eax ; увеличиваем %eax на 1.
    ...
    основная процедура
    ...
    cmp 111,%eax ; сравниваем значение регистра %eax, с интересующим числом.
    jne loop ; если не равно прыгаем на loop.
    je newloop ; если равно прыгаем на новую процедуру.

    Спасибо за ответы!

    Добавлено через 16 минут
    Скроллер теперь компилируется без проблем, но не работает :-)
    Что то наверное я не так сделал. Код такой:

    ORG #6000
    STARTF ei
    Далее копипаст оригинального кода:
    LD A,(COUNT)
    CP 0
    JR Z,SETCHAR
    DEC A
    LD (COUNT),A

    START LD HL,401FH
    LD DE,BUF
    LD B,08
    MET LD A,(DE)
    SLA A
    PUSH HL
    DUP 32
    RL (HL)
    DEC L
    EDUP
    LD (DE),A
    INC DE
    POP HL
    INC H
    DJNZ MET
    RET
    SETCHAR LD A,7
    LD (COUNT),A
    VAR LD HL,MESS
    LD A,(HL)
    CP A,FFH
    CALL Z,SETST
    PUSH HL
    LD L,A
    LD H,0
    ADD HL,HL
    ADD HL,HL
    ADD HL,HL
    LD DE,(23606)
    ADD HL,DE
    LD DE,BUF
    LD B,08
    MET1 LD A,(HL)
    LD (DE),A
    INC HL
    INC DE
    DJNZ MET1
    POP HL
    INC HL
    LD (VAR+1),HL
    JP START
    SETST LD HL,MESS
    LD (VAR+1),HL
    RET
    Тут я добавил его вызов:

    m_loop call 6000
    halt
    jp m_loop
    Далее продолжение оригинального кода:

    COUNT DEFB 0
    BUF DEFB 0,0,0,0,0,0,0,0
    MESS DEFB " I made it! I made it! I made this stupid "
    DEFB "scroll!!! Well, now i haven't any idea "
    DEFB "to write something here. What about "
    DEFB "greets? Erm.. There is no greetinx ( "
    DEFB "Now it's really end of my message. Scroll "
    DEFB "coded by mig'95 on 01.11.2006 at 21:20 "
    DEFB "... Read again: "

    DEFB #FF
    В чем может быть дело?
    Последний раз редактировалось anarchyman; 05.04.2009 в 18:25. Причина: Добавлено сообщение

  9. #18
    Member Аватар для Kurles
    Регистрация
    17.01.2005
    Адрес
    Cherepovets
    Сообщений
    121
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от anarchyman Посмотреть сообщение
    В чем может быть дело?
    Ну во-первых, sjasm хоть и понимает запись шеснадцатиричных чисел в формате "FFFFH", но лучше их привести к виду 0xfff или #ffff. Во-вторых адресс в памяти 6000 - это адрес ПЗУ, собственно по этому адресу пользователь не может хранить собственные программы, лучше использовать для этого память выше 0x8000. В-третьих в данном конкретном случае лучше воспользоваться одним ORG'ом в начале, а все остальное вызывать через метки, а не абсолютные адреса. Считать количество циклов - проще пареной репы:
    Код:
     ld b,#ff ; сколько раз надо повторить участок кода
    loop
     push bc ; запоминаем за стеке регистр B
     call scroll
     pop bc ; вытаскиваем со стека регистр B
     djnz loop ;уменьшаем B на еденицу, и если B<>0, то переходим на loop
     ret ; выход
    в аттаче работающий исходник скролла для sjasmplus 1.07RC7
    Вложения Вложения
    • Тип файла: a80 scroll.a80 (1.2 Кб, Просмотров: 107)

  10. #19
    Member Аватар для anarchyman
    Регистрация
    04.08.2005
    Адрес
    Россия, Московская область.
    Сообщений
    72
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    9
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Огромное спасибо!!!
    Сейчас буду пробовать и разбираться!

    Добавлено через 1 час 58 минут
    Очень странно :-(
    Почему то ругается на вышенаписанный код.

    Суть. Что было:

    loop
    halt
    ld ix,a1
    call play
    ld ix,a2
    call play
    jp loop
    ret
    Что стало:

    loop
    halt
    ld ix,a1
    call play
    ld ix,a2
    call play
    ld bc,#10
    push bc
    call loop
    pop bc
    djnz newloop
    ret
    Но компилятор ругается:
    C:\Documents and Settings\Administrator\Desktop\spectrum\_sj\sj\ana rchy2>..\sjasm
    plus.exe -mbi. testf.a80
    SjASMPlus Z80/R800 Cross-Assembler v1.06 Stable (build 2006-08-02)
    Pass 1 complete (0 errors)
    testf.a80 line 35: Unrecognized instruction: bc,#10
    testf.a80 line 36: Unrecognized instruction: bc
    testf.a80 line 37: Unrecognized instruction: loop
    testf.a80 line 38: Unrecognized instruction: bc
    testf.a80 line 39: Unrecognized instruction: newloop
    Pass 2 complete
    чем ему там bc не понравился? :-(
    Последний раз редактировалось anarchyman; 05.04.2009 в 22:05. Причина: Добавлено сообщение

  11. #20
    Member Аватар для Kurles
    Регистрация
    17.01.2005
    Адрес
    Cherepovets
    Сообщений
    121
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от anarchyman Посмотреть сообщение
    чем ему там bc не понравился? :-(
    не знаю, попробуй в строках, где нет меток, перед мнемониками пробелов наставить, ибо оригинальная версия sjasm'а не поддерживала компиляцию ассемблерных команд в начале строки, может твоя ситуация - это отголоски того времени. Ещё ошибка - где у тебя задается количество циклов в регистровой паре bc - надо, что бы кол-во циклов задавалось в регистре B. ld b,#10. Ещё: не нашёл у тебе метки newloop, которая в комманде djnz newloop используется, определи куда нибудь.

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

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

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

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

Похожие темы

  1. Title Screen
    от goodboy в разделе Графика
    Ответов: 55
    Последнее: 19.01.2009, 09:01
  2. Screen timings
    от Higgins в разделе Эмуляторы
    Ответов: 79
    Последнее: 26.06.2008, 01:49
  3. SCReen Viewer 1.3b
    от SoftLight в разделе Утилиты
    Ответов: 0
    Последнее: 12.03.2005, 13:28

Ваши права

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