Auteur Sujet: [WIP] Bricolage sur CPS1  (Lu 26201 fois)

Hors ligne aje_fr

  • Famille
  • *
  • Messages: 1159
    • Voir le profil
[WIP] Bricolage sur CPS1
« Réponse #16 le: Mercredi 12 Juin 2013, 07:14:23 am »
  • Et un de plus (mon préféré) : captain commando  :-)=
    Think different, don't purchase Apple !

    Hors ligne Thieum

    • Grand Pilier
    • *
    • Messages: 868
    • Localisation: Paris
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #17 le: Mercredi 12 Juin 2013, 10:14:13 am »

  • Un de mes préférés aussi, surtout parce qu'on peut jouer un bébé qui pilote un robot qui pilote un robot!


    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #18 le: Jeudi 13 Juin 2013, 18:14:16 pm »
  • J'attaque maintenant 3 wonders, ça risque d'être un peu plus chaud comme le GAL n'est pas dumpé pour cette version de PCB.
    Dommage car le jeu démarre correctement mais les graphismes ne fonctionnent pas comme il faut.
    A suivre.
    Think different, don't purchase Apple !

    Hors ligne yannick60

    • Pilier
    • *
    • Messages: 689
    • Localisation: mouy oise
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #19 le: Jeudi 13 Juin 2013, 18:28:57 pm »
  • courage,si besoin j'ai strider ;)

    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #20 le: Samedi 15 Juin 2013, 23:38:38 pm »
  • Il m'aura donné du fil à retordre, mais c'est bon, un de plus ! 3 wonders  :-)= :-)=
    A l'avenir il faudra que je dévie quelques adresses de plus mais bon pour le moment, c'est pas mal du tout !
    « Modifié: Samedi 15 Juin 2013, 23:44:21 pm par aje_fr »
    Think different, don't purchase Apple !

    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #21 le: Dimanche 16 Juin 2013, 14:04:51 pm »
  • Encore un autre, king of dragons !
    Bon, je voulais tester punisher mais il ne veut pas démarrer, peut être le boot chinois marchera mieux.
    Sinon, la GAL22V10 n'est pas du tout du tout assez puissante, il vas falloir passer à plus couillu  :D
    Maintenant il reste le son à s'occuper aussi !
    A+
    « Modifié: Dimanche 16 Juin 2013, 14:06:29 pm par aje_fr »
    Think different, don't purchase Apple !

    Hors ligne yannick60

    • Pilier
    • *
    • Messages: 689
    • Localisation: mouy oise
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #22 le: Dimanche 16 Juin 2013, 16:47:12 pm »
  • Pour info mon strider tourne sur B21 et sur la même b board que toi,c'est pour ça que je te l'ai proposé. ;)

    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #23 le: Dimanche 16 Juin 2013, 18:31:14 pm »
  • Salut,
     Ouaip, je vais tenter strider, ce fera le huitième de la liste  ;)
    A+
    Think different, don't purchase Apple !

    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #24 le: Mardi 18 Juin 2013, 00:01:34 am »
  • Ca y est, strider aussi tourne


    Donc pour résumer :
    • Street Fighter 2 CE
    • Daimakaimura
    • Captain Commando
    • Cadillac & Dinosaurs (qui n'aura peut être pas de son)
    • King of Dragon
    • Knight of the round
    • 3 Wonders
    • Strider

    Reste maintenant à changer la GAL pour quelque chose de plus gros et s'attaquer au son (mais là, ça devrait être beaucoup plus facile) !

    A suivre donc !
    Think different, don't purchase Apple !

    Hors ligne kroustibat

    • Addict
    • *
    • Messages: 303
    • Localisation: Liège
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #25 le: Mardi 18 Juin 2013, 09:21:44 am »
  • tiens question bête d'un méga n00b ... j'ai récupéré une pcb originale de sf2 et un programmateur d'eprom. comment identifier le modèle des proms pour les lire (les sf2e-1m,...)?

    merci




    Hors ligne Iro

    • Alias le Rouston Masqué
    • Staff
    • Dieu de l' Arcade
    • *****
    • Messages: 100542
    • Localisation: Chilly Mazarin
    • Iro, chevalier Judaï
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #26 le: Mardi 18 Juin 2013, 10:05:36 am »
  • C'est marqué dessus, normalemnt
    C'est du 27c*** (27C4096)
    Ton programmateur ne s'est pas les identifier ?
    "Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
    Peter Shou Owner' Club

    WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF

    LES TUTOS DE GAMO   

    Hors ligne kroustibat

    • Addict
    • *
    • Messages: 303
    • Localisation: Liège
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #27 le: Mardi 18 Juin 2013, 12:10:55 pm »
  • C'est marqué dessus, normalemnt
    C'est du 27c*** (27C4096)
    Ton programmateur ne s'est pas les identifier ?

    mon programmeur ne les identifie pas malheureusement :s Et j'ai eu beau lire dessus, c'était plus de référence capcom que des références puces

    Hors ligne dlfrsilver

    • Intéressé
    • *
    • Messages: 22
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #28 le: Mercredi 19 Juin 2013, 23:49:59 pm »
  • 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

    « Modifié: Jeudi 20 Juin 2013, 02:10:00 am par dlfrsilver »

    Hors ligne aje_fr

    • Famille
    • *
    • Messages: 1159
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #29 le: Jeudi 20 Juin 2013, 23:24:42 pm »
  • Salut,
     Comme je te l'ai dit par MP, merci énormément pour tes explications !  ^-^
     Alors, je suis en train d'essayer de comprendre le désuicidage de king of dragon pour apprendre le fonctionnement.

    Voici donc la définition de mame pour la C board par défaut et celle avec la protection :
     438  /*                     CPSB ID    multiply protection      unknown      ctrl     priority masks   palctrl    layer enable masks  */
      452  #define CPS_B_21_DEF 0x32,  -1,   0x00,0x02,0x04,0x06, 0x08, -1,  -1,   0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30} // pang3 sets layer enable to 0x26 on startup
      454  #define CPS_B_21_BT2  -1,   -1,   0x1e,0x1c,0x1a,0x18,  -1, 0x0c,0x0a,  0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x30,0x08,0x30,0x00,0x00}

    J'ai compris la plupart des changements dans le code grâce à tes explications, mais je bute sur certaines.

    1er exemple:
    ROM CODEE
    00001DB8: 303C 12F8       move.w  #$12f8, D0
    00001DBC: 33C0 0080 0160  move.w  D0, $800160.l

    ROM DECODEE
    00001DB8: 303C 12CE       move.w  #$12ce, D0
    00001DBC: 33C0 0080 0166  move.w  D0, $800166.l
    Je comprends que le $800166 qui devient $800160 est dû à la variable CTRL qui passe de $26 à $20.
    Par contre, le $12F8 qui correspondrait à $12C0 + $30 + $8 donc soit à layer 1 + layer 2 ou layer 2 + layer 3.
    On voit que ça a été remplacé par $12ce = $12c0 + $2 + $4 + $8 donc layer 1 + layer 2 + layer 3. Est-ce parce que tu avais un doute sur quelle layer était utilisée ?


    2eme exemple
    ROM CODEE
    000023C4: 33C0 0080 015E  move.w  D0, $80015e.l
    000023CA: 33C1 0080 015C  move.w  D1, $80015c.l
    000023D0: 2039 0080 0158  move.l  $800158.l, D0

    ROM DECODEE
    000023C4: 33C0 0080 0140  move.w  D0, $800140.l
    000023CA: 33C1 0080 0142  move.w  D1, $800142.l
    000023D0: 2039 0080 0142  move.l  $800142.l, D0
    Là.... je ne comprends pas beaucoup... voir même rien, d'où sortent ces valeurs ? Elles apparaissent aussi à d'autres endroits.
    Car si on retranche $800140, on ne retombe sur aucune des valeurs du tableau des priority mask à ajouter...

    3e exemple
    ROM CODEE
    00005A8C: 1B7C 0001 1EF0  move.b  #$1, ($1ef0,A5)
    ...
    00009D86: 1039 0000 E254  move.b  $e254.l, D0

    ROM DECODEE
    00005A8C: 1B7C 0000 1EF0  move.b  #$0, ($1ef0,A5)
    ...
    00009D86: 103C 002C       move.b  #$2c, D0
    00009D8A: 4E71            nop

    Pourquoi écrire 0 dans le PPU ? Et la deuxième portion, est-ce pour faire sauter une protection ?

    Idem ici, est-ce pour ne pas utiliser certaines fonctions du PPU :
    ROM CODEE
    000106BC: 33FC 1D6B 0080  move.w  #$1d6b, $80014c.l
              014C
    000106C4: 33FC 21C2 0080  move.w  #$21c2, $80014a.l
              014A

    ROM DECODEE
    000106BC: 4E71            nop
    000106BE: 4E71            nop
    000106C0: 4E71            nop
    000106C2: 4E71            nop
    000106C4: 4E71            nop
    000106C6: 4E71            nop
    000106C8: 4E71            nop
    000106CA: 4E71            nop


    Bon, j'arrête là, ça fait pas mal de questions  :D

    A bientôt
    « Modifié: Jeudi 20 Juin 2013, 23:32:48 pm par aje_fr »
    Think different, don't purchase Apple !

    Hors ligne dlfrsilver

    • Intéressé
    • *
    • Messages: 22
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #30 le: Samedi 22 Juin 2013, 16:51:06 pm »
  • Salut,
     Comme je te l'ai dit par MP, merci énormément pour tes explications !  ^-^
     Alors, je suis en train d'essayer de comprendre le désuicidage de king of dragon pour apprendre le fonctionnement.

    Voici donc la définition de mame pour la C board par défaut et celle avec la protection :
     438  /*                     CPSB ID    multiply protection      unknown      ctrl     priority masks   palctrl    layer enable masks  */
      452  #define CPS_B_21_DEF 0x32,  -1,   0x00,0x02,0x04,0x06, 0x08, -1,  -1,   0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30} // pang3 sets layer enable to 0x26 on startup
      454  #define CPS_B_21_BT2  -1,   -1,   0x1e,0x1c,0x1a,0x18,  -1, 0x0c,0x0a,  0x20,{0x2e,0x2c,0x2a,0x28},0x30, {0x30,0x08,0x30,0x00,0x00}

    J'ai compris la plupart des changements dans le code grâce à tes explications, mais je bute sur certaines.

    1er exemple:
    ROM CODEE
    00001DB8: 303C 12F8       move.w  #$12f8, D0
    00001DBC: 33C0 0080 0160  move.w  D0, $800160.l

    ROM DECODEE
    00001DB8: 303C 12CE       move.w  #$12ce, D0
    00001DBC: 33C0 0080 0166  move.w  D0, $800166.l
    Je comprends que le $800166 qui devient $800160 est dû à la variable CTRL qui passe de $26 à $20.
    Par contre, le $12F8 qui correspondrait à $12C0 + $30 + $8 donc soit à layer 1 + layer 2 ou layer 2 + layer 3.
    On voit que ça a été remplacé par $12ce = $12c0 + $2 + $4 + $8 donc layer 1 + layer 2 + layer 3. Est-ce parce que tu avais un doute sur quelle layer était utilisée ?

    explication : tu as vu la difference dans les valeurs pour l'activation des couches ?
    ce qui se passe, c'est que suivant la C-board, l'activation ou l'affichage et enchainement des couches ne fonctionne pas pareil :) dans le cas que tu cites, la rom avec le fichier config maintenu en vie avec la pile active toujours la layer 1 et 3 en même temps, de facon obligatoire. Seule la layer 2 peut etre affichée individuellement. Mais comme le système est très souple, quand on modifie les valeurs pour convertir le jeu pour le C-board CPS-B-21 par défaut (sans pile quoi :) ) on doit respecter ce système.
    donc on prend $12C0 (registre de base des layers) et on ajoute $02+$04+08$ pour activer les trois couches. sur la config protégée par pile, $30 n'active pas la layer 1+3 ou ou 2+3 mais bien les layers 1 ET 3, puisque $30 est la valeur qui les active toutes les deux ! donc par rapport à la config normale, ça revient a qu'on affiche les couche 1+3 ($30) + la couche 2 ($08) soit si on regarde de plus près les couches 1,2,3 en même temps. Donc forcément, pour le mode normal, on utilisera les les trois valeurs d'activation de layer 1,2,3 soit $02,$04,$08.


    Citer
    2eme exemple
    ROM CODEE
    000023C4: 33C0 0080 015E  move.w  D0, $80015e.l
    000023CA: 33C1 0080 015C  move.w  D1, $80015c.l
    000023D0: 2039 0080 0158  move.l  $800158.l, D0

    ROM DECODEE
    000023C4: 33C0 0080 0140  move.w  D0, $800140.l
    000023CA: 33C1 0080 0142  move.w  D1, $800142.l
    000023D0: 2039 0080 0142  move.l  $800142.l, D0
    Là.... je ne comprends pas beaucoup... voir même rien, d'où sortent ces valeurs ? Elles apparaissent aussi à d'autres endroits.
    Car si on retranche $800140, on ne retombe sur aucune des valeurs du tableau des priority mask à ajouter...

    normal, je t'ai pas encore expliqué ce que c'est, tout simplement parce que strider et willow ne sont pas concernés par ce genre de cas de figure. ici tu as a faire a ce que les gens de mame appelent des protections par multiplication. le PPU spécial utilisé ici possède des registres matériel en plus.
    la routine que tu me montres en est une regarde : ($800140+1e=$80015E, $800140+1c=$80015C, $800140+18=$800158). les adresses pour la protection par multiplication ont donc été changées. Si tu le fais pas, ton jeu il va foirer un truc violent :)

    Citer
    3e exemple
    ROM CODEE
    00005A8C: 1B7C 0001 1EF0  move.b  #$1, ($1ef0,A5)
    ...
    00009D86: 1039 0000 E254  move.b  $e254.l, D0

    ROM DECODEE
    00005A8C: 1B7C 0000 1EF0  move.b  #$0, ($1ef0,A5)
    ...
    00009D86: 103C 002C       move.b  #$2c, D0
    00009D8A: 4E71            nop

    Pourquoi écrire 0 dans le PPU ? Et la deuxième portion, est-ce pour faire sauter une protection ?

    ah super, pour ça on verra plus tard. Faut déjà que tu comprennes comment le reste fonctionne.
    Ici c'est un accès en mode indirect.

    Citer
    Idem ici, est-ce pour ne pas utiliser certaines fonctions du PPU :
    ROM CODEE
    000106BC: 33FC 1D6B 0080  move.w  #$1d6b, $80014c.l
              014C
    000106C4: 33FC 21C2 0080  move.w  #$21c2, $80014a.l
              014A

    ROM DECODEE
    000106BC: 4E71            nop
    000106BE: 4E71            nop
    000106C0: 4E71            nop
    000106C2: 4E71            nop
    000106C4: 4E71            nop
    000106C6: 4E71            nop
    000106C8: 4E71            nop
    000106CA: 4E71            nop


    Bon, j'arrête là, ça fait pas mal de questions  :D

    A bientôt

    normal la encore je ne t'ai pas expliqué ce que c'est. Pourtant si tu regardes bien, tout est indiqué
    dans les 2 lignes que tu as copié du driver vidéo de mame :)

    A bientôt :)

    Hors ligne Iro

    • Alias le Rouston Masqué
    • Staff
    • Dieu de l' Arcade
    • *****
    • Messages: 100542
    • Localisation: Chilly Mazarin
    • Iro, chevalier Judaï
      • Voir le profil
    [WIP] Bricolage sur CPS1
    « Réponse #31 le: Samedi 22 Juin 2013, 20:09:38 pm »
  • J'aime bien les mecs qui débarquent de n'importe où sur le forum et te mettent une claque :D
    Chapeau <:)
    "Jet set 2, c'est avec Robert Garcia ?" Kaneda, Lapsus de sac Vol.1
    Peter Shou Owner' Club

    WIPs : Naomi - SEGA Rally - AB Cop - Lethal Enforcers - COMPUMI - Terminator 2 - Space Invaders - Artworks pour Boitiers K7 Naomi CF

    LES TUTOS DE GAMO