comment transformer une MEMO7 en .CHG

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

__sam__
Messages : 3815
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment transformer une MEMO7 en .CHG

Message par __sam__ » 17 avr. 2016 00:48

petitjd a écrit :J'ai essayé de mon côté pour Choplifter, mais je bute à un endroit:
le code en $20-$21 est: $FC63 (ca correspond à un LDD $63 ???)
C'est un LDD $63xx, une instruction sur 3 octets. Il faut donc regarder en $22 aussi pour avoir l'intégralité de l'instruction. Il faudra donc trouver 5 octets de libres pour la déplacer ailleurs (3 octets pour l'instruction + 2 pour le bra).

Code : Tout sélectionner

0020 FC6330     LDD    $6330              
0023 FD6364     STD    $6364              
0026 108E0004   LDY    #$0004             
002A BD079F     JSR    $079F
le code en $1E-$1F est: $18DE
Par contre là il y a un soucis. L'addresse de boot n'est pas en $20, ce qui veut dire qu'on saute en $20 depuis ailleurs. Il faut je suppose alors nécéssairement trouver tous les endroits où l'on saute en $20 et patcher ces sauts aussi.

Avec le débugger, en placant un point d'arret en $0020, j'ai trouvé $00BD sur la pile, et 3 octets plus avant on trouve un JSR $0020 en $00BA. C'est un début, mais il y en a peut-être d'autres endroits où l'on appelle $0020. Je pense qu'il n'y a pas d'autres solutions que de patcher le fichier ROM en $00BA, remettre un point d'arret en $0020 jouer et voir si on accroche encore cette adresse.

Bon courage!

[EDIT] Je te coupe l'herbe sous le pied, mais j'étais trop tenté de tester la manip pour TO8 moi-même:
Image1.png
Patch ROM
Image1.png (82.3 Kio) Vu 800 fois


Et bien, ca marche! 8) Mais attention, il y a un gag. Quand dans exploitation de programme on selectionne le CHG la 1ere fois, l'écran est codé en forme seule. Les couleurs ne seront pas modifiées lorsque le jeu est lancé par cet ouil la première fois et on a un jeu avec un fond bleu dans la zone de jeu. C'est le bleu de "exploitation de programme" qui est resté.
Image
En revanche, si on reboot, et qu'on reselectionne le CHG résident dans l'exploitation de programme, alors le jeu apparait en option 6 avec les bonnes couleurs
Image
dcmoto.png
dcmoto.png (3.42 Kio) Vu 800 fois
Donc c'est preque parfait, au petit détail de la couleur la 1ère fois. Si vous voulez tester, voici le FD et le CHG qu j'ai fait dans un ZIP:
choplift.zip
Fichier FD/CHG
(24.01 Kio) Téléchargé 32 fois
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 9748
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel » 17 avr. 2016 08:36

Un de mes correspondant vient de me passer le logiciel miracle pour transformer une MEMO7 en .CHG.
Je n'ai pas le temps de le tester ni de le mettre en ligne ce week-end, je compte sur vous pour l'essayer :wink:
appli-cartouche_to8fd.zip
(8.04 Kio) Téléchargé 33 fois
01.png
01.png (1.54 Kio) Vu 794 fois
02.png
02.png (3.16 Kio) Vu 794 fois
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 3815
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment transformer une MEMO7 en .CHG

Message par __sam__ » 17 avr. 2016 10:26

