Adventurer #09
30 апреля 1999

Exchange of experience - spinner - izvraschalka (Zoom Rotator).

<b>Exchange of experience</b> - spinner - izvraschalka (Zoom Rotator).
     (C) SerzhSoft


          Spinner-IZVRASCHALKA


                     Not so bad traits

                         his baby!



     As you may have guessed from the title, in
This article is about something the rotary. The article was 
conceived as a sequel to "Plasma balls" from Deja Vu # 04 and 
"floating attributes" of Deja Vu # 03, so I advise all those 
who have not read these articles, especially review

with them and then to study this ...

     The fourth issue we discussed a
of the best effects Homel demos
VIBRATIONS (RUSH). Enlight-96 on this
trekmochka created a furor and
preliminary results of a vote taken
even the first place, ahead of ILLUSION.
This contributed to a couple of attribute a lot of effects, 
which at that time only pervootkryvalis ... One of them,

"Plasma balls, we have already considered,
and now it's time to move on to the best
the effect of Enlight-96 - to attribute spinner, iskazhalke, 
priblizhalke, udalyalke, smeschalke ... shorter - izvraschalke 
called "RUSH-1996". It is no wonder that in its review of all 
known glory Mednonogov then wrote: "It's worth seeing! All 
fallen! " 

     Looks, of course, the effect is simply
slaughter, but that's if you start to dig in
Codes wanting to figure out - how it all
Working ... Yes ... There's the devil himself a leg break! Guys 
(IMP or BACA?), Seems much in a hurry (or lazy: -)) ...

As a natural result - obscure,
Yes and the amount hoo! I had all kodit from the start, and 
what came out - now see ... 

     Firstly, I was inexpressibly surprised
that is, that the inscription "RUSH 1996"
is actually a fucking picture! Why? It is much easier this
label printing, the more so if it
can be easily changed without having to download to
this ART-STUDIO!

    Secondly, I
still wondering - what
function is computed
plate trajectory. That
I managed to learn, so this is the length of the plate -
(# 0800) and plot functions. And the function itself to guess - 
I did not found free time - who knows -

write ... Sam schedule on a reduced scale is shown in the 
figure and watch it you can, using the program from artless in 
BASIC. Before its launch, download the file rtr_data at 32,768 
and look nazdorove. Total in the table 1024 double-byte numbers 
of type integer (-32768 ... 32767), which take values ​​from

-433 To 780. Thus, the amplitude of 433 780 +1 = 1214. Thus, 
the program: 

 10 LET o = 176/1214 * 433
 1920 PLOT 0, INT o: DRAW 255, 0
 30 FOR i = 0 TO 1023
 40 LET l = PEEK (32768 + i * 2)
 50 LET h = PEEK (32768 + i * 2 +1)
 60 LET hl = l + h * 256
 70 IF hl> 32767 THEN LET hl = hl-65536
 80 LET y = 176/1214 * hl + o
 1990 PLOT INT (i / 4), INT y
 100 NEXT i


     And now proceed to consider
the effect. I debugged the program for
ZX-ASM 's, so the entire listing before a 40-digit format. 
Source can be found in the annex, but it contains no file for 
the ZX-ASM 'a, a simple text strings, ending code

13 (# 0D). This is done to you
able without interference to throw the program in
one assembler, which is more convenient.
In the ZX-ASM 's the same, you just run Import and then compile 
... 

     You already know that this effect
used 2048-byte plate trajectory. Listing she loaded team INSERT 
"rtr_data", but when debugging I asked her a little differently 
... To speed up the compilation, I disassemble the STS 'om all 
the plate in an assembly format, resulting in speed compile / 
run / debug the program increased significantly. I advise you 
also to do with their little boxes, sprites, massivchikami etc.


     The effect is written in traditional style
90 years - "realtime programming". FX
divided into three main parts:

     1. The main program. Produced
initialization procedure calls that precede effect, and 
procedures deinitialisation Folding FX. Here "sits" cycle 
display of the effect ... 

     2. Initialization procedure, effect.
Clear the screen, the generation of the necessary tables
data, fast procedures ...

     3. Procedures actually produce the very effect. Usually 
cause a very realtaymovye speed super-procedure

written to the limit Speccy.

     In this case, the parent program
cause such an initialization procedure:

     1. INITSCR - reset the curb,
clear the screen and fills it with the pixels
in a checkerboard pattern for the subsequent more
smooth transition of shades of colors when the effect. 
Initialized both Spectrum Screen: Zero (# 4000 .. # 5AFF

or # C000 .. # DAFF on page 5) and first (# C000 .. # DAFF on 
page 7). 

     2. MK_RTBL - how to move
podgruzhennoy plate motion in the segment
Data at # 6000. nameplate must stand at a multiple of # 0100 
(256). That is, low byte address should be zero. In principle,

know if certain functions, on which construction
plate, you can Generate it in real-time,
missed only 200 .. 300 bytes and thus saving more than half of 
kilobytes! 

     3. MK_RTRL - in a segment realtimekodov Creates fast 
calculation procedure and displays one line attributes

effect - RTRLINE.

     4. MK_RSCR - generation procedure
rotate the picture with an inscription to FX'a.
Creates a background image, then printed
shadow of the inscriptions, and only then - the very title. It 
can be overridden - enough change the assembler line:


     MESSAGE DB "SERZH 1998" # 00

     But remember that the length of the inscription can not 
exceed 10 characters and must end code # 00 and include only 
standard characters with codes from # 20 to # 7F.


     You can also try poizmenyat
special constants generated images:
SHADOWX and SHADOWY - the shift of the shadow
regarding the inscription; INK_CLR and
SHD_CLR - Color characters and shade, respectively; 
BGROUND-core background color - defines the main color 
"rainbow" under picture.


     Next, the program goes to the head cycle
Implementation of the effect - is
procedure call RTRATTR, repeating until
until you press
SPACE. The effect begins with a smooth
"Opening screen" - like climbing up the curtain. All this time 
and further We are seeing a rotation movement and distortion of 
the generated images with the inscription, displayed in LOW 
RESOLUTION (ie, attributes) ... 

     The procedure is actually RTRATTR
six interrelated logical parts:

     1. Handling two screens. Conclusion has already
is a calculated image at the visible screen and the calculation 
of the new image in the active screen. Detail the concept is 
dealt with in Deja Vu # 03 (article, "Demos kodit I want" and 
"Floating attributes"). The only difference is that in this case

Zero screen is not connected by address
# C000, there is always a page with 7 first screen ... And as 
the program she "guessed" exactly where it is

must display the rendered (a calculated) picture ...

     2. Next is the manager of various
Parts of the effect. Indeed, in the present FX'e
different forms of movement, which are switched at one time. 
Referred to as a piece of code once and is responsible for 
switching those parts for which data are taken from

Table PARTTBL. In it for each sub-part is given by 5 bytes: the 
first is responsible for part time work, and the remaining are 
different rate constants / iskazhaemosti pictures while driving.

Can poizmenyat these constants in one direction or
other side and look what happens ... In the original code 
VIBRATIONS this piece of code was replaced by direct

entering the corresponding constants in
program that took untold number of extra bytes and difficult 
debugging! I would like to ask the guys from RUSH: "Why is it 
so difficult?!" 

     3. After the manager often is the calculation of the 
current coordinates Y and X, the output window effect. 
Immediately from the table the motion displacement coordinates 
are taken and recorded in the registers, DE and DE ', which are 
used later in the main loop output window.


     4. Here the calculated value of the visible window, which 
can range from # 00 (can not see anything) to # 18 (Box matches 
the size of the screen). If the window size is 0, then 
immediately jump to step 6. 

     5. The main loop output window. Depending on its size, the 
required number of times The calculation procedure is called 
realtaymovaya single line image - RTRLINE. The procedure 
returns to the label RT_RTR team JP, since the command RET 
isolzovat impossible due to the fact that the stack we have 
points to the current address of the output to the screen (the 
image is formed teams PUSH BC). In the main loop is also 
produced "Trimming" for each image line

initial coordinates Y and X and their displacement in
Depending on the current values ​​of speed /
iskazhaemosti ...

     6. Next is a fragment of code responsible for cleaning up 
the remainder of the screen, not included in the "window 
effect". Zeroed register pair DE, and using commands PUSH DE 
clears. 

     Upon completion of the stack RTRATTR
restored, and we return to
main loop effect. When you press SPACE
this cycle is interrupted and the following happens ... Team 
INC A, addressable Tagged LNS_ADD, changes to the DEC A. Thus 
We vklyuschaem "closing the curtains." Next, # 1A just call the 
procedure RTRATTR, which now roll the screen. Then restore the 
value of the register HL '= # 2758 for the correct function in 
BASIC, which perform ...


     RAMPAGE procedure produces the correct address to the port 
# 7FFD, retaining while a copy of the recorded value of the 
port register A in the system variable BANK_M.


     Changing the constant, you can specify CHARS
address their own, not ROM 'Shnogh character
set.

     Constant RTR_SCR matters
# E000 and should not be changed. It indicates the beginning of 
the generated images. AND The thing that should be "circular" X 
and Y coordinates to derive a shifted or rotated images. With 
the X coordinate any difficulties arise, because it is 
responsible for the low byte of the picture. And if, for 
example, the X coordinate equal to 255, add 1, then we get X = 
0. C igrekom harder. After all, he must always

be within a picture, that is
In our case, from Y0 to Y0 + YR (where Y0 -
starting address of a picture, and YR - its height). If Y0 = # 
E0 and YR = # 1F is very simple enough after the team calculate 
the coordinates of Y give a command OR # E0, then we will 
always be "cool" in the range of # E000 to # FFFF. Others 
address values ​​are no longer "fit." In principle, could 
increase the vertical image size, position it to address

# C000, there is but we have been sitting "the first
graphic "screen, so that nothing
leave. Or would have had to add a bunch of
commands to switch the pages of memory
back and forth during the calculation and display ...

     Uhh! Enough to ship! If anything else is unclear, the 
farther you have to sort out themselves. Then you should to 
help no comments that are present in the listing effect. And I 
think I'll call it a day ... Do not forget to write reviews of 
articles that you read. I already beginning to end with 
confidence that all this is someone who needs ... And

difficult to guess what is interesting to readers! :-) Write 
about what effect you want to read next?



                 Good luck!


                        With best wishes,

                                   Serzh.





Other articles:

From the authors - The authors of the magazine.

From the authors - Adventurer - the section of the popular magazines heritage.

Presentation - A new program for collecting tunes: UniPlayer v1.0

Presentation - a new graphical editor 3Color Studio.

Presentation - an unusual boot: Program Box version 2.0

Presentation - a new quest: Full Shit.

Presentation - a level editor for games Raven Black: Black Raven Editor v1.0

Presentation - the new editor for digital music: EARACHE v1.0

Interface - Letters from readers: Dawid Willis, Ivan Roshchin, Cav Inc. (Competition for the best name for your sound card, glitches in HRUST v1.0 and XAS v9.06 +)

Interface - How do we (CPU) were FunTop'e.

Interface - Opinion: on acquaintance with the PC.

Interface - branded cheats for the games: Midnight Resistance, Chase HQ2, Havoc, Turbo Girl, Fast Bredd, Turbo Boat.

System - An overview of new sistemok: Sprite Maker v4.0, Turbo Copier v2.0, Sample Studio, Art Works 1, Burst Eyes v1.2, Excess Sample Editor v1.4.25, Excess Deluxe Paint v1.1, Graphic Station, BA v1.0, Global Commander v1.31, Quick Commander v2.3, Stall Spriter v0.1, AGA v1.0, Ultra Sonic v0.1, Universal Sprite Studio v1.0, HRUST v1.1, STORM v1.3.

Review - Overview of gaming innovations: Leprekon, Fuck Communistov, Sherwood, GOAT, Kill PC 2, Chainick: Horror in the flat.

Review - Review of the demos: Black Raven 2 v0.000, Crime Santa Clause Deja VU, Awaken, Japan Crossword, Pussy: Love story from Titanic.

Guests - An Interview with Nicodim'om from Yaroslavl (the author of Prince of Persia and the Pirates).

Guests - An interview with a group of Rybinsk Expirience (authors kvecta Full Shit).

Guests - CPU on the life and future plans.

Promotion - A strategy game: Sword OF Bane.

Promotion - parsing the game of Rock Star: Rock Star ate my Hamster.

Exchange of experience - Rapid procedure for finding the root of the number and Testing Kempston-port of SerzhSoft'a.

Exchange of experience - The procedure for generating sine.

Exchange of experience - spinner - izvraschalka (Zoom Rotator).

Exchange of experience - SerzhSoft'a report on the regional Olympiad in Informatics in 1998.

Exchange of experience - TR-DOS: the disk included with interrupts.

Ottyag - 23 things you can do with the program hanging. Symbols - grimassy in the program notes. 20 things you can do if ochen want to drink, but you have no money. Verse of the monk.

Ottyag - Competition test: Test: What you need a computer? Test for the Communists. Test: Can I rely on you? Quiz: Who are you Spektrumist? (User or lamer).

Ottyag - Terminator 3 sleigh day (or the truth again, somewhere in there).

Iron - Sound card with direct access to: DMA Sound Card (description schemes and programming).

News - News from local groups: Volume 4, Groboclone, Surdakar, Di-Tech Labs, Auryn, Rainbow Dreams, Experience.

Advertising - advertising and announcements from spektrumistov.


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

Similar articles:
PUSH HL - Print the text up to a pixel.
Interview - VIC (X-Project) - How do I start?
Toys - on the shelves: Carrier Command.

В этот день...   21 November