Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Détecter les SH4/SH3 et adapter les programmes
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Détecter les SH4/SH3 et adapter les programmes

Posté le 14/01/2015 10:47

Salut à tous! J'avais vu un topic sur Casiopeia avant qu'il ne tombe un topic où on pouvait avoir un bout de code qui permettait de détecter si la calto hôte est une SH3/SH4.

J'ai une idée. SI on retrouve ce snippet, si one le corrige, j'ai un moyen, ou du moins une idée, qui permettrait de n'avoir plus qu'un addin pour les deux architectures.

Les pointeurs (normaux ou sur fonctions) sont la clé du bousin. La plupart des fonctions d'I/O (ML, KeyDown, etc...) pourraient être stockés dans l'addin et lors de l'initialisation de l'addin, on switcherait de fonctions/constantes à utiliser pour le restant de l'addin.

Avec une sorte de vector map (tableaux de pointeurs de fonctions de même type), on aurait le choix entre les deux fonctions et avec un wrapper, on appelerait uniquement la fonction que l'on a besoin, sans avoir à se casser le chignon à propos de quelle archi on s'occupe. Cela occuperait peut-être une palce relativement moyenne à grande selon les fonctions mais le coût processeur serait quasi nul où on n'a besoin de travailler qu'une seule fois (le coût d'appel d'une fonction depuis un pointeur sur fonction est nul à quasi nul selon l'optimisation et le compilateur).


Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 14/01/2015 11:03 | #


Mais c'est déjà le cas en fait
Regarde dans useful, la fonction key_down utilise déjà cela (c'est pas de moi, c'est casimo qui avait rendu cette fonction compatible)
C'est comme cela qu'on a plusieurs add-in qui sont compatible SH3/4 avec un seul g1a
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:05 | #


Oui, (déjà, où est-elle?) mais est-ce qu'elle le fait à chaque fois que l'on apele ou une seule fois?
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 14/01/2015 11:09 | #


ici
Par contre j'ai vérifié, la fonction vérifie a chaque fois si c'est SH3 ou SH4, il y a donc moyen d'optimiser, mais je ne sais pas si le gain de temps serait vraiment conséquent... Mais c'est vrai que ce serait intéressant à tester
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:10 | #


C'est l'idée. Ca rendrait aussi le code un peu plus propre et modulable.
(T'as une version multi processeur de ML quelque part? Faut que je rendre SHC compatible sinon y vont tous me faire la tronche)
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 14/01/2015 11:14 | #


Regarde ici, il y a juste quatre lignes a changer pour que ML soit compatible (juste la vram qui change d'adresse)
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:15 | #


Oui mais bon, deux addins pour un seul jeu... Avec l'éventuelle détection, il n'y aurait plus qu'un seul addin à maintenir.
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 14/01/2015 11:16 | #


Non, le nouveau code est compatible SH3 aussi
Une fois que ML est compatible, elle l'est pour les deux
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Lephenixnoir En ligne Administrateur Points: 21025 Défis: 143 Message

Citer : Posté le 14/01/2015 11:18 | #


Y'a un bout de code comme ça en effet, c'est SimLo qui l'a présenté sur Casopeia.
Pour gcc on pourrait utiliser un symbole global avec une détection dans crt0.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:19 | #


Mouais, Dodo, sur l'émulateur, ça a pas l'air de vouloir marcher.

Ajouté le 01/02/2015 à 14:09 :
int GetMPU()
{
    int mpu;
    unsigned char s[30];
    unsigned int key;
    unsigned char savevalue;
    mpu = 0;
    savevalue = *(unsigned short*)0xA4000114;
    *(unsigned short*)0xA4000114 = 0xFFFF;
    switch ( *(unsigned short*)0xA4000114 ){
        case 0x0FFF :
            mpu = 1;
            break;

        case 0x00FF :
            mpu = 2;
            break;

        default :
            switch ( *(unsigned int*)0xFF000030 & 0xFFFFFF00 ){
                case 0x10300B00 :
                    switch ( *(unsigned int*)0xFF000044 & 0xFFFFFFF0 ){
                        case 0x00002C00 :
                            mpu = 3;
                            break;

                        case 0x00002200 :
                            mpu = 4;    // just for reference
                            break;
            };
            break;
        };
        break;
    };
    *(unsigned short*)0xA4000114 = savevalue;

    return mpu;
}

int getCPUFamily()
{
    switch(GetMPU()){
        case 3 :
        case 4 :
            return 0;
            break;
        case 2 :
        case 1 :
        case 5 : // mpu7705 ?
            return 1;
            break;
        default :
            return 2;
    }
}

#define isEMU (GetMPU() == 2)
#define isSH3 (GetMPU() == 1)
#define isSH4 (GetMPU() == 0)


Bonne chance avec KeyDown, je ne veux plus avoir affaire avec.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 121 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd