Schachcomputer.info Community

Schachcomputer.info Community (https://www.schachcomputer.info/forum/index.php)
-   Mess Emu & andere Emulationen / Mess Emu and other Emulations (https://www.schachcomputer.info/forum/forumdisplay.php?f=53)
-   -   MessEmu: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG (https://www.schachcomputer.info/forum/showthread.php?t=7280)

Mychess 09.06.2025 18:34

THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hi,

The H8 bug is present in many chess computers from Saitek (since 1997, 28 years!):

Saitek Talking Chess Academy
Saitek Cosmos
Saitek Centurion
Saitek Cougar
Saitek Challenger
Saitek Expert Travel
Saitek Explorer Pro and Pewatronic Explorer Pro.


I began to work on it end of march with Cougar on Mame.
I first found the fun bug and fixed it in the first hour (Fun bug and H8 bug are not related).

I wrote the second week a "bizarre" as comment to the line generating the bug, but I moved on.
After checked the move generator and the very complex time management (partially because very scattered code) without result,
I found the origin of the H8 bug and I coding the patch may 28 for Cougar/Centurion (same rom).
This patch is 50% more long than the patch for AT time level for the Emerald Classic Plus, so it is necessary to change ... 3 bits!

Since I have fully understood the origin of the bug, I can confidently guarantee that this patch will fix all other chess computers
with the H8 bug (after finding the right offsets), and this without even having seen their program yet.

This bug stop quickly the search when a piece in h8 (necessary condition but not sufficient), so always be suspicious when the computer
reply with a bizarre move from h8 in less than 2 seconds.
Another point confirmed : the bugged code is not used with checkmate levels.

The patch for the H8 bug and Fun bug together (only for Cougar/Centurion, as no others roms are available):
Code:

          3288 : 6b01 fe60 1c19
          505e : 5a00 66d0                                   
          66d0 : 7f 52 72 60 41 50 7f 52 72 70 5a 00 50 62 
         
          New checksums are F9E68C6079F821A667A5CABECBDFCD6C01293AE7    F28806F7

The understanding of the bug give a solution (but with wasted time) for the bug with a real chess computer (or emulation without patched rom).
if no castling is possible, you can translate the position with a vertical symetry (h8 to a8, h7 to a7..) with the same color for pieces and
color to move, without a piece of the color to play in h8 (formerly in a8).
If this is the case or castling exist, the last solution is to create the same position with color of pieces and color to move exchanged (so a white queen in
h8 become a black queen in a1).

To Saitek : Now you can make new chess computers without H8 bug ;-)


Cordialy,

mychess.

Mark 1 09.06.2025 19:12

AW: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hallo Mychess..

Mein Englisch ist nicht so gut , daher schreibe ich in Deutsch.
Habe da eine Frage...
Wäre es dann auch möglich, dem Mark 3 die Rochade erneut beizubringen, nachdem eine korrekte Stellung eingegeben wurde?

Viele Grüße
Mark 1

fhub 09.06.2025 19:40

AW: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hi Mychess,
Zitieren:

Zitat von Mychess (Beitrag 132555)
The patch for the H8 bug and Fun bug together (only for Cougar/Centurion, as no others roms are available):
...

great job - a lot of work for only 3 bits! :)

Question 1: we have many H8 engines in CB-Emu - don't any other of these engines (apart from Centurion/Cougar) have this H8 bug?

Question 2: there's a difference in the Fun level bugfix between the 2 versions you've posted in your first thread and today:
66d0 : 7F 52 72 60 41 62 7F 52 72 70 5A 00 50 62 (from 31.03.2025)
66d0 : 7f 52 72 60 41 50 7f 52 72 70 5a 00 50 62 (from today)
So which one is correct?

Regards,
Franz

Mychess 10.06.2025 00:15

Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hi Fhub,


Question 1 : The list of computers with H8 bug come from Spacious-Mind : https://hiarcs.net/forums/viewtopic.php?f=1&t=6021,
so no doubt !

Question 2 : Both are correct, this byte is a dummy byte for checksum control when you power on the computer.
In the new version, it is modified to take account of the patch for H8 bug.

Code:

patch for H8 bug  :  3288 : 6b01 fe60 1c19
patch for Fun bug  :  505e : 5a00 66d0                                   
                      66d0 : 7f 52 72 60 41 50 7f 52 72 70 5a 00 50 62



Cordialy,

mychess

CC 7 10.06.2025 08:46

AW: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Zitieren:

Zitat von fhub (Beitrag 132560)
Question 1: we have many H8 engines in CB-Emu - don't any other of these engines (apart from Centurion/Cougar) have this H8 bug?

Regards,
Franz

Here my little list concerning the H8-Bug

H8-Bug
Centurion
Cosmos
Cougar
Mephisto Chess Challenger (Admiral)
Mephisto Explorer Pro
Mephisto Expert Travel Chess
Mystery

No H8-Bug
Gk 2100
Saitek Präsident/President
Saitek Travel Champion 2100
Saitek Brute Force Modul
MM VI
RadioShack Champion 2250XL
Mephisto Schachakademie

Mephisto Talking Chess Academy ?

I still have a question mark over Mephisto Talking Chess Academy by Saitek.
Talking Chess Academy is actually very close related to Mephisto Schachakademie, so there shouldn't be a H8-Bug.

On the other hand I once read somewhere, that the Talking Chess Academy from Saitek supposedly does have the H8-Bug.
Does anyone know exactly what is right here ?

Greetings
Hans-Jürgen

fhub 10.06.2025 14:05

AW: Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hi Mychess,
Zitieren:

Zitat von Mychess (Beitrag 132562)
Question 2 : Both are correct, this byte is a dummy byte for checksum control when you power on the computer.
In the new version, it is modified to take account of the patch for H8 bug.

ok, but there's still one thing that I don't understand with your Fun-level bugfix:
66d0 : 7f 52 72 60 41 50 7f 52 72 70 5a 00 50 62
I've disassambled the code at this address with the debugger and got:
Code:

66D0: 7F52 7260 bclr    #6, @h'ff52
66D4: 4150      bf      h'6726
66D6: 7F52 7270 bclr    #7, @h'ff52
66DA: 5A00 5062 jmp    h'5062

Since I don't understand H8 assembly code I've searched the Internet for the H8 instruction set and found, this 'bf' (at 66D4) means 'branch if false' - but I don't know 'if WHAT is false' (I guess it's usually any condition/compare before this command)!?

