Deja Vu #04
31 марта 1998

CODING - THE optimization.

<b>CODING</b> - THE optimization.
SoundTrack: BY 5EC70R/SERIOUS S.G.4 DEJAVU
__________________________________________


(C) M.M.A / SPEED CO. aka UnBELIEVER / XTM
__________________________________________



             THE OPTIMIZATION



   In the first lines of this short article
I would like to mention the fact that I do not consider

                a steep coder'om. Yes,
 S once were and I have Akad S zyvy to master program
  S formation and the achievement of
) S SATISFACTION heights and INM S SULT - hit those far
and S times. However, total
Lack perseverance and RS

  S free time soon

                led to recognition of the fact
inability to become a real, real
coder. Since then, securing its status as a man who knows asm 
Z80, I began to study more things for the benefit of the 
approximate favorite SPECCY. Of course, periodically

have to be shipped ALASM for writing
loader'ov, simple protsedurok for the conversion / processing 
graphics and sound with pC, but it not at all what I mean by

coder. That is why, in our ENLIGHT'ovskoy
work - NOUMENON - none of my
bits in the code.


   Nevertheless, the above reasons
does not prevent me to follow closely the current state of 
affairs in coding'e and programming. That is why, having found 
in the annex to the seventh issue of the new ZX-FORMAT 
assembler STORM, I could not resist tried this product at work.



   STORM can be said about a lot of good words. This is 
absolutely evil and savage environment. In my subjective 
opinion, _nastoyaschie_ effects can not be written in squalid 
GENS / ZEUS / MASM, and others. Good effect requires a 
comfortable writing with a STORM frame-scrolling of the text is

comfortable environment. However, to each his own ...


   So, I sit in this STORM'e and I think
Why would such a nakodit. Watching the rapid scrolling screen, 
I decided to try to write something like that. Given given in 
the first paragraph of the facts, nor that more than scrolling 
the entire screen up with the cleaning of the bottom line, I 
did not enough. Write the first option, which

Finally, normal work, I felt a mad desire prooptimizirovat and
accelerate its program. That is what
devoted to the following written bytes of text.


   So, our task is to
how to write a procedure that shifts
Full screen up one pixel row. Further, this procedure should be 
expedited. There you have it! 


   Because you, my dear readers, certainly not RST # 7, 
EXPLODER or FUX, will not very cool to put a question on the 
shift of screen, for example, during one frame.

We are quite satisfied with two or three frames on the shift
that is about 140-210 thousand cycles. It
on this, I suggest that for the process
Copy one line does not use
stackable design POP all: LD SP, nn: PUSH
all, difficult to understand for beginners. Let us confine 
ourselves to simple and clear commands to copy blocks - LDIR, 
LDDR, LDI, LDD.



   To start the optimization, it is necessary
jot down the first version of the procedure, which presented 
only two claims - The procedure should work correctly and

be understandable. In order not to reinvent the wheel, below I 
present a similar procedure, which is taken from the previous 
issue DEJA VU. My credit is only in the calling

program.

;----------------------------------------; SIMPLE LDIR SCROLL 
CODED BY MMA ; USING SUBROUTEN BY Serzh Soft

;----------------------------------------


        ORG # 8000



        LD HL, # C000, DE, # 4000, BC, 6144

        LDIR; The transfer to the screen
; Loaded at address # C000
; Pictures

;----------------------------------------; 192 times call the 
procedure shifts ; The screen up one line

;----------------------------------------


        LD B, 192
LOO PUSH BC

        DI

        CALL PSRL_UP

        EI: HALT; can be removed in order to obtain
                 ; Of the uniform, "damn it
                 ; Givaniya "lines.


        POP BC

        DJNZ LOO

        EI

        RET
;----------------------------------------; Shift upward by one 
pixel (38 < = 91) ;----------------------------------------


PSRL_UP

        LD DE, # 4000; 10


;-LP_PSU1 LD H, D; 4

        LD L, E; 4

        LD BC, # 0020, 10

        INC H; 4

        LD A, H; 4

        AND # 07; 7

        JR NZ, GO_PSUP; 10

        LD A, L; 4

        ADD A, C; 4

        LD L, A; 4

        JR C, GO_PSUP; 7

        LD A, H; 4

        SUB # 08; 7

        LD H, A; 4
GO_PSUP PUSH HL; 11

        LDIR; 21/16 total = 667

        POP DE; 10

        LD A, H; 4

        CP # 58; 7

        JR C, LP_PSU1; 7 cycles = 149,553
-

        XOR A; 4
LP_PSU2 LD (DE), A; 7

        INC E; 4

        JR NZ, LP_PSU2; 10 cycles = 672


        RET; only about 151 tys.taktov


   All comments on the work of this unit
code can be found in DEJA VU # 3 / 40 BEST
PROCEDURES (Listing 2). In the above
Listing instead of comments are the values ​​of run-time teams 
in tact. 


   Typing and otassemblirovav procedure, you
should be downloaded from the address # C000 (49152) any 
schedule to it that move. I recommend the picture aso scr. , 
Which can be found on the disk with DEJA VU # 2. The point

that this picture is black and white, and occupies the entire 
screen. This will allow detailed observe when scrolling the 
screen to places where the beam sweep ahead of our procedure to 
update the screen. A ray will overtake us certainly, since the 
whole procedure takes about 151 tys.taktov (more accurately say

difficult, because you have to take a long time). When counting 
beats, I took only during the procedure without PSRL_UP

accounting team RET and the caller.


   So it's time to start optimizing.
"How?", You ask me. Naive people, you
thought that I will explain everything thoroughly and to the 
last byte. No! All this dirty work to optimize

do you and only you. Who among us
two to learn assembler, you or I?


   Some clues have yet to give.
Of course, should be replaced LDIR more
quick LDI, stack fucking transfer graphics
We have agreed not to use it! However,
stack can be used for other purposes,
where the aptly delivered PUSH or POP
replace the whole abyss of commands. Certainly
need to accelerate the process of transition from one
screen bar to another and, of course, should be .... No! You 
yourself have to guess ... Although, using even half of my

tips, you can easily reach the mark in 116 tys.taktov, to 
further improve good bit poraskinut brains. 


   Well, to give at least some incentive, I
presents data on the procedure to which
able to write to me, holding ldir
restrictions on the transfer of the line:

The size of the procedure - 188 bytes
(After the first run-increasing to 572)


Approximate run time - 111 tys.taktov (almost the exact time of 
execution - 110.682)




   For eager to look at this monster in the annex to the 
magazine placed source (File called LDISCROL. ). I asked

specifically to leave it in the format STORM'a,
as this assembly is not at all, and
according to this, you will most likely not be able to 
immediately look back. We'll have some time to consider the 
place that some called the head. 


   Of course, I suspect, and realize that
my procedure can be speeded up. If, however, did not move the 
image on the screen and take it from memory, and output in the 
right place (even by LDIR'ov), the ...... However, this

another story!


    Powered by LACRIMOSA'95 "INFERNO"

      MOTHER RUSSIA/SAMARA/13.02.97

P.S. "Friday 13-oe ....."




Other articles:

Aperativchik - On the control of obolochke DEJA VU and the content of 4 issues of the journal

Topic - Immortal SPECCY - "Future Project Speccy".

drop of solder - The emulator ZX-SPECTRUM v3.04 - User's Guide.

drop of solder - The emulator ZX-SPECTRUM v0.20b by LION.

drop of solder - ZX-SPECTRUM NAVIGATOR v1.00beta.

SOFTWARE - The presentation of the game "The Lord of Orion."

SOFTWARE - A Treatise on the Great polzitelnosti some architectural developments.

SOFTWARE - An overview of new games: FISHER pre-reliz, EMPIRE demo, LITTLE GHOST demo, STALKER, ELOPEMENT, WORDLIFE.

SOFTWARE - Overview of new products demoscene: HALLUCINATIONS in OPERA, INFARCT, YER ACHE 2, AMIGA, RAY EURODEMO, ZEST.

CODING - The remix of some procedures in 1993: SCREEN APARAT, umbral path, LOOK BASIC PROGRAMM-2.

CODING - Print numbers in different number systems: print decimal and hexadecimal, binary, and Roman numbers, seal numbers in the radix set by the user.

CODING - the procedure "plasma balls".

CODING - fade out the music at any time.

CODING - THE optimization.

CODING - The rotation of sprites.

ANOTHER WORLD - On a computer Be Box.

ANOTHER WORLD - The arguments and facts (AMIGA vs PC).

Hall of Fame - Official information about the festival FunTop-98.

Hall of Fame - Competition for the best minidemku (1024 bytes).

Seven and 1 / 2 - Lesson Lamer or a hundred and one procedure for cleaning the battery.

Seven and 1 / 2 - April Fools' Day (jokes and humor).

attempt at writing - last tour or VIRTUL-but AMIG-LIMITED syndrome.

attempt at writing - A poem about good and evil.

attempt at writing - The return of Claire.

attempt at writing - Poems: Sleep student Fable of Mattanah, medical board.

attempt at writing - Short Story "The War Continues" (continued, Chapter 6).

Advertising - Advertisements and announcements ...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
run scene run! - "In the form in which the scene is now, she can not develop. She is at rest, more than that - it is as if standing in quicksand," ...
News - XTR-modem new development of X-Trade.
Advertising - Advertisements and announcements ...

В этот день...   1 May