Code archives/Graphics/Fire 2D (demo)

This code has been declared by its author to be Public Domain code.

Download source code

Fire 2D (demo) by Curtastic
(Posted 20 years ago)
Hi,
This is a realtime fire effect I came up with.

This code runs in blitz2D and blitz3D.

I am working on making this a BlitzMax library! Thanks to tonyg for taking the time to help. So this code is just temporary. Meant to be for entertainment purposes only. I wanted to see how unreadable I could possibly make it. I should win an award for best looking code ever.

.
;Created by Curtastic, 2006. This code is declared pulic domain.
Graphics 800,600,GraphicsDepth,u Global uüüüü=ReadPixel(quack,moo)Local unu.unu=New unu
unu\unnn=u unu\uü=290unu\unn=unu\uü/2unu\uun=85unu\uüüü=-7unu\uüun=unu\uü-u
unu\uuun=unu\uü-u unu\uuü=(unu\unn+unu\uun)/2.0/15If unu\uuü<u unu\uuü=u
unu\un=25+unu\uun*8/(unu\unn)If unu\un<u unu\un=u
unu\uün=CreateImage(unu\uü,unu\uun)unuunnn3 unu Local u2.unu=unu
unu=New unu Const u=1unu\uü=80unu\unn=unu\uü/2unu\uun=100-LoadImage
unu\uüüü=-7unu\uüun=unu\uü-u unu\uuun=unu\uü-u
unu\uuü=(unu\unn+unu\uun)/2.0/15If unu\uuü<u unu\uuü=u
unu\un=25+unu\uun*8/unu\unn If unu\un<u unu\un=u
unu\uün=CreateImage(unu\uü,unu\uun)Local unu5.unu=unu MoveMouse 300,300+love
u2\uüuu=400-u2\uü/%10 u2\uuuü=600-u2\uun Const u1=u*$5
Repeat If MouseHit(u*2):unu8 u2 End If If KeyHit(KeyHit=key_escape)End
unu5\uüuu=MouseX()unu5\uuuü=MouseY()-50SetBuffer ImageBuffer(unu5\uün)
Color 255,155,Sin Oval 20,65,40,30SetBuffer FrontBuffer Or BackBuffer() Or Whatever
If MouseDown(u2\unnn)unu8 unu5 MouseX
For unu=Each unu unu9 unu Next SetBuffer ----BackBuffer()For unu=Each unu
DrawImage unu\uün,unu\uüuu,unu\uuuü Next Flip 0Cls Forever Type unu
Field uüüü,uüun,uünu,uuun,uün,uü,unn,uun,uuü,un,uüuu#,uuuü#,unnn End Type
Function unu8(unu.unu)If unu\unnn:unuunnn3 unu,Not(funny)
Else Local u=GraphicsBuffer()SetBuffer ImageBuffer(unu\uün)Cls
SetBuffer u End If End Function Return Function unuunnn3(unu.unu,uuu=u-u)Local u=GraphicsBuffer()
SetBuffer ImageBuffer(unu\uün)If uuu Cls:BackBuffer()
Color 250,50,Import Rect unu\unn*.25,unu\uun-u,unu\unn*.75*2,u SetBuffer u
End Function End:Function unu9(unu.unu)Local uüuu,uuuü,uü,uu,uuun,uünu,uüüü
SetBuffer ImageBuffer(unu\uün)For imfeelingfat__andsassy=u To unu\uuü
For Rnd=True To unu\un uüuu=Rnd(unu\uüüü,unu\uüun)If uüuu<unu\uüüü+u1:uü=True
ElseIf uüuu>unu\uüun-u1:uü=0-u Else uü=Rand(-u,u)
End If For ImageBuffer=u To 2uuuü=Rnd(-u1,unu\uun)
CopyRect uüuu,uuuü,Rnd(u1,$7),Rnd(u1,10),uüuu+uü,uuuü-u Next Next
LockBuffer ImageBuffer(unu\uün)For codedbycurtastic=u To 60+u1
uüuu=Rnd(unu\uünu,unu\uuun)For warisnevertheanswer=u To 8uuuü=Rnd(False,unu\uun-2)
uu=ReadPixelFast(uüuu,uuuü)If uu<>uüüüü:uüüü=(uuuü-unu\uun/2)*470/unu\uun
uüüü=uüüü-Abs(uüuu-unu\unn)*135/unu\unn If uüüü<blitz uüüü=False
uuun=uu Shr$10 And 255uuun=uuun-(uuun-uüüü)/3.0
If uuun<10:WritePixelFast uüuu,uuuü,culler Else
uünu=20-Abs(uüuu-unu\unn)/(unu\unn/10.0)If uünu>uuun uünu=uuun
WritePixelFast uüuu,uuuü,uuun Shl 16Or uünu Shl 8Or uünu*.7End If
End If Next Next UnlockBuffer ImageBuffer(unu\uün)Next End Function

Comments

Devils Child
(Posted 20 years ago)
;Created by Curtastic, 2006. This code is declared pulic domain.
Graphics 800,600,GraphicsDepth,u Global uüüüü=ReadPixel(quack,moo)Local uûu.uûu=New uûu
uûu\uûûû=u uûu\uü=290uûu\uûû=uûu\uü/2uûu\uuû=85uûu\uüüü=-7uûu\uüuû=uûu\uü-u
uûu\uuuû=uûu\uü-u uûu\uuü=(uûu\uûû+uûu\uuû)/2.0/15If uûu\uuü<u uûu\uuü=u
uûu\uû=25+uûu\uuû*8/(uûu\uûû)If uûu\uû<u uûu\uû=u
uûu\uüû=CreateImage(uûu\uü,uûu\uuû)uûuuûûû3 uûu Local u2.uûu=uûu
uûu=New uûu Const u=1uûu\uü=80uûu\uûû=uûu\uü/2uûu\uuû=100-LoadImage
uûu\uüüü=-7uûu\uüuû=uûu\uü-u uûu\uuuû=uûu\uü-u
uûu\uuü=(uûu\uûû+uûu\uuû)/2.0/15If uûu\uuü<u uûu\uuü=u
uûu\uû=25+uûu\uuû*8/uûu\uûû If uûu\uû<u uûu\uû=u
uûu\uüû=CreateImage(uûu\uü,uûu\uuû)Local uûu5.uûu=uûu MoveMouse 300,300+love
u2\uüuu=400-u2\uü/%10 u2\uuuü=600-u2\uuû Const u1=u*$5
Repeat If MouseHit(u*2):uûu8 u2 End If If KeyHit(KeyHit=key_escape)End
uûu5\uüuu=MouseX()uûu5\uuuü=MouseY()-50SetBuffer ImageBuffer(uûu5\uüû)
Color 255,155,Sin Oval 20,65,40,30SetBuffer FrontBuffer Or BackBuffer() Or Whatever
If MouseDown(u2\uûûû)uûu8 uûu5 MouseX
For uûu=Each uûu uûu9 uûu Next SetBuffer ----BackBuffer()For uûu=Each uûu
DrawImage uûu\uüû,uûu\uüuu,uûu\uuuü Next Flip u1 Cls Forever Type uûu
Field uüüü,uüuû,uüûu,uuuû,uüû,uü,uûû,uuû,uuü,uû,uüuu#,uuuü#,uûûû End Type
Function uûu8(uûu.uûu)If uûu\uûûû:uûuuûûû3 uûu,Not(funny)
Else Local u=GraphicsBuffer()SetBuffer ImageBuffer(uûu\uüû)Cls
SetBuffer u End If End Function Return Function uûuuûûû3(uûu.uûu,uuu=u-u)Local u=GraphicsBuffer()
SetBuffer ImageBuffer(uûu\uüû)If uuu Cls:BackBuffer()
Color 250,50,Import Rect uûu\uûû*.25,uûu\uuû-u,uûu\uûû*.75*2,u SetBuffer u
End Function End:Function uûu9(uûu.uûu)Local uüuu,uuuü,uü,uu,uuuû,uüûu,uüüü
SetBuffer ImageBuffer(uûu\uüû)For imfeelingfat__andsassy=u To uûu\uuü
For Rnd=True To uûu\uû uüuu=Rnd(uûu\uüüü,uûu\uüuû)If uüuu<uûu\uüüü+u1:uü=True
ElseIf uüuu>uûu\uüuû-u1:uü=0-u Else uü=Rand(-u,u)
End If For ImageBuffer=u To 2uuuü=Rnd(-u1,uûu\uuû)
CopyRect uüuu,uuuü,Rnd(u1,$7),Rnd(u1,10),uüuu+uü,uuuü-u Next Next
LockBuffer ImageBuffer(uûu\uüû)For codedbycurtastic=u To 60+u1
uüuu=Rnd(uûu\uüûu,uûu\uuuû)For warisnevertheanswer=u To 8uuuü=Rnd(False,uûu\uuû-2)
uu=ReadPixelFast(uüuu,uuuü)If uu<>uüüüü:uüüü=(uuuü-uûu\uuû/2)*470/uûu\uuû
uüüü=uüüü-Abs(uüuu-uûu\uûû)*135/uûu\uûû If uüüü<blitz uüüü=False
uuuû=uu Shr$10 And 255uuuû=uuuû-(uuuû-uüüü)/3.0
If uuuû<10:WritePixelFast uüuu,uuuü,culler Else
uüûu=20-Abs(uüuu-uûu\uûû)/(uûu\uûû/10.0)If uüûu>uuuû uüûu=uuuû
WritePixelFast uüuu,uuuü,uuuû Shl 16Or uüûu Shl 8Or uüûu*.7End If
End If Next Next UnlockBuffer ImageBuffer(uûu\uüû)Next End Function


what the hell is this????
hell no. put this away!
this is a code-archive (for learning)

tonyg
(Posted 20 years ago)
Arrggghhhh... my eyes!!!

TomToad
(Posted 20 years ago)
It brings up a file requester asking to select a .bb file, then gives this for an error
_fuûu8

Trying to deliberately make unreadable code is worthless unless the code actually works.

Curtastic
(Posted 20 years ago)
Hi, this only runs in blitzbasic2d. Blitz3d doen't like the û symbols. I guess I'll replace them with n's or something.

Devils Child
(Posted 20 years ago)
you mean like that?
;Created by Curtastic, 2006. This code is declared pulic domain.
Graphics 800,600,GraphicsDepth,2 Global uhfahfahfahfa=ReadPixel(quack,moo)Local unnnu.unnnu=New unnnu
unnnu\unnnnnnnnn=u unnnu\uhfa=290unnnu\unnnnnn=unnnu\uhfa/2unnnu\uunnn=85unnnu\uhfahfahfa=-7unnnu\uhfaunnn=unnnu\uhfa-u
unnnu\uuunnn=unnnu\uhfa-u unnnu\uuhfa=(unnnu\unnnnnn+unnnu\uunnn)/2.0/15If unnnu\uuhfa<u unnnu\uuhfa=u
unnnu\unnn=25+unnnu\uunnn*8/(unnnu\unnnnnn)If unnnu\unnn<u unnnu\unnn=u
unnnu\uhfannn=CreateImage(unnnu\uhfa,unnnu\uunnn)unnnuunnnnnnnnn3 unnnu Local u2.unnnu=unnnu
unnnu=New unnnu Const u=1unnnu\uhfa=80unnnu\unnnnnn=unnnu\uhfa/2unnnu\uunnn=100-LoadImage
unnnu\uhfahfahfa=-7unnnu\uhfaunnn=unnnu\uhfa-u unnnu\uuunnn=unnnu\uhfa-u
unnnu\uuhfa=(unnnu\unnnnnn+unnnu\uunnn)/2.0/15If unnnu\uuhfa<u unnnu\uuhfa=u
unnnu\unnn=25+unnnu\uunnn*8/unnnu\unnnnnn If unnnu\unnn<u unnnu\unnn=u
unnnu\uhfannn=CreateImage(unnnu\uhfa,unnnu\uunnn)Local unnnu5.unnnu=unnnu MoveMouse 300,300+love
u2\uhfauu=400-u2\uhfa/%10 u2\uuuhfa=600-u2\uunnn Const u1=u*$5
Repeat If MouseHit(u*2):unnnu8 u2 End If If KeyHit(KeyHit=key_escape)End
unnnu5\uhfauu=MouseX()unnnu5\uuuhfa=MouseY()-50SetBuffer ImageBuffer(unnnu5\uhfannn)
Color 255,155,Sin Oval 20,65,40,30SetBuffer FrontBuffer Or BackBuffer() Or Whatever
If MouseDown(u2\unnnnnnnnn)unnnu8 unnnu5 MouseX
For unnnu=Each unnnu unnnu9 unnnu Next SetBuffer ----BackBuffer()For unnnu=Each unnnu
DrawImage unnnu\uhfannn,unnnu\uhfauu,unnnu\uuuhfa Next Flip u1 Cls Forever Type unnnu
Field uhfahfahfa,uhfaunnn,uhfannnu,uuunnn,uhfannn,uhfa,unnnnnn,uunnn,uuhfa,unnn,uhfauu#,uuuhfa#,unnnnnnnnn End Type
Function unnnu8(unnnu.unnnu)If unnnu\unnnnnnnnn:unnnuunnnnnnnnn3 unnnu,Not(funny)
Else Local u=GraphicsBuffer()SetBuffer ImageBuffer(unnnu\uhfannn)Cls
SetBuffer u End If End Function Return Function unnnuunnnnnnnnn3(unnnu.unnnu,uuu=u-u)Local u=GraphicsBuffer()
SetBuffer ImageBuffer(unnnu\uhfannn)If uuu Cls:BackBuffer()
Color 250,50,Import Rect unnnu\unnnnnn*.25,unnnu\uunnn-u,unnnu\unnnnnn*.75*2,u SetBuffer u
End Function End:Function unnnu9(unnnu.unnnu)Local uhfauu,uuuhfa,uhfa,uu,uuunnn,uhfannnu,uhfahfahfa
SetBuffer ImageBuffer(unnnu\uhfannn)For imfeelingfat__andsassy=u To unnnu\uuhfa
For Rnd=True To unnnu\unnn uhfauu=Rnd(unnnu\uhfahfahfa,unnnu\uhfaunnn)If uhfauu<unnnu\uhfahfahfa+u1:uhfa=True
ElseIf uhfauu>unnnu\uhfaunnn-u1:uhfa=0-u Else uhfa=Rand(-u,u)
End If For ImageBuffer=u To 2uuuhfa=Rnd(-u1,unnnu\uunnn)
CopyRect uhfauu,uuuhfa,Rnd(u1,$7),Rnd(u1,10),uhfauu+uhfa,uuuhfa-u Next Next
LockBuffer ImageBuffer(unnnu\uhfannn)For codedbycurtastic=u To 60+u1
uhfauu=Rnd(unnnu\uhfannnu,unnnu\uuunnn)For warisnevertheanswer=u To 8uuuhfa=Rnd(False,unnnu\uunnn-2)
uu=ReadPixelFast(uhfauu,uuuhfa)If uu<>uhfahfahfahfa:uhfahfahfa=(uuuhfa-unnnu\uunnn/2)*470/unnnu\uunnn
uhfahfahfa=uhfahfahfa-Abs(uhfauu-unnnu\unnnnnn)*135/unnnu\unnnnnn If uhfahfahfa<blitz uhfahfahfa=False
uuunnn=uu Shr$10 And 255uuunnn=uuunnn-(uuunnn-uhfahfahfa)/3.0
If uuunnn<10:WritePixelFast uhfauu,uuuhfa,culler Else
uhfannnu=20-Abs(uhfauu-unnnu\unnnnnn)/(unnnu\unnnnnn/10.0)If uhfannnu>uuunnn uhfannnu=uuunnn
WritePixelFast uhfauu,uuuhfa,uuunnn Shl 16Or uhfannnu Shl 8Or uhfannnu*.7End If
End If Next Next UnlockBuffer ImageBuffer(unnnu\uhfannn)Next End Function


