Pulsar - author Mike Adams

index.html to download.


What is a Program Argument
Handicap Arguments
Book Arguments
Pulsars Opening Books
Atomic Arguments
Documentation on .rc and .rc2 files
Controling Hash

The winboard -fcp flag will be used here for examples. If you don't know what that means, first see, index.html#usingwinboard using winboard section. Its written for an older version of pulsar but its still equally valid.

Whats a program argument

First what is a program argument. If you were to go to run and type a program name it would run that program, assuming the program was in the path or you inputed the full path like c:\program files\winboard\winboard.exe.

Program arguments are anything after the program name.

Example C:\program files\winboard\winboard.exe cat tom arg1 arg2 99 jump joy. In this example there are 7 program arguments starting with cat and ending with joy. when winboard starts it gets a list of the arguments that were passed to it in the order they were passed and it can decide if they make sense to it to tell it to do something. I don't think winboard would bother to do anything if you added joy to the argument list after winboard, in fact it might decide based on getting an invalid program argument to not start. Program arguments are seperated by a space. In pulsar the order of the arguments does not matter.

but things like -fcp and -scp are just that program arguments to winboard.

winboard or xboard starts my program pulsar and when it starts it it passes everything in the quotes after the program name pulsar2007-9a.exe, to my engine as program arguments. I"ve defined a number that make pulsar do certain things. example -fcp "pulsar2007-9a.exe norc". the program argument here is norc. That means dont use any user modificalbe evaluate files that may be present in teh folder pulsar is in. What i'm going to try to do below is document program arguments you can use with pulsar. Some only work with certain variants and have no effect otherwise.

Pulsar2007 program arguments

Handicap arguments

The first set of program arguments i'm going to cover are those that reduce pulsars search depth to make it easier. they are:
mxA-1 through mxA-5 for atomic searching to ply 1 through 5.
mxT-1 through mxT-5 for 3checks searching to ply 1 through 5.
mxC-1 through mxC-5 for crazyhouse searching to ply 1 through 5.
mxS-1 through mxS-5 for suicide ( like icc giveaway exept you cant castle) searching to ply 1 through 5.
mxL-1 through mxL-5 for losers searching to ply 1 through 5.
mxO-1 through mxO-5 for the chess variants ( includes regular chess, shuffle chess and 2kings) searching to ply 1 to through 5.

As you can see pulsar can be handicapped seperately for 6 different types of games or sets of games. If you want to have pulsar play shuffle chess the mxO-1 mxO-2 mxO-3 mxO-4 and mxO-5 arguments can be used to limit its search to 1 to 5 ply deep. Note the letter after mx ( O A T ) etc is captialized. pulsar expects to find the same capitalizaion so type the arguments exactly. Only choose one of the mxO arguments. Example -fcp "pulsar2007-9a.exe mxO-2". this would keep pulsar only searching to ply 2 at chessic varitans like blitz, shuffle chess and 2kings. If your running pulsar on a chess server you may want to choose multiple handicaps as it can be seeking for different types of games at once. Example -fcp "pulsar2007-9a mxO-2 mxA-2". This would handicap its chessic and atomic seeks. Any variant not handicapped will play at full strenght. In home play you can just use one handicap argument as pulsar has to be loaded with only one variant chosen at a time.

You can also limit its search time to game in so many milliseconds. YOu can choose between 250 and 60000 milliseconds. just type a number from 250 to 60000 as a program argument. Example -fcp "pulsar2007-9a.exe 1000". You can use both a depth limit like mxO-3 and a game in milliseconds and whatever limit it hits first will limit it.

imporant note Crazyhouse typically gets lower depth and a normal blitz time control search might be between 4 and 5 with the high branching factor ( there are a lot of moves possible if you consider both moves and drops)

Also suicide/giveaway and losers also get lower depth but do to a lot of extensions for captures. For suicide/giveaway and losers its highly recommended if you use more than 2 depth that you also limit the time of its search in combination with the max depth for these variants.

example: -fcp "pulsar20007-9a.exe mxL-4 mxS-3 15000"
this will make sure it doesnt get hung in a search that while low depth has a large extension factor do to a lot of deep capture lines. by including 15000 it wil search up to that max depth but will also terminate the search if it uses to much time, in this case its suppose to use 15 seconds for the game.

Book arguments

Pulsar will use the books provided and you can modify them if it finds the book in the directory its in typically. I've only tested with pulsar winboard and the books in the same directory.

In 3 checks and blitz the first move is hard coded into the program and it wont choose from its books. You can stop this behavior by including:
nocheckmove for no hard coded first move in 3checks
and noblitzmove as a program argument for no hard coded first move in blitz.

All of pulsars books are black and white books except for blitz. the blitz is older code and it uses openbk.txt first and bigbooks.txt when it cant find the move in openbk.txt. So a good way to make it play certain things is hand write or modify openbk.txt and it will start out wtih those lines and use bigbook.txt once it gets out of book in openbk.txt. With the noblitzmove program argument you can put only e4 lines for example in openbk.txt and it will only play e4 as white in blitz or standard.

