CONFIG RND

Top  Previous  Next

Action

This option will set the randomize configuration.

 

 

Syntax

CONFIG RND =  16|32

 

 

Remarks

By default rnd() is created using 16 bit multiplying and division. This limits the maximum number to a word. The ___Rseed variable is a word.

 

When you need to have a bigger random number you can use the CONFIG RND = 32 option.

When using 32 bit resolution, only division is used to limit the number with the specified number.

Using 32 bit the ___Rseed will be a DWORD and not a WORD.

 

 

See also

RND

 

 

Example

' Plot
' FT800 platform.
' Original code from http://gameduino2.proboards.com/thread/11/screen-plotting
 
' Comments by James Bowman:
' Sets up the whole screen as a framebuffer, in PALETTED mode, which should be good for the fractals.
' setpal() sets palette entry 'i' to a 32-bit ARGB color, and plot(x, y, i) sets a single pixel to index 'i'.
 
' Requires Bascom 2.0.7.8 or greater
 
$Regfile = "M328pdef.dat"
$Crystal = 8000000
$Baud = 19200
$HwStack = 80
$SwStack = 80
$FrameSize = 300
$NOTYPECHECK
 
Config ft800=spi , ftsave=0, ftdebug=0 , ftcs=portb.2, ftpd=portb.1
 
Config Base = 0
Config Submode = New
Config Spi = Hard, Interrupt = Off, Data_Order = Msb, Master = Yes, Polarity = Low, Phase = 0, Clockrate = 4, Noss = 1
SPSR = 1 ' Makes SPI run at 8Mhz instead of 4Mhz
 
 
Config RND = 32
 
$Include "FT800.inc"
$Include "FT800_Functions.inc"
 
Declare Sub setup
Declare Sub setpal (Byval i As Byte, Byval argb As Long)
Declare Sub plot (Byval x As Integer, Byval y As Integer, Byval i As Long)
 
dim dw as Dword
dim d1 as Dword
dim d2 as Dword
 
Spiinit
 
 
If FT800_Init() = 1 Then
  print "END"
  END   ' Initialise the FT800
end if
 
Setup
 
Do
  d1 = rnd(Ft_DispWidth-1)
  d2 = rnd(Ft_DispHeight-1)
  plot d1, d2, rnd(255)
Loop
 
 
 
END
 
'------------------------------------------------------------------------------------------------------------
Sub Setup
'------------------------------------------------------------------------------------------------------------
 
  Local i As Byte
 
  CmdMemset 0, 0, Ft_DispWidth * Ft_DispHeight
  ClearScreen
  BitmapLayout PALETTED, Ft_DispWidth , Ft_DispHeight
  BitmapSize NEAREST, BORDER, BORDER, Ft_DispWidth, Ft_DispHeight
  BitmapSource 0
  Begin_G BITMAPS
  Vertex2ii 0, 0, 0, 0
 
  UpdateScreen
 
  setpal 0, &H00000000
 
  For i = 1 to 255
    setpal i, rnd(16777216) or &Hff000000
  Next
End Sub ' Setup
 
'------------------------------------------------------------------------------------------------------------
Sub SetPal (Byval i As Byte, Byval argb As Long)
'------------------------------------------------------------------------------------------------------------
 
  Local Temp1 As Long
 
  Temp1 =  i * 4
  Temp1 = Temp1 + Ram_Pal
  Wr32  Temp1 , argb
 
End Sub ' SetPal
 
'------------------------------------------------------------------------------------------------------------
Sub Plot(Byval x As Integer, Byval y As Integer, Byval i As Long)
'------------------------------------------------------------------------------------------------------------
 
  Local Temp1 As Long
 
  If x < Ft_DispWidth AND y < Ft_DispHeight Then
 
     Temp1 = Ft_DispWidth * y
     Temp1 = Temp1 + x
     Wr8 Temp1, i
 
  End If
 
End Sub ' Plot