Schachcomputer.info Community
  #11  
Alt 04.02.2018, 10:38
Benutzerbild von DarkStar
DarkStar DarkStar ist offline
Saitek RISC 2500
 
Registriert seit: 30.05.2010
Land:
Beiträge: 197
Bilder: 17
Abgegebene Danke: 30
Erhielt 264 Danke für 68 Beiträge
Aktivitäten Langlebigkeit
0/20 14/20
Heute Beiträge
0/3 ssssss197
AW: Codeanalyse

 Zitat von ferribaci Beitrag anzeigen
Da ist sicherlich ein Lottozahlengenerator mit drin. Und Carsten möchte erstmal den Jackpot knacken...
Ich bin auf AlphaZero V0.1 gestoßen. Der Code war nur auskommentiert

Stay tuned ...
Carsten
__________________
ChessLab BCS - http://google.com/+CarstenMeyer
Mit Zitat antworten
Folgender Benutzer sagt Danke zu DarkStar für den nützlichen Beitrag:
ferribaci (04.02.2018)
  #12  
Alt 16.11.2023, 14:08
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Darkstar,

Das interessiert mich.

Hast du Reverse-Engineering vom ROM-Inhalt gemacht?

Falls ja, woher hast du den ROM-Inhalt genommen (Emulator-Projekte) und mit welchen Werkzeugen hast du gearbeitet (IDA, Ghidra ...)?

Schöne Grüsse

Hans

 Zitat von DarkStar Beitrag anzeigen
Hallo,

ich schaue mir gerade den Code eines bekannten Schachcomputers genauer an. Eigentlich nicht erwähnenswert, wenn ich da nicht auf Sachen stoßen würde, die ich so nicht erwartet hätte

Eines kann ich jetzt aber mit Fug und Recht behaupten ... damals waren Drogen im Spiel!

Es wäre jetzt nur noch interessant zu wissen, welche!

Stay tuned ...
Carsten
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (16.11.2023)
  #13  
Alt 19.11.2023, 11:15
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Darkstar,

In der Zwischenzeit habe ich mit den mir aus CB-Emu verfügbaren Information begonnen, die Software des Fidelity Sensory Chess Challengers 9 in Ghidra abzubilden (siehe beigelegtes docx).

Gewisse Eckpunkte werden sichtbar. Die Programm-Logik ist für mich noch schwierig zu durchschauen. Z.B. sehe ich, wo die Eröffnungsbücher liegen. Aber wie ist deren Datenstruktur? Weiss jemand mehr?

Schöne Grüsse



 Zitat von Hans21 Beitrag anzeigen
Hallo Darkstar,

Das interessiert mich.

Hast du Reverse-Engineering vom ROM-Inhalt gemacht?

Falls ja, woher hast du den ROM-Inhalt genommen (Emulator-Projekte) und mit welchen Werkzeugen hast du gearbeitet (IDA, Ghidra ...)?

Schöne Grüsse

Hans
Angehängte Dateien
Dateityp: docx 2023_11_19_fscc9_ghidra.docx (186,3 KB, 27x aufgerufen)
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #14  
Alt 19.11.2023, 11:49
Moonshine Moonshine ist offline
Super System III
 
Registriert seit: 25.07.2010
Land:
Beiträge: 13
Abgegebene Danke: 16
Erhielt 18 Danke für 10 Beiträge
Aktivitäten Langlebigkeit
4/20 14/20
Heute Beiträge
1/3 sssssss13
Beitrag AW: Codeanalyse

Hallo Hans,

ich beschäftige mich schon seit längerem mit den ROM-Listings der Sargon-Programme von Kathe und Dan Spracklen. Im Sargon 2.5 habe ich das Eröffnungsbuch dekodieren können und auch neue, wesentlich umfangreichere, erfolgreich eingebaut.
Ich bin eben dabei das Eröffnungsbuch vom Sargon 4.0 verstehen und entschlüsseln zu können. Vielleicht hilft Dir folgender Link: https://content.iospress.com/downloa...al%2Ficg6-1-04
Ein Zug wird in diesen Eröffnungsbüchern nicht durch "von-Feld" / "nach-Feld" dargestellt, sondern als Index der Zugliste. D.h.: beim Sargon 2.5 wäre die Darstellung des Eröffnungszuges e4 als $0D (0x0D) dargestellt. Es wird bei Null zum Zählen begonnen. 0-3 sind die möglichen Springerzüge, dann folgen mit 4 bis 19 die Bauernzüge. Das ist bei den späteren Eröffnungsbüchern nicht mehr der Fall. Da arbeitet der Zuggenerator anders. Die Züge werden in anderer Reihenfolge erzeugt. z.B.: beim Sargon 4.0 wird ab 1 begonnen zu zählen, zuerst die Schlagzüge, dann eine evtl. mögliche Rochade und dann wird es kompliziert. Der Zuggenerator geht dann nicht von Figur zu Figur und generiert die Züge, sondern arbeitet feldbezogen. Ich habe mir die Mühe gemacht und mal etliche Züge des Buches mit allen möglichen Werten (1 bis Anzahl der Züge) gepatcht, aber konnte da noch kein System erkennen. Ich muss versuchen den Zuggenerator aus dem Rom-Listing zu verstehen. Da habe ich aber noch nicht den Einsprungspunkt gefunden. Die Eröffnungsbücher der späteren Spracklen-Programme, deren Brett-Representation im 0x88-Format dargestellt wird, dürften alle ziemlich gleich sein. Das war bei den ersten Programmen (Sargon 2.5/3.0) noch nicht so. Da wurde noch die 10x12Matrix verwendet.
Gerne können wir uns dazu weiter austauschen.

