MSX Village forum

La Place des Développeurs Do The Same - MSX

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 03/07/2021 à 22h48

Reprise du message précédent

La palette n'est pas stocké en VRAM, mais dans une mémoire spéciale de 32 octets dans le VDP et uniquement accessible via un registre dédié.
Elle représente les valeurs rouge-vert-bleu de chaque index (numéro de couleur).

A priori, le BASIC stock effectivement ces valeurs en VRAM, mais c'est spécifique au BASIC et ça n'a aucun intérêt dans ton cas.
Seul les valeurs enregistrées dans le VDP vont influencer l'affichage.

En VRAM, par contre, tu as la Pattern Colors Table, utilisé par les modes écrans 1 à 4, qui représente les index de couleurs utilisées par les tiles.
On y trouve aussi les informations d'index de couleurs des sprites.


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 04/07/2021 à 00h06
Citation :
La palette n'est pas stocké en VRAM, mais dans une mémoire spéciale de 32 octets dans le VDP et uniquement accessible via un registre dédié.


Est-ce que openMSX debugger permettrait d'accéder et donc de verifier le contenu de ces 32 octets ?

Merci ;)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 04/07/2021 à 01h42
Bon les ptits gars, je pense que c'est good
Sur plusieurs docs, je voyais le port 0x9a (0x9A Color Palette Register) comme étant celui de la palette. Or dans la routine, ce port n'était pas utilisé et donc la palette MSX2 ne pouvait être changée en palette MSX1. J'ai fait qques recherches et j'ai trouvé une routine que j'ai "à peine" adaptée à mes besoins

void MSX1palette(void) __naked
{
__asm

xor a

di
out (#0x99),a
ld a,#0x80+16
ei
out (#0x99),a

ld bc,#0x209a // b = 32 (nombre de couleurs -16x2-, c = 0x9a)
ld hl,#_MSX1paletteData
otir
ret

__endasm;
}


et ça marche :)
il faut aussi que je m'intéresse à cette instruction : out(c),a : écrire une valeur a sur le port c (quels sont les effets des différentes valeurs a sur le port c etc...)

Voici le resultat en image


Allez, j'm'en vais dodoifier ;)

Tchao

Edité par Ricco59 Le 04/07/2021 à 01h43


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 04/07/2021 à 17h41
Code ASM :
out (#0x99),a

...et...
Code ASM :
ld c,#0x99
out (c),a

...génère exactement le même résultat (en dehors du fait que le premier prend moins de place et est plus rapide).

L'intérêt du out (c) c'est de pouvoir envoyer une donnée sur un port que le programme ne connait pas à l'avance.
Par exemple, à l'origine du standard MSX, il semble qu'il était fortement déconseillé pour un programme de considéré que le processeur graphique était forcement brancher sur les ports 98h et 99h.
Il était demandé de checker les adresses 0006h et 0007h de la ROM du Bios pour trouver les numéros de ports utilisés par le processeur graphique.
Cela aurait pu permettre à des MSX d'avoir un processeur graphique branché sur un autre port et que le programme fonctionne quand même.
Dans les faits, 99% des MSX utilisent bien les ports 98h et 99h et il semble que la plus part des programmeurs ont préférés utiliser out (98h) et out (99h) en "dur" dans leur code par soucis de performance et de simplicité.


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 04/07/2021 à 18h36
Merci :top


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 19/07/2021 à 10h21
Salut Guillaume, Salut les potos

J'espère que tu vas bien et que les vacances approchent ;)

Je reviens vers toi pour le cryptage des informations de DoTheSame. J'ai suivi ton exemple mais j'ai changé en fonction de mes besoin :

1 bit pour la machine (0, coleco - 1,msx)

1 bit pour savoir si je suis dans le jeu ou à la fin du level

7 bits pour les niveaux (112)

18 bits pour le temps total !!!
en effet, à la fin du level, une 'affiche' apparaît avec quelques infos dessus TEMPS TOTAL et NOMBRE DE COUPS TOTAL
Concernant le temps total, j'ai prix le niveau ROAR64, il faut environ 35 secondes (2100) pour passer au stage suivant (en laissant le chrono défiler)
mon maximum pour le Temps total est donc de 2100x64 = 134400 (37'20") codé sur 18bits

14 bits pour le nombre de coups TOTAL !!!
Avant de passer au niveau suivant j'ai fait entre 100 et 150 moves (en fonction de mon état lol)
je prends la fourchette haute 150 x 64 = 9600 codé sur 14bits

j'ai donc 1 + 1 + 7 + 18 + 14 = 41 bits

je code l'ensemble sur 10 caractères de 5bits = 50 bits pour l'ensemble
il me reste donc 9 bits pour le grain de sel !
j'ai enlevé un bit au temps total de 18, je passe à 17 et de fait j'ai 10 bits pour le codage

je code dans le jeu et décode via easyphp mais si je change un caractère, il arrive souvent que le code 'erroné' soit accepté !!!

Dans mon exemple, je ne sais pas si c'est la bonne solution mais en ce qui concerne les bits de contrôles j'en ai 10 : 5 que je répète 2 fois. Est-ce de là que viendrait mon problème ?
j'ai aussi codé l'ensemble sur 12 bits avec des bits répétés dans $g_ControlBits = []
(12 en table mais 10 dans la matrice)
[ [ 2, 2 ], [ 4, 1 ], [ 5, 3 ], [ 9, 0 ],], // C0
[ [ 0, 3 ], [ 3, 0 ], [ 7, 2 ], [ 7, 2 ],], // C1
[ [ 1, 4 ], [ 6, 1 ], [ 8, 4 ], [ 8, 4 ],], // C2

Je n'ai malheureusement pas la place de mettre plus de bits !!


Questions
- est-il, selon toi, selon vous, nécessaire d'avoir un tableau recapitulatif en fin de level et de l'enregistrer aussi ?
- Je dois deja saisir 10 caractères, passer à 12 serait .... plus lourd non ?

Merci, merci beaucoup :)



Voici quelques codes
g6x9rd8ybx
Time
00:13''53 (833)
moves
24
niveau 0 (get16)
ingame (1)
machine (1)
stage (5)

ddnblldgyg
Time
00:40''47 (2247)
moves
61
niveau 0 (get16)
ingame (1)
machine (1)
stage (16)

congratulations, blablabla
xdyhzqddnu
temps total
3:23"42
moves total
288
ingame(0)
machine (1)
stage(16)

dlxn69pnle
Time
00:01''55 (115)
moves
3
niveau 2 (roar64)
ingame (0)
machine (1)
stage (1) [49] Edité par Ricco59 Le 21/07/2021 à 18h24


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 20/07/2021 à 21h30
Déso, je suis en vadrouille en ce moment et j'ai pas trop accès au net.

Ricco59 :
- est-il, selon toi, selon vous, nécessaire d'avoir un tableau recapitulatif en fin de level et de l'enregistrer aussi ?


Si ça permet de faire un classement d'une partie complète, ça me semble très intéressant.
Certains pourraient essayer de faire les meilleurs scores sur un puzzle en particulier alors que d'autres pourraient juste viser le classement général.

Ricco59 :
- Je dois deja saisir 10 caractères, passer à 12 serait .... plus lourd non ?


Ca change pas grand chose. 2 lettres de plus à écrire pour l'utilisateur c'est pas la mort.
Par contre, si tu veux limiter le nombre de codes valides, il te faudrait plus de bits de contrôle.
Avec 0 bit, tous les codes sont valides.
Avec 1 bit, un code sur 2 est valide.
Avec 2 bits, 1 code sur 4.
Avec 3 bits, 1 code sur 8... etc.

A partir de 7-8 bits de contrôle, ça me semble suffisamment robuste.
Bon courage ! :top:


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 20/07/2021 à 21h48
Si ça permet de faire un classement d'une partie complète, ça me semble très intéressant.
Certains pourraient essayer de faire les meilleurs scores sur un puzzle en particulier alors que d'autres pourraient juste viser le classement général.


Je valide ;)

