Super Computer’s
Best First Chess Move

The Sesse Super Computer runs automated analysis on interesting high-level chess events, in real-time, such as the World Championships.

 

Super Computer Hardware

While its computing power varies, on December 29, 2021, during the 2021 World Chess Championship, Sesse was the following:

That’s 336 computing cores!  Each running at 2.0 GHz.

 

Starting Chess Position

Interestingly, during the FIDE World Rapid & Blitz Chess Championship in Warshaw 2021, while waiting for a blitz match between Magnus Carlsen and Klementy Sychev, the computer analyzed the starting position:

Sesse analysis on the starting position

It analyzed this for 1 hour 24 minutes, computing 328,179,236 nodes per second (recall that Deep Blue, with its 256 custom build chess chips, could compute 200,000,000 per second during the middle game), for a total of 1,660,504,563,547 nodes (that’s 1.6 trillion nodes!), to a depth of 70 ply (75 selective):

Principal variation for starting position, along with alternate moves.

Analysis snapshot was taken at Wednesday, ‎December ‎29, ‎2021, ‏‎11:31 AM AST.

 

Principal Variation

Analysis from the 336 x 2.0GHz Intel Ice Lake SP (OpenMPI):

Score: +0.25
PV: 1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. Re1 Nd6 6. Nxe5 Be7 7. Bf1 Nxe5 8. Rxe5 O-O 9 d4 Bf6 10. Re1 Re8 11. Bf4 Rxe1 12. Qxe1 Ne8 13 c3 d5 14. Bd3 g6 15. Nd2 Ng7 16. Qe2 Be6 17. Nf3 Bg4 18. h3 Bxf3 19. Qxf3 Ne6 20. Be3 Bg5 21. Re1 c6 22. g3 Bxe3 23. Rxe3 Qd7 24. Qe2 Re8 25. a4 Qd8 26. Kg2 h5 27. a5 Ng7 28. Rxe8+ Nxe8 29. Qe5 Kf8 30. b4

This position results at the end of the principal variation:

End of principal variation of Sesse analysis on starting position.

 

Alternate First Moves

The following are all 20 potential first chess moves, using Multi-PV analysis, computed using the lower powered 16 x 4.2GHz AMD Zen 3, which reaches depth 49 and 50.

Interestingly, f4 is not the worst move.  However, it is the first of the negative scores, along with b4, h4, Nh3, Na3, f3, g4.  I guess weakening your King, and moving Knights to the board edges really are bad ideas!

e4 +0.41 d50 1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. Re1 Nd6 6. Nxe5 Nxe5 (…)
g3 +0.23 d50 1. g3 c5 2. c4 Nc6 3. Bg2 g6 4. e3 Bg7 5. Nc3 e6 6. Nge2 Nge7 (…)
d4 +0.22 d50 1. d4 Nf6 2. Bf4 d5 3. e3 e6 4. Nf3 Bd6 5. Bxd6 Qxd6 6. c4 c5 (…)
c4 +0.17 d50 1. c4 Nf6 2. d4 e6 3. g3 Bb4+ 4. Bd2 Be7 5. Bg2 d5 6. Nf3 O-O (…)
Nf3 +0.15 d50 1. Nf3 Nf6 2. d4 e6 3. c4 d5 4. g3 Bb4+ 5. Bd2 Be7 6. Qc2 O-O (…)
e3 +0.12 d50 1. e3 Nf6 2. d4 d5 3. Nf3 e6 4. Bd3 Be7 5. b3 O-O 6. Bb2 b6 (…)

Nc3 0.00 d49 1. Nc3 d5 2. d4 Nf6 3. Bf4 e6 4. Nb5 Na6 5. e3 Be7 6. Nf3 O-O (…)
a3 0.00 d50 1. a3 c5 2. e4 g6 3. Nf3 Bg7 4. h3 d6 5. Bb5+ Bd7 6. Bxd7+ Qxd7 (…)
a4 0.00 d49 1. a4 Nf6 2. d4 e6 3 Nf3 c5 4 e3 Nc6 5. Bd3 d5 6. O-O Bd6 (…)
b3 0.00 d50 1. b3 e5 2. Bb2 Nc6 3 e3 Nf6 4 Nf3 e4 5. Nd4 h5 6 c4 Rh6 (…)
c3 0.00 d50 1. c3 e5 2. d4 e4 3 c4 c6 4 Nc3 d5 5 a3 Be7 6 cxd5 cxd5 (…)
d3 0.00 d49 1. d3 d5 2. Nf3 Nf6 3. g3 Nc6 4. d4 Bf5 5. Bg2 e6 6. O-O Nb4 (…)
h3 0.00 d50 1. h3 e5 2. e4 Nf6 3. Nc3 Bb4 4. a3 Ba5 5. Nf3 O-O 6. Bet d6 (…)

f4 -0.16 d49 1. f4 d5 2. Nf3 c5 3. g3 Nc6 4. Bg2 e6 5. O-O Be7 6. d3 Nf6 (…)
b4 -0.36 d49 1. b4 e5 2. Bb2 Bxb4 3. Bxe5 Nf6 4. c3 Be7 5. d4 d5 6. Bxf6 Bxf6 (…)
h4 -0.40 d49 1. h4 e5 2. c4 Nf6 3. d3 Bc5 4. e3 Bb6 5. Be2 d6 6. b4 c6 (…)
Nh3 -0.49 d49 1. Nh3 d5 2. d4 Nf6 3. Ng5 c5 4. e3 g6 5. dxc5 Qa5+ 6. c3 Qxc5 (…)
Na3 -0.69 d49 1. Na3 e5 2. Nc4 Nc6 3. e4 Nf6 4. d3 d5 5. exd5 Nxd5 6. Nf3 f6 (…)
f3 -0.74 d49 1. f3 e5 2. Nc3 Nc6 3. e3 d5 4. Bb5 Nf6 5. Nge2 Bd7 6. d3 a6 (…)
g4 -1.51 d49 1. g4 d5 2. e3 Nc6 3 d4 e5 4. Nc3 Be6 5. dxe5 Nxe5 6. h3 h5 (…)

 

2019 Kyosho Ultima
Re-Release

Kyosho Ultima

The original 1/0th scale R/C car, Kyosho Ultima, was released in 1986.  It won the 1/0th scale off-road electric World Championships in 1987.  You can watch a video of it.

Kyosho re-released this model in 2019, Kyosho EP 2WD Kit Ultima (part 30625).  It is the 8th model of the “Kyosho Vintage” re-releases, which is a part of their legendary series.

 

Tools to Build Kyosho Ultima

I bought the following items to help build the Ultima Re-Release, with my review of each.

 

Things Needed to Run Kyosho Ultima

The kit does not come with the following.

I have recommendations for each.

 

Media

Kyosho Ultima website:

Kyosho YouTube:

Windows 10 Finds Trojan
Win32 Sabsik

Scary Virus

I had a scare today.  I sent my brother a C# MonoGame build of my own side project.  We were testing various monitor framerates and resolutions (I have a 240 Hz Alienware laptop, and he has dual 120 Hz monitors).

He found something shocking.  He couldn’t download (via Discord) because Windows Security found Trojan:Win32/Sabsik.TE.A!ml:

Threats found.
Trojan:Win32/Sabsik.TE.A!ml

Sabsik is a pretty nasty virus!

Sabsik executes commands from an attacker.

More details:

Microsoft Security Intelligence:
This threat can perform a number of actions of a malicious hacker’s choice on your PC.

Searching for more information did not make me feel better:

Reddit:
Sabsik can be instructed to download and run additional malware, and it’s possible that more malware is present. Also, it both can and does steal data and credentials (password, login info, etc.) and encrypt data on your computer, and asking for a ransom to decrypt it again, aka ransomware. It usually tries to open a backdoor too, giving the attacker remote access to your computer.

Yikes.

 

False Positive?

Developers are accustomed to virus scanners finding false positives in their private developer builds.  So, I ran a scan on my own machine, but was shocked that there were no results:

No results.

We were both running Windows 10.  But only one of the two computers was reporting this virus from the same executable.

 

Inconsistent Findings

We tried scanning other builds, and the findings were inconsistent between them.  My computer reported no issues.  My brother’s computer reported Sabsik for some and not for others.  Since I am not building an executable with the virus inside of it, I thought maybe it was attaching itself to it after the build from discovering the activity on this recently created file, and ignoring older builds that I had not been messing with.

I was now wondering if the virus had compromised my own machine’s ability to virus scan.

 

Windows Security Update Failure

We thought what could be different from the two computers, so we decided to check the Windows Security versions.  They were different!  Mine had updated within the hour, and my brother’s only updated 6 hours ago.

After updating both machines to the latest version:

Windows Security version 1.355.417.0

The scan results disappeared.

A Windows Security update introduced this false positive, scaring who knows how many people out there, to be fixed hours later.

 

Further Confirmation

I uploaded my build to Virus Total for a meta scan, which uses several dozen virus scanners.  One had a false positive for a different virus, and the rest showed no results found.  None found Sabsik.

 

Always Type The Code

Always Type The Code

Don’t just copy code (from the Internet, coworkers, friends, or even from yourself from your own code).

Type it out.

Every time.

If you don’t know what the code means, character by character, and you could not arrive to it by yourself without addressing another source, then type it.  Only when you can write it yourself effortlessly are you allowed to copy and paste.

 

Why?

Because this is how you learn.

Otherwise you are getting yourself into Learned Helplessness (video from Veritasium), where you are not learning yourself, but are using the energy from others so that you need not spend any.  The problem is this is a short term solution.  You learn nothing that takes you forward on a better path, where you can be self reliant (video from Lost Relic Games).

 

Why “First Pixel”?

From an email (May 11, 2016):

I’m often reminded of getting the “First Pixel” on screen, back in the day where you had to get the graphics mode working, and then write to the proper memory address, and if your registers were correct, and your assembly was good, you wouldn’t soft boot your computer, and you’d see a dot on the screen.

A collection of quotes that Matt and I had from the demo scene explained this well:

“A DOT!!!! A FUCKING DOT!!!! YEAH!!!!!!!” — Chris Chapin, on getting his first graphic element working

This is now what I think about. I try to be pragmatic. Get the first thing working. Get object A talking to B. Get something spit out in the log to show it’s running. Get that First Pixel. I think I have a name I really like. Maybe I should make a blog called First Pixel. Also sounds like a good name for a retro video game.

I had forgotten at first that I heard about this from quotes from the demo scene, so I looked it up at work today. I found the post:

jheide@ccinet.ab.ca (Josh Heidebrecht) writes:

>I hope I made this journey sound like a long and difficult one,
>because it will be. But please don’t get scared away yet, after you
>put your first pixel on the screen you’ll feel the adrenalin rush run
>through your blood stream, and you’ll never be able to stop 🙂
>Good-Luck…

JH, you are the MAN! You just reminded me of when I first was sat down if front of a friend’s PC and I was just starting to learn Pascal. I found TASM and grabbed a couple of books laying around on VGA and ASM. In a 1/2 hour I wrote my VERY FIRST exe, it just switched to VGA and put a dot in the upper left hand corner of the screen and I screamed:

“A DOT!!!! A FUCKING DOT!!!! YEAH!!!!!!!”

So I can confirm that adrenalin rush. ;>

Canard@ax.com
Chris Chapin

Love it!

 

F-Zero Draw Distance

Vanishing Point

Mike Birken’s fascinating F-Zero True Horizons page shows what F-Zero would look like if the rendering draw distance was not limited.

In-Game Screen Shot

Vanishing Point (courtesy of Mike Birken)

Mike discusses possible reasons F-Zero limited the draw distance.  While they are good guessed, I have stumbled upon the actual reason.

Teaser:  F-Zero already renders to the maximum draw distance allowed.  In fact, it draws further.  Some of the data near the horizon is actually garbage, but is unnoticeable due to the regularity of the level graphics.

So what’s the reason?

 

Level Size

While pondering writing an F-Zero style engine in modern technology using MonoGame — which is something I wrote ages ago in 320×200 x 256-color Mode 13h (the same graphics mode that the original 1993 Doom ran on) — I thought I’d look at actual F-Zero maps.  My curiosity was to see how the designers managed to draw the track-limit circles within the restrictions of a tile-based graphics system.  My intention was to use today’s bitmapped graphics mode, where I can control individual pixels, to draw these circles perfectly.  All I need is a big texture — say, 4096×4096!

I was astonished to find out the maps were 4,000 to 6,000+ pixels in size.  Huge!  These size maps are much larger than the 1024×1024 pixel limit of SNES Mode-7 hardware.  Mode-7 is tile-based.  It can render 128×128 tiles, each 8×8 pixels in size, equaling 1024×1024 pixels.  Retro Game Mechanics Explained has a great video explaining these restrictions, “SNES Background Mode 7”.

Thus we have the true answer…

The Mode-7 1024×1024 tilemap limits the draw distance.

 

Tile-Based Graphics

F-Zero uses the same technology that Super Mario Bros. does.  SMB expands a video screen, that barely has enough video memory to draw a single screen, and makes it appear as though the world is vast.  It reuses the same video memory as the screen scrolls, updating it (loading new content at the edge of the screen) as you run.  (And you thought today’s massive world AAA games were the first to do streaming!)  Retro Game Mechanics Explained has a perfect video for explaining this “Loading Seam”.

Consider games like Pilot Wings.  It shows the entire world… yet it’s tiny.  Why?  That’s how small 1024×1024 is.  F-Zero maps get into the 4,000 and 6,000 pixel size.  But you can only “view” a 1024×1024 chunk of it, as those 128×128 tiles are changed and slide as though the camera is moving through the world.

 

Draw Distance Limitation

Using an F-Zero map (captured by Rick N. Bruns), let’s showcase a 1024×1024 section of that map, near the same location that Mike Birken shows in his F-Zero True Horizons page, Rendering section.

We’ll use “Map 3: Sand Ocean”, since it has some good artifacts to discuss:

In-Game Screen Shot (note draw distance and left/right side roads)

Overhead Analysis (with 1024×1024 overlay)

The white dot is the approximate camera location that Mike’s renders are using.

The blue square is a 1024×1024 pixel section marked off, centered on that camera location.

Since the game plays in 360 degrees, and players can spin quickly, the 1024×1024 playfield must capture in all directions.  Part of the “Loading Seam” technology is that you only need to update edges as you scroll.  This is what made Sonic the Hedgehog fast with its Blast Processing.  The same is true for F-Zero, running at 60 frames per second, using the slow SNES 3.58 MHz CPU.  You would not be able to use the entire tilemap for the forward direction (doubling the draw distance), as you would not be able to turn, because turning would require you to update half of the play field (8000 tiles) in a few frames, vs only 100 to 200 tiles per frame like F-Zero does.

 

Draw Distance Limit Artifacts

The view distance is quite limited.  If the renderer attempted to render more, it would access beyond the tilemap edge.  You will not get more of the road in the distance.  You will get whatever is on the other edge of the tilemap, which is garbage.  You do not notice since usually the background track graphics are similar (sand is sand)..

You can actually see this wrapping limitation in action!

Take a look at the in-game screenshot again:

In Game Screen Shot (notice the distant roads on the left & right)

There are two roads in the distance; one to the left and one to the right.  In the actual map, neither of these exist.  The roads are gray, but only one side is black.  Not both sides, like a true road.  The same side is black for both.

Why?

Because they are the same road; they are being rendered from the same tilemap data.  Also, the tiles are garbage tiles; this draw distance has exceeded the tilemap limit, and is accessing tiles on the other side of the tilemap.  If you’ve watched the Loading Seam video, you’ll know that these are just random tiles from another part of the map.

The programmers of F-Zero really stretched the limits of the draw distance — so far that it actually draws garbage at times, where they hope you don’t notice.

Alienware Windows Key
Not Working?

Press FN + F6

On Alienware laptops, the F6 key has no visible sub-function.  But, you have probably accidentally pressed it while intended to increase the volume with FN + F5.  This has shut off the Windows Key… without any indication or warning.

The fix for your Alienware Windows Key is:

Press FN + F6

FN + F6 toggles (enables / disables) your Windows key.

 

Custom New Class Template
Visual C#

The Incorrect Way

When you add a new class in Visual C#, it is filled with a template.  You can change this.

 

Step 1.

Go to this folder (for VS2019):

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

 

Step 2.

Edit this file in Admin mode (so that you can save it):

Class.cs

Use the variables within this template to your liking.

 

Example:
// Your Name
// Month Day, Year

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Diagnostics;

namespace $rootnamespace$
{
    public class $safeitemrootname$
    {
        // ---- data members

        // ---- properties

        // ---- methods

        public $safeitemrootname$
        {
        }

        public Update()
        {
        }

        public Draw()
        {
        }

    } // class $safeitemrootname$
} // namespace $rootnamespace$

See what I did there?

At the end of the file, when you are editing a function at the very end, it’s annoying to see three } at the end, and I often add comments like this.  It’s very neat to have this added automatically.

It’s also cool to automatically have the proper includes, and default constructor, along with common functions you almost always make.  Deleting extra code is easier than writing it every time.

Though, to be honest, these days, I leave things alone, since I have a new mantra:

Always Type the Code.

 

Warning

Make sure you save a copy of this as some Visual Studio updates will overwrite your changes.

Thus, you should use…

 

The Correct Way

I opened a bug against Visual Studio describing the data loss, and they directed me to the correct way to do this.

 

Recommended Keyboard Shortcuts
Visual Studio

When setting up Visual Studio 2019, I was reminded that I need to set up a few shortcuts to make it more useful.  I thought I’d record them so I can refer to them later, and that it may help some of you.

I recommend setting the following bindings to make Visual Studio 2019 useful:

  • Ctrl+W = Edit.SelectCurrentWord
  • Ctrl+Left Arrow = View.NavigateBackward
  • Ctrl+Right Arrow = View.NavigateForward
  • Ctrl+1 = Edit.ToggleLineComment
  • Ctrl+Up Arrow = Edit.PageUp
  • Ctrl+Down Arrow = Edit.PageDown
  • Ctrl+Tab = next file tab (unsure what the name is; it may be default)
  • Ctrl+Shift+Tab = previous file tab (unsure what the name is; it may be default)

Note: You may have to delete existing shortcuts that are using these keys.

 

Welcome to The First Pixel

Welcome to THE FIRST PIXEL.

The First Pixel

The is the personal blog of Jason Doucette.

It can be considered somewhat of a subsidiary of Xona Games — my award-winning Xbox & PlayStation indie game studio, co-founded by twin brother, Matthew Doucette and I.  Our motto is “Empower the Player”, which has existed as the main pillar of game design since we first started designing & programming games from the age of 7.  Empowerment is a constant conscious presence.

As you can guess — I am into video games.

However I do not really play them.  In Grade II, a teacher allowed the entire class to play video games, so we lined up.  I asked the teacher “Do we have to play games?” and she said “No.”  Thus, when it was my turn, I shut off the video games and started coding.  The entire class booed, and I was legitimately shocked at the social faux pas I had just committed.

I have fit into society about as well as that ever since.

This blog will contain side projects and articles, including lots of retro stuff.  While most of my projects are hidden, you may view what I am working on on my GitHub page which will give up-to-date links to my YouTube videos.

— Jason Allen Doucette / THE FIRST PIXEL