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

User Tag List

Показано с 1 по 10 из 589

Тема: Sea Dragon

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,913
    Спасибо Благодарностей отдано 
    357
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    247 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ace210 Посмотреть сообщение
    Just In Time? т.е. "реального времени"

    ---------- Post added at 17:50 ---------- Previous post was at 17:48 ----------

    От ldd Lethargeek в свое время отказался, т.к. получается дольше с ней (как ни странно) и сложнее.
    я понимаю что отказался
    а какая альтернатива?

    рассмотрим кусочек

    ld e,l (4) если первый сивол в цепочке
    srl (hl) (15) скроллим элемент
    ldd (16) дублируем линию

    35 тактов на эти 2 байта

    rl (hl)
    ldd

    31 такт на следующие

    есть вариант короче?

    ---------- Post added at 20:38 ---------- Previous post was at 20:30 ----------

    Код:
    итак изначально имеем рабочую область 160 на 256
    т.е 20 тайловых строк
    
    итак производим генерацию кода для обработки тайловой строки
    
    для начала определяемся как все будет
    
    итак
    буфер под код 256 байтов
    при максимальной загрузке
    вида
        ld e,l
        rl (hl)
        ldd
    5*32 - 160 байтов
    
    буфер должен выглядеть как то так
    
        rl (hl)
        ldd
        rl (hl)
        ldd
        dec l
        dec l
        dec l
        dec l
        ld e,l
        rl (hl)
        ldd
        ret
    
    l_init
    ;h-старший байт адреса
    звполняем таблицу
        ld     l,-1
    ;инициируем таблицу переходов
        ld    b,32
        ld    (hl),-27
        dec    l
        djnz    $-3
    ;создаем ссылку на текущий байт в таблице переходов
        ld    (hl),-1
        dec    l
    ;закручиваем скроллер в кольцо
        ld    (hl),1
        dec    l
        ld    (hl),h
        dec    l
        ld    (hl),#c3
        dec    l
        ld    (hl),#c9
        ld    a,l
        ld    l,0
    ;инициируем трамплин
        ld    (hl),a
        ret
    l_proc
    ;обработчик
        ld    l,0
        ld    l,(hl)
        ld    (jmp_item),hl
        ex    de,hl
        ld    a,l
        call    $+3
        call    $+3
        ld      d,h
        inc    d
        call    $
    jmp_item    equ    $-2
        ld    l,a
        inc  h
        inc h
        ret
    l_gen
    ;генератор
    d-старший байт
    a-статусный байт
    ;статусы
    0-пустота (камень или вода)
    1-начало линии
    2-середина линии
    3-конец линии
    
        add    a,a
        add    a,jmp_gen
        ld    l,a
        adc    a,jmp_gen/256
        sub    l    
        ld    h,a
        ld    a,(hl)
        inc    hl
        ld    h,(hl)
        ld    l,a
        jp    (hl)
    jmp_gen    dw    jit_0,jit_1,jit_2,jit_3
        
    jit_0
        ex    de,hl
        ld    l,-32
        ld    a,(hl)
        dec    a
        or    #e0
        ld    c,a
        ld    (hl),a
        ld    b,h
        ld    l,0
        ld    l,(hl)
        ld    a,l
        dec    a
        call    z,corr_jitb
        dec    l
        ld    (hl),#2d     dec    l
    устанавливаем точку возврата из рисовальщика
    наверное можно сделать быстрее но лень думать
         
        ld  d,h
        ld a,(bc)
        ld e,a
        ld a,#c9
        ld (hl),a
    
        ld    a,l
        ld    (bc),a    
        ld    l,0
        ld    (hl),a
        ret    
    corr_jitb
        ld    a,l
        ld    l,-33
        ld    (hl),a
        dec    l
        ld    (hl),h
        dec    l    
        ld    (hl),#c3
        ret
    jit_1
        ex    de,hl
        ld    l,-32
        ld    a,(hl)
        dec    a
        or    #e0
        ld    c,a
        ld    (hl),a
        ld    b,h
        ld    l,0
        ld    l,(hl)
        dec    l
        call    z,corr_jitb
        ld    (hl),#5d     ld e,l
        ld    de,#cb16  rl (hl)
        call    place_word
        ld    de,#eda8 ldd
        call    place_word
         
        ld  d,h
        ld a,(bc)
        ld e,a
        ld a,#c9
        ld (hl),a
    
        ld    a,l
        ld    (bc),a    
        ld    l,0
        ld    (hl),a
        ret    
    place_word
        ld    a,l
        cp    3
        call    c,corr_jitb
        dec    l
        ld    (hl),e
        dec    l
        ld    (hl),d
        ret
    както так
    это предварительные прикидки - позже наверное напишу остальное да и багу выловить надо :)
    Последний раз редактировалось jerri; 19.01.2010 в 13:22.
    С уважением,
    Jerri / Red Triangle.

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

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

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

Похожие темы

  1. Dizzy-AGE: Dragon Valley Dizzy
    от Rindex в разделе Dizzy-AGE
    Ответов: 82
    Последнее: 02.09.2011, 17:54
  2. New CEZ Silver game: Mariano the dragon
    от riskej в разделе Игры
    Ответов: 8
    Последнее: 16.05.2008, 13:37

Ваши права

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