RTX ON by Abaddon [web]
; RTX ON - code by TomCat/Abaddon ; Entry for the 1st 256 byte intro compo at Deadline demoscene party ; the very first RTX demosecene prod with a short precalc :-) keep calm... ; special thanks to insomniac for the blurring idea! ; Greetings to: ; Rrrola, Kuemmel, Harekiet, Digimind, Sensenstahl, HellMood, TheMechanist ; ern0, mu6k, Nap, Ionic, Picard, Eagle, Nagz, Jimmi, Gargaj & Buckethead. ; Respect to: ; Frag, Khamoon, Baudsurfer, p01, y0bi, Baze, Devreci, Dee, Pirx & Tigrou. ; 2018 FASM source - kapor@dit.hu ORG 256 CWD ; zero to Red XCHG CX,AX ; zero to Green and Blue MOV AL,13H ; set video mode 320x200 .1: INT 10H ; call VGA Bios MOV AX,1010H ; clear all the colors to hide the fx DEC BX ; repeat so many times JNZ .1 ; after the loop BX, CX, DX = 0 MOV BP,text ; using BP to easy index the code segment PUSH 0A000H ; ES and DS both points to the video memory POP DS ; for a shorter blur code PUSH DS POP ES MOV DI,24+8*14+48+8*13+320*9; starting position to draw .2: MOV BX,320 ; the linelen constant for cheaper indexes MOV CL,45 ; number of iterations of the blur .7: .8: ADD AL,[SI+1] ; AL contains 0 at start, and last color later ADC AH,CH ; summing the 4 neighbours .6: ADD AL,[SI+BX] ADC AH,CH NEG BX JS .6 SHR AX,2 ; dividing by 4 MOV [SI],AL ; writing back the average INC SI ; go to the next pixel JNZ .8 CMP CL,5 ; after 40 iterations JNE .9 ; and before the last 5 iterations PUSHA ; insert some smaller blocks (3x2 pixel) DEC AX PUSH 320*55+181 ; scr pos of left breast PUSH 320*52+247 ; scr pos of right breast PUSH 320*118+232 ; scr pos of navel @@: POP DI MOV [DI+BX],AX STOSW MOV [DI+BX],AL STOSB INC DX JPO @B POPA .9: LOOP .7 MOV SI,26*14-16 ; number of bits MOV DL,14 ; coloums of the image .3: MOV CL,26 ; raws of the image .4: BT [BP-text+bits],SI ; the bit means a block colored with 0 or 255 SALC CBW MOV BX,7 ; drawing the bigblocks (8x7 pixel) .5: STOSW STOSW STOSW STOSW ADD DI,320-8 DEC BX JNZ .5 DEC SI ; counting the bits left LOOPNZ .4 ; repeat until bottom of scr or end of bits SUB DI,320*7*26+8 DEC DX ; go to next coloum JNZ .3 ADD DI,-7430H ; DI = 24+8*13+320*9 JPE .2 ; loop twice and we need the carry later print: MOV BL,254 ; color idx of RTX off caption MOV DL,13 ; cursor position for the 1st text PUSH CS POP ES MOV AH,13H MOV CL,7 ; writing 7 characters INT 10H ; VGA BIOS call, write string from ES:BP ADC BYTE [BP+5],CL ; correcting the text from off to on DEC CX ; we need one byte shorter 2nd text DEC BX ; color idx of RTX on caption MOV DL,34 ; cursor position for the 2nd text INT 10H ; VGA BIOS call, write string from ES:BP setpal: .1: IMUL DX,BX,6DH ; setting the color palette IMUL CX,BX,3FH ; from color black to brown IMUL AX,BX,30H CMP BL,105 JB .2 IMUL DX,BX,37H ; then from brown to yellowish body color IMUL CX,BX,50H IMUL AX,BX,5CH ADD DH,016H ADD CH,0F9H ADD AH,0EDH .2: MOV CL,AH ; DH/CH/CL->R/G/B MOV AX,1010H ; set only one color by the VGA BIOS INT 10H DEC BX ; BX is the color index JNZ .1 ; one by one from #253 to #1 DEC BX ; after the loop BX, CX, DH = 0 MOV CX,256*42+42 INT 10H ; set color #255: nearly gray DEC BX MOV DH,28 INT 10H ; set color #254: turquoise blue DEC BX MOV CL,0 INT 10H ; set color #253: nVidia green CBW ; AH = 0 INT 16H ; waiting for keypress RETN ; return to DOS prompt bits: file 'BITS4.BIN':0,44 ; bits of image text: DB 'RTX off' ; 1st text
[ back to the prod ]