asteroid pour TO8...

Des MO et des TO...

Modérateur : Politburo

Avatar du membre
stefff285
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 201
Enregistré le : 03 mai 2009 16:16
Localisation : dijon
Contact :

Message par stefff285 »

coucou yoan charmé de faire ta connaissance !

pour ma part je debute en asm 6809 et je suis plutot
graphiste donc pas de bleme une fois que j'ai recupéré
mon amiga 1200 de la part de jérome car avec deluxe
paint : impeccable de faire des sprites (j'ai entendu dire
que pour les jeux gameboy et gameboy color et encore
pour quelques consoles comme pour certains jeux ds
il etait encore utilisé !)

hum ce qui ne m'empechera pas d'essayer de comprendre
le code, j'ai capté (dans la logique) le source des shaded
bobs mais bon adressage memoire a tous les etages
hey hey pas encore alerte avec ce genre de choses

si tu veux voir ce que je fais:

http://yoursteff.blogspot.com
ou encore
http://yoursteff.lautre.net


a tres bientot


steff :lol: :lol: :lol:


edit la preuve par l'image quand on se lance ben en avant

Image
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

bah, la cartouche 6809 du TO7 heu... c'est bien mais y'a mieux...
Je pense que je vais travailler un peu sur la chaine de compilation gcc / as09 pour terminer Asteroid avec un peu de C.
Ca devrait etre réutilisable pour autre chose... ca peut même donner une sorte de framework de dev C/ASM pour TO8 si j'ai le courage de faire du réutilisable...
Entre le boulot d'Eric et le compilateur C pour Vectrex je pense qu'on peut faire quelquechose de pas mal du tout...
=> des nouvelles bientôt sur ma page www.alternative-system.com
(mais ce soir, j'écris une petite connerie)
Avatar du membre
stefff285
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 201
Enregistré le : 03 mai 2009 16:16
Localisation : dijon
Contact :

Re: asteroid pour TO8...

Message par stefff285 »

youplaboom c cool ca !

a bientot donc

steff
__sam__
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 134
Enregistré le : 24 oct. 2007 09:48
Localisation : Brest (france, 29)

Re: asteroid pour TO8...

Message par __sam__ »

gilles a écrit :bah, la cartouche 6809 du TO7 heu... c'est bien mais y'a mieux...
Ben il y a aussi le compilateur ASM de préhisto (c6809).

Sinon perso pour certains effets de la démo "Space Project" mes 1er protos (avant le passage de préhisto pour les optims) étaient en C avec ASM sous gcc6809.. C'est pas mal pour mettre au point. Il faut juste passer outre le faite que le compilo avorte quand il y a des expressions trop complexes et qu'il manque de registres.

A noter: j'ai réussi aussi à recompiler un gcc4 pour 6809 et voir les trucs +/- sympa qu'il propose sur le forum de logicielsmoto:
  • - un mode où B et X ne sont pas préservés sur la pile, et sont utilisés pour passer des valeurs aux fonctions (sympa pour économiser des cycles)
    - il sait étendre le nombre de registres en utilisant l'adressage direct via DP en fournissant potentiellement 256 nouveaux registres globaux (cool, c'était un vieux soucis avec l'ancien GCC qui plantait sur du code 6809e par manque de registre sur des expressions complexes)
    - il sait utiliser une notion de far pointer pour appeler des fonctions dans une autre bank mémoire et donc dépasser la limite des 64Ko (trop bien ce truc... mais ca serait encore mieux s'il ne fallait pas spécifier les banks des fonctions mais que le linker se débrouillait tout seul.. et aussi si ca pouvait marcher pour les structures de données)
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

__sam__ a écrit :
gilles a écrit :bah, la cartouche 6809 du TO7 heu... c'est bien mais y'a mieux...
Ben il y a aussi le compilateur ASM de préhisto (c6809).

Sinon perso pour certains effets de la démo "Space Project" mes 1er protos (avant le passage de préhisto pour les optims) étaient en C avec ASM sous gcc6809.. C'est pas mal pour mettre au point. Il faut juste passer outre le faite que le compilo avorte quand il y a des expressions trop complexes et qu'il manque de registres.

A noter: j'ai réussi aussi à recompiler un gcc4 pour 6809 et voir les trucs +/- sympa qu'il propose sur le forum de logicielsmoto:
  • - un mode où B et X ne sont pas préservés sur la pile, et sont utilisés pour passer des valeurs aux fonctions (sympa pour économiser des cycles)
    - il sait étendre le nombre de registres en utilisant l'adressage direct via DP en fournissant potentiellement 256 nouveaux registres globaux (cool, c'était un vieux soucis avec l'ancien GCC qui plantait sur du code 6809e par manque de registre sur des expressions complexes)
    - il sait utiliser une notion de far pointer pour appeler des fonctions dans une autre bank mémoire et donc dépasser la limite des 64Ko (trop bien ce truc... mais ca serait encore mieux s'il ne fallait pas spécifier les banks des fonctions mais que le linker se débrouillait tout seul.. et aussi si ca pouvait marcher pour les structures de données)
Excellent, ben maintenant y'a plus qu'à :)
Quelques tests ce soir... Avec probablement un projet sur sourceforge pour regrouper tout ça...
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

bon premiers tests assez décevants,
Les outils d'Eric sont un peu bordéliques et pas totalement fonctionnels sous Win XP, éventuellement en modifiant le PATH on doit pouvoir s'en sortir mais bof, le but est de placer ses fichiers dans un répertoire puis lancer un make ou tout au plus un ..\..\make

Les outils vectrex sont mieux packagés mais trop vieux, l'outil stobin ne fonctionne pas sous WINXP, il utilise l'extendeur DOS v1.0 de djgpp.
Avatar du membre
stefff285
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 201
Enregistré le : 03 mai 2009 16:16
Localisation : dijon
Contact :

Re: asteroid pour TO8...

Message par stefff285 »

bonjour a tous

je viens d'avoir une idee pour de la video sous téo

de la video en ascii art

reste a faire le film en silhouette et savoir apres si
je peux rajouter une bande son ce qui sera hachement
plus dur !!

bref ca je devrai y arriver

je vais faire un essai avec un de mes film et apres
on verra

prehisto si ce projet t'interesse dis moi quoi ^^


steff qui vous dis a bientot


------------------ :P :P :P
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

stefff285 a écrit :bonjour a tous

je viens d'avoir une idee pour de la video sous téo

de la video en ascii art

reste a faire le film en silhouette et savoir apres si
je peux rajouter une bande son ce qui sera hachement
plus dur !!

bref ca je devrai y arriver

je vais faire un essai avec un de mes film et apres
on verra

prehisto si ce projet t'interesse dis moi quoi ^^


steff qui vous dis a bientot


------------------ :P :P :P
L'ascii art sur thomson n'est pas forcément intéressant puisqu'il n'y a que des modes graphiques... Donc pas de vitesse a gagner dans cette voie...
Sinon le compilateur c vectrex est maintenant fonctionnel avec ma version de stobin en ligne ce midi sur ma page...
Avatar du membre
stefff285
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 201
Enregistré le : 03 mai 2009 16:16
Localisation : dijon
Contact :

Re: asteroid pour TO8...

Message par stefff285 »

bonjour gilles !

bonne nouvelle pour ton emulateur

sinon je prepare alors une diskette .sap de dessin de ma part

on va bien voir ce que cela va donner

a bientot

steff

/ps:en basic 512 la je devrai y arriver ^^
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

le compilateur C vectrex réadapté TO8 a sorti son premier Hello world il y a quelques heures (bon, d'accord c'est juste un Hello, j'ai eu la flemme de faire le world derriere).
Reste maintenant à:
Déterminer l'adresse 'idéale' pour implanter un prog en ASM (et sans perdre le DOS).
Déterminer l'adresse de la pile.
Créer des primitives pour les points d'acces interessant du moniteur (Ok, théoriquement tous mais j'ai la flemme... donc un sous ensemble me va bien).
Packager avec sapfs pour avoir un disque en autoboot.
Il devrait être possible de mixer assez facilement C et asm avec la macro asm de gcc (puisque c'est la méthode d'implantation du moniteur).
Le tout donnera un compilateur C TO8/TO9 et vectrex, et par la suite peut être aussi pour la gamme MO.
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

gilles a écrit :le compilateur C vectrex réadapté TO8 a sorti son premier Hello world il y a quelques heures (bon, d'accord c'est juste un Hello, j'ai eu la flemme de faire le world derriere).
Reste maintenant à:
Déterminer l'adresse 'idéale' pour implanter un prog en ASM (et sans perdre le DOS).
Déterminer l'adresse de la pile.
Créer des primitives pour les points d'acces interessant du moniteur (Ok, théoriquement tous mais j'ai la flemme... donc un sous ensemble me va bien).
Packager avec sapfs pour avoir un disque en autoboot.
Il devrait être possible de mixer assez facilement C et asm avec la macro asm de gcc (puisque c'est la méthode d'implantation du moniteur).
Le tout donnera un compilateur C TO8/TO9 et vectrex, et par la suite peut être aussi pour la gamme MO.
suite de la suite, dispo en téléchargement sur ma page...
Permet de compiler un programme C vers une archive SAP pour utilisation directe sous ému, le tout en un clic...
Bon il reste encore pas mal de boulot... mais maintenant il y a au moins de quoi terminer mon asteroid sur TO8 en ASM :) (meme s'il faut réécrire pour s'insérer correctement dans du C avec les primitives asm() de gcc...
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

le projet continue...
Remise en forme pour le C+ASM du SDK dérivé du compilateur C Vectrex.
Ce compilateur est un peu étrange et se plante parfois sur des expressions ultra simples...
Mais bon, ca se contourne aussi...

Remis en forme asteroid donne ceci :

Code : Tout sélectionner

/*
 * Include des fonctions du moniteur
 */
#include <to8.h>

#include "movetab.h" 

static char DIRTY_NUM;

/****************************************************************
*
*	Gestion du joueur
*
****************************************************************/
static int SH_X=0;
static int SH_Y=0;

static char SH_DIR=0;
static char SH_D=0;
//	THRUST de 0 a 15
static char SH_THRUST=0;
const char SH_SPEED_TAB[16]={	0,0,0,1,
								1,1,1,1,
								1,2,2,2,
								2,2,3,3};
						
static char SH_SPEED=0;

static char JOY_DIR;
static char TIR_OK=0xFF;

static char read_joy1(void) {
	char ret;
	asm("lda 0HE7CC");
	asm("anda #0H0F");
	asm("sta 0HE61FF");
	return read_ram(0x61FF);
}
static char read_button1(void) {
	asm("lda 0HE7CD");
	asm("anda #0H40");
	asm("sta 0HE61FF");
	return read_ram(0x61FF);
}

/* */

void SHIP_HANDLE(char phase) {
//	gestion de la manette
	JOY_DIR=read_joy1();
	if ((JOY_DIR&0x04)==0x00) {
		if (SH_DIR==0)
			SH_DIR=0x3F;
		else
			SH_DIR--;
	} 
	if ((JOY_DIR&0x08)==0x00) {
		if (SH_DIR==0x3F)
			SH_DIR=0x00;
		else
			SH_DIR++;
	} 
	
	if (JOY_DIR&0x01) {
		if (SH_THRUST<0x0F)
			SH_THRUST++;
	} else {
		if (SH_THRUST>0x00)
			SH_THRUST--;	
	}
	SH_SPEED=SH_SPEED_TAB[SH_THRUST];
	DELTA(SH_SPEED);
	
	read_button1();
...
C'est plus simple à maintenir et à faire évoluer et limite mieux optimisé que mon code ASM par endroits...
Ca semble donc assez viable...
__sam__
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 134
Enregistré le : 24 oct. 2007 09:48
Localisation : Brest (france, 29)

Re: asteroid pour TO8...

Message par __sam__ »

gilles a écrit :

Code : Tout sélectionner

	asm("lda 0HE7CC");
	asm("anda #0H0F");
	asm("sta 0HE61FF");
Tiens je me demande si comme avec GCC tu ne peux pas écrire cela avec une seule instruction ASM.

1/ soit en utilisant le ';' comme séparateur d'instruction asm:

Code : Tout sélectionner

asm("lda 0hE7CC; anda #15; sta 0h61ff");
2/ soit en utilisant la concaténation implicite de chaines en C:

Code : Tout sélectionner

asm(""
"lda 0hE7CC\n"
"anda #15\n"
"sta 0h61FF");
3/ soit carrément en ne fermant pas la chaine sur une même ligne. C'est ce que j'utilise avec gcc par exemple. En fait je m'amusais pas mal à mixer le C (code d'origine, de référence) et l'ASM (+/- optimisé) quand je travaillais sur un format perso de nombre flottants sur 16bits utilisé dans mon générateur de montagne (SEEE EEEM MMMMMMMM: 1bit signe, 6bits pour l'expostant, et 9(+1, implicite) pour la mantisse. C'est un bon format: pas gourmand, bonne précision relative (0.1%) et qui permet de mixer des grosses valeurs avec des petites). Ca donnait par exemple

Code : Tout sélectionner

#ifdef __MC6809__
extern int itof(int i);
asm("	.area 	_CODE
	.globl 	_itof
_itof:	pshs	x
	ldx	#32+16
	ldd	4,s
	bne	itof1
	puls	x,pc
itof1:	bpl	itof2
	nega
	negb
	sbca	#0
	leax	64,x
itof2:	leax	-1,x
	lslb
	rola
	bcc	itof2
	andb	#128
	leax	d,x
	tfr	x,d
	exg	a,b
	aslb
	rola
	adcb	#0
	puls	x,pc
");
#else
// conversion int --> fp
int itof(int i) {
  int e = (32+15)<<9, z = 0;
  if(!i) return 0;
  if(i<0) {
    e |= 0x8000;
    i = -i;
  }
  do {
    e-=0x200;
    i<<=1;
  } while(!btst(i,0x8000));

  i>>=6;
  i&=0x1FF;
  e |= i;

  //  if(z) e |= 0x8000;

  return e;
}
#endif
Avatar du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: asteroid pour TO8...

Message par gilles »

cette version de GCC est assez sensible, voire meme totalement buggée.
asm("lda #00\n tsta\n ") peut eventuellement convenir... mais pour la lisibilité c'est moyen.
en version multiligne... à voir...
En fait là il s'agit d'une conversion d'un code ASM que je compilais avec as09 en mode DOS. Avec réécriture
de la logique dans le C réduit de cette version de gcc...
jmtuning
Fonctionne à 75 bauds
Fonctionne à 75 bauds
Messages : 57
Enregistré le : 08 août 2009 14:59
Contact :

Re: asteroid pour TO8...

Message par jmtuning »

ca en est ou?
Répondre

Retourner vers « Thomson »