Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Атрибутный Fade in/Fade out (http://zx-pk.ru/showthread.php?t=8168)

newart 6th August 2008 17:44

Атрибутный Fade in/Fade out
 
Subj не у кого не завалялся? (для картинки)

Желательно фремовый.

rasmer 6th August 2008 18:32

Quote:

Originally Posted by newart (Post 144471)
Subj не у кого не завалялся?

Желательно фремовый.

Слава... в ревюхе даже конкурс был на самый быстрый/маленький сабж... так что там найдёшь штук 10 процедурок... :) к сожалению год не помню...

scl^mc 6th August 2008 23:28

1994. одно время там в лидерах была процедура из terminator-2 длиной 11 байт. щас посмотрю точно скажу

млин, 2 раза ошибся. 1995 год, 2й номер, процедура длиной 33 байта :) а из терминатора - 39 байт
Quote:

Originally Posted by zx-ревю 1995`2б стр. 44
org 40000
ent
ei
ld e,255
l1 ld hl,25528
ld bc,768
and a
rr e
l2 ld a,(hl)
xor e
and e
xor e
ld (hl),a
inc hl
dec bc
ld a,b
or с
jr nz,l2
ld b,4
l3 halt
djnz l3
xor a
cp e
jr nz,l1
ret


rasmer 7th August 2008 01:58

а так ещё автор IceClimber хвалился, что у него самая фастовая и манюсенькая...

Sinus 7th August 2008 02:48

а нахрена в вышеприведённой процедуре?
Code:

xor e
and e
xor e

это можно спотойно заменить на просто
Code:

and e
ибо
Code:

xor e : and e : xor e == xor a,e : and a,e : xor a,e == ((a ^ e) & e) ^ e

a          : 0 : 1 : 0 : 1
e          : 0 : 0 : 1 : 1
((a^e)&e)^e : 0 : 0 : 0 : 1
a&e        : 0 : 0 : 0 : 1

и ещё одно: все эти процедурки по 30 байт будут не очень красиво затемнять картинку, если на ней есть и пэйпер, и инк, и брайт.

я вот в таргете делал с табличкой в 256 байт, это конечно не 33 байта, но зато сверхфастово, правильно и красиво выглядит :)

rasmer 7th August 2008 03:56

Code:

        LD B,8
F_OUT04
        LD HL,#5800
F_OUT03
        LD A,(HL)
        AND %11000000
        LD E,A

        LD A,(HL)
        AND %00000111
        JR Z,F_OUT01
        DEC A
F_OUT01 LD D,A

        LD A,(HL)
        RRCA
        RRCA
        RRCA
        AND %00000111
        JR Z,F_OUT02
        DEC A
F_OUT02 RLCA
        RLCA
        RLCA
        OR D
        OR E

        LD (HL),A

        INC HL
        LD A,H
        CP #5B
        JR NZ,F_OUT03
     
        HALT
        DJNZ F_OUT04

Сорри за кривость и ламость - писалось наживую прям тут в посте /и все это нехило оптимизируемо и по скорости, и по размеру/...
уважаемый Sinus - почему фэйдоут сделанный по подобию будет работать криво?

newart 7th August 2008 17:12

Quote:

Originally Posted by Sinus (Post 144539)
я вот в таргете делал с табличкой в 256 байт, это конечно не 33 байта, но зато сверхфастово, правильно и красиво выглядит

Поделись?

Sinus 7th August 2008 19:22

Quote:

Поделись?
идея такая (пишу прямо тут, ничего не проверял, и в оригинальный код не смотрел):
Code:

    LD LX,8

ONCE HALT
    LD H,'ATTR_TABLE
    LD DE,#5800

LOOP DUP 32
    LD A,(DE)
    LD L,A
    LDI
    EDUP
    JP NZ,LOOP

    DEC LX
    JP NZ,ONCE

табличка ATTR_TABLE должна быть расположена по круглому адресу.
есть одна проблема: если аттрибут будет #FF (хотя нах кому нужет белый папер, белый инк с брайтом и с флэшэм :) ? ), то после LDI рег. H перескочит на другой адрес. но эта проблема надуманная, ибо такое нигде не встречается.

самая главная фишка это конечно таблички :) но я сейчас так не вспомню что я там писал в них. надо код искать.

зы. от DUP 32 можно избавится, это значительно сократит размер процедуры, но зато будет не мега фастово :)

Добавлено через 3 минуты
Quote:

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

NovaStorm 7th August 2008 20:30

А так ли важна тут быстрота то? Ведь аттрибуты за фрейм хоть как кидай, опоздать к инту невозможно. Или при этом ещё что-то считается?

rasmer 7th August 2008 21:40

Quote:

Originally Posted by Sinus (Post 144646)
твой фэйд будет работать прямо, но очень не быстро.
а если сделать его быстро, то он хорошо вырастет в размере :)

ну уж все равно ИМХА будет занимать меньше чем твой плюс табличка


All times are GMT +4. The time now is 21:01.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.