C'est parti pour 1 ou 2 caracteres en plus

Tchao et portez vous bien les potos Edité par Ricco59 Le 20/07/2021 à 21h53


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 21/07/2021 à 10h00
re ;)

j'ai validé trop vite hier :)
Je peux placer 18 bits de ctrl
que faut-il privilégier ?
- 3bits répétés 6x
- 6bits répétés 3x
- 5bits répétés 4x (avec2 doubles)
- 4bits répétés 5x (idem)
- ...
- ...
Ma version actuelle utilise 3b répétés 6x



Merci et belle journée à tous


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 21/07/2021 à 13h31
Plus tu as de bits de contrôle uniques et plus ton code sera solide. Mais c'est bien aussi d'avoir des répétitions pour le rendre moins facilement cassable.
9 bits, répété 2 fois, ça me semble nickel.
6 bits, répété 3 fois est très bien aussi.


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 21/07/2021 à 16h30
après si tu donnes ton choix de code ici il sera plus facile a "casser" :)
fait le plutôt en MP avec aoineko ;)


:noel
Site web    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 21/07/2021 à 17h45
Dont worry,
ici Aoineko m'a expliqué le principe. Je le fais a ma sauce sur une clé de 256 bits avec un cryptage aléatoire impossible à décrypter même pour moi lol

C'est un partage de connaissances ;)
Edité par Ricco59 Le 21/07/2021 à 17h46


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 22/07/2021 à 00h05
Oui, même en connaissant la technique c'est très difficile à casser.
Et puis, on parle pas d'un code de carte bleu ; la probabilité que quelqu'un s'amuse à essayer de le casser me semble relativement faible. ^^
Le plus important c'est que le site web puisse facilement détecter les mauvais codes pour traiter les erreurs de frappe ou les gens qui s'amuseraient à mettre des codes au hasard.


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 22/07/2021 à 21h09
:top


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 26/07/2021 à 15h20
Salut les zamis

Ça y est, j'ai enfin réussi mon cryptage ;)

@Aoineko, avec quoi as tu fais la partie HTML : a la main ou avec un soft genre dreamweaver (c'est ce que j'ai. D'ailleurs je comptais m'en servir pour la mise en page. Aurais tu une solution alternative plus efficace que dw ?)

Tchao les potos

Je m'attaque aux sons et.... THE END (Normalement) Edité par Ricco59 Le 26/07/2021 à 16h11


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2695

Le 26/07/2021 à 21h01
Je fais tout mon HTML (et CSS) directement en code. En fait, je génère mon HTML via du code PHP pour avoir quelque-chose de beaucoup plus compact. S'il y a un fort besoin d'interactivité, j'utilise le JavaScript.


On est toujours ignorant avant de savoir.
Github    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie