Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Un moteur de gris (quasiment) sans problèmes
Vebveb Hors ligne Membre Points: 791 Défis: 14 Message

Un moteur de gris (quasiment) sans problèmes

Posté le 06/09/2012 18:04

Bonjour,

je met ici le code que j'utilise pour le gris dans le luaFX. Je viens de corriger un bug grâce à Pierrotll: en effet lancer le gris en appuyant sur une touche posait problème. Ce bug est corrigé avec ce moteur.

Le seul bug qu'il me reste est que pour quitter j'utilise un getkey, et que ce getkey ne fonctionne pas avec toutes les touches (mais dans le cas du luaFX, ce n'est pas grave). Un appel final de getkey est nécessaire pour remettre en ordre la gestion des touches avant de quitter le programme sans reseter.

Voici le code:



void* oldvbr;

unsigned short rwd;
unsigned short rwa;
unsigned int evt;
#pragma interrupt(gray_interrupt)

void gray_interrupt()
{
int evt = INTC.INTEVT;
if (evt != 0x400)
{
   Keyboard_TimerHandler();
   INTX.IPRD.WORD = 0x0000;
   return ;
}
TMU0.TCR.BIT.UNF = 0;
TMU.TSTR.BIT.STR0 = 0;
if(screen->which == 1)
    {
        draw_all(screen->DD1);
        screen->which = 2;
        TMU0.TCNT = TMU0.TCOR = screen->time1;
    } else {
        draw_all(screen->DD2);
        screen->which = 1;
        TMU0.TCNT = TMU0.TCOR = screen->time2;
    }
    TMU.TSTR.BIT.STR0 = 1;
}


void change_rw()
{
        rwa = INTC.IPRA.WORD;
    rwd = INTX.IPRD.WORD;
        INTC.IPRA.WORD = 0xf000;
    INTX.IPRD.WORD = 0x0000;
}
void reset_rw()
{
        INTC.IPRA.WORD = rwa;
    INTX.IPRD.WORD =rwd;
    Keyboard_TimerHandler();
}

int gray_init()
{    
         change_rw();

        screen = malloc(sizeof(Screen));
    if(!screen) return 0;
        contrast_gray();
    screen->VRAM1 = VRAM[0]; // partie à adapter à votre gestion du gris (voir aussi dans l'interruption)
    screen->VRAM2 = VRAM[1];
    screen->DD1 = VRAM[2];
    screen->DD2 = VRAM[3];
    screen->time1 = 3269;
    screen->time2 = 6987;
    screen->which = 1;
    oldvbr = _builtin_get_vbr();
    set_vbr((void *)((unsigned int)gray_interrupt - INT_OFFSET));

TMU0.TCR.WORD = 0x0022;
    TMU0.TCNT = TMU0.TCOR = screen->time1;
    TMU.TSTR.BIT.STR0 = 1;
    gray_was_used = 1;
    gray_clearBuffers();
        gray_refresh();
    return 1;
}


void gray_quit()
{

        TMU.TSTR.BIT.STR0 = 0;
        TMU0.TCR.WORD = 0x0000;
    TMU0.TCNT = TMU0.TCOR = 0xFFFFFFFF;
    set_vbr(oldvbr);
        reset_rw();
        gray_clearBuffers();
        gray_refresh();
        ML_display_vram(VRAM[0]);

    // code gestion du contraste
    free(screen);
}


Keyboard_TimerHandler est le syscall 0x251.
void Keyboard_TimerHandler();


Totoyo Hors ligne Membre d'honneur Points: 15991 Défis: 102 Message
Vebveb Hors ligne Membre Points: 791 Défis: 14 Message

Citer : Posté le 07/09/2012 09:31 | #


Non, car les adresses du TMU et de INTC, INTX changent. Il faudrait un moyen d'avoir les valeurs pour l'autre modèle.
Vdragon.b Hors ligne Membre Points: 1401 Défis: 0 Message

Citer : Posté le 08/09/2012 21:30 | #


retro-enginnering?

there are many incredible things in the world...So,believe in yours dreams!
I own a graph 3575+.

Siapran Hors ligne Membre Points: 3248 Défis: 17 Message

Citer : Posté le 09/09/2012 00:31 | #


On a de quoi?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 10/09/2012 21:07 | #


Moui, Il faut juste lire la doc du SH4 Prizm... VDragon, Siapran, c'est dans le DB

Ajouté le 10/09/2012 à 21:09 :
Moui, Il faut juste lire la doc du SH4 Prizm... VDragon, Siapran, c\'est dans le DB
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 10/09/2012 21:17 | #


Hey le modo, modère ton post.
Pas besoin de répéter les choses 2 fois sur un forum...
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 10/09/2012 21:36 | #


c'est un bug, sa m'arrive aussi des fois Louloux
(et a toi aussi ici)
Sinon, je suis content d’apprendre qu'un nouveau moteur de gris est opérationnel, m'en vais me le tester (mais pas tout de suite, ma Term S est plus important que la programmation)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 10/09/2012 22:34 | #


Quand on double-clique ça exécute 2 fois le code de post...
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 10/01/2013 17:58 | #


et un spam bot, un!
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 !
Totoyo Hors ligne Membre d'honneur Points: 15991 Défis: 102 Message

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
Pour coloriser votre code, cliquez ici.
Sinon cliquez sur le bouton ci-dessous.
: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 - 2020 | Il y a 88 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