Les pointeurs de Prinny 2

sur PSP, comment les calculer ?

Une question en rapport avec le ROMHacking ?
Dans cette section nous tenterons de vous conseiller ou de partager nos connaissances, bien entendu dans la limite de nos compétences et de notre disponibilité.

Re: Les pointeurs de Prinny 2

Message non lupar DarkCenobyte » Lundi 4 Juillet 2011 à 19:06:36

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 ^^ ).
Avatar de l’utilisateur
DarkCenobyte
 
Messages: 20
Enregistré le: Mardi 14 Juin 2011 à 16:58:03
Genre: Non spécifié

Re: Les pointeurs de Prinny 2

Message non lupar DarkCenobyte » Vendredi 8 Juillet 2011 à 15:58:51

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 ?
Avatar de l’utilisateur
DarkCenobyte
 
Messages: 20
Enregistré le: Mardi 14 Juin 2011 à 16:58:03
Genre: Non spécifié

Re: Les pointeurs de Prinny 2

Message non lupar BahaBulle » Mardi 12 Juillet 2011 à 12:53:20

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 ;)
Avatar de l’utilisateur
BahaBulle
 
Messages: 280
Enregistré le: Lundi 20 Décembre 2010 à 18:18:17
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar DarkCenobyte » Mercredi 13 Juillet 2011 à 17:43:25

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.
Avatar de l’utilisateur
DarkCenobyte
 
Messages: 20
Enregistré le: Mardi 14 Juin 2011 à 16:58:03
Genre: Non spécifié

Re: Les pointeurs de Prinny 2

Message non lupar Raven » Jeudi 17 Novembre 2011 à 21:55:32

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:

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.
Avatar de l’utilisateur
Raven
 
Messages: 57
Âge: 29
Enregistré le: Dimanche 13 Février 2011 à 12:07:46
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar Lyan53 » Vendredi 18 Novembre 2011 à 10:30:04

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 ;)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 46
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar Raven » Vendredi 18 Novembre 2011 à 16:46:51

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...
Avatar de l’utilisateur
Raven
 
Messages: 57
Âge: 29
Enregistré le: Dimanche 13 Février 2011 à 12:07:46
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar Lyan53 » Vendredi 18 Novembre 2011 à 16:57:31

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)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 46
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar Raven » Vendredi 18 Novembre 2011 à 17:23:04

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)
Avatar de l’utilisateur
Raven
 
Messages: 57
Âge: 29
Enregistré le: Dimanche 13 Février 2011 à 12:07:46
Genre: Homme

Re: Les pointeurs de Prinny 2

Message non lupar Lyan53 » Samedi 19 Novembre 2011 à 1:12:10

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é ;)
Image
Avatar de l’utilisateur
Lyan53
Administrateur du site
 
Messages: 864
Âge: 46
Enregistré le: Lundi 22 Novembre 2010 à 20:48:11
Genre: Homme

PrécédenteSuivante

Retourner vers Sur le ROMhacking

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités

x

#{title}

#{text}