Programmer la SEGA Megadrive en Basic
+18
vingazole
last.wave
Stef
lincruste
Urbinou
renegade51
Manray
philip
ichigobankai
F.L
eckain
tetsuro
Tryphon
Anarwax
HkFarewell
ace76
drfloyd
Monos
22 participants
Page 4 sur 9
Page 4 sur 9 • 1, 2, 3, 4, 5, 6, 7, 8, 9
Re: Programmer la SEGA Megadrive en Basic
drfloyd a écrit: Parce que je me vois mal "dessiner" toutes mes tiles en DATA 0 et 1
Pfff tite bite ! Papier millimétré et hopopop au boulot !
Re: Programmer la SEGA Megadrive en Basic
Tu peux aussi écrire un petit programme en Pure qui prend une image et imprimé les DATA correspondants (c'est plus ou moins ce que je fais avec Shinobi).
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Urbinou a écrit:drfloyd a écrit: Parce que je me vois mal "dessiner" toutes mes tiles en DATA 0 et 1
Pfff tite bite ! Papier millimétré et hopopop au boulot !
je l'avais fait pour crazy cars sur megadrive.... , a ce moment là je ne connaissais pas l'existence du logiciel imagenesis de devster... c'est vetea qui me l'a fait connaitre et heureusement sinon j'aurais laissé tomber pour barbarian !
pour info, c'est plus que des 0 et des 1 , ca va de 0 à F et chaque chiffre correspond à une couleur de ta palette de 16 couleurs.si tu utilise la'palette par defaut, 0 c'est noir et 1 c'est blanc. à cette epoque là je connaissais les numéros de couleur par coeur
et non, bex et second basic ce n'est pas la meme chose. second basic est une evolution de bex, et je n'ai jamais utilisé d'ailleurs
Re: Programmer la SEGA Megadrive en Basic
Urbinou a écrit:drfloyd a écrit: Parce que je me vois mal "dessiner" toutes mes tiles en DATA 0 et 1
Pfff tite bite ! Papier millimétré et hopopop au boulot !
je faisais ca sur Ti99 en 1982
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
F.L a écrit:Urbinou a écrit:drfloyd a écrit: Parce que je me vois mal "dessiner" toutes mes tiles en DATA 0 et 1
Pfff tite bite ! Papier millimétré et hopopop au boulot !
je l'avais fait pour crazy cars sur megadrive.... , a ce moment là je ne connaissais pas l'existence du logiciel imagenesis de devster... c'est vetea qui me l'a fait connaitre et heureusement sinon j'aurais laissé tomber pour barbarian !
pour info, c'est plus que des 0 et des 1 , ca va de 0 à F et chaque chiffre correspond à une couleur de ta palette de 16 couleurs.si tu utilise la'palette par defaut, 0 c'est noir et 1 c'est blanc. à cette epoque là je connaissais les numéros de couleur par coeur
et non, bex et second basic ce n'est pas la meme chose. second basic est une evolution de bex, et je n'ai jamais utilisé d'ailleurs
Ah ok je pensais que Second basic etait identique
je n'ai pas encore étudié les couleurs pour les Tiles, mais ok je vois
Imagenesis ? Ok je chercherai, merci
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
Monos a écrit:Recherche Sega Genesis Tile Designer (SGTD)
http://devster.monkeeh.com par la je crois.
Sur SGTD tu as un éditeur de dessin pour grapher.
Re: Programmer la SEGA Megadrive en Basic
je vais toujours voir si mon projets tient la route avec quelques tiles génériques bicolores
faut que je vois si la structure du jeu puisse tenir dans les 64ko de RAM en dev un proto (les 64ko de RAM VIDEO devraient suffire)
QUESTION :
On est d'accord que ce langage gère bien les sauvegardes sur la pile de la cartouche ? On peut stocker combien d'informations ?
faut que je vois si la structure du jeu puisse tenir dans les 64ko de RAM en dev un proto (les 64ko de RAM VIDEO devraient suffire)
QUESTION :
On est d'accord que ce langage gère bien les sauvegardes sur la pile de la cartouche ? On peut stocker combien d'informations ?
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
y a pas de cos et sin en second basic !!!???????
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
C'est très possible, vu que quand tu codes un JV sur ces bécanes tu évites les calculs mathématiques coûteux sur des flottants...
Si t'en as vraiment besoin, classiquement, tu mets les valeurs des sinus d'angle entre 0 et 90 dans une table, puis tu utilises le fait que :
cos(x) = sin(90 - x)
sin(90 + x) = cos(x)
cos(90 + x) = -sin(x)
sin(180 + x) = -sin(x)
cos(180 + x) = -cos(x)
sin(270 + x) = -cos(x)
cos(270 + x) = sin(x)
Si t'en as vraiment besoin, classiquement, tu mets les valeurs des sinus d'angle entre 0 et 90 dans une table, puis tu utilises le fait que :
cos(x) = sin(90 - x)
sin(90 + x) = cos(x)
cos(90 + x) = -sin(x)
sin(180 + x) = -sin(x)
cos(180 + x) = -cos(x)
sin(270 + x) = -cos(x)
cos(270 + x) = sin(x)
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Je confirme pas de sin et Cos
en meme temps y a que des Integer et des Long...
je vais m'en passer car ta technique va me faire perdre des octets
(et je vais les compter les octets !!!)
en meme temps y a que des Integer et des Long...
je vais m'en passer car ta technique va me faire perdre des octets
(et je vais les compter les octets !!!)
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
Tu sais que sans astuce tu peux faire une cartouche de 4 Mo sans problème ? Je pense pas que tu sois à 90 octets près...
Pour utiliser simplement des nombres à virgule avec des entiers, on utilise la virgule fixe : tu codes par exemple dans ta table les valeurs de 256*sin(x), et lorsque tu dois les utiliser dans un calcul tu divises le résultat par 256...
(tu peux remplacer 256 par une autre puissance de 2 ; on choisit des puissances de 2 parce que diviser par une puissance de 2 est beaucoup plus rapide que diviser par un entier quelconque).
Pour utiliser simplement des nombres à virgule avec des entiers, on utilise la virgule fixe : tu codes par exemple dans ta table les valeurs de 256*sin(x), et lorsque tu dois les utiliser dans un calcul tu divises le résultat par 256...
(tu peux remplacer 256 par une autre puissance de 2 ; on choisit des puissances de 2 parce que diviser par une puissance de 2 est beaucoup plus rapide que diviser par un entier quelconque).
Dernière édition par Tryphon le Dim 16 Fév 2020 - 23:46, édité 1 fois
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
drfloyd a écrit:faut que je vois si la structure du jeu puisse tenir dans les 64ko de RAM en dev un proto (les 64ko de RAM VIDEO devraient suffire)
Deux choses :
1) la structure du jeu, c'est quoi ? Le code ? Les données ? Si c'est le code, tu le mets en ROM, pas en RAM. Idem pour les données si elles ne doivent pas être modifiées. T'es pas sur ordi, t'es sur console
2) La RAM VIDEO ne sert pas à stocker la structure du jeu (quoi que ça puisse concerner). Tu n'y as de toutes façons pas accès de façon simple.
QUESTION :
On est d'accord que ce langage gère bien les sauvegardes sur la pile de la cartouche ? On peut stocker combien d'informations ?
Aucune idée.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Tu ne sauvegardes pas sur une pile mais sur une BRAM(Backup RAM) sauvegardée par une pileOn est d'accord que ce langage gère bien les sauvegardes sur la pile de la cartouche ? On peut stocker combien d'informations ?
Après tout dépend de la taille de la RAM que tu mets dessus .
Invité- Invité
Re: Programmer la SEGA Megadrive en Basic
Bon
De toute façon :
La commande randomize et son seed sont buggés... Ce qui est un énorme problème pour moi
De toute façon :
La commande randomize et son seed sont buggés... Ce qui est un énorme problème pour moi
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
Buggés en quel sens ?
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Test simple
Randomize 12345
Print rnd(999)
Randomize 12345
Print rnd(999)
Tu n'obtiens pas le même resultat
Randomize 12345
Print rnd(999)
Randomize 12345
Print rnd(999)
Tu n'obtiens pas le même resultat
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
De ce que je vois sur la doc, tu n'as pas de paramètre à Randomize :
Après, tu peux écrire ton propre générateur, ce n'est pas très difficile (deux lignes de code).
- Code:
Randomize
a = Rnd(5)
Print a
Après, tu peux écrire ton propre générateur, ce n'est pas très difficile (deux lignes de code).
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Dans ma doc j'ai
Randomize [seed]
Ton générateur m'interesse
Randomize [seed]
Ton générateur m'interesse
_______________________________________________________
Re: Programmer la SEGA Megadrive en Basic
Mon exemple était tiré de http://sbasic.second-dimension.com/functions/rnd.html
Le générateur de Borland C++ fonctionne comme ça :
Tu donnes une valeur à X (la graine), puis à chaque fois que tu veux un nouveau nombre aléatoire tu calcules :
(& = "et logique")
et tu renvoies
(>> = "décalage binaire vers la droite) (ce qui revient à renvoyer X / 65536)
Ça te donne un nombre pseudo-aléatoire entre 0 et 65535.
Vu que je ne connais pas Second Basic, je ne sais pas trop comment tu codes le "et logique" et le "décalage vers la droite", mais je suppose que ça y est (au cas où, tu mets la division par 65536, y'a des chances que le compilateur le transforme en décalage.
Le générateur de Borland C++ fonctionne comme ça :
Tu donnes une valeur à X (la graine), puis à chaque fois que tu veux un nouveau nombre aléatoire tu calcules :
- Code:
X = (22695477*X + 1) & (0xFFFFFFFF)
(& = "et logique")
et tu renvoies
- Code:
X >> 16
(>> = "décalage binaire vers la droite) (ce qui revient à renvoyer X / 65536)
Ça te donne un nombre pseudo-aléatoire entre 0 et 65535.
Vu que je ne connais pas Second Basic, je ne sais pas trop comment tu codes le "et logique" et le "décalage vers la droite", mais je suppose que ça y est (au cas où, tu mets la division par 65536, y'a des chances que le compilateur le transforme en décalage.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
Méthode similaire en Delphi, avec des valeurs différentes :
- Code:
// Random integer, implemented as a deterministic linear congruential generator
// with 134775813 as a and 1 as c.
function Random(const ARange: Integer): Integer;
var
Temp: Longint;
begin
Temp := RandSeed * $08088405 + 1;
RandSeed := Temp;
Result := (UInt64(Cardinal(ARange)) * UInt64(Cardinal(Temp))) shr 32;
end;
Re: Programmer la SEGA Megadrive en Basic
Oui, ça s'appelle un générateur congruentiel linéaire (edit : ah ben c'est écrit dans les commentaires ), y'en a plein, des plus ou moins bons.
Tous les langages en utilisaient un jusqu'aux années 2000. Maintenant on utilise un algo plus robuste appelé le Mersenne Twister, mais c'est mathématiquement plus coton.
Tous les langages en utilisaient un jusqu'aux années 2000. Maintenant on utilise un algo plus robuste appelé le Mersenne Twister, mais c'est mathématiquement plus coton.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
lincruste- Interne
- Nombre de messages : 5619
Age : 45
Localisation : RP
Date d'inscription : 07/06/2014
Re: Programmer la SEGA Megadrive en Basic
Tryphon a écrit:Maintenant on utilise un algo plus robuste appelé le Mersenne Twister, mais c'est mathématiquement plus coton.
Qu'entends-tu par robuste ? Cet algo "simple" produit bien du pseudo aléatoire, que gagne-t-on à le complexifier ?
Re: Programmer la SEGA Megadrive en Basic
Oui Tryphon, et s'il te plaît explique-nous ça simplement, en moins de 100 mots et sans utiliser la lettre E.
lincruste- Interne
- Nombre de messages : 5619
Age : 45
Localisation : RP
Date d'inscription : 07/06/2014
Re: Programmer la SEGA Megadrive en Basic
Urbinou a écrit:Tryphon a écrit:Maintenant on utilise un algo plus robuste appelé le Mersenne Twister, mais c'est mathématiquement plus coton.
Qu'entends-tu par robuste ? Cet algo "simple" produit bien du pseudo aléatoire, que gagne-t-on à le complexifier ?
Pour avoir du "bon" pseudo-aléatoire, il faut vérifier tout un tas de tests.
Par exemple, si tu regardes le n-ième bit des nombres aléatoires générés, tu dois obtenir environ 50% de 0 et 50% de 1 sur un grand nombre d'essais.
Ou si tu regardes le n-ième et le p-ième bit, tu dois obtenir 25% de 00, 25% de 01, 25% de 10 et 25% de 11, etc.
Tu as encore d'autres tests, mais tu vois l'idée. Edit : par exemple, voilà ce que le genre de graphique que tu obtiens quand tu génères 3 nombres aléatoires consécutifs x, y, z avec nos générateurs et que tu places le point de coordonnées (x, y, z) dans le cube :
normalement tu aurais dû voir le cube "rempli".
Les générateurs congruentiels linéaires ne passent pas tous ces tests. Par exemple, les deux qu'on a cités ne vérifient pas les propriétés précédentes, surtout pour les bits de poids faibles. C'est pour ça que tu fais un "shr 32" ou un ">> 16" : pour renvoyer les bits de poids forts. Mais même comme ça c'est pas parfait.
Autre défaut inhérent à la méthode : la suite des nombres générée est périodique : au bout d'un (très long) moment, tu retrouves les mêmes nombres dans le même ordre.
Pour beaucoup d'applications, ce n'est pas très grave.
Mais beaucoup d'algorithmes (notamment la famille d'algorithmes dits "de Monte-Carlo", qui ont des applications en Intelligence Artificielle) nécessitent des nombres bien répartis.
Le Mersenne Twister a justement été créé avec les applications type Monte-Carlo en tête. Il est meilleur que les GCL sur les tests de fréquence, et, même s'il est lui aussi périodique, sa période est beaucoup plus longue. C'est devenu le générateur de nombres aléatoires par défaut dans pas mal de langages (je crois même qu'il est maintenant le générateur par défaut en C++).
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
J'ai pas réussi sans la lettre E en moins de 100 mots
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer la SEGA Megadrive en Basic
C'est pas le but justement ??Test simple
Randomize 12345
Print rnd(999)
Randomize 12345
Print rnd(999)
Tu n'obtiens pas le même resultat
Parce que justement avoir du random, sur un algo de pseudo random, et dans un jeu console de surcroît, est assez difficile,car comme le déroulement d'un jeu est assez linéaire, il faut arriver à y inclure des événements aléatoires, comme le pad + interruptions, etc ..., pas simple de ne pas avoir toujours les mêmes nombres au même moment .
Dernière édition par Touko le Mer 19 Fév 2020 - 11:25, édité 1 fois
Invité- Invité
Re: Programmer la SEGA Megadrive en Basic
Non, avec une seed identique, tu dois obtenir la même suite de nombres "aléatoires". Dans son monde procédural, c'est essentiel, sinon d'une partie à l'autre l'univers ne serait plus le même : )
Re: Programmer la SEGA Megadrive en Basic
Mouai, bah je me demande du coup où est l'aléatoire là dedans ??Urbinou a écrit:Non, avec une seed identique, tu dois obtenir la même suite de nombres "aléatoires". Dans son monde procédural, c'est essentiel, sinon d'une partie à l'autre l'univers ne serait plus le même : )
Le but d'un seed, et de limiter le nombre dans une liste il me semble .
Edit: Non autant pour moi, vous avez raison
Dernière édition par Touko le Mer 19 Fév 2020 - 11:29, édité 1 fois
Invité- Invité
Re: Programmer la SEGA Megadrive en Basic
Le hasard existe-t-il ? Rdv dans le topic métaphysique
Si tu seed avec le tick count par exemple, tu es plus ou moins assuré d'avoir de l'aléatoire. Avec des guillemets.
Non, c'est un point de départ, tu le constates aisément en examinant les codes ci-dessus
Si tu seed avec le tick count par exemple, tu es plus ou moins assuré d'avoir de l'aléatoire. Avec des guillemets.
Touko a écrit:
Le but d'un seed, et de limiter le nombre dans une liste il me semble .
Non, c'est un point de départ, tu le constates aisément en examinant les codes ci-dessus
Page 4 sur 9 • 1, 2, 3, 4, 5, 6, 7, 8, 9
Sujets similaires
» BASIC! ou l'art de programmer sur android
» Programmer en Visual Basic ?
» [Vds] lot de bouquins pour programmer en basic amstrad Thomsom
» Quel micro pour apprendre à programmer en Basic ?
» [megadrive] mon remake de Crazy Cars CPC en basic
» Programmer en Visual Basic ?
» [Vds] lot de bouquins pour programmer en basic amstrad Thomsom
» Quel micro pour apprendre à programmer en Basic ?
» [megadrive] mon remake de Crazy Cars CPC en basic
Page 4 sur 9
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum