Tuesday, February 12, 2013

HBF, February update

A new version of HBF and BB framework (binaries and source) are ready to be downloaded.

Strange messages...



New enemies

bomb:







mummy:






Weird:


Bird:















Details)

BB:
-When surfaces are retrieved via SpriteEngines, the heights for slopes are always calculated
-Slopes in TLayer are much simpler and faster
-Engine now can load pixel shader and vertex shaders (properly...)
-TSurface.AutoShape is private and now is called from the surface when needed not every time a new surface is created
-Rectangle collision in TCollision uses GetBB in order to be more accurate
-New TLayer.Trace()
-TLayer when loads a map sets a default Z for all Layers
-TSoundFactory, samples released properly

HBF)
-New Unit and class TBall 
-HandleMovingPlatforms() refactored
-Moving tiles without touch are supported
-New method TGameSprite.GetPosOnItem() that return the position of a sprite on a given platform taking into account the feet.
-Different song when hero dies
-When hero dies HorizontalSpeed is set to zero
-IsCollisionLeft() and IsCollisionRight() now return the collision element (tile or item)
-GetPlatformAdjustment() improved for TBall
-DiscoverHiddenBlock() now works with any tile
-New unit and class TRay
-Platform refactored
-Arrow speeds are now floats
-New class TCollisionableSprite
-New class TEnemy
-Enemies inherit from TEnemy
-New enemy  bomb 
-New enemy mummy 
-New enemy bird 
-Enemy Weird behaves as expected
-New hierarchy of sprites, TGravitySprite->TEnemy->TNonGravityEnemy
-Bomb does not longer kills when contact
-CanEnterDoor() move from game to hero
-Units used cleaned (removed unused)
-Blob enemy refactored
-Door keys shown in the hub (if taken)
-Unit Sound renamed to SoundDispatcher
-New TEnemy.Attack property
-Fixed silly error with Boss1
-Now a log is used when error
-TMusic is now singleton
-Different door keys are used

Thursday, February 7, 2013

World Regional Teams Challenge

It seems that ChessKISS was included on a funny world tournament as part of the Southern team, the teams were:

REST OF THE WORLD
IvanHoe 9.46h 64-bit
Hannibal 1.2 64-bit
Deep Junior 13.3 64-bit
Scorpio 2.7.5 64-bit
RedQueen 1.1.1 64-bit
LittleThought 1.052 64-bit
Natwarlal 0.14
Capivara LK 0.08b03a 64-bit

WESTERN EUROPE
Houdini 3 64-bit
Shredder 12 64-bit
Nemo 1.0.1 64-bit
DiscoCheck 3.7.1 64-bit
Philou 3.7.1 64-bit
iCE 0.3
Gibbon 2.57a 64-bit
Adam 3.3

USA/CANADA
Komodo 5 64-bit
Naum 4.2 64-bit
Thinker 5.4d Inert 64-bit
Crafty 23.5 64-bit
SlowChess Blitz WV2.1
Djinn 0.971 64-bit
Myrddin 0.86 64-bit
Chesley r323

SOUTHERN EUROPE
Bouquet 1.6 64-bit
Chiron 1.5 64-bit
MinkoChess 1.3 64-bit
Dirty 5Sep2012 64-bit
Rodin 5.1
Danasah 5.00
Betsabe II 1.28 64-bit
ChessKiss 1.7 64-bit

UK/SCANDINAVIA
Stockfish 2.3.1 64-bit
Hiarcs 14
Texel 1.01 64-bit
Frenzee 3.5.16 64-bit
Francesca MAD 0.19
Pupsi2 0.09
Mediocre 0.5
Beowulf 2.4a 64-bit

EASTERN EUROPE
Critter 1.6a 64-bit
Sting SF 2 64-bit
Booot 5.1.0
Cheng3 1.07 64-bit
Rodent 0.16 64-bit
Pawny 0.3.1 64-bit
Bagatur 1.3a 64-bit
Atak 6.8

RUSSIA
Strelka 5.5 64-bit
Gull II 64-bit
Quazar 0.4 64-bit
Bison 9.11 64-bit
GreKo 9.7 64-bit
Ifrit m1.8 64-bit
Zeus 1.29
Shallow 1.0 64-bit

INVITATION TEAM (to eliminate the bye)
Rybka 4.1 64-bit
Vitruvius 1.11C 64-bit
Tornado 4.88 64-bit
Arasan 15.1 64-bit
Tucano 1.04
Delphil 2.9g 64-bit
Tigran 2.3 64-bit
Vajolet 1.62.1

Well, the southerns were the winners!

Final Standings 

64.5 - Southern Europe 
62.0 - Western Europe 
61.5 - US/Canada 
59.0 - Rest Of The World 
54.5 - Eastern Europe 
51.5 - Invitation Team 
48.0 - Russia 
47.0 - UK/Scandinavia

ChessKISS was second on his team with 9 points:

SOUTHERN EUROPE 
8.5 - Bouquet 1.6 64-bit 
6.0 - Chiron 1.5 64-bit 
7.0 - MinkoChess 1.3 64-bit 
8.5 - 5Sep2012 64-bit 
7.5 - Rodin 5.1 
9.5 - Danasah 5.00 
8.5 - Betsabe II 1.28 64-bit 
9.0 - ChessKiss 1.7 64-bit 


Tuesday, January 29, 2013

Latest tournament of ChessKISS that I'm aware of


Not too bad...

Final Standings

24.0 - ECE 12.01
24.0 - Rhetoric Lite
23.0 - ChessKiss 1.7 64-bit
20.0 - Shallow 1.0 64-bit
19.5 - Adam 3.3
19.5 - Myrddin 0.85 64-bit
17.0 - Vajolet 1.62.1
15.0 - FireFly 2.5.13 64-bit
14.0 - Cupcake 1.0
13.0 - ProChess 1.02AD
12.5 - Soldat III 0.172
12.0 - Dabbaba 6.52
7.0 - Jabba 13032012
7.0 - BSC 3.9# 32-bit
7.0 - Bubble 1.5
5.5 - AdroitChess 0.3 32-bit


Tuesday, January 22, 2013

New update for BB 1.5 and HBF

Here is the what's new:

Framework)

  • TLayer new method HasAttribute()
  • TGraphicDriver  new method Clear()
  • TGraphicDriver.Available() improved (still need to be improved)
  • New TSprite effect seInverse
  • In a layer the items now can have a priority
  • TLayer.Render() now calls UpdateCollider() (this is mandatory!)
  • New method TLayer.FindAttribute()
  • TSprite.SetIndex() does not longer calls UpdateCollider(), this should be a manual call (like in layer.render)
  • Layers in sprites are associate with a weak reference
  • TSimpleSprite.Assign() assign more variables...
  • In TSpriteEngine when the cache is clear, the related surfaces are destroyed
  • New method TLayer.SetView()
  • View in Layer is created by default not calculated all the time
  • TBackground now uses horizontal and vertical speed 
  • TBackground now has a new control to avoid infinite loops when width = 0
  • Button pressed in joystick fixed
  • Animations now can read ColorKey
  • Layer implement slopes
  • ISurface new GetCRC and RetrieveHeights
  • New AnimationType atRandom
  • Cache moved from TGraphicDriver to TSpriteEngine
  • New TSpriteEngine.GetSurface() method
  • New TLayer.GetCellsAt() method
  • New TSimpleSprite.SetFullBB() method
  • TSprite.SetIndex() now uses the engine cache
  • New ILayer.GetCellsAt()
  • TSpriteEngine now has a default Z to apply to related sprites 
  • TSpriteEngine now has a priority, so Z can be added or subtracted
  • TLayer set Z to TSpriteEngine when rendering an attached sprite engine 
  • The graphics engine now sorts the buffers per supplied Z (this helps a lots when rendering with ColorKeys)
  • TRenderBuffer and TBufferAttributes merged into one single class
  • In TLayer, Zoom property is spread across all items 
  • When a sprite is paused, the timeout is also paused
  • Remove GetSolid/SetSolid from sprites 
  • -Added the concept of vars (key/value) to sprites, so one can freely create variables with values and then get the values
  • Sprites now have the DeleteVar() / FindVar()
  • ISprite now declares GetAttachedSprite and SetAngleSpeed
  • New GetSpeedFromAngle() in BB.Math 
  • TSound
    • New class functions in order to retrieve min/max Volume/Panning 
    • Sounds now have DSBCAPS_CTRLVOLUME and DSBCAPS_CTRLPAN set by default
    • All calls to DirectSound now set the LastCode error

HBF)

  • New snow attribute, used in level 12
  • New animation when picking coins
  • SpawnAttributes() refactored
  • Some associations are done via TInterfaceHelper.WeakIntf() in order to avoid weird runtime errors
  • CalculateGravity() returns more info
  • Blob dies when lands on lava or water
  • Game.Clear() now calls more methods
  • Added more debug info
  • Fixed some weird collisions with hero and tiles at the top of the screen when there is also a tile underneath
  • Created a new attribute CHECKPOINT, so is easier to distinguish while coding the map start and the map checkpoints
  • New animation when collecting a coin
  • Game is able to detect the scroll direction via attributes
  • Fixed a 1 frame Layer.Y error
  • All maps now have the direction attributes set 
  • Spikes now set the sound according to position and distance
  • New class TSoundDispatcher, all samples are played via that class
  • Joystick support
  • Background now has a 0.25 horizontal speed
  • Background can be paused
  • Sound can be switch off via .ini
  • Fixed some weird top collisions 
  • Items (moving tiles) are treated as static tiles in order to avoid dead collisions
  • OnOff items can be paused
  • Minor map changes
  • New TSpike with volume and panning
  • Hero now has 3 lives
  • When all coins are collected, hero gains a new life
  • Walkside tapes implemented (ugly sprite)
  • Music can be toggle with F1
  • Sound can be toggle with F2
  • Hero now applies acceleration and friction properly
  • Some maps now have slopes
  • Hero interact properly with slopes
  • Collision left/right now return the X impact point
  • Collision lef/right now use the GetCellsAt method
  • All Sprite.Z now are set as constants
  • Ice is tested with both feet
  • Game.Run() cleaned
  • Climb ladders is working when the top exit is also a tile (LADDER_TOP)
  • New unit Constants
  • Added springs (level 12)
  • Use of new vars specially for items (solid, platform, spring, tape, etc), they are used as tags
  • Some methods renamed for better understanding
  • Block items can push us also from left/right
  • Creating items and breaking items now are returned immediately as Collision
  • Handling moving platforms now takes into account hero's vertical velocity
  • ITape removed
  • Extra jump has another sample
  • New unit star 
  • New checkpoint system (much easier)
  • New direction ball (experiment)
  • Now doors have to be opened with a key
  • Fixed again some hero collision issues
  • New unit and class checkpoint
  • New class TPickup root for items than can be picked up
  • New unit and class rays 
Basicly adding new features to the "game" and improving the engine.








Tuesday, January 1, 2013

New year, new version, happy 2013!

HBF project and the framework has been updated.

HBF)
- Arrows refactored
- New TBlob enemy
- New class TCoin
- TGame refactored
- TGameSprite refactored
- THero refactored
-New item TStalactite
-New arrows (more directions)
-New blob enemy
-New jellyfish enemy
-Stalactite now breaks when contact a tile
-New TBat enemy
-After a new level and after death there are some seconds of Inmunity
-Better ice
-Stalactite works also in vertical scrolls
-new Spider animation
-Spider now detects tiles
-Sprites now have a Z
-Bitmaps are now separated in different files (cleaner)
-New TBoss1 enemy
-TGameSprite.CollisionLayer removed
-THero.Door removed
-Blob can also now start from the air properly
-Hero has a Z now
-Collision adjusted in general using BoundingBoxes
-Presentation colors changed
-Map now attach the main engine
-New attribute NOT_SOLID
-Levels changed
-New element spike
-New GetCollisionData()
-IsSolid widely used
-New element nonsolid, moving items can cross them
-Now levels with darkness can be created (level 8)
-Collision functions now return an enumerator rather than a boolean
-Sparks are generated in the very front layer
-Under some circumstances there was a double top collision against moving items
-Added gameover sound 
-menu screen also shows highscores 
-New setters for State and Facing in TGameSprite
-Animations are set via States
-When on top of a tile and another tile comes from the top and touch our head, hero dies
-Arrows don't stop when hero has immunity
-Fires use another sprite
-New music for level 12
-New sample for spikes

