Pour :
local sortie = Output.new("Fichier", "Test.txt", "wb")
Change en :
local sortie = Output.new("Fichier", entry.name_out, "wb")
sur PSP, comment les calculer ?
DarkCenobyte a écrit:Enfin en gros il repart à zéro tous les 4 pointeurs...
nameFileTable = "ascii.tbl"
local list_files = {
{ name_in = "Demo00_jp.dat", name_out = "US-script05.txt" },
}
SEEK_SET = 0
SEEK_CUR = 1
SEEK_END = 2
for _, entry in ipairs(list_files) do
-- Initialisation des variables
local fileScript = Fichier.new()
local table_pt = Table_pointeurs.new()
local tbl = Table_ext_ins.new()
local bufferScript = Buffer.new()
fileScript:open(entry.name_in, "rb")
-- Récupération de la taille du Fichier
fileScript:seek(0, SEEK_END)
local sizeFile = fileScript:tell()
fileScript:seek(0, SEEK_SET)
-- Récupération du nombre de pointeurs
local nb_pointer = 0
for i = 1, 4 do
nb_pointer = nb_pointer + shift_l(fileScript:get(), 8 * (i - 1))
end
-- Récupération des pointeurs
local num_pt = 1
for i = 1, nb_pointer do
-- On zap 8 octets
for j = 1, 8 do
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)
-- Récupération des données à extraire
local adressScript = nb_pointer * 24 + 4
local sizeScript = sizeFile - adressScript
fileScript:seek(adressScript, SEEK_SET)
fileScript:read(bufferScript, sizeScript)
local sortie = Output.new("Fichier", entry.name_out, "wb")
-- Extraction du script
Ext_ins.extraire(bufferScript, tbl, sortie, table_pt)
fileScript:close()
bufferScript:clear()
end
nameFileOutput = "Prinny2-script01.txt"
nameFileOutput2 = "Prinny2-data01.txt"
nameFileScript = "test_hareng.dat"
-- nameFilePointer = "fichier2.bin"
nameFileTable = "ascii.tbl"
nameFileTable2 = "asciiB.tbl"
adressScript = 0x010C24
--adressPointer = 0x0C
adressPointer = 0x04
-- (first text only) sizeScript = 0x2D
sizeScript = 0x02429F
nb_pointer = 2860
--nb_pt2 = 0
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
-- On zap les 8 premiers octets
for j = 1, 8 do
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")
-- Extraction du script
Ext_ins.extraire(bufferScript, tbl, sortie, table_pt)
--EDIT 2/07/2011 : Récupération des 8 octets entre 4 pointeurs (zapper 16 octets).
--Positionnement début fichier:
fileScript:seek(adressPointer, SEEK_SET)
--Création d'un fichier de sortie
sortie2 = Output.new("Fichier", nameFileOutput2, "wb")
--Récupérer les 8 octets
for j = 1, 8 do
fileScript:read(bufferData, 8)
--Zapper 16 octets
fileScript:seek(SEEK_CUR+16,SEEK_CUR)
end
Ext_ins.extraire(bufferData, tbl2, sortie2, table_pt2)
--FIN EDIT
DarkCenobyte a écrit: mais j'ai du mal à comprendre le fonctionnement avec les variables i , j , k dans les boucles car j'avais jamais fait un truc comme ça en C... (ça doit être logique... mais j'ai pas capté la logique sur ça xD ...)
list = {}
list[1] = fileScript:get()
list[2] = fileScript:get()
list[3] = fileScript:get()
list[4] = fileScript:get()
list = {}
for i = 1, 4 do
list[i] = fileScript:get()
end
Retourner vers Sur le ROMhacking
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités