1

j'ai un problème, quand j'écris un programme pour genlib (1.1.0), et que je le lance avec PreOS 1.0.4, j'ai le message "Wrong Lib genlib", après avoir eu l'extracting correspondant à la lib (la seule que j'utilise).
Ca veut dire que la lib comprise dans stdlib n'est plus à jour? il faudrait peut-être voir ça. smile
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

2

je continue pendant que j'y suis, mais sur un problèmee dû à moi:

Apparemment, j'ai du mal avec la synchro. Voici le code:
[nosmile]	include	tios.h
	include	genlib.h

	xdef	_main
	xdef	_comment
	xdef	_ti89

_main:
	lea.l	8+dscreen(pc),a3
	jsr	genlib::init

;|=========================================
;|	Init first Dscreen
;|=========================================
	jsr	genlib::init_dscreen	;init dscreen 1
	jsr	genlib::push_hd		;save handle
	move.l	a0,-(a3)		;save *dscreen
	move.l	a0,d0
	jsr	genlib::set_dscreen_function
	jsr	genlib::cls		;clear dscreen1

;|=========================================
;|	Init second Dscreen
;|=========================================
	jsr	genlib::init_dscreen	;init dscreen 2
	jsr	genlib::push_hd		;save handle
	move.l	a0,-(a3)		;save *dscreen
	move.l	a0,d0
	jsr	genlib::set_dscreen_function
	jsr	genlib::cls		;clear dscreen

;|=========================================
;|	Init some data
;|=========================================
	lea.l	helene(pc),a0	;*sprite
	moveq	#0,d0		;x
	moveq	#1,d1		;y
	moveq	#1,d2		;speed of the sprite
	moveq	#0,d4		;temp offset for double buffering

;|=========================================
;|	Main loop
;|=========================================
MainLoop:
	add.w	d2,d0
	jsr	genlib::cls
	jsr	genlib::put_big_sprite

	;|=================================
	;|	Test the sprite position
	;|=================================

	tst.w	d0
	bne	\NotLeft
	moveq	#1,d2
\NotLeft:
	cmpi.w	#70,d0
	bne	\NotRight
	moveq	#-1,d2
\NotRight:

	;|=================================
	;|	Wait
	;|=================================
Ready:	tst.l	genlib::timer
	beq	Ready

	;|=================================
	;|	Swap the buffers
	;|=================================
	move.w	d0,d3		;save x
	move.l	0(a3,d4.l),d0
	jsr	genlib::set_dscreen_int
	eori.b	#4,d4
	move.l	0(a3,d4.l),d0
	jsr	genlib::set_dscreen_function
	move.w	d3,d0		;restore x

	;|=================================
	;|	Wait
	;|=================================
Wait:
	tst.w	genlib::frame_timer
	beq	Wait
	clr.w	genlib::frame_timer

	;|=================================
	;|	Test ESC
	;|=================================
	movem.l	d0-d2/a0-a1,-(sp)
	jsr	tios::GKeyFlush
	movem.l	(sp)+,d0-d2/a0-a1
	move.w	GETKEY_CODE,d3
	cmpi.w	#264,d3		;ESC
	bne	MainLoop

;|=========================================
;|	Quit
;|=========================================
	jsr	genlib::free_hd
	jsr	genlib::quit
	rts

;|=========================================
;|	Variables
;|=========================================
	even
dscreen:	dc.l	0,0
_comment:	dc.b	"Ma chérie! ;)",0[/nosmile]



Quand j'éxécute le binaire sur TiEmu (dernière version dispo aujourd'hui), ça rend très mal. J'ai pourtant suivi ce que tu m'avais dit pour respecter la synchro avec l'écran:
MainLoop:
La tu peux faire tout le calcul que tu veux qui ne modifie pas le Working DScreen.
Y compris mettre a jour les Plane par un update_vscreen.
bsr Ready ; Est-ce qu'on peut commencer a ecrire a l'ecran ?
Affichage de la frame courante

bsr SwapBuffer ; Echange les DScreen
bsr Wait15 ; Ou Wait30 / Synchronise avec l'ecran pour avoir un frame constant (15 fps ou 30 fps). bra MainLoop

Je ne vois pas où ça cloche (mais je pense que je dois toucher au working dscreen avec mon cls/put_big_sprite...). Si le code est bon, c'est TiEmu qui rend mal. Je ne peux pas tester sur real-calc, je n'ai plus de piles. couic
Et j'en ai marre, j'ai toujours eu des problèmes avec les synchro, je ne sais pas comment ça marche en hard, donc j'ai du mal à me représenter exactement ce qui se passe.
Merci bien pour tout!
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

3

>Ca veut dire que la lib comprise dans stdlib n'est plus à jour? il faudrait peut-être voir ça.
Oui elle n'est pas a jour.

Sinon :
Tiemu rend mal. Essaye SMA qui est nickel on-calc et sur vti, tu verras.
Sinon ton code est mal fait.

Il faudrait plutot faire :

MainLoop: 
	;|================================= 
	;|	Wait 
	;|================================= 
Ready:	tst.l	genlib::timer 
	beq	Ready 

	add.w	d2,d0 
	jsr	genlib::cls 
	jsr	genlib::put_big_sprite 
 
	;|================================= 
	;|	Test the sprite position 
	;|================================= 
 
	tst.w	d0 
	bne	\NotLeft 
	moveq	#1,d2 
\NotLeft: 
	cmpi.w	#70,d0 
	bne	\NotRight 
	moveq	#-1,d2 
\NotRight: 
 
 
	;|================================= 
	;|	Swap the buffers 
	;|================================= 
	move.w	d0,d3		;save x 
	move.l	0(a3,d4.l),d0 
	jsr	genlib::set_dscreen_int 
	eori.b	#4,d4 
	move.l	0(a3,d4.l),d0 
	jsr	genlib::set_dscreen_function 
	move.w	d3,d0		;restore x 
 
	;|================================= 
	;|	Wait 
	;|================================= 
Wait: 
	tst.w	genlib::frame_timer 
	beq	Wait 
	clr.w	genlib::frame_timer 
        clr.l    genlib::timer

	;|================================= 
	;|	Test ESC 
	;|================================= 
	movem.l	d0-d2/a0-a1,-(sp) 
	jsr	tios::GKeyFlush 
	movem.l	(sp)+,d0-d2/a0-a1 
	move.w	GETKEY_CODE,d3 
	cmpi.w	#264,d3		;ESC 
	bne	MainLoop 


Sinon pourquoi utilise tu GKeyFlush et pas la touche ESC du joypad ?

4

Merci PpHd pour les réponses!
Merci pour le code, je vais noter la procédure de synchro quelque part dans mes archives. Et c'est dommage pour TiEmu, je vais en parler à Romain, à moins que ce n'est déjà été fait sur la mailing-list.

Pour le joypad... en fait c'est l'habitude d'utiliser les RAM calls, sans utiliser Genlib. Là, je vais le faire effectivement, ça sera plus intelligent.

Merci encore! top
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

5

j'ai programme txtrider ca marche tres bien mais depuis que j'ai telecherge un cours ca ne marche plus du tout la calto m'affiche lib graphlib j'ai donc telecharge graphlib mais maintenant elle m'affiche graphlib isn't akernel lib que dois je faire?????merci!!!!!!!!!!!!!

6

1-> installe PreOS que tu trouveras ici: t3/

2-> pose pas tes questions n'importe où, merci de pourrir les topics des autres!!! vtffvtff
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

7

Normalement TiEmu détecte correctement la routine de nvg de genlib... confus
Tu émulais une HW1 ou une HW2 ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

euh... comment le savoir? je vais regarder comment ça se paramètre. en tout cas, l'OS etais AMS 2.09. je devrais essayer avec PedroM peut-être. Là, je vais essayer avec un AMS 3.10.

Si tu veux le binaire avec la synchro corrigée par PpHd pour te rendre compte,il est ici.

edit-> en plus, il veut pas de mon .89u de titanium rage
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

9

>Normalement TiEmu détecte correctement la routine de nvg de genlib...
La derniere fois que j'ai essaye, non. Mais j'ai fait un binary freeze de tiemu lorsque je suis monte en charge de release de pedrom 0.81.

10

bon, j'ai un pépin avec le clavier maintenant:

voici le code:
	;|=================================
	;|	Test ESC
	;|=================================
	movem.l	d0-d2/a0-a1,-(sp)
	jsr	genlib::wait_no_key
	jsr	tios::GKeyFlush
	movem.l	(sp)+,d0-d2/a0-a1
	move.w	GETKEY_CODE,d3
	cmpi.w	#264,d3		;ESC
	bne	MainLoop

le programme attend correctement si une touche est appuyée. Cependant, après, ESC ne fonctionne plus (le programme ne quitte plus).
De plus, genlib::wait_no_key n'est pas censée détruire de registres, mais si je ne mets pas l'appel entre les movem, l'image qui dépend de d0-d2/a0-a1 s'affiche n'importe où.
J'ai pas eu le temps de regarder en détail au débuggueur, ni de regarder les sources. C'est peut-être un problème connu, peut-être est-ce moi qui me trompe, je sais pas trop, et je n'ai pas le temps de pousser dans els détails aujourd'hui. Je regarderai demain si j'ai plus de temps.
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

11

Je ne comprends pas du tout ton code.
Je n'ai pas l'habitude d'utiliser le joypad, donc peut-être que je suis à côté de la plaque, mais pourquoi utilises-tu GKeyFlush ?
D'ailleurs, c'est plutôt l'appel à ce ROM_CALL qui détruit d0-d2/a0-a1...
Ensuite, pourquoi tu ne fais pas un gl_read_joypad ?

Enfin, pourquoi tu fais un move dans d3 suivi d'un cmp ? Le résultat risque d'être souvent le même...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

12

Sasume :
Je n'ai pas l'habitude d'utiliser le joypad, donc peut-être que je suis à côté de la plaque, mais pourquoi utilises-tu GKeyFlush ?

Pour vider le tampon clavier. Sinon, GETKEY_CODE ne se vide pas
Sasume :
D'ailleurs, c'est plutôt l'appel à ce ROM_CALL qui détruit d0-d2/a0-a1...

Effectivement, GKeyFlush détruit d0-d2/a0-a1. Ceci dit, même sans ça et uniquement avec genlib::wait_no_key, ça détruit d0-d2/a0-a1
Sasume :
Ensuite, pourquoi tu ne fais pas un gl_read_joypad ?

Je pourrais en effet. Pas eu le temps de me pencher dessus, c'est tout.
Sasume :
Enfin, pourquoi tu fais un move dans d3 suivi d'un cmp ? Le résultat risque d'être souvent le même...

Prends moi pour un con à ce point là... triso
extrait de tios.h:
GETKEY_CODE equ tios::kb_vars+$1e
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

13

Martial Demolins
:
Sasume :
D'ailleurs, c'est plutôt l'appel à ce ROM_CALL qui détruit d0-d2/a0-a1...
Effectivement, GKeyFlush détruit d0-d2/a0-a1. Ceci dit, même sans ça et uniquement avec genlib::wait_no_key, ça détruit d0-d2/a0-a1

Hum je vais voir ça...
Sasume :
Enfin, pourquoi tu fais un move dans d3 suivi d'un cmp ? Le résultat risque d'être souvent le même...

Prends moi pour un con à ce point là... triso
extrait de tios.h:
GETKEY_CODE equ tios::kb_vars+$1e

Ah ok, ça correspond à un adressage absolu... Dans ma tête, c'était de l'adressage immédiat triso

Je sais que genlib détourne pas mal d'interruptions, donc il y a de fortes chances pour que la lecture du clavier ne fonctionne pas à travers les ROM_CALLs.
Tu devrais utiliser le joypad (ce serait d'ailleurs tout aussi simple).
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

14

Effectivement, dans la doc il est indiqué que wait_no_key ne détruit aucun registre, pourtant elle détruit d0 et a0.
J'espère (et je suppose) que c'est une erreur de la nouvelle version de la doc...
Pour info, c'est aussi le cas de wait_a_key.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

15

>le programme attend correctement si une touche est appuyée. Cependant, après, ESC ne fonctionne plus (le programme ne quitte plus).

Normal. Tu n'utilises pas le joypad, mais AMS. Et genlib jette AMS qui pue.
Plus serieusement, genlib desactive l'int 1, que tu dois reactive pour que GETKEY_CODE marche.

>Effectivement, dans la doc il est indiqué que wait_no_key ne détruit aucun registre, pourtant elle détruit d0 et a0.
Erreur de doc ou de code ?
Arg, pkoi j'ai pas de controle de version sur ca sad

16

avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

17

ok, merci bien pour les renseignements, je vais de plus passer par le joypad pour arriver à ce que je veux! top
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

18

Ok. Il faudra que je corrige.