MSX Village forum

La Place des Développeurs Compilateur BASIC

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 13/02/2023 à 00h40
Hello,

Comme vous le savez déjà (normalement), l'association MO5.com (qui œuvre la sauvegarde du patrimoine vidéoludique) est en train créer un jeu sur MSX lors d'une série de Live sur Twitch (le dernier en date était aujourd'hui d'ailleurs).
Ils font leur jeu en BASIC... et c'est donc très très lent.

J'ai lu des choses à propos de compilateur de programme BASIC (notamment Basic-Kun) : quelqu'un a de l'expérience avec ça et connait notamment les limites de ces compilateurs ? :hum


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 13/02/2023 à 08h47
moi je connais quelqu'un :)

http://msxosaure.wifeo.com/les-bases.php

https://www.dailymotion.com/video/xk6dir

le x-basic (basic kun) est rapide mais a ses limitations sur la taille du programme qui est limité à environ 10 k0

il y a aussi le nestor basic qui est un x-basic super amélioré mais qui demande au moins un MSX 2 avec 128 Ko


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 13/02/2023 à 08h57
Nestor BASIC nécessite un MSX 2 pour l'exécuter, mais il permet de faire des programmes MSX 1 ?


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 13/02/2023 à 13h19
pour les 2 programmes la compilation se fait directement dans la mémoire du MSX à partir du Basic et il ne génèrent pas de programme compilés éxècutables

il y a aussi le MCBC MSX Club Basic Compiler mais il ne tourne qu'avec un MSX ayant 128 kO de Ram Mappée


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5481

Le 13/02/2023 à 18h02
Hola chicos,

Oui je connais assez bien. j''y ai laissé des heures de ma vie, alors que je n'étais encore qu'un jeune bambin imberbe, en 2012 quand je m'était mis en tête de développer un jeu MSX2 : https://treasureofbabylon.ebsoft.fr

X-Basic / Kun-Basic c'est la même chose.
Nestor Basic c'est une version Améliorée de Kun-Basic, et comme le dit Jipe, c'est plus adapté à un MSX2.

Je dirais que c'est efficace à condition, soit de l'utiliser sur de petite routines, soit sur un programme complet, et du coup faut pas que ca dépasse 10Ko.

Le "compilateur" est chargé en RAM. Le principal inconvénient de cette solution est qu'il compile le code Basic à la volée, autant de fois qu'il est rencontré.

Code example
Code TEXT :
 
 [b]1150_TURBO ON(P(),O,STA,LVL,PA,NX(),NY(),TQ(),PCS,WI)[/b]
1151 NN=1:KO$="11557373"
1160 DX=TQ(0,3):DY=TQ(1,3)
1170 TIME=0:G=0:WI=0:CP=0:FORY=0TO2:FORX=0TO2:CP=CP+1
1180 IF CP<=PCSTHEN COPY(88+NX(TQ(X,Y)),132+NY(TQ(X,Y)))-(88+NX(TQ(X,Y))+19,132+NY(TQ(X,Y))+19),1TO(88+X*20,72+Y*20),0:G=G+1
1190 IF TQ(X,Y)=G THEN WI=WI+1
1200 NEXTX,Y:P(0)=17:P(1)=1:E=USR(69):IF STA=1ORPA=1THENGOTO1290
1210 IF WI=9 AND STA<>1 THEN P(0)=44:P(1)=1:E=USR(69):P(0)=7:P(1)=&H8C8+LVL:P(2)=1:E=USR(6):TIME=0:GOTO1290 ELSELINE(88+DX*20,72+DY*20)-(88+DX*20+19,72+DY*20+19),0,BF 'win or not
1220 IF TIME<20THEN 1220
1225 A=STICK(O):ON A GOTO1250,1225,1260,1225,1230,1225,1240,1225
1226 IFSTRIG(O)THEN1290
1227 GOTO1225
1230 IF DY-1>-1THEN TQ(DX,DY)=TQ(DX,DY-1):TQ(DX,DY-1)=9:DY=DY-1:GOTO1261
1240 IF DX+1<3THEN TQ(DX,DY)=TQ(DX+1,DY):TQ(DX+1,DY)=9:DX=DX+1:GOTO1261
1250 IF DY+1<3THEN TQ(DX,DY)=TQ(DX,DY+1):TQ(DX,DY+1)=9:DY=DY+1:GOTO1261
1260 IF DX-1>-1THEN TQ(DX,DY)=TQ(DX-1,DY):TQ(DX-1,DY)=9:DX=DX-1:GOTO1261
1261 C$=MID$(KO$,NN,1):D$=MID$(STR$(A),2,1):IFC$=D$THEN NN=NN+1ELSE NN=1
1262 IF NN=9 THENG=0:FORY=0TO2:FORX=0TO2:G=G+1:TQ(X,Y)=G:NEXTX,Y:PCS=9:WI=9
1265 GOTO 1170
1290 '
[b]1300 _TURBO OFF[/b]
 


Ici quand la ligne 1150 est exécutée par le Basic, CALL TURBO ON indique qu'il faut compiler tout le bloque de code qui se termine par CALL TURBO OFF
On passe des variables au bloque de code par la même occasion.

Plus le bloque de code est grand, et plus le temps de compilation est long... Parfois plusieurs secondes.
Ce bout de code une fois compilé ne reste pas en RAM ou ailleurs. Et donc à caque fois que la ligne 1150 est appelée, le bloque de code est compilée à la volée.
Il faut donc faire attention où employer compilation, et ne pas sortir du bloque compilé pour rien...

Sinon, on arrive à une rapidité X10 la plupart du temps. Sauf sur les fonctions graphiques qui ne sont que peut accélérée.

Interrogation : je ne sais pas si ca marche sur MSX1.
Info : Kun Basic est intégré de base dans les MSX2+ de Sanyo




Edité par ericb59 Le 13/02/2023 à 18h04


banniere-ericb59e
Site web    
MSXosaure Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 03/10/2009 à 00h09

Messages: 775

Le 15/02/2023 à 19h22
On avait fait Penguin Cafe aussi a l'époque sur MSX1, ça montre les limites de ce qu'on peut faire.

j'avais fait un genre de frogger penguin master mind :lol

https://dai.ly/x55tu9


Le MSXien le plus à l'ouest :fou ... ou presque :D
osaurer
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie