Derniers sujets
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité :: 1 Moteur de rechercheAucun
Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion
Statistiques
Nous avons 240 membres enregistrésL'utilisateur enregistré le plus récent est Jean72
Nos membres ont posté un total de 8915 messages dans 811 sujets
Besoin d'aide pour la gestion du temps ...
5 participants
Forum Oric :: Forums :: Forum Public :: Programmation en C
Page 1 sur 1
Besoin d'aide pour la gestion du temps ...
Salut les oriciens!
Alors... Je bosse en ce moment sur le portage d'un jeu sur Oric (j'enverrai une bêta en temps voulu )... Et je fais face à un problème de taille.
Dans ce jeu, la gestion du temps est indispensable : Sans ça, on ne peut juste pas jouer :/
Le problème, c'est que la commande deek(0x304) n'est d'aucune utilité, car cette zone mémoire ne semble être active que lorsque le programme est en Basic.
Ce qui veut dire qu'en C, il faut autre chose.
J'ai pensé à faire une variable et de lui ajouter +1 à chaque cycle de la boucle dans laquelle on joue...
Mais il faudrait alors que chaque cycle ait une durée constante, et je suis sûr que ça ne pourra pas être le cas.
Y'aurait-il un moyen, SVP?
Alors... Je bosse en ce moment sur le portage d'un jeu sur Oric (j'enverrai une bêta en temps voulu )... Et je fais face à un problème de taille.
Dans ce jeu, la gestion du temps est indispensable : Sans ça, on ne peut juste pas jouer :/
Le problème, c'est que la commande deek(0x304) n'est d'aucune utilité, car cette zone mémoire ne semble être active que lorsque le programme est en Basic.
Ce qui veut dire qu'en C, il faut autre chose.
J'ai pensé à faire une variable et de lui ajouter +1 à chaque cycle de la boucle dans laquelle on joue...
Mais il faudrait alors que chaque cycle ait une durée constante, et je suis sûr que ça ne pourra pas être le cas.
Y'aurait-il un moyen, SVP?
_________________
Bonjour c:
TotoShampoin- Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne
Re: Besoin d'aide pour la gestion du temps ...
Le 6522 est utilisé comme timer et envoie une interruption tout les centièmes de seconde, on peut modifier la duree en changeant la consigne du timer. Si on detourne le vecteur d interruption on peut faire des trucs precis, comme la musique qui continue toute seule quand le programme de demo oric est stoppé.
kenneth- Modérateur
- Messages : 877
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63
Re: Besoin d'aide pour la gestion du temps ...
kenneth a écrit:Le 6522 est utilisé comme timer et envoie une interruption tout les centièmes de seconde, on peut modifier la duree en changeant la consigne du timer. Si on detourne le vecteur d interruption on peut faire des trucs precis, comme la musique qui continue toute seule quand le programme de demo oric est stoppé.
Ah ouai, c'est chouette ça :o
Et est-ce qu'il y aurait la doc de la manipulation du timer quelque part? ^-^
Ah! J'ai déjà pu trouver deek(0x276) pour avoir la valeur du timer! Chouette! ^o^
_________________
Bonjour c:
TotoShampoin- Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne
Re: Besoin d'aide pour la gestion du temps ...
TotoShampoin a écrit:kenneth a écrit:Le 6522 est utilisé comme timer et envoie une interruption tout les centièmes de seconde, on peut modifier la duree en changeant la consigne du timer. Si on detourne le vecteur d interruption on peut faire des trucs precis, comme la musique qui continue toute seule quand le programme de demo oric est stoppé.
Ah ouai, c'est chouette ça :o
Et est-ce qu'il y aurait la doc de la manipulation du timer quelque part? ^-^
Ah! J'ai déjà pu trouver deek(0x276) pour avoir la valeur du timer! Chouette! ^o^
Il faut faire attention à la manipulation du timer et du vecteur d'IRQ qui jouent sur le fonctionnement du clavier.
Pour la manipulation des timers, il faut lire la datasheet du 6522 sur le site de WDC pour voir comment marchent ces timers. C'est en anglais mais c'est au moins, c'est complet. Ensuite, il y a les livres Oric où parfois il faut jouer aux devinettes pour comprendre ce que cela fait.
Jede- Messages : 308
Date d'inscription : 20/04/2016
Localisation : Var
Re: Besoin d'aide pour la gestion du temps ...
As tu jeté un oeil à mon Oric Kong en C ? J'ai été confrontée à la même problématique.
Les Timers de l'Oric peut être initialisé à 65535 dès le début du programme, il est décrémenté tous les 100ème de seconde, ce qui fait que le timer peut courir pendant 10 minutes avant de boucler à 0.
Il vaut mieux laisser les timer 1 et 2 tranquilles qui s'occupent du clavier et du curseur et jouer avec le timer 3 (#0276). Les infos, tu les trouve dans le manuel de l'atmos, au milieu du bouquin et en annexe là où il y a les adresses de la ROM)
Mais là, attention, chaque appel à la routine wait du Basic le remettra à 0, du coup :
En début de programme, juste avant de lancer la partie jeu et après les écrans de présentation qui n'en ont pas besoin, tu initialises le timer :
Dans OricKong, je l'initialise à chaque début de niveau, et comme un tableau se termine en moins de 3 minutes, je n'ai pas de soucis pour voir mon timer passer à 0 puis de reboucler à 65535 (ça peut être douloureux pour gérer un delta de temps...)
Pour déclencher un évènement tous les nn centièmes de seconde, j'initialise mes timers à moi avec une variable drapeau :
et pour le wait (pour jouer de la musique par exemple), tu le codes toi même. Au moins, le timer n'est pas remis à 0 comme si tu avais appelé la routine de l'Oric :
voilà comment je m'en suis sortie. J'espère que ça te sera utile.
Les Timers de l'Oric peut être initialisé à 65535 dès le début du programme, il est décrémenté tous les 100ème de seconde, ce qui fait que le timer peut courir pendant 10 minutes avant de boucler à 0.
Il vaut mieux laisser les timer 1 et 2 tranquilles qui s'occupent du clavier et du curseur et jouer avec le timer 3 (#0276). Les infos, tu les trouve dans le manuel de l'atmos, au milieu du bouquin et en annexe là où il y a les adresses de la ROM)
Mais là, attention, chaque appel à la routine wait du Basic le remettra à 0, du coup :
En début de programme, juste avant de lancer la partie jeu et après les écrans de présentation qui n'en ont pas besoin, tu initialises le timer :
- Code:
#define INITTIMER 65535
void main()
{
presentation();
doke(0x0276,INITTIMER);
ingame();
}
Dans OricKong, je l'initialise à chaque début de niveau, et comme un tableau se termine en moins de 3 minutes, je n'ai pas de soucis pour voir mon timer passer à 0 puis de reboucler à 65535 (ça peut être douloureux pour gérer un delta de temps...)
Pour déclencher un évènement tous les nn centièmes de seconde, j'initialise mes timers à moi avec une variable drapeau :
- Code:
timer1=INITTIMER; timer2=TEMPO;
anim_event=1;
bonus_event=1;
...
bonus_temps_restant=100;
//boucle de jeu
timerg=deek(0x0276); //on récupère la valeur du timer3
if (timer1>=timerg)
{
anim_event=1; //flag utiliser pour activer les animations
timer1=timerg-timer2; //mise à jour des timers
} else anim_event=0;
if ((timerbonus>=timerg) && (bonus_event==1))
{
//hide bonus
plot(33,13,0);
plot(33,14,0);
bonus_event=0;
}
déplacement bonhomme :
-ramasse un objet qui déclenche affichage bonus
plot(33,13,A_FWCYAN);
plot(33,14,A_FWCYAN);
score+=1;
timerbonus=timerg-TEMPOBONUS;
bonus_event=1;
if(anim_event==1)
{
déplace des sprites, etc...
affichage_bonus_temps_restant()
}
affichage_bonus_temps_restant()
{
bonus_temps_restant-=1;
printf(bonus_temps_restant)
}
//fin boucle
et pour le wait (pour jouer de la musique par exemple), tu le codes toi même. Au moins, le timer n'est pas remis à 0 comme si tu avais appelé la routine de l'Oric :
- Code:
void wait(unsigned int wait_cs)
{
unsigned int start=deek(0x0276);
unsigned int tw=start-wait_cs;
while (tw<start) {start=deek(0x0276);};
}
voilà comment je m'en suis sortie. J'espère que ça te sera utile.
Ladywasky- Messages : 240
Date d'inscription : 25/08/2018
Age : 53
Re: Besoin d'aide pour la gestion du temps ...
Je savais même pas qu'il y avait plusieurs timers :o
Et merci ^u^
Et merci ^u^
_________________
Bonjour c:
TotoShampoin- Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne
Re: Besoin d'aide pour la gestion du temps ...
Waoh, on a une prof de musique sur Oric.
_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
Re: Besoin d'aide pour la gestion du temps ...
Non, seulement DJ : je pique la musique des autres pour la transformer et en faire quelque chose d'horrible !didierv a écrit:Waoh, on a une prof de musique sur Oric.
Je suis une sorte de sorcière musicale donc
Ladywasky- Messages : 240
Date d'inscription : 25/08/2018
Age : 53
Sujets similaires
» Oricutron: Pb gestion des fichiers .tap
» Scan notice Gestion de stock (Loriciels)
» Besoin d'aide Tap2wav avec un Mac
» besoin d'un affichage printf plus rapide
» [débutant] besoin d'infos sur l'Oric-1
» Scan notice Gestion de stock (Loriciels)
» Besoin d'aide Tap2wav avec un Mac
» besoin d'un affichage printf plus rapide
» [débutant] besoin d'infos sur l'Oric-1
Forum Oric :: Forums :: Forum Public :: Programmation en C
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Mar 5 Mar 2024 - 18:54 par kenneth
» Meurtre à Grande Vitesse
Dim 25 Fév 2024 - 5:09 par Iurius
» ORIC-1 sur LE BON COIN
Ven 23 Fév 2024 - 23:01 par Mcar
» ORIC ATMOS sur LE BON COIN
Dim 4 Fév 2024 - 12:06 par kiwilevrai
» Problème d'affichage des couleurs avec un Oric Atmos
Sam 27 Jan 2024 - 1:26 par pierbail
» Bienvenue dans le Forum des Oriciens
Mar 9 Jan 2024 - 12:33 par Dom50
» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Ven 29 Déc 2023 - 14:13 par Arcade-des-Monts
» Bonnes fêtes
Mar 26 Déc 2023 - 10:21 par Dom50
» Murders in Venice / Meutres à Venise
Sam 18 Nov 2023 - 22:44 par retroric
» Un clavier PS/2 pour tester un ORIC
Dim 27 Aoû 2023 - 9:49 par Voyageur
» Disquette 3" Sedoric
Mar 1 Aoû 2023 - 14:22 par AtomeX
» faire un 6502 avec des phototransistor
Dim 16 Juil 2023 - 17:26 par Voyageur
» Oricutron linux et DSK
Jeu 29 Juin 2023 - 18:34 par Voyageur
» No Problem !
Dim 25 Juin 2023 - 17:53 par Voyageur
» MONASM pour emulateur ORIC
Lun 12 Juin 2023 - 18:31 par Gliou