well, this does work... but it still IS a mess. and i see forward to close this dump unless he makes something readable!

JBR
(Posted 20 years ago)
Nice effect.

Mr Snidesmin
(Posted 20 years ago)
Started unscrambling it. . . a little way to go yet though.

fortunately it's a short program so it's pretty easy to understand. . .

Graphics 800,600,0,2 

Global unknown1temphfa=ReadPixel(quack,unknown3)


Local Flame.Flame=New Flame

Flame\FlameClearType=1

Flame\width=290
Flame\unknown2temp=Flame\width/2
Flame\height=85
Flame\unknown1temp=-7
Flame\unknown3temp=Flame\width-u
Flame\colRGB=Flame\width-1 

Flame\loopCount1=(Flame\unknown2temp+Flame\height)/2.0/15

If Flame\loopCount1<1 Flame\loopCount1=1

Flame\loopCount2=25+Flame\height*8/(Flame\unknown2temp)

If Flame\loopCount2<1 Flame\loopCount2=1

Flame\Image=CreateImage(Flame\width,Flame\height)ClearFlameRect Flame 

Local u2.Flame=Flame
Flame=New Flame 

Const u=1
Flame\width=80

Flame\unknown2temp=Flame\width/2Flame\height=100
Flame\unknown1temp=-7
Flame\unknown3temp=Flame\width-u 
Flame\colRGB=Flame\width-u
Flame\loopCount1=(Flame\unknown2temp+Flame\height)/2.0/15

If Flame\loopCount1<u Flame\loopCount1=u
Flame\loopCount2=25+Flame\height*8/Flame\unknown2temp 

If Flame\loopCount2<u Flame\loopCount2=u
Flame\Image=CreateImage(Flame\width,Flame\height)

Local MouseFlame.Flame=Flame 
MoveMouse 300,300

u2\x=400-u2\width/%10 
u2\y=600-u2\height 

Const u1=u*$5

Repeat 
	If MouseHit(u*2) Then
		ClearFlame u2 
	End If 
	
	If KeyHit(KeyHit=key_escape) Then
		End
	End If
	
	MouseFlame\x=MouseX()
	MouseFlame\y=MouseY()-50
	
	SetBuffer ImageBuffer(MouseFlame\Image)
	Color 255,155,0 
	Oval 20,65,40,30
	
	If MouseDown(u2\FlameClearType) Then
		ClearFlame MouseFlame MouseX
	End If
	
	For Flame=Each Flame 
		UpdateFlame Flame 
	Next 
	
	SetBuffer BackBuffer()
	
	For Flame=Each Flame
		DrawImage Flame\Image,Flame\x,Flame\y 
	Next 
	
	Flip u1 
	Cls 
Forever 


Type Flame
	Field unknown1temp
	Field unknown2temp
	Field unknown3temp
	Field colRGB
	Field unknown5temp
		
	Field Image
	Field loopCount1
	Field loopCount2
	Field x#
	Field y#
	Field height
	Field width
	Field FlameClearType
End Type


Function ClearFlame(Flame.Flame)
	If Flame\FlameClearType<>0 Then
		ClearFlameRect Flame, True
	Else 
		Local buffer=GraphicsBuffer()
		SetBuffer ImageBuffer(Flame\Image)
		Cls
		SetBuffer buffer
	End If 
End Function 


Function ClearFlameRect(Flame.Flame, bCls=False)
	Local buffer=GraphicsBuffer()
	SetBuffer ImageBuffer(Flame\Image)
	
	If bCls Then
		Cls
	End If
	
	Color 250,50,0 
	Rect Flame\unknown2temp*.25, Flame\height-buffer, Flame\unknown2temp*.75*2, buffer
	SetBuffer buffer
End Function 


Function UpdateFlame(Flame.Flame)
	Local x,y, width, colRGBtmp, colRGB, unknown5temp, unknown1temp
	
	SetBuffer ImageBuffer(Flame\Image)
	
	For i=1 To Flame\loopCount1
		For i2=1 To  Flame\loopCount2 
			x=Rnd(Flame\unknown1temp, Flame\unknown3temp)
			If x<Flame\unknown1temp+u1: width=1
			ElseIf x>Flame\unknown3temp-u1: width=-1 
			Else width=Rand(-1, 1)
			End If 
			
			For i3=1 To 2
				y = Rnd(-5, Flame\height)
				CopyRect x, y, Rnd(5, 7), Rnd(5,10), x+width, y-1 
			Next 
		Next
	
		LockBuffer ImageBuffer(Flame\Image)
		For i2 = 1 To 60+5
			x=Rnd(Flame\unknown5temp, Flame\colRGB)
			For i3 = 1 To 8
				y=Rnd(0, Flame\height-2)
				colRGBtmp=ReadPixelFast(x,y)
				If colRGBtmp <> unknown1temphfa: unknown1temp=(y-Flame\height/2)*470/Flame\height
					
				unknown1temp=unknown1temp-Abs(x-Flame\unknown2temp)*135/Flame\unknown2temp 
				If unknown1temp<blitz unknown1temp=False
				
				colRGB = colRGBtmp Shr$10 And 255
				colRGB=colRGB-(colRGB-unknown1temp)/3.0
				
				If colRGB<10:WritePixelFast x,y,culler 
					
				Else
						unknown5temp=20-Abs(x-Flame\unknown2temp)/(Flame\unknown2temp/10.0)If unknown5temp>colRGB unknown5temp=colRGB
						WritePixelFast x,y,colRGB Shl 16Or unknown5temp Shl 8Or unknown5temp*.7End If
				End If 
			Next 
		Next 
		UnlockBuffer ImageBuffer(Flame\Image)
	Next 

End Function


Curtastic
(Posted 20 years ago)
lol good job Snidesmin!
grr I should have used Goto's to make it harder.

DjBigWorm
(Posted 20 years ago)
Curtastic,

That is pretty neat, great notion after all that is what the cpu sees just variable names lol:)

thelizardking
(Posted 20 years ago)
dude this is awsome. except for like the 1 million kilobytes of worthless symbols.

Fuller
(Posted 20 years ago)
As soon as I saw the code, I thought "SPAM!" But know I see that its a pretty cool effect and its pretty fast (atleast on my machine)

Jerome Squalor
(Posted 19 years ago)
AHHHHH!!! That's crazy!! Cool, but crazy...

Code Archives Forum