BB)
-Removed AnsiString from some classes
-Maps now can be paused
-Layer.Render refactored once again
-New interface ITag
-New TSpriteEngine.Pause() method
-ILayer and ISprite interfaces can be tagged via GetTag() / SetTag()
-Fixed counter stuff in sprites and added some methods, GetCounter() and CounterExists()
-Blinking in sprites done every 6 frames (looks more realistic)
-New TSurface.GetDefaultBB() that scans the surface in order to adjust the bounding boxes automatically (this method is always called from the surface generator)
-TRandom,NextFloat() fixed
-TUtils.InRange() new method
-Fixed nasty bug in bitmap CRC (really!)
-TPolygon renamed to TPolygonEx
-No animation in Pause
-Clip default value in TSurface corrected
-Surface cache is now a UInt64 rather than string 
-Fixed a issue in TSpriteEngine.Sort()
-TSpriteEngine.Clear simplified
-TLayer Attach engine methods improved internally
-When a TAnimationSprite is destroyed the sprites from the pool are also released
-Sprite Counters are aware of the pause system
-IImage is now IBitmap
-ILayer new GetAttribute() and GetTileRect()
-IPoolable = IPool 
-New interface IInterfaced
-TDummySprite implements IInterfaced
-TPooledObject renamed to TInterfacedObjectEx IPooled not longer implemented
-TFontEx has now some new properties like Angle, Zoom and Alpha 
-Texture multiplication is done properly
-TGraphicsDriver Uninitialize now stops the timer
-TLayer dimensions fixed (nasty + 1)
-TLevel has more information like time or type
-Changed the order of the render internally
 1, items
 2, attached engines 
 3, tiles
-Clip moved from TSurface to TDummySprite, so the clip goes per sprites and not per surface (silly idea)


Links updated

Thursday, December 6, 2012

BB 1.3d last update of the year

These are the changes:

  • DX editor had some fixes
  • ColorKey detection improved (none, TopLeft, BottomRight, Specified)
  • TLayer.Render cleaned
  • BB compiles under XE3
  • New class TThreadPool (experiment)
  • Sprites can be paused via SetPaused()
Sources updated

HBF updated

Hi

Is been a while since my last post, many changes in my private life...

Anyway, is time to show some progress in my stuff:



  • New maps
  • Code cleaned (some refactoring)
  • Horizontal scroll added
  • Some changes in the ladder behaviour
  • Pause is now a proper pause
  • Key O saves a screenshot
  • Arrows fixed when horizontal scroll
  • Arrows can now collide with items and tiles
  • New item stalactita
  • Sprites implement GetPaused/SetPaused





  • Sources and binaries updated


    Wednesday, July 25, 2012

    ChessKISS tuning, next steps

     These are the next scores to tune:


    • Mobility
    • Tropism
    • Outpost
    • KingOnPos (Left,Center,Right)
    • King safety
    • King pawn shield
    • Passed pawns
    • Passer block
    • Passer chain
    • Isolated pawns
    • Double pawn
    • Backward pawn
    • Chain pawn
    • Passer candidate
    • Early rook move
    • Imbalance
    • Threat penalty
    • Trapped bishop
    • Trapped center pawn
    • Trapped center pawn + bishop
    • Trapped knight
    • Bishop pair adjustment per pawn
    • Undeveloped pieces
    • Passive penalty

    The problem here is that almost all of those scores are array based on columns, row or indexes, making it quite complicate to test, let's see...

    HBF experiment updated

    What's new:

    -Ice friction (experimenting..., not finished)
    -New levels (crazy ideas)
    -New ripped music (some help?)
    -New ripped graphics (some help?)
    -On/Off tiles
    -Ladders
    -Arrows can have different speeds
    -New fire item ala Mario (experimenting...)
    -New ending screen (quite crappy)
    -Highscores

    Sources and binaries updated





    BB framework 1.3c

     This update is mainly related with my game projects (which I will update soon)


    -Sprites engines
      Fixed some ColorKey stuff
      Removed BB collections completely

    -Maps
      Many little improvements
      Path issues fixed
      Map events give more flexibility to the listeners

    -Sprites
      Fixed nasty collision bug via UpdateCollider()
      CRC in bitmaps
      Z sort (Colorkey surfaces cannot be sorted based on Z-buffer)
      Surface cache is now more accurate (thanks to CRC)
      New TFontEx methods

    -Collisions
      Fixed some memory leak

    -Input
      Modified the way KeyPress() works

    -Editor
      Little improvements here and there

    -Game
      New class TLevels to handle game levels

    -Driver
      FPS stuff sleep is handled a bit different
      New delta info

    ChessKISS 1.7

     After some months and a lot of tuning, I'm releasing the 1.7 version, it does not have any new tactics, it just a version that rather than have all pieces/action scores as constants, they are stored in the INI, and of course I've modified those values according to my experiments, there are some more values pending to be tuned, but hey, it is summer!

    Download section is already updated


    Friday, May 4, 2012

    So now what with ChessKISS

     At the moment I only have two things left to do:

    1. Tunning of scores
    2. Full magic bitboards
    At the moment I'm working with point 1, but is a very sloooooooooooooooooow task since for the moment I'm tunning the scores one per one playing a huge competition of 10 different versions for each score based on a more or less +-10%.

    Exahusting



    Latest tournament

     WBEC Ridderkerk, 5th division Group C.
    AMD-PHENOM-3100, 2012.04.09 - 2012.05.01
                               Score       SB   TJ If KM Ca Na Ch Ma Bi Bi Fr Ge Wa Ri Su J. Yo Ro Va TS Za Di Nu Ma CM
    --------------------------------------------------------------------------------------------------------------------
     1: TJchess 1.1-x64      43.0 / 46  924.25  XX 1= 11 11 1= 1= 11 11 1= 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11
     2: Ifrit m1.5-x64-JA    40.5 / 46  827.50  0= XX =1 10 1= 11 0= 11 11 11 11 11 11 11 11 1= 11 11 11 11 11 11 11 11
     3: KMTchess-121-x64-JA  38.0 / 46  746.25  00 =0 XX 01 11 10 11 1= 11 10 11 11 11 10 11 11 11 11 11 11 11 11 11 11
     4: Capivara LK 0.08a09  37.0 / 46  728.75  00 01 10 XX 01 11 1= 11 10 1= 11 01 11 11 01 11 11 11 11 11 11 11 11 11
     5: Nagaskaki 5.12       33.5 / 46  614.75  0= 0= 00 10 XX 10 =1 =0 1= 1= 10 11 == 11 11 =1 11 11 11 11 11 11 11 11
     6: ChessKISS 1.5b-x64   33.5 / 46  596.00  0= 00 01 00 01 XX 01 =0 0= 11 10 11 11 11 11 11 11 11 11 11 11 11 11 11
     7: Matant 5.04          33.0 / 46  604.00  00 1= 00 0= =0 10 XX 0= 01 11 11 1= 11 11 11 11 11 0= 11 11 11 11 11 11
     8: BikJump 2.01-x64     32.0 / 46  578.00  00 00 0= 00 =1 =1 1= XX 11 0= =1 10 =1 11 11 1= 11 11 == 11 11 11 11 11
     9: BigLion 2.23w        29.0 / 46  506.00  0= 00 00 01 0= 1= 10 00 XX 0= 01 11 11 1= 11 10 11 =1 10 11 11 11 11 11
    10: FrankWalter 1.08     27.5 / 46  470.75  00 00 01 0= 0= 00 00 1= 1= XX 10 01 == =1 11 11 01 11 11 11 11 11 10 11
    11: Gerbil 0.2           25.5 / 46  416.25  10 00 00 00 01 01 00 =0 10 01 XX 0= =0 10 11 =1 =1 11 10 11 11 11 11 11
    12: Warrior 1.0.3        24.5 / 46  388.50  00 00 00 10 00 00 0= 01 00 10 1= XX 11 == 10 11 =1 01 11 1= =1 11 11 11
    13: RivalChess 1.18      23.5 / 46  333.00  00 00 00 00 == 00 00 =0 00 == =1 00 XX 01 11 =1 11 == 11 11 11 11 11 11
    14: Surprise 4.3-b13JA   21.0 / 46  290.25  00 00 01 00 00 00 00 00 0= =0 01 == 10 XX 00 11 1= 01 =1 11 11 11 11 11
    15: J.S.BAM 0.52         19.5 / 46  251.00  00 00 00 10 00 00 00 00 00 00 00 01 00 11 XX =1 1= 10 11 11 11 =1 11 11
    16: Yoda 2.09            17.5 / 46  226.25  00 0= 00 00 =0 00 00 0= 01 00 =0 00 =0 00 =0 XX 01 =1 =1 =1 11 11 11 11
    17: Roce 0.0390          17.0 / 46  187.75  00 00 00 00 00 00 00 00 00 10 =0 =0 00 0= 0= 10 XX 01 11 11 11 11 11 11
    18: Vapor 0.01-r12       15.5 / 46  223.75  00 00 00 00 00 00 1= 00 =0 00 00 10 == 10 01 =0 10 XX 00 11 11 == =1 =1
    19: TSCP 1.81            15.0 / 46  179.25  00 00 00 00 00 00 00 == 01 00 01 00 00 =0 00 =0 00 11 XX 10 11 11 11 11
    20: Zadrexsaurus 0.41     9.5 / 46   65.50  00 00 00 00 00 00 00 00 00 00 00 0= 00 00 00 =0 00 00 01 XX =1 11 11 11
    21: Dimitri 2.01          7.0 / 46   36.00  00 00 00 00 00 00 00 00 00 00 00 =0 00 00 00 00 00 00 00 =0 XX 11 11 11
    22: Numpty Omega          3.5 / 46   31.25  00 00 00 00 00 00 00 00 00 00 00 00 00 00 =0 00 00 == 00 00 00 XX =1 =0
    23: Marquis 0.1.6         3.0 / 46   40.00  00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 =0 00 00 00 =0 XX ==
    24: CMCChess 2.27-uci     3.0 / 46   16.00  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =0 00 00 00 =1 == XX
    --------------------------------------------------------------------------------------------------------------------
    552 games: +255 =64 -233
    
    
    Oh well, 5th of 24th, I expected a better result, but is not that bad, slowly improving...

    Thursday, April 26, 2012

    Interview on a webpage

     Last summer I had an interview for an spanish online demo magazine, it can be read it at

    http://escena.org/wiki/page/eszine__entrevista_le_festy/ (in spanish)

    I don't know why I didn't mention it before.

    Friday, April 20, 2012

    ChessKISS 1.6

    The new version of ChessKISS is ready to be downloaded, this version easily beats version 1.5b.

    What's new?


    20/04/12, 1.6 Some enhancements

    -General
      Asserts added (only in debug version)
      Renaming...

    -Endgame
      New KN vs KP
      Fixed error in KB vs KP

    -See
      Fixed an Enpassant issue

    -Bitboards
      New class TBitboardHelper
      New steps to include some kind of magic bitboards

    -Board
      IsPinned() now handles two variants of attacks

    -Definitions
      New hash type htNone

    -Search
      Avoid check explosion
      Now killers work by play rather than by depth
      History and killers not updated when in check
      Fixed a silly bug in the dynamic aspiration window >=2 should be > 2
      Changes in extension: check only extended when non bad captures or in PV, added winning captures in PV
      Pruning of non capture evasions

    -Move
      New SetType()

    -PV
      Minor changes...

    -See
      Early exit

    New version of the framework BB 1.3b

     There is a new version of the BB framework, it is neede4d if you want to compile ChessKISS, HBF or any demo project.

    What's new?

    • Colorkey issues fixed
    • Files handled correctly in maps when they are in different folders than main executable
    • Fixed really nasty collision bug via UpdateCollider()
    • Fixed some memory leaks
    • Swap the way KeyPress() is handled  in Input
    • Some bugs fixed
    • Some little improvements



    Jilon is now HBF

     I've change the name of this experiment, the binaries and sources are already available. What's new?

    • If you "finish" the game there is a highscore table with time and coins
    • Some bugs fixed
    • Some little improvements here and there
    • INI file

    Sunday, April 15, 2012

    New version of Jilon

     There is a new version of Jiloff ready to be downloaded, let me know what do you think. I've improved the gameplay, fixed several bugs, clean the file structure, modified the scroll in order to be more parallax, added animated tiles and added some level...


    Monday, April 9, 2012

    WBEC Ridderkerk 5th division group C test results

     Test at Dual core Phenom 3100 at 40/3, ponder=on
    AMD-PHENOM-3100, 2012.04.06 - 2012.04.08
                               Score     I T B C B K C M F G R M W R T S Y J J V D Z C N N M
    -----------------------------------------------------------------------------------------
     1: Ifrit m1.5-x64-JA    24.0 / 25   X 1 1 1 1 1 1 1 1 1 1 = 1 1 1 1 = 1 1 1 1 1 1 1 1 1
     2: TJchess 1.1-x64      22.0 / 25   0 X = 1 1 = 1 1 1 1 1 1 1 = 1 1 = 1 1 1 1 1 1 1 1 1
     3: BikJump 2.01-x64     20.5 / 25   0 = X 1 0 0 1 = 1 1 1 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     4: ChessKISS 1.5b-x64   19.0 / 25   0 0 0 X 1 1 1 1 0 1 1 = 0 = 1 1 1 1 1 1 1 1 1 1 1 1
     5: BigLion 2.23w        19.0 / 25   0 0 1 0 X = 0 1 0 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     6: KMTchess-121-x64-JA  18.5 / 25   0 = 1 0 = X 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 = 1 1 1
     7: Capivara LK 0.08a09  18.5 / 25   0 0 0 0 1 1 X = 1 = 0 1 1 1 = 1 1 1 1 1 1 1 1 1 1 1
     8: Matant 5.04          18.0 / 25   0 0 = 0 0 0 = X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
     9: FrankWalter 1.08     17.0 / 25   0 0 0 1 1 1 0 1 X 1 0 = 1 0 1 1 = 1 1 = 1 1 = 1 1 1
    10: Gerbil 0.2           16.5 / 25   0 0 0 0 = 1 = 0 0 X 1 = 1 1 0 1 1 1 1 1 1 1 1 1 1 1
    11: RivalChess 1.18      14.5 / 25   0 0 0 0 0 0 1 0 1 0 X 0 = = 1 = 1 1 1 1 1 1 1 1 1 1
    12: Mustang 4.97         14.0 / 25   = 0 = = 0 0 0 0 = = 1 X 1 1 1 = 1 0 0 1 1 0 1 1 1 1
    13: Warrior 1.0.3        13.5 / 25   0 0 0 1 0 0 0 0 0 0 = 0 X = 1 = 1 1 1 1 1 1 1 1 1 1
    14: Roce 0.0390          11.5 / 25   0 = 0 = 0 0 0 0 1 0 = 0 = X = 0 1 0 1 = 1 = 1 1 1 1
    15: TSCP 1.81            11.0 / 25   0 0 0 0 0 0 = 0 0 1 0 0 0 = X = = 1 1 0 1 1 1 1 1 1
    16: Surprise 4.3-b13JA   11.0 / 25   0 0 0 0 0 0 0 0 0 0 = = = 1 = X 0 0 1 1 1 1 1 1 1 1
    17: Yoda 2.09            10.0 / 25   = = 0 0 0 0 0 0 = 0 0 0 0 0 = 1 X 0 0 1 1 1 1 1 1 1
    18: Jabba 1032012        10.0 / 25   0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 X 1 1 0 0 1 1 1 1
    19: J.S.BAM 0.52          9.0 / 25   0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 X 1 1 1 1 1 1 1
    20: Vapor 0.01-r12        6.5 / 25   0 0 0 0 0 0 0 0 = 0 0 0 0 = 1 0 0 0 0 X 1 0 1 1 = 1
    21: Dimitri 2.01          5.5 / 25   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 X 1 1 = 1 1
    22: Zadrexsaurus 0.41     5.0 / 25   0 0 0 0 0 0 0 0 0 0 0 1 0 = 0 0 0 1 0 1 0 X 0 = 1 0
    23: CMCChess 2.27-uci     3.0 / 25   0 0 0 0 0 = 0 0 = 0 0 0 0 0 0 0 0 0 0 0 0 1 X 1 0 0
    24: Nanook 1.6            3.0 / 25   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = = 0 X 1 1
    25: Numpty Omega          2.5 / 25   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = 0 0 1 0 X 1
    26: Marquis 0.1.6         2.0 / 25   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 X
    -----------------------------------------------------------------------------------------
    325 games: +159 =35 -131