MSX Village forum

La Place des Développeurs Questions sur les debuggers et l'assembleur z80

CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 05/04/2020 à 16h22

Reprise du message précédent

je pensait qu'il était mirroiré dans le memory mapping :heink
c'est la 1ere fois que je hack sur ordi , je hack des jeux consoles , ca change pleins de chose sur ordi :fou :fou Edité par CRT Le 05/04/2020 à 16h23
   
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 05/04/2020 à 17h07
ca donne quoi en langage machine pour appeler une routine qui va simuler un appuie sur A du joystick (pas de assembleur , le code direct en hexa) ?

je comprendrais mieux en analysant le bout de code en langage machine en hexa , parce que la je comprend encore pas grand chose :oups aux termes et syntaxes humaine des bouquins msx/z80 alors que du code hexa c'est lu en 2s avec la liste d'opcodes sous les yeux
Edité par CRT Le 05/04/2020 à 17h33
   
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 555

Le 05/04/2020 à 17h46
moi je te vois bien programmer un microprocesseur risc avec des cartes perforées, comme tout vrai codeur ...


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 05/04/2020 à 17h51
:lol
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 05/04/2020 à 17h52
000D8H GTTRIG GeT TRIGger button status
Nom : GTTRIG
Adresse : 000D8H/ROM
Type: MSX1 - 1 -
Rôle : renvoi de l'état du bouton de tir
Entrée : A - numéro du bouton de tir (0-4)
Sortie : A - 0FFH si le bouton n'est pas enfoncé
0 si ce n'est pas le cas
Modifie : AF
Note : le bouton de tir 0 correspond à la barre d'espacement, les boutons 1 et
2 correspondent au premier bouton de tir de chaque joystick alors que
les boutons 3 et 4 correspondent au second bouton de tir des joysticks

il faut charger A avec le numéro du bouton 0 pour clavier par exemple
puis faire un CALL 000D8H
et lire A pour 0FF si le bouton n'est pas enfoncé et 0 dans le cas contraire

3E00 ld a,00Hpour la barre d'espace
CDD800 call 00D8H
FE00 cp 00H bouton enfoncé

en fait ce programme est un exemple car il faut tester l'autre valeur FFh et boucler tant que l'on n'a pas 0


:noel
Site web    
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 05/04/2020 à 17h58
Merci JIPE :top

Je vais regarder ca
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 05/04/2020 à 18h01
j'ai fait un ajout


:noel
Site web    
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 05/04/2020 à 19h17
:top

je m'y remet j'etais parti faire une petite course... Edité par CRT Le 05/04/2020 à 19h18
   
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 06/04/2020 à 19h20
Je crois que GTSTCK et GTTRIG c'est pas pour simuler un input mais pour regarder les inputs


Ne serait-ce plutôt pas cela ? :


WRTPSG

Address : #0093
Function : Writes data to PSG-register (Écrit des données dans le registre PSG)
Input : A - PSG register number
E - data write




ce qui donnerait pour simuler un input :

3E 15 charge en A la valeur 15 (pour le registre #15)
1E 00 charge en E la valeur 00 (00 ici pour "space" ou 01 pour "triggerA pl1" )
CD 9300 CALL $9300 (WRTPSG)


qui donnerait pour l'algo du hack:
(me reste à voir le fonctionnement du memory mapping et où sera le code et selon completer ce code)

sauvegarde de A avant de commencer
32 xx xx save A quelque part dans la ram avant de commencer
regarde si $000000 = c3
3A 00 00 charge $000000 en A
FE c3 compare à C3
28 02 si = c3 va à regarde si $120000 = 26
18 07 va à retour routine jeu
regarde si $120000 = 26
3A 12 00 charge $120000 en A
FE 26 compare à 26
20 06 si pas 26 va à mettre input espace
retour routine jeu
3A xx xx remet A comme avant
C3 zz zz rejump routine jeu
mettre input espace
7B charge E en A
32 yy yy save A quelque part dans la ram
3E 15 charge en A la valeur 15 (pour le #15 registre)
1E 00 charge en E la valeur 00 (00 ici pour "space" ou 01 pour "triggerA pl1" )
CD 93 00 CALL BIOS $9300 (WRTPSG)
3A yy yy remet valeur dans A
5F charge A en E
18 EB va à retour routine jeu

Edité par CRT Le 07/04/2020 à 17h47
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 07/04/2020 à 18h48
aprés étude des 2 jeux "craqués" on retrouve a chaque fois DM SYSTEM 2 de Gigamix
https://www.gigamix.jp/
on peux traduire le site avec Google Trad
et charger les DSK sur le site
un peu d'infos dans le wiki sur MSX Ressource Center
https://www.msx.org/wiki/DM-System2_BASIC_Instructions


:noel
Site web    
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 08/04/2020 à 05h06
Je pense pour la ram j'ai trouvé ca doit être la bank commencant à C000

Me reste à trouvé ou mettre le code , mais je pense j'ai aussi trouvé je le mets dans la banque 0000 intercalé dans les 1eres lignes ... Edité par CRT Le 08/04/2020 à 07h18
   
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 08/04/2020 à 16h40
j'ai mis un code test dans la bank 0000 qui devait écrire dans un byte en ram en bank c000 et ca marche :tchin


Ensuite j'ai mis mon algo, mais pas d'input ... :heink :heink , pour le call $9300 j'ai essayé les possibilités 00 ou 01 ou 02 sur le registre #14 ou #15 mais pas d'input clavier ou manette :fou :fou


(j'ai remplacé 97dd par 7000 pour m'incruster,puis a la fin de ma routine on jump à 97dd)

(memory viewer Z80 du debuger)


j'ai fait une savestate de l'image cpu du jeu avec le code
imagecpu testhack.rar


après ca me reste:
-à enlever la musique du menu (car on l'entend déjà 1ou2 secondes avant qu'on peut appuyer sur "space ou triggerA")
-rendre l’écran noir lors du menu (pour ne pas le voir une fraction de seconde)

y aurait-il un bit en ram pour jouer avec la luminosité ? Edité par CRT Le 08/04/2020 à 21h49
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 08/04/2020 à 18h15
pour l'écran noir c'est facile , il suffit d'appeler la routine 41H par un Call : CD 41 00

DISSCR
Address : #0041
Function : inhibits the screen display
Registers: AF, BC

mais il faudra restorer par un Call 44H :CD 44 00 pour revoir l'affichage

ENASCR
Address : #0044
Function : displays the screen
Registers: AF, BC


:noel
Site web    
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 08/04/2020 à 18h22
MERCI JIPE

Donc sur MSX pas grand chose est mappé en commun , faut faire des CALL pour aller bidouiller ailleurs
Je commence à mieux comprendre le hardware MSX et les explications des bouquins Edité par CRT Le 09/04/2020 à 01h13
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10650

Le 08/04/2020 à 18h23
Quelle ta config de MSXdans BlueMSX car je n'arrive pas a le lancer avec ton imagecpu ?


:noel
Site web    
CRT Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 17/03/2018 à 12h50

Messages: 51

Le 08/04/2020 à 18h40
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie