Derniers sujets
» L'immonde Docteur Kokus
Mar 17 Oct 2017 - 18:46 par Dom50

» Rencontre avec Emmanuel Viau (ERE informatique)
Mar 17 Oct 2017 - 18:17 par Dom50

» Organisation RAM vidéo
Mar 17 Oct 2017 - 14:26 par Davros

» OVERLAYS : est-ce accessible avec LCC65
Lun 16 Oct 2017 - 14:47 par Jede

» Holdies
Dim 15 Oct 2017 - 21:09 par Dbug

» Infocarte ORIC
Dim 15 Oct 2017 - 13:26 par fred72

» Alchimie DOUZE
Dim 15 Oct 2017 - 8:46 par kenneth

» maxiNoob apprend le C
Ven 13 Oct 2017 - 22:55 par Dbug

» page zéro ?
Ven 13 Oct 2017 - 22:36 par Dbug

» Orix : Thread de notification sur le développement
Jeu 12 Oct 2017 - 22:25 par Jede

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité :: 1 Moteur de recherche

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 123 membres enregistrés
L'utilisateur enregistré le plus récent est james64

Nos membres ont posté un total de 5719 messages dans 417 sujets
Portail ORIC




maxiNoob apprend le C

Poster un nouveau sujet   Répondre au sujet

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Jeu 7 Jan 2016 - 13:52

J'ai utilisé OSDK sur Tyrann 3 et je n'ai pas eu de pb.
S'il y a des bugs il faut les faire remonter à Dbug.

Je n'ai vu que des remontées de bugs au niveau de XA (donc ASM) et on ne parle pas de ça ici.

Didier, à mon avis pour ce genre de truc il vaut mieux rester en ASM.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Jeu 7 Jan 2016 - 16:35

Didier: pas sur de comprendre le probleme
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Jeu 7 Jan 2016 - 17:00

Ce que veut Didier c'est pouvoir dépasser les limites des 64 Ko (ou 48 Ko si on garde la ROM) en faisant un programme qui se charge dynamiquement par partie.

On aurait par exemple un main et des données globales au démarrage.

Ensuite le main chargerait une bibliothèque de fonctions et les exécuterait.

Un peu plus tard il remplacerait cette biblio par une autre et continuerait son exécution.

On a fait un peu ça avec Tyrann 3 de la façon suivante :
- On démarre avec un premier programme qui s'exécute puis avant de passer la main à un second programme il passe en mode TEXT, planque des données dans la zone HIRES (pour nous les différents personnages et des variables importantes du jeu qui se trouvent dans la sauvegarde).
- On lance le second programme via Sédoric ;
- Le second programme récupère les données planquées en zone HIRES et continue son exécution.

Ca se trouve ici :
https://github.com/hialmar/tyrann3/blob/master/team.c#L269-L273
Et ici :
https://github.com/hialmar/tyrann3/blob/master/team.c#L57-L61

Tout est dans les tests "if (io_needed)" (soit je sauve/charge vraiment la zone HIRES sur/depuis le disque soit je travaille direct sur/avec des données planquées).

Voilà un exemple d'utilisation :
https://github.com/hialmar/tyrann3/blob/master/laby.c#L949-L956
et ensuite :
https://github.com/hialmar/tyrann3/blob/master/dialog.c#L284-L285

Pour la petite histoire, là où ça devient rigolo c'est que nous dans Tyrann 3 on switche parfois entre du C et du Basic Wink

Didier voudrait un truc automatique.


Dernière édition par Hialmar le Jeu 7 Jan 2016 - 17:05, édité 1 fois

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Jeu 7 Jan 2016 - 17:05

Ca be rien de bien difficile il faut juste utiliser (correctement) des pointeurs de fonction
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Jeu 7 Jan 2016 - 17:10

Challenge accepted ?

Fais-nous un exemple avec le chargement dynamique et on en reparle.

Je sais faire ça sous Unix avec des .so ou sous Windows avec des DLL mais là on n'a rien de ça et donc il faut tout se peler à la mano et donc comme je le disais plus haut en ASM.

Mais bon on dévie pas mal du sujet de Maximus là donc je propose qu'on poste ça ailleurs.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Godzil le Jeu 7 Jan 2016 - 17:15

Ça marche, en 100% C on est d'accord?
avatar
Godzil

Messages : 106
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Hialmar le Jeu 7 Jan 2016 - 17:27

Ca roule Smile

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 815
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  maximus le Jeu 7 Jan 2016 - 17:30

ma kesce ke cé ke ce charabia ? Very Happy clown
avatar
maximus

Messages : 1087
Date d'inscription : 02/12/2012
Age : 56
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  didierv le Jeu 7 Jan 2016 - 22:54

Godzil a écrit:Ca be rien de bien difficile il faut juste utiliser (correctement) des pointeurs de fonction

Certainement Godzil, mais j'ai bien dit que je ne maitrisais pas le sujet.

Ma réflexion venait de la lecture du code source de Sorcellerie, en pascal, qui opere avec des segments.
J'ai retrouvé la page internet qui parlait d'un équivalent avec CC65 qui gere apparemment les overlays et les segments... je l'avais imprimée l'année dernière mais le site est apparemment mort Crying or Very sad
D'ou ma réflexion. Je n'avais pas envie de me lancer dans un projet 100% assembleur ou c'est clair que l'on peut le faire.

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
avatar
didierv

Messages : 489
Date d'inscription : 19/01/2014
Age : 54
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  assinie le Ven 8 Jan 2016 - 11:00

cc65 peut effectivement gérer des overlays mais cela n'a été implémenté que pour certaines machines (Apple, C64,...) pour lesquelles le support de l'OS est inclus.
Il y a même des exemples fournis avec les sources cc65.

Les compilateurs Pascal prenaient ça en charge (la série des Turbo Pascal, Pascal USCD, ...).
J'avais trouvé une page sur le Web qui expliquait les différentes méthodes utilisées, il faudrait que je la retrouve.

En gros, il s'agit d'edition de liens différée dynamique. L'appel à une fonction qui se trouve dans une librairie est remplacée par le nom de la librairie et un identifiant de la fonction dans cette librairie.
Lorsque le programme veut exécuter la fonction, il regarde si la librairie est chargée en mémoire et fait ensuite un saut vers la fonction.
La seule "difficultée" étant la gestion des librairies en mémoire.

Il doit être possible d'ajouter le support d'un OS pour l'Oric à cc65 ou à l'OSDK pour pouvoir le faire.
avatar
assinie

Messages : 171
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Dbug le Ven 13 Oct 2017 - 22:55

J'ai l'impression que vous vous compliquez pas mal la vie Smile

Des programmes qui chargement dynamiquement des parties de code sur Oric il y a en a beaucoup:
- Toutes les démos Defence-Force chargent les effets les uns après les autres
- Cosmos 1999 charge l'intro et le jeu séparément aussi
- Blake's 7, le dernier jeu de Chéma va encore plus loin en chargeant dynamiquement le code et les données par petits blocs ici et là

C'est beau et propre les vraies DLL et autres modules qui se chargent dynamiquement en fonction des besoins, mais en pratique dans un jeu on sait avec certitude a 3792% quels sont les modules qui seront nécessaires a un moment donné, il suffit donc de les assembler a adresse fixe et les charger quand on en a besoin. Au passage, c'est aussi ce que font les OS sur Oric avec leurs modules, Sedoric est coupé en plusieurs parties, mais elle ne se chargent pas n'importe ou en mémoire overlay.

Idéalement, si vous ne faites pas appel a la ROM:
- vous pouvez récupérer une grosse partie de la RAM overlay pour votre propre usage, en restant juste ce qu'il faut en haut de ram pour pouvoir charger ou sauver (a tout casser ca prend 2ko),
- d'un seul coup magiquement le programme tourne aussi sur Oric 1 et Téléstrat
et bonus, si vous n'utilisez pas Sedoric vous récupérez aussi pas mal de place sur la disquette

Chema a pas mal aidé avec le FloppyBuilder et le code d'accès au disque, maintenant ca support le Téléstrat, et ca peut aussi bien charger que sauver.

_________________

avatar
Dbug

Messages : 45
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

Re: maxiNoob apprend le C

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum