UG BASIC, le basic micro 8bit miracle ?
+5
iwillbeback
rendomizer
Fabf
Matari
drfloyd
9 participants
Page 2 sur 2
Page 2 sur 2 • 1, 2
Re: UG BASIC, le basic micro 8bit miracle ?
et bien... oui ! c'est mieux non que de droite à gauche ou de haut vers le bas genre ?
Re: UG BASIC, le basic micro 8bit miracle ?
Je viens d'essayer UGBASIC, c'est assez etonnant
Mais je n'arrive pas à affichr des images correctement...
Quelqu'un se sert de UGBASIC ?????
Ca accepte les PNG mais il faut les créer avec quel outil ces PNG en 16 couleurs ?
Mais je n'arrive pas à affichr des images correctement...
Quelqu'un se sert de UGBASIC ?????
Ca accepte les PNG mais il faut les créer avec quel outil ces PNG en 16 couleurs ?
_______________________________________________________
Kristof offre 1 suppo à ce post!
Re: UG BASIC, le basic micro 8bit miracle ?
salut drfloyd, tout d'abord, je suis content que vous ayez commencé à utiliser ugBASIC et que cela vous ait surpris!
En ce qui concerne les images, vous devez garder à l'esprit que, pour des raisons d'efficacité, aucun contrôle n'est effectué sur les dimensions et, pour éviter de manipuler les graphiques d'une manière différente de celle souhaitée par l'auteur, aucun traitement tel que le redimensionnement n'est effectué.
Dans le cas de COLECOVISION, les images peuvent être au format JPEG, PNG, TGA, BMP, PSD, GIF, HDR, PIC et PNM with 256x192 pixel. Celles-ci sont "mappées" à l'aide de la palette standard TMS9918, de sorte que les couleurs sont les plus proches les unes des autres. Personnellement je conseille d'utiliser le format PNG car c'est celui qui permet d'avoir le meilleur contrôle sur les images, et pour les créer il suffit d'utiliser le software "Gimp", puis de faire IMAGE > MODE > INDEXE et d'indiquer 16 couleurs pour le l'image soit valide pour ugBASIC.
Faites-moi également savoir si je peux être utile!
En ce qui concerne les images, vous devez garder à l'esprit que, pour des raisons d'efficacité, aucun contrôle n'est effectué sur les dimensions et, pour éviter de manipuler les graphiques d'une manière différente de celle souhaitée par l'auteur, aucun traitement tel que le redimensionnement n'est effectué.
Dans le cas de COLECOVISION, les images peuvent être au format JPEG, PNG, TGA, BMP, PSD, GIF, HDR, PIC et PNM with 256x192 pixel. Celles-ci sont "mappées" à l'aide de la palette standard TMS9918, de sorte que les couleurs sont les plus proches les unes des autres. Personnellement je conseille d'utiliser le format PNG car c'est celui qui permet d'avoir le meilleur contrôle sur les images, et pour les créer il suffit d'utiliser le software "Gimp", puis de faire IMAGE > MODE > INDEXE et d'indiquer 16 couleurs pour le l'image soit valide pour ugBASIC.
Faites-moi également savoir si je peux être utile!
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Re: UG BASIC, le basic micro 8bit miracle ?
drfloyd a écrit:Je viens d'essayer UGBASIC, c'est assez etonnant
Mais je n'arrive pas à affichr des images correctement...
Quelqu'un se sert de UGBASIC ?????
Ca accepte les PNG mais il faut les créer avec quel outil ces PNG en 16 couleurs ?
comme ça je dirais photoshop non ???
Anarwax- Docteur *
- Nombre de messages : 21177
Age : 47
Localisation : Bretagne
Date d'inscription : 06/09/2012
Re: UG BASIC, le basic micro 8bit miracle ?
Hi drfloyd,
I think there is a problem with the syntax, I think the program should be written like this (if I understood correctly):
Using ":=" instead of "=" avoids unnecessary copying, and using "(POSITION)" to do variable type casting, while still supported, it is unecessary from version 1.6 of the compiler .
Actually the "MOB" instructions are one of those things that I started implementing a long time ago -- and never completed, and it only works on the Commodore 64, as stated in the user manual. The reason I didn't continue is that many other developers have shown me that using the NEW IMAGE / PUT IMAGE / GET IMAGE statements is much more powerful and efficient, in order to implement a "software sprite", and the hardware limitation is resolved, if necessary, by the individual programmer on the target platform, as well.
An example of that was published some time ago in the official support group on Facebook. It is an animated character that runs over a static full screen background with the Tour Eiffel. It currently works on Olivetti Prodest PC128 and Amstrad CPC 664, and I am verifying that it also works on other platforms, including COLECOVISION.
ps. sorry, I replied in French because you wrote in French. I can actually write in French thanks to Google Translate, but of course I can't tell if I'm writing anything that makes sense -- so if that's okay with you, I'd speak in English. Let me know.
I think there is a problem with the syntax, I think the program should be written like this (if I understood correctly):
- Code:
dessin := LOAD IMAGE("pac.png")
dessinMob := MOB(dessin)
MOB SHOW dessinMob
MOB RENDER ON VBL
MOB dessinMob AT 50, 100
Using ":=" instead of "=" avoids unnecessary copying, and using "(POSITION)" to do variable type casting, while still supported, it is unecessary from version 1.6 of the compiler .
Actually the "MOB" instructions are one of those things that I started implementing a long time ago -- and never completed, and it only works on the Commodore 64, as stated in the user manual. The reason I didn't continue is that many other developers have shown me that using the NEW IMAGE / PUT IMAGE / GET IMAGE statements is much more powerful and efficient, in order to implement a "software sprite", and the hardware limitation is resolved, if necessary, by the individual programmer on the target platform, as well.
An example of that was published some time ago in the official support group on Facebook. It is an animated character that runs over a static full screen background with the Tour Eiffel. It currently works on Olivetti Prodest PC128 and Amstrad CPC 664, and I am verifying that it also works on other platforms, including COLECOVISION.
ps. sorry, I replied in French because you wrote in French. I can actually write in French thanks to Google Translate, but of course I can't tell if I'm writing anything that makes sense -- so if that's okay with you, I'd speak in English. Let me know.
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Re: UG BASIC, le basic micro 8bit miracle ?
OK :
dessin := LOAD IMAGE("pac.png")
dessinMob := MOB(dessin)
MOB SHOW dessinMob
MOB RENDER ON VBL
MOB dessinMob AT 50, 100
BUT Still not work :
Anyway, I don't need sprites... For my RPG game I only need PUT IMAGE. But I need to put 11x11 tiles (16x16 pixels), on screen. The problem is that it is very slow to display
Here is the test-code
Very slow to display the 121 tiles. Cannot do like that for a game.
Perhaps there is another fastest solution ?
dessin := LOAD IMAGE("pac.png")
dessinMob := MOB(dessin)
MOB SHOW dessinMob
MOB RENDER ON VBL
MOB dessinMob AT 50, 100
BUT Still not work :
Anyway, I don't need sprites... For my RPG game I only need PUT IMAGE. But I need to put 11x11 tiles (16x16 pixels), on screen. The problem is that it is very slow to display
Here is the test-code
- Code:
BITMAP ENABLE (2)
dessin := LOAD IMAGE("pac.png")
FOR i=1 TO 176 STEP 16
FOR j=1 TO 176 STEP 16
PUT IMAGE dessin AT i,j
NEXT
NEXT
Very slow to display the 121 tiles. Cannot do like that for a game.
Perhaps there is another fastest solution ?
_______________________________________________________
Re: UG BASIC, le basic micro 8bit miracle ?
Hi drfloyd,
as I anticipated, I am sorry but MOB does not work on COLECOVISION:
The error you get, however, is of another nature and I don't get it on my personal copy. I guess it depends on the fact that you don't have an updated compiler: could you be kind enough to download the compiler again? Just go to CONFIGURATION > COMPILERS and click on the button to download the compiler for COLECOVISION. Finally, clicking on SAVE confirms the update.
Speed is an optimization problem. It will certainly be the subject of a specific optimization in the coming days. After all we are using the graphic mode, where we want to control every single pixel. If we talk about tiles, perhaps it is appropriate to use TILEMAPs (basically, "character mode") by redefining the characters.
Just a note on the code. It is possible to increase the drawing speed by using BYTE variables instead of WORD ones (which are the default variables). Also, the starting offset of the PUT IMAGE must be a multiple of 8 pixels.
This is my personal version of the same code, if I understood correctly the original code:
Let me know if it improves.
as I anticipated, I am sorry but MOB does not work on COLECOVISION:
The error you get, however, is of another nature and I don't get it on my personal copy. I guess it depends on the fact that you don't have an updated compiler: could you be kind enough to download the compiler again? Just go to CONFIGURATION > COMPILERS and click on the button to download the compiler for COLECOVISION. Finally, clicking on SAVE confirms the update.
Speed is an optimization problem. It will certainly be the subject of a specific optimization in the coming days. After all we are using the graphic mode, where we want to control every single pixel. If we talk about tiles, perhaps it is appropriate to use TILEMAPs (basically, "character mode") by redefining the characters.
Just a note on the code. It is possible to increase the drawing speed by using BYTE variables instead of WORD ones (which are the default variables). Also, the starting offset of the PUT IMAGE must be a multiple of 8 pixels.
This is my personal version of the same code, if I understood correctly the original code:
- Code:
DEFINE DEFAULT TYPE BYTE
BITMAP ENABLE (2)
dessin := LOAD IMAGE("pac.png")
FOR i=0 TO 10
x = 0
FOR j=0 TO 10
PUT IMAGE dessin AT x,y
ADD x, 16
NEXT
ADD y, 16
NEXT
Let me know if it improves.
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Re: UG BASIC, le basic micro 8bit miracle ?
Still very slow.
Not posible for now to use UG basic to develop my game using 121 tiles.
(Perhaps possible with Characters, but boring )
Not posible for now to use UG basic to develop my game using 121 tiles.
(Perhaps possible with Characters, but boring )
_______________________________________________________
Re: UG BASIC, le basic micro 8bit miracle ?
Hi drfloyd, I'm sorry that's boring, but don't lose heart and, above all, don't miss the opportunity to do it. Also because, in any case, I'm already bringing other games to the COLECOVISION and it would be a pity if yours was missing.
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Re: UG BASIC, le basic micro 8bit miracle ?
keep us informed about evolutions of UG basic.
It's a crazy project
But I think it will be a good idea to develop IN PARALLEL a specific basic 100% optimized for one machine. For these machines :
- First for Colecovision (as there is no compil basic on this console, when you see the success of Inty basic on intellivison !)
later for :
- C64
- ATARI 8bit
- Amstrad
- MSX
It's a crazy project
But I think it will be a good idea to develop IN PARALLEL a specific basic 100% optimized for one machine. For these machines :
- First for Colecovision (as there is no compil basic on this console, when you see the success of Inty basic on intellivison !)
later for :
- C64
- ATARI 8bit
- Amstrad
- MSX
_______________________________________________________
Re: UG BASIC, le basic micro 8bit miracle ?
Un jeu en UG basic sur Thomson, très impressionnant
_______________________________________________________
Re: UG BASIC, le basic micro 8bit miracle ?
Je suis en train de tester UG BASIC. C'est très intéressant. Je suis vraiment impressionné par sa qualité.
Malheureusement mon anti-virus Avast ne l'aime pas. J'ai eu beaucoup d'alertes et les compilateurs associés aux machines Z80 ne passent pas. Il détecte beaucoup de trojans. Cela mériterait pour l'auteur (s'il me lit), de les faire valider par Avast.
Après quelques tests sur Commodore 64, je me rends qu'il y a des petits "problèmes" facheux que risquent de rencontrer les débutants.
La valeur par défaut des bits#0-2 dans le registre $D011 est %011. Elle a été modifiée en %000. L'affichage pour un simple PRINT se trouve à cause de cela, décalé de 3 bits trop haut. L'ajout d'un POKE 53265,27 vous permet de corriger le bug.
De même le banc de mémoire alloué à la puce VIC débute en $8000 (au lieu de la valeur par défaut $0000) et la mémoire écran a été placée en $8400 (au lieu de $0400). Rien de fondamentalement grave mais ça "complique" le codage sur C64 alors que l'objectif de l'outil est d'être plus simple que le langage machine.
Malheureusement mon anti-virus Avast ne l'aime pas. J'ai eu beaucoup d'alertes et les compilateurs associés aux machines Z80 ne passent pas. Il détecte beaucoup de trojans. Cela mériterait pour l'auteur (s'il me lit), de les faire valider par Avast.
Après quelques tests sur Commodore 64, je me rends qu'il y a des petits "problèmes" facheux que risquent de rencontrer les débutants.
La valeur par défaut des bits#0-2 dans le registre $D011 est %011. Elle a été modifiée en %000. L'affichage pour un simple PRINT se trouve à cause de cela, décalé de 3 bits trop haut. L'ajout d'un POKE 53265,27 vous permet de corriger le bug.
De même le banc de mémoire alloué à la puce VIC débute en $8000 (au lieu de la valeur par défaut $0000) et la mémoire écran a été placée en $8400 (au lieu de $0400). Rien de fondamentalement grave mais ça "complique" le codage sur C64 alors que l'objectif de l'outil est d'être plus simple que le langage machine.
Re: UG BASIC, le basic micro 8bit miracle ?
bonjour Commodore64&6510, oui j'ai lu ce forum et surtout et merci beaucoup pour les compliments, vous êtes très gentil!
Les problèmes sur le registre $D011 viennent d'être supprimés avec le dernier COLDFIX :
https://ugbasic.iwashere.eu/changelog/main
Pour les installer sur l'IDE, allez simplement dans Configuration > Compilateurs et cliquez sur l'icône en forme de bulle à côté des cibles qui vous intéressent.
Concernant l'adresse de départ de l'écran, elle est accessible avec le mot-clé réservé TEXTADDRESS, afin que tous les ordinateurs disposant d'un écran en mode texte sur chipsets VIC-II (comme le Commodore 128) soient accessibles de manière équivalente, en utilisant le POKE et le PEEK. commandes.
Enfin, concernant le problème des faux positifs... c'est malheureusement un problème connu d'antivirus, qui n'a pas grand chose à voir avec mon programme mais plutôt avec des méthodologies "heuristiques" d'identification de la présence de logiciels. Malheureusement je ne peux pas signaler le problème car les binaires sont recompilés plusieurs fois par semaine, pour créer HOTFIX et COLDFIX (comme celui ci-dessus !).
Le seul conseil que je puisse donner est de désactiver la détection des chemins jugés sûrs, comme celui où UGBASIC-IDE télécharge les compilateurs. Cela suffit généralement à résoudre le problème, car l'UGBASIC-IDE télécharge les compilateurs et ne les utilise que si les signatures cryptographiques sont satisfaites.
Vous pouvez accéder à la signature cryptographique via le même panneau de configuration du compilateur, en cliquant sur les icônes en forme de rosace.
Merci encore et bon retrocoding !
Les problèmes sur le registre $D011 viennent d'être supprimés avec le dernier COLDFIX :
https://ugbasic.iwashere.eu/changelog/main
Pour les installer sur l'IDE, allez simplement dans Configuration > Compilateurs et cliquez sur l'icône en forme de bulle à côté des cibles qui vous intéressent.
Concernant l'adresse de départ de l'écran, elle est accessible avec le mot-clé réservé TEXTADDRESS, afin que tous les ordinateurs disposant d'un écran en mode texte sur chipsets VIC-II (comme le Commodore 128) soient accessibles de manière équivalente, en utilisant le POKE et le PEEK. commandes.
Enfin, concernant le problème des faux positifs... c'est malheureusement un problème connu d'antivirus, qui n'a pas grand chose à voir avec mon programme mais plutôt avec des méthodologies "heuristiques" d'identification de la présence de logiciels. Malheureusement je ne peux pas signaler le problème car les binaires sont recompilés plusieurs fois par semaine, pour créer HOTFIX et COLDFIX (comme celui ci-dessus !).
Le seul conseil que je puisse donner est de désactiver la détection des chemins jugés sûrs, comme celui où UGBASIC-IDE télécharge les compilateurs. Cela suffit généralement à résoudre le problème, car l'UGBASIC-IDE télécharge les compilateurs et ne les utilise que si les signatures cryptographiques sont satisfaites.
Vous pouvez accéder à la signature cryptographique via le même panneau de configuration du compilateur, en cliquant sur les icônes en forme de rosace.
Merci encore et bon retrocoding !
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Commodore64&6510 offre 1 suppo à ce post!
Re: UG BASIC, le basic micro 8bit miracle ?
spotlessmind1975 a écrit:bonjour Commodore64&6510, oui j'ai lu ce forum et surtout et merci beaucoup pour les compliments, vous êtes très gentil!
Les problèmes sur le registre $D011 viennent d'être supprimés avec le dernier COLDFIX :
https://ugbasic.iwashere.eu/changelog/main
Pour les installer sur l'IDE, allez simplement dans Configuration > Compilateurs et cliquez sur l'icône en forme de bulle à côté des cibles qui vous intéressent.
Concernant l'adresse de départ de l'écran, elle est accessible avec le mot-clé réservé TEXTADDRESS, afin que tous les ordinateurs disposant d'un écran en mode texte sur chipsets VIC-II (comme le Commodore 128) soient accessibles de manière équivalente, en utilisant le POKE et le PEEK. commandes.
Merci pour le retour. Tout fonctionne parfaitement.
Je recommande chaudement votre utilitaire de programmation à tous les programmeurs qui n'arrivent pas à passer au langage machine.
Il est fantastique.
Re: UG BASIC, le basic micro 8bit miracle ?
Je me demande quand meme comment on gère correctement l'aspect graphique de manière optimale, chaque machine n'ayant pas la meme definition, les memes couleurs, les memes contraintes d'affichage, des sprites ou pas...
_______________________________________________________
sidchip_fr offre 1 suppo à ce post!
Re: UG BASIC, le basic micro 8bit miracle ?
Çà gère les sprites de l'Amstrad Plus ce BASIC ?
Copper- Docteur *
- Nombre de messages : 7762
Age : 48
Localisation : FRANCE
Date d'inscription : 02/11/2020
Re: UG BASIC, le basic micro 8bit miracle ?
Salut drfloyd, pour répondre à cette question vous devez comprendre le concept d'"isomorphisme", qui est à la base du langage ugBASIC.
En voulant être synthétique, au risque d'être approximatif, on peut dire que tous les ordinateurs 8 bits sont similaires, étant donné qu'ils ont été conçus avec à peu près les mêmes principes en tête. Évidemment, ils ne sont pas du tout identiques les uns aux autres.
La solution traditionnelle consiste à rechercher ce qu'elles ont en commun, en construisant le concept d'"abstraction", et toutes les bibliothèques basées sur un langage de programmation le font. En ce sens, ugBASIC est différent. Il ne recherche pas du tout le multiple le plus petit commun. Il n’essaie même pas de rendre un ordinateur identique à un autre. Ce qu'il fait, plus simplement, c'est traduire ce qu'il reçoit de la meilleure façon pour la cible utilisée. S'il y a des sprites, utilisez-les, sinon ne le faites pas. S'il y a des graphiques, utilisez-les, sinon ne le faites pas. Cela garantit toujours une efficacité maximale, car il n'y a pas de « couche intermédiaire » qui fait abstraction du matériel.
Une fois ce point de départ établi, il est de la responsabilité du programmeur d'adopter les techniques qui permettent d'écrire un programme pouvant fonctionner sur différents ordinateurs. Par exemple, écrire des algorithmes indépendants de la taille de l'écran, ou adopter des ressources graphiques différenciées basées sur le chipset vidéo.
Ce qui, curieusement, est bien moins exigeant qu’on pourrait le penser. Pour la raison pour laquelle j'ai introduit cette discussion : les ordinateurs sont similaires les uns aux autres. Un peu comme le faisait SCUMM de LucasArts : le jeu était le même, mais le look était très différent d'un ordinateur à l'autre. Même dans ce cas, un mécanisme similaire à celui de l’isomorphisme a été adopté, mais pas complètement, car le cœur du jeu était un interprète. Dans ugBASIC, vous travaillez directement au niveau du code machine. Beaucoup plus efficace !
Par exemple, il y a le jeu SOKO64+, qui a été initialement écrit pour fonctionner sur le Commodore 64 (it was called SOKO64). Avec quelques changements et adaptations, il a été possible de le faire fonctionner également sur un ColecoVision.
Tout cela grâce à l'isomorphisme.
En voulant être synthétique, au risque d'être approximatif, on peut dire que tous les ordinateurs 8 bits sont similaires, étant donné qu'ils ont été conçus avec à peu près les mêmes principes en tête. Évidemment, ils ne sont pas du tout identiques les uns aux autres.
La solution traditionnelle consiste à rechercher ce qu'elles ont en commun, en construisant le concept d'"abstraction", et toutes les bibliothèques basées sur un langage de programmation le font. En ce sens, ugBASIC est différent. Il ne recherche pas du tout le multiple le plus petit commun. Il n’essaie même pas de rendre un ordinateur identique à un autre. Ce qu'il fait, plus simplement, c'est traduire ce qu'il reçoit de la meilleure façon pour la cible utilisée. S'il y a des sprites, utilisez-les, sinon ne le faites pas. S'il y a des graphiques, utilisez-les, sinon ne le faites pas. Cela garantit toujours une efficacité maximale, car il n'y a pas de « couche intermédiaire » qui fait abstraction du matériel.
Une fois ce point de départ établi, il est de la responsabilité du programmeur d'adopter les techniques qui permettent d'écrire un programme pouvant fonctionner sur différents ordinateurs. Par exemple, écrire des algorithmes indépendants de la taille de l'écran, ou adopter des ressources graphiques différenciées basées sur le chipset vidéo.
Ce qui, curieusement, est bien moins exigeant qu’on pourrait le penser. Pour la raison pour laquelle j'ai introduit cette discussion : les ordinateurs sont similaires les uns aux autres. Un peu comme le faisait SCUMM de LucasArts : le jeu était le même, mais le look était très différent d'un ordinateur à l'autre. Même dans ce cas, un mécanisme similaire à celui de l’isomorphisme a été adopté, mais pas complètement, car le cœur du jeu était un interprète. Dans ugBASIC, vous travaillez directement au niveau du code machine. Beaucoup plus efficace !
Par exemple, il y a le jeu SOKO64+, qui a été initialement écrit pour fonctionner sur le Commodore 64 (it was called SOKO64). Avec quelques changements et adaptations, il a été possible de le faire fonctionner également sur un ColecoVision.
Tout cela grâce à l'isomorphisme.
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Commodore64&6510 offre 1 suppo à ce post!
Re: UG BASIC, le basic micro 8bit miracle ?
Copper a écrit:Çà gère les sprites de l'Amstrad Plus ce BASIC ?
Amstrad PLUS support is on the roadmap:
https://ugbasic.iwashere.eu/targets
And it will have sprites, for sure:
https://ugbasic.iwashere.eu/manual/sprites
spotlessmind1975- Patient en incubation
- Nombre de messages : 10
Age : 49
Localisation : Roma, Italia
Date d'inscription : 30/10/2022
Page 2 sur 2 • 1, 2
Sujets similaires
» [BASIC QB64] le topic officiel du meilleur basic au monde ?
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» SIMPLE/BASIC : Concevoir un Univers 3D en Basic
» LES HOMEBREW MICRO... EN BASIC !
» Second BASIC (BEX)
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» SIMPLE/BASIC : Concevoir un Univers 3D en Basic
» LES HOMEBREW MICRO... EN BASIC !
» Second BASIC (BEX)
Page 2 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum