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();
Citer : Posté le 06/09/2012 23:59 | #
Ce code fonctionne-t-il aussi avec les nouvelles Graph 75/85/95 (SD) - SH4 ?
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
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.
Citer : Posté le 08/09/2012 21:30 | #
retro-enginnering?
I own a graph 3575+.
Citer : Posté le 09/09/2012 00:31 | #
On a de quoi?
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
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...
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)
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 10/09/2012 22:34 | #
Quand on double-clique ça exécute 2 fois le code de post...
Citer : Posté le 10/01/2013 17:58 | #
et un spam bot, un!
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 10/01/2013 19:04 | #
Vite supprimé
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<