Info Guide #02

Programming - On multicolor program in general and in particular the MC24.

<b>Programming</b> - On multicolor program in general and in particular the MC24.
 About multicolor in general and in particular the MC24.

  AlCo


   The first question that torments the user, who saw on-screen 
pretty Multicolor effect - as one put familiarity

so many colors?

   Fortunately, in recent years, programmers gradually 
unleashed their languages ​​(and sometimes some of the 
non-programmer himself comes) and in the computer press began 
to appear small articles, sometimes just allusions to the 
principle of the effect. I going to do in this article 
voluminous work: take stock of their own and others' 
achievements in this area and, of course, tell the practical 
side of this issue. 


                 Chapter 1.

              General principle.


   Effects Multicolor most of all
similar to the effects of bordernym - on CPU utilization and 
intolerance on the clones. They are also close to the famous 
problem <July>, or <gap>: when the beam scan

catching up with the construction of images in the bottom of 
the screen visible to the previous frame, whereas top - the 
right (or vice versa), but separates their band gap, or 
<Mirror>. 

   The first thing to understand the principle of
display screen.

   66% of the time displayed on the screen or
curb, or nothing (go back moves the sweep). The rest of the 
time from the memory (or rather, from the current video page) 
are selected two bytes: the mask and attribute them to the known

principles are applied within 4 strokes are displayed on the 
screen in the form of 8 points. 

   From this it follows directly that every
attribute byte is read eight times - obviously
wasteful, though just try to realize
differently. That's what we use: if the attribute byte to 
change in time, the familiarity fall height. The ideal size 
Multicolor familiarity - 1x8 pixels - on neturbirovannoy 
machine is unreachable for the entire screen. Often used in 
familiarity 2x8 - mazh though the entire screen, there is still 
time left. 4x8 mode is even easier - you just need to toggle 
on-screen pages. 


                 Chapter 2.

                Constants.


   Lists the parameters for the sweep , as most 
standard machine Not long ago, but sunk in stormy

the flow of brake clones (primarily
is ).
 - The length of the frame (how many clock cycles between two 
scans of adjacent frames) - 71,680 cycles.  - Length of the 
line - 224 bar.  - Break begins - from the beginning reverse 
sweep.  - Strings in the top of the Border - 64.

 - Line the bottom of the Border - 48.
 - Total lines on the screen - 304 = 38 * 8.
 - Includes unseen - 320 = 40 * 8.
 - From: bars to the top of the graphical display - 17,920 = 80 
* 224. (Actually, for constructing multicolor need only know

two constants - the string length and number of cycles to the 
top edge. The last parameter in Pros and ATM is 14,336, the 
remaining clones unknown.)



                 Chapter 3.

                Classics.


   Date of invention, multicolor unknown, as well as the 
unknown inventor. In package SuperCode (1983), these procedures 
do not, Although there is static on the band

Border. Perhaps to clarify these issues should be a good 
rummage in the compilation of  or <Your 
Sinclair>, but in Russian, these logs were not released, but to 
get the original problematic. Therefore, just the facts: 

   Most well-known classical multicolor dated 1985-86. As the 
years greatest Spectrum . 

   Sometimes familiarity replaced Multicolor stripes on the 
curb - this effect is used in copiers <Last hope>. 

   In games <Venom strikes back>, ,
<Little Puff> shifty Multicolor stripes are present in the game 
menyu.V <Monty run> they are in the menu items.


   Programme of the then giants of the machine
Code (James Hatchbi, brothers Oliver), and
all Spanish program do without Multicolor 
effektov.Prenebrezhenie it or difficulties with mastering 
effects - is unknown. 

   Later in the countries of Eastern Europe began the actual 
experiments in this field. The strips have already tried to do 
the horizontal and combined with bordernymi. (Although 
bordernye stripes have tried to combine with standard screen: 
Italian SuperCar (Code Masters), the same Venom.) Classic 
example - Part 2 Shock megademo (ESI, Poland). Just make a 
reservation: they do not pervye.Byla some demo without music: 
on the Border and the screen from the center line and escaped 
rainbow stripes. 

   Our people quickly mastered the effect.

   The first (not guaranteed!) Multicolor
the picture was in the Gift MULTDEMO (Flash Inc.)
It consisted of eight-points of the 1x4 and
size was 16 * 16 familiarity.

   Multicolor most famous picture was, of course, 
CodeBusters'ovskaya. Demonstration of Satisfaction (1994) was 
then a real discovery. People stuck to the screen

trying to understand what the hell, it's all
done. Well, not counting those comrades who, without 
understanding the intricacies of special programming in 
assembly language, just listen Digital Mouzon from another part 
of the demo;). He By the way, is still unmatched, as well as

picture ... The picture was shown in
box 14 * 14. (Why not 16 * 16? Because walking
mapping, and this extra 25 cycles per line.)

   Since then, the tradition in multicolor
asked solely RST7.

   EYE ACHE (1996) - Mode 4x4 in 8 colors.
Before that, nobody (at least, know who) is not used. And then 
- Real Time MultiColor Rotator area two and a half thousand and 
points! Zoom Rotator 4x4 / 8 was in BINARYLOVE (DR, 1997). (The 
algorithm, of course, has nothing in common but the main thing -

idea!) Sine Plasma mode 1x8 - also did not
a very bad effect. Repeated (on the box in
1 / 4 screen) in a demo of bourgeois LAZARUS.

   EYE ACHE February (1997) - 2 SinePlasm'y mode 2x8, which had 
hitherto been used only neplavnyh effects (sm.ECHOLOGY).

3 effects in the resolution of the original 4x4/8.Mars 
MultiColor mode 1x8/64. Pictures mode 4x4/64 (horizontal 
hatching) and one in the mode of 2x2 / 8 (in the epilogue, for 
some reason called 2x2/2048? - /)


   1 (adyn) times, where Ito used a shimmering version of 
4x4/64. 

   Sineplasma 2x4 / 8 Repeat in EMERGENGY
(Real Masters, 1998). Still some great effects in 4x4/64 are
worthy ornament of their demo ANAMNESIS.


                 Chapter 4.

         Practical implementation.


   Consider the implementation of multicolor 1x8.

   What is required: after the arrival interrupt
wait until the top of the screen and in the upper distribute 
the familiarity some Moore. 

   To the top of the screen should go
know in advance the number of ticks, so that the first 
interrupt mode in any case can not be used. Therefore, 
including the second mode and hang up on him multicolor:

ATTRS EQU 0; ADDRESS ATTRIBUTES multicolor

      ORG 24576

      CALL SETIM; SETS THE INTERRUPTION

      CALL 8020

      JR C, $ -3; Wait BEFORE BREAK

      IM 1

      RET

SETIM LD HL, IMER

      LD DE, 65524

      LD BC, 12

      LDIR; TRANSFER Hooks

      LD A, 59, 59-th interrupt vector

      LD I, A; POINTS IN 65535

      IM 2

      RET

IMER PUSH AF

      PUSH BC

      PUSH HL

      CALL PROG

      POP HL

      POP BC

      POP AF

      RST 56; possible juzat FROM BASIC

      RET

      JR IMER

PROG PUSH DE; possible and in IMER, BUT WILL SEE ...

      LD HL, 679, OR 541 FOR PROS

      DEC HL

      LD A, H

      OR L

      JR NZ, $ -3; PAUSE, like, twisted

      LD HL, ATTRS

      LD A, 8; OSEM LINES Piha
PROG0 LD DE, # 5800; ADDRESS ATTRIBUTES OF SCREEN

      LD BC, 9

      LDIR

      NOP

      DEC A

      JR NZ, PROG0; 10 +10 +184 +4 +4 +12 = 224

      POP DE

      RET


   You do not find that 9 CHR $ - narrowish
for multicolor? Then replace LDIR on
LDI:

PROG PUSH DE

      LD HL, 679

      DEC HL

      LD A, H

      OR L

      JR NZ, $ -3

      LD HL, ATTRS

      LD DE, # 5800

      LD A, E

      LD BC, # 8FF; SHOP BE NOT me:)
PROG0 DUP 13

      LDI

      EDUP

      LD E, A

      DJNZ PROG0; = 225 (STILL does not matter)

      POP DE

      RET


   Still narrow, but what can you do - cycle
is a cycle, and LDI is LDI. Keep in mind that in real 
multicolor cycles do not use, and instead inflated (sometimes

This process is called DeCrunch), for example, such a program:

      POP HL

      LD (NN), HL

      POP HL

      LD (NN +2), HL

      ... 8 * 26 +16 = 224 clocks.

      POP HL whole Labuda repeat
      LD (NN +14), HL satisfies many times (the rate
      NOP lko lines on the screen)

      NOP

      NOP

      NOP

   Process like this, often referred to as
<Output through a stack>, although it should be soon
call  because this conclusion through 
the stack goes through PUSH. POP-method often used when printing

sprites (faster and a register pair
exempt).

   Program that creates such a sequence, I usually call the 
maker. Paste it into our program:

MAKER LD HL, TABLO

      LD DE, # 5800

      LD C, 12, 12 familiarity in height
MAK0 LD B, 8, 8 lines in familiarity
MAK1 PUSH BC

      PUSH DE

      LD B, 8
MAK2 LD (HL), 225; POP HL

      INC HL

      LD (HL), 34; LD (..), HL

      INC HL

      LD (HL), E

      INC HL

      LD (HL), D

      INC HL

      INC E

      INC E

      DJNZ MAK2

      LD B, 4
MAK3 LD (HL), 0; NOP

      INC HL

      DJNZ MAK3

      POP DE

      POP BC

      DJNZ MAK1

      LD A, E; MOVES

      ADD A, 32; NEXT

      LD E, A; familiarity

      JR NC, $ +3; (familiar with the procedure

      INC D; 8 +16-> 16)

      DEC C

      JR NZ, MAK0

      LD (HL), 49; LD SP,

      INC HL

      LD (PROG +2), HL

      INC HL

      INC HL

      LD (HL), 201; RET

      RET

PROG LD (0), SP; SAVES SP (NOT ROM, COZ)

      LD HL, 679

      DEC HL

      LD A, H

      OR L

      JR NZ, $ -3

      LD SP, ATTRS
TABLO

   Before CALL SETIM, of course, should stand CALL MAKER.

   Thus (unless, of course, I do not navertel errors) usually 
do multicolor a la MEGASCREEN.Izmeneniem number (and content), 
empty commands and constants in the PROG You can adjust it for 
different types of computers. 

   The program can be further simplified, but
Then she nerestanet be as universal: an eightfold repetition of 
identical commands must be enclosed in a ring; then working 
part will be eight times shorter, and maker, even a little bit 
easier. 

      LD C, A
METKA POP HL

      LD (NN), HL

      POP HL

      LD (NN +2), HL

      ...

      POP HL

      LD (NN +14), HL

      DEC C

      JR NZ, METKA

      NOP / 4; this BS once in four CHR $


   With additional tricks can be the same method to throw 18CHR 
$ MultiColor - For this top line of familiarity

to fill the attributes in advance, in the
early termination. One of the rooms ZXRevyu someone called this 
the most multicolor wide from achievable at Pentagon.



                 Chapter 5.

          Multicolor in 24 CHR $.


   As is known, POP-method is not best metod.Po least I have 
walked on this issue in the previous issue zhurnala.Tak now 
let's see what a PUSH. 

      LD DE, ...

      PUSH DE

      ...

   Very inconvenient, especially in our case,
that PUSH is working towards reducing adresov.Esli so fill 
every line, then we'll see on the screen <Yulu>. It can be 
avoided in several ways, so leave this

problem. Here is the problem more complicated.

   Try to calculate the maximum width of a multicolor PUSH:

     l = 224 / 5.10 = 21.3333!

   What will happen now - just throw it
idea? Not worth it, if we recall that:

   1) 18CHR $ MultiColor too ~ can not be>;

   2) the 128k is a second screen area.

   The method consists in the fact that pre-fill two top lines 
in each of familiarity, so directly in while constructing the 
screen will handle all 

     24 * 6 = 144 bytes

   for

     224 * 8 = 1792 cycles;

   Total

     1792 / 144 ¢ 12.4 cycles per byte.

   Now that's more like a reality.

   Although a certain percentage of time will
switch display pages, and not
all bytes are thrown through the PUSH: some and
by LD ... Once the beam begins draws the first byte in 
znakomestnoy line, multicolor after it begins to change the 
bytes on the screen. Once the line is filled, filled line on 
the another screen stranitse.Razumeetsya every

224 clock cycles needed to switch ekrany.Multikolor begins 
increasingly lag behind the sweep, and when it will surpass its 
for two terms and is already sitting on his tail, He quickly 
throws his last byte of the index registers (pre-filled, of 
course). 

   To understand what a beauty, it must be
write your own.

   Source program, which implements
This multicolor, lies in the junk. It's called MC24.H.


                 Chapter 6.

        Multicolor or full screen.


   At each Multicolor picture caught <nemultikolornye> area 
where the attribute familiarity 1x8 coincides with the 
attribute neighboring top familiarity. Therefore,

You can use the engine from 18CHR $ MultiColor, removing it 
unnecessary POP-LD. Of course, not every image will suffer a 
, but in this case we can write some very clever 
algorithm <Optimization>. 

   In the example (STARWARS.H) optimization procedure trial and 
are not optimized :-). 

   Remember: the effects of this method is not applicable! 
(Although, of course, if you ... then ..) 


                 Chapter 7.

             Multicolor 2x8.


   Achievable on the entire screen, even
with the external attribute table (which is not
say about the MC24). The method used POP-LD
without any frills:

     OUT (C), D

     NOP

     POP HL

     LD (# 5800), HL

     POP HL

     LD (# 5802), HL

      ...

     POP HL

     LD (# 581E), HL

     OUT (C), E

     NOP

     POP HL

     LD (# D800), HL

     POP HL

     LD (# D802), HL

      ...

     POP HL

     LD (# D81E), HL

      etc.


   As you probably already guessed, BC should be equal to 
32,765, D = 31, E = 23. 


                 Chapter 8.

      Multicolor screen mode.


   With multicolor and X-color'ov on
Speccy probably about 40 different graphics modes. Enumerate 
them. 

   MC means MultiColor, ie simply compressed
familiarity; GREY color means, obtained from
by shading; COL means that the color of each point does not 
depend on the colors of neighboring points; OPT means that 
there are some restrictions on the display kartinku.Poslednee 
number in the line - number  screens.


   Some of the modes contain other
regimes as podmnozhestva.Esli shows the number of
colors, you can always use less
;).

        Standard screen

        MC 1x8

        MC 2x8

        MC 4x8

     83-color / 2 (Mortal Kombat)

     83-MC 1x8 / 2

     83-MC 2x8 / 2

     83-MC 4x8 / 2

      8 COL 64x192 (MULTDEMO)

      8 COL 64X96 (ECHOLOGY)

      8 COL 64X48 (EYE ACHE)

      8 COL 32x48

      8 COL 64X24 (WOLFDEMO)

     64 COL 64x192 / 2

     64 COL 64x96 / 2

     64 COL 64x48 (EYE ACHE 2)

     64 COL 32x128 (EYE ACHE 2)

    256 COL 64x48 / 2 (4R, 4G, 4B, 4W)

    512 COL 64x48 / 2 (8R, 8G, 8B)

     64 COL 32x24 (VIBRATIONS)

      2 COL 512x192 / 2

      3 OPT 256x192

      4 COL 256x192 / 2

      5 OPT 256x192 / 2

      8 COL 256X192 / 3

     16 COL 128x96 / 2 (RGBW)

     81 COL 128x96 / 2 (3R, 3G, 3B, 3W)

    256 COL 128x96 / 2 (4R, 4G, 4B, 4W)

      4 COL 128x96 / 2 (EYE ACHE)

     22 COL 128x96 / 2 (colored dots)

      4 COL 256X96

      8 OPT 128x192 (3 colors for 4 points)

      8 OPT 128X96 (EYE ACHE 2)

     15 OPT 96x96

     83 OPT 96x96

      5 GREY 128x96

      Seven GREY 128x64 (everyone goes

      7 GREY 86x96 crazy in their own way ...)

      9 GREY 64x96

      9 GREY 128x48

     10 GREY 86x64 (SHIT 4 BRAIN)

      Seven GREY 128x96 (in multicolor)

      September BLUE 128x96 (with a blue tint)

     17 GREY 64X48 (chunks)


   It is possible that I forgot something or
overlooked. If so, then let me know
about this, please.



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

Similar articles:
Advertising - Advertisements and announcements ...
Demoz - Demos kodit I want - let me teach. Basic requirements to Eurodemo.
Entry - the contents of rooms.
Igrushechki - Description of the game Nigel Mansells Grand Prix.
Introduction - the contents of rooms.

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