Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 18 Mai 2022, 14:06

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


[SORCERY] DASM



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
amiga68000
 Sujet du message : [SORCERY] DASM
Message Publié : 03 Mai 2021, 21:48 
Hors-ligne

Inscription : 02 Mai 2021, 17:23
Message(s) : 9
Bonsoir,

Comme j'expliquais dans mon message de présentation viewtopic.php?f=11&t=6514 j'ai à coeur de découvrir les entrailles du CPC et son langage machine Z80.

Pour cela, j'ai entrepris de désassembler SORCERY, ce jeu magnifique que j'ai adoré.

Je me suis fait un desassembleur sous python (si certains le souhaite mais attention il est codé à l’arrache !), peut être en existe-t-il un sous PC prêt à l'emploi ?


----------------------------------------
CODE RELOGE ?
----------------------------------------
Alors voilà, après avoir désassemblé le binary (42Ko) le code est relogé de son adresse d'origne 014ah vers 05DCh

Code :
014ah : LD HL,A67Bh     ; 217BA6
014dh : LD DE,AAFFh     ; 11FFAA
0150h : LD BC,A524h     ; 0124A5
0153h : LDDR      ; EDB8
0155h : JP 05DCh     ; C3DC05

1ere question : quelle est l'utilité de reloger le code plutôt que de mettre dans le header du binary directement l'adresse 05DCh ?

----------------------------------------
INIT REGISTRES ?
----------------------------------------
Une fois relogé, le code démarre par ces instructions :

Code :
Start:
      DI     
      LD    SP,ecran_C000 
      LD    BC,7F8Ch     ;Mode 0 + Désactive ROM basse & sup
      OUT   (C),C 
      CALL  Lbl1_1bdd
      ...


Lbl1_1bdd:
      LD    DE,0000h 
Lbl14_1be0:
      LD    A,D 
      CALL  Lbl13_22f1 
      INC   D 
      LD    A,D 
      CP    0Eh     ;compare A-byte
      JR    NZ,Lbl14_1be0     ;saute si non zéro (Z flag = 0)
      LD    A,07h 
      LD    E,3Fh 
      CALL  Lbl13_22f1 
      RET     

Lbl13_22f1:
      PUSH  BC 
      LD    B,F4h 
      OUT   (C),A 
      LD    B,F6h 
      LD    A,C0h 
      OUT   (C),A 
      XOR   A     ;raz A
      OUT   (C),A 
      LD    B,F4h 
      OUT   (C),E 
      LD    B,F6h 
      LD    C,A 
      OR    80h 
      OUT   (C),A 
      OUT   (C),C 
      POP   BC 
      RET


Ça semble être une config graphique ou autre (boucle de 15 couleurs mais j'en suis pas sûr), je comprends pas trop les accès et les façons d'dresser les registres $F4xx, $F6xx (peut être ce n'est pas celà du tout)

Bref je suis sec et je n'aurais rien contre des commentaires bien placés sur ce code ;-)

Merci d'avance de votre aide

Arnaud


Haut
 Profil  
 
marcel
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 03 Mai 2021, 22:16 
En ligne
Rulezzz
Rulezzz

Inscription : 26 Juil 2016, 13:06
Message(s) : 388
C'est impossible de charger un programme qui terminerait si haut en mémoire => De=#AAFF

Pour le reste, je pense que si tu veux re-découvrir le Z80 tu ferais mieux de tracer des jeux à l'exécution dans un émulateur (et même plusieurs jeux!)


Haut
 Profil  
 
amiga68000
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 03 Mai 2021, 22:22 
Hors-ligne

Inscription : 02 Mai 2021, 17:23
Message(s) : 9
Merci pour l'info.

Oui en même temps je trace le code dans l'émulateur et je vais tenter d'identifier les différentes routines.


Haut
 Profil  
 
Tronic
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 04 Mai 2021, 08:11 
Hors-ligne
Rulez
Rulez

Inscription : 07 Avr 2013, 13:40
Message(s) : 24
Bonjour,
Dès fois que et vu que personne ne l'évoque... :

- Oui, il existe un désassembleur intéressant sur PC, Disark (auteur : Targhan)
http://julien-nevo.com/disark/

- Également un script python (expérimental) qui permet d'approfondir/distinguer code/data, z80-smart-disassembler (auteur : Siko)
https://github.com/sikorama/z80-smart-disassembler

- Sur RasmLive, une ébauche de désassemblage de Sorcery (ainsi que d'autres jeux) avait déjà été commencé :
https://rasmlive.amstrad.info/edit/KxbrM9CDkG2n5v3sM
https://rasmlive.amstrad.info/browse

RasmLive te permettant de tester/modifier/visualiser en live du code z80 assemblé avec l'assembleur Rasm (Auteur : RoudoudouMarcel) et injecté dans un émulateur en ligne Tiny8bit (Auteur : floooh)
https://rasmlive.amstrad.info/doc

Bon amusement...


Haut
 Profil  
 
marcel
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 04 Mai 2021, 17:09 
En ligne
Rulezzz
Rulezzz

Inscription : 26 Juil 2016, 13:06
Message(s) : 388
amiga68000 a écrit :
Merci pour l'info.

Oui en même temps je trace le code dans l'émulateur et je vais tenter d'identifier les différentes routines.


ce qui peut être intéressant à faire est de partir (comme Tronic en parle concernant Rasm-Live et certains jeux décompilés dispos) d'un SNAPSHOT de la mémoire une fois que le jeu s'est initialisé, sinon tout désassemblage va etre aux fraises sur les redirections et des données risquent de manquer


Haut
 Profil  
 
amiga68000
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 04 Mai 2021, 19:22 
Hors-ligne

Inscription : 02 Mai 2021, 17:23
Message(s) : 9
Merci beaucoup pour les (top) liens Tronic, y a de quoi faire !

Oui Marcel, je desassemble au fur et à mesure avec le debug de l'émulateur


Haut
 Profil  
 
velus
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 06 Mai 2021, 02:04 
Hors-ligne
Rulezz
Rulezz

Inscription : 05 Août 2011, 14:38
Message(s) : 148
Va voir sur
https://www.chibiakumas.com/z80/#z80


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 06 Mai 2021, 18:39 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 4827
velus a écrit :
Va voir sur
https://www.chibiakumas.com/z80/#z80

Sinon t'as 3 tonnes de cours que je m'amuse a numérisé depuis presque une 20ene d'année sur ce lien : https://cpcrulez.fr/coding_menu-cours_e ... ations.htm :cow: :pig: :cow:


Haut
 Profil  
 
amiga68000
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 08 Mai 2021, 21:19 
Hors-ligne

Inscription : 02 Mai 2021, 17:23
Message(s) : 9
Merci pour les liens, ça fait une sacrée mine d'informations
J'ai déjà commencé à les parcourir.

J'avoue que les doc de ce site sont très lisible, bravo.


Haut
 Profil  
 
amiga68000
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 08 Mai 2021, 21:30 
Hors-ligne

Inscription : 02 Mai 2021, 17:23
Message(s) : 9
Voici mes travaux du moment : le source partiellement désassemblé.

Il n'est pas directement interprétable car j'ai pas encore balisé les lignes comme il se doit
Il reste des blocs non désassemblés, certains sont des data, d'autres du codes.

Si vous reconnaissez des blocs ou fonctions de sub je suis preneur
Si vous souhaitez mon source python (en l'état) pour désassembler, je suis donneur !


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
Nemo59
 Sujet du message : Re: [SORCERY] DASM
Message Publié : 09 Mai 2021, 09:58 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 03 Oct 2020, 16:46
Message(s) : 97
Intéressant tout cela. Je me (re)mets (un peu) ) l'assembleur Z80 ;D


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.