La Place des Développeurs Questions sur les debuggers et l'assembleur z80
Reprise du message précédent
je pensait qu'il était mirroiré dans le memory mappingc'est la 1ere fois que je hack sur ordi , je hack des jeux consoles , ca change pleins de chose sur ordi Edité par CRT Le 05/04/2020 à 16h23
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 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
je comprendrais mieux en analysant le bout de code en langage machine en hexa , parce que la je comprend encore pas grand chose 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
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...
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
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
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
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
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
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
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
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
j'ai mis un code test dans la bank 0000 qui devait écrire dans un byte en ram en bank c000 et ca marche
Ensuite j'ai mis mon algo, mais pas d'input ... , 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
(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
Ensuite j'ai mis mon algo, mais pas d'input ... , 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
(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
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
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
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
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
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie