Jump to content
X-death

Le port parallèle de la PS1 que peut on en faire ?

Recommended Posts

On en parle depuis 2J sur la shout.

C'est une question intéressante et je sais que certains ici ont des idées sur le sujet.

 

Pourrais t'on centraliser notre débat ici afin de le conserver et d'échanger plus facilement.

 

Pour commencer Ichigo semble avoir trouver un connecteur compatible sur taobao ( merci à lui ! )

 

https://world.tmall.com/item/537151136158.htm?spm=a312a.7700714.0.0.d5OB46

 

Edit. ichigo:

c'est un connecteur "simple" sans oeillet de maintien sur les cotés.

post-5150-0-63298300-1477411698_thumb.jpg

 

une carte avec cette adaptateur permettrait quelle possibilités ?

Quelle vitesse peut on espérer ?

Un CD graver est il également nécessaire pour débloquer ces possibilités ?

 

Merci d'avance pour les futurs participants :P

Share this post


Link to post
Share on other sites

Alors déjà, tu vas me changer ce titre ! :D

Je pense que tu veux parler du port parallèle (PIO), et non du port série (SIO).

Si tu veux utiliser le SIO, alors un CD est nécessaire, et donc une puce.

 

Si tu veux utiliser le PIO, pas besoin de CD. La console va démarrer directement sur le bios présent sur la carte.

Tu peux faire énormément de choses, sauf lancer un jeu directement. Soit tu utilises les «codes secrets» découverts par nocash, soit tu mets un cd officiel pour débloquer le lecteur.

 

Exemples des choses possibles :

 

- Debugger un jeu.

- Éditer/visualiser la ram.

- Mettre en pause le jeu.

- Transférer des données de et vers un autre appareil.

- Rajouter de la RAM (oui ^^)

 

Bref, faire à peu près ce que tu veux.

 

L'approche du PSIO n'était pas la bonne, même si elle était la plus rapide. Ils n'ont pas fait un émulateur de lecteur, mais un hack qui change l'accès des données d'un jeu.

Share this post


Link to post
Share on other sites

Merci pour ton complément gatchan.

C'est donc le bios de la carte qui piloter ( ou faire des intérruptions ? ) le lecteur CD de la PS1.

 

Pourquoi ne pourrais t'on pas lancer de jeu/homebrew ?

A cause de la phase de détection lors du démarrage d'un jeu ? ( j'ai une puce sur ma PS1 ça résoud peut être ce problème )

Share this post


Link to post
Share on other sites

 

L'approche du PSIO n'était pas la bonne, même si elle était la plus rapide. Ils n'ont pas fait un émulateur de lecteur, mais un hack qui change l'accès des données d'un jeu.

 

Tu en est sur ? a quoi sert alors de remonter /CDROM_CS et /CDROM_INT ? en plus patché l'acces des jeux à la volé ça ne marchera pas, car comment reconnaître des données exécutable et data ?

Share this post


Link to post
Share on other sites

Tu en est sur ? a quoi sert alors de remonter /CDROM_CS et /CDROM_INT ? en plus patché l'acces des jeux à la volé ça ne marchera pas, car comment reconnaître des données exécutable et data ?

Tu as l'explication ici.

Tu peux patcher les jeux à la volée, il suffit de s'occuper des librairies de chargement de fichiers, ou alors de patcher les appels systèmes utilisés par les jeux.

Share this post


Link to post
Share on other sites

Tu peux pas faire ça sur ps1. J'ai vérifié hier soir y'as aucun accès depuis le BIOS au CD-ROM, uniquement sur les memory card.

Donc tout se fait en bas niveau.

Le mec dit bien qu'une méthode de patch marcherai à moitié sans remonter ces signaux.

Share this post


Link to post
Share on other sites

Le switch board sert à remonter les signaux qui ne sont pas accessibles directement sur le port parallèle. Mais tu peux faire fonctionner des jeux sans ça, genre, Ridge Racer. Ce n'est pas pour rien qu'il a été l'un des premiers jeux testé.

Le PSIO a malgré tout de gros problèmes avec des jeux qui utilisent le CDDA / XA, et certaines vidéos.

 

Sinon, oui, bien sûr que tu peux patcher le jeu à la volée. Tu t'occupes des signatures de la lib psyQ qui charge les fichiers en les redirigeant vers ta carte SD. Le kit de dev PsyQ permettait de charger les jeux via le port parallèle, et Caetla offrait au développeur un nouveau lecteur virtuel.

 

Via le port parallèle, tu peux même créer des cartes mémoires virtuelles, comme l'a montré Datel. Pour cela, tu es obligé de patcher à la volée soit le bios, si le jeu utilise ses méthodes, soit par les libs psyQ.

 

Il faut aussi savoir que la plupart des jeux patchent eux-même à la volée des fonctions du bios qui sont buggées.

Share this post


Link to post
Share on other sites

Bon, je vais passer pour un con ( ca, j'ai l’habitude de toute façon ^^) mais je pose ma question qui me trote depuis des années dans la tête:

 

Qu'est ce qui donne l'info de sécurité d'un support physique en lecture d'origine? Je comprends pas pourquoi il n'existe pas des adaptateur qui se placent en parallèle du lecteur physique ( CD, DVD ou BR) et qui permettraient de lancer la même chose que le lecteur comme données mais a partir d'un stockage.

 

Je sais très bien repérer la sécurité quand elle se lance ( le logo PS par exemple sous PS2) mais pour moi, c'est juste du software. Ca me parait tellement incroyablement facile niveau hardware a faire que c'est là que je me dis que dois être vraiment a la ramasse car si ca n'existe pas, c'est que les meilleurs se sont déjà cassé les dents dessus.

Share this post


Link to post
Share on other sites

Sinon, oui, bien sûr que tu peux patcher le jeu à la volée. Tu t'occupes des signatures de la lib psyQ qui charge les fichiers en les redirigeant vers ta carte SD. Le kit de dev PsyQ permettait de charger les jeux via le port parallèle, et Caetla offrait au développeur un nouveau lecteur virtuel.

Oui tu peux mais uniquement au lancement, si ton programme recharge d'autre donnée exécutable (beaucoup de jeux font ça) c'est mort :s

C'est pour ca que finalement ils ont fait remonter /CDROM_CS et /CDROM_INT, pour pouvoir simule completement le cdrom.

Par contre autre problème la partie cdrom et spu travail ensemble... comment ils font pour le cdda et le xa ? ça ne marche pas du tous ?

 

Bon, je vais passer pour un con ( ca, j'ai l’habitude de toute façon ^^) mais je pose ma question qui me trote depuis des années dans la tête:

 

Qu'est ce qui donne l'info de sécurité d'un support physique en lecture d'origine? Je comprends pas pourquoi il n'existe pas des adaptateur qui se placent en parallèle du lecteur physique ( CD, DVD ou BR) et qui permettraient de lancer la même chose que le lecteur comme données mais a partir d'un stockage.

 

Je sais très bien repérer la sécurité quand elle se lance ( le logo PS par exemple sous PS2) mais pour moi, c'est juste du software. Ca me parait tellement incroyablement facile niveau hardware a faire que c'est là que je me dis que dois être vraiment a la ramasse car si ca n'existe pas, c'est que les meilleurs se sont déjà cassé les dents dessus.

Ça serait la solution idéal :D

 

Si je dit pas de connerie, pour faire ça il faudrait réussir à remplacer le hc05 (ic304 http://gamesx.com/wiki/lib/exe/fetch.php?media=schematics:service_manual_scph_9000_3rd_ed.pdf page 13)

Share this post


Link to post
Share on other sites

Oui tu peux mais uniquement au lancement, si ton programme recharge d'autre donnée exécutable (beaucoup de jeux font ça) c'est mort :s

C'est pour ca que finalement ils ont fait remonter /CDROM_CS et /CDROM_INT, pour pouvoir simule completement le cdrom.

Par contre autre problème la partie cdrom et spu travail ensemble... comment ils font pour le cdda et le xa ?  ça ne marche pas du tous ?

 

Tu peux tout a fait patcher les overlays (des zones de programme chargées par un autre programme), mais le plus facile est de patcher directement la librairie. Par exemple, le jeu ne va pas mettre 15 fois la même fonction de chargement dans tous ses exécutables.

À partir du moment où leur loader charge le premier exécutable, tout se contrôle. Soit en patchant le vsync, à la manière des intros, et qui «hook» les fonctions à modifier, soit en modifiant en mémoire les zones à patcher directement au chargement, quand le jeu n'est pas trop chiant.

 

Pour le XA/CDDA, c'est simple, ils ne font pas ^_^. Il y a bien un pseudo fix pour le cdda, mais ça reste au cas par cas. Il suffit de voir la liste de compatibilité. D'ailleurs, cybdyn a expliqué le soucis avec Vib Ribbon sur le forum, et précisé que le jeu envoyait des données directement du cdrom vers le SPU, sans passer par le CPU.

 

L'idéal serait d'avoir un vrai émulateur de CD. Mais cela nécessite de reproduire intégralement la logique d'un contrôleur CD en FPGA, ce qui n'a jamais été fait jusqu'à maintenant. Les autres ODE fonctionnent à un niveau au dessus en terme de couche hardware/software.

 

 

Bon, je vais passer pour un con ( ca, j'ai l’habitude de toute façon ^^) mais je pose ma question qui me trote depuis des années dans la tête:

 

Qu'est ce qui donne l'info de sécurité d'un support physique en lecture d'origine? Je comprends pas pourquoi il n'existe pas des adaptateur qui se placent en parallèle du lecteur physique ( CD, DVD ou BR) et qui permettraient de lancer la même chose que le lecteur comme données mais a partir d'un stockage.

 

Je sais très bien repérer la sécurité quand elle se lance ( le logo PS par exemple sous PS2) mais pour moi, c'est juste du software. Ca me parait tellement incroyablement facile niveau hardware a faire que c'est là que je me dis que dois être vraiment a la ramasse car si ca n'existe pas, c'est que les meilleurs se sont déjà cassé les dents dessus.

La sécurité de la Playstation se situe à plusieurs niveaux : sécurité dans le Bios, facilement contournable, mais surtout, sécurité dans le contrôleur CD, le MC68HC05. Depuis peu, on sait comment le débloquer, mais avant, la seule solution était de patcher à la volée les codes attendus, via un modchip.

 

Pour ce qui est de ton idée, c'est extrêmement difficile avec les consoles pré Xbox/PS2, car ces consoles n'avaient pas autant de couche d'abstraction pour discuter avec le hardware à partir d'un software.

 

Prenons la NES : la cartouche est directement connectée au PPU et CPU de la console. Le jeu peut envoyer des infos au PPU directement. Il n'y a pas d'OS.

La SNES a perdu ce lien direct avec le PPU, et les jeux doivent demander au CPU lire les données de la cartouche et les envoyer dans le PPU.

La Playstation a un lecteur CD, héré par un processeur dédié, ainsi que plusiurs autres composants (voir ici : http://psxdev.ru/images/wys/2ee92098331441e5b9be4a189e5dacc5.jpg).

Si tu veux remplacer le lecteur facilement, il faut donc un appareil qui se connecte directement sur la carte mère, en remplacement de lecteur CD. Sauf que toute l'intelligence est déjà sur la carte mère. Tu dois donc émuler *un laser* (ainsi qu'un moteur).

Mais en plus, il faut pouvoir changer de disque facilement. Tu dois donc trouver le moyen de faire communiquer ton ODE avec la console, sans passer par les composants qui gèrent le CD. C'est un peu le même système pour le HxC qui a un écran et qui simule le changement de disquette.

 

Les consoles suivantes ont été plus faciles à modifier : la PS2 a un contrôleur de disque dur avec son extension réseau, il fallait juste patcher les jeux pour qu'ils se chargent à partir de là.

La Xbox est un PC. Le jeu se fiche d'être lancé à partir d'un disque dur ou du lecteur.

Les loaders PS3 font croire à la console qu'un disque est inséré.

Ces méthodes passent par un patch software, du fait de l'utilisation de kits de dev plus évolués. Aucun jeu ne va lire octet par octet un fichier en pilotant directement le contrôleur DVD/CD/Bluray.

 

Pour la Wii, l'ODE se substitue au lecteur, car les signaux sont plus hauts niveau que la Playstation. Ils sont donc plus faciles à simuler.

 

D'autres problématiques entrent en compte, comme la sécurité qui empêche d'émuler un lecteur, via des clés d'autentifications, mais mon post est déjà assez long comme ça :D.

Share this post


Link to post
Share on other sites

Le 68hc05 est un coprocesseur avec un firmware propre pour la gestion des accès au cd. Plutôt que de l'émuler (car il gère aussi la partie servo) ça serait plus intelligent à mon sens de faire un wrapper cue/bin -> sortie du 6805. Je suis sûr qu'il serait même possible de réutiliser une bonne partie du code d'epsxe pour ça.

Maintenant, si ce n'a pas encore été fait c'est parce-que l'intérêt est assez limité. D'abord ça va couter cher, en plus, je suis d'accord la console a fait un carton à savoir sortie et pendant un bon bout de temps après mais je ne connais pas de vrais nostalgiques de la playstation. Même moi qui en ai un bon paquet je dois avouer que si elle sont allumées 20mn par an c'est le bout du monde et il faut l'avouer, en général les graphismes font sacrément mal aux yeux comparé aux 8/16 bit 2D de la génération précédente.

Share this post


Link to post
Share on other sites

À partir du moment où leur loader charge le premier exécutable, tout se contrôle. Soit en patchant le vsync, à la manière des intros, et qui «hook» les fonctions à modifier, soit en modifiant en mémoire les zones à patcher directement au chargement, quand le jeu n'est pas trop chiant.

Oui j'avais pas penser a cette façon, je simplement a hooker LoadExeFile pour faire le patch a ce moment la

 

Pour le XA/CDDA, c'est simple, ils ne font pas ^_^. Il y a bien un pseudo fix pour le cdda, mais ça reste au cas par cas. Il suffit de voir la liste de compatibilité. D'ailleurs, cybdyn a expliqué le soucis avec Vib Ribbon sur le forum, et précisé que le jeu envoyait des données directement du cdrom vers le SPU, sans passer par le CPU.

 

L'idéal serait d'avoir un vrai émulateur de CD. Mais cela nécessite de reproduire intégralement la logique d'un contrôleur CD en FPGA, ce qui n'a jamais été fait jusqu'à maintenant. Les autres ODE fonctionnent à un niveau au dessus en terme de couche hardware/software.

 

Yep c'est justement ça le gros soucis, je reste persuader qu'ils ont remonter /cdrom_cs et /cdrom_int justement pour émuler le cdrom, au lieu de hooker le jeu, mais vu que le cdrom et spu sont directement lié => soucis de cdda/xa.

Pour y faire proprement il faudrait encore descendre de niveau.

Déjà que l’émulation du spu sur pc c'est pas top j'imagine pas la galère :s

Share this post


Link to post
Share on other sites

Le 68hc05 est un coprocesseur avec un firmware propre pour la gestion des accès au cd. Plutôt que de l'émuler (car il gère aussi la partie servo) ça serait plus intelligent à mon sens de faire un wrapper cue/bin -> sortie du 6805. Je suis sûr qu'il serait même possible de réutiliser une bonne partie du code d'epsxe pour ça.

Le soucis principal est que ces puces sont déjà sur la carte mère. Si tu veux émuler le lecteur à un plus haut niveau, il faut se brancher directement sur la carte mère, dessouder certains composants, bref, bien loin du plug'n'play essentiel pour ce genre de projet.

Là, il ne faut pas émuler le 68hc05, mais se placer en amont, et émuler un lecteur (et son contrôleur basique).

Donc ça :

Laserchip.jpg

Trouvé ici : http://deutschermanfred.de/lasereinheit-playstation-1/

 

Donc oui, c'est possible.

Mais c'est très difficile, et nécessite une connaissance pointue de la technologie CD, et des FPGA, au minimum.

Share this post


Link to post
Share on other sites

La solution qui tuerait : neutraliser complètement le lecteur CD et injecter avec une diode laser le signal émulé juste à l'entrée de la photodiode qui est sensée recevoir le laser en retour du cd :mrgreen:

Share this post


Link to post
Share on other sites

Yop, j'ai commandé ça en sample: http://www.te.com/usa-en/product-1734098-7.html, pour un prototype ca devrait le faire, ca devrait être facile a réutilise une nappe ide. Pour la partie logic je pense utiliser un cpld https://www.aliexpress.com/item/XILINX-CoolRunner-II-FPGA-CPLD-XC2C64A-Core-Module-Mini-DEV-Development-For-XBOX360/1878839883.html?ws_ab_test=searchweb0_0,searchweb201602_2_422,searchweb201603_1&btsid=258578fd-31bd-4716-92f3-d475f3e4b035 et pour la liaison psx->pc la fameuse bluepill/stm32.

Je vais essayer de faire un clone usb d'un action replay pour demarrer, ensuite on verra bien :)

Share this post


Link to post
Share on other sites

×
×
  • Create New...