CPC Rulez
https://cpcrulez.fr/forum/

Modification/Hack d'un jeu pour avoir des couleurs CPC+
https://cpcrulez.fr/forum/viewtopic.php?f=6&t=5616
Page 1 sur 1

Auteur :  hERMOL [ 29 Oct 2015, 13:35 ]
Sujet du message :  Modification/Hack d'un jeu pour avoir des couleurs CPC+

Bon je commence, je vais prendre pour exemple Solomon's Key : la version commercial avec la protection Alkatraz a charger sous winape (c'est là l'instrument essentiel à nos travaux )

Dans 1er temps lancer le jeu par un RUN"DISK

1) « Breaker »  le jeu une fois dans le menu (touche F8) , équivalent a la touche rouge de la multiface ;)

2) Avant de chercher quoi que ce soit , vérifier son emplacement en RAM :

Bank C0 / Mode Write

Image

position adresse 0000 de la RAM

Image

3) Rechercher la routine « SETPAL » , ici c'est de l'assembleur , et vu la qualité du code de Chris Wood . Il n'as sûrement pas utiliser la vecteur system (routine BIOS/AMSDOS de l'AMSTRAD) et a directement initialisé la palette avec par une routine hard,

Utilise la fonction recherche du débugger WINAPE (Ctrl+F)
il est possible de faire des recherches avec des jokers , ont va pas s'en priver …

Image

après plusieurs résultats ont tombe la dessus :

Image

Je vais résonner en novice en assembleur z80 :

On peut voir à l'adresse mémoire #22A8 la commande ou opcode : "LD BC,#7F8C" qui est typique pour une initialisation du mode écran (mode 0 =#8C / adressage gate array=#7F)
puis en #22AD le code init/pointe un registre avec une adresse non loin de la routine ... OK
#22B2 ld d,#10 --> un registre/variable qui s'init a #10 (en décimal 16 , comme le nbr d'encres de la palette mode 0 Amstrad )
#22B4 un out (c),c --> la commande qui donne le numéro de l'encre avant son initialisation (équivalement basic INK x,?)
#22B7 prochain emplacement mémoire (valeurs des encres)
#22BA un out (c),a / apres ld a,(hl) --> ce qui signifie je pose ma valeur "couleur" qui est a l'emplacement mémoire adresse HL sur le "port encre du gate array" ... (équivalement basic INK ?,x)
#22BC prochain numéro d'encre
#22BD -1 sur la conteur "D" qui est a #10 en hexa ou 16 en décimal
#22BE D=0 , non alors je vais en #22B4



[Fin de la 1ere partie]

Auteur :  AsT [ 29 Oct 2015, 14:01 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Bonne introduction ! Elle aurait mérité son propre topic à mon humble avis. (Plus facile à trouver pour ceux qui cherchent) :D

Auteur :  hERMOL [ 29 Oct 2015, 14:06 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

beh on y est justement :)

Auteur :  AsT [ 29 Oct 2015, 14:42 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Bonne nouvelle. C'est plus "classe" maintenant.
Je pense qu'il serait bon dans le futur de donner des conseils pour changer la configuration
de touches pourraves definies au départ vers quelquechose de plus classique, voire vers une configuration manette de jeu.
Ca pourrait interresser également bon nombre de "modeurs" (on dit comme cela?)
Cette rubrique pourrait aussi glisser sur la redefinition des tableaux d'un jeu... Enfin, il y a tellement de choses à explorer.

Auteur :  MUSICMAN3512 [ 01 Nov 2015, 16:33 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Super !

Merci pour cette première partie.

Pressé de voir les autres :d:d:d

Auteur :  MUSICMAN3512 [ 02 Déc 2015, 19:23 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Bientôt la suite hERMOL ?

Auteur :  MUSICMAN3512 [ 17 Mars 2016, 01:47 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Puis-je en remettre une couche ? :P

J'ai du temps libre et j'aimerai bien me lancer et contribuer a des version .cpr a utiliser avec C4CPC :sweatingbullets:

Auteur :  MUSICMAN3512 [ 28 Août 2017, 17:33 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Depuis la date de ce post, j'ai cumulé sur mon HDD une ENORME quantité de mockup, prêts pour l'aide à la modification en couleurs CPC+.
Je croise juste les doigts que hERMOL veuille bien continuer et finaliser son tuto en espérant que ca ne reste pas à l'etat de pauvres png...

Auteur :  MUSICMAN3512 [ 01 Sep 2017, 21:49 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Bon, OK....
J'abandonne
J'insiste plus
Je suis juste déçu d'avoir eu zéro réponse depuis presque deux ans.
Et franchement j'aurais préféré un "tu me gonfles, j'ai pas le temps" que ce silence.
Vraiment dommage........

Auteur :  marcel [ 02 Sep 2017, 08:32 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

MUSICMAN3512 a écrit :
Bon, OK....
J'abandonne
J'insiste plus
Je suis juste déçu d'avoir eu zéro réponse depuis presque deux ans.
Et franchement j'aurais préféré un "tu me gonfles, j'ai pas le temps" que ce silence.
Vraiment dommage........


Hello
Difficile d'espérer des réponses pendant les grandes vacances, même si, je te l'accorde, tu attends depuis deux ans :)
Ne laisse pas tomber tes mockups
Si tu souhaites motiver un programmeur à continuer le tuto d'Hermol, peut-être que tu pourrais toi aussi poster quelques chose non? Une capture de ton mockup (comparaison avant/après)
++

Auteur :  hERMOL [ 03 Sep 2017, 15:33 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

Sujet : Modification/Hack d'un jeu pour avoir des couleurs CPC+

MUSICMAN3512 a écrit :
Bon, OK....
J'abandonne
J'insiste plus
Je suis juste déçu d'avoir eu zéro réponse depuis presque deux ans.
Et franchement j'aurais préféré un "tu me gonfles, j'ai pas le temps" que ce silence.
Vraiment dommage........

Sorry je l'ai zappé ce topic , je m'y mets cette aprem :oops: :pig: :cow:

Auteur :  hERMOL [ 03 Sep 2017, 16:55 ]
Sujet du message :  Re: Modification/Hack d'un jeu pour avoir des couleurs CPC+

milles excuse pour l'attente ... j'ai zappé ce topic :sigh:

Détournement de la routine #22A8 :

J'ai choisis l'emplacement #0040 pour ma routine nouvelle palette. y'a un peu de place (ça ne me gêne pas l'ASIC qui ce trouve de &4000 -> &7FFF une fois activé)

J'utilise l'assembleur WINAPE pour le patch mémoire et ca marche plutot pas mal , 1ere étape détournement "HOOK" vers mon code. Rien de bien sorcier:

Code :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; PATCH MEMOIRE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

org #22AD

   call &0040      ; routine palette CPC+
   ds #22C0-$      ; clean code


pourquoi je commence à patcher en #22AD et non en #22A8 ?
je laisse le "ld bc,#7fc8:out (c),c" qui est l'équivalent d'un "mode 0" en assembleur
détourne le code vers mon patch (call #0040)

maintenant j'assemble ma routine unlock asic / setpal
en &0040 unlock de l'asic...

Code :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

org #0040

ASIC_UNLOCK
        DI             
       ld      bc, #BC00
        ld      hl, ASICSEQ
        ld      a, 19
      ld      c, (hl)
        inc     hl
        out     (c), c
        dec     a
        jr      nz,$-5


puis déplacements des données palette vers l'ASIC

Code :
FIXPAL:
       ld bc, #7FB8:out (c),c ; active écriture ASIC

   ld de,#6400      
   ld hl,NEWPAL
   ld bc,#20
   ldir
 
       ld bc, #7FA0:out (c),c ; désactive l'écriture ASIC
        ei           
        ret      ; retour prog jeu


Ici les datas de la palette , 2 octets par couleur (word en assembleur)

Code :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

NEWPAL   dw #df0
   dw #fff
   dw #7b0
   dw #df0
   dw #900
   dw #d00
   dw #777
   dw #ccc
   dw #8d6
   dw #00d
   dw #af0
   dw #009
   dw #999
   dw #590
   dw #0d0
   dw #000
   db #000


DATAS seq unlock de l'asic, la fameuse séquence secrete ....

Code :
ASICSEQ db #01, #00, #FF, #77, #B3, #51, #A8, #D4
        db #62, #39, #9C, #46, #2B, #15, #8A, #CD
        db #EE, #FF, #00


Pour assembler tout ca : pose un breakpoint sur le débuggeur winape à l'offset #22AD (adresse mémoire) puis F9 sous la fenêtre assembleur.

Une fois la mémoire du CPC patcher , le plus simple pour toi est de sauvegarder ces modifications en snapshot. :biere:

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/