![]() |
AW: Re: Codeanalyse
Zitieren:
The idea with this table sounds convincing to me. However, so far I have failed to locate this table in the Sensory 9-code that I use. Hans |
AW: Codeanalyse
Zitieren:
diese Zahlenfolge habe ich aus dem Rom-Dump des Sensory 9. Ist mit dem Anfang des Sargon 4.0 gleich, bis auf die Tatsache, dass dort einige Bit7 noch gesetzt sind. Vermutlich weil das Buch des Sargon 4.0 größer ist und deswegen mehrere Eröffnungsvarianten enthält. Deshalb braucht die Codefolge auch mehr öffnende Klammern. Zu den "Steuerzeichen" "C0/C1" kann ich noch nichts genaues sagen. Sie kommen aber nur ganz am Anfang vor, also von der Grundstellung ausgehend und dann nur mehr sehr vereinzelt. Um das Eröffnungsbuch zu dekodieren versuche ich folgende Wege zu gehen: 1. direkte visuelle Begutachtung und Vergleich mit dem bereits dekodierten Buch des Sargon 2.5. Da konnte ich sofort feststellen, dass das Format doch ganz anders ist. 2. Durch verschieben des Buches in einen anderen Speicherbereich. Dabei konnte ich feststellen, dass im Buch keine absoluten Links enthalten sind, da das Buch auch in einem anderen Bereich einwandfrei läuft. Nicht so beim Buch des Sargon 2.5/3.0 und 3.5. Aber da bin ich mir noch nicht ganz sicher, da ich Code im Listing gefunden habe der dem widerspricht. 3. Durch patchen von einzelnen Werten des Buches. Dabei habe ich entdeckt, dass die Züge als Index auf die Zugliste gespeichert werden. 4. Durch Verwendung eines 6502 Simulators. Ich lade den Code in das Programm "6502 Simulator" von Michael Kowalski und lasse das Programm im Einzelschritt laufen. Das ist zwar sehr mühsam, bringt aber die eine oder andere Erkenntnis. Das ist allerdings nicht ganz leicht, da man Speicherbereiche manipulieren muss um dem Programm die richtige Figurenstellung mitzuteilen. Ich habe mir da die IRQ-Routine des Sargon 4.0 leicht abändern müssen, da er sonst beim Aufruf des IRQ keine Figuren gefunden hätte, da der Simulator nicht direkt mit der I/O zusammenarbeiten kann. Im CB-Emu dürfte das nicht so einfach gehen. Da müsstest Du Franz Huber mal direkt darauf ansprechen. Im Sargon 4.0 Listing finde ich die Tabelle, die Mychess erwähnte, auch nicht. Aber vielleicht wird diese erst zur Laufzeit erzeugt oder sieht etwas anders aus. z.B.: könnten die Brettkoordinaten der Felder hintereinander gespeichert worden sein. Als am zielführendsten halte ich nach wie vor, die Analyse im 6502 Simulator. Lg Hannes |
Re: AW: Re: Codeanalyse
Zitieren:
Table discovered in 2007 (date noted, I'd had a hard time!), it took me 2 hours this morning to work out where I'd got it from (no comment, so obvious when you've found it, but 16 years later...). Use of chained sub-chains probably to save space in rom. The starting point is #$33, $C133 returns #$43, $C143 returns #$34, $C134 returns #$44... Cordially. |
AW: Codeanalyse
Hello Mychess,
Thanks a lot for the hint. That sure is a tough one. This I have to digest first. Did they need to save memory space or is that just "obfuscation"? (In my opinion the memory at the start of 0xc000 is not utilized very economically, but I might be completely wrong). Best regards Hans |
AW: Re: AW: Re: Codeanalyse
Zitieren:
thank you very much. I also found this table in Sargons 4.0 ROM. Hannes |
AW: Re: AW: Re: Codeanalyse
Zitieren:
at end of a letter or post, 'cordially' (or 'cordially yours') is an alternative to e.g. 'best regards'. Not a nickname ;) Schönen Gruß, Eric |
AW: Codeanalyse
Hello Tibono,
thanks for the tip. I didn't know that! Hannes |
AW: Codeanalyse
Hallo Hannes,
Meine frühere Nachricht dazu ging offenbar verloren. Ich habe bemerkt, dass CB-Emu eine vollständige Debugger-Umgebung enthält. Ich werde das mal ausprobieren. Hans |
AW: Codeanalyse
Zitieren:
kannst Du mir bitte Näheres zu dieser Debugger-Umgebung sagen? Das würde mich auch sehr interessieren. Danke und Lg Hannes |
Re: Codeanalyse
Hello,
About the sensory 9 opening library : - Subroutine F291 looks for a next move in the library and tests whether it is the same one that has been played. If so, finish, if not, then test its brothers. If they are all different or no brothers, end library. Code:
Check that you are not already out of the library. If code #$C4, no hit and end of library. If code #$C2, it is a jump, 2 following bytes are the address (if null address, end of library). Otherwise normal move. The Sensory 9 has a special mode (F5) that allows this library to be extended to less good moves. Cordially. |
AW: Codeanalyse
Hallo Hannes,
Ich öffne auf meiner Linux-Maschine eine Kommandozeile und gehe ins Verzeichnis wo "CB-Emu.exe" liegt. Dort gebe ich den Befehl "wine CB-Emu.exe -debug fscc9a1" ein. "fscc1a" ist in der letzen CB-Emu-Version der Name für das Sensory 9-1.6MHz-Gerät. Auf einer Windows-Machine sollte es ähnlich gehen, einfach ohne "wine", also: "CB-Emu.exe -debug fscc9a1" Du siehst dann neben dem Brett eine Debug-Konsole. Die Anleitung dazu steht in "https://docs.mamedev.org/" unter "Mame Debugger". Man kann sich dann z.B. auch in Echtzeit den RAM-Inhalt anzeigen lassen. Allerdings habe ich mir bis jetzt noch keinen Reim darauf machen können, wie das Brett und die Figuren kodiert sind. Vielleicht findest du das raus. Hans Zitieren:
|
AW: Re: Codeanalyse
Zitieren:
Great. Thanks a lot! In Ghidra, as well an in the CB-Emu-Debugger I have the Sensory 9-1.6 MHz-ROM. There I have found it, but at a higher address, namely LAB_f346 XREF[1]: f350(j) f346 20 8a f3 JSR FUN_f38a undefined FUN_f38a() f349 c5 9b CMP DAT_009b f34b f0 0a BEQ LAB_f357 f34d 20 a7 f3 JSR FUN_f3a7 undefined FUN_f3a7() f350 90 f4 BCC LAB_f346 f352 a9 ff LDA #0xff f354 85 9a STA DAT_009a f356 60 RTS I guess it is the same. Am I right? Best regards Hans |
Re: AW: Codeanalyse
Zitieren:
Code:
0x0060 : 10 11 12 13 14 15 16 17 white pawns In 0x60+0c, 00 Perhaps you need : 0x0320 : 00 00 00 00 00 00 00 00 white pawn type 0x0328 : 02 02 0a 0a 08 08 06 04 white piece type 0x0330 : 01 01 01 01 01 01 01 01 black ... 0x0338 : 03 03 0b 0b 09 09 07 05 black ... Cordially |
AW: Codeanalyse
Great. Now I see it (see below). Thanks, Hans
CB-Emu-debugger-memory-dump of "fscc9a1" in start position: 0000: 00 00 70 FF 20 00 00 00 00 00 34 14 00 00 FF FF ..p. .....4..... 0010: 0C 64 44 01 00 00 0C 20 00 00 E4 00 00 00 00 00 .dD.... ........ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060: 10 11 12 13 14 15 16 17 01 06 02 05 00 07 03 04 ................ 0070: 60 61 62 63 64 65 66 67 71 76 72 75 70 77 73 74 `abcdefgqvrupwst 0080: 0C 08 0A 0E 0F 0B 09 0D 00 80 10 00 01 00 00 00 ................ 0090: 00 01 02 03 04 05 06 07 00 00 00 0C 20 00 00 FF ............ ... 00A0: 80 80 80 80 80 80 80 80 00 70 00 08 10 08 68 C2 .........p....h. 00B0: 80 80 80 80 80 80 80 80 88 02 0B 20 00 00 00 00 ........... .... 00C0: 80 80 80 80 80 80 80 80 00 00 00 00 00 00 01 00 ................ 00D0: 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 ................ 00E0: 10 11 12 13 14 15 16 17 14 34 00 00 14 34 00 00 .........4...4.. 00F0: 1C 18 1A 1E 1F 1B 19 1D 00 00 00 00 00 00 00 00 ................ |
AW: Codeanalyse
Zitieren:
danke, das funktioniert wunderbar! Werde mich damit mal ein wenig beschäftigen. Wie das Brett dargestellt wird, hat Mychess schon beantwortet. Das sehe ich im Simulator auch sehr schön. Aber dieser Debug-Modus von CB-Emu ist wahrscheinlich brauchbarer. Lg Hannes |
AW: Codeanalyse
Hallo Hannes,
Nur so der guten Ordnung halber: Ich mache meine Experimente mit Ghidra und dem CB-Emu-Debugger mit der Maschinen-Version "fscc9a", also den ROMs 101-1034a01 und 101-1034b02. (d.h. NICHT mit "fscc9a1".) Das spielt eine Rolle beim Setzen von Breakpoints, Vergleichen von Code-Abschnitts usw. Welche ROM-Version meine physische Maschine hat, weiss ich nicht. Aufgrund der Seriennummer (23303798) vermute ich ein Baujahr 1982 und damit eine ROM-Version wie "fscc9a" oder "fscc9a1". Hans |
AW: Codeanalyse
Zitieren:
die Roms im fscc9a1 haben die gleichen Namen wie die des fscc9a. Ich habe die beiden ROMs mal verglichen und nur wenige Unterschiede gesehen, die ich allerdings nicht genauer untersucht habe. Aber natürlich sind dann gewisse Routinen an anderer Adresse zu finden. Die ersten 8kB ROM sind identisch. Ich habe nun das Eröffnungsbuch des Sensory 9 in das Sargon 4.0 Rom kopiert und getestet. Es funktioniert dort einwandfrei, obwohl es in einem anderen Speicherbereich liegt. D.h. Im Buch gibt es keine absoluten Links (Verkettungen). Ich bin noch dabei mir die Debugger-Möglichkeiten des CB-Emu anzusehen. Werde das jetzt auch mit der selben ROM-Version wie Du machen. schöne Grüße Hannes |
AW: Codeanalyse
Hallo Hannes,
Im Moment komme ich mit der Interpretation der folgenden Tabelle nicht weiter. Von C23E bis C267 gibt es eine Tabelle, die vom Zuggenerator verwendet wird ("fscc9a"): C23E: 00 80 C240: 08 88 00 80 08 88 00 80 08 88 05 05 05 05 06 06 C250: 06 06 07 07 07 07 3C 3C 3C 3C 1E 28 28 1E 00 08 C260: 0F 15 1A 1E 21 23 24 24 Ich habe die Logik noch nicht verstanden. Weisst du da mehr? Schöne Grüsse, Hans |
AW: Codeanalyse
Zitieren:
ich habe mir die Tabelle eben mal angesehen und ein paar Versuche im CB-Emu-Debug-Mode vorgenommen. Die Tabelle reicht von $C23E - $C255 und beinhaltet Adresslinks ins RAM. Von $C23E - $C249 sind die lower Bytes gespeichert, von $C24A - $C255 die dazugehörigen High-Bytes. Die Tabelle ist also 12 Einträge groß. Leider werde ich auch nicht schlau daraus, was letztendlich in diesem Adressbereich während der Zuggenerierung gespeichert wird. Ich habe auch bis jetzt noch keine Zugliste gefunden die im RAM stehen würde. Beim Sargon 2.5/3.0/3.5 habe ich die auf Anhieb gefunden. Ich denke, ich muss jetzt mal versuchen umzudenken :-). Lg Hannes |
AW: Codeanalyse
Hallo Hannes,
Ich sehe u.a. bei 04A0 bis 04AF eine Byte-Folge, offenbar mit Felder- und Figuren-Codes, die sich nach jedem Zug ändern. Hans |
AW: Codeanalyse
Zitieren:
Hannes |
AW: Codeanalyse
Hallo Hannes,
Den aktuellen Zug sehe ich u.a. bei: 00E8: MOVE_FROM_FIELD 00E9: MOVE_TO_FIELD Was ich gerne sähe, wäre eine Liste der vorausberechneten Züge. Hans |
Re: Codeanalyse
Ich habe mir den SC9-Code ein wenig angesehen und herausgefunden, dass die Option F5 nach dem Reset zwar implementiert, aber nicht dokumentiert ist.
Weiß oder vermutet jemand, was sie steuert? /Lars |
AW: Re: Codeanalyse
Hallo Lars,
Zitieren:
Grüße, Franz |
Re: Codeanalyse
Danke Franz, ich schrieb falsch, was ich meinte ist "H6", die nicht beschrieben ist!
(Siehe Code AT $EA57 (AND #$10) und $EA6D.) Es tut mir leid für meinen Fehler, versuchen Sie mir zu verzeihen. Wissen Sie, was H6 macht? /Lars |
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©Schachcomputer.info