Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Star Trek: Glorious Wolf - (...) / Sorties: Dread Mac Farlane - episode 3 / News: Plein d'images cools créées par (...) / Sorties: Star Trek: Glorious Wolf - (...) / Jeux: Final Fantasy 2.0 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

321 connectés actuellement

29190832 visiteurs
depuis l'ouverture

5883 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

New RPG Maker

Level Up!

Offgame

RPG Maker Détente

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Jeux en développement > SysOff (Console/Micro Old school Virtuel)


Monos - posté le 07/05/2016 à 10:16:10 (57322 messages postés)

❤ 0

Vive le homebrew

Le SysOFF
image

Yop les gens, je vous présente mon projet actuel. Un système virtuelle old school. (Une console virtuel pour faire simple)
J'avais envie de créer "une console ou un micro ordinateur 8 bits", j'avais fais une paire de test avec fusion mais de bien concret jusque à ce que je tombe sur l'interpreteur Chip-8 et des articles sur le comment créer un emulateur du chip-8. (Ou re créer son interpreteur pour être exacte)

Et je me suis lancé dans ce projet mais je me dévie un peu du chip-8 pour mon propre interpreteur.
Pour commencer c'est quoi le Chip-8 ? C'est un "processeur virtuel" qui pouvait tourner véritablemment sur de vielle machine et des calculatrices. Il simule des registres, et utilise son propre langage machine.
Le Chip-8 intégre 34 instructions. Nous sommes loins du nombre d'instruction existant des deux procos 8bits qui se sont bataillé à cette époque. Le chip-8 est donc un bon exercise pour apprendre à créer un émulateur...

Le interpreteur je l'appelle le "SysOff" pour tout simplement Système Offgame.
"Le proco" le ChipOFF.

Le procésseur comprend les opcodes (instruction machine) du Chip-8 avec l'ajoute d'autre opcode qui sont déja en place ou qui sera mis en place mais n'est pas compatible avec les fichiers binaire dédié à au chip-8 pour la simpel raison que pour décoder une instruction je préférer garder l'ordre poids Fort + poids Faible d'un double octets. La norme du chip-8 est l'inverse.

Caractéristiques
Le SysOff permet d'afficher 90 points sur 40 seulement deux couleurs affichable (Noir/Blanc)
La Ram est de 4096 octets. (4ko) Les 512 premiers octets sont réservés au système
La Vram est de 512 octets qui ne sont pas emputé au 4ko. Un octet donne 8 points à l'écran.
Au niveau des contrôles 5 boutons. (Haut,Bas,Gauche,Droite,Feu)

L'architecture
16 Registres 8 bits(De 0 à 15 ($0-$f)) donc le derniers fait office de Registre de Drapeau.
Un Registre 16 bits (I) qui est un pointeur d'adresse.
Un Registre 12 bits (PC) qui est le pointeur de la prochaine instruction à interpréter

Un Registre compteur de son 8 bits. C'est simple si le compteur de son est supérieur à 0, ça lance un Bip
Un Registre Compteur de jeu 8 bits
Les deux compteurs sont décrémenté de 1toutes les 4 instructions.

La pile qui permet de mémoriser 16 Adresses. (Mode LIFO, Derniers entrée / premier à être sortie)
Et son registre 8 bits qui permet de pointer sur la pile la plus haute.
(32 octets + 1 pour le registres). Mémoire interne dédié pour la pile)

Coder le SysOFF
L'interpréteur se code en langage machine.
Le programme permet de lire un fichier binaire et mémoriser son contenu a partir de l'adresse 512.
Pour mes tests "je code en dure" les mémorisations d'instruction dans la mémoire.
Un "compilateur" est prévus plus tard !

Le langage utilisé pour ce système virtuel
Le langage utilisé est le Dark Basic. C'est simple à mettre en oeuvre, rapide, pour un prototype c'est sympathique.
La pile et les registres sont mémorisés dans des tableau.
La VRAM aussi.

La RAM (les 4k) eu parcontre sont directement mémoriser dans la mémoire du PC ! La dark basic permet de créer des blocks de mémoire et pouvoir y travailler.

Du boulot !
Du boulot est encore à faire.
Ajouter des opcodes comme par exemple pouvoir manipuler la pile autre qu'avec PC. J'ai encore un peu de "places"
Continuer la mémorisation de la police d'écriture.(Pour le moment je suis à K)
Gestion du système !
Création d'exemple
Et créer un compilateur


Les opcodes
Voici les opcodes qui fonctionne. (enfin normalement si ça bug pas et plus ou moins xd)

$00E0
Effacer l'écran.
La VRAM est réinitialisé à 0 ce qui efface l'écran.

$00EE
Retour de la sous routine.

Mémorise l'adresse de la Pile dans le Compteur de programme pour la prochaine adresse d'instruction.
La pile est décrémenté de 1

$1nnn
Sauter à une adresse.

Le Compteur de programme est modifié en fonction de la valeur NNN

$2nnn
Aller à une sous routine
Le compteur de programme est mémorisé dans la pile
Saut à l'adresse nnn

$3xkk
Sauter la prochaine instruction si kk est égale de la valeur contenue dans le registre x
La valeur du registre X est comparé a la valeur kk. Si il y a égalité, le PC est incrémenté de 2 pour sauter la prochaine instruction.

$4xkk
Sauter la prochaine instruction si kk est différent de la valeur contenue dans le registre x
La valeur du registre X est comparé a la valeur kk. Si les deux valeurs sont différents, le PC est incrémenté de 2 pour sauter la prochaine instruction.

$5xyo
Sauter la prochaine instruction si le contenu du registre X est égale au contenu du registre Y.
La valeur du registre X est comparé a la valeur du registre Y. Si il y a égalité, le PC est incrémenté de 2 pour sauter la prochaine instruction.

$6xkk
La valeur kk est chargé dans le registre X

$7xkk
La valeur kk est ajouté au contenu du registre X

$8xy0
La valeur contenu dans le registre Y est chargé dans le registre X

$8xy1
Le Registre X est remplacé par l'opération logique du contenue du registre X (or) Registre Y

$8xy2
Le Registre X est remplacé par l'opération logique du contenue du registre X (and) Registre Y

$8xy3
Le Registre X est remplacé par l'opération logique du contenue du registre X (xor) Registre Y

$8xy4
Le contenu du registre Y est éditionné au contenu du registre X, avec le registre 15 = 1 si c'est supérieur à 255. (Sinon le registre 15 passe à 0)
$8xy5
Le contenu du registre Y est soustrait au contenu du registre X, avec le registre 15 = 1 si c'est inférieur à 0 (Sinon le registre 15 passe à 0)

$8xy6
Décalage de 1 sur la droite du registre X
Le Registre F prend la valeur du bits plus à droite de X

$8xy7
Le contenu du registre Y est soustrait au contenu du registre X.
Si la valeur est négative alors le registre F prend la valeur de 1 sinon elle devient 0


$8xyE
Décalage de 1 sur la gauche du registre X
Le Registre F prend la valeur du bits plus à droite de X

$9xy0
Si le contenu du registre X est différent du contenu du registre Y alors on saute la prochaine instruction.Le Pc est incrémenté de 2

$Annn
Le registre I prend la valeur de nnn

$Bnnn
Saute à l'instruction contenu à l'adresse nnn + le contenu du registre 0

$Cxkk
Le registre X prendre une valeur aléatoire entre 0 et la valeur kk

$Dxyn
Affiche le « sprites » à la position de la valeur contenu au registre x et Y. Charge les 8 premier bites a l'adresse contenu dans le registre I. Exécute n ligne.

$Ex9E
Saute la prochaine instruction si le numéros du bouton utilisé est égale au contenu du registre X

$ExA2
Saute la prochaine instruction si le numéros du bouton utilisé est différent au contenu du registre X

$Fx00
Charge le contenu du registre X à l'adresse contenu dans le registre I

$Fx07
Le Registre X prend le contenu du registre compteur de jeu

$Fx0A
Attendre qu'une touche est utilisé. La valeur de la touche est mémorisé dans le registre x

$Fx15
Le registre compteur de jeu prend le contenu du registre X

$Fx18
Le compteur de Son prend la valeur contenu dans le registre X

$Fx1E
Le contenu du registre X est additionné au contenu du registre I.

$Fx29
Mémorise dans le registre I, l'adresse de départ ou se trouve le numéros du caractére à afficher contenu dans le registre X

$Fx33
Le contenu du registre x est découpé en centaine, dizaine, et unité (base de 10) et placé dans l'adresse I,I+1,I+2

$Fx55
Charge le contenu du registre 0 à X à l'adresse pointant de I à I+X

$Fx65
Charge le contenu de l'adresse I à I+X dans le registre 0 à X

Divers
Lien du code source actuel pour information.
(Version test 00,00,05)
Lien

Signer du nez ?


hassen - posté le 07/05/2016 à 18:29:49 (580 messages postés)

❤ 0

Alien

Je suis désolé Mono mais le chip-8 et tout ça...je pige que dalle :wouah

School Urban Legends


Konnie - posté le 07/05/2016 à 18:38:43 (3982 messages postés)

❤ 0

Pareil je comprends rien à part que ça emule un Chip-8. Mais beau boulot :F


Monos - posté le 08/05/2016 à 13:40:50 (57322 messages postés)

❤ 0

Vive le homebrew

En gros je fais une "console virtuel trés rétro" avec son propre langage.

Il y a une bonne 60en de fonction dans ce langage. Par exemple $1nnn qui permet d'aller à la case mémoire (une ligne on va dire) nnn qui contient d'une autre fonction à exécuter... nnn est trois chiffres en hexadécimale pour former un nombre qui correspond à une adresse.

En gros si sa va tenter des gens, ça permet d'avoir une initiation au langage machine et voir comment fonctionne plus ou moins un processeur.

J'ai fini de jeter la base du "compilateur" qui lui est écrit en Pure basic. Le dark basic c'est la merde pour les interface et heum ne sais pas vraiment transformer une chaine de caractère en vrais valeur hexadécimale.

Le Compilateur va lire le fichier "code source". (Un simpel fichier texte)
Chaque ligne comprend deux valeurs hexadécimale. (Deux nombres)
Le premier est une adresse, et la seconde est le code de l'instruction. (opcode)

Le Compilateur va foutre tous simplement foutre l'opcode dans la mémoire de l'ordianteur et en sortir un fichier binaire lisible avec l'interpréteur.

Je pense publier l'intérpreteur et le compilateur la semaine prochaine.

Signer du nez ?


Raymond du Piedmont - posté le 08/05/2016 à 14:00:02 (1105 messages postés)

❤ 0

Bouc revenant (mais sans revenus)

Par contre t'as perdu le langage Français =>[]

Ca intéressera certainement des programmeurs voulant reproduire la logique des années amiga.
Pas sûr que tu aie beaucoup de succès si ça reste uniquement sur Oniro...Vu comment c'est ciblé (et les 3/4 ici ont du mal avec la progra), un site spécialisé te feras une meilleure pub.


hassen - posté le 08/05/2016 à 17:50:58 (580 messages postés)

❤ 0

Alien

Je l'admet :ange2 Monos est trés fort (ou forte) dans le domaine de la programation, alors si c'est le cas tu devrais au moins étre capable de nous créer un jeu amateur sur rpg maker, c'est tout ce qu'on te demande :grossourire

School Urban Legends


Monos - posté le 08/05/2016 à 18:02:19 (57322 messages postés)

❤ 0

Vive le homebrew

Citation:

Par contre t'as perdu le langage Français =>[]


A force de voir de l'hexa et du binaire !

Citation:

Ca intéressera certainement des programmeurs voulant reproduire la logique des années amiga


Bien plus vieux que ça. C'est même pire que l'atari 2600.

Bof pour aller voir les sites spécialisés, a la base je fais ça pour moi et pour apprendre, car non je suis pas fort dans le domaine de la programmation. Juste que j'ai envie de partager ça ici et deux trois autres fofo. Cela peut intéresser des gens du moins dans la démarche.

Signer du nez ?

Index du forum > Jeux en développement > SysOff (Console/Micro Old school Virtuel)

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers