Original von Three of Five
[...]
vllt sollten wir hier auch mal die fire.exe posten, ca 200zeilen asm code aber was da rauskommt is schon ziemlich nett
[...]
Ok, gesagt getan. Damit keine Missverständnisse aufkommen: ich habe sie nicht geschrieben und komm auch bei dem Quelltext nich hinterher (da muss ich wohl noch lange üben *seufz*)
die Kommentare ( ; ) sind übrigens auch ganz lustig

Brainfuck-Quellcode
- .MODEL SMALL
- .STACK 100h
- .DATA
- Seed DW 3749h
- Meldung DB 'E-Mail: BlueCobold@gmx.de',10,13,'HomePage: http://BlueCobold.18yo.de$'
- Screen DB 65000 DUP (?)
- .386
- .CODE
- ;--------------- GRAFIK-MODUS -------------------
- InitGraph PROC
- mov ax, 13h ; kürzer!
- int 10h
- push 0a000h ; das ist auch cool...
- pop es
- ret
- InitGraph ENDP
- ;--------------- RANDOM -------------------------
- Random PROC
- MOV AX, Seed ; Move the seed value into AX
- MOV DX, 8407H ; Move 8405H into DX
- MUL DX ; Put 8405H x Seed into DX:AX
- INC AX ; Increment AX
- MOV Seed, AX ; We have a new seed
- RET
- Random ENDP
- ;--------------- VIRTUELLEN SCREEN LÖSCHEN ----------------
- ClearPage PROC
- mov di, Offset Screen
- push es
- push ds
- pop es
- mov cx, 16250
- xor eax, eax
- rep stosd
- pop es
- ret
- ClearPage ENDP
- ;--------------- PALETTE ------------------------
- SetUpPalette PROC ;geht das nicht kürzer?
- mov si, Offset Screen ;geht bestimmt!
- mov cx, 64
- @pal:
- xor ax, ax
- mov al, 64
- sub al, cl
- mov [si], al
- mov [si+1], ah
- mov [si+2], ah
- mov [si+193], al
- mov [si+194], ah
- mov [si+386], al
- mov ah, 63
- mov al, ah
- mov [si+192], ah
- mov [si+384], ax
- mov [si+576], ax
- mov [si+578], ah
- add si, 3
- dec cx
- jnz @pal
- mov si, Offset Screen
- xor ax, ax
- mov dx, 3c8h
- out dx, al
- inc dx
- mov cx, 768
- rep outsb
- ret
- SetUpPalette ENDP
- ;------------- WAITRETRACE --------------------
- WaitRetrace PROC
- mov dx, 3dah
- @Bildaufbau:
- in al, dx
- test al, 8
- jnz @Bildaufbau
- @Retrace:
- in al, dx
- test al, 8
- jz @Retrace
- ret
- WaitRetrace ENDP
- ;------------ FUELLEN -------------------------
- Fuellen PROC
- mov si, 64003
- mov cx, 80
- @FuellenLoop:
- call Random
- and dx, 7
- jz @PixelSetzen
- dec dx
- jz @PixelSetzen
- dec dx
- jnz @NichtNull
- @PixelSetzen:
- mov al, 255
- mov ah, al
- mov dx, ax
- shl eax,16
- mov ax, dx
- mov [si+1], ax ; mit 32 Bit arbeiten!
- mov [si-3], eax
- mov [si-323], eax
- mov [si-319], ax
- mov [si+317], eax
- mov [si+321], ax
- @NichtNull:
- add si, 4
- dec cx
- jnz @FuellenLoop
- ret
- Fuellen ENDP
- ;--------------- VIRTUELLE PAGE KOPIEREN -----------------
- ShowPage PROC
- mov cx, 16000
- mov si, OFFSET Screen
- xor di, di
- rep movsd
- ret
- ShowPage ENDP
- ;--------------- Feuer - EFFEKT -----------------------
- DoFire PROC
- mov si, Offset Screen+640
- mov cx, 64640
- @Blur:
- xor bx, bx
- xor ax, ax
- mov bl, [si-1]
- add ax, bx
- mov bl, [si+1]
- add ax, bx
- mov bl, [si-320]
- add ax, bx
- mov bl, [si+320]
- add ax, bx
- mov bl, [si-319]
- add ax, bx
- mov bl, [si+319]
- add ax, bx
- mov bl, [si-321]
- add ax, bx
- mov bl, [si+321]
- add ax, bx
- shr ax, 3
- jz @skip
- dec ax
- jz @skip
- dec ax
- @skip:
- mov ds:[si-640], al
- inc si
- dec cx
- jnz @Blur
- ret
- DoFire ENDP
- ;--------------- HAUPTPROGRAMM -----------------------
- Start:
- push @data
- pop ds
- call InitGraph
- call ClearPage
- call SetUpPalette
- ;------------ BLUR ------------------------
- cli
- BlurLoop:
- call Fuellen
- call DoFire
- call WaitRetrace
- call ShowPage
- in al, 60h ;das mach ich kürzer
- cmp al, 1
- jnz BlurLoop
- sti
- ;------------------------------------------
- mov ax, 3h
- int 10h
- mov dx, Offset Meldung
- mov ah, 9
- int 21h
- mov ah, 4Ch
- int 21h
- END Start