Will there be a manual?

BlitzMax Forums/BlitzMax Programming/Will there be a manual?

Now it´s nearly one year that the first beta versions of Blitzmax were available. Still I am missing tutorials of a "normal" quality.
All I have tried up to now failed... (too many mistakes, so no tut would have been better...)
Will there be light or does this go the same way I already know f.e. from Linux, where you have to find out things yourself?
After all the other products have tutorials I awaited one for Blitzmax too....
Mipooh

There will be an update of the docs at some stage. Best way to learn is from demo code and asking questions here.

Or experimenting yourself.

But yes, your general gist is correct: BlitzMax needs some serious attention to documentation, as the included one is not really acceptable.

And yes, too, one year is too long to wait for a real update to the docs.

(Yes, I know Mark is busy, but there isn't a single person at BRL that can do this? This is not a trivial unnecessary 'extra' that would be 'nice' to have: It is pretty much required in a professional software package to be taken seriously. One person, devoted to docs only, could write a really good one in less than a week...)

Russell

One person, devoted to docs only, could write a really good one in less than a week...)



True, also if the coomunity chipped in it could be done in a few days. All it would take would be for those fully capable with BlitzMax already to go through the command list and write out an example each. If everybody did this BRL wouldn't have to and everybody would get the Docs they want.

I think the issue is - blitzmax is not a good first programming language to teach yourself. That doesn't mean its not a great language to know, and the first one to want to learn - but it doesn't have much out there for teaching yourself. I think we maybe should chip in and make a wikibook that takes you from fundamentals to the production of a game, for someone with no prog. exp?

we already have the WIKI, isnt that as good as a manual yet?

Its a quite bad manuel if you have no internet at your de machine
A manual needs to be usable from the IDE itself not using other external things ... wiki are only usefull as fall back if everything else breaks

Some smaller wikis have a feature that lets you download the entire wiki as an archive package for offline reading (see http://senseis.xmp.net/?SLSnapshot for an example). Maybe if blitzwiki had this feature and the downloadable version could be integrated into the IDE, it would be a start in filling the role of documentation. Of course, ideally Blitz Research would provide the initial draft of content, but even if that doesn't happen, this might still be a good option.

Maybe if blitzwiki had this feature and the downloadable version could be integrated into the IDE

I added a link to BlitzWiki in BlitzMax/doc/index.html
Not the same thing as you wanted, but close enough. :)

I think the blitzmax inbuilt command reference was pretty good - every piece of code was one click away from an example application.

Will you've got to be kidding me. Thats completely untrue. Most of the commands in the index dont show good syntax examples at all.. 'Matter of fact it looks like their examples are fit only for someone who knows bmax to begin with.. Period!

There were only a small amount of functions that were explained. Where as MOST of the functions, commands are just showed in a raw form that looks alien to their actual usage. For instance you dont have to put :Tblah at the end of everything, sounds are not Tsounds, and the stuff they put in the arguments (in the parenthesis) are not explained at all. Not even are they told that they are required or not. and I paid $80.00 for this? BUT ITS OK its worth the $80.00 - only because I'm connected to the internet to download the latest tutorials and ask questions from a wonderful community. But if there was no internet or no community I would not have gotten past "hello world" for weeks and would have simply given up.

Honestly I've only used the manual like 2% of the time while learning bmax. The real reason why I have learned enough and continue to learn bmax at a pleasing rate is because I've used OOP prior, because of Wave's tutorials, Warpy's helpful enlightenment, and because of the community.

One person, devoted to docs only, could write a really good one in less than a week...)
I think you're vastly underestimating the work that goes into writing documentation for anything as complex as BlitzMAX, never mind actually writting good documentation.

Most people I've talked to seem to agree that Wave, BlitzMAX tutorial pretty much covers what needs to be covered.

Maybe instead of just criticizing you could offer up some constructive problems you're having specificly, or come up with suggestions as to how one could improve on the documentation.

Most of the commands in the index dont show good syntax examples at all..
Examples, examples, examples. They can't fix it if they don't know what's broken, and "You've got to be kidding me" is not helping. I too find the examples and the command reference incredibly helpful in most cases. Then again, I'm used to MSDN, so that goes without saying.

For instance you dont have to put :Tblah at the end of everything,
No. But you should. You don't have to indent your code either, or write it on seperate lines.

sounds are not Tsounds,
Yes they are.

Not even are they told that they are required or not.
Yes they are. All parameters that don't have default values are required. A default value is identified by a preceeding "=" sign in the parameter list, followed by the value in question.

Mikkel,

TSounds are Sounds (actually) but that was not clear to me at all in the documentation, further resting my case. Again, let me express that the documentation only works for experienced programmers! (like you)

They do not explain the arguments, they do not explain the concept behind the T and the colon and what its all about! They do not explain which arguments can be left null or how the commands are used. They just throw it out there and make a demo that doesnt reflect the raw format in the documentation which makes things FURTHER confusing.

Especially when I looked at the example that just said Playsound (sound,false) and when comparing that to the syntax they put in the manual which reads something like TSound = Playsound (sound:Tsound,false) --- OR SOMETHING like that.. Either way, the exact letter-for-letter with the exception of the variable / args syntax in the manual compared to its real usage in a BLitzMax program are hardly the same.

Here's a short, and simple statement that backs my earlier one and further implies that You've GOT to be kidding me! : Please further explain the arguments, and please use a full example of how the commands would be used in a program!!!

Maybe the one-liners with raw syntax formats WORKED for you but I assure you they will not work for the majority. It's not really fair to imply that the docs are perfectly fine because they "dont need fixed" when only a minority can comprehend them.

Furthermore, I have solely learned how to make a spline editor and my own shmup in process by hanging out in the beginner's area and talking with the experts that help everyone out. Wave's tutorials actually got me to understand the basics of bmax very well. I think Wave's beginner's guide should be put straight into the documentation.

I'm with Matty McFarlandy on this. The docs no matter what people say are not newbie friendly.

I don't know if this is considered a Troll Post. :/

Honestly what would be great for BlitzMax (especially in the demo version) is to have an opening window when the user firsts turns on the IDE that says "Welcome to BlitzMax!!" and let it show the user Wave's tutorial.. or atleast put a link to his tutorial in the Welcome-dialogue-box (and make the URL of this link be part of the package folks!) and that would probably increase Bmax sales by atleast 10% if not more.

Otherwise people can download this BMAx demo and think to themselves "no tutorial?" and think "I'll have to get on the forums" and then think "but wait maybe there's a better supported program?" and end up skipping the beauty of BMax because of its tutorial-free, short-hand documentation first-impression.

It can take a lot more courage, or even resources (not everyone has the net) for a person to hop on the forums and ask for help or search for tutorials and ultimatley kill the program's appeal.

Again a quick fix for this problem (seriously think about this) would be to add Wave's Beginner's Guide right into the blitzmax manual (and make the person be aware of it's existance when they first run the program too)

Of course, only if Wave was willing to let it be a part of BRL's official applet.

Examples, examples, examples
Ok FlameDuck I have provided below a list of commands that are currently under explained for newbies or are lacking adequate examples. With each command I have also provided the link to the command in the docs. The list does not include type methods as non of these are explained at all.
Abs|/mod/brl.mod/blitz.mod/doc/commands.html#Abs
Abstract|/mod/brl.mod/blitz.mod/doc/commands.html#Abstract
ACos:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#ACos
AllocChannel:TChannel()|/mod/brl.mod/audio.mod/doc/commands.html#AllocChannel
And|/mod/brl.mod/blitz.mod/doc/commands.html#And
AppArgs$[]|/mod/brl.mod/blitz.mod/doc/commands.html#AppArgs
AppDir$|/mod/brl.mod/blitz.mod/doc/commands.html#AppDir
AppFile$|/mod/brl.mod/blitz.mod/doc/commands.html#AppFile
AppTitle$|/mod/brl.mod/blitz.mod/doc/commands.html#AppTitle
Asc|/mod/brl.mod/blitz.mod/doc/commands.html#Asc
ASin:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#ASin
Assert|/mod/brl.mod/blitz.mod/doc/commands.html#Assert
ATan:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#ATan
ATan2:Double(  y:Double,x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#ATan2
AutoImageFlags(  flags  )|/mod/brl.mod/max2d.mod/doc/commands.html#AutoImageFlags
AutoMidHandle(  enable  )|/mod/brl.mod/max2d.mod/doc/commands.html#AutoMidHandle
BankBuf:Byte Ptr(  bank:TBank  )|/mod/brl.mod/bank.mod/doc/commands.html#BankBuf
BankCapacity(  bank:TBank  )|/mod/brl.mod/bank.mod/doc/commands.html#BankCapacity
BankSize(  bank:TBank  )|/mod/brl.mod/bank.mod/doc/commands.html#BankSize
bglAdjustTexSize(  width Var,height Var  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglAdjustTexSize
bglCreateContext(  width,height,depth=16,hertz=0,flags=BGL_BACKBUFFER|BGL_DEPTHBUFFER  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglCreateContext
bglDeleteContext(  context=0  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglDeleteContext
bglDisplayModes(  buf:Int Ptr,size  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglDisplayModes
bglDrawText(  text$,x,y  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglDrawText
bglFixedFontBitmaps()|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglFixedFontBitmaps
bglSetMouseVisible(  visible  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglSetMouseVisible
bglSetSwapInterval(  interval  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglSetSwapInterval
bglSwapBuffers()|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglSwapBuffers
bglTexFromPixmap(  pixmap:TPixmap,mipmap=True  )|/mod/brl.mod/blitzgl.mod/doc/commands.html#bglTexFromPixmap
BigEndianStream:TStream(  stream:TStream  )|/mod/brl.mod/endianstream.mod/doc/commands.html#BigEndianStream
Bin$(  val  )|/mod/brl.mod/retro.mod/doc/commands.html#Bin
BindSocket(  socket:TSocket,localPort  )|/mod/brl.mod/socket.mod/doc/commands.html#BindSocket
Byte|/mod/brl.mod/blitz.mod/doc/commands.html#Byte
Case|/mod/brl.mod/blitz.mod/doc/commands.html#Case
CasedFileName$( path$ )|/mod/brl.mod/stream.mod/doc/commands.html#CasedFileName
Catch|/mod/brl.mod/blitz.mod/doc/commands.html#Catch
Ceil:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Ceil
ChangeDir(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#ChangeDir
ChannelPlaying(  channel:TChannel  )|/mod/brl.mod/audio.mod/doc/commands.html#ChannelPlaying
Chr|/mod/brl.mod/blitz.mod/doc/commands.html#Chr
ClearList(  list:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ClearList
CloseDir(  dir  )|/mod/brl.mod/filesystem.mod/doc/commands.html#CloseDir
CloseFile(  stream:TStream  )|/mod/brl.mod/filesystem.mod/doc/commands.html#CloseFile
CloseGNetHost(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#CloseGNetHost
CloseGNetObject(  obj:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#CloseGNetObject
CloseGNetPeer(  peer:TGNetPeer  )|/mod/brl.mod/gnet.mod/doc/commands.html#CloseGNetPeer
CloseSocket(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#CloseSocket
CloseStream(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#CloseStream
Cls()|/mod/brl.mod/max2d.mod/doc/commands.html#Cls
CollideImage:Object[]( image:TImage,x,y,frame,collidemask%,writemask%,id:Object=Null )|/mod/brl.mod/max2d.mod/doc/commands.html#CollideImage
CollideRect:Object[]( x,y,w,h,collidemask%,writemask%,id:Object=Null )|/mod/brl.mod/max2d.mod/doc/commands.html#CollideRect
compress(  dest:Byte Ptr,dest_len Var,source:Byte Ptr,source_len  )|/mod/pub.mod/zlib.mod/doc/commands.html#compress
compress2(  dest:Byte Ptr,dest_len Var,source:Byte Ptr,source_len,level  )|/mod/pub.mod/zlib.mod/doc/commands.html#compress2
Confirm(  text$,serious=False  )|/mod/brl.mod/system.mod/doc/commands.html#Confirm
ConnectSocket(  socket:TSocket,remoteIp,remotePort  )|/mod/brl.mod/socket.mod/doc/commands.html#ConnectSocket
Const|/mod/brl.mod/blitz.mod/doc/commands.html#Const
Continue|/mod/brl.mod/blitz.mod/doc/commands.html#Continue
ConvertPixmap:TPixmap(  pixmap:TPixmap,format  )|/mod/brl.mod/pixmap.mod/doc/commands.html#ConvertPixmap
CopyBank(  src_bank:TBank,src_offset,dst_bank:TBank,dst_offset,count  )|/mod/brl.mod/bank.mod/doc/commands.html#CopyBank
CopyBytes(  fromStream:TStream,toStream:TStream,count,bufSize=4096  )|/mod/brl.mod/stream.mod/doc/commands.html#CopyBytes
CopyPixmap:TPixmap(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#CopyPixmap
CopyStream(  fromStream:TStream,toStream:TStream,bufSize=4096  )|/mod/brl.mod/stream.mod/doc/commands.html#CopyStream
Cos:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Cos
Cosh:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Cosh
CountGraphicsModes()|/mod/brl.mod/max2d.mod/doc/commands.html#CountGraphicsModes
CountList(  list:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#CountList
CreateAudioSample:TAudioSample(  length,hertz,format  )|/mod/brl.mod/audiosample.mod/doc/commands.html#CreateAudioSample
CreateBank:TBank(  size=0  )|/mod/brl.mod/bank.mod/doc/commands.html#CreateBank
CreateBankStream:TBankStream(  bank:TBank  )|/mod/brl.mod/bankstream.mod/doc/commands.html#CreateBankStream
CreateDir(  path$,recurse=False  )|/mod/brl.mod/filesystem.mod/doc/commands.html#CreateDir
CreateFile(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#CreateFile
CreateGNetHost:TGNetHost()|/mod/brl.mod/gnet.mod/doc/commands.html#CreateGNetHost
CreateGNetMessage:TGNetObject(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#CreateGNetMessage
CreateGNetObject:TGNetObject(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#CreateGNetObject
CreateImage:TImage(  width,height,frames=1,flags=-1  )|/mod/brl.mod/max2d.mod/doc/commands.html#CreateImage
CreateList:TList()|/mod/brl.mod/linkedlist.mod/doc/commands.html#CreateList
CreatePixmap:TPixmap(  width,height,format,align_bytes=4  )|/mod/brl.mod/pixmap.mod/doc/commands.html#CreatePixmap
CreateRamStream:TRamStream(  ram:Byte Ptr,size,readable,writeable  )|/mod/brl.mod/ramstream.mod/doc/commands.html#CreateRamStream
CreateSocketStream:TSocketStream(  socket:TSocket,autoClose=True  )|/mod/brl.mod/socketstream.mod/doc/commands.html#CreateSocketStream
CreateStaticAudioSample:TAudioSample(  samples:Byte Ptr,length,hertz,format  )|/mod/brl.mod/audiosample.mod/doc/commands.html#CreateStaticAudioSample
CreateStaticBank:TBank(  buf:Byte Ptr,size  )|/mod/brl.mod/bank.mod/doc/commands.html#CreateStaticBank
CreateStaticPixmap:TPixmap(  pixels:Byte Ptr,width,height,pitch,format  )|/mod/brl.mod/pixmap.mod/doc/commands.html#CreateStaticPixmap
CreateTCPSocket:TSocket()|/mod/brl.mod/socket.mod/doc/commands.html#CreateTCPSocket
CreateTimer:TSyncTimer(  hertz#  )|/mod/brl.mod/system.mod/doc/commands.html#CreateTimer
CreateUDPSocket:TSocket()|/mod/brl.mod/socket.mod/doc/commands.html#CreateUDPSocket
CueSound:TChannel(  sound:TSound,channel:TChannel=Null  )|/mod/brl.mod/audio.mod/doc/commands.html#CueSound
CurrentDate$()|/mod/brl.mod/system.mod/doc/commands.html#CurrentDate
CurrentDir$()|/mod/brl.mod/filesystem.mod/doc/commands.html#CurrentDir
CurrentTime$()|/mod/brl.mod/system.mod/doc/commands.html#CurrentTime
D3D7Max2DDriver:TD3D7Max2DDriver()|/mod/brl.mod/d3d7max2d.mod/doc/commands.html#D3D7Max2DDriver
DebugLog(  message$  )|/mod/brl.mod/blitz.mod/doc/commands.html#DebugLog
DebugStop()|/mod/brl.mod/blitz.mod/doc/commands.html#DebugStop
Default|/mod/brl.mod/blitz.mod/doc/commands.html#Default
DefData|/mod/brl.mod/blitz.mod/doc/commands.html#DefData
Delay(  millis  )|/mod/brl.mod/system.mod/doc/commands.html#Delay
Delete|/mod/brl.mod/blitz.mod/doc/commands.html#Delete
DeleteDir(  path$,recurse=False  )|/mod/brl.mod/filesystem.mod/doc/commands.html#DeleteDir
DeleteFile(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#DeleteFile
DottedIP$(  ip  )|/mod/brl.mod/socket.mod/doc/commands.html#DottedIP
Double|/mod/brl.mod/blitz.mod/doc/commands.html#Double
DrawImage(  image:TImage,x#,y#,frame=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawImage
DrawImageRect(  image:TImage,x#,y#,w#,h#,frame=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawImageRect
DrawLine(  x#,y#,x2#,y2#,draw_last_pixel=True  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawLine
DrawOval(  x#,y#,width#,height#  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawOval
DrawPixmap(  pixmap:TPixmap,x,y  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawPixmap
DrawPoly(  xy#[]  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawPoly
DrawRect(  x#,y#,width#,height#  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawRect
DrawText(  t$,x#,y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#DrawText
EachIn|/mod/brl.mod/blitz.mod/doc/commands.html#EachIn
Else|/mod/brl.mod/blitz.mod/doc/commands.html#Else
ElseIf|/mod/brl.mod/blitz.mod/doc/commands.html#ElseIf
End|/mod/brl.mod/blitz.mod/doc/commands.html#End
EndExtern|/mod/brl.mod/blitz.mod/doc/commands.html#EndExtern
EndFunction|/mod/brl.mod/blitz.mod/doc/commands.html#EndFunction
EndGraphics()|/mod/brl.mod/max2d.mod/doc/commands.html#EndGraphics
EndIf|/mod/brl.mod/blitz.mod/doc/commands.html#EndIf
EndMethod|/mod/brl.mod/blitz.mod/doc/commands.html#EndMethod
EndRem|/mod/brl.mod/blitz.mod/doc/commands.html#EndRem
EndSelect|/mod/brl.mod/blitz.mod/doc/commands.html#EndSelect
EndTry|/mod/brl.mod/blitz.mod/doc/commands.html#EndTry
EndType|/mod/brl.mod/blitz.mod/doc/commands.html#EndType
Eof(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#Eof
Exit|/mod/brl.mod/blitz.mod/doc/commands.html#Exit
Exp:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Exp
Extends|/mod/brl.mod/blitz.mod/doc/commands.html#Extends
Extern|/mod/brl.mod/blitz.mod/doc/commands.html#Extern
ExtractDir$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#ExtractDir
ExtractExt$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#ExtractExt
False|/mod/brl.mod/blitz.mod/doc/commands.html#False
Field|/mod/brl.mod/blitz.mod/doc/commands.html#Field
FileMode(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#FileMode
FileSize(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#FileSize
FileTime(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#FileTime
FileType(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#FileType
Final|/mod/brl.mod/blitz.mod/doc/commands.html#Final
Flip()|/mod/brl.mod/max2d.mod/doc/commands.html#Flip
Float|/mod/brl.mod/blitz.mod/doc/commands.html#Float
Floor:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Floor
FlushKeys()|/mod/brl.mod/system.mod/doc/commands.html#FlushKeys
FlushMem|/mod/brl.mod/blitz.mod/doc/commands.html#FlushMem
FlushStream(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#FlushStream
For|/mod/brl.mod/blitz.mod/doc/commands.html#For
Forever|/mod/brl.mod/blitz.mod/doc/commands.html#Forever
Framework|/mod/brl.mod/blitz.mod/doc/commands.html#Framework
Function|/mod/brl.mod/blitz.mod/doc/commands.html#Function
GCMalloc:Byte Ptr(  size  )|/mod/brl.mod/blitz.mod/doc/commands.html#GCMalloc
GetAlpha#()|/mod/brl.mod/max2d.mod/doc/commands.html#GetAlpha
GetBlend()|/mod/brl.mod/max2d.mod/doc/commands.html#GetBlend
GetChar()|/mod/brl.mod/system.mod/doc/commands.html#GetChar
GetClsColor(  red Var,green Var,blue Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetClsColor
GetColor(  red Var,green Var,blue Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetColor
GetGNetFloat#(  obj:TGNetObject,index  )|/mod/brl.mod/gnet.mod/doc/commands.html#GetGNetFloat
GetGNetInt(  obj:TGNetObject,index  )|/mod/brl.mod/gnet.mod/doc/commands.html#GetGNetInt
GetGNetString$(  obj:TGNetObject,index  )|/mod/brl.mod/gnet.mod/doc/commands.html#GetGNetString
GetGNetTarget:Object(  obj:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#GetGNetTarget
GetGraphics(  width Var,height Var,depth Var,hertz Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetGraphics
GetGraphicsMode(  index,width Var,height Var,depth Var,hertz Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetGraphicsMode
GetHandle(  x# Var,y# Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetHandle
GetImageFont:TImageFont()|/mod/brl.mod/max2d.mod/doc/commands.html#GetImageFont
GetLineWidth#()|/mod/brl.mod/max2d.mod/doc/commands.html#GetLineWidth
GetMaskColor(  red Var,green Var,blue Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetMaskColor
GetOrigin(  x# Var,y# Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetOrigin
GetRotation#()|/mod/brl.mod/max2d.mod/doc/commands.html#GetRotation
GetScale(  scale_x# Var,scale_y# Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetScale
GetViewport(  x Var,y Var,width Var,height Var  )|/mod/brl.mod/max2d.mod/doc/commands.html#GetViewport
GLMax2DDriver:TGLMax2DDriver()|/mod/brl.mod/glmax2d.mod/doc/commands.html#GLMax2DDriver
Global|/mod/brl.mod/blitz.mod/doc/commands.html#Global
GNetAccept:TGNetPeer(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetAccept
GNetConnect:TGNetPeer(  host:TGNetHost,address$,port  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetConnect
GNetListen(  host:TGNetHost,port  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetListen
GNetMessageObject:TGNetObject(  msg:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetMessageObject
GNetMessages:TList(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetMessages
GNetObjectLocal(  obj:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetObjectLocal
GNetObjectRemote(  obj:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetObjectRemote
GNetObjects:TList(  host:TGNetHost,state=GNET_ALL  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetObjects
GNetObjectState(  obj:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetObjectState
GNetPeers:TList(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetPeers
GNetPeerTCPSocket:TSocket(  peer:TGNetPeer  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetPeerTCPSocket
GNetPeerUDPSocket:TSocket(  peer:TGNetPeer  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetPeerUDPSocket
GNetSync(  host:TGNetHost  )|/mod/brl.mod/gnet.mod/doc/commands.html#GNetSync
GNetTotalBytesIn()|/mod/brl.mod/gnet.mod/doc/commands.html#GNetTotalBytesIn
GNetTotalBytesOut()|/mod/brl.mod/gnet.mod/doc/commands.html#GNetTotalBytesOut
Goto|/mod/brl.mod/blitz.mod/doc/commands.html#Goto
GrabImage(  image:TImage,x,y,frame=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#GrabImage
GrabPixmap:TPixmap(  x,y,width,height  )|/mod/brl.mod/max2d.mod/doc/commands.html#GrabPixmap
Graphics(  width,height,depth=16,hertz=60  )|/mod/brl.mod/max2d.mod/doc/commands.html#Graphics
GraphicsHeight()|/mod/brl.mod/max2d.mod/doc/commands.html#GraphicsHeight
GraphicsModeExists(  width,height,depth=0,hertz=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#GraphicsModeExists
GraphicsWidth()|/mod/brl.mod/max2d.mod/doc/commands.html#GraphicsWidth
Hex$(  val  )|/mod/brl.mod/retro.mod/doc/commands.html#Hex
HideMouse()|/mod/brl.mod/max2d.mod/doc/commands.html#HideMouse
HostIp(  HostName$,index=0  )|/mod/brl.mod/socket.mod/doc/commands.html#HostIp
HostIps:Int[](  HostName$  )|/mod/brl.mod/socket.mod/doc/commands.html#HostIps
HostName$(  HostIp  )|/mod/brl.mod/socket.mod/doc/commands.html#HostName
If|/mod/brl.mod/blitz.mod/doc/commands.html#If
ImageHeight(  image:TImage  )|/mod/brl.mod/max2d.mod/doc/commands.html#ImageHeight
ImagesCollide( image1:TImage,x1,y1,frame1,image2:TImage,x2,y2,frame2 )|/mod/brl.mod/max2d.mod/doc/commands.html#ImagesCollide
ImagesCollide2( image1:TImage,x1,y1,frame1,rot1#,scalex1#,scaley1#,image2:TImage,x2,y2,frame2,rot2#,scalex2#,scaley2# )|/mod/brl.mod/max2d.mod/doc/commands.html#ImagesCollide2
ImageWidth(  image:TImage  )|/mod/brl.mod/max2d.mod/doc/commands.html#ImageWidth
Import|/mod/brl.mod/blitz.mod/doc/commands.html#Import
Incbin|/mod/brl.mod/blitz.mod/doc/commands.html#Incbin
IncbinLen|/mod/brl.mod/blitz.mod/doc/commands.html#IncbinLen
IncbinPtr|/mod/brl.mod/blitz.mod/doc/commands.html#IncbinPtr
Include|/mod/brl.mod/blitz.mod/doc/commands.html#Include
Input$(  prompt$=">"  )|/mod/brl.mod/standardio.mod/doc/commands.html#Input
Instr(  str$,sub$,start=1  )|/mod/brl.mod/retro.mod/doc/commands.html#Instr
Int|/mod/brl.mod/blitz.mod/doc/commands.html#Int
JoyAxisCaps( port )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyAxisCaps
JoyButtonCaps( port )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyButtonCaps
JoyCount()|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyCount
JoyDown(  button,port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyDown
JoyHat#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyHat
JoyName$( port )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyName
JoyPitch#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyPitch
JoyR#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyR
JoyRoll#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyRoll
JoyU#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyU
JoyV#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyV
JoyWheel#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyWheel
JoyX#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyX
JoyY#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyY
JoyYaw#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyYaw
JoyZ#(  port=0  )|/mod/pub.mod/freejoy.mod/doc/commands.html#JoyZ
KeyDown(  key  )|/mod/brl.mod/system.mod/doc/commands.html#KeyDown
KeyHit(  key  )|/mod/brl.mod/system.mod/doc/commands.html#KeyHit
LaunchDir$|/mod/brl.mod/blitz.mod/doc/commands.html#LaunchDir
Left$(  str$,n  )|/mod/brl.mod/retro.mod/doc/commands.html#Left
Len|/mod/brl.mod/blitz.mod/doc/commands.html#Len
ListAddFirst:TLink(  list:TList,value:Object  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListAddFirst
ListAddLast:TLink(  list:TList,value:Object  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListAddLast
ListContains(  list:TList,value:Object  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListContains
ListFindLink:TLink(  list:TList,value:Object  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListFindLink
ListFromArray:TList(  arr:Object[]  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListFromArray
ListIsEmpty(  list:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListIsEmpty
ListRemove(  list:TList,value:Object  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListRemove
ListToArray:Object[](  list:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ListToArray
LittleEndianStream:TStream(  stream:TStream  )|/mod/brl.mod/endianstream.mod/doc/commands.html#LittleEndianStream
LoadAnimImage:TImage(  url:Object,cell_width,cell_height,first_cell,cell_count,flags=-1  )|/mod/brl.mod/max2d.mod/doc/commands.html#LoadAnimImage
LoadAudioSample:TAudioSample(  url:Object  )|/mod/brl.mod/audiosample.mod/doc/commands.html#LoadAudioSample
LoadBank:TBank(  url:Object  )|/mod/brl.mod/bank.mod/doc/commands.html#LoadBank
LoadByteArray:Byte[](  url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#LoadByteArray
LoadDir$[](  dir$,skip_dots=True  )|/mod/brl.mod/filesystem.mod/doc/commands.html#LoadDir
LoadImage:TImage(  url:Object,flags=-1  )|/mod/brl.mod/max2d.mod/doc/commands.html#LoadImage
LoadImageFont:TImageFont(  url:Object,size,style=SMOOTHFONT  )|/mod/brl.mod/max2d.mod/doc/commands.html#LoadImageFont
LoadPixmap:TPixmap(  url:Object  )|/mod/brl.mod/pixmap.mod/doc/commands.html#LoadPixmap
LoadPixmapPNG:TPixmap(  url:Object  )|/mod/brl.mod/pngloader.mod/doc/commands.html#LoadPixmapPNG
LoadSound:TSound(  url:Object,loop_flag=False  )|/mod/brl.mod/audio.mod/doc/commands.html#LoadSound
LoadString$(  url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#LoadString
Local|/mod/brl.mod/blitz.mod/doc/commands.html#Local
LockImage:TPixmap(  image:TImage,frame=0,read_lock=True,write_lock=True  )|/mod/brl.mod/max2d.mod/doc/commands.html#LockImage
Log:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Log
Log10:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Log10
Long|/mod/brl.mod/blitz.mod/doc/commands.html#Long
LongBin$(  val:Long  )|/mod/brl.mod/retro.mod/doc/commands.html#LongBin
LongHex$(  val:Long  )|/mod/brl.mod/retro.mod/doc/commands.html#LongHex
Lower$(  str$  )|/mod/brl.mod/retro.mod/doc/commands.html#Lower
LSet$(  str$,n  )|/mod/brl.mod/retro.mod/doc/commands.html#LSet
MaskPixmap:TPixmap(  pixmap:TPixmap,mask_red,mask_green,mask_blue  )|/mod/brl.mod/pixmap.mod/doc/commands.html#MaskPixmap
Max|/mod/brl.mod/blitz.mod/doc/commands.html#Max
MemAlloc:Byte Ptr(  size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemAlloc
MemAlloced()|/mod/brl.mod/blitz.mod/doc/commands.html#MemAlloced
MemClear(  mem:Byte Ptr,size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemClear
MemCopy(  dst:Byte Ptr,src:Byte Ptr,size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemCopy
MemExtend:Byte Ptr(  mem:Byte Ptr,size,new_size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemExtend
MemFree(  mem:Byte Ptr,size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemFree
MemMove(  dst:Byte Ptr,src:Byte Ptr,size  )|/mod/brl.mod/blitz.mod/doc/commands.html#MemMove
MemUsage()|/mod/brl.mod/blitz.mod/doc/commands.html#MemUsage
Method|/mod/brl.mod/blitz.mod/doc/commands.html#Method
Mid$(  str$,pos,size=-1  )|/mod/brl.mod/retro.mod/doc/commands.html#Mid
MidHandleImage(  image:TImage  )|/mod/brl.mod/max2d.mod/doc/commands.html#MidHandleImage
MilliSecs()|/mod/brl.mod/system.mod/doc/commands.html#MilliSecs
Min|/mod/brl.mod/blitz.mod/doc/commands.html#Min
Mod|/mod/brl.mod/blitz.mod/doc/commands.html#Mod
Module|/mod/brl.mod/blitz.mod/doc/commands.html#Module
ModuleInfo|/mod/brl.mod/blitz.mod/doc/commands.html#ModuleInfo
MouseDown(  button  )|/mod/brl.mod/system.mod/doc/commands.html#MouseDown
MouseHit(  button  )|/mod/brl.mod/system.mod/doc/commands.html#MouseHit
MouseX()|/mod/brl.mod/system.mod/doc/commands.html#MouseX
MouseY()|/mod/brl.mod/system.mod/doc/commands.html#MouseY
MouseZ()|/mod/brl.mod/system.mod/doc/commands.html#MouseZ
MoveMouse( x,y )|/mod/brl.mod/system.mod/doc/commands.html#MoveMouse
New|/mod/brl.mod/blitz.mod/doc/commands.html#New
Next|/mod/brl.mod/blitz.mod/doc/commands.html#Next
NextFile$(  dir  )|/mod/brl.mod/filesystem.mod/doc/commands.html#NextFile
Not|/mod/brl.mod/blitz.mod/doc/commands.html#Not
Notify(  text$,serious=False  )|/mod/brl.mod/system.mod/doc/commands.html#Notify
Null|/mod/brl.mod/blitz.mod/doc/commands.html#Null
Object|/mod/brl.mod/blitz.mod/doc/commands.html#Object
OnEnd(  fun()  )|/mod/brl.mod/blitz.mod/doc/commands.html#OnEnd
OpenFile:TStream(  url:Object,readable=True,writeable=True  )|/mod/brl.mod/filesystem.mod/doc/commands.html#OpenFile
OpenStream:TStream(  url:Object,readable=True,writeable=True  )|/mod/brl.mod/stream.mod/doc/commands.html#OpenStream
Or|/mod/brl.mod/blitz.mod/doc/commands.html#Or
PauseChannel(  channel:TChannel  )|/mod/brl.mod/audio.mod/doc/commands.html#PauseChannel
PeekByte(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekByte
PeekDouble!(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekDouble
PeekFloat#(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekFloat
PeekInt(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekInt
PeekLong:Long(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekLong
PeekShort(  bank:TBank,offset  )|/mod/brl.mod/bank.mod/doc/commands.html#PeekShort
Pi|/mod/brl.mod/blitz.mod/doc/commands.html#Pi
PixmapFormat(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapFormat
PixmapHeight(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapHeight
PixmapPitch(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapPitch
PixmapPixelPtr:Byte Ptr(  pixmap:TPixmap,x=0,y=0  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapPixelPtr
PixmapWidth(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapWidth
PixmapWindow:TPixmap(  pixmap:TPixmap,x,y,width,height  )|/mod/brl.mod/pixmap.mod/doc/commands.html#PixmapWindow
PlaySound:TChannel(  sound:TSound,channel:TChannel=Null  )|/mod/brl.mod/audio.mod/doc/commands.html#PlaySound
Plot(  x#,y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#Plot
PokeByte(  bank:TBank,offset,value  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeByte
PokeDouble(  bank:TBank,offset,value!  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeDouble
PokeFloat(  bank:TBank,offset,value#  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeFloat
PokeInt(  bank:TBank,offset,value  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeInt
PokeLong(  bank:TBank,offset,value:Long  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeLong
PokeShort(  bank:TBank,offset,value  )|/mod/brl.mod/bank.mod/doc/commands.html#PokeShort
PollSystem()|/mod/brl.mod/system.mod/doc/commands.html#PollSystem
Print(  str$=""  )|/mod/brl.mod/standardio.mod/doc/commands.html#Print
Private|/mod/brl.mod/blitz.mod/doc/commands.html#Private
Proceed(  text$,serious=False  )|/mod/brl.mod/system.mod/doc/commands.html#Proceed
Ptr|/mod/brl.mod/blitz.mod/doc/commands.html#Ptr
Public|/mod/brl.mod/blitz.mod/doc/commands.html#Public
Rand(  min_value,max_value=1  )|/mod/brl.mod/random.mod/doc/commands.html#Rand
ReadBank(  bank:TBank,stream:TStream,offset,count  )|/mod/brl.mod/bank.mod/doc/commands.html#ReadBank
ReadByte(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadByte
ReadData|/mod/brl.mod/blitz.mod/doc/commands.html#ReadData
ReadDir(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#ReadDir
ReadDouble!(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadDouble
ReadFile:TStream(  url:Object  )|/mod/brl.mod/filesystem.mod/doc/commands.html#ReadFile
ReadFloat#(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadFloat
Readint(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#Readint
ReadLine$(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadLine
ReadLong:Long(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadLong
ReadPixel(  pixmap:TPixmap,x,y  )|/mod/brl.mod/pixmap.mod/doc/commands.html#ReadPixel
ReadShort(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadShort
ReadStdin$()|/mod/brl.mod/blitz.mod/doc/commands.html#ReadStdin
ReadStream:TStream(  url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadStream
ReadString$(  stream:TStream,length  )|/mod/brl.mod/stream.mod/doc/commands.html#ReadString
RealPath$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#RealPath
Release|/mod/brl.mod/blitz.mod/doc/commands.html#Release
Rem|/mod/brl.mod/blitz.mod/doc/commands.html#Rem
RemoveLink(  link:TLink  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#RemoveLink
RenameFile(  oldpath$,newpath$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#RenameFile
Repeat|/mod/brl.mod/blitz.mod/doc/commands.html#Repeat
Replace$(  str$,sub$,replaceWith$  )|/mod/brl.mod/retro.mod/doc/commands.html#Replace
RequestDir$(  text$,initial_path$=""  )|/mod/brl.mod/system.mod/doc/commands.html#RequestDir
RequestFile$(  text$,extensions$="",save_flag=False,initial_path$=""  )|/mod/brl.mod/system.mod/doc/commands.html#RequestFile
ResetCollisions( mask%=0 )|/mod/brl.mod/max2d.mod/doc/commands.html#ResetCollisions
ResizeBank(  bank:TBank,size  )|/mod/brl.mod/bank.mod/doc/commands.html#ResizeBank
ResizePixmap:TPixmap(  pixmap:TPixmap,width,height  )|/mod/brl.mod/pixmap.mod/doc/commands.html#ResizePixmap
RestoreData|/mod/brl.mod/blitz.mod/doc/commands.html#RestoreData
ResumeChannel(  channel:TChannel  )|/mod/brl.mod/audio.mod/doc/commands.html#ResumeChannel
Return|/mod/brl.mod/blitz.mod/doc/commands.html#Return
ReverseList(  list:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#ReverseList
Right$(  str$,n  )|/mod/brl.mod/retro.mod/doc/commands.html#Right
Rnd!(  min_value!=1,max_value!=0  )|/mod/brl.mod/random.mod/doc/commands.html#Rnd
RndDouble!()|/mod/brl.mod/random.mod/doc/commands.html#RndDouble
RndFloat#()|/mod/brl.mod/random.mod/doc/commands.html#RndFloat
RndSeed()|/mod/brl.mod/random.mod/doc/commands.html#RndSeed
RSet$(  str$,n  )|/mod/brl.mod/retro.mod/doc/commands.html#RSet
RuntimeError(  message$  )|/mod/brl.mod/blitz.mod/doc/commands.html#RuntimeError
Sar|/mod/brl.mod/blitz.mod/doc/commands.html#Sar
SaveBank(  bank:TBank,url:Object  )|/mod/brl.mod/bank.mod/doc/commands.html#SaveBank
SaveByteArray(  byteArray:Byte[],url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#SaveByteArray
SavePixmapPNG(  pixmap:TPixmap,url:Object,compression=5  )|/mod/brl.mod/pngloader.mod/doc/commands.html#SavePixmapPNG
SaveString(  str$,url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#SaveString
ScriptEngine|/mod/pub.mod/luascript.mod/doc/commands.html#ScriptEngine
SeedRnd(  seed  )|/mod/brl.mod/random.mod/doc/commands.html#SeedRnd
SeekStream(  stream:TStream,pos  )|/mod/brl.mod/stream.mod/doc/commands.html#SeekStream
Select|/mod/brl.mod/blitz.mod/doc/commands.html#Select
Self|/mod/brl.mod/blitz.mod/doc/commands.html#Self
SendGNetMessage(  msg:TGNetObject,toObject:TGNetObject  )|/mod/brl.mod/gnet.mod/doc/commands.html#SendGNetMessage
SetAlpha(  alpha#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetAlpha
SetBlend(  blend  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetBlend
SetChannelDepth(  channel:TChannel,depth#  )|/mod/brl.mod/audio.mod/doc/commands.html#SetChannelDepth
SetChannelPan(  channel:TChannel,pan#  )|/mod/brl.mod/audio.mod/doc/commands.html#SetChannelPan
SetChannelRate(  channel:TChannel,rate#  )|/mod/brl.mod/audio.mod/doc/commands.html#SetChannelRate
SetChannelVolume(  channel:TChannel,volume#  )|/mod/brl.mod/audio.mod/doc/commands.html#SetChannelVolume
SetClsColor(  red,green,blue  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetClsColor
SetColor(  red,green,blue  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetColor
SetFileMode(  path$,mode  )|/mod/brl.mod/filesystem.mod/doc/commands.html#SetFileMode
SetGNetFloat(  obj:TGNetObject,index,value#  )|/mod/brl.mod/gnet.mod/doc/commands.html#SetGNetFloat
SetGNetInt(  obj:TGNetObject,index,value  )|/mod/brl.mod/gnet.mod/doc/commands.html#SetGNetInt
SetGNetString(  obj:TGNetObject,index,value$  )|/mod/brl.mod/gnet.mod/doc/commands.html#SetGNetString
SetGNetTarget(  obj:TGNetObject,target:Object  )|/mod/brl.mod/gnet.mod/doc/commands.html#SetGNetTarget
SetGraphicsDriver(  driver:TGraphicsDriver,defaultFlags=GRAPHICS_BACKBUFFER  )|/mod/brl.mod/graphics.mod/doc/commands.html#SetGraphicsDriver
SetHandle(  x#,y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetHandle
SetImageFont(  font:TImageFont  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetImageFont
SetImageHandle(  image:TImage,x#,y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetImageHandle
SetLineWidth(  width#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetLineWidth
SetMaskColor(  red,green,blue  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetMaskColor
SetOrigin(  x#,y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetOrigin
SetRotation(  rotation#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetRotation
SetScale(  scale_x#,scale_y#  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetScale
SetTransform(  rotation#=0,scale_x#=1,scale_y#=1  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetTransform
SetViewport(  x,y,width,height  )|/mod/brl.mod/max2d.mod/doc/commands.html#SetViewport
Sgn|/mod/brl.mod/blitz.mod/doc/commands.html#Sgn
Shl|/mod/brl.mod/blitz.mod/doc/commands.html#Shl
Short|/mod/brl.mod/blitz.mod/doc/commands.html#Short
ShowMouse()|/mod/brl.mod/max2d.mod/doc/commands.html#ShowMouse
Shr|/mod/brl.mod/blitz.mod/doc/commands.html#Shr
Sin:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Sin
Sinh:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Sinh
SizeOf|/mod/brl.mod/blitz.mod/doc/commands.html#SizeOf
SocketAccept:TSocket(  socket:TSocket,timeout=0  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketAccept
SocketConnected(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketConnected
SocketListen(  socket:TSocket,backlog=0  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketListen
SocketLocalIP(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketLocalIP
SocketLocalPort(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketLocalPort
SocketReadAvail(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketReadAvail
SocketRemoteIP(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketRemoteIP
SocketRemotePort(  socket:TSocket  )|/mod/brl.mod/socket.mod/doc/commands.html#SocketRemotePort
SortList(  list:TList,ascending=True  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#SortList
Sqr:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Sqr
StandardIOStream:TStream|/mod/brl.mod/standardio.mod/doc/commands.html#StandardIOStream
Step|/mod/brl.mod/blitz.mod/doc/commands.html#Step
StopChannel(  channel:TChannel  )|/mod/brl.mod/audio.mod/doc/commands.html#StopChannel
StreamPos(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#StreamPos
StreamSize(  stream:TStream  )|/mod/brl.mod/stream.mod/doc/commands.html#StreamSize
Strict|/mod/brl.mod/blitz.mod/doc/commands.html#Strict
String|/mod/brl.mod/blitz.mod/doc/commands.html#String
StripAll$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#StripAll
StripDir$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#StripDir
StripExt$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#StripExt
StripSlash$(  path$  )|/mod/brl.mod/filesystem.mod/doc/commands.html#StripSlash
Super|/mod/brl.mod/blitz.mod/doc/commands.html#Super
SwapLists(  list_x:TList,list_y:TList  )|/mod/brl.mod/linkedlist.mod/doc/commands.html#SwapLists
Tan:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Tan
Tanh:Double(  x:Double  )|/mod/brl.mod/math.mod/doc/commands.html#Tanh
TAudioSample|/mod/brl.mod/audiosample.mod/doc/commands.html#TAudioSample
TAudioSampleLoader|/mod/brl.mod/audiosample.mod/doc/commands.html#TAudioSampleLoader
TBank|/mod/brl.mod/bank.mod/doc/commands.html#TBank
TBankStream Extends TStream|/mod/brl.mod/bankstream.mod/doc/commands.html#TBankStream
TChannel|/mod/brl.mod/audio.mod/doc/commands.html#TChannel
TCStream Extends TStream|/mod/brl.mod/stream.mod/doc/commands.html#TCStream
TextHeight(  text$  )|/mod/brl.mod/max2d.mod/doc/commands.html#TextHeight
TextWidth(  text$  )|/mod/brl.mod/max2d.mod/doc/commands.html#TextWidth
Then|/mod/brl.mod/blitz.mod/doc/commands.html#Then
Throw|/mod/brl.mod/blitz.mod/doc/commands.html#Throw
TileImage(  image:TImage,x#=0#,y#=0#,frame=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#TileImage
TIO|/mod/brl.mod/stream.mod/doc/commands.html#TIO
TLink|/mod/brl.mod/linkedlist.mod/doc/commands.html#TLink
TList|/mod/brl.mod/linkedlist.mod/doc/commands.html#TList
TListEnum|/mod/brl.mod/linkedlist.mod/doc/commands.html#TListEnum
To|/mod/brl.mod/blitz.mod/doc/commands.html#To
TPixmap Final|/mod/brl.mod/pixmap.mod/doc/commands.html#TPixmap
TPixmapLoader|/mod/brl.mod/pixmap.mod/doc/commands.html#TPixmapLoader
Trim$(  str$  )|/mod/brl.mod/retro.mod/doc/commands.html#Trim
True|/mod/brl.mod/blitz.mod/doc/commands.html#True
Try|/mod/brl.mod/blitz.mod/doc/commands.html#Try
TSound|/mod/brl.mod/audio.mod/doc/commands.html#TSound
TStream Extends TIO|/mod/brl.mod/stream.mod/doc/commands.html#TStream
TStreamException|/mod/brl.mod/stream.mod/doc/commands.html#TStreamException
TStreamFactory|/mod/brl.mod/stream.mod/doc/commands.html#TStreamFactory
TStreamReadException Extends TStreamException|/mod/brl.mod/stream.mod/doc/commands.html#TStreamReadException
TStreamWrapper Extends TStream|/mod/brl.mod/stream.mod/doc/commands.html#TStreamWrapper
TStreamWriteException Extends TStreamException|/mod/brl.mod/stream.mod/doc/commands.html#TStreamWriteException
Type|/mod/brl.mod/blitz.mod/doc/commands.html#Type
uncompress(  dest:Byte Ptr,dest_len Var,source:Byte Ptr,source_len  )|/mod/pub.mod/zlib.mod/doc/commands.html#uncompress
UnlockImage(  image:TImage,frame=0  )|/mod/brl.mod/max2d.mod/doc/commands.html#UnlockImage
Until|/mod/brl.mod/blitz.mod/doc/commands.html#Until
Upper$(  str$  )|/mod/brl.mod/retro.mod/doc/commands.html#Upper
Var|/mod/brl.mod/blitz.mod/doc/commands.html#Var
Varptr|/mod/brl.mod/blitz.mod/doc/commands.html#Varptr
WaitChar()|/mod/brl.mod/system.mod/doc/commands.html#WaitChar
WaitKey()|/mod/brl.mod/system.mod/doc/commands.html#WaitKey
WaitMouse()|/mod/brl.mod/system.mod/doc/commands.html#WaitMouse
WaitSystem()|/mod/brl.mod/system.mod/doc/commands.html#WaitSystem
WaitTimer(  timer:TSyncTimer  )|/mod/brl.mod/system.mod/doc/commands.html#WaitTimer
Wend|/mod/brl.mod/blitz.mod/doc/commands.html#Wend
While|/mod/brl.mod/blitz.mod/doc/commands.html#While
WriteBank(  bank:TBank,stream:TStream,offset,count  )|/mod/brl.mod/bank.mod/doc/commands.html#WriteBank
WriteByte(  stream:TStream,n  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteByte
WriteDouble(  stream:TStream,n!  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteDouble
WriteFile:TStream(  url:Object  )|/mod/brl.mod/filesystem.mod/doc/commands.html#WriteFile
WriteFloat(  stream:TStream,n#  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteFloat
WriteInt(  stream:TStream,n  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteInt
WriteLine(  stream:TStream,str$  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteLine
WriteLong(  stream:TStream,n:Long  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteLong
WritePixel(  pixmap:TPixmap,x,y,argb  )|/mod/brl.mod/pixmap.mod/doc/commands.html#WritePixel
WriteShort(  stream:TStream,n  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteShort
WriteStderr(  str$  )|/mod/brl.mod/blitz.mod/doc/commands.html#WriteStderr
WriteStdout(  str$  )|/mod/brl.mod/blitz.mod/doc/commands.html#WriteStdout
WriteStream:TStream(  url:Object  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteStream
WriteString(  stream:TStream,str$  )|/mod/brl.mod/stream.mod/doc/commands.html#WriteString
XFlipPixmap:TPixmap(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#XFlipPixmap
YFlipPixmap:TPixmap(  pixmap:TPixmap  )|/mod/brl.mod/pixmap.mod/doc/commands.html#YFlipPixmap
Hope you find it useful Flame. :)

I had a lot of trouble with the doc coming from bb.
It assumed a lot. Now, it all seems reasonable but it's been a long process.
I looked at some of the commands again and thought 'why didn't I understand that before'. The answer is familiarity with the product rather than helpfulness of the doc.
I believe even BRL has acknowledged the doc 'could do better'.

Maybe instead of just criticizing you could offer up some constructive problems you're having specificly, or come up with suggestions as to how one could improve on the documentation.


I think the main problem I have with the docs is that they are pretty decent, provided you already know what you're looking for -- which is a poor assumption in most cases.

Something as basic as the difference between a pixmaps and images for example, could really use more elaboration... Let alone that 'pixmap' isn't exactly the kind of term you'd be searching for out of the blue when you first open the help. A basic chapter on how graphics work in Blitzmax would be very helpful to new users: DirectX vs. OpenGL, images vs. pixmaps, the various types of flip, refreshrates, information on optimal image/texture sizes, etc.
Those are the kind of things that can make or break a beginner project.

The forums are a great resource when learning the language, but it would take a *lot* longer to pick up the language if all you have to go by are the docs...

Hope you find it useful Flame. :)
I do. Thanks.

it would take a *lot* longer to pick up the language if all you have to go by are the docs...
Well I think we can all agree it's a good thing that isn't the case then?

Well I think we can all agree it's a good thing that isn't the case then?


It isn't the case for us on the forums here right now, but there are plenty of people that can't have internet access 24/7, where the docs are pretty much all they have at their disposal.

I know I've hit my head against the wall a few times when my DSL line had some intermittent outages and I couldn't go online to look up things. :-?

Forums, wiki's, etc. are a great supplement to a manual, but I really don't think they should replace it.

The procedural docs are nice but the OO is a beast of darkest hell.

Even now, where BBDOC was extended to at least show up the methods etc its still not far better than before when you had to crawl through the sources (which is what I did with the first buyable version already).

Best help to it is TheShadows HotDocs which does what BBDOC should have done ... But still, the whole things looks more like the B3D kiddie procedural thing instead of a "more professional" procedural + OO thing.

The procedural docs are nice but the OO is a beast of darkest hell.

Even now, where BBDOC was extended to at least show up the methods etc its still not far better than before when you had to crawl through the sources (which is what I did with the first buyable version already).

Best help to it is TheShadows HotDocs which does what BBDOC should have done ...

But even then its not the best as the bbdoc stuff in the modules was mainly focused to procedural, although I thought procedural was just put in as a "plus" while OO should be the main, not vice versa (there is still much in BM you can't use in OO style like images etc)

Hey guys, I was wondering - does anybody know of a good, solid, cross-platform file format that supports the features of a standard Windows XP help file? The only thing I know of offhand is PDF (which is close but probably not ideal). I was really shocked at the state of the docs - not beginner-friendly at all. Had I not already had programming experience (and if it weren't for this fantastic user community) I wouldn't have made it very far. There should at least be an easy way to search all the docs at once. So I was thinking that converting the docs from lots of seperate HTML files into something unified would be a good first step towards making them more useful. Barring that, does anyone know of a utility that will allow searching lots of HTML files at once? I guess I could copy/paste them all together... ;)

I keep thinking that it should be firly easy to write a simple file search piece of code in bmx, that we can (now) slot into the MaxIDE...but never quite round to trying it...

1. Bumpo.

2. Maybe BRL should consider buying out that HotDocs program.

Ok, I might get linched for saying this, but the one great thing about the original dark basic was having a printed manual by my side.

I know it is a long shot, but could a printed manual ever be avalible?

I also think the docs are not beginner friendly.

I agree that a printed manual would be great. The only problems with printed manual would be 1. would BRL even consider that?, 2. the manual should be updated online to reflect changes to the language (would BRL even consider that?), 3. how much would a printed manual cost? (to make, print, sell?), 4. why doesn't Wave compile all his tutorials together, add a detailed and explained command reference, and try to get a publisher, so he can sell as a "printed manual"? :) He could do updates on his site if the language changes.

There were 2 books that I know of on 2-D programming using Blitz and/or Blitz3D. I don't know the sales figures, but I bought both. Has anyone considered doing a BlitzMax book?

Edit: Good points and suggestions NoodleCower (see next post).

Printed manuals are too expensive to consider for BlitzMax as far as I'm concerned.

Also, printing a manual and then having modules or the language change (because BlitzMax is still being worked on) is not going to bode well for people who buy said manual. Your best bet is to just print it yourself and throw it in a binder -- definitely cheaper on both ends.

A manual in PDF format would be ideal: It's searchable with Acrobat, and it's printable for anybody who wants it on paper. And with it being optional, the cost of BlitzMAX would be unaffected.

Maybe HotDocs could be used to provide a nice HTML help system, as well as a PDF output...?

If people are trying to say that having a manual that actually shows you how to program in the damn thing is a bad idea, then they ae crazy! I can't use this programming language because i am not a techhead, I want a decent manual that does what it is supposed to do, teach newbies like me how to program. How the hell am I supposed to figure this stuf out if all the techstuf means nothing to me in the first place eh?
Get your act together blitz research and get a decent pdf manual out for people to download, christ! I find it funny that Blitz has always had a reputation for crappy documentation, even blitz for the amiga had awful docs, it was up to the magazines to give people the tutorials we wanted.

Not sure what's happening with this...
BlitzMax for the Absolute Beginner

I am not the worlds biggest expert in publishing matters but cafepress do offer an on demand publishing service should a printable manual ever be produced:

http://www.cafepress.com/cp/info/sell/books.aspx

The dark basic manual I have somewhere was just a Wire-O of about 150 pages, it did go out of date with updates but it was nice to have the core language in my hands so to speak.

If Blitz Research were ever to produce a full and complete set of docs, it could be considered an extra insentive to do so, to sell the hard copy via such a system...

Cafepress=BAD! Very BAD!
Awful quality and service.

Any better ideas? Anybody know of any other on demand publishers?

If it is true that docs have been a problem since amiga days, then comunity brandishing a few sticks simply doesn't work. They already have bought the product, what is the insentive?

Lets try laying out a few carrots and see if we can lure BR into making documents with the offer of a few sales of a hard copy of the docs once produced? I mean, they are already half way through the job, if they finish it they might make a little money from an avanue they were not expecting to make any money from.

*me starts waving around a few carrots*

it would be nice to have an example of each command as B3D does, i am managing to bumble my way through it, but the extra help would be nice.........

I don't own a copy of blitzmax - but - after reading this thread, without realising it was a year old, am wondering has anything changed with the docs? I do recall downloading the demo on my other PC about 6-9 months ago and felt they were a little sparse.

Personally, I find the documentation to be adequate. Not knowing your experience level however I can't really say if you will too. I would recommend not evaluating a language on it's documentation alone, but rather in it's range of features, depth (availability of library source code for instance), community, and yes--documentation. Those together are more important than any one thing.

The community around Blitz products in general is really good, always willing to lend a bit of code or answer a question. The language itself is a joy. Overall, a big plus.

That said I do think the documentation needs some help. What I would like to see, and hopefully Mark can comment on the possibility of this happening, but I think simply adding a BlitzMax manual to the site at http://blitzmax.com/Manuals/_index_.php would be very helpful. Then when we find an example lacking we will comment on it, provide a new example, etc.

Perhaps once a month someone can go through and integrate those suggestions into a coherent revision of the manual so that in a few cycles we will have greatly improved documentation.