Forums de Grospixels
Bienvenue sur le forum de Grospixels : [ S'Enregistrer ]
Déjà inscrit ? [ Connexion ]
 
retour sur le site
rechercher
Index du Forum » » Technique » » Jeux avec proceseurs Chairfild
20 messages • page
1
Auteur Jeux avec proceseurs Chairfild
seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-21 13:24
Bonjour à tous.
Je dépanne actuellement un flipper électronique.
Je possède les programmes des 2 processeurs. (MK3870 de Fairchild)
Je cherche quelqu'un qui maîtrise le langage assembleur F8
Merci pour toute aide

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-21 17:49

Tu as l'air d'avoir pas mal d'infos là :

https://chessprogramming.wikispaces.com/Fairchild+F8


seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-22 15:44
Salut Z
Merci pour ta réponse
J'ai déjà feuilleté toutes ces doc.
Mais je cherche un connaisseur pour m'expliquer quelques ligne bizarres dans le prog.

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-23 10:21

Hello,

C'est un problème d'ordre algorithmique (compréhension de ce que font les lignes de code) ou plutôt un pb d'interface avec un softswitch mémoire (donc un pb de compréhension du hardware) ?

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-23 11:08
Salut Z
C'est plutôt Soft.
En fait dans le code du CPU2, j'ai des sauts à des adresses qui n' existent pas (au delà de 7FF pour une taille ROM de 2Ko ?? )
Moi pas comprendre
Pour te résumer un peu mon affaire
Les processeurs d'origine ont rendu l'âme.
J'ai fait lire les programmes et les ai mis dans 2 Eproms 2716, elles mêmes montées sur 2 CPU MK38P70.
Et vu que ça n'a pas marcher, j'ai fouillé un peu dans les prog.

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-23 14:41

Hello,

Qui a fait le désassemblage du code binaire ? Peut être que l'adresse d'origine n'est pas 0x0000 ?

Ca va loin derrière le 0x800 les sauts ?

Habituellement tu as quand même de la RAM qqpart pour la pile et les variables de ton code. Ca ne serait pas au début de la mémoire, avant les 2 KB de rom ?

Olivier

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-24 15:55
Salut Z
La rom a été extrait par Sean Riddle et désassemblée avec l'outil F8TOOL
En tête du fichier .asm, il y a ces 2 lignes :

CartridgeStart: equ $0800
CartridgeEntry: equ $0802

Sais-tu ce que ça veut dire ?

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-24 19:21

Oui il s'agit de la déclaration de 2 constantes...

Tu peux mettre ton fichier binaire et le fichier texte de désassemblage qqpart pour que je jette un coup d'œil ?

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-24 21:14
Bien sûr
Mais comment dois-je faire

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-24 21:41
Comme cela ne revêt pas un caractère privé, tu peux mettre les fichiers sur un site de partage de fichier public et copier coller le lien ici.

Olivier

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-26 11:21

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-26 23:43

Hello,

Ce qui me parait bizarre à première vue, c'est le le fichier de désassemblage ne match pas avec la ROM...

Reset: LIS $0 ; 0000 70
OUTS 1 ; 0001 b1
OUTS 0 ; 0002 b0
LR IS,A ; 0003 0b
A0004: LIS $0 ; 0004 70
LR (IS),A ; 0005 5c
LR A,IS ; 0006 0a
INC ; 0007 1f
LR IS,A ; 0008 0b
CI $40 ; 0009 25 40
BF $4,A0004 ; 000b 94 f8
LI $1a ; 000d 20 1a
LR $4,A ; 000f 54


70 0B 70 5C 0A 1F 25 40 94 F8 20 1C 58 20 EB B6
20 28 B7 29 01 C5 00 01 02 04 08 10 20 40 80 00
56 1E 0A 63 69 5E 46 5C 2C 2A 07 D0 65 68 0A 55
70 B1 16 B1 16 B5 A4 A4 18 21 0F 84 31 12 88 56


seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-27 09:18
Salut Z
Oui pas faut. Rooo, je me suis planté dans le fichier ASM

on recommence :
http://www.k-upload.fr/afficher-fichier-2016-06-27-12c9ac40ebenhurcpu2.bin.html
http://www.k-upload.fr/afficher-fichier-2016-06-27-16e4cc867benhurcpu2.asm.html

Ça devrait mieux collé !

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-27 12:37

En effet, c'est mieux !

Quelles sont les lignes du fichier Source qui te semblent douteuses ?

Tu parlais de sauts en dehors de la Rom...

Olivier

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-27 15:40
Et bien des choses comme ça :
000007FE: 80 49 BT $00,$0848
000007E1: 28 40 00 PI $4000
000007CD: 29 4A 87 JMP $4A87
0000009C: 28 48 00 PI $4800

ou aussi ça:
0000001E: 80 00 BT $00,$001F
000007E5: 80 00 BT $00,$07E6

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-27 16:00

Ok, en fait ton problème est lié à la compréhension du fichier .asm

Il n'existe aucun JMP $4A87 en 7CD.

Dans ce binaire, tu as des zones de Code et des zones de Data. Tu peux déduire les zones de données en disant que tout ce qui n'est pas du Code est de la Data.

Exemple en 650 :

0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0003 8D03 8D04 4C04 5E04 CD04 B804 C902
EE03 8D03 8D04 4C04 6104 6E04 6E04 9102
EE03 8D03 8D04 4C04 0A04 6E04 6E04 9102
CD03 8D03 8D04 4C04 0D04 6E04 6E04 9102

Ce n'est pas du code mais des Data. On voit bien des Pattern se dessiner... (0000, 8D03, 8D04, 6E04, 4C04...). Aucun code n'a des dizaines de 00 qui se suivent.

Travailles ton source et met en évidence les zones de Data. Vire le pseudo désassemblage de ces zones
car cela ne veut rien dire. Laisse l'Hexa decimal.

La Pattern 8D03 que l'on retrouve souvent est vu comme un CM / LR A,QL alors qu'il n'y a rien. C'est juste le dé-assembleur qui a mal fait son boulot. Tu dois maintenant repasser sur ton source pour le nettoyer (ajouter des labels, séparer les Data, isoler les sous routines....

Olivier


seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-28 12:23
Bonjour Olivier
C'est vrai qu'avec tes explications, c'est un peu plus clair.
Il n'y a plus de code bizarre !
Par contre c'est pas toujours évident de distinguer.
Ca ne m'explique pas pourquoi les sources ne fond pas fonctionner le flip.
Ces fameuses données, le code s'en sert-il ? et si oui comment ?

Sébastien

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-28 15:29
Ah je crois avoir trouver comment il utilise les données,
Avec l'instruction DCI
C'est ça ?

Z
Pixel imposant


Inscrit : Feb 18, 2006
Messages : 636
De : Courbevoie, 92

Hors ligne
Posté le: 2016-06-29 12:44   [ Edité le: 2016-06-29 12:57 ]
> Ah je crois avoir trouver comment il utilise les données,
> Avec l'instruction DCI

En fait ça va juste dépendre de ce que tu veux faire de ton source. Si c'est pour comprendre ce que fait le programme (afin d'essayer de savoir quelle partie pourrait bloquer le flipper), tu peux utiliser ce que tu veux.

Tu peux mettre des HEX 00 00 00 00, pour faire comprendre qu'il s'agit de données Hexadécimales.

Tu peux mettre des DC, tout ce que tu veux. En principe ces directives (DC, DA, HEX...) dépendent de l'assembleur que tu souhaites utiliser pour ré-assembler le source et obtenir un fichier binaire.

Pour l'instant, je te conseillerais de récupérer une doc du processeur et de commenter dans la marge chaque instruction pour savoir ce qu'elle fait (lecture / écriture dans la RAM, Saut, Comparaison, Opération sur les Bit...). Ensuite, il faudrait que tu trouves un doc du flipper pour comprendre comment sont mappées les entrée / sortie. En effet, le code du programme échange aussi avec l'extérieur (détection de crédit, affichage du score, détection du Tilt....). En dernier, je réorganiserais les Data pour les organiser selon leur utilisation. Tu peux avoir des Byte ou des WORD. Les Word peuvent s'afficher soit en little endian soit en big endian (4C04 devient en fait 044C). Donc les Data 0003 8D03 8D04 4C04 5E04 CD04 B804 devraient s'afficher comme cela :

0300
038D
048D
044C
045E
04CD
04B8

Ce qui a plus de sens que précédemment (les valeurs se 'suivent'). Il faut ensuite détecter dans le code la partie qui utilise les valeurs de cette table pour en comprendre l'utilité.

Olivier

seb890
Pixel microscopique


Inscrit : Jun 21, 2016
Messages : 11

Hors ligne
Posté le: 2016-06-29 22:04
Bonsoir Olivier
Je possède tous les schémas du flip, je ne vais pas dire que je les connais par-cœur mais pas loin.

Pour la petite histoire, j'ai un ami qui possède le même flipper avec les processeurs d'origine fonctionnels.
Il a monté en lieu et place des MK38P70 avec les 2716 contenant les prog, et ça ne marche pas.
La difficulté est de savoir si les 2 progs délirent, ou un seul, et lequel??
j'attend qu'il essai un, puis l'autre avec un processeur d'origine.

J'ai pas mal décoder les progs et tes explications sur les data m'ont bien aider.
(même si je ne comprends pas tout ce que du dis, Pattern, little endian, big endian)

J'ai commenté chaque ligne, trouvé les sous programmes .....
Après il faut analyser

Merci à toi
Seb


Index du Forum » » Technique » » Jeux avec proceseurs Chairfild

20 messages • page
1




Forum www.grospixels.com (© 2011-2019 Grospixels)