Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Maki

Pages: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 25
201
General Discussion / Re: balamb garden project
« on: 2017-08-06 15:58:19 »
Whoah, oh! This is.. Amazing! Wow!
I sent you ripped Balamb model from game over PM, but I'm not sure how'd that help:

Let me know how I can help you, I'm doing some modelling too as you see :D

202
General Discussion / Re: balamb garden project
« on: 2017-08-04 15:34:02 »
Okay. I haven't found time yesterday, sorry. There you are:

DOWNLOAD ME
EDIT: HERE:
https://mega.nz/#!GUhwwYSQ!Tur0hl_y0ecRoPdeKPZoyOfnz9m28YPl1HeYxe0AiYY


Reference:
Balamb/Attemp1/FullScene.max - latest all models
*/*.fbx - single divided, fixed UVs, second UV channel for lightning models ready to import

I stopped further development after finishing Zell neighboorhood house. It's in exp_\Interior\ZellHouse\NeighbourhoodRoom\*.FBX - ready to import

Preview:

203
General Discussion / Re: balamb garden project
« on: 2017-08-03 08:17:17 »
edit: I had a look at those things that were listed, got no idea how to use them :oops: ???

I'll upload a .MAX project for you today after 17:00 (GMT+1)

204
General Discussion / Re: balamb garden project
« on: 2017-08-02 21:23:25 »
Is there a way to extract the particular model from the game or has anyone successfully recreated the model? 

Use: https://github.com/MaKiPL/FF8-Rinoa-s-Toolset to extract Balamb Garden mobile from wmset.section16
Use: https://github.com/cospi/wmx2obj to extract world map segment to OBJ
Balamb town: https://github.com/Kandy-Man/FF8HD/tree/master/Assets/Art/Models/Fields/Balamb (I don't remember if it's up-to-date model; I probably never uploaded the latest version)

I'm repeating myself, but I'd be right happy to assist any 3D remake/remodel/remaster/anything.

206
Okay, I could download it with IE, but the program has some issues.

Here are my results:

Code: [Select]
>TIMpal_PSP.exe window.tim -4bpp out.psp
TIM to Paint Shop Pro
Usage:
TIMpal_PSP.exe file.tim out.psp
Input: file.tim - specify 8 BPP or 4 BPP TIM file       Output file: out.txt spe
cify output file

Code: [Select]
>TIMpal_PSP.exe window.tim -4bpp out.txt
TIM to Paint Shop Pro
Usage:
TIMpal_PSP.exe file.tim out.psp
Input: file.tim - specify 8 BPP or 4 BPP TIM file       Output file: out.txt spe
cify output file

What is the correct syntax?

TIMpal_PSP.exe window.tim palette.pspPalette

No -4bpp or anything like this

207
There you are (I almost forgot about it):
https://github.com/MaKiPL/TIM_to_PspPalette/releases/tag/1.0a

This soft outputs all palettes to one file, so I don't know if that would work
If not, just cut out every section starting with JASC-PAL inside that text file and save it to independent files.

208
Jasc (Paint Shop Pro) Palette files start with the following 3 lines:

Code: [Select]
JASC-PAL
0100
256

Then that follows with 256 lines of RGB values (each colour value separated with a space, eg: 0 0 0)
Simple as that :)

So the 16 color palette would be like:
Code: [Select]
JASC-PAL
0100
16
...
?

Okay, I'll be back here soon

209
Hmmm. To be honest, I don't know how the formatting for a ".PspPalette" or ".pal" file works.

However, I did find some resources on the file structure of a ".TIM" file awhile back, which includes the CLUT.

https://web.archive.org/web/20120529162751/http://rveach.romhack.org/PSXInfo/tim.html

http://www.romhacking.net/documents/timgfx.txt

Thanks for the response.

Okay, if you could please send me two-three palettes containing:
-only white
-only blue
-only red

I'll try to reverse it

210
I can code a tool for this, but that palette format for your software could be a problem. I doubt there's a file structure somewhere out there. What if I exported each color from palette to HEX codes? Could that help you a bit?

212
Which Final Fantasy?
There are already some text editor and translation tools in Tools section.

213
I tried it and you guess: Epic fail (or almost)...
At least I could decompress the dat's, that worked. The files in the folder can't be decompressed though. It says "Not LZ77 compressed file; Header is wrong!"

Which file you tried to export? If it's not LZ77 file, then it gets unpacked as is.

About unlz77, we don't know it. We have to reverse the game and find corresponding file. Looks like FFIV uses format like Model+texture- it's impediment. I think easier would be just to hook DirectX renderer and change textures from there.


214
Okay. I'm done. I finally found the location where I corrupted the memory. Fixed it and everything works fine (yet the software crashes just as it's exits, but that's minor issue, nothing to worry about)

https://github.com/MaKiPL/FFIV_repacker/releases

You can grab it from there ^

There might be a compression issue... After uncompressing GBA LZ file from FFIV and recompressing it again, the file content doesn't match 1:1. The difference are the control bits, they are different, but the whole concept of data structure is the same (therefore that might work)
If anyone have an idea why the software crashes at closing, then feel free to tell

215
It works!
How can I test the LZ77Decompress you posted, Maki. Or should I wait for your C Version?
Sorry, I'm a noob when it comes down to such things. ^^

I'm just a total moron- it's not LZ77, but GBA LZ77, which in fact is not LZ77 but LZ10. I almost finished the C tool, it has all- auto extract with LZ decompression and repacking too! But... I'm struggling with this for hours and I still get HEAP corruption no matter what.

216
Sorry my lack of knowledge, but these codes going... inside "Settings.ini" in HL_Files?

Nope,

1.Download "Cheat Engine"
2.Run software and select Final Fantay VIII process using the computer with loupe icon
3.Copy script from gaaasstly's post
4.Click on 'Memory View' in bottom left in CE (Cheat Engine)
5.On top menu Click on Tools>Auto Assemble
6.Paste the script
7.Click on File>Assign to current cheat table
8.You can now close both windows and get back to main Cheat Engine window
9.On bottom you'll see "Auto Assemble script"
10.Highlight it and hit space OR click on "active" chechbox on it's left
11.You're done!

217
basically the enemy files and playable character files are almost the same, enemies have some extra sectiions (AI). It can be modified to match with e.g. squall file structure and just replace it and do the renames.

You modified .DAT by yourself? Nice job! I'm amazed by what you did. :)

218
So I've setup Python and I can see that it works when I use cmd and type python I get the >>>
From there I use python.exe _ffiv.py and I get this error message:

Code: [Select]
>>> python.exe _ffiv.py
  File "<stdin>", line 1
    python.exe _ffiv.py
                   ^
SyntaxError: invalid syntax

I changed your filepath so it matches mine. Am I missing something?

You should run it more like this:

But worry not. I'm preparing the C version of it, because no any python LZ77 algorithm works for the files, I don't know why

219
Yep, that's right. I attacked with 98765
The game registers damage in 32 bits, but later does the Bigger register>smaller register operation.
My idea was to place damage local variable to code cave and then perform everything via this variable (that means a lot of code injection to change AX[16bit] register to EAX[32bit]). I was able to attack monster with 4 milion damage yet the game still showed 5 numbers on screen. Now the worst part: I lost the notes. Don't expect seeing it done by me soon, I hardly can find time for such things.

220
Okay. I came back home and tested it with original files. I made a mistake. Here's corrected code:

Code: [Select]
# Final Fantasy IV - .DAT Container unpacker 0.2
# By MaKiPL 21-06-2017
# Python 2.7

import struct
import os.path

mypath = r'D:\FINAL FANTASY IV\EXTRACTED_DATA\files\STAGEMNG_f00.dat' #TYPE FILE PATH

f = open(mypath, 'r+b')
magic = f.read(4)

if magic!= 'SSAM':
    print('This is not FFIV DAT container file!')
    exit

count = struct.unpack('<I', f.read(4))[0]
pointers = [0]
sizes = [0]
names = ['0']

_index = 0
while _index < count:
    pointers[_index] = struct.unpack('<I', f.read(4))[0]
    sizes[_index] = struct.unpack('<I', f.read(4))[0]
    names[_index] = f.read(32).rstrip('\0')
    print(pointers[_index])
    print(sizes[_index])
    print(names[_index])
    pointers.append(0)
    sizes.append(0)
    names.append('0')
    _index += 1
   
relativeFiles = count*40+8

OutputDir = os.path.dirname(mypath) + '\\' + os.path.basename(mypath)
if not os.path.exists(OutputDir[:-4] + 'dec'):
    os.mkdir(OutputDir[:-4] + 'dec')

_index = 0

while _index < count:
    f.seek(relativeFiles+pointers[_index], 0)
    buff = f.read(sizes[_index])
    temppath = OutputDir[:-4] + 'dec\\' + names[_index]
    if os.path.exists(temppath):
        os.remove(temppath)
    ff = open(temppath, 'w+b')
    ff.write(buff)
    ff.close()
    _index += 1
   
f.close()

Also run this code on Python 2.x
I'll copy some files on pendrive to test the code on original files tomorrow for LZS decompression and repacking

221
You need to install Python 2.7 (I believe it should work on Python 3 too)
Copy this script, paste into new file and name it as you wish, but add .py extensions (e.g. FF4steamUnpacker.py)
Then edit the file putting the container you want to unpack in line 8

This article should help you set up environment paths:
http://effbot.org/pyfaq/how-do-i-run-a-python-program-under-windows.htm

Then you'll be able to just open cmd and type like:
python.exe NameOfScript, like:

python.exe FF4SteamUnpacker.py

:)

222
You see, working as a L2 server support can be sometimes boring, so I coded the unpacker. I didn't have the files, so I can't really test it. Expect LZS decompression+repacking soon:

Code: [Select]
# Final Fantasy IV - .DAT Container unpacker 0.1
# By MaKiPL 21-06-2017
# Python 2.7

import struct
import os.path

mypath = r'FILEPATHHERE' #TYPE FILE PATH

f = open(mypath, 'r+b')
magic = f.read(4)

if magic!= 'SSAM':
    print('This is not FFIV DAT container file!')
    exit

count = struct.unpack('<I', f.read(4))[0]
pointers = [0]
sizes = [0]
names = ['0']

_index = 0
while _index < count:
    pointers[_index] = struct.unpack('<I', f.read(4))[0]
    sizes[_index] = struct.unpack('<I', f.read(4))[0]
    names[_index] = f.read(32)
    print(pointers[_index])
    print(sizes[_index])
    print(names[_index])
    pointers.append(0)
    sizes.append(0)
    names.append('0')
    _index += 1
   
relativeFiles = count*40+8

OutputDir = os.path.dirname(mypath) + '\\' + os.path.basename(mypath)

if not os.path.exists(OutputDir[:-4] + 'dec'):
    os.mkdir(OutputDir[:-4] + 'dec')

_index = 0

while _index < count:
    f.seek(relativeFiles+pointers[_index], 0)
    buff = f.read(sizes[_index])
    temppath = OutputDir[:-4] + 'dec\\' + names[_index]
    if os.path.exists(temppath):
        os.remove(temppath)
    ff = open(temppath, 'w+b')
    ff.write(buff)
    ff.close()
    _index += 1
   
f.close()

223
Okay. I found some valuable info online. Looks like it's all well-known Nintendo DS formats:

http://www.romhacking.net/documents/%5B469%5Dnds_formats.htm#Generic

There's also info about compressions. :)

EDIT: Yeah... but some formats have different MAGIC than it's written in this documentation, also it lacks 3/4 of formats...

EDIT2: I'm quite busy right now, so I'll be able to reverse everything soon, but not now

UPDATE:

Did you know, that this EXE is a gold mine of debug info? Thanks to not deleted asserts and it gives you almost every possible debug info:

it also gives us info how'd they coded the game- using CodeWarrior for Nintendo DS


Oh, this is just great!

224
Are you sure we are talking about the same game?
Mine Final Fantasy IV for Steam has ALL the files unpacked to bare formats
There's nothing to unpack and repack



Sound/.*AKB files are normal OGG, just play at 0x204
*.NCGR - are normal .PNG files

EFFECT.dat, STAGEMNG_f00.dat and event2d_pack.dat are indeed casual containers, but everything else has .lz extension. I bet it's LZS


EDIT:
Okay, .DAT reversed:


Main:


OffsetSizeDescription
0char[4]MAGIC- "SSAM"
4uintEntries count
8 + (EntryID*40)40 bytesEntry
8 + (EntriesCount*40)VariesFILE_data

Entry:

OffsetSizeDescription
0uintFile Pointer + (EntryCount*40+8)
4uintFile size
8char[32]File name


About LZ:

-Not LZSS algorithm [Tested/ creates rubbish]
-Not LZMA algorithm [Tested/ unknown compression error]
-Not Zlib [Tested/ unknown compression error]

For sure some LZ compression, LZ77?

Okay, I unpacked it succesfully using LZ77 algorithm grabbed from here: https://gist.github.com/Prof9/872e67a08e17081ca00e

225
If you need a 3D artist, please let me know. FFVIII seriously needs a polygon face-lift.

http://forums.qhimm.com/index.php?topic=17236.0

Pages: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 25