juste pour info, j'ai mis sur arcade system un topic ou y a mes roms cps1 patchées....
si la C-board est la CPS-B-21, le driver video de mame donne les valeurs.
Après ce qu'il faut savoir c'est qu'un jeu CPS1 peut faire des verifications matérielles, (comprendre l'équivalent pour ceux qui connaissent l'amiga ou l'atari ST d'un copylock).
la C-board est doté d'une puce "programmable d'usine". Vous pouvez pour protéger un jeu cps1 tout frais en mettant les adresses materielles qui affichent les layers du jeu dans une ram volatile.... Sans parler, et c'est de loin le plus difficile, des checksums (une saloperie qu'on trouve sur les jeux amiga et atari ST aussi....sauf qu'au lieu d'en avoir 5 ou 10, un jeu CPS1 voir un jeu QSOUND peut facile en avoir plus de 60! genre saturday night slamasters ou son upgrade en multijoueur (je suis toujours dessus, et j'ai pas fini....)
Vous voyez tout de suite ou je veux en venir.... je parle des jeux CPS-1 a pile, héhéhé
genre knights of the round, y a genre presque 70 ou 80 modifications à faire dans le code programme du jeu. sur les 70 ou 80 modifs, y a pas loin de 20 checksums.....
C'est un quoi un checksum sur un jeu CPS-1 protégé ? c'est une instruction 68000 qui bien souvent va utiliser de maniere indirecte un registre matériel. je vous donne un exemple, le registre de base
pour afficher les layers, c'est $12C0. la layer 1 ca peut etre $12C4, la layer 2 $12C8 et la layer 3 la somme de $12C0 + octetlayer1+octetlayer2+octetlayer3 ! le jeu va verifier l'octet (ex : $C4 et $C8) et ça dans un programme allez le chercher ! XD
je posterais ici en détails toutes les modifs pour knights of the round pour que vous vous fassiez une idée
EDIT : j'ai passé 20 minutes à checker Willow
y a au minimum 23 modifications a faire, et pas de bol, ils ont utilisé des checksums avec vérification
des registres matériels en mode indirect....
voici ce que j'ai utilisé pour trouvé les valeurs à changer :
ctrl priority masks palctrl layer enable masks */
CPSB03 : 0x30,{0x2e,0x2c,0x2a,0x28}, 0x26, {0x20,0x10,0x08,0x00,0x00}
CPSB01 : 0x26,{0x28,0x2a,0x2c,0x2e}, 0x30, {0x02,0x04,0x08,0x30,0x30}
base register $800140 (registre immuable sur toutes les cartes CPS1)
la base pour comprendre :
registre de base pour toutes les fonctions matérielles = $800140
registre de controle de la palette = $800140+30 = $800170
registre de controle d'affichage des layers = $12C0 (registre fixe sur toutes les carte CPS1)
Willow :
$12C0+20=$12E0 (affichage layer 1)
$12C0+10=$12D0 (affichage layer 2)
$12C0+08=$12C8 (affichage layer 3)
$12C0+20+10+08=$12F8 (affichage layer 1,2,3 en même temps... si si si
)
Strider :
$12C0+02=$12C2 (affichage layer 1)
$12C0+04=$12C4 (affichage layer 2)
$12C0+08=$12C8 (affichage layer 3)
$12C0+02+04+08=$12CE (affichage layer 1,2,3 en même temps... si si si
)
willow :
Priority Mask 1 = $800140+2E=$80016E
Priority Mask 2 = $800140+2C=$80016C
Priority Mask 3 = $800140+2A=$80016A
Priority Mask 4 = $800140+28=$800168
strider :
willow :
Priority Mask 1 = $800140+28=$800168
Priority Mask 2 = $800140+2A=$80016A
Priority Mask 3 = $800140+2C=$80016C
Priority Mask 4 = $800140+2E=$80016E
registre de contrôle de la palette
Willow : $800140+26=$800166
Strider : $800140+30=$800170