Now I wonder why did you put this 'checksum correction' byte(s) 41 50 WITHIN your bugfix code - couldn't it happen that this 'WHAT' condition is indeed false when this code is executed, and in this case the program would jump/branch to an address (6726) with no valid code?
So why didn't you just put these correction bytes (41 50) at the end of your bugfix code, which would definitely never be executed?

Regards,
Franz

Mychess 10.06.2025 15:42

Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Hi Fhub,


You can put the good byte for a good checksum at the end of the patch.
However, a curious programmer (Fh..) could be astonished by a byte never adressed by the patch.

So I prefer to use a dummy short instruction (yes, with 2 clocks CPU lost) with the good byte as immediate value.
The BF is a "branch never", as BT is a branch always, without testing any code condition.
So 41 50 is a 2 clocks cpu lost instruction who only make PC = PC+2, and 50 is the byte for a good checksum.

You can make a best performance patch with :

66D0: 7F52 7260 bclr #6, @h'ff52
66D4: 7F52 7270 bclr #7, @h'ff52
66D8: 5A00 5062 jmp h'5062
66DC: 91 ; (41+50)

Cordialy,

Mychess

fhub 10.06.2025 15:58

AW: Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Zitieren:

Zitat von Mychess (Beitrag 132572)
You can put the good byte for a good checksum at the end of the patch.
However, a curious programmer (Fh..) could be astonished by a byte never adressed by the patch.

Yes, I'm a VERY curious programmer! :D
Zitieren:

The BF is a "branch never", as BT is a branch always, without testing any code condition.
Ok, now I understand that this jump is never done.
But what is an instruction BF good for, when it actually never does anything? ;)

The 2 clocks CPU lost is of course no problem, because I think this bugfix code is only executed when the user changes the level (to or away from a Fun level).

fhub 10.06.2025 16:05

AW: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
And from your "66DC: 91 ; (41+50)" I guess the program uses only a 1-byte checksum, correct?
Then why not just change the checksum byte instead of adding such a dummy byte?

Mychess 10.06.2025 16:47

Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Yes, only a one byte checksum.
However, the checksum is not stored, it should be 00, so I add a byte to obtain 00.

Another solution would be to delete the checksum call from the rom, but I'm follower of "Entia non sunt multiplicanda praeter necessitatem", or principle of parsimony.


Cordialy,

Mychess

fhub 10.06.2025 17:00

AW: Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Zitieren:

Zitat von Mychess (Beitrag 132577)
Yes, only a one byte checksum.
However, the checksum is not stored, it should be 00, so I add a byte to obtain 00.

Well, a 1-byte checksum is a quite simple method - how does the program react when it detects a wrong checksum?
I remember such a situation for any other ROM that I've patched, and it actually returned an error message (I've just skipped this error routine).

Mychess 10.06.2025 17:10

Re: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
A continuous error message (E: ron) with beep.
However, "enter" bypass the message and the computer is ready.

Mychess 22.06.2025 09:18

Re: AW: THE PATCH FOR ALL CHESS COMPUTERS WITH H8 BUG
 
Zitieren:

Zitat von Mark 1 (Beitrag 132559)
Hallo Mychess..

Mein Englisch ist nicht so gut , daher schreibe ich in Deutsch.
Habe da eine Frage...
Wäre es dann auch möglich, dem Mark 3 die Rochade erneut beizubringen, nachdem eine korrekte Stellung eingegeben wurde?

Viele Grüße
Mark 1

Hi Mark 1,

I made a patch : https://www.schachcomputer.info/foru...ead.php?t=7287

Cordialy,

mychess.


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:31 Uhr.

Powered by vBulletin (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©Schachcomputer.info