Beste Grüße

Hannes

Geändert von Moonshine (19.11.2023 um 12:55 Uhr)
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu Moonshine für den nützlichen Beitrag:
kamoj (21.11.2023)
  #15  
Alt 19.11.2023, 15:50
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Hannes,

Herzlichen Dank für deine sehr nützlichen Hinweise und den Link auf den Beitrag von Kathe Spracklen!

Ich werde das mal verinnerlichen und schauen, ob ich solche Muster in den ROMS des Sensory 9 finden kann. Ich werde auch versuchen, den Zuggenerator zu finden. Ich konzentriere mich auf das Sensory 9, weil ich ein solches Gerät besitze.

Ich habe vor ein, zwei Jahren vom ursprünglichen Sargon (1978) den kommentierten Z80-Assembler-Code assembliert und auf meinem Z80-Eigenbau zum Laufen gebracht. Dort bin ich recht gut dokumentiert. Ich weiss aber nicht, ob und wieviel dieser Ur-Sargon-Programm-Logik noch im Sensory 9 zu finden ist.

Schöne Grüsse. Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #16  
Alt 20.11.2023, 09:43
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Hannes,

Mal ein erster Gedanke zur Codierung des Eröffnungsbuchs:

Gemäss "https://www.schachcomputer.info/forum/showthread.php?t=4261" kann z.B. das CB16-Eröffnungsmodul für folgende Fidelity-Geräte eingesetzt werden: Prestige, Elite A/S, Elite 5.0, Elite AVG 6081/6088, Elegance, Sensory 12, Sensory 9, Playmatic und Elite Private.

Wenn das im CB16 enthaltene Eröffnungsbuch entsprechend "https://content.iospress.com/downloa...al%2Ficg6-1-04" codiert wäre ("move generator displacements"), würde das heissen, dass die oben aufgeführten Geräte alle den gleichen Zuggenerator verwenden müssten.

Stimmt meine Überlegung?

Falls das so ist, wäre es interessant, genau zu wissen, wie der Zuggenerators des Sensory 9 funktioniert.

Beim Ur-Sargon (1978) ist das Verhalten des Zuggenerators durch das interne Schachbrett und die Tabellen "direction table", "direction table pointer", "direction table counter" festgelegt.

Ich habe aber im Moment keine Ahnung, ob die Spracklens den Zuggenerator auch so im Sensory 9 programmiert haben.
Bis jetzt habe ich diese Ur-Sargon-Tabellen im Sensory 9-ROM nicht lokalisieren können.

Und ich habe den Einsprungspunkt für den Zuggenerator im Sensory 9-ROM auch noch nicht gefunden.

Hat jemand einen Hinweis darauf, wie der Zuggenerator im Sensory 9 aufgebaut ist?

Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #17  
Alt 20.11.2023, 10:43
Benutzerbild von Mychess
Mychess Mychess ist offline
Saitek Leonardo
 
Registriert seit: 07.03.2009
Beiträge: 89
Abgegebene Danke: 155
Erhielt 126 Danke für 70 Beiträge
Aktivitäten Langlebigkeit
4/20 16/20
Heute Beiträge
1/3 sssssss89
Re: AW: Codeanalyse

Hello,

A quick search of the dissasembly :

Code:
C20C : 00 03 06 06 19 19 19 19 14 14 0F 0F     ; offset in C218 table
C218 : 11 0F 00                         ; black pawn 
C21B : F1 EF 00                         ; white pawn 
C21E : F2 EE E1 DF 21 1F 12 0E 00       ; knight
C227 : F1 EF 11 0F 00                   ; bishop
C22C : FF F0 10 01 00                   ; rook
C231 : FF F1 F0 EF 11 10 0F 01 00       ; king, queen

C6E7            LC6E7:
C6E7 : 84 02            sty     X0002
C6E9 : BD EC C1         lda     XC1EC,x
C6EC : 85 B8            sta     X00B8
C6EE : BD CC C1         lda     XC1CC,x
C6F1 : 85 AD            sta     X00AD
C6F3 : BC 20 03         ldy     X0320,x
C6F6 : BE 0C C2         ldx     XC20C,y
C6F9 : C0 06            cpy     #$06
C6FB : 90 1F            bcc     LC71C
C6FD            LC6FD:
C6FD : BD 18 C2         lda     XC218,x
C700 : F0 30            beq     LC732
C702 : A4 02            ldy     X0002
C704            LC704:
C704 : 18               clc
C705 : 98               tya
C706 : 7D 18 C2         adc     XC218,x
C709 : A8               tay
C70A : 29 88            and     #$88
C70C : D0 0B            bne     LC719
C70E : A5 AD            lda     X00AD
C710 : 51 B8            eor     (X00B8),y
C712 : 91 B8            sta     (X00B8),y
C714 : B9 80 00         lda     X0080,y
C717 : 30 EB            bmi     LC704
C719            LC719:
C719 : E8               inx
C71A : D0 E1            bne     LC6FD
C71C            LC71C:
C71C : BD 18 C2         lda     XC218,x
C71F : F0 11            beq     LC732
C721 : 18               clc
C722 : 65 02            adc     X0002
C724 : A8               tay
C725 : 29 88            and     #$88
C727 : D0 06            bne     LC72F
C729 : A5 AD            lda     X00AD
C72B : 51 B8            eor     (X00B8),y
C72D : 91 B8            sta     (X00B8),y
C72F            LC72F:
C72F : E8               inx
C730 : D0 EA            bne     LC71C
C732            LC732:
C732 : 60               rts


Cordially.

Geändert von Mychess (20.11.2023 um 11:41 Uhr)
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Mychess für den nützlichen Beitrag:
kamoj (21.11.2023), Moonshine (20.11.2023)
  #18  
Alt 20.11.2023, 11:16
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Great! Thanks a lot.

I found it, slightly shifted.
(e.g. from 0xc218 to 0xc21c, i use ROM version 101-1034a01),

Best regards
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #19  
Alt 20.11.2023, 12:14
Moonshine Moonshine ist offline
Super System III
 
Registriert seit: 25.07.2010
Land:
Beiträge: 13
Abgegebene Danke: 16
Erhielt 18 Danke für 10 Beiträge
Aktivitäten Langlebigkeit
4/20 14/20
Heute Beiträge
1/3 sssssss13
AW: Codeanalyse

 Zitat von Hans21 Beitrag anzeigen
Hallo Hannes,


Wenn das im CB16 enthaltene Eröffnungsbuch entsprechend "https://content.iospress.com/downloa...al%2Ficg6-1-04" codiert wäre ("move generator displacements"), würde das heissen, dass die oben aufgeführten Geräte alle den gleichen Zuggenerator verwenden müssten.

Stimmt meine Überlegung?

Hans
Ja, das sehe ich genauso. Ich habe auch schon probiert das Eröffnungsbuch CB9 im Sargon 4.0 zu verwenden. Funktioniert zum Teil.
Wo sich der Zuggenerator befindet hat Cordially schon gezeigt. Die Offsets für die Zugberechnungen habe ich auch schon gefunden. Da das eine 0x88 Brettdarstellung ist muß man mit 16 Bytes rechnen, statt mit 10 wie bei den ersten Büchern des Sargon 2.5/3.0. Das Eröffnungsbuch liegt beim Sensory 9 ab Adresse $F45D. Ich habe die ersten Bytes mit dem Buch des Sargon 4.0 verglichen. Stimmt überein, wenn man Bit 7 ignoriert. Ein gesetztes Bit zeigt hier wohl eine "(" an. Wofür die Steuerbytes "C0" und "C1" am Anfang des Buches sind, habe ich noch nicht herausgefunden.
Ich werde jetzt mal probieren das CB16 in das Sargon 4.0 ROM einzubauen. Ich nehme an, dass die Programme alle das selbe Buchformat verwenden.
Ich bin noch immer dabei tiefer in diese Materie einzusteigen :-)

Lg

Hannes
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu Moonshine für den nützlichen Beitrag:
kamoj (21.11.2023)
  #20  
Alt 20.11.2023, 13:59
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Hannes,

Ja genau, das interne Buch liegt bei 0xf45d. Diese Adresse schreibt das Programm nach dem Reset ins RAM nach 0x00b8 (LSB) und 0x00ba (MSB). Nachher wird aber noch geprüft ob z.B. das CB16-Modul installiert ist. Wenn das der Fall ist, wird 0x200b ins RAM nach 0x00b8 (LSB) und 0x00ba (MSB) überschrieben, also so eine Art "pointer" auf das zu verwendende Eröffnungsbuch. Mittlerweile vermute ich auch, dass eine 0x88-Brettdarstellung verwendet wird. Und zwischen 0xc000 und 0xc21b sehe ich Daten/Tabellen, die ich aber noch nicht näher zuordnen kann. Die Ur-Sargon-Brett- und Zug-Logik scheint also im Sensory 9 nicht mehr verwendet zu werden.

Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du bist nicht berechtigt, neue Themen zu erstellen.
Du bist nicht berechtigt, auf Beiträge zu antworten.
Du bist nicht berechtigt, Anhänge hochzuladen.
Du bist nicht berechtigt, deine Beiträge zu bearbeiten.

BB code ist An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:56 Uhr.



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