CPC Rulez https://cpcrulez.fr/forum/ |
|
[SORCERY] DASM https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6516 |
Page 1 sur 1 |
Auteur : | amiga68000 [ 03 Mai 2021, 21:48 ] |
Sujet du message : | [SORCERY] DASM |
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 |
Auteur : | marcel [ 03 Mai 2021, 22:16 ] |
Sujet du message : | Re: [SORCERY] DASM |
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!) |
Auteur : | amiga68000 [ 03 Mai 2021, 22:22 ] |
Sujet du message : | Re: [SORCERY] DASM |
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. |
Auteur : | Tronic [ 04 Mai 2021, 08:11 ] |
Sujet du message : | Re: [SORCERY] DASM |
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... |
Auteur : | marcel [ 04 Mai 2021, 17:09 ] |
Sujet du message : | Re: [SORCERY] DASM |
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 |
Auteur : | amiga68000 [ 04 Mai 2021, 19:22 ] |
Sujet du message : | Re: [SORCERY] DASM |
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 |
Auteur : | velus [ 06 Mai 2021, 02:04 ] |
Sujet du message : | Re: [SORCERY] DASM |
Va voir sur https://www.chibiakumas.com/z80/#z80 |
Auteur : | hERMOL [ 06 Mai 2021, 18:39 ] |
Sujet du message : | Re: [SORCERY] DASM |
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 |
Auteur : | amiga68000 [ 08 Mai 2021, 21:19 ] |
Sujet du message : | Re: [SORCERY] DASM |
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. |
Auteur : | amiga68000 [ 08 Mai 2021, 21:30 ] |
Sujet du message : | Re: [SORCERY] DASM |
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 ! |
Auteur : | Nemo59 [ 09 Mai 2021, 09:58 ] |
Sujet du message : | Re: [SORCERY] DASM |
Intéressant tout cela. Je me (re)mets (un peu) ) l'assembleur Z80 ;D |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |