I originally extracted files using Noesis, and just put random files into my program to see if they would return text. I wouldn't know how to repack the data, I was mainly interested in what I could find in the files.
The program read two bytes as hex, then split the data into two separate bytes, converted values of A through F to a value of 10 through 15, and then used a jagged array to output a character. I also had it output the hex values into another textbox (which itself could be used to copy hex into and then convert).
And because my file-reading method wasn't any good and would freeze for ages if the file was of any length, so I made it stop reading a file after it had encountered 5 "FF"s, and then I would click a button that took it onto the next.
The visual parts of the program aren't worth looking at since I just developed it to get something working. And I haven't commented any of the code either, but I'll post it anyway: you can probably tell what's going on in some places. I'm also not a very good programmer so it's really just not that good.
Public Class Form1
Dim strSome As String
Dim strThing As String
Dim chrChar As Char
Dim strArray As String
Dim c, cc As Integer
Dim Zidane As String = "Zidane"
Dim Vivi As String = "Vivi"
Dim Dagger As String = "Dagger"
Dim Steiner As String = "Steiner"
Dim offset As Long = 0
Dim i As Integer = 0
Public table = New Object(15) {}
Dim cElse As Char = "█"
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
table(0) = New Char(15) {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "=", "*", "%", " "}
table(1) = New Char(15) {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"}
table(2) = New Char(15) {"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "(", "!", "?", Chr(147), ":", "."} '147 is open double quotes
table(3) = New Char(15) {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}
table(4) = New Char(15) {"q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ")", ",", "/", "・", "~", "&"}
table(5) = New Char(15) {"Á", "À", "Â", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Ï", "Ï", "Ó", "Ò", "Ô", "Ö"}
table(6) = New Char(15) {"Ú", "Ù", "Û", "Ü", "á", "à", "â", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï"}
table(7) = New Char(15) {"ó", "ò", "ô", "ö", "ú", "ù", "û", "ü", "Ç", "Ñ", "ç", "ñ", "Œ", "ß", "’", Chr(148)} '148 is close double-quotes
table(8) = New Char(15) {cElse, Chr(148), cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(9) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(10) = New Char(15) {"‘", cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(11) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(12) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(13) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(14) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse, cElse}
table(15) = New Char(15) {cElse, cElse, cElse, cElse, cElse, cElse, cElse, vbNewLine, cElse, "$", cElse, cElse, cElse, cElse, cElse, "@"} '$ is variable
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = ""
strSome = Replace(Replace(TextBox1.Text, " ", vbNullString), vbNewLine, vbNullString)
strSome = strSome.ToUpper()
TextBox1.Text = ""
Do Until strSome = "" Or strSome = " "
strThing = strSome.Substring(0, 2)
TextBox1.Text += strThing
strArray = strThing.ToCharArray()
Select Case strArray(0)
Case Is = "A"
c = 10
Case Is = "B"
c = 11
Case Is = "C"
c = 12
Case Is = "D"
c = 13
Case Is = "E"
c = 14
Case Is = "F"
c = 15
Case Else
c = Int32.Parse(strArray(0))
End Select
Select Case strArray(1)
Case Is = "A"
cc = 10
Case Is = "B"
cc = 11
Case Is = "C"
cc = 12
Case Is = "D"
cc = 13
Case Is = "E"
cc = 14
Case Is = "F"
cc = 15
Case Else
cc = Int32.Parse(strArray(1))
End Select
chrChar = table(c)(cc)
If chrChar = "@" Then
TextBox1.Text += vbNewLine
End If
Label1.Text += chrChar
strSome = strSome.Substring(2)
Loop
Label1.Text = Replace(Label1.Text, "$A", Zidane) 'Zidane's name
Label1.Text = Replace(Label1.Text, "$B", Vivi) 'Vivi's name
Label1.Text = Replace(Label1.Text, "$D", Steiner) 'Steiner's name
Label1.Text = Replace(Label1.Text, "$8", "") 'cursor/choice menu
Label1.Text = Replace(Label1.Text, "$@", " ") 'indent/choice
Label1.Text = Replace(Label1.Text, "$q0", "cHP") 'current HP value
Label1.Text = Replace(Label1.Text, "$q1", "mHP") 'maximum HP value
Label1.Text = Replace(Label1.Text, "@", vbNewLine) 'next box
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox1.Text = ""
End Sub
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
If Not i = -1 Then
offset = 0
txtOffset.Text = offset
End If
TextBox1.Text = ""
Using file As New IO.FileStream(OpenFileDialog1.FileName, IO.FileMode.Open)
Dim value As Integer = file.ReadByte
file.Seek(offset, 0)
Do Until value = -1 Or i = 5
offset += 1
If (value.ToString("X2") = "FF") Then
i += 1
End If
TextBox1.Text += value.ToString("X2")
value = file.ReadByte()
Loop
End Using
txtOffset.Text = offset
lblFileName.Text = OpenFileDialog1.FileName
i = 0
Button1.PerformClick()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
OpenFileDialog1.ShowDialog()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
OpenFileDialog1_FileOk(sender, Nothing)
offset -= 1
i -= 1
End Sub
Private Sub txtOffset_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOffset.TextChanged
offset = txtOffset.Text
End Sub
End Class