Page 4 sur 7

Re: Les pointeurs de Prinny 2

Message non luPosté: Lundi 4 Juillet 2011 à 19:06:36
par DarkCenobyte
Je m'en suis déjà servis des boucles en C, mais j'avais plus l'habitude d'écrire un pavé comme dans ton premier exemple xD ... (puis aussi, comme j'ai jamais vraiment touché à la manipulation de fichier en C, bah je suis pas vraiment habitué à m'en servir pour ça) .

Mais je crois que j'ai compris le truc là :) (je ferais de nouvelles tentatives de script demain ^^ ).

Re: Les pointeurs de Prinny 2

Message non luPosté: Vendredi 8 Juillet 2011 à 15:58:51
par DarkCenobyte
Hourra, j'ai réussit à récupérer les valeurs entre les pointeurs, (maintenant que j'ai compris la logique, ça m'a l'air tout bête comme solution x) )

Mon script:
Code: Tout sélectionner
nameFileOutput  = "Prinny2-script01.txt"
nameFileOutput2   = "Prinny2-data01.txt"
nameFileScript  = "test_hareng.dat"
nameFileTable   = "ascii.tbl"
nameFileTable2  = "asciiB.tbl"
adressScript    = 0x010C24
--adressPointer   = 0x0C
adressPointer   = 0x04
-- (first text only) sizeScript      = 0x2D
sizeScript      = 0x02429F
nb_pointer      = 2860

SEEK_SET = 0
SEEK_CUR = 1
SEEK_END = 2

-- Ouverture du fichier contenant les pointeurs
fileScript   = Fichier.new()
table_pt     = Table_pointeurs.new()
table_pt2     = Table_pointeurs.new()
tbl          = Table_ext_ins.new()
tbl2       = Table_ext_ins.new()
bufferScript = Buffer.new()
bufferData    = Buffer.new()

fileScript:open(nameFileScript, "rb")
fileScript:seek(adressPointer, SEEK_SET)

-- Récupération des pointeurs
local num_pt = 1
for i = 1, nb_pointer do
   -- Récupération des 8 octets (valeur perso, avatar, bulle, ...)
   for j = 1, 8 do
      fileScript:read(bufferData, 1)
      -- fileScript:get()   
   end

   -- On lit les 4 pointeurs qui suivent
   for j = 1, 4 do
      local pointer = 0
      for k = 1, 4 do
         pointer = pointer + shift_l(fileScript:get(), 8 * (k - 1))
      end

      local pt = Pointeur.new()
      pt:numero(num_pt)
      pt:valeur(pointer)
      pt:taille(4)
      num_pt = num_pt + 1

      table_pt:ajouter(pt)
   end

end

-- Chargement de la table
tbl:ouvrir(nameFileTable)
tbl2:ouvrir(nameFileTable2)

-- Récupération des données à extraire
-- fileScript:open(nameFileScript, "rb")
fileScript:seek(adressScript, SEEK_SET)
fileScript:read(bufferScript, sizeScript)

sortie = Output.new("Fichier", nameFileOutput, "wb")
sortie2 = Output.new("Fichier", nameFileOutput2, "wb")

-- Extraction du script
Ext_ins.extraire(bufferScript, tbl, sortie, table_pt)
Ext_ins.extraire(bufferData, tbl2, sortie2, table_pt2)


Alors j'obtiens donc un fichier qui contient ces valeurs (pour la table je l'ai modifié pour pas mettre les <FIN> dans ce fichier ni les retour à la ligne... Je me suis dit que même si c'est illisible, ce serait ptet plus simple à la récupération, fin ça me paraitrait pas logique de mettre des <FIN> pour chaque octets 00 x) ).
Mais juste pour être certain avant de regarder pour le script d'insertion, je voudrais savoir si c'est exploitable ('fin si les valeurs sont correctement récupérables) à partir d'un fichier comme ça (en texte, pas hexadécimal):

Code: Tout sélectionner
Z<00><00><00><02><C8><00><00>[<00><00><00><02><C8><00><00>\<00><00><00><02><C8><00><00>]<00><00><00><02><C8><00><00>^<00><00><00><02><C8><00><00>_<00><00><00><02><C8><00><00>d<00><00><00><11><00><00><00>e<00><00><00><11><00><00><00>f<00><00><00><11><00><00><00>g<00><00><00><11><00><00><00>h<00><00><00><11><00><00><00>i<00><00><00><11><00><00><00>


(j'ai mis que le début, le fichier fait 80Ko)
Toutes ces données sont collés les unes aux autres, mais comme ont sait que ça fera toujours 8 octets entre les pointeurs, je pense que c'est gérable non ?

Re: Les pointeurs de Prinny 2

Message non luPosté: Mardi 12 Juillet 2011 à 12:53:20
par BahaBulle
Franchement, je ne sais pas si c'est gérable avec le hareng. Il est assez limité pour ce genre de spécificités.

L'idéal serait de faire un programme spécial pour ton truc mais là, j'ai pas le temps.

Je pars en vacances demain, donc pas avant août ;)

Re: Les pointeurs de Prinny 2

Message non luPosté: Mercredi 13 Juillet 2011 à 17:43:25
par DarkCenobyte
Oki, merci pour l'aide en tout cas, bonne vacance ^^ .

Sinon pendant ce temps je vais aussi chercher du coté des API/tools des américains, je pense qu'ils doivent bien avoir des logiciels comme le hareng-tool, et peut-être plus pratique dans mon cas.

Re: Les pointeurs de Prinny 2

Message non luPosté: Jeudi 17 Novembre 2011 à 21:55:32
par Raven
Salut à tous,
J'ai parcouru le sujet et ça m'intéresse tout ça alors je t'ai envoyé un mail DarkCeno pour t'en parler.
La version Européenne étant sortie depuis quelques jours seulement, je suppose que tu n'a pas eu le temps de te pencher dessus mais d'après les rapides coup d'oeil que j'ai jeté aux versions disponibles (Jap,Eur,...), aucune différence de visible.
En outrepassant la partie texte, j'ai observé la partie graphique (étant mon domaine avant tout :D ) et tout est dans le fichier GRX.DAT. Après extraction, j'obtiens 640 Fichiers à extensions variables (INK, PPO, TXP,...) mais parfaitement exploitables sur TileMolester en 16bpp. Il me reste juste à trouver les palettes car en ce moment ça pique les yeux :shock:
Image

Je suis actuellement sur un projet en solo (Shining Force I - MegaDrive), mais étant quelqu'un doté d'une concentration très spéciale, j'aime bien faire plusieurs choses en même temps. Je serais malgré tout présent si tu a besoin d'aide au niveau graphique et également pour quelques autres petites choses également ;)

Tu l'a peut être remarqué mais les mots utilisés pour définir les niveaux de difficultés tels que "for" "demons, dood" sont réutilisés pour les trois niveaux différents :mrgreen: Je m'en suis rendu compte lorsque j'ai voulu créer la table :)
J'ai également remarqué par tes screens que tes accents n'apparaissent pas et donc que tu n'a pas encore dû te pencher sur l'ajout des caractères accentués dans la font du jeu. On peux observer 3 Fonts dans le jeu (que je n'ai pas encore réussi à bien decrypter sur TileMolester) !
Si quelqu'un veux observer :
Font N°1
Font N°2
Font N°3

Le meilleur rendu que j'ai obtenu est en 16bpp mais cela n'est pas encore ça... :mrgreen:

Cordialement, Raven.

Re: Les pointeurs de Prinny 2

Message non luPosté: Vendredi 18 Novembre 2011 à 10:30:04
par Lyan53
Image

La font est en 4bpp linear reverse order 2dimensional
le format de palette est RGBA


La structure du fichier est :
offset 0x00 >> 0x10 octets > header
offset 0x10 >> 0x40 octets > palette
offset 0x50 >> Le reste du fichier > la font


Je dirais que ça reste tout à fait éditable pour un non codeur mais en revanche c'est assez chiant à faire

Faut prendre les 16 premiers bouts de bloc de 8x32 pixels et le mettre bout à bout (de la gauche vers la droite) et les 16 suivants viendront se coller en dessous, etc etc ...

ceci est valable sur les 3 fonts ;)

Re: Les pointeurs de Prinny 2

Message non luPosté: Vendredi 18 Novembre 2011 à 16:46:51
par Raven
Lyan53 a écrit:La font est en 4bpp linear reverse order 2dimensional
le format de palette est RGBA

Merci bien pour l'info. Me manquais que le 2dimensional :D
Lyan53 a écrit:La structure du fichier est :
offset 0x00 >> 0x10 octets > header
offset 0x10 >> 0x40 octets > palette
offset 0x50 >> Le reste du fichier > la font

J'étais dans cet esprit sauf pour la palette.
D'ailleurs à ce niveau, la palette est affiché de façon brut ? On observe ces valeurs dans la palette :
Code: Tout sélectionner
000000, FFCECE, FF1111, DEFFFF, 18FF18

On aurait donc ces couleurs dans la palette ? :

Si non, j'aimerais comprendre comment récuperer les informations de couleurs :D

Je remarque qu'ils ont conservé les caractères japs dans les fichiers...

Re: Les pointeurs de Prinny 2

Message non luPosté: Vendredi 18 Novembre 2011 à 16:57:31
par Lyan53
Pour la palette non , c'est pas du RGB(888)

C'est du RGBA(8888) donc sur 32 bits et pas sur 24 seulement

et dasn tilemolester faut editer le fichier "tmspec.xml" et ajouter une palette filter prenant en compte le format RGBA , lui attribuer une extension que tu utiliseras sur les données brutes de la palette ce qui te permettra d'importer ce fichier (en extrayant le bloc hex correspondant à cette derniere dans un fichier à part)

Re: Les pointeurs de Prinny 2

Message non luPosté: Vendredi 18 Novembre 2011 à 17:23:04
par Raven
Je rajoute ça dans tmspec.xml :
Code: Tout sélectionner
<palettefilter extensions="rgba?" colorformat="CF00" size="64" offset="0" endianness="little">
            <description>RGBA (8888) Format (*.rgba?)</description>
</palettefilter>

Comment se fait-il que je ne puisse pas importer mon fichier "font1.rgba" contenant la palette du fichier Font1.ptx ? (Il n’apparaît pas lorsque je selectionne Import)

Re: Les pointeurs de Prinny 2

Message non luPosté: Samedi 19 Novembre 2011 à 1:12:10
par Lyan53
Alors je distingue plusieurs erreurs dans ta palettefilter

tout d'abord , vire le "?" de l'extension, il n'a rien à faire là et est comptabilisé comme un caractère à part entière alors que si je ne me plante pas on ne peut pas utiliser de point d'interrogation dans un nom de fichier ou dans une extension


Ensuite, ton "colorformat" n'est pas bon, va voir plus haut dans le tmsepc.xml les details de correspondances avec la valeur "CF00" et trouve celui qui est le plus approprié à du RGBA (là tu es calé sur du RGB 555)

Pour la taille c'est pas bon non plus, n'oublie pas que tu peux avoir du 16 couleurs (4bpp) mais aussi du 256 couleurs (8bpp) donc table sur la valeur la plus élevée des deux , et n'oublie pas non plus que chaque couleur fait 32 bits (d'où la notion de 8888 soit 8 pour R , pour G , B et A)

Te suffit ensuite de faire un calcul très simple pour connaitre la taille que fera une palette en 256 couleurs sur du format RGBA ;)


Je pourrais te donner directement la palettefilter à mettre m'enfin bon, c'est mieux que tu cherches un peu pour comprendre comment ça fonctionne , observe bien le contenu de ce fichier, tu vas voir, c'est pas bien compliqué ;)