Jump to content
Sign in to follow this  
gigi

Quel est le meilleur endroit dans une ROM pour y mettre un code ASM

Recommended Posts

J'ai enfin réussi à programmer en ASM sur snes pour faires des hacks,

 

 

J'ai agrandi une HIROM de 512ko à 1024ko et aggrandi la sram de 8ko à 32ko, j'ai mis mon code ASM à la fin de la rom dans la bank démarrant à $FE000 (il fait 150lignes pleines)

 

Avant cela j'avais agrandi la SRAM , et mis le code dans la SRAM , puis je me suis dit que la SRAM peut se corrompre alors je l'ai mis en ROM , depuis que je l'ai mis en ROM ca me semble un peu moins fluide par moment

 

C'est quoi le meilleur endroit entre $80000 et $FFFFF pour y mettre un code ASM qui tourne sans arrêt 

pendant le jeu ?? là où ca serait le plus rapide , à $FE000 c'est bien ?

 

mapping ROM :

https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map

Share this post


Link to post
Share on other sites

bon imperceptible ou pas je vais le mettre en Sram , j’espère qu'elles sont fiables les SRAM et tiennent des années sans se corromprent ne serait-ce qu'un seul byte  :mrgreen:

 

c'est quoi le meilleur modèle de sram pour snes ?? il me faut une de 32ko (si plus pas grave!?!)

Share this post


Link to post
Share on other sites

Honnêtement, tu ne verras pas beaucoup de différence selon si tu mets ton code en SRAM ou ROM.

Si le timing est important pour toi, exécute ton code en RAM.

 

Certains jeux utilisent la SRAM comme zone tampon. Ça posait problème avec certains émulateurs, qui enregistraient la SRAM dans un fichier dès qu'il y avait une écriture dessus.

 

Quand à la version des SRAM, regarde ce qui existe déjà dans les cartouches.

Share this post


Link to post
Share on other sites

Honnêtement, tu ne verras pas beaucoup de différence selon si tu mets ton code en SRAM ou ROM.

Si le timing est important pour toi, exécute ton code en RAM.

 

Certains jeux utilisent la SRAM comme zone tampon. Ça posait problème avec certains émulateurs, qui enregistraient la SRAM dans un fichier dès qu'il y avait une écriture dessus.

 

Quand à la version des SRAM, regarde ce qui existe déjà dans les cartouches.

 

"j'avais oublié de preciser que j'avais expandut la SRAM de 8 à 32ko "

 

c'est donc pour ca que ca déconne dans snes9x ainsi que l'emu d'origine de la mini snes , et pas dans BSNES !!!!?!!!!!

 

du coup ce hack va bien ce comporter sur une vrai snes ?

 

 

Pour la sram faut j'en achète une de 32ko , dans le jeu elle fait 8ko , ma question était y a t il des marques mieux que d'autres ??

 

 

par contre la sram ca me fait chier, ca peut s'effacer et faut un dumper de sram pour la remettre, il y a de la FRAM aussi !! c'est bien niveau timing ?? et est-ce possible sur snes ?? (KrazyP l'a fait sur GB http://www.neogeofans.com/leforum/showthread.php?p=1207515 )  

Share this post


Link to post
Share on other sites

j'ai trouvé une petite astuce pour baisser le nombre de cycle qu'utilise ma routine à chaque fois: séparer mon code en 6 (il fait 150lignes maintenant j'ai rajouté d'autres fonctions) 

 

j'ai appelé chaque partie du code ainsi  : tour 0 , 1 , 2 , 3 , 4 et 5

en debut de ma routine ,ma routine regarde quel tour on est de 0 à 5 , elle se rend a la partie en question , rajoute +1 ou remet à 0 au byte indiquant quel tour qu'on est, et ma routine se termine

 

avec ca le temp est au minimum divisé par 3 selon le tour de 0 à 5  

Share this post


Link to post
Share on other sites

Par contre, je n'ai pas compris : Tu mets ton code dans la ROM, et ensuite tu le copies dans la SRAM, et l'exécute à partir de là ?

 

Pour le fonctionnement sur les émulateurs, ça dépend du mapping mémoire.

Peut-être que Snes9x se base sur le header de la rom pour définir la taille maximale de la SRAM adressable.

Bsnes / Higan est différent. Ça dépend déjà de la version que tu utilises, mais en gros, un fichier présentant le mapping mémoire de la cartouche est utilisé. Ce qui permet toutes les excentricités voulues.

 

Pour l'utilisation sur une cartouche, ça dépend du branchement et du multiplexeur utilisé (MAD, etc..).

Share this post


Link to post
Share on other sites

actuellement mon code je l'ai mis dans la sram directement , j'avais aussi testé dans la rom mais ce me paraissait moins fluide (et puis en sram ca permet d’être dans la meme banque pour mon code et ses variables)

 

 

 j'utilise BSNES+ 0.73a

 

Dans le header j'ai du indiquer la taille de la sram pour qu'elle soit pris en compte (et ce pour tout émulateur)

 

 

par contre : "Par contre, je n'ai pas compris : Tu mets ton code dans la ROM, et ensuite tu le copies dans la SRAM, et l'exécute à partir de là ?"

 

AH ca c'est ce que j'aurais voulut faire pour pas que le code s'efface un jour si sram se reset ou se corrompt ,mais j'ai pas trouvé comment le bouger en sram au lancement (j'ai trouvé comment déplacer un bloc de bytes mais que dans la meme banque avec MVP ou MVN)

 

il y a un moyen de faire ca ??

Share this post


Link to post
Share on other sites

Je me demande ce que dois faire ton code pour que tu puisses te rendre compte à l’œil nu d'une différence entre la SRAM et la ROM.

Normalement, elle devrait être vraiment minime.

 

Sinon oui, tu es obligé de mettre ton code d'abord dans la ROM, puis ensuite le copier dans la SRAM si tu veux l'exécuter à partir de là.

Comment voudrais-tu distribuer ton patch sinon ? La SRAM est volatile, tu ne peux rien mettre d'aussi important que du code dedans, qui rende ton jeu inopérant si elle venait à être effacée.

 

Honnêtement, je pense que tu te prends la tête pour pas grand chose.

Tu peux étendre la taille de ta rom, ou alors compresser des données pour gagner de l'espace.

La SRAM sera gérée à 2.68 Mhz, contrairement à la ROM si tu actives le mode «fast», qui monte à 3.58Mhz. Le code en RAM sera à 2.68 Mhz.

 

La meilleure utilité de la SRAM est quand tu veux gérer des données. Tu décompresses les données dans la SRAM au démarrage du jeu, et ceux-ci deviennent accessible relativement facilement et plus rapidement que si tu devais les décompresser à chaque fois.

Share this post


Link to post
Share on other sites

comment distribuer mon patch au cas où : un ips et un fichier srm 

 

Mon code écrit et lit sans arrêt dans la ram et la sram 

Mais faut pas oublier de prendre en compte le temp pour aller d'une mémoire à l'autre et pas que la vitesse d’écriture/lecture dans une mémoire

car des va et vient entre le code et les variables c'est sans arrêt dans les 150lignes de mon code

 

Mettre le code en sram m’évite énormément de saut entre la rom et la sram , c'est peut-être ca la difference ?

 

Et sinon comment on fait pour bouger un bloc de bytes ailleurs que dans la meme banque ?

Share this post


Link to post
Share on other sites

C'est une mauvaise idée de distribuer le fichier sram avec. Le mieux est vraiment de laisser la rom s'occuper de tout.

 

Tu peux utiliser le classique MVN/MVP pour les transferts mémoire, mais le mieux est quand même d'utiliser le DMA du processeur. Celui-ci peut ne pas fonctionner avec l'adressage de la SRAM, il faudrait vérifier.

Mais il fonctionne très bien avec des données présentes sur la ROM.

 

En gros, je pense que tu y gagnerais à repenser le fonctionnement de ta routine. Tu n'auras rien de plus rapide que le transfert DMA.

Share this post


Link to post
Share on other sites

C'est une mauvaise idée de distribuer le fichier sram avec. Le mieux est vraiment de laisser la rom s'occuper de tout.

 

Tu peux utiliser le classique MVN/MVP pour les transferts mémoire, mais le mieux est quand même d'utiliser le DMA du processeur. Celui-ci peut ne pas fonctionner avec l'adressage de la SRAM, il faudrait vérifier.

Mais il fonctionne très bien avec des données présentes sur la ROM.

 

En gros, je pense que tu y gagnerais à repenser le fonctionnement de ta routine. Tu n'auras rien de plus rapide que le transfert DMA.

 

Pourquoi est-ce une mauvaise idée de donner un .SRM avec ??

 

MVN et MVP ca les bouge pas dans une autre banque ! 

 

Je regarde le fonctionnement du DMA , mais pas tout compris encore faut je m'y replonge.

Share this post


Link to post
Share on other sites

Parce que il faut déjà que le jeu ne l'efface pas (si le checksum n'est pas bon, certains jeux effacent la sauvegarde), ça peut activer des protections si tu l'agrandis (à ce moment là, tu devras cracker le jeu), et ce n'est pas pratique pour l'utilisateur : il devra mettre le srm ans le bon répertoire, qui diffère selon l'émulateur.

 

En gros, c'est beaucoup de galère pour un résultat peu concluant.

Share this post


Link to post
Share on other sites

Bon à savoir pour le check qui peut effacer saves!! , mais comme ca ou comme ca le cheksum je doit le corriger sinon le jeu passe pas sur une vrai snes , un type qui avait hacké ce jeu avait corrigé le checksum pour qu'il se lance , et les sauvegardes ne s’effaçaient pas

 

 

Je testerai les 2 méthodes : dans la rom ou la sram et comparerais le jeu si il s’écoule pareil ou plus vite avec le code en rom ou sram

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...