Sgdk - Sega Megadrive / Genesis Development Kit

Page 17 sur 17 Précédent  1 ... 10 ... 15, 16, 17

Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Jeu 10 Oct 2019 - 19:09

Ben déjà, si c'est un define, c'est bizarre...

Tryphon
Docteur *
Docteur *

Nombre de messages : 18489
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Hpman le Jeu 10 Oct 2019 - 19:21

Bah non, c'est un registre HW.  scratch

Sans macro ça donne:

bidule=(~((*(volatile u8*)0x800177)))>>4;
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Jeu 10 Oct 2019 - 20:09

En effet c'est très bizarre...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 11 Oct 2019 - 10:25

C'est normal si ta variable bidule est signée dans quel cas le C va utiliser un shift arithmétique (avec conservation du signe) et du coup l'ordre des opérations importe peu (même résultat), par contre si bidule n'est pas signée dans ce cas il ne devrait pas changer l'ordre des opération car :
Code:
(~0)>>4 = 00001111b alors que ~(0>>4)=11111111b
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Ven 11 Oct 2019 - 10:26

C'est aussi ce que j'ai pensé, mais là c'est non-signé non ?
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 11 Oct 2019 - 10:31

Ben on sait pas ce qu'est bidule, même si le registre lu est lui non signé, GCC va devoir caster dans le type destination, donc si bidule est signé (ici on ne sait pas) alors le code généré par GCC est normal.
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Ven 11 Oct 2019 - 11:01

Ah ouais bien vu !
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 11 Oct 2019 - 11:12

Pour autant dans le code assembleur généré on voit que GCC stocke le résultat dans une variable 8 bit (si c'est bien le code qui correspond), et du coup j'aurai tendance à penser que bidule était déclaré en u8 (donc non signé) car c'est assez rare d'utiliser du s8.. Après ça arrive qu'on utilise du 'char' sans vraiment penser au fait que c'est du signé derrière. Enfin seul Hpman sait :p
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Hpman le Ven 11 Oct 2019 - 12:30

Le type/syntaxe exact est:

Code:
#define REGB_KICKSDATA (*(volatile u8*)0x800177)

typedef union __attribute__((packed,aligned(2))) _ctrl {
 u16 all;
 struct {
 u8 kicks;
 u8 base;
 };
} _ctrl;

_ctrl ctrlP2;

//////////////////////

ctrlP2.kicks=(~(REGB_KICKSDATA))>>4;



Donc non signé  study
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 11 Oct 2019 - 12:34

Alors là oui il y a un problème Confused

T'as essayé de virer ce
Code:
__attribute__((packed,aligned(2)))
à tout hasard pour voir si c'est lui qui confuse le compilo (peu de chances mais bon) ?

A priori ici ça ne sert à rien (ça sera aligné sur du word et ça sera bien packed vu tes champs).

Edit:
Tiens par contre je ne savais pas qu'on pouvait donner le même nom à un union/struct et à un typedef, j'ai toujours différencié les 2..
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Hpman le Ven 11 Oct 2019 - 12:53

C'est idem, même en stockant dans un u8 de base.

J'ai tout cassé?  Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 418468



Toujours mis le même nom, le pouvoir de la flemme  Mr. Green
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Ven 11 Oct 2019 - 14:57

ah bah oui y'a un problème clairement, tu es sur quelle version de GCC ? mais là vraiment un bug pareil c'est trop étrange. A tout hasard t'as pas fait une erreur sur la définition de ton u8 ? Car bon un bug pareil sur GCC ça me semble un peu gros :-/
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Hpman le Ven 11 Oct 2019 - 15:31

La je suis sur le 6.3.0 du sgdk, ça me semble reproductible en collant ça dans n'importe quel projet:
Code:
#define REGB_KICKSDATA (*(volatile u8*)0x800177)
u8 duh;

void derp() {
   duh=(~(REGB_KICKSDATA))>>4;
}


Testé vite fait sur l'ancien 2.95.2, code sensiblement différent (travaille avec un long) mais même souci, il not après le shift.

GCC rends l'argent!  Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 422508
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Hpman le Ven 11 Oct 2019 - 18:45

Bon ça à l'air d'être une histoire de type, on peut résoudre le pb avec un cast:

Code:
duh=(u8)(~REGB_KICKSDATA)>>4;

Ca reste tout de même un peu contre intuitif, tout est de type u8 mais il perd le type en route. Pourtant tout le code est généré en .b  saispas


Dernière édition par Hpman le Ven 11 Oct 2019 - 20:52, édité 1 fois
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 530
Age : 42
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Kannagi le Ven 11 Oct 2019 - 20:42

Pas mal de chose sont en UB en C , alors rien ne m'étonne de ce coté là MDR
Kannagi
Kannagi
Patient contaminé

Masculin Nombre de messages : 667
Age : 31
Localisation : Marseille
Date d'inscription : 18/08/2014

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Dim 13 Oct 2019 - 22:21

Souvent le C promu le type en int en interne pendant les opérations (pour des raisons de performance), mais ici en partant d'un u8 pour aller vers du u8 c'est effectivement très bizarre Confused
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par drludos le Mar 22 Oct 2019 - 0:05

En espérant pas faire un "hors sujet":

Quand je boucle un projet, j'aime bien faire un petit article "post mortem" dessus. Et comme mes 3 jeux Mega Drive fait avec SGDK sont à présent disponibles sur cartouche, j'ai écrit un article sur "Faire un jeu Megadrive en 2019". Mais j'aurai aussi pu l'appeler "SGDK c'est trop génial" car l'article essaie de montrer à quel point SGDK est puissant tout en restant simple d'accès Wink - merci encore Stef pour tout ton travail!

Bref, c'est en anglais, et vous pouvez le lire ici:
https://www.gamasutra.com/blogs/DoctorLudos/20191019/352537/Making_a_SEGA_Mega_Drive__Genesis_game_today.php

C'est pas grand chose, mais si ça peut motiver des gens à se lancer dans la création de jeux MD avec SGDK je serais super content ! Wink
avatar
drludos
Patient contaminé

Masculin Nombre de messages : 220
Age : 39
Localisation : 34
Date d'inscription : 12/10/2017

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Mar 22 Oct 2019 - 0:26

Perso je trouve que c'est sympa de voir ce genre de retour thumleft
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Stef le Mar 22 Oct 2019 - 10:26

@drludos> Waaaa merci à toi pour cette super pub thumleft
Franchement ça fait trop plaisir à lire amoureux Je trouve tes minis jeux mignons et très addictifs :) et bravo pour avoir réussi à sortir quelque chose en 1h avec SGDK ! perso je ne suis pas certain d'en être capable MDR
Stef
Stef
Infirmier

Masculin Nombre de messages : 4793
Age : 40
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Tryphon le Mar 22 Oct 2019 - 10:29

Clairement, moi non plus (en 1h je génère à peine mes sprites MDR)
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 18489
Age : 42
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par drludos le Mar 22 Oct 2019 - 22:55

@Stef a écrit:@drludos> Waaaa merci à toi pour cette super pub thumleft
Franchement ça fait trop plaisir à lire amoureux Je trouve tes minis jeux mignons et très addictifs :) et bravo pour avoir réussi à sortir quelque chose en 1h avec SGDK ! perso je ne suis pas certain d'en être capable MDR

Avec plaisir, c'est plutôt mille merci à toi pour avoir créé un SDK aussi puissant et facile à utiliser ! :)
Et content que mes jeux te plaisent Wink

Pour le jeu en 1h, j'avoue que c'est vraiment vraiment tendu ! Pour info Tryphon je n'ai du passer qu'environ 20 minutes sur les éléments graphiques (le poussin, l'oeuf, le panier), ce qui explique la simplicité et aussi l'absence de fond, afin d'avoir au moins 40 minutes de code. Mais avec le recul j'ai "mal géré mon temps", parce il m'a manqué 4-5 minutes à la fin pour faire un débug, et du coup la version "faite en 1h" du jeu n'est jouable que pendant 2-3 minutes, après tu as deux oeufs simultanés impossible à rattraper.

Et je vous rassure, pour la version finale du jeu (celle qui est sur la cartouche), j'ai pas compté les heures de travail, mais ça se chiffre en dizaines d'heures :p. Mais c'était intéressant comme expérience d'essayer de faire un "truc ludique" en si peu de temps.

D'ailleurs, si ça vous tente, la prochaine "0H Game Jam" a lieu le 28 octobre: http://0hgame.eu/
avatar
drludos
Patient contaminé

Masculin Nombre de messages : 220
Age : 39
Localisation : 34
Date d'inscription : 12/10/2017

Revenir en haut Aller en bas

Sgdk - Sega Megadrive / Genesis Development Kit - Page 17 Empty Re: Sgdk - Sega Megadrive / Genesis Development Kit

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 17 sur 17 Précédent  1 ... 10 ... 15, 16, 17

Revenir en haut


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