Inferno #02
01 мая 2001 |
|
For Coderz - the translation algorithm of color image in gradations Spekrumovskogo gray.
Gray sky (C) Shaitan / Stars of Keladan This is precisely the color you would see the sky, if people did not have a color analyzer eyes. In my opinion I drive. Well, here suggest vyshemu attention description of algorithm translation of color _Spekrumovskogo_ Image gradation gray. You might ask: "Why is Spectrum? "And everything is very simple - because Spekruma special construction of the screen, and the algorithm is to and this is based. But if you understand the case, then such feature can be implemented to any platform, but it's not a fact. So, let's begin. First we need to decide how many shades of gray would be consistent Our flowers and build a table of 8 (16), texture units in the following format. First are 8 bytes of zero color, then 8 bytes the second and so on until the 8 th or 16 th. In example shows the files of that uses 8 levels of gray, from black to white, including, but not attaching much effort it can be easily peredalat at 16, that is, taking into account the brightness of the flag. Such an algorithm, and the procedure is used in the module Grey Scale Convertor versions 1.0 and 2.0 for rulezneyshego graphics editor BGE. And now we have to listen to me very carefully, so as to be beyond description of the algorithm. I hope that you are familiar with structure of the Spectrum screen and you is not news that we are so we have 8 colors + 2 graduation brightness of each, a total of 16 colors of ink and 16 in the background, and generally get 256 color combinations on familiarity. The algorithm I will show you in the following graphic area, which the ink is green, and the background red. For convenience, the digestion of my ravings except for the image in full size bring the image in an eightfold magnification. So true. Read the attribute appropriate familiarity and it determine the numbers and start addresses textures for the background and ink. Then read the first byte of familiarity to remember on the stack and put on a mask byte first byte of ink. The resulting bytes be gdenibud remember it for later recovery. Now remove from the stack byte value familiarity, invert him and put on his mask as the first byte, but the background. Now, as the opofigey, we must add to both OR'u masked-byte, and then we received bytes to put in place the original byte. After all of the these actions we can proceed by the second byte of familiarity, only it is not necessary to determine the address of textures and as a mask byte must use the second byte of the same texture. After we walked around familiarity, we need him to put the attribute you want with the code # 38, that is background to white, and black ink and it all off with brilliance. As a result, you have something like (See color example). We can then proceed to next familiarity, and all actions necessary to produce again. To better understand the quote you the original procedure of translation in shades of gray, which was used in the module with version 1.0 of BGE. SCREEN EQU # 4000 ATTR EQU # 5800 LD HL, SCREEN LD DE, ATTR LD B, 24; lines in screen M3 PUSH BC PUSH HL LINFIL LD B, 32; familiarity in a row M2 PUSH BC LD A, (DE) PUSH HL PUSH DE PUSH AF RRA; determine the address of the background texture RRA RRA LD DE, ATR_TBL AND 7 ADD A, A ADD A, A ADD A, A LD H, 0 LD L, A ADD HL, DE LD (PAP), HL POP AF AND 7, determines the address of the inky texture ADD A, A ADD A, A ADD A, A LD H, 0 LD L, A ADD HL, DE LD (INK), HL POP DE POP HL PUSH HL LD B, 8; the number of bytes in the familiarity M1 LD A, (HL); read bytes from familiarity PUSH HL PUSH AF LD HL, (INK) AND (HL); put ink mask LD C, A; remember INC HL LD (INK), HL LD HL, (PAP) POP AF CPL; invert the original bytes AND (HL); put a background mask OR C; connects two bytes received INC HL LD (PAP), HL POP HL LD (HL), A; put in place CALL DOWN_HL; Come over to the underlying byte DJNZ M1 LD A, # 38, put the attribute LD (DE), A POP HL INC HL INC DE POP BC; proceed to the next ; Familiarity DJNZ M2 POP HL CALL LOWERHL POP BC; disguised to the next line DJNZ M3 RET DOWN_HL INC H LD A, H AND 7 RET NZ LD L, A ADD A, # 20 LD L, A RET C LD A, H SUB 8 LD H, A RET LOWERHL LD A, L ADD A, # 20 LD L, A RET NC LD A, H ADD A, 8 LD H, A RET ATR_TBL; but it ourselves texture DEFB # FF, # FF, # FF, # FF;-BLACK DEFB # FF, # FF, # FF, # FF DEFB # 77, # FF, # DD, # FF;-BLUE DEFB # 77, # FF, # DD, # FF DEFB # AA, # FF, # AA, # FF;-RED DEFB # AA, # FF, # AA, # FF DEFB # 55, # BB, # 55, # EE;-MAGENTA DEFB # 55, # BB, # 55, # EE DEFB # 55, # AA, # 55, # AA;-GREEN DEFB # 55, # AA, # 55, # AA DEFB # 55, # 22, # 55, # 88;-CYAN DEFB # 55, # 22, # 55, # 88 DEFB # 55, # 00, # 55, # 00;-YELLOW DEFB # 55, # 00, # 55, # 00 DEFB # 00, # 00, # 00, # 00;-WHITE DEFB # 00, # 00, # 00, # 00 INK DEFW # 0000 PAP DEFW # 0000 6 In the appendix can we meet this source in the format Alasm, but without comment. But what can be achieved by This protsedurki.
Other articles:
Similar articles:
В этот день... 21 November