Zezito in The Glittering Caves - MO5 Forth (Bandini) and 6809 Assembly
Modérateurs : Papy.G, fneck, Carl
Re: Programmation Forth Mo5 (Bandini)
Wahou !!!!!!!!!!!
C'est superbe !
C'est superbe !
-
- Messages : 7989
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Programmation Forth Mo5 (Bandini)
C'est super coloré. En face la version N&B bien que plus fluide fait pâle figure.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
lol, pâle est vraiment le mot, vu que c'est tout blanc
Je préfère aussi de loin la version colorée. Enfin une preuve de ce qu'on peut faire sur MO5. Ca aurait eu 5 étoiles en graphisme et en animation dans Tilt !
Je préfère aussi de loin la version colorée. Enfin une preuve de ce qu'on peut faire sur MO5. Ca aurait eu 5 étoiles en graphisme et en animation dans Tilt !
- Pièces jointes
-
- tilt.jpg (14.53 Kio) Consulté 1014 fois
Re: Programmation Forth Mo5 (Bandini)
Bonjour et merci a tous, aujourd'hui je vais programmer le mouvement du protagoniste.
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
Si tu fais en assembleur, je t'invite à terme à dégager les appels aux routines moniteur pour le clavier et la manette de jeu et les remplacer par ta propre gestion du hardware dans la boucle de jeu. Par exemple, on peut gagner énoooormément de cycles en ne testant que les touches du clavier réellement utilisées plutôt que toute la matrice (pour ceux qui se posent la question, contrairement aux TO8/8D/9/9+, toutes les autres machines Thomson scannent la matrice clavier dans une boucle en pur soft, pas de contrôleur type ACIA). En plus, les appels SWI sur MO coutent très cher pour rien.
Re: Programmation Forth Mo5 (Bandini)
Merci @Fool-DupleX, je n'utilize pas le moniteur, J'ai programé une routine fait quelques annés et je utilize la direction $A7C1 PIA pour lire le clavier. Je n'ai pas jamais eu le temps d'étudier les routines de la ROM
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
Re: Programmation Forth Mo5 (Bandini)
@Fool-DupleX
Je n’ai jamais utilisé les interruptions, je pense que j'ai lu quelque part que la routine de gestion de interruptions du moniteur consomme 20% des cycles cpu?! pouvez-vous confirmer ? Merci
Je n’ai jamais utilisé les interruptions, je pense que j'ai lu quelque part que la routine de gestion de interruptions du moniteur consomme 20% des cycles cpu?! pouvez-vous confirmer ? Merci
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
Ah tiens, tu n'as jamais utilisé les fonctionnalités fournies par le moniteur ? Intéressant. Et très bien surtout, car elles sont lentes.
SWI n'est pas utilisé comme une interruption sur MO5, elle sert à appeler les fonctions du moniteur. Mais chaque appelle à SWI consomme : empilement des registres, branchement sur une routine qui détermine quelle fonction est appelée, etc. C'est toujours plus rapide de faire la même chose soi-même directement dans son propre code (mais ça rend le programme potentiellement incompatible avec les autres MO).
A ne pas confondre ceci dit avec l'IRQ, qui consomme aussi, mais parce cette interruption tourne en permanence 50 fois par seconde et fait tout un tas de trucs comme le clignotement curseur. D'ailleurs, dans ton programme en Forth, enlève le curseur qui clignote, tu vas gagner un bon 5%. Bloque l'interruption IRQ en entier et tu gagneras encore un peu.
20% je pense que c'est plutôt sur TO8/8D/9+, parce que la routine IRQ est grosse. Mais je parle sous le contrôle de Sam.
SWI n'est pas utilisé comme une interruption sur MO5, elle sert à appeler les fonctions du moniteur. Mais chaque appelle à SWI consomme : empilement des registres, branchement sur une routine qui détermine quelle fonction est appelée, etc. C'est toujours plus rapide de faire la même chose soi-même directement dans son propre code (mais ça rend le programme potentiellement incompatible avec les autres MO).
A ne pas confondre ceci dit avec l'IRQ, qui consomme aussi, mais parce cette interruption tourne en permanence 50 fois par seconde et fait tout un tas de trucs comme le clignotement curseur. D'ailleurs, dans ton programme en Forth, enlève le curseur qui clignote, tu vas gagner un bon 5%. Bloque l'interruption IRQ en entier et tu gagneras encore un peu.
20% je pense que c'est plutôt sur TO8/8D/9+, parce que la routine IRQ est grosse. Mais je parle sous le contrôle de Sam.
Re: Programmation Forth Mo5 (Bandini)
Ah je comprends, merci! Très intéressant, ah oui les 20% s'appliquent aux TO8 etc., je pensai qu'eté le même sur les MO.
Ma routine de lecture de clavier fonctionne elle sur MO5 et MO6 donc?:mais ça rend le programme potentiellement incompatible avec les autres MO
Code : Tout sélectionner
LeTecladoPIA
clr teclado
ldb teclado
LTP_teclaEsquerda
lda #$5a
sta $a7c1
lda $a7c1
bmi LTP_teclaDireita
orb #$02
bra LTP_teclaCima
LTP_teclaDireita
lda #$4a
sta $a7c1
lda $a7c1
bmi LTP_teclaCima
orb #$01
.
.
.
stb teclado
rts
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
Je dirais que oui, mais le MO6 (et MO5NR) a plus de touches et les codes que tu envoies au port B ne sont sans doute pas les mêmes, pour une même touche entre MO5 et MO6.
La remarque vaut aussi pour la manette de jeu. Sur MO5, c'est une extension ad hoc, sur MO6, c'est intégré dans la machine et multiplexé avec la prise imprimante.
Mais peu importe. L'essentiel est de terminer le boulot sur MO5. Le portage sur MO6 n'est pas bien compliqué.
La remarque vaut aussi pour la manette de jeu. Sur MO5, c'est une extension ad hoc, sur MO6, c'est intégré dans la machine et multiplexé avec la prise imprimante.
Mais peu importe. L'essentiel est de terminer le boulot sur MO5. Le portage sur MO6 n'est pas bien compliqué.
Re: Programmation Forth Mo5 (Bandini)
Merci beaucoup, je n'avais aucune idée de ces différences entre MO5 et MO6!
Dernière modification par Iapetus le 17 nov. 2023 15:07, modifié 1 fois.
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
Re: Programmation Forth Mo5 (Bandini)
Bien, le mouvement du protagoniste, complété
Next, collision avec autres sprites. La barre rouge au border = cycles cpu du sprite engine. La vert = logique.
Pour les curieux j'ai maintenant ~23Kb de memoire libres.
Next, collision avec autres sprites. La barre rouge au border = cycles cpu du sprite engine. La vert = logique.
Pour les curieux j'ai maintenant ~23Kb de memoire libres.
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
Tu as encore plein de temps CPU ... ça va peut-être possible de rajouter des bruitages
Re: Programmation Forth Mo5 (Bandini)
Oui, mais il y a un petit problème... je n'ai aucune idée comme programmé bruitage ou musique au Thomson
Autre chose, dans la version c64 l'acide/lava c'est animé, peut-être je le poudrai animé dans la version Mo5 aussi si j'ai de temps cpu suffisant... hmm
Autre chose, dans la version c64 l'acide/lava c'est animé, peut-être je le poudrai animé dans la version Mo5 aussi si j'ai de temps cpu suffisant... hmm
Dernière modification par Iapetus le 17 nov. 2023 15:42, modifié 1 fois.
MO5 - MO6 - TO8D - C64C - Timex TC2048 - Acorn Electron - Amiga 500
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: Programmation Forth Mo5 (Bandini)
Ca ce n'est pas très grave de ne pas savoir pour les bruitages, c'est relativement facile. Mais il faut un minimum de cycles CPU restant, parce que comme tout le reste, c'est fait en pur soft.
Est-ce que la manette de jeu sera obligatoire ?
Est-ce que la manette de jeu sera obligatoire ?
Dernière modification par Fool-DupleX le 17 nov. 2023 16:56, modifié 1 fois.