Buzz #13
12 февраля 1998
  Демо  

Demoz - Demos kodit I want - let me teach. Basic requirements to Eurodemo.

<b>Demoz</b> - Demos kodit I want - let me teach. Basic requirements to Eurodemo.
(C) Kolotov Sergei, SerzhSoft, October, 1997.


            Demo KODIT I ​​WANT TO - LET teach me!


   Certainly, in recent demostroenie on Speccy is
one of the leading application efforts vast army of coders,
MUSIC-, GFX and other maker'ov ... It must be noted
progression, improve coding, graphics, music, and their
population - effects (FX). Thus, in the latest "advanced"
demah emphasis is on the timing, conformity
visual and sound effects to each other. Moreover, most
promising direction EURODEMO, or more technical and confusing -
TRACKMO. Demos created by this standard more
undemanding of computer architecture, not to inhibit
komp'ah slow and can not be reset, for example, buggy bus
data affecting the interrupt vector. These demos "go" and
different "branded" versions Speccy (+2 A, +2 B, +3 ...). A
which is very nice - all of these programs are easily 
transferred from one system to another (eg, disk), swing across 
networks and obtain the largest distribution and popularity.



   Here are the most basic requirements, requirements 
stipulated by EURODEMO: 1. Correct work at all "branded" 
Spectrum, including +2 A, +2 B, +3.


   as well.) In a shortened address port # FD to switch
pages, the sixth bit of the port must be installed in 
yedinichku. 

   b). The value of the number of cycles in a single interrupt 
(tacts in one frame) should not exceed 224 * 312 = 69888. 
Attention! In the country very large distribution received 
"Scorpions". If you do not want to reduce the number of viewers 
of your creation as a minimum - in 2 times, then count all the 
effects of just under Scorpio! This is about 68,000 cycles, and 
Scorpion Turbo +: about 70,750 cycles per "Interesting." And 
pay attention to (!) - Runtime ALL teams in Scorp'e EVEN! That 
is why many tests (for example - Jemmini Commander) break off 
and give about 65,000 cycles, which wrong in principle!


   cent.) interrupt vector I should be set within
# 80 ... # BE, ie point to address in the "fast" the second page
RAM. Otherwise, you run the risk of slow down program execution 
for some machines by about 25%.


   city) Vector table must necessarily consist of 257 (!)
bytes, beginning at a multiple of 256, ie, start address
within the # 8000 .. # BE00 (the best option: # BE00 .. # 
BF00). If you decide to "save" to 255 bytes, then rest assured: 
the machines with unstable data bus and your creation is 
unlikely to work!

2. Disk version demos in no case be
made as a monoblock. BASIC part must comply
simple loading and provide for transfer to other
"Not TR-DOS" - system. Under the monoblock understood BASIC file
downloader, and she deme related "dyrkovym" (can
also expressed Inforkom!) by sectors of the TR-DOS. But we can
cunning and small demos of up to 40 kb bring in a zero
REM-line BASIC on the principle of tape loaders and
avoid all the problems of adaptation. Example:
 0 REM ... mover ... depacker ... pack_codes ...
10 RANDOMIZE USR VAL "5 + PEEK 23635 + 256 * PEEK 23636"
3. Multicolor effects from best to abandon or
Implemented the first on all branded machines, and only
then already in the PENTAGON, SCORPION ...
4. Desirable place greater emphasis on effects and then - on 
schedule and music. Animation is not welcome! The people are 
longing REALTIME'ovyh procedures!

5. Ideally, the transition from part to part should be
automatically and in due time. Dema should look at one
breathing. But since the ideal is very difficult to achieve, 
then acceleration and transition to the next part - not bad poll

SPACE and ENTER.

  The Council is also to look through these articles:
DEJA VU # 1 \ SOFTWARE \ SOFTNOVOSTI \ DEMOSTSENA;
DEJA VU # 1 \ Beyond the hill \ RICH also cry;
ZX-FORMAT # 3 \ PROGRAMMERS / ASSEMBLER.

   So what motivates all the coders, graphics designers, 
musicians, that makes them whole day and night to sit at the 
screen and push, push buttons Speccy, sleepy eyes, appreciating

the work already done ... Do I have to say? I
I hope that once you read this, the answer to this
question may already know, or would not be sitting for all of us
komp'om favorite!

   Yes, there are still people for whom the greatest pleasure
is the coding of new effects, for which time spent in
Assembler will never be lost. Possible and You
My readers want to be the coolest coder in the world. In
If so, you probably would be useful to read
following lines, which are opened slightly
techniques of writing quality MEGADEMO ...

   It should be noted that recently the greatest emphasis in
megademah made on the implementation of realtime'ovyh effects. 
Word 'Realtime' often appears on our screens

Spectrum'ov, and is usually used with a proud tone. But
many USER'ov still this notion is somewhat
puzzled ... And not in vain, because significance of this 
rather witty vague:

1. So said all the effects that are not based on simple
Animation (deriving in turn sprites are stored in memory). Then
have made some calculations, etc.
2. Under realtime-effects are those procedures and their
together, have time to return for one interrupt
thus ensuring the smooth graphics and the lack of 'twitching'
image.
3. And since This is often achieved taditsionnymi methods
programming sometimes simply impossible, coders must
resort to various tricks and ruses to ensure that
necessary performance ...

   The term 'programming in realtime' in my opinion is just
means one of those cool-programming techniques. Explain what
essence. Before running any effect on performance
SPECIAL procedure creates a (generated) fragments
code, procedures, sometimes occupying the entire 48th memory 
Speccy. Such procedures have a very 'loose' code, they usually

'Opened' all the commands of cycles and not the least is
Work with a stack.

   Moreover, such procedures are not necessarily located in
memory at different addresses. Different effects addresses the 
procedures may be the same, just every time there is 'is 
generated' a code ...


   All well and just when you have a memory of sitting alone 
effect then usually no problems ... But when the effects of 
several when they need to somehow tie together so they do not 
conflict and do not wipe each other ... Here already and with 
the head can befall 'bo-bo'!


   Monsters demomakinga already used this technique when
for each effect already diverted all 48 kb Speccy. How does it
achieved? It's very simple ... Created, how-to 'base
packed effects', the so-called 'FX-stack'. And all the effects
(Codes, graphics, tables, ...) weep for additional
Page 128th memory and waiting there in the 'sandwiched' state 
of its queue.


   Usually left free to the entire 48th memory and seventh bank
RAM - for the effects of using two video page. And then -
All like clockwork: the 'FX-stack' is removed once the effect
rackompressuetsya, creates the necessary signs and
realtime-procedure, and then we see another 'Otpad'.

   And so the viewer does not mayalsya waiting until the whole 
thing Unpack, 'Settlers' and calculated as necessary, on-screen

displays various inscriptions, messages fuck'i, finally ... (But
In my opinion a good EURODEMO and fuck'i - things are absolutely
incompatible!)

   Should be used dekrunchery operating at permitted
interrupts. It is necessary that the music never stopped and
'Pleased user. " In an extreme case, you can always be rewritten
depaker using the stack, changing, for example, POP HL LD on
L, (IX +0): LD H, (IX +1) ... Or, say, using alternative
registers ...

   Yes, I almost forgot. It must be noted as a technique called
'Pseudo-realtime'. The essence is as follows. For example, we 
take any sprite and memory are calculated and stored it changed

options to get, say another sprite (morphing). Then
is a result we will have in memory the sequence
Sprites, which subsequently will be alternately displayed on
screen - as a simple animation. Such a device, such as
used in the demo MENTAL MASTURBATION (RUSH) at the organization
all of the same morph ...

   But back to our sheep ... I am constantly surprised and
to put it mildly - annoying that some megademschiki still
'Spit with high mountains' on the reverse of the beam. And in 
the best case graphics are choppy ... And when the missing part 
of the sprites, and sometimes whole scrolls - there is 
medicine, as they say, powerless! And, perhaps even on the 
mountain komp'e encoder all works as expected. But on the other 
'wheelbarrows' can occur Anything ... But get rid of the 
'radial problems' very, very simply, we need only recall the 
existence of 128-Speccy two screens, switching which occurs

simplest OUT'om the port # FD (third bit).

   As a result, while both the 'visible' screen will be
one picture, we will modify or generates a new one - at
'Active' screen. And then just swap them. May
be better to give a specific asm-code? We ought to ...

        ...
; Cell storage
BANK_M EQU # 5B5C

        ...
, Visible: scr_0, attached: scr_1 (7 banks)

        LD A, # 57
; Call the procedure output port # FD

        CALL RAMPAGE

        ...
LOOP HALT; waiting for the arrival interrupt

        LD A, (BANK_M)
; Swap the visible and active screens:
; Ekran_0/stranitsa 7 or ekran_1/str. 5

        XOR # 0A

        CALL RAMPAGE; out (# fd)

        ...
And create a new image at # C000

        ...

        LD A, # 7F; twist

        IN A, (# FE); cycle until the

        RRA; not pressed

        JR C, LOOP; SPACE

        ...
;
RAMPAGE; procedure output port # FD

        LD BC, # 7FFD; OR # 40

        OUT (C), A; OUT (# FD), A

        LD (BANK_M), A; preserved. in cell

        RET

        ...

   So we have two cases:
1. See screen 0 (starting with # 4000) - the third bit of the 
port reset. And at this time connected to the seventh page of 
memory with the first screen (# C000), which we are going to 
change ... 2. After the arrival of the next interrupt, the team 
with XOR # 0A followed OUT'om we will see screen 1 (the third 
bit is the port # FD is equal to one) and connect the fifth 
page of RAM - the same 0th screen will become active and will 
also adresovyvatsya # C000!

3. All again from the beginning ...

   But should take into account the fact that it is now 
necessary careful with the port # FD. For example, when 
processing interruption in the second mode, when playing music, 
it is necessary keep track of the contents of the port # FD, 
and in particular, third bits. Say, the music, we sat in the 
first bank. Then an example interrupt handler is as follows:


        ...
MY_INT; procedure interrupt

        PUSH 

        ...

        LD A, (BANK_M); contains. Port # FD

        PUSH AF; saved on the stack

        AND # F8; preserved. bits of the screen, etc.

        OR # 01; page with Mouzon

        CALL RAMPAGE; brought to the port

        CALL PLAYMUS; lost

        POP AF; restored AF

        CALL RAMPAGE; have brought to the port

        ...

        POP 

        EI; allowed to interrupt

        RET; exit interrupt

        ...

   Yes, I think we need to show it all 'live'. I'll walk-ka
some realtime-effect. Experience shows that people
learns much faster on concrete examples. And therefore read
article 'floating ATTRIBUTES', where we have used many of the
these ideas ...

   I hope that reading this text does not make you feel a sense 
of wasted wasted time and something useful to you in the future

work on your favorite Speccy.

   If you are interested in any questions DEMO-MAKING'a and
realtime-programming - do not be lazy to ask them, and perhaps
get a complete answer.

   And remember:

      YOU CAN NOT WRITE demo,

      BUT KODIT, ALL F, MUST be able to!






Other articles:

Amiga or PC - Amiga or PC. Where to break the deadlock?

Amiga UMA - Pros and cons of Unified Memory Architecture.

Chip'n'Dale - 1 - Chip 'n Dale Rescue Rangers zaSAVEitsya Part 1.

Demoz - Demos kodit I want - let me teach. Basic requirements to Eurodemo.

Enlight'97 - The results of voting at Enlight.

Moscow - A brief report on how the newspaper went to Moscow.

TOP ZX - five of the best music programs, a dozen of the best games and eight of the best magazines.

Towdie - Description, prohodilka game Towdie.

Authors

Jokes - 20 jokes ...

Assembler - Procedures: Stretch texture engine, Texture mapping engine, Texture mapping + gourauds hading engine, Gouraudmapping engine for Z80.

Horoscope - Horoscope for programmers.

Likbez - Nostradamus - his prophecies about the future and the end of the world in particular.

Our news - copier Mandarin Turbo Copier. Collection of 3-color'nyh Japanese images.

Advertising - Advertisements and announcements ...

Contents


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

Similar articles:
four kilobytes - It took 3 weeks and ...
VIP - Random interviews Unbel! Ever / Sage / XTM.
scream - A terrible virus on the Internet.
B.B.S. News - The rules of the server.

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