Finally the crazyhouse books work a bit differently. If bigbook.txt is present it will play its first 2 moves out of bigbook.txt and then go out of book. If you use the program argument 'crazybook' it will ignore bigbook.txt and use its white and black crazy books that you have to hand write. You could also dump bigbook.txt into the white and black files and it will play for both white and black in crazyhouse all the lines in bigbook.txt without stopping at move 2. Look at the other white and black books for the format. basicly lines like e2e4d7d5b1c3 and hit enter after each line.

Opening books pulsar will use if it finds them in its directory

openbk.txt --- will look here first in blitz and standard
---- if this book is not found it will just use bigbook.txt
bigbook.txt -- plays out of this book when it gets out of move in openbk.txt.

Use the noblitzmove program argument to make it play move 1 for white out of openbook.txt or bigbook.txt if openbook is not downloaded. Otherwise move 1 is hard coded in the program to be e2e4 c2c4 or d2d4.

Following 5 for atomic. the black and white book are the base books. the first second and third move etc are to tell it what to do on that move. it will look in say atomicThirdMove.txt and if it finds the line in there it will play the third move in the line at the frequencey that third move is listed in the third move book.


If those were the only 3 lines in the third book it would only use the third book if it ran into b1c3d7d6 and it would play g1f3 twice as much as g1h3 in that situation. If it doesnt find the line or the book doesnt exist it will use atomicBookWhite.txt in this case.


For threechecks. use the nocheckmove program argument to make it play its first move out of these books otherwise its hard coded in the program


for twokings

For both suicide and giveaway

for losers

for crazy house if you set them up. otherwise it plays its first two moves out of bigbook.txt and goes out of book after that. use the crazybook program argument as well to make pulsar use these books. Currently the @ character like p@e4 is not supported. You can only make crazy books up to where the line involved a drop and not include a drop in the book.


Its recommened you use the books even if they are small as it will randomize its first few moves. You can add to them.

Use the norc program argument to tell pulsar not to use any pulsar rc or rc2 files you may have created.

Program arguments that apply to atomic only

You can specify for atomic the filename you want pulsar to look for for its atomicBookBlack.txt atomicBookWhite.txt pulsar.rc and pulsar.rc2 files:

for whitebook put the name of your white book. example aw-abookwhi.txt. You can include a full path but dont use spaces. Use # for a space. example aw-c:\program#files\winboard\abookwhi.txt

same idea

same idea and you can use # for a space here as well. Example rc-c:\program#files\winboard\myrcfile.txt

same idea
example r2-myrc2.txt

the amount of moves it will make in book. i.e max book moves is 6, then it will play 6 book moves in atomic and no more ( it will play 6 assuming it doesnt go out of book earlier.)

use the fics program argument to tell pulsar to play atomic by fics rules, i.e. no castle in check. It will still play on always till the king is captured but if connected to a server the game will end before it can do that.

use the rand program argument to tell pulsar to ranomize a bit its moves in atomic. The default is to put randomness into positions equal to about a 1/6 of a pawn or 20 points. You can increase or decrease this by using a pulsar.rc2 file. Changing the value with a pulsar.rc2 file though wont make pulsar use randomness unless the rand program argument is used.

documentation on .rc and .rc2 files used to modify evaluate values

Currently documentation on using a pulsar.rc2 file and its sisters for other variants is found on puslarscoop.html and using a pulsar2.rc file for the chessic variants is listed toward teh bottom of pulsar .rc and .rc2 files let you modify the evaluate. You can also get info on what options are available in these files and what the present evaluate values are by double clicking on the pulsar2007-9a.exe executable and a dos box will open with pulsar running and as it starts it will print this info in the console. You'll have to scroll through it and make sure you type quit, to exit properly and free memory.

Program arguments to control hash

While above I said if you use a number from 250 - 60000 it will be a program argument indicating game in that many milliseconds, the numbers below 250 are reserved to control hash size.

pulsar has 500,000 times a multiplier ( the default is 8) hash slots that is uses. If you start the program with no program argument to control hash it uses 8*500,000 or 4 million slots. this can be about 120 megs. you can change the multiplier to be less or more than 8.

Available values are:
1 i.e use 1/8 the normal hashing or 500,000 slots
2 use 1/4 the normal hashing
4 use half the normal hashing or 2 million slots.
16 use double teh normal hash
32 use 4 times the normal hash or 16 million slots.

If you have less ram, or your handicapping the bot, or you just want to use less hash then by all means change it to 1 2 or 4. Aslo in engine vs engine matches if you dont have a lot of ram you might want to lower it ( if your matching pulsar against itself you have to lower it in both -fcp and -scp), because in engine matches it opens two copies of pulsar with double the normal hash, each copy opens like 128 megs of hash with no hash program argument. It uses memory for other stuff as well so with the 1 program argument it seems to use about 20 megs all total.

-fcp "pulsar2007-9a.exe 1 mxA-2"
-fcp "pulsar2007-9a.exe 4" -scp "pulsar2007-9a.exe 4"

technical detail-- the actual math is each slot is 32 bytes * 1024 * 512 times the multiplier which defaults at 8.