J'ai essayé sur choplifter. Ca marche mieux au niveau de la couleur du fond qui est bien noire. Mais le jeu plante dès le splash-screen. La raison: $A55A est bien présent, mais la routine en $00BA n'est pas patchée :( C'est dommage le programme BASIC est pas mal fait avec d'effets graphiques subtiles, mais ils n'ont pas prévus le coup d'une opération sur 3 octets en $0020 je pense.

Pour la couleur de fond, je crois que c'est lié à ma modif de l'entée DIR sur la D7. En effet, il y a un fichier fantôme qui traine sur mon choplitf.fd. Je crois que je me suis planté dans les offset ou le checksum :oops: Bon je laisse le soin a qqn d'autre de patcher la D7 comme il le faut.
Fichiers joints
Copie de choplift.zip
Version produite par appli-cartouche (marche pas)
(12.41 Kio) Téléchargé 31 fois
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 9748
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel » 17 avr. 2016 15:01

C'est bien ce que je pensais : pour pouvoir mettre $A55A en $20 il faut déplacer le code qui s'y trouve. Un programmeur intelligent sait le faire, c'est même un jeu d'enfant pour un expert comme __sam__. Par contre un programme Basic aussi simple ne peut pas. C'est possible dans la majorité des cas, mais ça demande des techniques très élaborées pour analyser le code, repérer tous les appels et modifier le langage machine en conséquence. S'il n'y a pas 5 ou 6 octets libres c'est même impossible.

APPLICARTOUCHE est un programme officiellement commercialisé, je le mettrai donc en téléchargement sur le site dcmoto, mais ne lui faites pas confiance pour convertir les MEMO7. Convertissez-les à la main en suivant mes indications.
Daniel
L'obstacle augmente mon ardeur.

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 20:43

@__sam__: je crois qu'il y a une erreur dans ta capture d'écran en $18, il devrait y avoir 20 et non 30.

je me suis pas mal pris la tête aussi pour comprendre la valeur de l'octet qui suit le BRA, tout ca pour comprendre qu'avec un BRA, l'adressage est relatif, du coup ca devient plus clair, il suffit de compter le nombre d'octets à ajouter à là où on est pour aller vers l'adresse du branchement et donc la suite du programme.

C'est pas du tout simple de transformer une MEMO7 en .CHG, mais quand on a compris la logique, on peut s'en sortir.
Mais une fois de plus, si on ne parle pas l'assembleur, on est vite limité.

PS: pour le point d'arrêt dans dcmoto, ca se passe dans l'outil de mise au point, section "Execution", enfin je suppose, mais que faut-il choisir comme options?
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

__sam__
Messages : 3815
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment transformer une MEMO7 en .CHG

Message par __sam__ » 17 avr. 2016 21:04

Oui c'est un BRA, donc $20. C'est une capture en cours de route, je l'ai certainement modifiée par la suite. Tout comme toi c'est le calcul de l'offset qui me préoccupait à ce moment là :)

Pour DCMOTO je fais F9, ensuite je mets l'adresse sur laquelle je veux stopper (0020 par ex) dans le champ "A:" du cadre "Execution" sur la droite. Je selectionne "Exec" sur la droite (type d'arret), "Normal" en dessous et je fais "Executer". La prochaine fois que l'outil execute le code à l'adresse indiquée le programme se stoppe. Ensuite comme on a accès aux registres, on peut voir l'addresse de la pile (registre S). Dans la partie basse je tape alors cette adresse et examine les octets. C'est là que j'ai trouvé $BE, j'ai saisi alors en bas un addresse un peu plus basse $BD puis $BC jusqu'à ce que ca me semble correct et j'ai trouvé un "JSR $0020" en $BA, bingo!

Bon il faut s'y habituer et connaitre l'assembleur, mais l'usage d'un débuggeur est un incontournable pour faire du hacking/bidouille comme ici :P
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 21:23

Merci __sam__ :D
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 21:59

[EDIT 19-04-16] Le fichier CHOPLIFT.zip ci-dessous est maintenant fonctionnel.

Voici les fichiers chg et fd de Choplifter dans un zip: http://nanoreseau.net/system-cfg/chg/CHOPLIFT.zip
Je n'ai pas le bug de couleur.
En revanche, en émulation de manette avec le clavier, si on tape sur la touche Entrée du pavé numérique pour lancer le jeu, l'hélicoptère décolle tout seul en marche arrière et reste coincé comme ca, aucune commande ne répond sauf des fois la touche Entrée du pavé numérique qui donne un comportement aléatoire, des fois le jeu se fige, puis repart, des fois l'hélicoptère tourne, des fois il tire.
J'ai le même problème avec ton fichier posté un peu plus haut avec le bug de couleur.
J'ai aussi le même problème avec la cartouche, l'hélicoptère part cette fois-ci vers le haut à droite.
La version de DCMOTO utilisée est la 2015.06.04.
Modifié en dernier par petitjd le 19 avr. 2016 20:21, modifié 5 fois.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 22:18

Ok il y a du mieux, j'ai supprimé le fichier dcmoto.ini, je n'ai plus de comportement erratique de l'hélicoptère, en revanche à chaque fois qu'on appui sur la touche Entrée du pavé numérique, pour tirer ou pour tourner l'hélicoptère avec l'appui sur une direction pour faire tourner l'hélicoptère, le jeu se fige jusqu'à ce qu'on appui à nouveau sur la touche Entrée du pavé numérique.
Comportement identique sur TO7 à TO9+ en MEMO7.
En revanche, en chg, l'hélicoptère décolle tout seul à gauche.
Modifié en dernier par petitjd le 18 avr. 2016 07:35, modifié 1 fois.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 22:23

Ok, en modifiant la touche d'émulation du tir de la manette 1, ca fonctionne en MEMO7, mais en CHG, on part plein gaz à gauche.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

Daniel
Messages : 9748
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel » 17 avr. 2016 22:35

Attention aux options de dcmoto pour le pavé numérique. Il peut émuler le pavé numérique du TO8, ou les manettes, ou les deux. Si les deux options sont cochées, l'appui sur ENTREE simule à la fois le bouton ACTION et la touche ENTREE.
Daniel
L'obstacle augmente mon ardeur.

petitjd
Messages : 1756
Enregistré le : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd » 17 avr. 2016 22:47

J'ai remplacé la touche par défaut correspondant à action de la manette 1 (Entrée du pavé numérique) par le 0 du pavé numérique.
J'arrive à un fonctionnement correct en MEMO7 mais en CHG c'est comme si la manette était enfoncée sur la gauche.
Aucune option n'a été changée entre le passage de la MEMO7 vers le CHG dans dcmoto.

Dans les options de dcmoto, dans "Clavier du PC", je n'avais de coché (et j'ai toujours de coché) que "Emuler les manettes de jeu".
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

__sam__
Messages : 3815
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment transformer une MEMO7 en .CHG

Message par __sam__ » 18 avr. 2016 00:15

petitjd a écrit :Je n'ai pas le bug de couleur.
Oui je confirme, c'était lié à ma modif du FD. J'avais mis le <$01 checksum> au mauvais endroit. J'ai été trompé par le comptage à partir de 1 quand on dit octets 31 32 je crois :( Du coup ca crée une entrée fantome dans le DIR, et surtout ca fait en sorte que le CHG démarre tout de suite avec le bug ecran. Si je mets $01 $59 là où il faut je n'ai plus d'entrée fantôme, et le jeu ne démarre plus automatiquement sitôt la sélection faite dans le selecteur de gauche. Bref: tout se met à marcher comme il faut :D

[EDIT] Question: Daniel, j'ai une manette XBox connectée sur l'un de mes PC. Est-ce qu'il serait difficile pour DCMOTO d'utiliser les API de controleurs de manette PC pour émuler les manettes thomson ? En attendant, avec joytokey on peut faire en sorte que le gamepad génère les évenements clavier attendus pour l'émulateur. Mais c'est bof bof :?
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 9748
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel » 18 avr. 2016 08:53

Normalement dcmoto reconnaît les manettes de jeu HID de Windows. C'est une fonction que je ne teste jamais, car je n'utilise pas ce genre de périphérique. Si je n'ai pas fait de bêtise ça doit encore marcher.

La manette XBox est-elle reconnue comme un périphérique HID ? Si oui peux-tu essayer ?
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 3815
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: comment transformer une MEMO7 en .CHG

Message par __sam__ » 18 avr. 2016 09:09

Je teste à l'instant la 2015.06.04 (pas trouvé la 2016???) et oui ca marche. La XBOX est mappé sur la manette 0: STRIG(0) retourne -1 quand on appuie sur le bouton "A" (action ;) ), et stick(0) retourne la position du stick analogique. C'est à dire que les boutons et stick standard de la XBOX.

Oui ca marche super bien. Je me sens idiot de ne pas avoir testé avant de poser la question, mais je ne dois pas être le seul dans cette situation. Donc sachez le: DCMOTO reconnait automatiquement une manette de jeux (xbox dans mon cas) connecté au PC.

Je n'ai pas de quoi tester une 2eme manette, mais je suppose qu'elle part automatiquement sur la manette #2 du Thomson.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Répondre